diff --git a/net/BUILD.gn b/net/BUILD.gn
index 7f84201..60cdd55 100644
--- a/net/BUILD.gn
+++ b/net/BUILD.gn
@@ -44,10 +44,15 @@ posix_avoid_mmap = is_android && current_cpu != "x86"
 
 # WebSockets and socket stream code are used everywhere except iOS.
 enable_websockets = !is_ios
-use_v8_in_net = !is_ios
+# TODO(monet)
+#use_v8_in_net = !is_ios
+use_v8_in_net = false
 enable_built_in_dns = !is_ios
 disable_ftp_support = is_ios
 
+# TODO(monet): This was "moved" from //build/config/features.gni.
+enable_mdns = is_linux
+
 declare_args() {
   # Disables support for file URLs.  File URL support requires use of icu.
   disable_file_support = false
@@ -306,11 +311,6 @@ component("net") {
     ]
   }
 
-  if (use_glib && !is_chromeos) {
-    configs += [ "//build/config/linux:gconf" ]
-    deps += [ "//build/config/linux:gio" ]
-  }
-
   if (is_linux) {
     configs += [ "//build/config/linux:libresolv" ]
   }
@@ -540,15 +540,16 @@ proto_library("net_quic_proto") {
   extra_configs = [ "//build/config/compiler:wexit_time_destructors" ]
 }
 
-static_library("extras") {
-  sources = gypi_values.net_extras_sources
-  configs += [ "//build/config/compiler:wexit_time_destructors" ]
-  deps = [
-    ":net",
-    "//base",
-    "//sql:sql",
-  ]
-}
+# TODO(monet)
+#static_library("extras") {
+#  sources = gypi_values.net_extras_sources
+#  configs += [ "//build/config/compiler:wexit_time_destructors" ]
+#  deps = [
+#    ":net",
+#    "//base",
+#    "//sql:sql",
+#  ]
+#}
 
 static_library("http_server") {
   sources = [
@@ -1339,7 +1340,8 @@ test("net_unittests") {
 
   deps = [
     ":balsa",
-    ":extras",
+    # TODO(monet)
+    #":extras",
     ":http_server",
     ":net",
     ":simple_quic_tools",
@@ -1352,9 +1354,11 @@ test("net_unittests") {
     "//crypto",
     "//crypto:platform",
     "//crypto:test_support",
-    "//gin",
+    # TODO(monet)
+    #"//gin",
     "//net/base/registry_controlled_domains",
-    "//sql",
+    # TODO(monet)
+    #"//sql",
     "//testing/gmock",
     "//testing/gtest",
     "//third_party/zlib",
@@ -1365,25 +1369,26 @@ test("net_unittests") {
     "data/",
   ]
 
-  if (is_linux || is_mac || is_win) {
-    deps += [
-      "//third_party/pyftpdlib/",
-      "//third_party/pywebsocket/",
-      "//third_party/tlslite/",
-    ]
-    data_deps = [
-      "//third_party/pyftpdlib/",
-      "//third_party/pywebsocket/",
-      "//third_party/tlslite/",
-    ]
-    data += [
-      "tools/testserver/",
-      "//third_party/pyftpdlib/",
-      "//third_party/pywebsocket/",
-      "//third_party/tlslite/",
-      "$root_out_dir/pyproto/google/",
-    ]
-  }
+  # TODO(monet)
+  #if (is_linux || is_mac || is_win) {
+  #  deps += [
+  #    "//third_party/pyftpdlib/",
+  #    "//third_party/pywebsocket/",
+  #    "//third_party/tlslite/",
+  #  ]
+  #  data_deps = [
+  #    "//third_party/pyftpdlib/",
+  #    "//third_party/pywebsocket/",
+  #    "//third_party/tlslite/",
+  #  ]
+  #  data += [
+  #    "tools/testserver/",
+  #    "//third_party/pyftpdlib/",
+  #    "//third_party/pywebsocket/",
+  #    "//third_party/tlslite/",
+  #    "$root_out_dir/pyproto/google/",
+  #  ]
+  #}
 
   if (is_desktop_linux) {
     deps += [ ":epoll_quic_tools" ]
@@ -1660,7 +1665,8 @@ executable("net_perftests") {
     "base/mime_sniffer_perftest.cc",
     "cookies/cookie_monster_perftest.cc",
     "disk_cache/blockfile/disk_cache_perftest.cc",
-    "extras/sqlite/sqlite_persistent_cookie_store_perftest.cc",
+    # TODO(monet)
+    #"extras/sqlite/sqlite_persistent_cookie_store_perftest.cc",
     "proxy/proxy_resolver_perftest.cc",
     "udp/udp_socket_perftest.cc",
   ]
@@ -1668,7 +1674,8 @@ executable("net_perftests") {
   # TODO(jschuh): crbug.com/167187 fix size_t to int truncations.
   configs += [ "//build/config/compiler:no_size_t_to_int_warning" ]
   deps = [
-    ":extras",
+    # TODO(monet)
+    #":extras",
     ":net",
     ":test_support",
     "//base",
diff --git a/net/android/BUILD.gn b/net/android/BUILD.gn
index abe4654..38086b6 100644
--- a/net/android/BUILD.gn
+++ b/net/android/BUILD.gn
@@ -26,23 +26,25 @@ android_aidl("remote_android_keystore_aidl") {
   ]
 }
 
-android_library("net_java_test_support") {
-  DEPRECATED_java_in_dir = "../test/android/javatests/src"
-  deps = [
-    "//base:base_java",
-    ":net_java",
-  ]
-  srcjar_deps = [ ":net_java_test_support_enums_srcjar" ]
-}
+# TODO(monet)
+#android_library("net_java_test_support") {
+#  DEPRECATED_java_in_dir = "../test/android/javatests/src"
+#  deps = [
+#    "//base:base_java",
+#    ":net_java",
+#  ]
+#  srcjar_deps = [ ":net_java_test_support_enums_srcjar" ]
+#}
 
-android_library("net_javatests") {
-  DEPRECATED_java_in_dir = "javatests/src"
-  deps = [
-    "//base:base_java",
-    "//base:base_java_test_support",
-    ":net_java",
-  ]
-}
+# TODO(monet)
+#android_library("net_javatests") {
+#  DEPRECATED_java_in_dir = "javatests/src"
+#  deps = [
+#    "//base:base_java",
+#    "//base:base_java_test_support",
+#    ":net_java",
+#  ]
+#}
 
 java_cpp_template("net_errors_java") {
   package_name = "org/chromium/net"
diff --git a/net/cert/jwk_serializer_unittest.cc b/net/cert/jwk_serializer_unittest.cc
index 6fa318f..1f7afee 100644
--- a/net/cert/jwk_serializer_unittest.cc
+++ b/net/cert/jwk_serializer_unittest.cc
@@ -20,12 +20,14 @@ namespace net {
 // The 0x04 in the BIT STRING is the prefix for an uncompressed, X9.62
 // public key. Following that are the two field elements as 32-byte,
 // big-endian numbers, as required by the Channel ID.
-static const unsigned char kP256SpkiPrefix[] = {
-    0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86,
-    0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a,
-    0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03,
-    0x42, 0x00, 0x04
-};
+// TODO(monet)
+//static const unsigned char kP256SpkiPrefix[] = {
+//    0x30, 0x59, 0x30, 0x13, 0x06, 0x07, 0x2a, 0x86,
+//    0x48, 0xce, 0x3d, 0x02, 0x01, 0x06, 0x08, 0x2a,
+//    0x86, 0x48, 0xce, 0x3d, 0x03, 0x01, 0x07, 0x03,
+//    0x42, 0x00, 0x04
+//};
+static const unsigned int kP256SpkiPrefixSize = 27U;
 static const unsigned int kEcCoordinateSize = 32U;
 
 // This is a valid P-256 public key.
@@ -81,18 +83,25 @@ TEST(JwkSerializerTest, ConvertSpkiFromDerToJwkEc) {
   std::string decoded_coordinate;
   EXPECT_TRUE(base::Base64Decode(string_value, &decoded_coordinate));
   EXPECT_EQ(kEcCoordinateSize, decoded_coordinate.size());
-  EXPECT_EQ(0,
-            memcmp(decoded_coordinate.data(),
-                   kSpkiEc + sizeof(kP256SpkiPrefix),
-                   kEcCoordinateSize));
+  // TODO(monet)
+  //EXPECT_EQ(0,
+  //          memcmp(decoded_coordinate.data(),
+  //                 kSpkiEc + sizeof(kP256SpkiPrefix),
+  //                 kEcCoordinateSize));
+  EXPECT_EQ(0, memcmp(decoded_coordinate.data(), kSpkiEc + kP256SpkiPrefixSize,
+                      kEcCoordinateSize));
 
   EXPECT_TRUE(public_key_jwk.GetString("y", &string_value));
   EXPECT_TRUE(base::Base64Decode(string_value, &decoded_coordinate));
   EXPECT_EQ(kEcCoordinateSize, decoded_coordinate.size());
-  EXPECT_EQ(0,
-            memcmp(decoded_coordinate.data(),
-                  kSpkiEc + sizeof(kP256SpkiPrefix) + kEcCoordinateSize,
-                  kEcCoordinateSize));
+  // TODO(monet)
+  //EXPECT_EQ(0,
+  //          memcmp(decoded_coordinate.data(),
+  //                kSpkiEc + sizeof(kP256SpkiPrefix) + kEcCoordinateSize,
+  //                kEcCoordinateSize));
+  EXPECT_EQ(0, memcmp(decoded_coordinate.data(),
+                      kSpkiEc + kP256SpkiPrefixSize + kEcCoordinateSize,
+                      kEcCoordinateSize));
 
   // Test the result of a corner case: leading 0s in the x, y coordinates are
   // not trimmed, but the point is fixed-length encoded.
@@ -108,18 +117,27 @@ TEST(JwkSerializerTest, ConvertSpkiFromDerToJwkEc) {
   EXPECT_TRUE(public_key_jwk.GetString("x", &string_value));
   EXPECT_TRUE(base::Base64Decode(string_value, &decoded_coordinate));
   EXPECT_EQ(kEcCoordinateSize, decoded_coordinate.size());
-  EXPECT_EQ(0,
-            memcmp(decoded_coordinate.data(),
-                   kSpkiEcWithLeadingZero + sizeof(kP256SpkiPrefix),
-                   kEcCoordinateSize));
+  // TODO(monet)
+  //EXPECT_EQ(0,
+  //          memcmp(decoded_coordinate.data(),
+  //                 kSpkiEcWithLeadingZero + sizeof(kP256SpkiPrefix),
+  //                 kEcCoordinateSize));
+  EXPECT_EQ(0, memcmp(decoded_coordinate.data(),
+                      kSpkiEcWithLeadingZero + kP256SpkiPrefixSize,
+                      kEcCoordinateSize));
 
   EXPECT_TRUE(public_key_jwk.GetString("y", &string_value));
   EXPECT_TRUE(base::Base64Decode(string_value, &decoded_coordinate));
   EXPECT_EQ(kEcCoordinateSize, decoded_coordinate.size());
-  EXPECT_EQ(0, memcmp(
-      decoded_coordinate.data(),
-      kSpkiEcWithLeadingZero + sizeof(kP256SpkiPrefix) + kEcCoordinateSize,
-      kEcCoordinateSize));
+  // TODO(monet)
+  //EXPECT_EQ(0, memcmp(
+  //    decoded_coordinate.data(),
+  //    kSpkiEcWithLeadingZero + sizeof(kP256SpkiPrefix) + kEcCoordinateSize,
+  //    kEcCoordinateSize));
+  EXPECT_EQ(0, memcmp(decoded_coordinate.data(),
+                      kSpkiEcWithLeadingZero + kP256SpkiPrefixSize +
+                          kEcCoordinateSize,
+                      kEcCoordinateSize));
 }
 
 }  // namespace net
diff --git a/net/net.gypi b/net/net.gypi
index 3b25387..8b7fef0 100644
--- a/net/net.gypi
+++ b/net/net.gypi
@@ -1441,8 +1441,9 @@
       'dns/record_rdata_unittest.cc',
       'dns/serial_worker_unittest.cc',
       'dns/single_request_host_resolver_unittest.cc',
-      'extras/sqlite/sqlite_channel_id_store_unittest.cc',
-      'extras/sqlite/sqlite_persistent_cookie_store_unittest.cc',
+      # TODO(monet)
+      #'extras/sqlite/sqlite_channel_id_store_unittest.cc',
+      #'extras/sqlite/sqlite_persistent_cookie_store_unittest.cc',
       'filter/filter_unittest.cc',
       'filter/gzip_filter_unittest.cc',
       'filter/mock_filter_context.cc',
diff --git a/net/test/run_all_unittests.cc b/net/test/run_all_unittests.cc
index 7da7991..fae1632 100644
--- a/net/test/run_all_unittests.cc
+++ b/net/test/run_all_unittests.cc
@@ -21,9 +21,10 @@
 #include "url/android/url_jni_registrar.h"
 #endif
 
-#if !defined(OS_ANDROID) && !defined(OS_IOS)
-#include "third_party/mojo/src/mojo/edk/embedder/test_embedder.h"
-#endif
+// TODO(monet)
+//#if !defined(OS_ANDROID) && !defined(OS_IOS)
+//#include "third_party/mojo/src/mojo/edk/embedder/test_embedder.h"
+//#endif
 
 using net::internal::ClientSocketPoolBaseHelper;
 using net::SpdySession;
@@ -62,9 +63,10 @@ int main(int argc, char** argv) {
   // single-threaded.
   net::EnableSSLServerSockets();
 
-#if !defined(OS_ANDROID) && !defined(OS_IOS)
-  mojo::embedder::test::InitWithSimplePlatformSupport();
-#endif
+  // TODO(monet)
+  //#if !defined(OS_ANDROID) && !defined(OS_IOS)
+  //  mojo::embedder::test::InitWithSimplePlatformSupport();
+  //#endif
 
   return base::LaunchUnitTests(
       argc, argv, base::Bind(&NetTestSuite::Run,
