Merge "Enhance NetworkTemplate test"
diff --git a/Cronet/Android.bp b/Cronet/Android.bp
index e699656..3ce88ef 100644
--- a/Cronet/Android.bp
+++ b/Cronet/Android.bp
@@ -41,7 +41,7 @@
 }
 
 cc_prebuilt_library_shared {
-    name: "libcronet.80.0.3986.0",
+    name: "libcronet.107.0.5284.2",
     shared_libs: [
         "libandroid",
         "libc",
@@ -52,16 +52,16 @@
     stl: "libc++_static",
     target: {
         android_arm64: {
-            srcs: ["prebuilt/libs/arm64-v8a/libcronet.80.0.3986.0.so"],
+            srcs: ["prebuilt/libs/arm64-v8a/libcronet.107.0.5284.2.so"],
         },
         android_arm: {
-            srcs: ["prebuilt/libs/armeabi-v7a/libcronet.80.0.3986.0.so"],
+            srcs: ["prebuilt/libs/armeabi-v7a/libcronet.107.0.5284.2.so"],
         },
         android_x86_64: {
-            srcs: ["prebuilt/libs/x86_64/libcronet.80.0.3986.0.so"],
+            srcs: ["prebuilt/libs/x86_64/libcronet.107.0.5284.2.so"],
         },
         android_x86: {
-            srcs: ["prebuilt/libs/x86/libcronet.80.0.3986.0.so"],
+            srcs: ["prebuilt/libs/x86/libcronet.107.0.5284.2.so"],
         },
     },
     // These are already stripped, and restripping them just issues diagnostics.
@@ -91,13 +91,16 @@
         "androidx.annotation_annotation",
     ],
     static_libs: [
+        "androidx.core_core-nodeps",
         "cronet_impl_common_java",
         "cronet_impl_native_java",
         "cronet_impl_platform_java",
     ],
     apex_available: ["com.android.tethering"],
+    jarjar_rules: "jarjar-rules.txt",
     unsafe_ignore_missing_latest_api: true,
     dist_group: "android",
     // cronet is used as a shared library.
     shared_library: true,
+    exclude_kotlinc_generated_files: true,
 }
diff --git a/Cronet/apex/Android.bp b/Cronet/apex/Android.bp
index 64362da..180dafb 100644
--- a/Cronet/apex/Android.bp
+++ b/Cronet/apex/Android.bp
@@ -30,8 +30,14 @@
 
 apex_defaults {
     name: "CronetApexDefaultsEnabled",
-    jni_libs: ["libcronet.80.0.3986.0"],
+    jni_libs: ["libcronet.107.0.5284.2"],
     java_libs: ["framework-cronet"],
+    arch: {
+        riscv64: {
+            // TODO: remove this when there is a riscv64 libcronet
+            exclude_jni_libs: ["libcronet.107.0.5284.2"],
+        },
+    },
 }
 
 apex_defaults {
diff --git a/Cronet/jarjar-rules.txt b/Cronet/jarjar-rules.txt
new file mode 100644
index 0000000..7111ebc
--- /dev/null
+++ b/Cronet/jarjar-rules.txt
@@ -0,0 +1,3 @@
+rule androidx.** com.android.cronet.@0
+rule android.support.** com.android.cronet.@0
+
diff --git a/Cronet/prebuilt/cronet_api-src.jar b/Cronet/prebuilt/cronet_api-src.jar
index 9d0aa34..924b877 100644
--- a/Cronet/prebuilt/cronet_api-src.jar
+++ b/Cronet/prebuilt/cronet_api-src.jar
Binary files differ
diff --git a/Cronet/prebuilt/cronet_api.jar b/Cronet/prebuilt/cronet_api.jar
index b0c3967..977b28d 100644
--- a/Cronet/prebuilt/cronet_api.jar
+++ b/Cronet/prebuilt/cronet_api.jar
Binary files differ
diff --git a/Cronet/prebuilt/cronet_impl_common_java.jar b/Cronet/prebuilt/cronet_impl_common_java.jar
index 7006c09..fa71bf3 100644
--- a/Cronet/prebuilt/cronet_impl_common_java.jar
+++ b/Cronet/prebuilt/cronet_impl_common_java.jar
Binary files differ
diff --git a/Cronet/prebuilt/cronet_impl_native_java.jar b/Cronet/prebuilt/cronet_impl_native_java.jar
index 835d882..4cdd6f3 100644
--- a/Cronet/prebuilt/cronet_impl_native_java.jar
+++ b/Cronet/prebuilt/cronet_impl_native_java.jar
Binary files differ
diff --git a/Cronet/prebuilt/cronet_impl_platform_java.jar b/Cronet/prebuilt/cronet_impl_platform_java.jar
index 8394ddb..6d6042f 100644
--- a/Cronet/prebuilt/cronet_impl_platform_java.jar
+++ b/Cronet/prebuilt/cronet_impl_platform_java.jar
Binary files differ
diff --git a/Cronet/prebuilt/libs/arm64-v8a/libcronet.107.0.5284.2.so b/Cronet/prebuilt/libs/arm64-v8a/libcronet.107.0.5284.2.so
new file mode 100644
index 0000000..7f2540a
--- /dev/null
+++ b/Cronet/prebuilt/libs/arm64-v8a/libcronet.107.0.5284.2.so
Binary files differ
diff --git a/Cronet/prebuilt/libs/arm64-v8a/libcronet.80.0.3986.0.so b/Cronet/prebuilt/libs/arm64-v8a/libcronet.80.0.3986.0.so
deleted file mode 100644
index 34809eb..0000000
--- a/Cronet/prebuilt/libs/arm64-v8a/libcronet.80.0.3986.0.so
+++ /dev/null
Binary files differ
diff --git a/Cronet/prebuilt/libs/armeabi-v7a/libcronet.107.0.5284.2.so b/Cronet/prebuilt/libs/armeabi-v7a/libcronet.107.0.5284.2.so
new file mode 100644
index 0000000..115429a
--- /dev/null
+++ b/Cronet/prebuilt/libs/armeabi-v7a/libcronet.107.0.5284.2.so
Binary files differ
diff --git a/Cronet/prebuilt/libs/armeabi-v7a/libcronet.80.0.3986.0.so b/Cronet/prebuilt/libs/armeabi-v7a/libcronet.80.0.3986.0.so
deleted file mode 100644
index 91bd63f..0000000
--- a/Cronet/prebuilt/libs/armeabi-v7a/libcronet.80.0.3986.0.so
+++ /dev/null
Binary files differ
diff --git a/Cronet/prebuilt/libs/x86/libcronet.107.0.5284.2.so b/Cronet/prebuilt/libs/x86/libcronet.107.0.5284.2.so
new file mode 100644
index 0000000..27923f7
--- /dev/null
+++ b/Cronet/prebuilt/libs/x86/libcronet.107.0.5284.2.so
Binary files differ
diff --git a/Cronet/prebuilt/libs/x86/libcronet.80.0.3986.0.so b/Cronet/prebuilt/libs/x86/libcronet.80.0.3986.0.so
deleted file mode 100644
index b97d497..0000000
--- a/Cronet/prebuilt/libs/x86/libcronet.80.0.3986.0.so
+++ /dev/null
Binary files differ
diff --git a/Cronet/prebuilt/libs/x86_64/libcronet.107.0.5284.2.so b/Cronet/prebuilt/libs/x86_64/libcronet.107.0.5284.2.so
new file mode 100644
index 0000000..803e5cd
--- /dev/null
+++ b/Cronet/prebuilt/libs/x86_64/libcronet.107.0.5284.2.so
Binary files differ
diff --git a/Cronet/prebuilt/libs/x86_64/libcronet.80.0.3986.0.so b/Cronet/prebuilt/libs/x86_64/libcronet.80.0.3986.0.so
deleted file mode 100644
index 14c6281..0000000
--- a/Cronet/prebuilt/libs/x86_64/libcronet.80.0.3986.0.so
+++ /dev/null
Binary files differ
diff --git a/Tethering/apex/Android.bp b/Tethering/apex/Android.bp
index c590850..e59c8e4 100644
--- a/Tethering/apex/Android.bp
+++ b/Tethering/apex/Android.bp
@@ -70,7 +70,10 @@
                 "libservice-connectivity",
                 "libandroid_net_connectivity_com_android_net_module_util_jni",
             ],
-            native_shared_libs: ["libnetd_updatable"],
+            native_shared_libs: [
+                "libcom.android.tethering.connectivity_native",
+                "libnetd_updatable",
+            ],
         },
         both: {
             jni_libs: [
diff --git a/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java b/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java
index 784ebd5..6d502ce 100644
--- a/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java
+++ b/Tethering/src/com/android/networkstack/tethering/EntitlementManager.java
@@ -34,6 +34,7 @@
 import static android.net.TetheringManager.TETHER_ERROR_PROVISIONING_FAILED;
 
 import static com.android.networkstack.apishim.ConstantsShim.ACTION_TETHER_UNSUPPORTED_CARRIER_UI;
+import static com.android.networkstack.apishim.ConstantsShim.RECEIVER_NOT_EXPORTED;
 
 import android.app.AlarmManager;
 import android.app.PendingIntent;
@@ -119,8 +120,13 @@
         mEntitlementCacheValue = new SparseIntArray();
         mPermissionChangeCallback = callback;
         mHandler = h;
-        mContext.registerReceiver(mReceiver, new IntentFilter(ACTION_PROVISIONING_ALARM),
-                null, mHandler);
+        if (SdkLevel.isAtLeastU()) {
+            mContext.registerReceiver(mReceiver, new IntentFilter(ACTION_PROVISIONING_ALARM),
+                    null, mHandler, RECEIVER_NOT_EXPORTED);
+        } else {
+            mContext.registerReceiver(mReceiver, new IntentFilter(ACTION_PROVISIONING_ALARM),
+                    null, mHandler);
+        }
         mSilentProvisioningService = ComponentName.unflattenFromString(
                 mContext.getResources().getString(R.string.config_wifi_tether_enable));
     }
diff --git a/Tethering/src/com/android/networkstack/tethering/metrics/TetheringMetrics.java b/Tethering/src/com/android/networkstack/tethering/metrics/TetheringMetrics.java
index 2c6054d..ffcea4e 100644
--- a/Tethering/src/com/android/networkstack/tethering/metrics/TetheringMetrics.java
+++ b/Tethering/src/com/android/networkstack/tethering/metrics/TetheringMetrics.java
@@ -76,8 +76,7 @@
                     .setUpstreamType(UpstreamType.UT_UNKNOWN)
                     .setErrorCode(ErrorCode.EC_NO_ERROR)
                     .setUpstreamEvents(UpstreamEvents.newBuilder())
-                    .setDurationMillis(0)
-                    .build();
+                    .setDurationMillis(0);
         mBuilderMap.put(downstreamType, statsBuilder);
     }
 
diff --git a/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java b/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java
index c61b6eb..f0f9a31 100644
--- a/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java
+++ b/Tethering/tests/integration/src/android/net/EthernetTetheringTest.java
@@ -76,7 +76,7 @@
 import android.net.TetheringManager.TetheringEventCallback;
 import android.net.TetheringManager.TetheringRequest;
 import android.net.TetheringTester.TetheredDevice;
-import android.net.cts.util.CtsNetUtils;;
+import android.net.cts.util.CtsNetUtils;
 import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
diff --git a/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java b/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java
index 0bd6380..225fed7 100644
--- a/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java
+++ b/Tethering/tests/unit/src/com/android/networkstack/tethering/BpfCoordinatorTest.java
@@ -138,6 +138,7 @@
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
+import java.util.Map;
 
 @RunWith(AndroidJUnit4.class)
 @SmallTest
@@ -195,13 +196,11 @@
             UPSTREAM_IFACE2, UPSTREAM_IFINDEX2, MacAddress.fromString("44:55:66:00:00:0c"),
             NetworkStackConstants.ETHER_MTU);
 
-    private static final HashMap<Integer, UpstreamInformation> UPSTREAM_INFORMATIONS =
-            new HashMap<Integer, UpstreamInformation>() {{
-                    put(UPSTREAM_IFINDEX, new UpstreamInformation(UPSTREAM_IFACE_PARAMS,
-                            PUBLIC_ADDR, NetworkCapabilities.TRANSPORT_CELLULAR, TEST_NET_ID));
-                    put(UPSTREAM_IFINDEX2, new UpstreamInformation(UPSTREAM_IFACE_PARAMS2,
-                            PUBLIC_ADDR2, NetworkCapabilities.TRANSPORT_WIFI, TEST_NET_ID2));
-            }};
+    private static final Map<Integer, UpstreamInformation> UPSTREAM_INFORMATIONS = Map.of(
+            UPSTREAM_IFINDEX, new UpstreamInformation(UPSTREAM_IFACE_PARAMS,
+                    PUBLIC_ADDR, NetworkCapabilities.TRANSPORT_CELLULAR, TEST_NET_ID),
+            UPSTREAM_IFINDEX2, new UpstreamInformation(UPSTREAM_IFACE_PARAMS2,
+                    PUBLIC_ADDR2, NetworkCapabilities.TRANSPORT_WIFI, TEST_NET_ID2));
 
     private static final ClientInfo CLIENT_INFO_A = new ClientInfo(DOWNSTREAM_IFINDEX,
             DOWNSTREAM_MAC, PRIVATE_ADDR, MAC_A);
diff --git a/common/src/com/android/net/module/util/bpf/Tether4Key.java b/common/src/com/android/net/module/util/bpf/Tether4Key.java
index 8273e6a..738256a 100644
--- a/common/src/com/android/net/module/util/bpf/Tether4Key.java
+++ b/common/src/com/android/net/module/util/bpf/Tether4Key.java
@@ -75,7 +75,7 @@
                     Inet4Address.getByAddress(src4), Inet4Address.getByAddress(dst4),
                     Short.toUnsignedInt((short) srcPort), Short.toUnsignedInt((short) dstPort));
         } catch (UnknownHostException | IllegalArgumentException e) {
-            return String.format("Invalid IP address", e);
+            return "Invalid IP address" + e;
         }
     }
 }
diff --git a/common/src/com/android/net/module/util/bpf/Tether4Value.java b/common/src/com/android/net/module/util/bpf/Tether4Value.java
index 74fdda2..449c1da 100644
--- a/common/src/com/android/net/module/util/bpf/Tether4Value.java
+++ b/common/src/com/android/net/module/util/bpf/Tether4Value.java
@@ -91,7 +91,7 @@
                     Short.toUnsignedInt((short) srcPort), Short.toUnsignedInt((short) dstPort),
                     lastUsed);
         } catch (UnknownHostException | IllegalArgumentException e) {
-            return String.format("Invalid IP address", e);
+            return "Invalid IP address" + e;
         }
     }
 }
diff --git a/framework-t/src/android/net/IpSecAlgorithm.java b/framework-t/src/android/net/IpSecAlgorithm.java
index 10a22ac..aac6f79 100644
--- a/framework-t/src/android/net/IpSecAlgorithm.java
+++ b/framework-t/src/android/net/IpSecAlgorithm.java
@@ -21,6 +21,7 @@
 import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.os.SystemProperties;
 
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -351,8 +352,11 @@
             }
         }
 
+        // T introduced calculated property 'ro.vendor.api_level',
+        // which is the API level of the VSR that the device must conform to.
+        int vendorApiLevel = SystemProperties.getInt("ro.vendor.api_level", 10000);
         for (Entry<String, Integer> entry : ALGO_TO_REQUIRED_FIRST_SDK.entrySet()) {
-            if (Build.VERSION.DEVICE_INITIAL_SDK_INT >= entry.getValue()) {
+            if (vendorApiLevel >= entry.getValue()) {
                 enabledAlgos.add(entry.getKey());
             }
         }
@@ -488,4 +492,4 @@
                 && Arrays.equals(lhs.mKey, rhs.mKey)
                 && lhs.mTruncLenBits == rhs.mTruncLenBits);
     }
-};
+}
diff --git a/framework/api/module-lib-current.txt b/framework/api/module-lib-current.txt
index a2a1ac0..073cca2 100644
--- a/framework/api/module-lib-current.txt
+++ b/framework/api/module-lib-current.txt
@@ -15,7 +15,7 @@
     method @Nullable @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public android.net.LinkProperties getRedactedLinkPropertiesForPackage(@NonNull android.net.LinkProperties, int, @NonNull String);
     method @Nullable @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public android.net.NetworkCapabilities getRedactedNetworkCapabilitiesForPackage(@NonNull android.net.NetworkCapabilities, int, @NonNull String);
     method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerDefaultNetworkCallbackForUid(int, @NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
-    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS}) public void registerSystemDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
+    method @RequiresPermission(anyOf={android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS}) public void registerSystemDefaultNetworkCallback(@NonNull android.net.ConnectivityManager.NetworkCallback, @NonNull android.os.Handler);
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void removeUidFromMeteredNetworkAllowList(int);
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void removeUidFromMeteredNetworkDenyList(int);
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.net.NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK}) public void replaceFirewallChain(int, @NonNull int[]);
diff --git a/framework/src/android/net/ConnectivityManager.java b/framework/src/android/net/ConnectivityManager.java
index b5c3c64..39c5af2 100644
--- a/framework/src/android/net/ConnectivityManager.java
+++ b/framework/src/android/net/ConnectivityManager.java
@@ -4789,7 +4789,8 @@
     @SuppressLint({"ExecutorRegistration", "PairedRegistration"})
     @RequiresPermission(anyOf = {
             NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
-            android.Manifest.permission.NETWORK_SETTINGS})
+            android.Manifest.permission.NETWORK_SETTINGS,
+            android.Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS})
     public void registerSystemDefaultNetworkCallback(@NonNull NetworkCallback networkCallback,
             @NonNull Handler handler) {
         CallbackHandler cbHandler = new CallbackHandler(handler);
diff --git a/framework/src/android/net/apf/ApfCapabilities.java b/framework/src/android/net/apf/ApfCapabilities.java
index 663c1b3..64f14a1 100644
--- a/framework/src/android/net/apf/ApfCapabilities.java
+++ b/framework/src/android/net/apf/ApfCapabilities.java
@@ -133,9 +133,7 @@
     public static boolean getApfDrop8023Frames() {
         // TODO: deprecate/remove this method (now unused in the platform), as the resource was
         // moved to NetworkStack.
-        final Resources systemRes = Resources.getSystem();
-        final int id = systemRes.getIdentifier("config_apfDrop802_3Frames", "bool", "android");
-        return systemRes.getBoolean(id);
+        return true;
     }
 
     /**
@@ -144,8 +142,6 @@
     public static @NonNull int[] getApfEtherTypeBlackList() {
         // TODO: deprecate/remove this method (now unused in the platform), as the resource was
         // moved to NetworkStack.
-        final Resources systemRes = Resources.getSystem();
-        final int id = systemRes.getIdentifier("config_apfEthTypeBlackList", "array", "android");
-        return systemRes.getIntArray(id);
+        return new int[] { 0x88a2, 0x88a4, 0x88b8, 0x88cd, 0x88e3 };
     }
 }
diff --git a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
index 00f6c56..0605abe 100644
--- a/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
+++ b/service-t/src/com/android/server/ethernet/EthernetNetworkFactory.java
@@ -269,10 +269,10 @@
         private final Set<Integer> mRequestIds = new ArraySet<>();
 
         private volatile @Nullable IpClientManager mIpClient;
-        private @NonNull NetworkCapabilities mCapabilities;
+        private NetworkCapabilities mCapabilities;
         private @Nullable EthernetIpClientCallback mIpClientCallback;
         private @Nullable EthernetNetworkAgent mNetworkAgent;
-        private @Nullable IpConfiguration mIpConfig;
+        private IpConfiguration mIpConfig;
 
         /**
          * A map of TRANSPORT_* types to legacy transport types available for each type an ethernet
diff --git a/service/Android.bp b/service/Android.bp
index d850015..326f91b 100644
--- a/service/Android.bp
+++ b/service/Android.bp
@@ -22,7 +22,6 @@
 aidl_interface {
     name: "connectivity_native_aidl_interface",
     local_include_dir: "binder",
-    vendor_available: true,
     srcs: [
         "binder/android/net/connectivity/aidl/*.aidl",
     ],
@@ -179,6 +178,7 @@
         "networkstack-client",
         "PlatformProperties",
         "service-connectivity-protos",
+        "service-connectivity-stats-protos",
         "NetworkStackApiStableShims",
     ],
     apex_available: [
@@ -290,6 +290,20 @@
     installable: true,
 }
 
+java_library_static {
+    name: "service-connectivity-stats-protos",
+    sdk_version: "system_current",
+    min_sdk_version: "30",
+    proto: {
+        type: "lite",
+    },
+    srcs: [
+        "src/com/android/metrics/stats.proto",
+    ],
+    static_libs: ["ConnectivityServiceprotos"],
+    apex_available: ["com.android.tethering"],
+}
+
 genrule {
     name: "connectivity-jarjar-rules",
     defaults: ["jarjar-rules-combine-defaults"],
diff --git a/service/libconnectivity/Android.bp b/service/libconnectivity/Android.bp
new file mode 100644
index 0000000..391ceac
--- /dev/null
+++ b/service/libconnectivity/Android.bp
@@ -0,0 +1,57 @@
+//
+// Copyright (C) 2022 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+package {
+    // See: http://go/android-license-faq
+    default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
+cc_library_shared {
+    name: "libcom.android.tethering.connectivity_native",
+    srcs: [
+        "src/**/*.cpp",
+    ],
+    min_sdk_version: "30",
+    static_libs: [
+        "connectivity_native_aidl_interface-V1-ndk",
+    ],
+    export_include_dirs: ["include"],
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-error=deprecated-declarations",
+    ],
+
+    shared_libs: [
+        "libbinder_ndk",
+    ],
+    llndk: {
+        symbol_file: "libconnectivity_native.map.txt",
+    },
+    stubs: {
+        symbol_file: "libconnectivity_native.map.txt",
+        versions: [
+            "current",
+        ],
+    },
+    header_abi_checker: {
+        enabled: true,
+        symbol_file: "libconnectivity_native.map.txt",
+    },
+    apex_available: [
+        "com.android.tethering",
+    ],
+}
diff --git a/service/libconnectivity/include/connectivity_native.h b/service/libconnectivity/include/connectivity_native.h
new file mode 100644
index 0000000..5a2509a
--- /dev/null
+++ b/service/libconnectivity/include/connectivity_native.h
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef LIBCONNECTIVITY_CONNECTIVITY_NATIVE_H_
+#define LIBCONNECTIVITY_CONNECTIVITY_NATIVE_H_
+
+#include <sys/cdefs.h>
+#include <netinet/in.h>
+
+// For branches that do not yet have __ANDROID_API_U__ defined, like module
+// release branches.
+#ifndef __ANDROID_API_U__
+#define __ANDROID_API_U__ 34
+#endif
+
+__BEGIN_DECLS
+
+/**
+ * Blocks a port from being assigned during bind(). The caller is responsible for updating
+ * /proc/sys/net/ipv4/ip_local_port_range with the port being blocked so that calls to connect()
+ * will not automatically assign one of the blocked ports.
+ * Will return success even if port was already blocked.
+ *
+ * Returns 0 on success, or a POSIX error code (see errno.h) on failure:
+ *  - EINVAL for invalid port number
+ *  - EPERM if the UID of the client doesn't have network stack permission
+ *  - Other errors as per https://man7.org/linux/man-pages/man2/bpf.2.html
+ *
+ * @param port Int corresponding to port number.
+ */
+int AConnectivityNative_blockPortForBind(in_port_t port) __INTRODUCED_IN(__ANDROID_API_U__);
+
+/**
+ * Unblocks a port that has previously been blocked.
+ * Will return success even if port was already unblocked.
+ *
+ * Returns 0 on success, or a POSIX error code (see errno.h) on failure:
+ *  - EINVAL for invalid port number
+ *  - EPERM if the UID of the client doesn't have network stack permission
+ *  - Other errors as per https://man7.org/linux/man-pages/man2/bpf.2.html
+ *
+ * @param port Int corresponding to port number.
+ */
+int AConnectivityNative_unblockPortForBind(in_port_t port) __INTRODUCED_IN(__ANDROID_API_U__);
+
+/**
+ * Unblocks all ports that have previously been blocked.
+ *
+ * Returns 0 on success, or a POSIX error code (see errno.h) on failure:
+ *  - EINVAL for invalid port number
+ *  - EPERM if the UID of the client doesn't have network stack permission
+ *  - Other errors as per https://man7.org/linux/man-pages/man2/bpf.2.html
+ */
+int AConnectivityNative_unblockAllPortsForBind() __INTRODUCED_IN(__ANDROID_API_U__);
+
+/**
+ * Gets the list of ports that have been blocked.
+ *
+ * Returns 0 on success, or a POSIX error code (see errno.h) on failure:
+ *  - EINVAL for invalid port number
+ *  - EPERM if the UID of the client doesn't have network stack permission
+ *  - Other errors as per https://man7.org/linux/man-pages/man2/bpf.2.html
+ *
+ * @param ports Array of ports that will be filled with the port numbers.
+ * @param count Pointer to the size of the ports array; the value will be set to the total number of
+ *              blocked ports, which may be larger than the ports array that was filled.
+ */
+int AConnectivityNative_getPortsBlockedForBind(in_port_t *ports, size_t *count)
+    __INTRODUCED_IN(__ANDROID_API_U__);
+
+__END_DECLS
+
+
+#endif
diff --git a/service/libconnectivity/libconnectivity_native.map.txt b/service/libconnectivity/libconnectivity_native.map.txt
new file mode 100644
index 0000000..19b1074
--- /dev/null
+++ b/service/libconnectivity/libconnectivity_native.map.txt
@@ -0,0 +1,24 @@
+#
+# Copyright (C) 2022 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+LIBCONNECTIVITY_NATIVE {
+  global:
+    AConnectivityNative_blockPortForBind; # apex llndk
+    AConnectivityNative_getPortsBlockedForBind; # apex llndk
+    AConnectivityNative_unblockPortForBind; # apex llndk
+    AConnectivityNative_unblockAllPortsForBind; # apex llndk
+  local:
+    *;
+};
diff --git a/service/libconnectivity/src/connectivity_native.cpp b/service/libconnectivity/src/connectivity_native.cpp
new file mode 100644
index 0000000..9545ed1
--- /dev/null
+++ b/service/libconnectivity/src/connectivity_native.cpp
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "connectivity_native.h"
+
+#include <android/binder_manager.h>
+#include <aidl/android/net/connectivity/aidl/ConnectivityNative.h>
+
+using aidl::android::net::connectivity::aidl::IConnectivityNative;
+
+
+static std::shared_ptr<IConnectivityNative> getBinder() {
+    static ndk::SpAIBinder sBinder = ndk::SpAIBinder(reinterpret_cast<AIBinder*>(
+        AServiceManager_getService("connectivity_native")));
+    return aidl::android::net::connectivity::aidl::IConnectivityNative::fromBinder(sBinder);
+}
+
+static int getErrno(const ::ndk::ScopedAStatus& status) {
+    switch (status.getExceptionCode()) {
+        case EX_NONE:
+            return 0;
+        case EX_ILLEGAL_ARGUMENT:
+            return EINVAL;
+        case EX_SECURITY:
+            return EPERM;
+        case EX_SERVICE_SPECIFIC:
+            return status.getServiceSpecificError();
+        default:
+            return EPROTO;
+    }
+}
+
+int AConnectivityNative_blockPortForBind(in_port_t port) {
+    std::shared_ptr<IConnectivityNative> c = getBinder();
+    return getErrno(c->blockPortForBind(port));
+}
+
+int AConnectivityNative_unblockPortForBind(in_port_t port) {
+    std::shared_ptr<IConnectivityNative> c = getBinder();
+    return getErrno(c->unblockPortForBind(port));
+}
+
+int AConnectivityNative_unblockAllPortsForBind() {
+    std::shared_ptr<IConnectivityNative> c = getBinder();
+    return getErrno(c->unblockAllPortsForBind());
+}
+
+int AConnectivityNative_getPortsBlockedForBind(in_port_t *ports, size_t *count) {
+    std::shared_ptr<IConnectivityNative> c = getBinder();
+    std::vector<int32_t> actualBlockedPorts;
+    int err = getErrno(c->getPortsBlockedForBind(&actualBlockedPorts));
+    if (err) {
+        return err;
+    }
+
+    for (int i = 0; i < *count && i < actualBlockedPorts.size(); i++) {
+        ports[i] = actualBlockedPorts[i];
+    }
+    *count = actualBlockedPorts.size();
+    return 0;
+}
diff --git a/service/mdns/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java b/service/mdns/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java
index f366363..f7871f3 100644
--- a/service/mdns/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java
+++ b/service/mdns/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java
@@ -17,6 +17,7 @@
 package com.android.server.connectivity.mdns;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.text.TextUtils;
 import android.util.Pair;
 
@@ -38,8 +39,6 @@
  * and the list of the subtypes in the query as a {@link Pair}. If a query is failed to build, or if
  * it can not be enqueued, then call to {@link #call()} returns {@code null}.
  */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 public class EnqueueMdnsQueryCallable implements Callable<Pair<Integer, List<String>>> {
 
     private static final String TAG = "MdnsQueryCallable";
@@ -81,7 +80,10 @@
         this.transactionId = transactionId;
     }
 
+    // Incompatible return type for override of Callable#call().
+    @SuppressWarnings("nullness:override.return.invalid")
     @Override
+    @Nullable
     public Pair<Integer, List<String>> call() {
         try {
             MdnsSocketClient requestSender = weakRequestSender.get();
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsConfigs.java b/service/mdns/com/android/server/connectivity/mdns/MdnsConfigs.java
index 41abba7..75c7e6c 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsConfigs.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsConfigs.java
@@ -101,4 +101,8 @@
     public static boolean allowNetworkInterfaceIndexPropagation() {
         return true;
     }
+
+    public static boolean allowMultipleSrvRecordsPerHost() {
+        return true;
+    }
 }
\ No newline at end of file
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsConstants.java b/service/mdns/com/android/server/connectivity/mdns/MdnsConstants.java
index 0b2066a..396be5f 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsConstants.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsConstants.java
@@ -16,19 +16,15 @@
 
 package com.android.server.connectivity.mdns;
 
-import android.annotation.TargetApi;
-import android.os.Build;
+import static java.nio.charset.StandardCharsets.UTF_8;
 
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
 
 /** mDNS-related constants. */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 @VisibleForTesting
 public final class MdnsConstants {
     public static final int MDNS_PORT = 5353;
@@ -48,7 +44,6 @@
     private static final String MDNS_IPV4_HOST_ADDRESS = "224.0.0.251";
     private static final String MDNS_IPV6_HOST_ADDRESS = "FF02::FB";
     private static InetAddress mdnsAddress;
-    private static Charset utf8Charset;
     private MdnsConstants() {
     }
 
@@ -79,16 +74,6 @@
     }
 
     public static Charset getUtf8Charset() {
-        synchronized (MdnsConstants.class) {
-            if (utf8Charset == null) {
-                utf8Charset = getUtf8CharsetOnKitKat();
-            }
-            return utf8Charset;
-        }
-    }
-
-    @TargetApi(Build.VERSION_CODES.KITKAT)
-    private static Charset getUtf8CharsetOnKitKat() {
-        return StandardCharsets.UTF_8;
+        return UTF_8;
     }
 }
\ No newline at end of file
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsInetAddressRecord.java b/service/mdns/com/android/server/connectivity/mdns/MdnsInetAddressRecord.java
index bd47414..47ac20e 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsInetAddressRecord.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsInetAddressRecord.java
@@ -16,6 +16,8 @@
 
 package com.android.server.connectivity.mdns;
 
+import android.annotation.Nullable;
+
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.io.IOException;
@@ -27,12 +29,10 @@
 import java.util.Objects;
 
 /** An mDNS "AAAA" or "A" record, which holds an IPv6 or IPv4 address. */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 @VisibleForTesting
 public class MdnsInetAddressRecord extends MdnsRecord {
-    private Inet6Address inet6Address;
-    private Inet4Address inet4Address;
+    @Nullable private Inet6Address inet6Address;
+    @Nullable private Inet4Address inet4Address;
 
     /**
      * Constructs the {@link MdnsRecord}
@@ -47,11 +47,13 @@
     }
 
     /** Returns the IPv6 address. */
+    @Nullable
     public Inet6Address getInet6Address() {
         return inet6Address;
     }
 
     /** Returns the IPv4 address. */
+    @Nullable
     public Inet4Address getInet4Address() {
         return inet4Address;
     }
@@ -113,7 +115,7 @@
     }
 
     @Override
-    public boolean equals(Object other) {
+    public boolean equals(@Nullable Object other) {
         if (this == other) {
             return true;
         }
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsPointerRecord.java b/service/mdns/com/android/server/connectivity/mdns/MdnsPointerRecord.java
index 0166815..9641a40 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsPointerRecord.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsPointerRecord.java
@@ -16,14 +16,14 @@
 
 package com.android.server.connectivity.mdns;
 
+import android.annotation.Nullable;
+
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.io.IOException;
 import java.util.Arrays;
 
 /** An mDNS "PTR" record, which holds a name (the "pointer"). */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 @VisibleForTesting
 public class MdnsPointerRecord extends MdnsRecord {
     private String[] pointer;
@@ -66,7 +66,7 @@
     }
 
     @Override
-    public boolean equals(Object other) {
+    public boolean equals(@Nullable Object other) {
         if (this == other) {
             return true;
         }
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsRecord.java b/service/mdns/com/android/server/connectivity/mdns/MdnsRecord.java
index 24fb09e..35f6da1 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsRecord.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsRecord.java
@@ -16,6 +16,10 @@
 
 package com.android.server.connectivity.mdns;
 
+import static java.util.concurrent.TimeUnit.MILLISECONDS;
+import static java.util.concurrent.TimeUnit.SECONDS;
+
+import android.annotation.Nullable;
 import android.os.SystemClock;
 import android.text.TextUtils;
 
@@ -24,14 +28,11 @@
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.Objects;
-import java.util.concurrent.TimeUnit;
 
 /**
  * Abstract base class for mDNS records. Stores the header fields and provides methods for reading
  * the record from and writing it to a packet.
  */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 public abstract class MdnsRecord {
     public static final int TYPE_A = 0x0001;
     public static final int TYPE_AAAA = 0x001C;
@@ -59,11 +60,14 @@
      * @param reader The reader to read the record from.
      * @throws IOException If an error occurs while reading the packet.
      */
+    // call to readData(com.android.server.connectivity.mdns.MdnsPacketReader) not allowed on given
+    // receiver.
+    @SuppressWarnings("nullness:method.invocation.invalid")
     protected MdnsRecord(String[] name, int type, MdnsPacketReader reader) throws IOException {
         this.name = name;
         this.type = type;
         cls = reader.readUInt16();
-        ttlMillis = TimeUnit.SECONDS.toMillis(reader.readUInt32());
+        ttlMillis = SECONDS.toMillis(reader.readUInt32());
         int dataLength = reader.readUInt16();
 
         receiptTimeMillis = SystemClock.elapsedRealtime();
@@ -157,7 +161,7 @@
         writer.writeUInt16(type);
         writer.writeUInt16(cls);
 
-        writer.writeUInt32(TimeUnit.MILLISECONDS.toSeconds(getRemainingTTL(now)));
+        writer.writeUInt32(MILLISECONDS.toSeconds(getRemainingTTL(now)));
 
         int dataLengthPos = writer.getWritePosition();
         writer.writeUInt16(0); // data length
@@ -194,7 +198,7 @@
     }
 
     @Override
-    public boolean equals(Object other) {
+    public boolean equals(@Nullable Object other) {
         if (!(other instanceof MdnsRecord)) {
             return false;
         }
@@ -231,7 +235,7 @@
         }
 
         @Override
-        public boolean equals(Object other) {
+        public boolean equals(@Nullable Object other) {
             if (this == other) {
                 return true;
             }
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsResponse.java b/service/mdns/com/android/server/connectivity/mdns/MdnsResponse.java
index c94e3c6..623168c 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsResponse.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsResponse.java
@@ -16,6 +16,8 @@
 
 package com.android.server.connectivity.mdns;
 
+import android.annotation.Nullable;
+
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.io.IOException;
@@ -25,8 +27,6 @@
 import java.util.List;
 
 /** An mDNS response. */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 public class MdnsResponse {
     private final List<MdnsRecord> records;
     private final List<MdnsPointerRecord> pointerRecords;
@@ -78,7 +78,7 @@
     }
 
     @VisibleForTesting
-    /* package */ synchronized void clearPointerRecords() {
+    synchronized void clearPointerRecords() {
         pointerRecords.clear();
     }
 
@@ -91,15 +91,16 @@
         return false;
     }
 
+    @Nullable
     public synchronized List<String> getSubtypes() {
         List<String> subtypes = null;
-
         for (MdnsPointerRecord pointerRecord : pointerRecords) {
-            if (pointerRecord.hasSubtype()) {
+            String pointerRecordSubtype = pointerRecord.getSubtype();
+            if (pointerRecordSubtype != null) {
                 if (subtypes == null) {
                     subtypes = new LinkedList<>();
                 }
-                subtypes.add(pointerRecord.getSubtype());
+                subtypes.add(pointerRecordSubtype);
             }
         }
 
@@ -166,7 +167,8 @@
     }
 
     /** Sets the IPv4 address record. */
-    public synchronized boolean setInet4AddressRecord(MdnsInetAddressRecord newInet4AddressRecord) {
+    public synchronized boolean setInet4AddressRecord(
+            @Nullable MdnsInetAddressRecord newInet4AddressRecord) {
         if (recordsAreSame(this.inet4AddressRecord, newInet4AddressRecord)) {
             return false;
         }
@@ -190,7 +192,8 @@
     }
 
     /** Sets the IPv6 address record. */
-    public synchronized boolean setInet6AddressRecord(MdnsInetAddressRecord newInet6AddressRecord) {
+    public synchronized boolean setInet6AddressRecord(
+            @Nullable MdnsInetAddressRecord newInet6AddressRecord) {
         if (recordsAreSame(this.inet6AddressRecord, newInet6AddressRecord)) {
             return false;
         }
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsResponseDecoder.java b/service/mdns/com/android/server/connectivity/mdns/MdnsResponseDecoder.java
index 57b241e..861acbb 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsResponseDecoder.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsResponseDecoder.java
@@ -25,19 +25,20 @@
 import java.io.EOFException;
 import java.io.IOException;
 import java.net.DatagramPacket;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
 import java.util.List;
 
 /** A class that decodes mDNS responses from UDP packets. */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 public class MdnsResponseDecoder {
 
     public static final int SUCCESS = 0;
     private static final String TAG = "MdnsResponseDecoder";
     private static final MdnsLogger LOGGER = new MdnsLogger(TAG);
-    private final String[] serviceType;
+    private final boolean allowMultipleSrvRecordsPerHost =
+            MdnsConfigs.allowMultipleSrvRecordsPerHost();
+    @Nullable private final String[] serviceType;
     private final Clock clock;
 
     /** Constructs a new decoder that will extract responses for the given service type. */
@@ -281,13 +282,18 @@
         for (MdnsRecord record : records) {
             if (record instanceof MdnsInetAddressRecord) {
                 MdnsInetAddressRecord inetRecord = (MdnsInetAddressRecord) record;
-                MdnsResponse response = findResponseWithHostName(responses, inetRecord.getName());
-                if (inetRecord.getInet4Address() != null && response != null) {
-                    response.setInet4AddressRecord(inetRecord);
-                    response.setInterfaceIndex(interfaceIndex);
-                } else if (inetRecord.getInet6Address() != null && response != null) {
-                    response.setInet6AddressRecord(inetRecord);
-                    response.setInterfaceIndex(interfaceIndex);
+                if (allowMultipleSrvRecordsPerHost) {
+                    List<MdnsResponse> matchingResponses =
+                            findResponsesWithHostName(responses, inetRecord.getName());
+                    for (MdnsResponse response : matchingResponses) {
+                        assignInetRecord(response, inetRecord, interfaceIndex);
+                    }
+                } else {
+                    MdnsResponse response =
+                            findResponseWithHostName(responses, inetRecord.getName());
+                    if (response != null) {
+                        assignInetRecord(response, inetRecord, interfaceIndex);
+                    }
                 }
             }
         }
@@ -295,6 +301,39 @@
         return SUCCESS;
     }
 
+    private static void assignInetRecord(
+            MdnsResponse response, MdnsInetAddressRecord inetRecord, int interfaceIndex) {
+        if (inetRecord.getInet4Address() != null) {
+            response.setInet4AddressRecord(inetRecord);
+            response.setInterfaceIndex(interfaceIndex);
+        } else if (inetRecord.getInet6Address() != null) {
+            response.setInet6AddressRecord(inetRecord);
+            response.setInterfaceIndex(interfaceIndex);
+        }
+    }
+
+    private static List<MdnsResponse> findResponsesWithHostName(
+            @Nullable List<MdnsResponse> responses, String[] hostName) {
+        if (responses == null || responses.isEmpty()) {
+            return List.of();
+        }
+
+        List<MdnsResponse> result = null;
+        for (MdnsResponse response : responses) {
+            MdnsServiceRecord serviceRecord = response.getServiceRecord();
+            if (serviceRecord == null) {
+                continue;
+            }
+            if (Arrays.equals(serviceRecord.getServiceHost(), hostName)) {
+                if (result == null) {
+                    result = new ArrayList<>(/* initialCapacity= */ responses.size());
+                }
+                result.add(response);
+            }
+        }
+        return result == null ? List.of() : result;
+    }
+
     public static class Clock {
         public long elapsedRealtime() {
             return SystemClock.elapsedRealtime();
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsServiceInfo.java b/service/mdns/com/android/server/connectivity/mdns/MdnsServiceInfo.java
index 7d645e3..f1b2def 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsServiceInfo.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsServiceInfo.java
@@ -72,7 +72,9 @@
     private final List<String> subtypes;
     private final String[] hostName;
     private final int port;
+    @Nullable
     private final String ipv4Address;
+    @Nullable
     private final String ipv6Address;
     final List<String> textStrings;
     @Nullable
@@ -85,12 +87,12 @@
     public MdnsServiceInfo(
             String serviceInstanceName,
             String[] serviceType,
-            List<String> subtypes,
+            @Nullable List<String> subtypes,
             String[] hostName,
             int port,
-            String ipv4Address,
-            String ipv6Address,
-            List<String> textStrings) {
+            @Nullable String ipv4Address,
+            @Nullable String ipv6Address,
+            @Nullable List<String> textStrings) {
         this(
                 serviceInstanceName,
                 serviceType,
@@ -111,9 +113,9 @@
             List<String> subtypes,
             String[] hostName,
             int port,
-            String ipv4Address,
-            String ipv6Address,
-            List<String> textStrings,
+            @Nullable String ipv4Address,
+            @Nullable String ipv6Address,
+            @Nullable List<String> textStrings,
             @Nullable List<TextEntry> textEntries) {
         this(
                 serviceInstanceName,
@@ -136,12 +138,12 @@
     public MdnsServiceInfo(
             String serviceInstanceName,
             String[] serviceType,
-            List<String> subtypes,
+            @Nullable List<String> subtypes,
             String[] hostName,
             int port,
-            String ipv4Address,
-            String ipv6Address,
-            List<String> textStrings,
+            @Nullable String ipv4Address,
+            @Nullable String ipv6Address,
+            @Nullable List<String> textStrings,
             @Nullable List<TextEntry> textEntries,
             int interfaceIndex) {
         this.serviceInstanceName = serviceInstanceName;
@@ -191,45 +193,44 @@
         return Collections.unmodifiableList(list);
     }
 
-    /** @return the name of this service instance. */
+    /** Returns the name of this service instance. */
     public String getServiceInstanceName() {
         return serviceInstanceName;
     }
 
-    /** @return the type of this service instance. */
+    /** Returns the type of this service instance. */
     public String[] getServiceType() {
         return serviceType;
     }
 
-    /** @return the list of subtypes supported by this service instance. */
+    /** Returns the list of subtypes supported by this service instance. */
     public List<String> getSubtypes() {
         return new ArrayList<>(subtypes);
     }
 
-    /**
-     * @return {@code true} if this service instance supports any subtypes.
-     * @return {@code false} if this service instance does not support any subtypes.
-     */
+    /** Returns {@code true} if this service instance supports any subtypes. */
     public boolean hasSubtypes() {
         return !subtypes.isEmpty();
     }
 
-    /** @return the host name of this service instance. */
+    /** Returns the host name of this service instance. */
     public String[] getHostName() {
         return hostName;
     }
 
-    /** @return the port number of this service instance. */
+    /** Returns the port number of this service instance. */
     public int getPort() {
         return port;
     }
 
-    /** @return the IPV4 address of this service instance. */
+    /** Returns the IPV4 address of this service instance. */
+    @Nullable
     public String getIpv4Address() {
         return ipv4Address;
     }
 
-    /** @return the IPV6 address of this service instance. */
+    /** Returns the IPV6 address of this service instance. */
+    @Nullable
     public String getIpv6Address() {
         return ipv6Address;
     }
@@ -265,7 +266,7 @@
         return attributes.get(key.toLowerCase(Locale.ENGLISH));
     }
 
-    /** @return an immutable map of all attributes. */
+    /** Returns an immutable map of all attributes. */
     public Map<String, String> getAttributes() {
         Map<String, String> map = new HashMap<>(attributes.size());
         for (Map.Entry<String, byte[]> kv : attributes.entrySet()) {
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsServiceRecord.java b/service/mdns/com/android/server/connectivity/mdns/MdnsServiceRecord.java
index 7f54d96..c52d25e 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsServiceRecord.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsServiceRecord.java
@@ -16,6 +16,8 @@
 
 package com.android.server.connectivity.mdns;
 
+import android.annotation.Nullable;
+
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.io.IOException;
@@ -24,8 +26,6 @@
 import java.util.Objects;
 
 /** An mDNS "SRV" record, which contains service information. */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 @VisibleForTesting
 public class MdnsServiceRecord extends MdnsRecord {
     public static final int PROTO_NONE = 0;
@@ -131,7 +131,7 @@
     }
 
     @Override
-    public boolean equals(Object other) {
+    public boolean equals(@Nullable Object other) {
         if (this == other) {
             return true;
         }
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java b/service/mdns/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
index be993e2..8ca71b9 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
@@ -29,6 +29,8 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.connectivity.mdns.util.MdnsLogger;
 
+import java.net.Inet4Address;
+import java.net.Inet6Address;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -43,8 +45,6 @@
  * Instance of this class sends and receives mDNS packets of a given service type and invoke
  * registered {@link MdnsServiceBrowserListener} instances.
  */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 public class MdnsServiceTypeClient {
 
     private static final int DEFAULT_MTU = 1500;
@@ -70,6 +70,7 @@
     private long currentSessionId = 0;
 
     @GuardedBy("lock")
+    @Nullable
     private Future<?> requestTaskFuture;
 
     /**
@@ -96,14 +97,25 @@
         String ipv4Address = null;
         String ipv6Address = null;
         if (response.hasInet4AddressRecord()) {
-            ipv4Address = response.getInet4AddressRecord().getInet4Address().getHostAddress();
+            Inet4Address inet4Address = response.getInet4AddressRecord().getInet4Address();
+            ipv4Address = (inet4Address == null) ? null : inet4Address.getHostAddress();
         }
         if (response.hasInet6AddressRecord()) {
-            ipv6Address = response.getInet6AddressRecord().getInet6Address().getHostAddress();
+            Inet6Address inet6Address = response.getInet6AddressRecord().getInet6Address();
+            ipv6Address = (inet6Address == null) ? null : inet6Address.getHostAddress();
+        }
+        if (ipv4Address == null && ipv6Address == null) {
+            throw new IllegalArgumentException(
+                    "Either ipv4Address or ipv6Address must be non-null");
+        }
+        String serviceInstanceName = response.getServiceInstanceName();
+        if (serviceInstanceName == null) {
+            throw new IllegalStateException(
+                    "mDNS response must have non-null service instance name");
         }
         // TODO: Throw an error message if response doesn't have Inet6 or Inet4 address.
         return new MdnsServiceInfo(
-                response.getServiceInstanceName(),
+                serviceInstanceName,
                 serviceTypeLabels,
                 response.getSubtypes(),
                 hostName,
@@ -128,8 +140,7 @@
             @NonNull MdnsSearchOptions searchOptions) {
         synchronized (lock) {
             this.searchOptions = searchOptions;
-            if (!listeners.contains(listener)) {
-                listeners.add(listener);
+            if (listeners.add(listener)) {
                 for (MdnsResponse existingResponse : instanceNameToResponse.values()) {
                     if (existingResponse.isComplete()) {
                         listener.onServiceFound(
@@ -212,7 +223,10 @@
         if (currentResponse == null) {
             newServiceFound = true;
             currentResponse = response;
-            instanceNameToResponse.put(response.getServiceInstanceName(), currentResponse);
+            String serviceInstanceName = response.getServiceInstanceName();
+            if (serviceInstanceName != null) {
+                instanceNameToResponse.put(serviceInstanceName, currentResponse);
+            }
         } else if (currentResponse.mergeRecordsFrom(response)) {
             existingServiceChanged = true;
         }
@@ -231,7 +245,10 @@
         }
     }
 
-    private void onGoodbyeReceived(@NonNull String serviceInstanceName) {
+    private void onGoodbyeReceived(@Nullable String serviceInstanceName) {
+        if (serviceInstanceName == null) {
+            return;
+        }
         instanceNameToResponse.remove(serviceInstanceName);
         for (MdnsServiceBrowserListener listener : listeners) {
             listener.onServiceRemoved(serviceInstanceName);
@@ -367,7 +384,7 @@
                                 config.expectUnicastResponse,
                                 config.transactionId)
                                 .call();
-            } catch (Exception e) {
+            } catch (RuntimeException e) {
                 LOGGER.e(String.format("Failed to run EnqueueMdnsQueryCallable for subtype: %s",
                         TextUtils.join(",", config.subtypes)), e);
                 result = null;
@@ -405,8 +422,11 @@
                                 == 0) {
                             iter.remove();
                             for (MdnsServiceBrowserListener listener : listeners) {
-                                listener.onServiceRemoved(
-                                        existingResponse.getServiceInstanceName());
+                                String serviceInstanceName =
+                                        existingResponse.getServiceInstanceName();
+                                if (serviceInstanceName != null) {
+                                    listener.onServiceRemoved(serviceInstanceName);
+                                }
                             }
                         }
                     }
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsSocket.java b/service/mdns/com/android/server/connectivity/mdns/MdnsSocket.java
index 3442430..0a9b2fc 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsSocket.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsSocket.java
@@ -34,8 +34,6 @@
  *
  * @see MulticastSocket for javadoc of each public method.
  */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 public class MdnsSocket {
     private static final MdnsLogger LOGGER = new MdnsLogger("MdnsSocket");
 
@@ -44,16 +42,22 @@
             new InetSocketAddress(MdnsConstants.getMdnsIPv4Address(), MdnsConstants.MDNS_PORT);
     private static final InetSocketAddress MULTICAST_IPV6_ADDRESS =
             new InetSocketAddress(MdnsConstants.getMdnsIPv6Address(), MdnsConstants.MDNS_PORT);
-    private static boolean isOnIPv6OnlyNetwork = false;
     private final MulticastNetworkInterfaceProvider multicastNetworkInterfaceProvider;
     private final MulticastSocket multicastSocket;
+    private boolean isOnIPv6OnlyNetwork;
 
     public MdnsSocket(
             @NonNull MulticastNetworkInterfaceProvider multicastNetworkInterfaceProvider, int port)
             throws IOException {
+        this(multicastNetworkInterfaceProvider, new MulticastSocket(port));
+    }
+
+    @VisibleForTesting
+    MdnsSocket(@NonNull MulticastNetworkInterfaceProvider multicastNetworkInterfaceProvider,
+            MulticastSocket multicastSocket) throws IOException {
         this.multicastNetworkInterfaceProvider = multicastNetworkInterfaceProvider;
         this.multicastNetworkInterfaceProvider.startWatchingConnectivityChanges();
-        multicastSocket = createMulticastSocket(port);
+        this.multicastSocket = multicastSocket;
         // RFC Spec: https://tools.ietf.org/html/rfc6762
         // Time to live is set 255, which is similar to the jMDNS implementation.
         multicastSocket.setTimeToLive(255);
@@ -121,11 +125,6 @@
         }
     }
 
-    @VisibleForTesting
-    MulticastSocket createMulticastSocket(int port) throws IOException {
-        return new MulticastSocket(port);
-    }
-
     public boolean isOnIPv6OnlyNetwork() {
         return isOnIPv6OnlyNetwork;
     }
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsSocketClient.java b/service/mdns/com/android/server/connectivity/mdns/MdnsSocketClient.java
index 6cbe3c7..758221a 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsSocketClient.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsSocketClient.java
@@ -46,8 +46,6 @@
  *
  * <p>See https://tools.ietf.org/html/rfc6763 (namely sections 4 and 5).
  */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 public class MdnsSocketClient {
 
     private static final String TAG = "MdnsClient";
@@ -71,7 +69,7 @@
     final Queue<DatagramPacket> unicastPacketQueue = new ArrayDeque<>();
     private final Context context;
     private final byte[] multicastReceiverBuffer = new byte[RECEIVER_BUFFER_SIZE];
-    private final byte[] unicastReceiverBuffer;
+    @Nullable private final byte[] unicastReceiverBuffer;
     private final MdnsResponseDecoder responseDecoder;
     private final MulticastLock multicastLock;
     private final boolean useSeparateSocketForUnicast =
@@ -94,20 +92,17 @@
     // If the phone is the bad state where it can't receive any multicast response.
     @VisibleForTesting
     AtomicBoolean cannotReceiveMulticastResponse = new AtomicBoolean(false);
-    @VisibleForTesting
-    volatile Thread sendThread;
-    @VisibleForTesting
-    Thread multicastReceiveThread;
-    @VisibleForTesting
-    Thread unicastReceiveThread;
+    @VisibleForTesting @Nullable volatile Thread sendThread;
+    @VisibleForTesting @Nullable Thread multicastReceiveThread;
+    @VisibleForTesting @Nullable Thread unicastReceiveThread;
     private volatile boolean shouldStopSocketLoop;
-    private Callback callback;
-    private MdnsSocket multicastSocket;
-    private MdnsSocket unicastSocket;
+    @Nullable private Callback callback;
+    @Nullable private MdnsSocket multicastSocket;
+    @Nullable private MdnsSocket unicastSocket;
     private int receivedPacketNumber = 0;
-    private Timer logMdnsPacketTimer;
+    @Nullable private Timer logMdnsPacketTimer;
     private AtomicInteger packetsCount;
-    private Timer checkMulticastResponseTimer;
+    @Nullable private Timer checkMulticastResponseTimer;
 
     public MdnsSocketClient(@NonNull Context context, @NonNull MulticastLock multicastLock) {
         this.context = context;
@@ -248,7 +243,12 @@
 
         if (useSeparateSocketForUnicast) {
             unicastReceiveThread =
-                    new Thread(() -> receiveThreadMain(unicastReceiverBuffer, unicastSocket));
+                    new Thread(
+                            () -> {
+                                if (unicastReceiverBuffer != null) {
+                                    receiveThreadMain(unicastReceiverBuffer, unicastSocket);
+                                }
+                            });
             unicastReceiveThread.setName("mdns-unicast-receive");
             unicastReceiveThread.start();
         }
@@ -327,11 +327,15 @@
                             unicastPacketsToSend.addAll(unicastPacketQueue);
                             unicastPacketQueue.clear();
                         }
+                        if (unicastSocket != null) {
+                            sendPackets(unicastPacketsToSend, unicastSocket);
+                        }
                     }
 
-                    // Send all the packets.
-                    sendPackets(multicastPacketsToSend, multicastSocket);
-                    sendPackets(unicastPacketsToSend, unicastSocket);
+                    // Send multicast packets.
+                    if (multicastSocket != null) {
+                        sendPackets(multicastPacketsToSend, multicastSocket);
+                    }
 
                     // Sleep ONLY if no more packets have been added to the queue, while packets
                     // were being sent.
@@ -351,7 +355,9 @@
         } finally {
             LOGGER.log("Send thread stopped.");
             try {
-                multicastSocket.leaveGroup();
+                if (multicastSocket != null) {
+                    multicastSocket.leaveGroup();
+                }
             } catch (Exception t) {
                 LOGGER.e("Failed to leave the group.", t);
             }
@@ -359,17 +365,19 @@
             // Close the socket first. This is the only way to interrupt a blocking receive.
             try {
                 // This is a race with the use of the file descriptor (b/27403984).
-                multicastSocket.close();
+                if (multicastSocket != null) {
+                    multicastSocket.close();
+                }
                 if (unicastSocket != null) {
                     unicastSocket.close();
                 }
-            } catch (Exception t) {
+            } catch (RuntimeException t) {
                 LOGGER.e("Failed to close the mdns socket.", t);
             }
         }
     }
 
-    private void receiveThreadMain(byte[] receiverBuffer, MdnsSocket socket) {
+    private void receiveThreadMain(byte[] receiverBuffer, @Nullable MdnsSocket socket) {
         DatagramPacket packet = new DatagramPacket(receiverBuffer, receiverBuffer.length);
 
         while (!shouldStopSocketLoop) {
@@ -500,7 +508,7 @@
     }
 
     public boolean isOnIPv6OnlyNetwork() {
-        return multicastSocket.isOnIPv6OnlyNetwork();
+        return multicastSocket != null && multicastSocket.isOnIPv6OnlyNetwork();
     }
 
     /** Callback for {@link MdnsSocketClient}. */
diff --git a/service/mdns/com/android/server/connectivity/mdns/MdnsTextRecord.java b/service/mdns/com/android/server/connectivity/mdns/MdnsTextRecord.java
index 73ecdfa..1e66589 100644
--- a/service/mdns/com/android/server/connectivity/mdns/MdnsTextRecord.java
+++ b/service/mdns/com/android/server/connectivity/mdns/MdnsTextRecord.java
@@ -16,6 +16,8 @@
 
 package com.android.server.connectivity.mdns;
 
+import android.annotation.Nullable;
+
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.connectivity.mdns.MdnsServiceInfo.TextEntry;
 
@@ -26,8 +28,6 @@
 import java.util.Objects;
 
 /** An mDNS "TXT" record, which contains a list of {@link TextEntry}. */
-// TODO(b/242631897): Resolve nullness suppression.
-@SuppressWarnings("nullness")
 @VisibleForTesting
 public class MdnsTextRecord extends MdnsRecord {
     private List<TextEntry> entries;
@@ -90,7 +90,7 @@
     }
 
     @Override
-    public boolean equals(Object other) {
+    public boolean equals(@Nullable Object other) {
         if (this == other) {
             return true;
         }
diff --git a/service/mdns/com/android/server/connectivity/mdns/util/MdnsLogger.java b/service/mdns/com/android/server/connectivity/mdns/util/MdnsLogger.java
index 431f1fd..63107e5 100644
--- a/service/mdns/com/android/server/connectivity/mdns/util/MdnsLogger.java
+++ b/service/mdns/com/android/server/connectivity/mdns/util/MdnsLogger.java
@@ -16,6 +16,7 @@
 
 package com.android.server.connectivity.mdns.util;
 
+import android.annotation.Nullable;
 import android.text.TextUtils;
 
 import com.android.net.module.util.SharedLog;
@@ -40,7 +41,7 @@
         mLog.log(message);
     }
 
-    public void log(String message, Object... args) {
+    public void log(String message, @Nullable Object... args) {
         mLog.log(message + " ; " + TextUtils.join(" ; ", args));
     }
 
diff --git a/service/src/com/android/metrics/stats.proto b/service/src/com/android/metrics/stats.proto
new file mode 100644
index 0000000..48b8316
--- /dev/null
+++ b/service/src/com/android/metrics/stats.proto
@@ -0,0 +1,286 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+syntax = "proto2";
+option java_multiple_files = true;
+
+package com.android.metrics;
+
+import "frameworks/proto_logging/stats/enums/stats/connectivity/connectivity_service.proto";
+
+/**
+ * Logs NSD(Network service discovery) client session
+ *
+ * Log from:
+ *     packages/modules/Connectivity/service-t/src/com/android/server/NsdService
+ */
+message NetworkNsdReported {
+  // Indicate if the device is using the legacy or the new implementation
+  optional bool is_legacy = 1;
+
+  // It is a random number to represent different clients. Each client is an app on the device.
+  optional int32 client_id = 2;
+
+  // It is a increment_number to represent different transactions.
+  // Each transaction is a request from an app client.
+  optional int32 transaction_id = 3;
+
+  // Indicate the service in resolution is a known service in the discovered services cache
+  optional bool is_known_service = 4;
+
+  // Record each NSD session type
+  optional .android.stats.connectivity.NsdEventType type = 5;
+
+  // The process duration of the event in milli-second
+  optional int64 event_duration_millisec = 6;
+
+  // Record each mdns query result
+  optional .android.stats.connectivity.MdnsQueryResult query_result = 7;
+
+  // Count of services in cache at the end of discovery
+  optional int32 found_service_count = 8;
+
+  // Count of found callback when discovery is stopped
+  optional int32 found_callback_count = 9;
+
+  // Count of lost callback when discovery is stopped
+  optional int32 lost_callback_count = 10;
+
+  // Record query service count before unregistered service
+  optional int32 replied_requests_count = 11;
+}
+
+/**
+ * Logs the number of network count on each list of transports
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NetworkCountPerTransports {
+    // the number of network count on each list of transports
+    repeated NetworkCountForTransports network_count_for_transports = 1;
+}
+
+/**
+ * Logs the number of network count and transport type
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NetworkCountForTransports {
+    // Transport types of the network
+    optional int32 transport_types = 1;
+
+    // Number of networks for one list of transport types
+    optional int32 network_count = 2;
+}
+
+/**
+ * Logs a list of networks
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NetworkList {
+    repeated NetworkDescription network_description = 1;
+}
+
+/**
+ * Logs connection duration in seconds and list of transports
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message ConnectionDurationForTransports {
+    // Transport types of the network
+    optional int32 transport_types = 1;
+
+    // Time duration that the device stays connected to the network
+    optional int32 duration_sec = 2;
+}
+
+/**
+ * Logs connection duration on each list of transports, in seconds
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message ConnectionDurationPerTransports {
+    repeated ConnectionDurationForTransports connection_duration_for_transports = 1;
+}
+
+/**
+ * Logs network request count & request type
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message RequestCountForType {
+    // The type of network request
+    optional .android.stats.connectivity.RequestType request_type = 1;
+
+    // Number of network requests
+    optional int32 request_count = 2;
+}
+
+/**
+ * Logs network request count
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NetworkRequestCount {
+    // Network request count for request type
+    repeated RequestCountForType request_count_for_type = 1;
+}
+
+/**
+ * Logs information about a network
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NetworkDescription {
+    // The transport types of the network. A network may include multiple transport types.
+    // Each transfer type is represented by a different bit, defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int32 transport_types = 1;
+
+    // Indicates the network is metered, non-metered or temporarily-unmetered
+    optional .android.stats.connectivity.MeteredState metered_state = 2;
+
+    // Indicates the network is validated, non-validated, partial or portal
+    optional .android.stats.connectivity.ValidatedState validated_state = 3;
+
+    // Record the bitmask of all the policies applied to this score of network.
+    // Each policy is represented by a different bit, defined in
+    // packages/modules/Connectivity/service/src/com/android/server/connectivity/FullScore.java
+    optional int64 score_policies = 4;
+
+    // The capabilities of the network. A network may include multiple network capabilities.
+    // Each capability is represented by a different bit, defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int64 capabilities = 5;
+
+    // Bitfield representing the network's enterprise capability identifier, defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int32 enterprise_id = 6;
+}
+
+/**
+ * Pulls a list of NumberOfRematchesPerReason.
+ *
+ * Pulled from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NumberOfRematchesPerReason {
+    // Number of network rematches for each rematch reason
+    repeated NumberOfRematchesForReason number_of_rematches_per_reason= 1;
+}
+
+/**
+ * Logs number of network rematches for rematch reason
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NumberOfRematchesForReason {
+    // The reason of network rematch
+    optional .android.stats.connectivity.RematchReason rematch_reason = 1;
+
+    // Number of network rematches
+    optional int32 rematch_count = 2;
+};
+
+/**
+ * Pulls information for connectivity stats.
+ *
+ * Pulled from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message ConnectivityStateSample {
+    // Number of networks per list of transports
+    optional NetworkCountPerTransports network_count_per_transports = 1;
+
+    // This is a list of networks with their transports and the duration
+    optional ConnectionDurationPerTransports connection_duration_per_transports = 2;
+
+    // Number of requests per category
+    optional NetworkRequestCount network_request_count  = 3;
+
+    // Full list of network details (slice by transport / meteredness / internet+validated)
+    optional NetworkList networks = 4;
+}
+
+
+/**
+ * Pulls information for network selection rematch info.
+ *
+ * Pulled from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NetworkSelectionRematchReasonsInfo {
+    // Number of rematch per rematch reason
+    optional NumberOfRematchesPerReason number_of_rematches_per_reason = 1;
+}
+
+/**
+ * Logs rematch information for the default network
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message DefaultNetworkRematchInfo {
+    // The session id comes from each reboot, this is used to correlate the statistics of the
+    // networkselect on the same boot
+    optional int64 session_id = 1;
+
+    // The information of old device default network
+    optional NetworkDescription old_network = 2;
+
+    // The information of new device default network
+    optional NetworkDescription new_network = 3;
+
+    // The reason of network rematch
+    optional .android.stats.connectivity.RematchReason rematch_reason = 4;
+
+    // The time duration the device kept the old network as the default in seconds
+    optional int32 time_duration_on_old_network_sec = 5;
+}
+
+/**
+ * Logs network selection performance
+ *
+ * Logs from:
+ *   packages/modules/Connectivity/service/src/com/android/server/ConnectivityService.java
+ */
+message NetworkSelectionPerformance {
+    // Number of network requests
+    optional int32 number_of_network_requests = 1;
+
+    // List of networks right now
+    // (slice by transport / meteredness / internet+validated)
+    optional NetworkList networks = 2;
+
+    // The latency of selection computed in milli-second
+    optional int32 selection_computed_latency_milli = 3;
+
+    // The latency of selection applied in milli-second
+    optional int32 selection_applied_latency_milli = 4;
+
+    // The latency of selection issued in milli-second
+    optional int32 selection_issued_latency_milli = 5;
+}
diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java
index 9b1fa45..2535974 100755
--- a/service/src/com/android/server/ConnectivityService.java
+++ b/service/src/com/android/server/ConnectivityService.java
@@ -75,6 +75,7 @@
 import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PAID;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_OEM_PRIVATE;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_PARTIAL_CONNECTIVITY;
+import static android.net.NetworkCapabilities.NET_CAPABILITY_TEMPORARILY_NOT_METERED;
 import static android.net.NetworkCapabilities.NET_CAPABILITY_VALIDATED;
 import static android.net.NetworkCapabilities.NET_ENTERPRISE_ID_1;
 import static android.net.NetworkCapabilities.NET_ENTERPRISE_ID_5;
@@ -1982,9 +1983,6 @@
     @Nullable
     public NetworkInfo getNetworkInfoForUid(Network network, int uid, boolean ignoreBlocked) {
         enforceAccessPermission();
-        if (uid != mDeps.getCallingUid()) {
-            enforceNetworkStackPermission(mContext);
-        }
         final NetworkAgentInfo nai = getNetworkAgentInfoForNetwork(network);
         if (nai == null) return null;
         return getFilteredNetworkInfo(nai, uid, ignoreBlocked);
@@ -2809,6 +2807,13 @@
                 NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
     }
 
+    private void enforceSettingsOrUseRestrictedNetworksPermission() {
+        enforceAnyPermissionOf(mContext,
+                android.Manifest.permission.NETWORK_SETTINGS,
+                NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
+                Manifest.permission.CONNECTIVITY_USE_RESTRICTED_NETWORKS);
+    }
+
     private void enforceNetworkFactoryPermission() {
         // TODO: Check for the BLUETOOTH_STACK permission once that is in the API surface.
         if (UserHandle.getAppId(getCallingUid()) == Process.BLUETOOTH_UID) return;
@@ -6101,14 +6106,12 @@
     }
 
     private void onUserAdded(@NonNull final UserHandle user) {
-        mPermissionMonitor.onUserAdded(user);
         if (mOemNetworkPreferences.getNetworkPreferences().size() > 0) {
             handleSetOemNetworkPreference(mOemNetworkPreferences, null);
         }
     }
 
     private void onUserRemoved(@NonNull final UserHandle user) {
-        mPermissionMonitor.onUserRemoved(user);
         // If there was a network preference for this user, remove it.
         handleSetProfileNetworkPreference(
                 List.of(new ProfileNetworkPreferenceList.Preference(user, null, true)),
@@ -6657,7 +6660,7 @@
                 enforceAccessPermission();
                 break;
             case TRACK_SYSTEM_DEFAULT:
-                enforceSettingsPermission();
+                enforceSettingsOrUseRestrictedNetworksPermission();
                 networkCapabilities = new NetworkCapabilities(defaultNc);
                 break;
             case BACKGROUND_REQUEST:
@@ -8049,6 +8052,10 @@
         final boolean oldMetered = prevNc.isMetered();
         final boolean newMetered = newNc.isMetered();
         final boolean meteredChanged = oldMetered != newMetered;
+        final boolean oldTempMetered = prevNc.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED);
+        final boolean newTempMetered = newNc.hasCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED);
+        final boolean tempMeteredChanged = oldTempMetered != newTempMetered;
+
 
         if (meteredChanged) {
             maybeNotifyNetworkBlocked(nai, oldMetered, newMetered,
@@ -8059,7 +8066,7 @@
                 != newNc.hasCapability(NET_CAPABILITY_NOT_ROAMING);
 
         // Report changes that are interesting for network statistics tracking.
-        if (meteredChanged || roamingChanged) {
+        if (meteredChanged || roamingChanged || tempMeteredChanged) {
             notifyIfacesChangedForNetworkStats();
         }
 
diff --git a/service/src/com/android/server/connectivity/ClatCoordinator.java b/service/src/com/android/server/connectivity/ClatCoordinator.java
index 42b3827..5d04632 100644
--- a/service/src/com/android/server/connectivity/ClatCoordinator.java
+++ b/service/src/com/android/server/connectivity/ClatCoordinator.java
@@ -899,7 +899,7 @@
     }
 
     /**
-     * Dump the cordinator information.
+     * Dump the coordinator information.
      *
      * @param pw print writer.
      */
@@ -907,7 +907,7 @@
         // TODO: move map dump to a global place to avoid duplicate dump while there are two or
         // more IPv6 only networks.
         if (isStarted()) {
-            pw.println("CLAT tracker: " + mClatdTracker.toString());
+            pw.println("CLAT tracker: " + mClatdTracker);
             pw.println("Forwarding rules:");
             pw.increaseIndent();
             dumpBpfIngress(pw);
diff --git a/service/src/com/android/server/connectivity/PermissionMonitor.java b/service/src/com/android/server/connectivity/PermissionMonitor.java
index fd1ed60..eee7f3a 100755
--- a/service/src/com/android/server/connectivity/PermissionMonitor.java
+++ b/service/src/com/android/server/connectivity/PermissionMonitor.java
@@ -175,6 +175,22 @@
                 final String[] pkgList =
                         intent.getStringArrayExtra(Intent.EXTRA_CHANGED_PACKAGE_LIST);
                 onExternalApplicationsAvailable(pkgList);
+            } else if (Intent.ACTION_USER_ADDED.equals(action)) {
+                final UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER);
+                // User should be filled for below intents, check the existence.
+                if (user == null) {
+                    Log.wtf(TAG, action + " broadcast without EXTRA_USER");
+                    return;
+                }
+                onUserAdded(user);
+            } else if (Intent.ACTION_USER_REMOVED.equals(action)) {
+                final UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER);
+                // User should be filled for below intents, check the existence.
+                if (user == null) {
+                    Log.wtf(TAG, action + " broadcast without EXTRA_USER");
+                    return;
+                }
+                onUserRemoved(user);
             } else {
                 Log.wtf(TAG, "received unexpected intent: " + action);
             }
@@ -408,6 +424,14 @@
                 mIntentReceiver, externalIntentFilter, null /* broadcastPermission */,
                 null /* scheduler */);
 
+        // Listen for user add/remove.
+        final IntentFilter userIntentFilter = new IntentFilter();
+        userIntentFilter.addAction(Intent.ACTION_USER_ADDED);
+        userIntentFilter.addAction(Intent.ACTION_USER_REMOVED);
+        userAllContext.registerReceiver(
+                mIntentReceiver, userIntentFilter, null /* broadcastPermission */,
+                null /* scheduler */);
+
         // Register UIDS_ALLOWED_ON_RESTRICTED_NETWORKS setting observer
         mDeps.registerContentObserver(
                 userAllContext,
@@ -547,7 +571,8 @@
      *
      * @hide
      */
-    public synchronized void onUserAdded(@NonNull UserHandle user) {
+    @VisibleForTesting
+    synchronized void onUserAdded(@NonNull UserHandle user) {
         mUsers.add(user);
 
         final List<PackageInfo> apps = getInstalledPackagesAsUser(user);
@@ -578,7 +603,8 @@
      *
      * @hide
      */
-    public synchronized void onUserRemoved(@NonNull UserHandle user) {
+    @VisibleForTesting
+    synchronized void onUserRemoved(@NonNull UserHandle user) {
         mUsers.remove(user);
 
         // Remove uids network permissions that belongs to the user.
@@ -758,7 +784,8 @@
      *
      * @hide
      */
-    public synchronized void onPackageAdded(@NonNull final String packageName, final int uid) {
+    @VisibleForTesting
+    synchronized void onPackageAdded(@NonNull final String packageName, final int uid) {
         // Update uid permission.
         updateAppIdTrafficPermission(uid);
         // Get the appId permission from all users then send the latest permission to netd.
@@ -821,7 +848,8 @@
      *
      * @hide
      */
-    public synchronized void onPackageRemoved(@NonNull final String packageName, final int uid) {
+    @VisibleForTesting
+    synchronized void onPackageRemoved(@NonNull final String packageName, final int uid) {
         // Update uid permission.
         updateAppIdTrafficPermission(uid);
         // Get the appId permission from all users then send the latest permission to netd.
diff --git a/tests/common/java/android/net/apf/ApfCapabilitiesTest.java b/tests/common/java/android/net/apf/ApfCapabilitiesTest.java
index fa4adcb..8c2ec40 100644
--- a/tests/common/java/android/net/apf/ApfCapabilitiesTest.java
+++ b/tests/common/java/android/net/apf/ApfCapabilitiesTest.java
@@ -33,6 +33,7 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.testutils.DevSdkIgnoreRule;
+import com.android.testutils.DevSdkIgnoreRule.IgnoreAfter;
 import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
 
 import org.junit.Before;
@@ -83,7 +84,11 @@
         assertTrue(caps.hasDataAccess());
     }
 
-    @Test
+    // the property is deleted in U, on S & T getApfDrop8023Frames() is mainline and
+    // hardcoded to return true, so this simply verifies the unused property is also true,
+    // as modifying it would not take effect.  For S+ change NetworkStack's
+    // config_apfDrop802_3Frames instead.
+    @Test @IgnoreAfter(Build.VERSION_CODES.TIRAMISU)
     public void testGetApfDrop8023Frames() {
         // Get com.android.internal.R.bool.config_apfDrop802_3Frames. The test cannot directly
         // use R.bool.config_apfDrop802_3Frames because that is not a stable resource ID.
@@ -105,7 +110,11 @@
                 ApfCapabilities.getApfDrop8023Frames());
     }
 
-    @Test
+    // the property is deleted in U, on S & T getApfEtherTypeBlackList() is mainline and
+    // hardcoded to return a specific default set of ethertypes, so this simply verifies
+    // that the unused property hasn't been changed away from the default, as it would
+    // not take effect.  For S+ change NetworkStack's config_apfEthTypeDenyList instead.
+    @Test @IgnoreAfter(Build.VERSION_CODES.TIRAMISU)
     public void testGetApfEtherTypeBlackList() {
         // Get com.android.internal.R.array.config_apfEthTypeBlackList. The test cannot directly
         // use R.array.config_apfEthTypeBlackList because that is not a stable resource ID.
diff --git a/tests/cts/hostside/app/src/com/android/cts/net/hostside/VpnTest.java b/tests/cts/hostside/app/src/com/android/cts/net/hostside/VpnTest.java
index 5f032be..8c18a89 100755
--- a/tests/cts/hostside/app/src/com/android/cts/net/hostside/VpnTest.java
+++ b/tests/cts/hostside/app/src/com/android/cts/net/hostside/VpnTest.java
@@ -38,6 +38,7 @@
 import static com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity;
 import static com.android.networkstack.apishim.ConstantsShim.BLOCKED_REASON_LOCKDOWN_VPN;
 import static com.android.networkstack.apishim.ConstantsShim.BLOCKED_REASON_NONE;
+import static com.android.networkstack.apishim.ConstantsShim.RECEIVER_EXPORTED;
 import static com.android.testutils.Cleanup.testAndCleanup;
 import static com.android.testutils.DevSdkIgnoreRuleKt.SC_V2;
 
@@ -1550,8 +1551,9 @@
         final DownloadManager dm = context.getSystemService(DownloadManager.class);
         final DownloadCompleteReceiver receiver = new DownloadCompleteReceiver();
         try {
+            final int flags = SdkLevel.isAtLeastT() ? RECEIVER_EXPORTED : 0;
             context.registerReceiver(receiver,
-                    new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
+                    new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE), flags);
 
             // Enqueue a request and check only one download.
             final long id = dm.enqueue(new Request(
diff --git a/tests/cts/net/src/android/net/cts/CaptivePortalTest.kt b/tests/cts/net/src/android/net/cts/CaptivePortalTest.kt
index aad8804..7c24c95 100644
--- a/tests/cts/net/src/android/net/cts/CaptivePortalTest.kt
+++ b/tests/cts/net/src/android/net/cts/CaptivePortalTest.kt
@@ -47,6 +47,7 @@
 import androidx.test.platform.app.InstrumentationRegistry.getInstrumentation
 import androidx.test.runner.AndroidJUnit4
 import com.android.modules.utils.build.SdkLevel.isAtLeastR
+import com.android.testutils.DeviceConfigRule
 import com.android.testutils.RecorderCallback
 import com.android.testutils.TestHttpServer
 import com.android.testutils.TestHttpServer.Request
diff --git a/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java
index 7d1e13f..609aa32 100644
--- a/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java
+++ b/tests/cts/net/src/android/net/cts/ConnectivityDiagnosticsManagerTest.java
@@ -39,6 +39,7 @@
 import static android.net.cts.util.CtsNetUtils.TestNetworkCallback;
 
 import static com.android.compatibility.common.util.SystemUtil.callWithShellPermissionIdentity;
+import static com.android.compatibility.common.util.SystemUtil.runShellCommand;
 import static com.android.compatibility.common.util.SystemUtil.runWithShellPermissionIdentity;
 import static com.android.testutils.Cleanup.testAndCleanup;
 
@@ -70,11 +71,13 @@
 import android.os.ParcelFileDescriptor;
 import android.os.PersistableBundle;
 import android.os.Process;
+import android.os.SystemClock;
 import android.platform.test.annotations.AppModeFull;
 import android.telephony.CarrierConfigManager;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.util.ArraySet;
+import android.util.Log;
 import android.util.Pair;
 
 import androidx.test.InstrumentationRegistry;
@@ -104,6 +107,8 @@
 @IgnoreUpTo(Build.VERSION_CODES.Q) // ConnectivityDiagnosticsManager did not exist in Q
 @AppModeFull(reason = "CHANGE_NETWORK_STATE, MANAGE_TEST_NETWORKS not grantable to instant apps")
 public class ConnectivityDiagnosticsManagerTest {
+    private static final String TAG = ConnectivityDiagnosticsManagerTest.class.getSimpleName();
+
     private static final int CALLBACK_TIMEOUT_MILLIS = 5000;
     private static final int NO_CALLBACK_INVOKED_TIMEOUT = 500;
     private static final long TIMESTAMP = 123456789L;
@@ -113,7 +118,7 @@
     private static final int UNKNOWN_DETECTION_METHOD = 4;
     private static final int FILTERED_UNKNOWN_DETECTION_METHOD = 0;
     private static final int CARRIER_CONFIG_CHANGED_BROADCAST_TIMEOUT = 5000;
-    private static final int DELAY_FOR_ADMIN_UIDS_MILLIS = 5000;
+    private static final int DELAY_FOR_BROADCAST_IDLE = 30_000;
 
     private static final Executor INLINE_EXECUTOR = x -> x.run();
 
@@ -155,6 +160,23 @@
 
     private List<TestConnectivityDiagnosticsCallback> mRegisteredCallbacks;
 
+    private static void waitForBroadcastIdle(final long timeoutMs) throws InterruptedException {
+        final long st = SystemClock.elapsedRealtime();
+        // am wait-for-broadcast-idle will return immediately if the queue is already idle.
+        final Thread t = new Thread(() -> runShellCommand("am wait-for-broadcast-idle"));
+        t.start();
+        // Two notes about the case where join() times out :
+        // • It is fine to continue running the test. The broadcast queue might still be busy, but
+        //   there is no way as of now to wait for a particular broadcast to have been been
+        //   processed so it's possible the one the caller is interested in is in fact done,
+        //   making it worth running the rest of the test.
+        // • The thread will continue running its course in the test process. In this case it is
+        //   fine because the wait-for-broadcast-idle command doesn't have side effects, and the
+        //   thread does nothing else.
+        t.join(timeoutMs);
+        Log.i(TAG, "Waited for broadcast idle for " + (SystemClock.elapsedRealtime() - st) + "ms");
+    }
+
     @Before
     public void setUp() throws Exception {
         mContext = InstrumentationRegistry.getContext();
@@ -283,10 +305,11 @@
         // broadcast. CPT then needs to update the corresponding DataConnection, which then
         // updates ConnectivityService. Unfortunately, this update to the NetworkCapabilities in
         // CS does not trigger NetworkCallback#onCapabilitiesChanged as changing the
-        // administratorUids is not a publicly visible change. In lieu of a better signal to
-        // deterministically wait for, use Thread#sleep here.
-        // TODO(b/157949581): replace this Thread#sleep with a deterministic signal
-        Thread.sleep(DELAY_FOR_ADMIN_UIDS_MILLIS);
+        // administratorUids is not a publicly visible change. Start by waiting for broadcast
+        // idle to make sure Telephony has received the carrier config change broadcast ; the
+        // delay to pass this information to CS is accounted in the delay in waiting for the
+        // callback.
+        waitForBroadcastIdle(DELAY_FOR_BROADCAST_IDLE);
 
         // TODO(b/217559768): Receiving carrier config change and immediately checking carrier
         //  privileges is racy, as the CP status is updated after receiving the same signal. Move
diff --git a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
index 218eb04..fd219d2 100644
--- a/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
+++ b/tests/cts/net/src/android/net/cts/ConnectivityManagerTest.java
@@ -192,6 +192,7 @@
 import com.android.testutils.ConnectivityModuleTest;
 import com.android.testutils.DevSdkIgnoreRule;
 import com.android.testutils.DevSdkIgnoreRule.IgnoreUpTo;
+import com.android.testutils.DeviceConfigRule;
 import com.android.testutils.DeviceInfoUtils;
 import com.android.testutils.DumpTestUtils;
 import com.android.testutils.RecorderCallback.CallbackEntry;
@@ -559,6 +560,11 @@
         // got from other APIs.
         final Network[] networks = mCm.getAllNetworks();
         assertGreaterOrEqual(networks.length, 1);
+        final TestableNetworkCallback allNetworkLinkPropertiesListener =
+                new TestableNetworkCallback();
+        mCm.registerNetworkCallback(new NetworkRequest.Builder().clearCapabilities().build(),
+                allNetworkLinkPropertiesListener);
+
         final List<NetworkStateSnapshot> snapshots = runWithShellPermissionIdentity(
                 () -> mCm.getAllNetworkStateSnapshots(), NETWORK_SETTINGS);
         assertEquals(networks.length, snapshots.size());
@@ -584,7 +590,18 @@
             assertEquals("", caps.describeImmutableDifferences(
                     snapshot.getNetworkCapabilities()
                             .setNetworkSpecifier(redactedSnapshotCapSpecifier)));
-            assertEquals(mCm.getLinkProperties(network), snapshot.getLinkProperties());
+
+            // Don't check that the mutable fields are the same with synchronous calls, as
+            // the device may add or remove content of these fields in the middle of the test.
+            // Instead, search the target LinkProperties from received LinkPropertiesChanged
+            // callbacks. This is guaranteed to succeed because the callback is registered
+            // before getAllNetworkStateSnapshots is called.
+            final LinkProperties lpFromSnapshot = snapshot.getLinkProperties();
+            allNetworkLinkPropertiesListener.eventuallyExpect(CallbackEntry.LINK_PROPERTIES_CHANGED,
+                    NETWORK_CALLBACK_TIMEOUT_MS, 0 /* mark */, entry ->
+                            entry.getNetwork().equals(network)
+                                    && entry.getLp().equals(lpFromSnapshot));
+
             assertEquals(mCm.getNetworkInfo(network).getType(), snapshot.getLegacyType());
 
             if (network.equals(cellNetwork)) {
@@ -1047,12 +1064,22 @@
         final TestNetworkCallback bestMatchingCallback = new TestNetworkCallback();
         final Handler h = new Handler(Looper.getMainLooper());
         if (TestUtils.shouldTestSApis()) {
+            assertThrows(SecurityException.class, () ->
+                    registerSystemDefaultNetworkCallback(systemDefaultCallback, h));
             runWithShellPermissionIdentity(() -> {
                 registerSystemDefaultNetworkCallback(systemDefaultCallback, h);
                 registerDefaultNetworkCallbackForUid(Process.myUid(), perUidCallback, h);
             }, NETWORK_SETTINGS);
             registerBestMatchingNetworkCallback(makeDefaultRequest(), bestMatchingCallback, h);
         }
+        if (TestUtils.shouldTestTApis()) {
+            // Verify registerSystemDefaultNetworkCallback can be accessed via
+            // CONNECTIVITY_USE_RESTRICTED_NETWORKS permission.
+            final TestNetworkCallback systemDefaultCallback2 = new TestNetworkCallback();
+            runWithShellPermissionIdentity(() ->
+                    registerSystemDefaultNetworkCallback(systemDefaultCallback2, h),
+                    CONNECTIVITY_USE_RESTRICTED_NETWORKS);
+        }
 
         Network wifiNetwork = null;
         mCtsNetUtils.ensureWifiConnected();
diff --git a/tests/cts/net/src/android/net/cts/DeviceConfigRule.kt b/tests/cts/net/src/android/net/cts/DeviceConfigRule.kt
deleted file mode 100644
index 3a36cee..0000000
--- a/tests/cts/net/src/android/net/cts/DeviceConfigRule.kt
+++ /dev/null
@@ -1,176 +0,0 @@
-/*
- * Copyright (C) 2022 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package android.net.cts
-
-import android.Manifest.permission.READ_DEVICE_CONFIG
-import android.Manifest.permission.WRITE_DEVICE_CONFIG
-import android.provider.DeviceConfig
-import android.util.Log
-import com.android.modules.utils.build.SdkLevel
-import com.android.testutils.FunctionalUtils.ThrowingRunnable
-import com.android.testutils.runAsShell
-import com.android.testutils.tryTest
-import org.junit.rules.TestRule
-import org.junit.runner.Description
-import org.junit.runners.model.Statement
-import java.util.concurrent.CompletableFuture
-import java.util.concurrent.Executor
-import java.util.concurrent.TimeUnit
-
-private val TAG = DeviceConfigRule::class.simpleName
-
-/**
- * A [TestRule] that helps set [DeviceConfig] for tests and clean up the test configuration
- * automatically on teardown.
- *
- * The rule can also optionally retry tests when they fail following an external change of
- * DeviceConfig before S; this typically happens because device config flags are synced while the
- * test is running, and DisableConfigSyncTargetPreparer is only usable starting from S.
- *
- * @param retryCountBeforeSIfConfigChanged if > 0, when the test fails before S, check if
- *        the configs that were set through this rule were changed, and retry the test
- *        up to the specified number of times if yes.
- */
-class DeviceConfigRule @JvmOverloads constructor(
-    val retryCountBeforeSIfConfigChanged: Int = 0
-) : TestRule {
-    // Maps (namespace, key) -> value
-    private val originalConfig = mutableMapOf<Pair<String, String>, String?>()
-    private val usedConfig = mutableMapOf<Pair<String, String>, String?>()
-
-    /**
-     * Actions to be run after cleanup of the config, for the current test only.
-     */
-    private val currentTestCleanupActions = mutableListOf<ThrowingRunnable>()
-
-    override fun apply(base: Statement, description: Description): Statement {
-        return TestValidationUrlStatement(base, description)
-    }
-
-    private inner class TestValidationUrlStatement(
-        private val base: Statement,
-        private val description: Description
-    ) : Statement() {
-        override fun evaluate() {
-            var retryCount = if (SdkLevel.isAtLeastS()) 1 else retryCountBeforeSIfConfigChanged + 1
-            while (retryCount > 0) {
-                retryCount--
-                tryTest {
-                    base.evaluate()
-                    // Can't use break/return out of a loop here because this is a tryTest lambda,
-                    // so set retryCount to exit instead
-                    retryCount = 0
-                }.catch<Throwable> { e -> // junit AssertionFailedError does not extend Exception
-                    if (retryCount == 0) throw e
-                    usedConfig.forEach { (key, value) ->
-                        val currentValue = runAsShell(READ_DEVICE_CONFIG) {
-                            DeviceConfig.getProperty(key.first, key.second)
-                        }
-                        if (currentValue != value) {
-                            Log.w(TAG, "Test failed with unexpected device config change, retrying")
-                            return@catch
-                        }
-                    }
-                    throw e
-                } cleanupStep {
-                    runAsShell(WRITE_DEVICE_CONFIG) {
-                        originalConfig.forEach { (key, value) ->
-                            DeviceConfig.setProperty(
-                                    key.first, key.second, value, false /* makeDefault */)
-                        }
-                    }
-                } cleanupStep {
-                    originalConfig.clear()
-                    usedConfig.clear()
-                } cleanup {
-                    // Fold all cleanup actions into cleanup steps of an empty tryTest, so they are
-                    // all run even if exceptions are thrown, and exceptions are reported properly.
-                    currentTestCleanupActions.fold(tryTest { }) {
-                        tryBlock, action -> tryBlock.cleanupStep { action.run() }
-                    }.cleanup {
-                        currentTestCleanupActions.clear()
-                    }
-                }
-            }
-        }
-    }
-
-    /**
-     * Set a configuration key/value. After the test case ends, it will be restored to the value it
-     * had when this method was first called.
-     */
-    fun setConfig(namespace: String, key: String, value: String?): String? {
-        Log.i(TAG, "Setting config \"$key\" to \"$value\"")
-        val readWritePermissions = arrayOf(READ_DEVICE_CONFIG, WRITE_DEVICE_CONFIG)
-
-        val keyPair = Pair(namespace, key)
-        val existingValue = runAsShell(*readWritePermissions) {
-            DeviceConfig.getProperty(namespace, key)
-        }
-        if (!originalConfig.containsKey(keyPair)) {
-            originalConfig[keyPair] = existingValue
-        }
-        usedConfig[keyPair] = value
-        if (existingValue == value) {
-            // Already the correct value. There may be a race if a change is already in flight,
-            // but if multiple threads update the config there is no way to fix that anyway.
-            Log.i(TAG, "\"$key\" already had value \"$value\"")
-            return value
-        }
-
-        val future = CompletableFuture<String>()
-        val listener = DeviceConfig.OnPropertiesChangedListener {
-            // The listener receives updates for any change to any key, so don't react to
-            // changes that do not affect the relevant key
-            if (!it.keyset.contains(key)) return@OnPropertiesChangedListener
-            // "null" means absent in DeviceConfig : there is no such thing as a present but
-            // null value, so the following works even if |value| is null.
-            if (it.getString(key, null) == value) {
-                future.complete(value)
-            }
-        }
-
-        return tryTest {
-            runAsShell(*readWritePermissions) {
-                DeviceConfig.addOnPropertiesChangedListener(
-                        DeviceConfig.NAMESPACE_CONNECTIVITY,
-                        inlineExecutor,
-                        listener)
-                DeviceConfig.setProperty(
-                        DeviceConfig.NAMESPACE_CONNECTIVITY,
-                        key,
-                        value,
-                        false /* makeDefault */)
-                // Don't drop the permission until the config is applied, just in case
-                future.get(NetworkValidationTestUtil.TIMEOUT_MS, TimeUnit.MILLISECONDS)
-            }.also {
-                Log.i(TAG, "Config \"$key\" successfully set to \"$value\"")
-            }
-        } cleanup {
-            DeviceConfig.removeOnPropertiesChangedListener(listener)
-        }
-    }
-
-    private val inlineExecutor get() = Executor { r -> r.run() }
-
-    /**
-     * Add an action to be run after config cleanup when the current test case ends.
-     */
-    fun runAfterNextCleanup(action: ThrowingRunnable) {
-        currentTestCleanupActions.add(action)
-    }
-}
diff --git a/tests/cts/net/src/android/net/cts/DscpPolicyTest.kt b/tests/cts/net/src/android/net/cts/DscpPolicyTest.kt
index 8940075..db13c49 100644
--- a/tests/cts/net/src/android/net/cts/DscpPolicyTest.kt
+++ b/tests/cts/net/src/android/net/cts/DscpPolicyTest.kt
@@ -105,6 +105,7 @@
 
 private const val TAG = "DscpPolicyTest"
 private const val PACKET_TIMEOUT_MS = 2_000L
+private const val IPV6_ADDRESS_WAIT_TIME_MS = 10_000L
 
 @AppModeFull(reason = "Instant apps cannot create test networks")
 @RunWith(AndroidJUnit4::class)
@@ -222,7 +223,7 @@
         var inet6Addr: Inet6Address? = null
         val onLinkPrefix = raResponder.prefix
         val startTime = SystemClock.elapsedRealtime()
-        while (SystemClock.elapsedRealtime() - startTime < PACKET_TIMEOUT_MS) {
+        while (SystemClock.elapsedRealtime() - startTime < IPV6_ADDRESS_WAIT_TIME_MS) {
             SystemClock.sleep(50 /* ms */)
             val sock = Os.socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP)
             try {
diff --git a/tests/cts/net/src/android/net/cts/NetworkValidationTestUtil.kt b/tests/cts/net/src/android/net/cts/NetworkValidationTestUtil.kt
index 375bfb8..a0b40aa 100644
--- a/tests/cts/net/src/android/net/cts/NetworkValidationTestUtil.kt
+++ b/tests/cts/net/src/android/net/cts/NetworkValidationTestUtil.kt
@@ -20,6 +20,7 @@
 import android.provider.DeviceConfig
 import android.provider.DeviceConfig.NAMESPACE_CONNECTIVITY
 import com.android.net.module.util.NetworkStackConstants
+import com.android.testutils.DeviceConfigRule
 import com.android.testutils.runAsShell
 
 /**
@@ -27,7 +28,6 @@
  */
 internal object NetworkValidationTestUtil {
     val TAG = NetworkValidationTestUtil::class.simpleName
-    const val TIMEOUT_MS = 20_000L
 
     /**
      * Clear the test network validation URLs.
diff --git a/tests/native/connectivity_native_test/Android.bp b/tests/native/connectivity_native_test/Android.bp
index 7d43aa8..8825aa4 100644
--- a/tests/native/connectivity_native_test/Android.bp
+++ b/tests/native/connectivity_native_test/Android.bp
@@ -10,7 +10,7 @@
         "vts",
     ],
     test_config_template: "AndroidTestTemplate.xml",
-    min_sdk_version: "31",
+    min_sdk_version: "34",
     tidy: false,
     srcs: [
         "connectivity_native_test.cpp",
diff --git a/tests/native/connectivity_native_test/connectivity_native_test.cpp b/tests/native/connectivity_native_test/connectivity_native_test.cpp
index 3db5265..27a9d35 100644
--- a/tests/native/connectivity_native_test/connectivity_native_test.cpp
+++ b/tests/native/connectivity_native_test/connectivity_native_test.cpp
@@ -14,62 +14,81 @@
  * limitations under the License.
  */
 
-#include <aidl/android/net/connectivity/aidl/ConnectivityNative.h>
 #include <android/binder_manager.h>
 #include <android/binder_process.h>
 #include <android-modules-utils/sdk_level.h>
 #include <cutils/misc.h>  // FIRST_APPLICATION_UID
+#include <dlfcn.h>
 #include <gtest/gtest.h>
 #include <netinet/in.h>
 
 #include "bpf/BpfUtils.h"
 
-using aidl::android::net::connectivity::aidl::IConnectivityNative;
+typedef int (*GetPortsBlockedForBind)(in_port_t*, size_t*);
+GetPortsBlockedForBind getPortsBlockedForBind;
+typedef int (*BlockPortForBind)(in_port_t);
+BlockPortForBind blockPortForBind;
+typedef int (*UnblockPortForBind)(in_port_t);
+UnblockPortForBind unblockPortForBind;
+typedef int (*UnblockAllPortsForBind)();
+UnblockAllPortsForBind unblockAllPortsForBind;
 
 class ConnectivityNativeBinderTest : public ::testing::Test {
   public:
-    std::vector<int32_t> mActualBlockedPorts;
-
-    ConnectivityNativeBinderTest() {
-        AIBinder* binder = AServiceManager_getService("connectivity_native");
-        ndk::SpAIBinder sBinder = ndk::SpAIBinder(binder);
-        mService = aidl::android::net::connectivity::aidl::IConnectivityNative::fromBinder(sBinder);
-    }
+    in_port_t mActualBlockedPorts[65535];
+    size_t mActualBlockedPortsCount = 65535;
+    bool restoreBlockedPorts;
 
     void SetUp() override {
-        // Skip test case if not on T.
-        if (!android::modules::sdklevel::IsAtLeastT()) GTEST_SKIP() <<
+        restoreBlockedPorts = false;
+        // Skip test case if not on U.
+        if (!android::modules::sdklevel::IsAtLeastU()) GTEST_SKIP() <<
                 "Should be at least T device.";
 
         // Skip test case if not on 5.4 kernel which is required by bpf prog.
         if (!android::bpf::isAtLeastKernelVersion(5, 4, 0)) GTEST_SKIP() <<
                 "Kernel should be at least 5.4.";
 
-        ASSERT_NE(nullptr, mService.get());
+        // Necessary to use dlopen/dlsym since the lib is only available on U and there
+        // is no Sdk34ModuleController in tradefed yet.
+        // TODO: link against the library directly and add Sdk34ModuleController to
+        // AndroidTest.txml when available.
+        void* nativeLib = dlopen("libcom.android.tethering.connectivity_native.so", RTLD_NOW);
+        ASSERT_NE(nullptr, nativeLib);
+        getPortsBlockedForBind = reinterpret_cast<GetPortsBlockedForBind>(
+                dlsym(nativeLib, "AConnectivityNative_getPortsBlockedForBind"));
+        ASSERT_NE(nullptr, getPortsBlockedForBind);
+        blockPortForBind = reinterpret_cast<BlockPortForBind>(
+                dlsym(nativeLib, "AConnectivityNative_blockPortForBind"));
+        ASSERT_NE(nullptr, blockPortForBind);
+        unblockPortForBind = reinterpret_cast<UnblockPortForBind>(
+                dlsym(nativeLib, "AConnectivityNative_unblockPortForBind"));
+        ASSERT_NE(nullptr, unblockPortForBind);
+        unblockAllPortsForBind = reinterpret_cast<UnblockAllPortsForBind>(
+                dlsym(nativeLib, "AConnectivityNative_unblockAllPortsForBind"));
+        ASSERT_NE(nullptr, unblockAllPortsForBind);
 
         // If there are already ports being blocked on device unblockAllPortsForBind() store
         // the currently blocked ports and add them back at the end of the test. Do this for
         // every test case so additional test cases do not forget to add ports back.
-        ndk::ScopedAStatus status = mService->getPortsBlockedForBind(&mActualBlockedPorts);
-        EXPECT_TRUE(status.isOk()) << status.getDescription ();
-
+        int err = getPortsBlockedForBind(mActualBlockedPorts, &mActualBlockedPortsCount);
+        EXPECT_EQ(err, 0);
+        restoreBlockedPorts = true;
     }
 
     void TearDown() override {
-        ndk::ScopedAStatus status;
-        if (mActualBlockedPorts.size() > 0) {
-            for (int i : mActualBlockedPorts) {
-                mService->blockPortForBind(i);
-                EXPECT_TRUE(status.isOk()) << status.getDescription ();
+        int err;
+        if (mActualBlockedPortsCount > 0 && restoreBlockedPorts) {
+            for (int i=0; i < mActualBlockedPortsCount; i++) {
+                err = blockPortForBind(mActualBlockedPorts[i]);
+                EXPECT_EQ(err, 0);
             }
         }
     }
 
   protected:
-    std::shared_ptr<IConnectivityNative> mService;
-
     void runSocketTest (sa_family_t family, const int type, bool blockPort) {
-        ndk::ScopedAStatus status;
+        int err;
         in_port_t port = 0;
         int sock, sock2;
         // Open two sockets with SO_REUSEADDR and expect they can both bind to port.
@@ -79,16 +98,16 @@
         int blockedPort = 0;
         if (blockPort) {
             blockedPort = ntohs(port);
-            status = mService->blockPortForBind(blockedPort);
-            EXPECT_TRUE(status.isOk()) << status.getDescription ();
+            err = blockPortForBind(blockedPort);
+            EXPECT_EQ(err, 0);
         }
 
         int sock3 = openSocket(&port, family, type, blockPort /* expectBindFail */);
 
         if (blockPort) {
             EXPECT_EQ(-1, sock3);
-            status = mService->unblockPortForBind(blockedPort);
-            EXPECT_TRUE(status.isOk()) << status.getDescription ();
+            err = unblockPortForBind(blockedPort);
+            EXPECT_EQ(err, 0);
         } else {
             EXPECT_NE(-1, sock3);
         }
@@ -177,110 +196,74 @@
 }
 
 TEST_F(ConnectivityNativeBinderTest, BlockPortTwice) {
-    ndk::ScopedAStatus status = mService->blockPortForBind(5555);
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
-    status = mService->blockPortForBind(5555);
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
-    status = mService->unblockPortForBind(5555);
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
+    int err = blockPortForBind(5555);
+    EXPECT_EQ(err, 0);
+    err = blockPortForBind(5555);
+    EXPECT_EQ(err, 0);
+    err = unblockPortForBind(5555);
+    EXPECT_EQ(err, 0);
 }
 
 TEST_F(ConnectivityNativeBinderTest, GetBlockedPorts) {
-    ndk::ScopedAStatus status;
-    std::vector<int> blockedPorts{1, 100, 1220, 1333, 2700, 5555, 5600, 65000};
-    for (int i : blockedPorts) {
-        status = mService->blockPortForBind(i);
-        EXPECT_TRUE(status.isOk()) << status.getDescription ();
+    int err;
+    in_port_t blockedPorts[8] = {1, 100, 1220, 1333, 2700, 5555, 5600, 65000};
+
+    if (mActualBlockedPortsCount > 0) {
+        err = unblockAllPortsForBind();
     }
-    std::vector<int32_t> actualBlockedPorts;
-    status = mService->getPortsBlockedForBind(&actualBlockedPorts);
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
-    EXPECT_FALSE(actualBlockedPorts.empty());
-    EXPECT_EQ(blockedPorts, actualBlockedPorts);
+
+    for (int i : blockedPorts) {
+        err = blockPortForBind(i);
+        EXPECT_EQ(err, 0);
+    }
+    size_t actualBlockedPortsCount = 8;
+    in_port_t actualBlockedPorts[actualBlockedPortsCount];
+    err = getPortsBlockedForBind((in_port_t*) actualBlockedPorts, &actualBlockedPortsCount);
+    EXPECT_EQ(err, 0);
+    EXPECT_NE(actualBlockedPortsCount, 0);
+    for (int i=0; i < actualBlockedPortsCount; i++) {
+        EXPECT_EQ(blockedPorts[i], actualBlockedPorts[i]);
+    }
 
     // Remove the ports we added.
-    status = mService->unblockAllPortsForBind();
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
-    status = mService->getPortsBlockedForBind(&actualBlockedPorts);
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
-    EXPECT_TRUE(actualBlockedPorts.empty());
+    err = unblockAllPortsForBind();
+    EXPECT_EQ(err, 0);
+    err = getPortsBlockedForBind(actualBlockedPorts, &actualBlockedPortsCount);
+    EXPECT_EQ(err, 0);
+    EXPECT_EQ(actualBlockedPortsCount, 0);
 }
 
 TEST_F(ConnectivityNativeBinderTest, UnblockAllPorts) {
-    ndk::ScopedAStatus status;
-    std::vector<int> blockedPorts{1, 100, 1220, 1333, 2700, 5555, 5600, 65000};
+    int err;
+    in_port_t blockedPorts[8] = {1, 100, 1220, 1333, 2700, 5555, 5600, 65000};
 
-    if (mActualBlockedPorts.size() > 0) {
-        status = mService->unblockAllPortsForBind();
+    if (mActualBlockedPortsCount > 0) {
+        err = unblockAllPortsForBind();
     }
 
     for (int i : blockedPorts) {
-        status = mService->blockPortForBind(i);
-        EXPECT_TRUE(status.isOk()) << status.getDescription ();
+        err = blockPortForBind(i);
+        EXPECT_EQ(err, 0);
     }
 
-    std::vector<int32_t> actualBlockedPorts;
-    status = mService->getPortsBlockedForBind(&actualBlockedPorts);
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
-    EXPECT_FALSE(actualBlockedPorts.empty());
+    size_t actualBlockedPortsCount = 8;
+    in_port_t actualBlockedPorts[actualBlockedPortsCount];
+    err = getPortsBlockedForBind((in_port_t*) actualBlockedPorts, &actualBlockedPortsCount);
+    EXPECT_EQ(err, 0);
+    EXPECT_EQ(actualBlockedPortsCount, 8);
 
-    status = mService->unblockAllPortsForBind();
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
-    status = mService->getPortsBlockedForBind(&actualBlockedPorts);
-    EXPECT_TRUE(status.isOk()) << status.getDescription ();
-    EXPECT_TRUE(actualBlockedPorts.empty());
+    err = unblockAllPortsForBind();
+    EXPECT_EQ(err, 0);
+    err = getPortsBlockedForBind((in_port_t*) actualBlockedPorts, &actualBlockedPortsCount);
+    EXPECT_EQ(err, 0);
+    EXPECT_EQ(actualBlockedPortsCount, 0);
     // If mActualBlockedPorts is not empty, ports will be added back in teardown.
 }
 
-TEST_F(ConnectivityNativeBinderTest, BlockNegativePort) {
-    int retry = 0;
-    ndk::ScopedAStatus status;
-    do {
-        status = mService->blockPortForBind(-1);
-        // TODO: find out why transaction failed is being thrown on the first attempt.
-    } while (status.getExceptionCode() == EX_TRANSACTION_FAILED && retry++ < 5);
-    EXPECT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode());
-}
-
-TEST_F(ConnectivityNativeBinderTest, UnblockNegativePort) {
-    int retry = 0;
-    ndk::ScopedAStatus status;
-    do {
-        status = mService->unblockPortForBind(-1);
-        // TODO: find out why transaction failed is being thrown on the first attempt.
-    } while (status.getExceptionCode() == EX_TRANSACTION_FAILED && retry++ < 5);
-    EXPECT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode());
-}
-
-TEST_F(ConnectivityNativeBinderTest, BlockMaxPort) {
-    int retry = 0;
-    ndk::ScopedAStatus status;
-    do {
-        status = mService->blockPortForBind(65536);
-        // TODO: find out why transaction failed is being thrown on the first attempt.
-    } while (status.getExceptionCode() == EX_TRANSACTION_FAILED && retry++ < 5);
-    EXPECT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode());
-}
-
-TEST_F(ConnectivityNativeBinderTest, UnblockMaxPort) {
-    int retry = 0;
-    ndk::ScopedAStatus status;
-    do {
-        status = mService->unblockPortForBind(65536);
-        // TODO: find out why transaction failed is being thrown on the first attempt.
-    } while (status.getExceptionCode() == EX_TRANSACTION_FAILED && retry++ < 5);
-    EXPECT_EQ(EX_ILLEGAL_ARGUMENT, status.getExceptionCode());
-}
-
 TEST_F(ConnectivityNativeBinderTest, CheckPermission) {
-    int retry = 0;
     int curUid = getuid();
     EXPECT_EQ(0, seteuid(FIRST_APPLICATION_UID + 2000)) << "seteuid failed: " << strerror(errno);
-    ndk::ScopedAStatus status;
-    do {
-        status = mService->blockPortForBind(5555);
-        // TODO: find out why transaction failed is being thrown on the first attempt.
-    } while (status.getExceptionCode() == EX_TRANSACTION_FAILED && retry++ < 5);
-    EXPECT_EQ(EX_SECURITY, status.getExceptionCode());
+    int err = blockPortForBind((in_port_t) 5555);
+    EXPECT_EQ(EPERM, err);
     EXPECT_EQ(0, seteuid(curUid)) << "seteuid failed: " << strerror(errno);
 }
diff --git a/tests/unit/java/android/net/IpSecAlgorithmTest.java b/tests/unit/java/android/net/IpSecAlgorithmTest.java
index 1482055..54ad961 100644
--- a/tests/unit/java/android/net/IpSecAlgorithmTest.java
+++ b/tests/unit/java/android/net/IpSecAlgorithmTest.java
@@ -27,6 +27,7 @@
 import android.content.res.Resources;
 import android.os.Build;
 import android.os.Parcel;
+import android.os.SystemProperties;
 
 import androidx.test.filters.SmallTest;
 
@@ -123,9 +124,7 @@
 
     @Test
     public void testValidationForAlgosAddedInS() throws Exception {
-        if (Build.VERSION.DEVICE_INITIAL_SDK_INT <= Build.VERSION_CODES.R) {
-            return;
-        }
+        if (SystemProperties.getInt("ro.vendor.api_level", 10000) <= Build.VERSION_CODES.R) return;
 
         for (int len : new int[] {160, 224, 288}) {
             checkCryptKeyLenValidation(IpSecAlgorithm.CRYPT_AES_CTR, len);
@@ -194,15 +193,17 @@
     }
 
     private static Set<String> getMandatoryAlgos() {
+        int vendorApiLevel = SystemProperties.getInt("ro.vendor.api_level", 10000);
         return CollectionUtils.filter(
                 ALGO_TO_REQUIRED_FIRST_SDK.keySet(),
-                i -> Build.VERSION.DEVICE_INITIAL_SDK_INT >= ALGO_TO_REQUIRED_FIRST_SDK.get(i));
+                i -> vendorApiLevel >= ALGO_TO_REQUIRED_FIRST_SDK.get(i));
     }
 
     private static Set<String> getOptionalAlgos() {
+        int vendorApiLevel = SystemProperties.getInt("ro.vendor.api_level", 10000);
         return CollectionUtils.filter(
                 ALGO_TO_REQUIRED_FIRST_SDK.keySet(),
-                i -> Build.VERSION.DEVICE_INITIAL_SDK_INT < ALGO_TO_REQUIRED_FIRST_SDK.get(i));
+                i -> vendorApiLevel < ALGO_TO_REQUIRED_FIRST_SDK.get(i));
     }
 
     @Test
diff --git a/tests/unit/java/com/android/server/ConnectivityServiceTest.java b/tests/unit/java/com/android/server/ConnectivityServiceTest.java
index 65e0b10..8c9917e 100755
--- a/tests/unit/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/unit/java/com/android/server/ConnectivityServiceTest.java
@@ -1606,9 +1606,9 @@
         mMockVpn = new MockVpn(userId);
     }
 
-    private void mockUidNetworkingBlocked(int uid) {
+    private void mockUidNetworkingBlocked() {
         doAnswer(i -> isUidBlocked(mBlockedReasons, i.getArgument(1))
-        ).when(mNetworkPolicyManager).isUidNetworkingBlocked(eq(uid), anyBoolean());
+        ).when(mNetworkPolicyManager).isUidNetworkingBlocked(anyInt(), anyBoolean());
     }
 
     private boolean isUidBlocked(int blockedReasons, boolean meteredNetwork) {
@@ -2689,7 +2689,7 @@
         final TestNetworkCallback generalCb = new TestNetworkCallback();
         final TestNetworkCallback defaultCb = new TestNetworkCallback();
         mCm.registerNetworkCallback(
-                new NetworkRequest.Builder().addTransportType(transport | transport).build(),
+                new NetworkRequest.Builder().addTransportType(transport).build(),
                 generalCb);
         mCm.registerDefaultNetworkCallback(defaultCb);
 
@@ -2944,7 +2944,8 @@
 
     @Test
     public void testRequiresValidation() {
-        assertTrue(NetworkMonitorUtils.isValidationRequired(false /* isVpnValidationRequired */,
+        assertTrue(NetworkMonitorUtils.isValidationRequired(false /* isDunValidationRequired */,
+                false /* isVpnValidationRequired */,
                 mCm.getDefaultRequest().networkCapabilities));
     }
 
@@ -3476,7 +3477,12 @@
             final int uid, final String packageName) throws Exception {
         doReturn(buildPackageInfo(true /* hasSystemPermission */, uid)).when(mPackageManager)
                 .getPackageInfo(eq(packageName), eq(GET_PERMISSIONS));
-        mService.mPermissionMonitor.onPackageAdded(packageName, uid);
+
+        // Send a broadcast indicating a package was installed.
+        final Intent addedIntent = new Intent(ACTION_PACKAGE_ADDED);
+        addedIntent.putExtra(Intent.EXTRA_UID, uid);
+        addedIntent.setData(Uri.parse("package:" + packageName));
+        processBroadcast(addedIntent);
     }
 
     @Test
@@ -4755,6 +4761,81 @@
         return new NetworkRequest.Builder().addTransportType(TRANSPORT_WIFI);
     }
 
+    // A NetworkSpecifier subclass that matches all networks but must not be visible to apps.
+    static class ConfidentialMatchAllNetworkSpecifier extends NetworkSpecifier implements
+            Parcelable {
+        public static final Parcelable.Creator<ConfidentialMatchAllNetworkSpecifier> CREATOR =
+                new Parcelable.Creator<ConfidentialMatchAllNetworkSpecifier>() {
+                    public ConfidentialMatchAllNetworkSpecifier createFromParcel(Parcel in) {
+                        return new ConfidentialMatchAllNetworkSpecifier();
+                    }
+
+                    public ConfidentialMatchAllNetworkSpecifier[] newArray(int size) {
+                        return new ConfidentialMatchAllNetworkSpecifier[size];
+                    }
+                };
+        @Override
+        public boolean canBeSatisfiedBy(NetworkSpecifier other) {
+            return true;
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {}
+
+        @Override
+        public NetworkSpecifier redact() {
+            return null;
+        }
+    }
+
+    // A network specifier that matches either another LocalNetworkSpecifier with the same
+    // string or a ConfidentialMatchAllNetworkSpecifier, and can be passed to apps as is.
+    static class LocalStringNetworkSpecifier extends NetworkSpecifier implements Parcelable {
+        public static final Parcelable.Creator<LocalStringNetworkSpecifier> CREATOR =
+                new Parcelable.Creator<LocalStringNetworkSpecifier>() {
+                    public LocalStringNetworkSpecifier createFromParcel(Parcel in) {
+                        return new LocalStringNetworkSpecifier(in);
+                    }
+
+                    public LocalStringNetworkSpecifier[] newArray(int size) {
+                        return new LocalStringNetworkSpecifier[size];
+                    }
+                };
+        private String mString;
+
+        LocalStringNetworkSpecifier(String string) {
+            mString = string;
+        }
+
+        LocalStringNetworkSpecifier(Parcel in) {
+            mString = in.readString();
+        }
+
+        @Override
+        public boolean canBeSatisfiedBy(NetworkSpecifier other) {
+            if (other instanceof LocalStringNetworkSpecifier) {
+                return TextUtils.equals(mString,
+                        ((LocalStringNetworkSpecifier) other).mString);
+            }
+            if (other instanceof ConfidentialMatchAllNetworkSpecifier) return true;
+            return false;
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeString(mString);
+        }
+    }
+
     /**
      * Verify request matching behavior with network specifiers.
      *
@@ -4764,56 +4845,6 @@
      */
     @Test
     public void testNetworkSpecifier() throws Exception {
-        // A NetworkSpecifier subclass that matches all networks but must not be visible to apps.
-        class ConfidentialMatchAllNetworkSpecifier extends NetworkSpecifier implements
-                Parcelable {
-            @Override
-            public boolean canBeSatisfiedBy(NetworkSpecifier other) {
-                return true;
-            }
-
-            @Override
-            public int describeContents() {
-                return 0;
-            }
-
-            @Override
-            public void writeToParcel(Parcel dest, int flags) {}
-
-            @Override
-            public NetworkSpecifier redact() {
-                return null;
-            }
-        }
-
-        // A network specifier that matches either another LocalNetworkSpecifier with the same
-        // string or a ConfidentialMatchAllNetworkSpecifier, and can be passed to apps as is.
-        class LocalStringNetworkSpecifier extends NetworkSpecifier implements Parcelable {
-            private String mString;
-
-            LocalStringNetworkSpecifier(String string) {
-                mString = string;
-            }
-
-            @Override
-            public boolean canBeSatisfiedBy(NetworkSpecifier other) {
-                if (other instanceof LocalStringNetworkSpecifier) {
-                    return TextUtils.equals(mString,
-                            ((LocalStringNetworkSpecifier) other).mString);
-                }
-                if (other instanceof ConfidentialMatchAllNetworkSpecifier) return true;
-                return false;
-            }
-
-            @Override
-            public int describeContents() {
-                return 0;
-            }
-            @Override
-            public void writeToParcel(Parcel dest, int flags) {}
-        }
-
-
         NetworkRequest rEmpty1 = newWifiRequestBuilder().build();
         NetworkRequest rEmpty2 = newWifiRequestBuilder().setNetworkSpecifier((String) null).build();
         NetworkRequest rEmpty3 = newWifiRequestBuilder().setNetworkSpecifier("").build();
@@ -4897,6 +4928,29 @@
         return mContext.getAttributionTag();
     }
 
+    static class NonParcelableSpecifier extends NetworkSpecifier {
+        @Override
+        public boolean canBeSatisfiedBy(NetworkSpecifier other) {
+            return false;
+        }
+    }
+    static class ParcelableSpecifier extends NonParcelableSpecifier implements Parcelable {
+        public static final Parcelable.Creator<NonParcelableSpecifier> CREATOR =
+                new Parcelable.Creator<NonParcelableSpecifier>() {
+                    public NonParcelableSpecifier createFromParcel(Parcel in) {
+                        return new NonParcelableSpecifier();
+                    }
+
+                    public NonParcelableSpecifier[] newArray(int size) {
+                        return new NonParcelableSpecifier[size];
+                    }
+                };
+        @Override public int describeContents() {
+            return 0;
+        }
+        @Override public void writeToParcel(Parcel p, int flags) {}
+    }
+
     @Test
     public void testInvalidNetworkSpecifier() {
         assertThrows(IllegalArgumentException.class, () -> {
@@ -4914,17 +4968,6 @@
                     mContext.getPackageName(), getAttributionTag());
         });
 
-        class NonParcelableSpecifier extends NetworkSpecifier {
-            @Override
-            public boolean canBeSatisfiedBy(NetworkSpecifier other) {
-                return false;
-            }
-        };
-        class ParcelableSpecifier extends NonParcelableSpecifier implements Parcelable {
-            @Override public int describeContents() { return 0; }
-            @Override public void writeToParcel(Parcel p, int flags) {}
-        }
-
         final NetworkRequest.Builder builder =
                 new NetworkRequest.Builder().addTransportType(TRANSPORT_ETHERNET);
         assertThrows(ClassCastException.class, () -> {
@@ -5138,9 +5181,10 @@
     }
 
     @Test
-    public void testRegisterPrivilegedDefaultCallbacksRequireNetworkSettings() throws Exception {
+    public void testRegisterPrivilegedDefaultCallbacksRequirePermissions() throws Exception {
         mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
         mCellNetworkAgent.connect(false /* validated */);
+        mServiceContext.setPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, PERMISSION_DENIED);
 
         final Handler handler = new Handler(ConnectivityThread.getInstanceLooper());
         final TestNetworkCallback callback = new TestNetworkCallback();
@@ -5151,6 +5195,12 @@
                 () -> mCm.registerDefaultNetworkCallbackForUid(APP1_UID, callback, handler));
         callback.assertNoCallback();
 
+        mServiceContext.setPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, PERMISSION_GRANTED);
+        mCm.registerSystemDefaultNetworkCallback(callback, handler);
+        mServiceContext.setPermission(CONNECTIVITY_USE_RESTRICTED_NETWORKS, PERMISSION_DENIED);
+        callback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent);
+        mCm.unregisterNetworkCallback(callback);
+
         mServiceContext.setPermission(NETWORK_SETTINGS, PERMISSION_GRANTED);
         mCm.registerSystemDefaultNetworkCallback(callback, handler);
         callback.expectAvailableCallbacksUnvalidated(mCellNetworkAgent);
@@ -7289,9 +7339,15 @@
         expectNotifyNetworkStatus(onlyCell(), onlyCell(), MOBILE_IFNAME);
         reset(mStatsManager);
 
-        // Temp metered change shouldn't update ifaces
+        // Temp metered change should update ifaces
         mCellNetworkAgent.addCapability(NET_CAPABILITY_TEMPORARILY_NOT_METERED);
         waitForIdle();
+        expectNotifyNetworkStatus(onlyCell(), onlyCell(), MOBILE_IFNAME);
+        reset(mStatsManager);
+
+        // Congested change shouldn't update ifaces
+        mCellNetworkAgent.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_CONGESTED);
+        waitForIdle();
         verify(mStatsManager, never()).notifyNetworkStatus(eq(onlyCell()),
                 any(List.class), eq(MOBILE_IFNAME), any(List.class));
         reset(mStatsManager);
@@ -8277,6 +8333,7 @@
         // VPN networks do not satisfy the default request and are automatically validated
         // by NetworkMonitor
         assertFalse(NetworkMonitorUtils.isValidationRequired(
+                false /* isDunValidationRequired */,
                 NetworkAgentConfigShimImpl.newInstance(mMockVpn.getNetworkAgentConfig())
                         .isVpnValidationRequired(),
                 mMockVpn.getAgent().getNetworkCapabilities()));
@@ -8429,6 +8486,7 @@
         assertTrue(nc.hasCapability(NET_CAPABILITY_INTERNET));
 
         assertFalse(NetworkMonitorUtils.isValidationRequired(
+                false /* isDunValidationRequired */,
                 NetworkAgentConfigShimImpl.newInstance(mMockVpn.getNetworkAgentConfig())
                         .isVpnValidationRequired(),
                 mMockVpn.getAgent().getNetworkCapabilities()));
@@ -9064,7 +9122,7 @@
         final DetailedBlockedStatusCallback detailedCallback = new DetailedBlockedStatusCallback();
         mCm.registerNetworkCallback(cellRequest, detailedCallback);
 
-        mockUidNetworkingBlocked(Process.myUid());
+        mockUidNetworkingBlocked();
 
         mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
         mCellNetworkAgent.connect(true);
@@ -9179,7 +9237,7 @@
     public void testNetworkBlockedStatusBeforeAndAfterConnect() throws Exception {
         final TestNetworkCallback defaultCallback = new TestNetworkCallback();
         mCm.registerDefaultNetworkCallback(defaultCallback);
-        mockUidNetworkingBlocked(Process.myUid());
+        mockUidNetworkingBlocked();
 
         // No Networkcallbacks invoked before any network is active.
         setBlockedReasonChanged(BLOCKED_REASON_BATTERY_SAVER);
@@ -16909,7 +16967,7 @@
         // Wi-Fi disconnecting (e.g., because the capability change to wifiNc2 caused it
         // to stop satisfying the default request).
         mCellNetworkAgent.disconnect();
-        mDefaultNetworkCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
+        mDefaultNetworkCallback.expect(CallbackEntry.LOST, mCellNetworkAgent);
         mDefaultNetworkCallback.expectAvailableCallbacksUnvalidated(mWiFiNetworkAgent);
 
     }
@@ -16985,43 +17043,4 @@
             verify(mTetheringManager).getTetherableWifiRegexs();
         });
     }
-
-    @Test
-    public void testGetNetworkInfoForUid() throws Exception {
-        // Setup and verify getNetworkInfoForUid cannot be called without Network Stack permission,
-        // when querying NetworkInfo for other uid.
-        verifyNoNetwork();
-        mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
-        mServiceContext.setPermission(NETWORK_STACK, PERMISSION_DENIED);
-        mServiceContext.setPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK,
-                PERMISSION_DENIED);
-
-        final int otherUid = Process.myUid() + 1;
-        assertNull(mCm.getActiveNetwork());
-        assertNull(mCm.getNetworkInfoForUid(mCm.getActiveNetwork(),
-                Process.myUid(), false /* ignoreBlocked */));
-        assertThrows(SecurityException.class, () -> mCm.getNetworkInfoForUid(
-                mCm.getActiveNetwork(), otherUid, false /* ignoreBlocked */));
-        withPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, () ->
-                assertNull(mCm.getNetworkInfoForUid(mCm.getActiveNetwork(),
-                        otherUid, false /* ignoreBlocked */)));
-
-        // Bringing up validated wifi and verify again. Make the other uid be blocked,
-        // verify the method returns result accordingly.
-        mWiFiNetworkAgent.connect(true);
-        setBlockedReasonChanged(BLOCKED_REASON_BATTERY_SAVER);
-        mockUidNetworkingBlocked(otherUid);
-        withPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, () ->
-                verifyActiveNetwork(TRANSPORT_WIFI));
-        checkNetworkInfo(mCm.getNetworkInfoForUid(mCm.getActiveNetwork(),
-                Process.myUid(), false /* ignoreBlocked */), TYPE_WIFI, DetailedState.CONNECTED);
-        assertThrows(SecurityException.class, () -> mCm.getNetworkInfoForUid(
-                mCm.getActiveNetwork(), otherUid, false /* ignoreBlocked */));
-        withPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, () ->
-                checkNetworkInfo(mCm.getNetworkInfoForUid(mCm.getActiveNetwork(),
-                        otherUid, false /* ignoreBlocked */), TYPE_WIFI, DetailedState.BLOCKED));
-        withPermission(NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK, () ->
-                checkNetworkInfo(mCm.getNetworkInfoForUid(mCm.getActiveNetwork(),
-                        otherUid, true /* ignoreBlocked */), TYPE_WIFI, DetailedState.CONNECTED));
-    }
 }
diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java
index 8d0ace5..02e00c2 100644
--- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java
+++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java
@@ -26,11 +26,14 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
 
+import android.net.InetAddresses;
+
 import com.android.net.module.util.HexDump;
 import com.android.testutils.DevSdkIgnoreRule;
 import com.android.testutils.DevSdkIgnoreRunner;
 
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -106,9 +109,49 @@
             + "63616C0000018001000000780004C0A8010A000001800100000078"
             + "0004C0A8010A00000000000000");
 
+    // Expected to contain two SRV records which point to the same hostname.
+    private static final byte[] matterDuplicateHostname = HexDump.hexStringToByteArray(
+            "00008000000000080000000A095F7365727669636573075F646E732D73"
+            + "64045F756470056C6F63616C00000C000100000078000F075F6D61"
+            + "74746572045F746370C023C00C000C000100000078001A125F4943"
+            + "324639453337374632454139463430045F737562C034C034000C00"
+            + "0100000078002421433246394533373746324541394634302D3030"
+            + "3030303030304534443041334641C034C04F000C00010000007800"
+            + "02C075C00C000C0001000000780002C034C00C000C000100000078"
+            + "0015125F4941413035363731333439334135343144C062C034000C"
+            + "000100000078002421414130353637313334393341353431442D30"
+            + "303030303030304331324446303344C034C0C1000C000100000078"
+            + "0002C0E2C075002100010000007800150000000015A40C33433631"
+            + "3035304338394638C023C07500100001000011940015084352493D"
+            + "35303030074352413D33303003543D31C126001C00010000007800"
+            + "10FE800000000000003E6105FFFE0C89F8C126001C000100000078"
+            + "00102605A601A84657003E6105FFFE0C89F8C12600010001000000"
+            + "780004C0A8018AC0E2002100010000007800080000000015A4C126"
+            + "C0E200100001000011940015084352493D35303030074352413D33"
+            + "303003543D31C126001C0001000000780010FE800000000000003E"
+            + "6105FFFE0C89F8C126001C00010000007800102605A601A8465700"
+            + "3E6105FFFE0C89F8C12600010001000000780004C0A8018A313035"
+            + "304338394638C02300010001000000780004C0A8018AC0A0001000"
+            + "0100001194003A0E56503D36353532312B3332373639084352493D"
+            + "35303030074352413D33303003543D3106443D3236353704434D3D"
+            + "320550483D33360350493D21433246394533373746324541394634"
+            + "302D30303030303030304534443041334641C0F700210001000000"
+            + "7800150000000015A40C334336313035304338394638C023214332"
+            + "46394533373746324541394634302D303030303030303045344430"
+            + "41334641C0F700100001000011940015084352493D353030300743"
+            + "52413D33303003543D310C334336313035304338394638C023001C"
+            + "0001000000780010FE800000000000003E6105FFFE0C89F80C3343"
+            + "36313035304338394638C023001C00010000007800102605A601A8"
+            + "4657003E6105FFFE0C89F80C334336313035304338394638C02300"
+            + "010001000000780004C0A8018A0000000000000000000000000000"
+            + "000000");
+
     private static final String CAST_SERVICE_NAME = "_googlecast";
     private static final String[] CAST_SERVICE_TYPE =
             new String[] {CAST_SERVICE_NAME, "_tcp", "local"};
+    private static final String MATTER_SERVICE_NAME = "_matter";
+    private static final String[] MATTER_SERVICE_TYPE =
+            new String[] {MATTER_SERVICE_NAME, "_tcp", "local"};
 
     private final List<MdnsResponse> responses = new LinkedList<>();
 
@@ -249,4 +292,62 @@
         assertEquals(responses.size(), 1);
         assertEquals(responses.get(0).getInterfaceIndex(), 10);
     }
+
+    @Test
+    public void decode_singleHostname_multipleSrvRecords_flagEnabled_multipleCompleteResponses() {
+        //MdnsScannerConfigsFlagsImpl.allowMultipleSrvRecordsPerHost.override(true);
+        MdnsResponseDecoder decoder = new MdnsResponseDecoder(mClock, MATTER_SERVICE_TYPE);
+        assertNotNull(matterDuplicateHostname);
+
+        DatagramPacket packet =
+                new DatagramPacket(matterDuplicateHostname, matterDuplicateHostname.length);
+
+        packet.setSocketAddress(
+                new InetSocketAddress(MdnsConstants.getMdnsIPv6Address(), MdnsConstants.MDNS_PORT));
+
+        responses.clear();
+        int errorCode = decoder.decode(packet, responses, /* interfaceIndex= */ 0);
+        assertEquals(MdnsResponseDecoder.SUCCESS, errorCode);
+
+        // This should emit two records:
+        assertEquals(2, responses.size());
+
+        MdnsResponse response1 = responses.get(0);
+        MdnsResponse response2 = responses.get(0);
+
+        // Both of which are complete:
+        assertTrue(response1.isComplete());
+        assertTrue(response2.isComplete());
+
+        // And should both have the same IPv6 address:
+        assertEquals(InetAddresses.parseNumericAddress("2605:a601:a846:5700:3e61:5ff:fe0c:89f8"),
+                response1.getInet6AddressRecord().getInet6Address());
+        assertEquals(InetAddresses.parseNumericAddress("2605:a601:a846:5700:3e61:5ff:fe0c:89f8"),
+                response2.getInet6AddressRecord().getInet6Address());
+    }
+
+    @Test
+    @Ignore("MdnsConfigs is not configurable currently.")
+    public void decode_singleHostname_multipleSrvRecords_flagDisabled_singleCompleteResponse() {
+        //MdnsScannerConfigsFlagsImpl.allowMultipleSrvRecordsPerHost.override(false);
+        MdnsResponseDecoder decoder = new MdnsResponseDecoder(mClock, MATTER_SERVICE_TYPE);
+        assertNotNull(matterDuplicateHostname);
+
+        DatagramPacket packet =
+                new DatagramPacket(matterDuplicateHostname, matterDuplicateHostname.length);
+
+        packet.setSocketAddress(
+                new InetSocketAddress(MdnsConstants.getMdnsIPv6Address(), MdnsConstants.MDNS_PORT));
+
+        responses.clear();
+        int errorCode = decoder.decode(packet, responses, /* interfaceIndex= */ 0);
+        assertEquals(MdnsResponseDecoder.SUCCESS, errorCode);
+
+        // This should emit only two records:
+        assertEquals(2, responses.size());
+
+        // But only the first is complete:
+        assertTrue(responses.get(0).isComplete());
+        assertFalse(responses.get(1).isComplete());
+    }
 }
\ No newline at end of file
diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketTests.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketTests.java
index 9f11a4b..73dbd38 100644
--- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketTests.java
+++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketTests.java
@@ -53,7 +53,7 @@
     private SocketAddress socketIPv4Address;
     private SocketAddress socketIPv6Address;
 
-    private byte[] data = new byte[25];
+    private final byte[] data = new byte[25];
     private final DatagramPacket datagramPacket = new DatagramPacket(data, data.length);
     private NetworkInterface networkInterface;
 
@@ -74,14 +74,8 @@
     }
 
     @Test
-    public void testMdnsSocket() throws IOException {
-        mdnsSocket =
-                new MdnsSocket(mockMulticastNetworkInterfaceProvider, MdnsConstants.MDNS_PORT) {
-                    @Override
-                    MulticastSocket createMulticastSocket(int port) throws IOException {
-                        return mockMulticastSocket;
-                    }
-                };
+    public void mdnsSocket_basicFunctionality() throws IOException {
+        mdnsSocket = new MdnsSocket(mockMulticastNetworkInterfaceProvider, mockMulticastSocket);
         mdnsSocket.send(datagramPacket);
         verify(mockMulticastSocket).setNetworkInterface(networkInterface);
         verify(mockMulticastSocket).send(datagramPacket);
@@ -100,20 +94,14 @@
     }
 
     @Test
-    public void testIPv6OnlyNetwork_IPv6Enabled() throws IOException {
+    public void ipv6OnlyNetwork_ipv6Enabled() throws IOException {
         // Have mockMulticastNetworkInterfaceProvider send back an IPv6Only networkInterfaceWrapper
         networkInterface = createEmptyNetworkInterface();
         when(mockNetworkInterfaceWrapper.getNetworkInterface()).thenReturn(networkInterface);
         when(mockMulticastNetworkInterfaceProvider.getMulticastNetworkInterfaces())
                 .thenReturn(Collections.singletonList(mockNetworkInterfaceWrapper));
 
-        mdnsSocket =
-                new MdnsSocket(mockMulticastNetworkInterfaceProvider, MdnsConstants.MDNS_PORT) {
-                    @Override
-                    MulticastSocket createMulticastSocket(int port) throws IOException {
-                        return mockMulticastSocket;
-                    }
-                };
+        mdnsSocket = new MdnsSocket(mockMulticastNetworkInterfaceProvider, mockMulticastSocket);
 
         when(mockMulticastNetworkInterfaceProvider.isOnIpV6OnlyNetwork(
                 Collections.singletonList(mockNetworkInterfaceWrapper)))
@@ -130,20 +118,14 @@
     }
 
     @Test
-    public void testIPv6OnlyNetwork_IPv6Toggle() throws IOException {
+    public void ipv6OnlyNetwork_ipv6Toggle() throws IOException {
         // Have mockMulticastNetworkInterfaceProvider send back a networkInterfaceWrapper
         networkInterface = createEmptyNetworkInterface();
         when(mockNetworkInterfaceWrapper.getNetworkInterface()).thenReturn(networkInterface);
         when(mockMulticastNetworkInterfaceProvider.getMulticastNetworkInterfaces())
                 .thenReturn(Collections.singletonList(mockNetworkInterfaceWrapper));
 
-        mdnsSocket =
-                new MdnsSocket(mockMulticastNetworkInterfaceProvider, MdnsConstants.MDNS_PORT) {
-                    @Override
-                    MulticastSocket createMulticastSocket(int port) throws IOException {
-                        return mockMulticastSocket;
-                    }
-                };
+        mdnsSocket = new MdnsSocket(mockMulticastNetworkInterfaceProvider, mockMulticastSocket);
 
         when(mockMulticastNetworkInterfaceProvider.isOnIpV6OnlyNetwork(
                 Collections.singletonList(mockNetworkInterfaceWrapper)))
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index 72674bd..529f53f 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -289,6 +289,7 @@
         "base/android_runtime_jni_headers/Runtime_jni.h",
     ],
     tool_files: [
+        "base/android/jni_generator/android_jar.classes",
         "base/android/jni_generator/jni_generator.py",
         "build/android/gyp/util/__init__.py",
         "build/android/gyp/util/build_utils.py",
@@ -859,11 +860,11 @@
         "cronet_aml_base_base_static",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
-        "cronet_aml_third_party_boringssl_boringssl",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
         "cronet_aml_third_party_modp_b64_modp_b64",
+        "libssl",
     ],
     generated_headers: [
         "cronet_aml_base_allocator_buildflags",
@@ -1229,6 +1230,7 @@
         "base/base_jni_headers/UnguessableToken_jni.h",
     ],
     tool_files: [
+        "base/android/jni_generator/android_jar.classes",
         "base/android/jni_generator/jni_generator.py",
         "build/android/gyp/util/__init__.py",
         "build/android/gyp/util/build_utils.py",
@@ -1391,405 +1393,6 @@
     ],
 }
 
-// GN: //base:jni_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_base_jni_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location build/android/build_java.build_config.json)\", \"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/base/jni_java.build_config.json " +
-         "--gn-target " +
-         "//base:jni_java " +
-         "--device-jar-path " +
-         "$(location base/jni_java.processed.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/base/jni_java.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location base/jni_java.processed.jar) " +
-         "--interface-jar-path " +
-         "$(location base/jni_java.turbine.jar) " +
-         "--dex-path " +
-         "obj/base/jni_java.dex.jar " +
-         "--supports-android " +
-         "--java-sources-file " +
-         "gen/base/jni_java.sources " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "base/jni_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //base:jni_java__compile_java
-genrule {
-    name: "cronet_aml_base_jni_java__compile_java",
-    srcs: [
-        "base/android/java/src/org/chromium/base/JniException.java",
-        "base/android/java/src/org/chromium/base/JniStaticTestMocker.java",
-        "base/android/java/src/org/chromium/base/NativeLibraryLoadedStatus.java",
-        "base/android/java/src/org/chromium/base/annotations/AccessedByNative.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNative.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNativeForTesting.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNativeUnchecked.java",
-        "base/android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java",
-        "base/android/java/src/org/chromium/base/annotations/JNINamespace.java",
-        "base/android/java/src/org/chromium/base/annotations/JniIgnoreNatives.java",
-        "base/android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java",
-        "base/android/java/src/org/chromium/base/annotations/NativeMethods.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/base/jni_java__compile_java.d " +
-         "--generated-dir " +
-         "gen/base/jni_java/generated_java " +
-         "--jar-path " +
-         "obj/base/jni_java.processed.jar " +
-         "--java-srcjars " +
-         "[\"gen/base/jni_java.generated.srcjar\"] " +
-         "--target-name " +
-         "//base:jni_java__compile_java " +
-         "--header-jar " +
-         "obj/base/jni_java.turbine.jar " +
-         "--classpath " +
-         "[\"obj/base/jni_java.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/base/jni_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "@gen/base/jni_java.sources",
-    out: [
-        "//out/test/obj/base/jni_java.processed.jar",
-        "//out/test/obj/base/jni_java.processed.jar.info",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/base/jni_java.build_config.json",
-        "out/test/gen/base/jni_java.generated.srcjar",
-        "out/test/gen/base/jni_java.sources",
-        "out/test/obj/base/jni_java.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //base:jni_java__dex
-genrule {
-    name: "cronet_aml_base_jni_java__dex",
-    cmd: "$(location build/android/gyp/dex.py) --depfile " +
-         "gen/base/jni_java__dex.d " +
-         "--output " +
-         "obj/base/jni_java.dex.jar " +
-         "--min-api " +
-         "19 " +
-         "--r8-jar-path " +
-         "../../third_party/r8/lib/r8.jar " +
-         "--custom-d8-jar-path " +
-         "../../third_party/r8/custom_d8.jar " +
-         "--incremental-dir " +
-         "obj/base/jni_java__dex " +
-         "--library " +
-         "--class-inputs " +
-         "[\"obj/base/jni_java.processed.jar\"] " +
-         "--desugar " +
-         "--desugar-jdk-libs-json " +
-         "../../third_party/r8/desugar_jdk_libs.json " +
-         "--show-desugar-default-interface-warnings " +
-         "--classpath " +
-         "obj/base/jni_java.processed.jar " +
-         "--desugar-dependencies " +
-         "gen/base/jni_java__dex.desugardeps " +
-         "--bootclasspath " +
-         "@FileArg(gen/base/jni_java.build_config.json:android:sdk_jars) " +
-         "--classpath " +
-         "@FileArg(gen/base/jni_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--force-enable-assertions",
-    out: [
-        "//out/test/obj/base/jni_java.dex.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/dex.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/zipalign.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/obj/base/jni_java.processed.jar",
-        "third_party/r8/custom_d8.jar",
-        "third_party/r8/d8/lib/r8.jar",
-        "third_party/r8/desugar_jdk_libs.json",
-    ],
-}
-
-// GN: //base:jni_java__errorprone
-genrule {
-    name: "cronet_aml_base_jni_java__errorprone",
-    srcs: [
-        "base/android/java/src/org/chromium/base/JniException.java",
-        "base/android/java/src/org/chromium/base/JniStaticTestMocker.java",
-        "base/android/java/src/org/chromium/base/NativeLibraryLoadedStatus.java",
-        "base/android/java/src/org/chromium/base/annotations/AccessedByNative.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNative.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNativeForTesting.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNativeUnchecked.java",
-        "base/android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java",
-        "base/android/java/src/org/chromium/base/annotations/JNINamespace.java",
-        "base/android/java/src/org/chromium/base/annotations/JniIgnoreNatives.java",
-        "base/android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java",
-        "base/android/java/src/org/chromium/base/annotations/NativeMethods.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/base/jni_java__errorprone.d " +
-         "--generated-dir " +
-         "gen/base/jni_java/generated_java " +
-         "--jar-path " +
-         "obj/base/jni_java__errorprone.errorprone.stamp " +
-         "--java-srcjars " +
-         "[\"gen/base/jni_java.generated.srcjar\"] " +
-         "--target-name " +
-         "//base:jni_java__errorprone " +
-         "--header-jar " +
-         "obj/base/jni_java.turbine.jar " +
-         "--classpath " +
-         "[\"obj/base/jni_java.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/base/jni_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "--processorpath " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:deps_info:host_classpath) " +
-         "--enable-errorprone " +
-         "@gen/base/jni_java.sources",
-    out: [
-        "//out/test/obj/base/jni_java__errorprone.errorprone.stamp",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/base/jni_java.build_config.json",
-        "out/test/gen/base/jni_java.generated.srcjar",
-        "out/test/gen/base/jni_java.sources",
-        "out/test/obj/base/jni_java.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //base:jni_java__header
-genrule {
-    name: "cronet_aml_base_jni_java__header",
-    srcs: [
-        "base/android/java/src/org/chromium/base/JniException.java",
-        "base/android/java/src/org/chromium/base/JniStaticTestMocker.java",
-        "base/android/java/src/org/chromium/base/NativeLibraryLoadedStatus.java",
-        "base/android/java/src/org/chromium/base/annotations/AccessedByNative.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNative.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNativeForTesting.java",
-        "base/android/java/src/org/chromium/base/annotations/CalledByNativeUnchecked.java",
-        "base/android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java",
-        "base/android/java/src/org/chromium/base/annotations/JNINamespace.java",
-        "base/android/java/src/org/chromium/base/annotations/JniIgnoreNatives.java",
-        "base/android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java",
-        "base/android/java/src/org/chromium/base/annotations/NativeMethods.java",
-    ],
-    cmd: "$(location build/android/gyp/turbine.py) --depfile " +
-         "gen/base/jni_java__header.d " +
-         "--generated-dir " +
-         "gen/base/jni_java/generated_java " +
-         "--jar-path " +
-         "obj/base/jni_java.turbine.jar " +
-         "--java-srcjars " +
-         "[] " +
-         "--target-name " +
-         "//base:jni_java__header " +
-         "--classpath " +
-         "@FileArg(gen/base/jni_java.build_config.json:javac:interface_classpath) " +
-         "--processorpath " +
-         "@FileArg(gen/base/jni_java.build_config.json:javac:processor_classpath) " +
-         "--processors " +
-         "@FileArg(gen/base/jni_java.build_config.json:javac:processor_classes) " +
-         "--turbine-jar-path " +
-         "../../third_party/turbine/turbine.jar " +
-         "--generated-jar-path " +
-         "gen/base/jni_java.generated.srcjar " +
-         "--chromium-code " +
-         "1 " +
-         "@gen/base/jni_java.sources",
-    out: [
-        "//out/test/obj/base/jni_java.turbine.jar",
-        "base/jni_java.generated.srcjar",
-    ],
-    tool_files: [
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/turbine.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "out/test/gen/base/jni_java.build_config.json",
-        "out/test/gen/base/jni_java.sources",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "third_party/turbine/turbine.jar",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //base:jni_java__host
-genrule {
-    name: "cronet_aml_base_jni_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "obj/base/jni_java.processed.jar " +
-         "--output " +
-         "lib.java/base/jni_java.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/base/jni_java.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/obj/base/jni_java.processed.jar",
-    ],
-}
-
-// GN: //base:jni_java__validate
-genrule {
-    name: "cronet_aml_base_jni_java__validate",
-    cmd: "$(location build/android/gyp/bytecode_processor.py) --target-name " +
-         "//base:jni_java__validate " +
-         "--script " +
-         "bin/helper/bytecode_processor " +
-         "--gn-target " +
-         "//base:jni_java " +
-         "--input-jar " +
-         "obj/base/jni_java.processed.jar " +
-         "--stamp " +
-         "obj/base/jni_java__validate.bytecode.stamp " +
-         "--direct-classpath-jars " +
-         "@FileArg(gen/base/jni_java.build_config.json:javac:classpath) " +
-         "--full-classpath-jars " +
-         "@FileArg(gen/base/jni_java.build_config.json:deps_info:javac_full_classpath) " +
-         "--full-classpath-gn-targets " +
-         "@FileArg(gen/base/jni_java.build_config.json:deps_info:javac_full_classpath_targets)",
-    out: [
-        "//out/test/obj/base/jni_java__validate.bytecode.stamp",
-    ],
-    tool_files: [
-        "build/android/gyp/bytecode_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/gn_helpers.py",
-        "out/test/bin/helper/bytecode_processor",
-        "out/test/gen/base/jni_java.build_config.json",
-        "out/test/obj/base/jni_java.processed.jar",
-    ],
-}
-
 // GN: //base:logging_buildflags
 genrule {
     name: "cronet_aml_base_logging_buildflags",
@@ -2032,6 +1635,131 @@
     cpp_std: "c++20",
 }
 
+// GN: //base/third_party/symbolize:symbolize
+cc_library_static {
+    name: "cronet_aml_base_third_party_symbolize_symbolize",
+    srcs: [
+        "base/third_party/symbolize/demangle.cc",
+        "base/third_party/symbolize/symbolize.cc",
+    ],
+    defaults: [
+        "cronet_aml_defaults",
+    ],
+    cflags: [
+        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
+        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
+        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
+        "-DDCHECK_ALWAYS_ON=1",
+        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+        "-DGLOG_EXPORT=",
+        "-DUSE_AURA=1",
+        "-DUSE_OZONE=1",
+        "-DUSE_UDEV",
+        "-D_DEBUG",
+        "-D_FILE_OFFSET_BITS=64",
+        "-D_GNU_SOURCE",
+        "-D_LARGEFILE64_SOURCE",
+        "-D_LARGEFILE_SOURCE",
+        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
+        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
+        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+    ],
+    local_include_dirs: [
+        "./",
+        "buildtools/third_party/libc++/",
+        "buildtools/third_party/libc++/trunk/include",
+        "buildtools/third_party/libc++abi/trunk/include",
+        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
+    ],
+    cpp_std: "c++20",
+}
+
+// GN: //base/third_party/xdg_mime:xdg_mime
+cc_library_static {
+    name: "cronet_aml_base_third_party_xdg_mime_xdg_mime",
+    srcs: [
+        "base/third_party/xdg_mime/xdgmime.c",
+        "base/third_party/xdg_mime/xdgmimealias.c",
+        "base/third_party/xdg_mime/xdgmimecache.c",
+        "base/third_party/xdg_mime/xdgmimeglob.c",
+        "base/third_party/xdg_mime/xdgmimeicon.c",
+        "base/third_party/xdg_mime/xdgmimeint.c",
+        "base/third_party/xdg_mime/xdgmimemagic.c",
+        "base/third_party/xdg_mime/xdgmimeparent.c",
+    ],
+    defaults: [
+        "cronet_aml_defaults",
+    ],
+    cflags: [
+        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
+        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
+        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
+        "-DDCHECK_ALWAYS_ON=1",
+        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+        "-DUSE_AURA=1",
+        "-DUSE_OZONE=1",
+        "-DUSE_UDEV",
+        "-D_DEBUG",
+        "-D_FILE_OFFSET_BITS=64",
+        "-D_GNU_SOURCE",
+        "-D_LARGEFILE64_SOURCE",
+        "-D_LARGEFILE_SOURCE",
+        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
+        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
+        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+    ],
+    local_include_dirs: [
+        "./",
+        "buildtools/third_party/libc++/",
+        "buildtools/third_party/libc++/trunk/include",
+        "buildtools/third_party/libc++abi/trunk/include",
+        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
+    ],
+    cpp_std: "c++20",
+}
+
+// GN: //base/third_party/xdg_user_dirs:xdg_user_dirs
+cc_library_static {
+    name: "cronet_aml_base_third_party_xdg_user_dirs_xdg_user_dirs",
+    srcs: [
+        "base/third_party/xdg_user_dirs/xdg_user_dir_lookup.cc",
+    ],
+    defaults: [
+        "cronet_aml_defaults",
+    ],
+    cflags: [
+        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
+        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
+        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
+        "-DDCHECK_ALWAYS_ON=1",
+        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+        "-DUSE_AURA=1",
+        "-DUSE_OZONE=1",
+        "-DUSE_UDEV",
+        "-D_DEBUG",
+        "-D_FILE_OFFSET_BITS=64",
+        "-D_GNU_SOURCE",
+        "-D_LARGEFILE64_SOURCE",
+        "-D_LARGEFILE_SOURCE",
+        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
+        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
+        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D__STDC_CONSTANT_MACROS",
+        "-D__STDC_FORMAT_MACROS",
+    ],
+    local_include_dirs: [
+        "./",
+        "buildtools/third_party/libc++/",
+        "buildtools/third_party/libc++/trunk/include",
+        "buildtools/third_party/libc++abi/trunk/include",
+        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
+    ],
+    cpp_std: "c++20",
+}
+
 // GN: //base:tracing_buildflags
 genrule {
     name: "cronet_aml_base_tracing_buildflags",
@@ -2052,826 +1780,6 @@
     ],
 }
 
-// GN: //build/android:build_config_gen
-genrule {
-    name: "cronet_aml_build_android_build_config_gen",
-    cmd: "$(location build/android/gyp/gcc_preprocess.py) --include-dirs " +
-         "[\"../../\", \"gen\"] " +
-         "--output " +
-         "gen/build/android/build_config_gen.srcjar " +
-         "--define " +
-         "_ENABLE_ASSERTS " +
-         "../../build/android/java/templates/BuildConfig.template",
-    out: [
-        "build/android/build_config_gen.srcjar",
-    ],
-    tool_files: [
-        "build/android/gyp/gcc_preprocess.py",
-        "build/android/java/templates/BuildConfig.template",
-    ],
-}
-
-// GN: //build/android:build_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_build_android_build_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/build/android/build_java.build_config.json " +
-         "--gn-target " +
-         "//build/android:build_java " +
-         "--device-jar-path " +
-         "$(location build/android/build_java.processed.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/build/android/build_java.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location build/android/build_java.javac.jar) " +
-         "--interface-jar-path " +
-         "$(location build/android/build_java.turbine.jar) " +
-         "--dex-path " +
-         "obj/build/android/build_java.dex.jar " +
-         "--supports-android " +
-         "--java-sources-file " +
-         "gen/build/android/build_java.sources " +
-         "--bundled-srcjars " +
-         "[\"$(location build/android/build_config_gen.srcjar)\", \"$(location build/android/native_libraries_gen.srcjar)\"] " +
-         "--proguard-configs " +
-         "[$(location build/android/chromium_annotations.flags)]",
-    out: [
-        "build/android/build_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/chromium_annotations.flags",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //build/android:build_java__compile_java
-genrule {
-    name: "cronet_aml_build_android_build_java__compile_java",
-    srcs: [
-        "build/android/java/src/org/chromium/build/annotations/AlwaysInline.java",
-        "build/android/java/src/org/chromium/build/annotations/CheckDiscard.java",
-        "build/android/java/src/org/chromium/build/annotations/DoNotClassMerge.java",
-        "build/android/java/src/org/chromium/build/annotations/DoNotInline.java",
-        "build/android/java/src/org/chromium/build/annotations/IdentifierNameString.java",
-        "build/android/java/src/org/chromium/build/annotations/MainDex.java",
-        "build/android/java/src/org/chromium/build/annotations/MockedInTests.java",
-        "build/android/java/src/org/chromium/build/annotations/UsedByReflection.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/build/android/build_java__compile_java.d " +
-         "--generated-dir " +
-         "gen/build/android/build_java/generated_java " +
-         "--jar-path " +
-         "obj/build/android/build_java.javac.jar " +
-         "--java-srcjars " +
-         "[\"gen/build/android/build_config_gen.srcjar\", \"gen/build/android/native_libraries_gen.srcjar\", \"gen/build/android/build_java.generated.srcjar\"] " +
-         "--target-name " +
-         "//build/android:build_java__compile_java " +
-         "--header-jar " +
-         "obj/build/android/build_java.turbine.jar " +
-         "--classpath " +
-         "[\"obj/build/android/build_java.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/build/android/build_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "--jar-info-exclude-globs " +
-         "[\"*/build/BuildConfig.class\", \"*/NativeLibraries.class\"] " +
-         "@gen/build/android/build_java.sources",
-    out: [
-        "//out/test/obj/build/android/build_java.javac.jar",
-        "//out/test/obj/build/android/build_java.javac.jar.info",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/build/android/build_config_gen.srcjar",
-        "out/test/gen/build/android/build_java.build_config.json",
-        "out/test/gen/build/android/build_java.generated.srcjar",
-        "out/test/gen/build/android/build_java.sources",
-        "out/test/gen/build/android/native_libraries_gen.srcjar",
-        "out/test/obj/build/android/build_java.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //build/android:build_java__dex
-genrule {
-    name: "cronet_aml_build_android_build_java__dex",
-    cmd: "$(location build/android/gyp/dex.py) --depfile " +
-         "gen/build/android/build_java__dex.d " +
-         "--output " +
-         "obj/build/android/build_java.dex.jar " +
-         "--min-api " +
-         "19 " +
-         "--r8-jar-path " +
-         "../../third_party/r8/lib/r8.jar " +
-         "--custom-d8-jar-path " +
-         "../../third_party/r8/custom_d8.jar " +
-         "--incremental-dir " +
-         "obj/build/android/build_java__dex " +
-         "--library " +
-         "--class-inputs " +
-         "[\"obj/build/android/build_java.processed.jar\"] " +
-         "--desugar " +
-         "--desugar-jdk-libs-json " +
-         "../../third_party/r8/desugar_jdk_libs.json " +
-         "--show-desugar-default-interface-warnings " +
-         "--classpath " +
-         "obj/build/android/build_java.javac.jar " +
-         "--desugar-dependencies " +
-         "gen/build/android/build_java__dex.desugardeps " +
-         "--bootclasspath " +
-         "@FileArg(gen/build/android/build_java.build_config.json:android:sdk_jars) " +
-         "--classpath " +
-         "@FileArg(gen/build/android/build_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--force-enable-assertions",
-    out: [
-        "//out/test/obj/build/android/build_java.dex.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/dex.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/zipalign.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/obj/build/android/build_java.javac.jar",
-        "out/test/obj/build/android/build_java.processed.jar",
-        "third_party/r8/custom_d8.jar",
-        "third_party/r8/d8/lib/r8.jar",
-        "third_party/r8/desugar_jdk_libs.json",
-    ],
-}
-
-// GN: //build/android:build_java__errorprone
-genrule {
-    name: "cronet_aml_build_android_build_java__errorprone",
-    srcs: [
-        "build/android/java/src/org/chromium/build/annotations/AlwaysInline.java",
-        "build/android/java/src/org/chromium/build/annotations/CheckDiscard.java",
-        "build/android/java/src/org/chromium/build/annotations/DoNotClassMerge.java",
-        "build/android/java/src/org/chromium/build/annotations/DoNotInline.java",
-        "build/android/java/src/org/chromium/build/annotations/IdentifierNameString.java",
-        "build/android/java/src/org/chromium/build/annotations/MainDex.java",
-        "build/android/java/src/org/chromium/build/annotations/MockedInTests.java",
-        "build/android/java/src/org/chromium/build/annotations/UsedByReflection.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/build/android/build_java__errorprone.d " +
-         "--generated-dir " +
-         "gen/build/android/build_java/generated_java " +
-         "--jar-path " +
-         "obj/build/android/build_java__errorprone.errorprone.stamp " +
-         "--java-srcjars " +
-         "[\"gen/build/android/build_java.generated.srcjar\"] " +
-         "--target-name " +
-         "//build/android:build_java__errorprone " +
-         "--header-jar " +
-         "obj/build/android/build_java.turbine.jar " +
-         "--classpath " +
-         "[\"obj/build/android/build_java.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/build/android/build_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "--jar-info-exclude-globs " +
-         "[\"*/build/BuildConfig.class\", \"*/NativeLibraries.class\"] " +
-         "--processorpath " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:deps_info:host_classpath) " +
-         "--enable-errorprone " +
-         "@gen/build/android/build_java.sources",
-    out: [
-        "//out/test/obj/build/android/build_java__errorprone.errorprone.stamp",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/build/android/build_java.build_config.json",
-        "out/test/gen/build/android/build_java.generated.srcjar",
-        "out/test/gen/build/android/build_java.sources",
-        "out/test/obj/build/android/build_java.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //build/android:build_java__header
-genrule {
-    name: "cronet_aml_build_android_build_java__header",
-    srcs: [
-        "build/android/java/src/org/chromium/build/annotations/AlwaysInline.java",
-        "build/android/java/src/org/chromium/build/annotations/CheckDiscard.java",
-        "build/android/java/src/org/chromium/build/annotations/DoNotClassMerge.java",
-        "build/android/java/src/org/chromium/build/annotations/DoNotInline.java",
-        "build/android/java/src/org/chromium/build/annotations/IdentifierNameString.java",
-        "build/android/java/src/org/chromium/build/annotations/MainDex.java",
-        "build/android/java/src/org/chromium/build/annotations/MockedInTests.java",
-        "build/android/java/src/org/chromium/build/annotations/UsedByReflection.java",
-    ],
-    cmd: "$(location build/android/gyp/turbine.py) --depfile " +
-         "gen/build/android/build_java__header.d " +
-         "--generated-dir " +
-         "gen/build/android/build_java/generated_java " +
-         "--jar-path " +
-         "obj/build/android/build_java.turbine.jar " +
-         "--java-srcjars " +
-         "[\"gen/build/android/build_config_gen.srcjar\", \"gen/build/android/native_libraries_gen.srcjar\"] " +
-         "--target-name " +
-         "//build/android:build_java__header " +
-         "--classpath " +
-         "@FileArg(gen/build/android/build_java.build_config.json:javac:interface_classpath) " +
-         "--processorpath " +
-         "@FileArg(gen/build/android/build_java.build_config.json:javac:processor_classpath) " +
-         "--processors " +
-         "@FileArg(gen/build/android/build_java.build_config.json:javac:processor_classes) " +
-         "--turbine-jar-path " +
-         "../../third_party/turbine/turbine.jar " +
-         "--generated-jar-path " +
-         "gen/build/android/build_java.generated.srcjar " +
-         "--chromium-code " +
-         "1 " +
-         "--jar-info-exclude-globs " +
-         "[\"*/build/BuildConfig.class\", \"*/NativeLibraries.class\"] " +
-         "@gen/build/android/build_java.sources",
-    out: [
-        "//out/test/obj/build/android/build_java.turbine.jar",
-        "build/android/build_java.generated.srcjar",
-    ],
-    tool_files: [
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/turbine.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "out/test/gen/build/android/build_config_gen.srcjar",
-        "out/test/gen/build/android/build_java.build_config.json",
-        "out/test/gen/build/android/build_java.sources",
-        "out/test/gen/build/android/native_libraries_gen.srcjar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "third_party/turbine/turbine.jar",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //build/android:build_java__host
-genrule {
-    name: "cronet_aml_build_android_build_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "obj/build/android/build_java.javac.jar " +
-         "--output " +
-         "lib.java/build/android/build_java.jar " +
-         "--exclude-globs " +
-         "[\"*/build/BuildConfig.class\", \"*/NativeLibraries.class\"] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/build/android/build_java.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/obj/build/android/build_java.javac.jar",
-    ],
-}
-
-// GN: //build/android:build_java__process_device
-genrule {
-    name: "cronet_aml_build_android_build_java__process_device",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "obj/build/android/build_java.javac.jar " +
-         "--output " +
-         "obj/build/android/build_java.processed.jar " +
-         "--exclude-globs " +
-         "[\"*/build/BuildConfig.class\", \"*/NativeLibraries.class\"] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/obj/build/android/build_java.processed.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/obj/build/android/build_java.javac.jar",
-    ],
-}
-
-// GN: //build/android:build_java__validate
-genrule {
-    name: "cronet_aml_build_android_build_java__validate",
-    cmd: "$(location build/android/gyp/bytecode_processor.py) --target-name " +
-         "//build/android:build_java__validate " +
-         "--script " +
-         "bin/helper/bytecode_processor " +
-         "--gn-target " +
-         "//build/android:build_java " +
-         "--input-jar " +
-         "obj/build/android/build_java.javac.jar " +
-         "--stamp " +
-         "obj/build/android/build_java__validate.bytecode.stamp " +
-         "--direct-classpath-jars " +
-         "@FileArg(gen/build/android/build_java.build_config.json:javac:classpath) " +
-         "--full-classpath-jars " +
-         "@FileArg(gen/build/android/build_java.build_config.json:deps_info:javac_full_classpath) " +
-         "--full-classpath-gn-targets " +
-         "@FileArg(gen/build/android/build_java.build_config.json:deps_info:javac_full_classpath_targets)",
-    out: [
-        "//out/test/obj/build/android/build_java__validate.bytecode.stamp",
-    ],
-    tool_files: [
-        "build/android/gyp/bytecode_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/gn_helpers.py",
-        "out/test/bin/helper/bytecode_processor",
-        "out/test/gen/build/android/build_java.build_config.json",
-        "out/test/obj/build/android/build_java.javac.jar",
-    ],
-}
-
-// GN: //build/android/bytecode:bytecode_processor__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_build_android_bytecode_bytecode_processor__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_binary " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location build/android/bytecode/bytecode_processor_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/build/android/bytecode/bytecode_processor.build_config.json " +
-         "--gn-target " +
-         "//build/android/bytecode:bytecode_processor " +
-         "--bundled-srcjars " +
-         "[] " +
-         "--main-class " +
-         "org.chromium.bytecode.ByteCodeProcessor",
-    out: [
-        "build/android/bytecode/bytecode_processor.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //build/android/bytecode:bytecode_processor__java_binary_script
-genrule {
-    name: "cronet_aml_build_android_bytecode_bytecode_processor__java_binary_script",
-    cmd: "$(location build/android/gyp/create_java_binary_script.py) --output " +
-         "bin/helper/bytecode_processor " +
-         "--main-class " +
-         "org.chromium.bytecode.ByteCodeProcessor " +
-         "--classpath " +
-         "@FileArg(gen/build/android/bytecode/bytecode_processor.build_config.json:deps_info:host_classpath) " +
-         "--noverify",
-    out: [
-        "//out/test/bin/helper/bytecode_processor",
-    ],
-    tool_files: [
-        "build/android/gyp/create_java_binary_script.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/gen/build/android/bytecode/bytecode_processor.build_config.json",
-    ],
-}
-
-// GN: //build/android/bytecode:bytecode_processor_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_build_android_bytecode_bytecode_processor_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/org_ow2_asm_asm_java.build_config.json)\", \"$(location third_party/android_deps/org_ow2_asm_asm_util_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/build/android/bytecode/bytecode_processor_java.build_config.json " +
-         "--gn-target " +
-         "//build/android/bytecode:bytecode_processor_java " +
-         "--host-jar-path " +
-         "$(location lib.java/build/android/bytecode/bytecode_processor_java.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location build/android/bytecode/bytecode_processor_java.javac.jar) " +
-         "--interface-jar-path " +
-         "$(location build/android/bytecode/bytecode_processor_java.turbine.jar) " +
-         "--java-sources-file " +
-         "gen/build/android/bytecode/bytecode_processor_java.sources " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "build/android/bytecode/bytecode_processor_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //build/android/bytecode:bytecode_processor_java__compile_java
-genrule {
-    name: "cronet_aml_build_android_bytecode_bytecode_processor_java__compile_java",
-    srcs: [
-        "build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java",
-        "build/android/bytecode/java/org/chromium/bytecode/ClassPathValidator.java",
-        "build/android/bytecode/java/org/chromium/bytecode/TypeUtils.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/build/android/bytecode/bytecode_processor_java__compile_java.d " +
-         "--generated-dir " +
-         "gen/build/android/bytecode/bytecode_processor_java/generated_java " +
-         "--jar-path " +
-         "obj/build/android/bytecode/bytecode_processor_java.javac.jar " +
-         "--java-srcjars " +
-         "[\"gen/build/android/bytecode/bytecode_processor_java.generated.srcjar\"] " +
-         "--target-name " +
-         "//build/android/bytecode:bytecode_processor_java__compile_java " +
-         "--header-jar " +
-         "obj/build/android/bytecode/bytecode_processor_java.turbine.jar " +
-         "--classpath " +
-         "[\"obj/build/android/bytecode/bytecode_processor_java.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/build/android/bytecode/bytecode_processor_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "@gen/build/android/bytecode/bytecode_processor_java.sources",
-    out: [
-        "//out/test/obj/build/android/bytecode/bytecode_processor_java.javac.jar",
-        "//out/test/obj/build/android/bytecode/bytecode_processor_java.javac.jar.info",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/build/android/bytecode/bytecode_processor_java.build_config.json",
-        "out/test/gen/build/android/bytecode/bytecode_processor_java.generated.srcjar",
-        "out/test/gen/build/android/bytecode/bytecode_processor_java.sources",
-        "out/test/obj/build/android/bytecode/bytecode_processor_java.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //build/android/bytecode:bytecode_processor_java__errorprone
-genrule {
-    name: "cronet_aml_build_android_bytecode_bytecode_processor_java__errorprone",
-    srcs: [
-        "build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java",
-        "build/android/bytecode/java/org/chromium/bytecode/ClassPathValidator.java",
-        "build/android/bytecode/java/org/chromium/bytecode/TypeUtils.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/build/android/bytecode/bytecode_processor_java__errorprone.d " +
-         "--generated-dir " +
-         "gen/build/android/bytecode/bytecode_processor_java/generated_java " +
-         "--jar-path " +
-         "obj/build/android/bytecode/bytecode_processor_java__errorprone.errorprone.stamp " +
-         "--java-srcjars " +
-         "[\"gen/build/android/bytecode/bytecode_processor_java.generated.srcjar\"] " +
-         "--target-name " +
-         "//build/android/bytecode:bytecode_processor_java__errorprone " +
-         "--header-jar " +
-         "obj/build/android/bytecode/bytecode_processor_java.turbine.jar " +
-         "--classpath " +
-         "[\"obj/build/android/bytecode/bytecode_processor_java.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/build/android/bytecode/bytecode_processor_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "--processorpath " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:deps_info:host_classpath) " +
-         "--enable-errorprone " +
-         "@gen/build/android/bytecode/bytecode_processor_java.sources",
-    out: [
-        "//out/test/obj/build/android/bytecode/bytecode_processor_java__errorprone.errorprone.stamp",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/build/android/bytecode/bytecode_processor_java.build_config.json",
-        "out/test/gen/build/android/bytecode/bytecode_processor_java.generated.srcjar",
-        "out/test/gen/build/android/bytecode/bytecode_processor_java.sources",
-        "out/test/obj/build/android/bytecode/bytecode_processor_java.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //build/android/bytecode:bytecode_processor_java__header
-genrule {
-    name: "cronet_aml_build_android_bytecode_bytecode_processor_java__header",
-    srcs: [
-        "build/android/bytecode/java/org/chromium/bytecode/ByteCodeProcessor.java",
-        "build/android/bytecode/java/org/chromium/bytecode/ClassPathValidator.java",
-        "build/android/bytecode/java/org/chromium/bytecode/TypeUtils.java",
-    ],
-    cmd: "$(location build/android/gyp/turbine.py) --depfile " +
-         "gen/build/android/bytecode/bytecode_processor_java__header.d " +
-         "--generated-dir " +
-         "gen/build/android/bytecode/bytecode_processor_java/generated_java " +
-         "--jar-path " +
-         "obj/build/android/bytecode/bytecode_processor_java.turbine.jar " +
-         "--java-srcjars " +
-         "[] " +
-         "--target-name " +
-         "//build/android/bytecode:bytecode_processor_java__header " +
-         "--classpath " +
-         "@FileArg(gen/build/android/bytecode/bytecode_processor_java.build_config.json:javac:interface_classpath) " +
-         "--processorpath " +
-         "@FileArg(gen/build/android/bytecode/bytecode_processor_java.build_config.json:javac:processor_classpath) " +
-         "--processors " +
-         "@FileArg(gen/build/android/bytecode/bytecode_processor_java.build_config.json:javac:processor_classes) " +
-         "--turbine-jar-path " +
-         "../../third_party/turbine/turbine.jar " +
-         "--generated-jar-path " +
-         "gen/build/android/bytecode/bytecode_processor_java.generated.srcjar " +
-         "--chromium-code " +
-         "1 " +
-         "@gen/build/android/bytecode/bytecode_processor_java.sources",
-    out: [
-        "//out/test/obj/build/android/bytecode/bytecode_processor_java.turbine.jar",
-        "build/android/bytecode/bytecode_processor_java.generated.srcjar",
-    ],
-    tool_files: [
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/turbine.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "out/test/gen/build/android/bytecode/bytecode_processor_java.build_config.json",
-        "out/test/gen/build/android/bytecode/bytecode_processor_java.sources",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "third_party/turbine/turbine.jar",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //build/android/bytecode:bytecode_processor_java__host
-genrule {
-    name: "cronet_aml_build_android_bytecode_bytecode_processor_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "obj/build/android/bytecode/bytecode_processor_java.javac.jar " +
-         "--output " +
-         "lib.java/build/android/bytecode/bytecode_processor_java.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/build/android/bytecode/bytecode_processor_java.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/obj/build/android/bytecode/bytecode_processor_java.javac.jar",
-    ],
-}
-
-// GN: //build/android:native_libraries_gen
-genrule {
-    name: "cronet_aml_build_android_native_libraries_gen",
-    cmd: "$(location build/android/gyp/write_native_libraries_java.py) --output " +
-         "gen/build/android/native_libraries_gen.srcjar " +
-         "--cpu-family " +
-         "CPU_FAMILY_X86",
-    out: [
-        "build/android/native_libraries_gen.srcjar",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/write_native_libraries_java.py",
-        "build/gn_helpers.py",
-    ],
-}
-
 // GN: //build:branding_buildflags
 genrule {
     name: "cronet_aml_build_branding_buildflags",
@@ -2960,11 +1868,588 @@
 // GN: //buildtools/third_party/libc++:libc++
 filegroup {
     name: "cronet_aml_buildtools_third_party_libc___libc__",
+    srcs: [
+        "buildtools/third_party/libc++/trunk/src/algorithm.cpp",
+        "buildtools/third_party/libc++/trunk/src/any.cpp",
+        "buildtools/third_party/libc++/trunk/src/atomic.cpp",
+        "buildtools/third_party/libc++/trunk/src/barrier.cpp",
+        "buildtools/third_party/libc++/trunk/src/bind.cpp",
+        "buildtools/third_party/libc++/trunk/src/charconv.cpp",
+        "buildtools/third_party/libc++/trunk/src/chrono.cpp",
+        "buildtools/third_party/libc++/trunk/src/condition_variable.cpp",
+        "buildtools/third_party/libc++/trunk/src/condition_variable_destructor.cpp",
+        "buildtools/third_party/libc++/trunk/src/exception.cpp",
+        "buildtools/third_party/libc++/trunk/src/format.cpp",
+        "buildtools/third_party/libc++/trunk/src/functional.cpp",
+        "buildtools/third_party/libc++/trunk/src/future.cpp",
+        "buildtools/third_party/libc++/trunk/src/hash.cpp",
+        "buildtools/third_party/libc++/trunk/src/ios.cpp",
+        "buildtools/third_party/libc++/trunk/src/ios.instantiations.cpp",
+        "buildtools/third_party/libc++/trunk/src/iostream.cpp",
+        "buildtools/third_party/libc++/trunk/src/legacy_pointer_safety.cpp",
+        "buildtools/third_party/libc++/trunk/src/locale.cpp",
+        "buildtools/third_party/libc++/trunk/src/memory.cpp",
+        "buildtools/third_party/libc++/trunk/src/mutex.cpp",
+        "buildtools/third_party/libc++/trunk/src/mutex_destructor.cpp",
+        "buildtools/third_party/libc++/trunk/src/new.cpp",
+        "buildtools/third_party/libc++/trunk/src/optional.cpp",
+        "buildtools/third_party/libc++/trunk/src/random.cpp",
+        "buildtools/third_party/libc++/trunk/src/random_shuffle.cpp",
+        "buildtools/third_party/libc++/trunk/src/regex.cpp",
+        "buildtools/third_party/libc++/trunk/src/ryu/d2fixed.cpp",
+        "buildtools/third_party/libc++/trunk/src/ryu/d2s.cpp",
+        "buildtools/third_party/libc++/trunk/src/ryu/f2s.cpp",
+        "buildtools/third_party/libc++/trunk/src/shared_mutex.cpp",
+        "buildtools/third_party/libc++/trunk/src/stdexcept.cpp",
+        "buildtools/third_party/libc++/trunk/src/string.cpp",
+        "buildtools/third_party/libc++/trunk/src/strstream.cpp",
+        "buildtools/third_party/libc++/trunk/src/system_error.cpp",
+        "buildtools/third_party/libc++/trunk/src/thread.cpp",
+        "buildtools/third_party/libc++/trunk/src/typeinfo.cpp",
+        "buildtools/third_party/libc++/trunk/src/utility.cpp",
+        "buildtools/third_party/libc++/trunk/src/valarray.cpp",
+        "buildtools/third_party/libc++/trunk/src/variant.cpp",
+        "buildtools/third_party/libc++/trunk/src/vector.cpp",
+        "buildtools/third_party/libc++/trunk/src/verbose_abort.cpp",
+    ],
 }
 
 // GN: //buildtools/third_party/libc++abi:libc++abi
 filegroup {
     name: "cronet_aml_buildtools_third_party_libc__abi_libc__abi",
+    srcs: [
+        "buildtools/third_party/libc++abi/cxa_demangle_stub.cc",
+        "buildtools/third_party/libc++abi/trunk/src/abort_message.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_aux_runtime.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_default_handlers.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_exception.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_exception_storage.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_guard.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_handlers.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_personality.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_thread_atexit.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_vector.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/cxa_virtual.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/fallback_malloc.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/private_typeinfo.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/stdlib_exception.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/stdlib_stdexcept.cpp",
+        "buildtools/third_party/libc++abi/trunk/src/stdlib_typeinfo.cpp",
+    ],
+}
+
+// GN: //buildtools/third_party/libunwind:libunwind
+filegroup {
+    name: "cronet_aml_buildtools_third_party_libunwind_libunwind",
+    srcs: [
+        "buildtools/third_party/libunwind/trunk/src/Unwind-EHABI.cpp",
+        "buildtools/third_party/libunwind/trunk/src/Unwind-sjlj.c",
+        "buildtools/third_party/libunwind/trunk/src/UnwindLevel1-gcc-ext.c",
+        "buildtools/third_party/libunwind/trunk/src/UnwindLevel1.c",
+        "buildtools/third_party/libunwind/trunk/src/UnwindRegistersRestore.S",
+        "buildtools/third_party/libunwind/trunk/src/UnwindRegistersSave.S",
+        "buildtools/third_party/libunwind/trunk/src/libunwind.cpp",
+    ],
+}
+
+// GN: //components/cronet/android:buildflags
+genrule {
+    name: "cronet_aml_components_cronet_android_buildflags",
+    cmd: "echo '--flags INTEGRATED_MODE=\"false\"' | " +
+         "$(location build/write_buildflag_header.py) --output " +
+         "$(out) " +
+         "--rulename " +
+         "//components/cronet/android:buildflags " +
+         "--gen-dir " +
+         ". " +
+         "--definitions " +
+         "/dev/stdin",
+    out: [
+        "components/cronet/android/buildflags.h",
+    ],
+    tool_files: [
+        "build/write_buildflag_header.py",
+    ],
+}
+
+// GN: //components/cronet/android:cronet
+cc_library_shared {
+    name: "cronet_aml_components_cronet_android_cronet",
+    srcs: [
+        ":cronet_aml_buildtools_third_party_libc___libc__",
+        ":cronet_aml_buildtools_third_party_libc__abi_libc__abi",
+        ":cronet_aml_buildtools_third_party_libunwind_libunwind",
+        ":cronet_aml_components_cronet_android_cronet_static",
+        ":cronet_aml_components_cronet_cronet_common",
+        ":cronet_aml_components_cronet_cronet_version_header",
+        ":cronet_aml_components_cronet_metrics_util",
+        ":cronet_aml_components_cronet_native_cronet_native_headers",
+        ":cronet_aml_components_cronet_native_cronet_native_impl",
+        ":cronet_aml_components_grpc_support_grpc_support",
+        ":cronet_aml_components_grpc_support_headers",
+        ":cronet_aml_components_metrics_library_support",
+        ":cronet_aml_third_party_metrics_proto_metrics_proto_gen",
+        "components/cronet/android/cronet_jni.cc",
+    ],
+    shared_libs: [
+        "libandroid",
+        "liblog",
+        "libprotobuf-cpp-lite",
+    ],
+    static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
+        "cronet_aml_base_base",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
+        "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_components_prefs_prefs",
+        "cronet_aml_net_net",
+        "cronet_aml_net_third_party_quiche_quiche",
+        "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
+        "cronet_aml_third_party_zlib_zlib",
+        "cronet_aml_url_url",
+        "libssl",
+    ],
+    generated_headers: [
+        "cronet_aml_base_debugging_buildflags",
+        "cronet_aml_base_logging_buildflags",
+        "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_components_cronet_android_buildflags",
+        "cronet_aml_components_cronet_android_cronet_jni_headers",
+        "cronet_aml_components_cronet_android_cronet_jni_registration",
+        "cronet_aml_components_cronet_cronet_buildflags",
+        "cronet_aml_components_cronet_cronet_version_header_action",
+        "cronet_aml_third_party_metrics_proto_metrics_proto_gen_headers",
+        "cronet_aml_url_buildflags",
+    ],
+    defaults: [
+        "cronet_aml_defaults",
+    ],
+    cflags: [
+        "-DANDROID",
+        "-DANDROID_NDK_VERSION_ROLL=r23_1",
+        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
+        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
+        "-DDCHECK_ALWAYS_ON=1",
+        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
+        "-DGOOGLE_PROTOBUF_NO_RTTI",
+        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
+        "-DHAVE_PTHREAD",
+        "-DHAVE_SYS_UIO_H",
+        "-DLIBCXXABI_SILENT_TERMINATE",
+        "-DLIBCXX_BUILDING_LIBCXXABI",
+        "-D_DEBUG",
+        "-D_GNU_SOURCE",
+        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
+        "-D_LIBCPP_BUILDING_LIBRARY",
+        "-D_LIBCPP_CONSTINIT=constinit",
+        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
+        "-D_LIBCPP_OVERRIDABLE_FUNC_VIS=__attribute__((__visibility__(\"default\")))",
+        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBUNWIND_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBUNWIND_IS_NATIVE_ONLY",
+        "-D__STDC_CONSTANT_MACROS",
+        "-D__STDC_FORMAT_MACROS",
+    ],
+    local_include_dirs: [
+        "./",
+        "buildtools/third_party/libc++/",
+        "buildtools/third_party/libc++/trunk/include",
+        "buildtools/third_party/libc++/trunk/src/",
+        "buildtools/third_party/libc++abi/trunk/include",
+        "buildtools/third_party/libunwind/trunk/include/",
+        "components/cronet/native/generated/",
+        "components/cronet/native/include/",
+        "components/grpc_support/include/",
+        "net/third_party/quiche/overrides/",
+        "net/third_party/quiche/src/",
+        "net/third_party/quiche/src/quiche/common/platform/default/",
+        "third_party/abseil-cpp/",
+        "third_party/boringssl/src/include/",
+        "third_party/zlib/",
+        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
+    ],
+    header_libs: [
+        "jni_headers",
+    ],
+    cpp_std: "c++20",
+    linker_scripts: [
+        "base/android/library_loader/anchor_functions.lds",
+    ],
+    cppflags: [
+        "-fexceptions",
+    ],
+    rtti: true,
+}
+
+// GN: //components/cronet/android:cronet_jni_headers
+genrule {
+    name: "cronet_aml_components_cronet_android_cronet_jni_headers",
+    srcs: [
+        "components/cronet/android/java/src/org/chromium/net/impl/CronetBidirectionalStream.java",
+        "components/cronet/android/java/src/org/chromium/net/impl/CronetLibraryLoader.java",
+        "components/cronet/android/java/src/org/chromium/net/impl/CronetUploadDataStream.java",
+        "components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java",
+        "components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java",
+    ],
+    cmd: "$(location base/android/jni_generator/jni_generator.py) --ptr_type " +
+         "long " +
+         " " +
+         " " +
+         "--output_dir " +
+         "$(genDir)/components/cronet/android/cronet_jni_headers " +
+         "--includes " +
+         "base/android/jni_generator/jni_generator_helper.h " +
+         "--use_proxy_hash " +
+         "--output_name " +
+         "CronetBidirectionalStream_jni.h " +
+         "--output_name " +
+         "CronetLibraryLoader_jni.h " +
+         "--output_name " +
+         "CronetUploadDataStream_jni.h " +
+         "--output_name " +
+         "CronetUrlRequest_jni.h " +
+         "--output_name " +
+         "CronetUrlRequestContext_jni.h " +
+         "--input_file " +
+         "$(location components/cronet/android/java/src/org/chromium/net/impl/CronetBidirectionalStream.java) " +
+         "--input_file " +
+         "$(location components/cronet/android/java/src/org/chromium/net/impl/CronetLibraryLoader.java) " +
+         "--input_file " +
+         "$(location components/cronet/android/java/src/org/chromium/net/impl/CronetUploadDataStream.java) " +
+         "--input_file " +
+         "$(location components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java) " +
+         "--input_file " +
+         "$(location components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java)",
+    out: [
+        "components/cronet/android/cronet_jni_headers/CronetBidirectionalStream_jni.h",
+        "components/cronet/android/cronet_jni_headers/CronetLibraryLoader_jni.h",
+        "components/cronet/android/cronet_jni_headers/CronetUploadDataStream_jni.h",
+        "components/cronet/android/cronet_jni_headers/CronetUrlRequestContext_jni.h",
+        "components/cronet/android/cronet_jni_headers/CronetUrlRequest_jni.h",
+    ],
+    tool_files: [
+        "base/android/jni_generator/android_jar.classes",
+        "base/android/jni_generator/jni_generator.py",
+        "build/android/gyp/util/__init__.py",
+        "build/android/gyp/util/build_utils.py",
+        "build/gn_helpers.py",
+    ],
+}
+
+// GN: //components/cronet/android:cronet_jni_registration
+genrule {
+    name: "cronet_aml_components_cronet_android_cronet_jni_registration",
+    srcs: [
+        "base/android/java/src/org/chromium/base/JniException.java",
+        "base/android/java/src/org/chromium/base/JniStaticTestMocker.java",
+        "base/android/java/src/org/chromium/base/NativeLibraryLoadedStatus.java",
+        "base/android/java/src/org/chromium/base/annotations/AccessedByNative.java",
+        "base/android/java/src/org/chromium/base/annotations/CalledByNative.java",
+        "base/android/java/src/org/chromium/base/annotations/CalledByNativeForTesting.java",
+        "base/android/java/src/org/chromium/base/annotations/CalledByNativeUnchecked.java",
+        "base/android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java",
+        "base/android/java/src/org/chromium/base/annotations/JNINamespace.java",
+        "base/android/java/src/org/chromium/base/annotations/JniIgnoreNatives.java",
+        "base/android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java",
+        "base/android/java/src/org/chromium/base/annotations/NativeMethods.java",
+        "build/android/java/src/org/chromium/build/annotations/AlwaysInline.java",
+        "build/android/java/src/org/chromium/build/annotations/CheckDiscard.java",
+        "build/android/java/src/org/chromium/build/annotations/DoNotClassMerge.java",
+        "build/android/java/src/org/chromium/build/annotations/DoNotInline.java",
+        "build/android/java/src/org/chromium/build/annotations/IdentifierNameString.java",
+        "build/android/java/src/org/chromium/build/annotations/MainDex.java",
+        "build/android/java/src/org/chromium/build/annotations/MockedInTests.java",
+        "build/android/java/src/org/chromium/build/annotations/UsedByReflection.java",
+        "components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java",
+        "url/android/java/src/org/chromium/url/IDNStringUtil.java",
+    ],
+    cmd: "current_dir=`basename \\`pwd\\``; " +
+         "for f in $(in); " +
+         "do " +
+         "echo \"../$$current_dir/$$f\" >> $(genDir)/java.sources; " +
+         "done; " +
+         "python3 $(location base/android/jni_generator/jni_registration_generator.py) --srcjar-path " +
+         "$(genDir)/components/cronet/android/cronet_jni_registration.srcjar " +
+         "--depfile " +
+         "$(genDir)/components/cronet/android/cronet_jni_registration.d " +
+         "--sources-files " +
+         "$(genDir)/java.sources " +
+         "--include_test_only " +
+         "--use_proxy_hash " +
+         "--header-path " +
+         "$(genDir)/components/cronet/android/cronet_jni_registration.h " +
+         "--manual_jni_registration " +
+         " " +
+         " " +
+         ";sed -i -e 's/OUT_SOONG_.TEMP_SBOX_.*_OUT/GEN/g'  " +
+         "$(genDir)/components/cronet/android/cronet_jni_registration.h",
+    out: [
+        "components/cronet/android/cronet_jni_registration.h",
+        "components/cronet/android/cronet_jni_registration.srcjar",
+    ],
+    tool_files: [
+        "base/android/jni_generator/jni_generator.py",
+        "base/android/jni_generator/jni_registration_generator.py",
+        "build/android/gyp/util/__init__.py",
+        "build/android/gyp/util/build_utils.py",
+        "build/gn_helpers.py",
+    ],
+}
+
+// GN: //components/cronet/android:cronet_static
+filegroup {
+    name: "cronet_aml_components_cronet_android_cronet_static",
+    srcs: [
+        "components/cronet/android/cronet_bidirectional_stream_adapter.cc",
+        "components/cronet/android/cronet_context_adapter.cc",
+        "components/cronet/android/cronet_library_loader.cc",
+        "components/cronet/android/cronet_upload_data_stream_adapter.cc",
+        "components/cronet/android/cronet_url_request_adapter.cc",
+        "components/cronet/android/io_buffer_with_byte_buffer.cc",
+        "components/cronet/android/url_request_error.cc",
+    ],
+}
+
+// GN: //components/cronet:cronet_buildflags
+genrule {
+    name: "cronet_aml_components_cronet_cronet_buildflags",
+    cmd: "echo '--flags DISABLE_HISTOGRAM_SUPPORT=\"false\"' | " +
+         "$(location build/write_buildflag_header.py) --output " +
+         "$(out) " +
+         "--rulename " +
+         "//components/cronet:cronet_buildflags " +
+         "--gen-dir " +
+         ". " +
+         "--definitions " +
+         "/dev/stdin",
+    out: [
+        "components/cronet/cronet_buildflags.h",
+    ],
+    tool_files: [
+        "build/write_buildflag_header.py",
+    ],
+}
+
+// GN: //components/cronet:cronet_common
+filegroup {
+    name: "cronet_aml_components_cronet_cronet_common",
+    srcs: [
+        "components/cronet/cronet_context.cc",
+        "components/cronet/cronet_prefs_manager.cc",
+        "components/cronet/cronet_upload_data_stream.cc",
+        "components/cronet/cronet_url_request.cc",
+        "components/cronet/host_cache_persistence_manager.cc",
+        "components/cronet/stale_host_resolver.cc",
+        "components/cronet/url_request_context_config.cc",
+    ],
+}
+
+// GN: //components/cronet:cronet_version_header
+filegroup {
+    name: "cronet_aml_components_cronet_cronet_version_header",
+}
+
+// GN: //components/cronet:cronet_version_header_action
+genrule {
+    name: "cronet_aml_components_cronet_cronet_version_header_action",
+    cmd: "$(location build/util/version.py) -f " +
+         "$(location chrome/VERSION) " +
+         "-e " +
+         "VERSION_FULL='\"%s.%s.%s.%s\" % (MAJOR,MINOR,BUILD,PATCH)' " +
+         " " +
+         "-o " +
+         "$(out) " +
+         "$(location components/cronet/version.h.in)",
+    out: [
+        "components/cronet/version.h",
+    ],
+    tool_files: [
+        "build/util/LASTCHANGE",
+        "build/util/android_chrome_version.py",
+        "build/util/version.py",
+        "chrome/VERSION",
+        "components/cronet/version.h.in",
+    ],
+}
+
+// GN: //components/cronet:metrics_util
+filegroup {
+    name: "cronet_aml_components_cronet_metrics_util",
+    srcs: [
+        "components/cronet/metrics_util.cc",
+    ],
+}
+
+// GN: //components/cronet/native:cronet_native_headers
+filegroup {
+    name: "cronet_aml_components_cronet_native_cronet_native_headers",
+}
+
+// GN: //components/cronet/native:cronet_native_impl
+filegroup {
+    name: "cronet_aml_components_cronet_native_cronet_native_impl",
+    srcs: [
+        "components/cronet/native/buffer.cc",
+        "components/cronet/native/engine.cc",
+        "components/cronet/native/generated/cronet.idl_impl_interface.cc",
+        "components/cronet/native/generated/cronet.idl_impl_struct.cc",
+        "components/cronet/native/io_buffer_with_cronet_buffer.cc",
+        "components/cronet/native/native_metrics_util.cc",
+        "components/cronet/native/runnables.cc",
+        "components/cronet/native/upload_data_sink.cc",
+        "components/cronet/native/url_request.cc",
+    ],
+}
+
+// GN: //components/grpc_support:grpc_support
+filegroup {
+    name: "cronet_aml_components_grpc_support_grpc_support",
+    srcs: [
+        "components/grpc_support/bidirectional_stream.cc",
+        "components/grpc_support/bidirectional_stream_c.cc",
+    ],
+}
+
+// GN: //components/grpc_support:headers
+filegroup {
+    name: "cronet_aml_components_grpc_support_headers",
+}
+
+// GN: //components/metrics:library_support
+filegroup {
+    name: "cronet_aml_components_metrics_library_support",
+    srcs: [
+        "components/metrics/histogram_encoder.cc",
+        "components/metrics/library_support/histogram_manager.cc",
+    ],
+}
+
+// GN: //components/prefs/android:jni_headers
+genrule {
+    name: "cronet_aml_components_prefs_android_jni_headers",
+    srcs: [
+        "components/prefs/android/java/src/org/chromium/components/prefs/PrefService.java",
+    ],
+    cmd: "$(location base/android/jni_generator/jni_generator.py) --ptr_type " +
+         "long " +
+         " " +
+         " " +
+         "--output_dir " +
+         "$(genDir)/components/prefs/android/jni_headers " +
+         "--includes " +
+         "base/android/jni_generator/jni_generator_helper.h " +
+         "--use_proxy_hash " +
+         "--output_name " +
+         "PrefService_jni.h " +
+         "--input_file " +
+         "$(location components/prefs/android/java/src/org/chromium/components/prefs/PrefService.java)",
+    out: [
+        "components/prefs/android/jni_headers/PrefService_jni.h",
+    ],
+    tool_files: [
+        "base/android/jni_generator/android_jar.classes",
+        "base/android/jni_generator/jni_generator.py",
+        "build/android/gyp/util/__init__.py",
+        "build/android/gyp/util/build_utils.py",
+        "build/gn_helpers.py",
+    ],
+}
+
+// GN: //components/prefs:prefs
+cc_library_static {
+    name: "cronet_aml_components_prefs_prefs",
+    srcs: [
+        "components/prefs/android/pref_service_android.cc",
+        "components/prefs/command_line_pref_store.cc",
+        "components/prefs/default_pref_store.cc",
+        "components/prefs/in_memory_pref_store.cc",
+        "components/prefs/json_pref_store.cc",
+        "components/prefs/overlay_user_pref_store.cc",
+        "components/prefs/persistent_pref_store.cc",
+        "components/prefs/pref_change_registrar.cc",
+        "components/prefs/pref_member.cc",
+        "components/prefs/pref_notifier_impl.cc",
+        "components/prefs/pref_registry.cc",
+        "components/prefs/pref_registry_simple.cc",
+        "components/prefs/pref_service.cc",
+        "components/prefs/pref_service_factory.cc",
+        "components/prefs/pref_store.cc",
+        "components/prefs/pref_value_map.cc",
+        "components/prefs/pref_value_store.cc",
+        "components/prefs/scoped_user_pref_update.cc",
+        "components/prefs/segregated_pref_store.cc",
+        "components/prefs/value_map_pref_store.cc",
+        "components/prefs/writeable_pref_store.cc",
+    ],
+    shared_libs: [
+        "libandroid",
+        "liblog",
+    ],
+    static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
+        "cronet_aml_base_base",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
+        "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
+        "libssl",
+    ],
+    generated_headers: [
+        "cronet_aml_base_debugging_buildflags",
+        "cronet_aml_base_logging_buildflags",
+        "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_components_prefs_android_jni_headers",
+    ],
+    export_generated_headers: [
+        "cronet_aml_base_debugging_buildflags",
+        "cronet_aml_base_logging_buildflags",
+        "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_components_prefs_android_jni_headers",
+    ],
+    defaults: [
+        "cronet_aml_defaults",
+    ],
+    cflags: [
+        "-DANDROID",
+        "-DANDROID_NDK_VERSION_ROLL=r23_1",
+        "-DCOMPONENTS_PREFS_IMPLEMENTATION",
+        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
+        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
+        "-DDCHECK_ALWAYS_ON=1",
+        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+        "-DHAVE_SYS_UIO_H",
+        "-D_DEBUG",
+        "-D_GNU_SOURCE",
+        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
+        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
+        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D__STDC_CONSTANT_MACROS",
+        "-D__STDC_FORMAT_MACROS",
+    ],
+    local_include_dirs: [
+        "./",
+        "buildtools/third_party/libc++/",
+        "buildtools/third_party/libc++/trunk/include",
+        "buildtools/third_party/libc++abi/trunk/include",
+        "third_party/abseil-cpp/",
+        "third_party/boringssl/src/include/",
+        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
+    ],
+    header_libs: [
+        "jni_headers",
+    ],
+    cpp_std: "c++20",
 }
 
 // GN: //crypto:buildflags
@@ -3016,9 +2501,16 @@
         "liblog",
     ],
     static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
-        "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
+        "libssl",
     ],
     generated_headers: [
         "cronet_aml_crypto_buildflags",
@@ -3063,8 +2555,11 @@
 cc_defaults {
     name: "cronet_aml_defaults",
     cflags: [
+        "-DGOOGLE_PROTOBUF_NO_RTTI",
         "-O2",
+        "-Wno-deprecated-non-prototype",
         "-Wno-error=return-type",
+        "-Wno-macro-redefined",
         "-Wno-missing-field-initializers",
         "-Wno-non-virtual-dtor",
         "-Wno-sign-compare",
@@ -3080,6 +2575,85 @@
     name: "cronet_aml_ipc_param_traits",
 }
 
+// GN: //gn:java
+java_library {
+    name: "cronet_aml_java",
+    srcs: [
+        "base/android/java/src/org/chromium/base/JniException.java",
+        "base/android/java/src/org/chromium/base/JniStaticTestMocker.java",
+        "base/android/java/src/org/chromium/base/NativeLibraryLoadedStatus.java",
+        "base/android/java/src/org/chromium/base/annotations/AccessedByNative.java",
+        "base/android/java/src/org/chromium/base/annotations/CalledByNative.java",
+        "base/android/java/src/org/chromium/base/annotations/CalledByNativeForTesting.java",
+        "base/android/java/src/org/chromium/base/annotations/CalledByNativeUnchecked.java",
+        "base/android/java/src/org/chromium/base/annotations/JNIAdditionalImport.java",
+        "base/android/java/src/org/chromium/base/annotations/JNINamespace.java",
+        "base/android/java/src/org/chromium/base/annotations/JniIgnoreNatives.java",
+        "base/android/java/src/org/chromium/base/annotations/NativeClassQualifiedName.java",
+        "base/android/java/src/org/chromium/base/annotations/NativeMethods.java",
+        "build/android/java/src/org/chromium/build/annotations/AlwaysInline.java",
+        "build/android/java/src/org/chromium/build/annotations/CheckDiscard.java",
+        "build/android/java/src/org/chromium/build/annotations/DoNotClassMerge.java",
+        "build/android/java/src/org/chromium/build/annotations/DoNotInline.java",
+        "build/android/java/src/org/chromium/build/annotations/IdentifierNameString.java",
+        "build/android/java/src/org/chromium/build/annotations/MainDex.java",
+        "build/android/java/src/org/chromium/build/annotations/MockedInTests.java",
+        "build/android/java/src/org/chromium/build/annotations/UsedByReflection.java",
+        "url/android/java/src/org/chromium/url/IDNStringUtil.java",
+    ],
+}
+
+// GN: //net/base/registry_controlled_domains:registry_controlled_domains
+genrule {
+    name: "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains",
+    cmd: "$(location net/tools/dafsa/make_dafsa.py) --reverse " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names.gperf) " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names-reversed-inc.cc) " +
+         "&& python3 $(location net/tools/dafsa/make_dafsa.py) " +
+         "--reverse " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest1.gperf) " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest1-reversed-inc.cc) " +
+         "&& python3 $(location net/tools/dafsa/make_dafsa.py) " +
+         "--reverse " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest2.gperf) " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest2-reversed-inc.cc) " +
+         "&& python3 $(location net/tools/dafsa/make_dafsa.py) " +
+         "--reverse " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest3.gperf) " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest3-reversed-inc.cc) " +
+         "&& python3 $(location net/tools/dafsa/make_dafsa.py) " +
+         "--reverse " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest4.gperf) " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest4-reversed-inc.cc) " +
+         "&& python3 $(location net/tools/dafsa/make_dafsa.py) " +
+         "--reverse " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest5.gperf) " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest5-reversed-inc.cc) " +
+         "&& python3 $(location net/tools/dafsa/make_dafsa.py) " +
+         "--reverse " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest6.gperf) " +
+         "$(location net/base/registry_controlled_domains/effective_tld_names_unittest6-reversed-inc.cc)",
+    out: [
+        "net/base/registry_controlled_domains/effective_tld_names-reversed-inc.cc",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest1-reversed-inc.cc",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest2-reversed-inc.cc",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest3-reversed-inc.cc",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest4-reversed-inc.cc",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest5-reversed-inc.cc",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest6-reversed-inc.cc",
+    ],
+    tool_files: [
+        "net/base/registry_controlled_domains/effective_tld_names.gperf",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest1.gperf",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest2.gperf",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest3.gperf",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest4.gperf",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest5.gperf",
+        "net/base/registry_controlled_domains/effective_tld_names_unittest6.gperf",
+        "net/tools/dafsa/make_dafsa.py",
+    ],
+}
+
 // GN: //net:buildflags
 genrule {
     name: "cronet_aml_net_buildflags",
@@ -3101,75 +2675,37 @@
 }
 
 // GN: //net/cert:root_store_proto_full
-cc_library_static {
-    name: "cronet_aml_net_cert_root_store_proto_full",
-    srcs: [
-        "out/test/clang_x64/gen/net/cert/root_store_proto_full/root_store.pb.cc",
-    ],
-    static_libs: [
-        "cronet_aml_third_party_protobuf_protobuf_full",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DUSE_AURA=1",
-        "-DUSE_OZONE=1",
-        "-DUSE_UDEV",
-        "-D_DEBUG",
-        "-D_FILE_OFFSET_BITS=64",
-        "-D_GNU_SOURCE",
-        "-D_LARGEFILE64_SOURCE",
-        "-D_LARGEFILE_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D__STDC_CONSTANT_MACROS",
-        "-D__STDC_FORMAT_MACROS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/protobuf/src/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //net/cert:root_store_proto_full_gen
 genrule {
     name: "cronet_aml_net_cert_root_store_proto_full_gen",
     srcs: [
         "net/cert/root_store.proto",
     ],
-    cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) root_store.proto " +
-         "--protoc " +
-         "./clang_x64/protoc " +
-         "--proto-in-dir " +
-         "../../net/cert " +
-         "--cc-out-dir " +
-         "clang_x64/gen/net/cert/root_store_proto_full/ " +
-         "--py-out-dir " +
-         "clang_x64/pyproto/net/cert/root_store_proto_full/",
-    out: [
-        "//out/test/clang_x64/pyproto/net/cert/root_store_proto_full/root_store_pb2.py",
-        "net/cert/root_store_proto_full/root_store.pb.cc",
-        "net/cert/root_store_proto_full/root_store.pb.h",
+    tools: [
+        "aprotoc",
     ],
-    tool_files: [
-        "tools/protoc_wrapper/protoc_wrapper.py",
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/cert --cpp_out=lite=true:$(genDir)/external/chromium_org/net/cert/ $(in)",
+    out: [
+        "external/chromium_org/net/cert/root_store.pb.cc",
+    ],
+}
+
+// GN: //net/cert:root_store_proto_full
+genrule {
+    name: "cronet_aml_net_cert_root_store_proto_full_gen_headers",
+    srcs: [
+        "net/cert/root_store.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/cert --cpp_out=lite=true:$(genDir)/external/chromium_org/net/cert/ $(in)",
+    out: [
+        "external/chromium_org/net/cert/root_store.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "net/cert",
+        "protos",
     ],
 }
 
@@ -3309,74 +2845,37 @@
 }
 
 // GN: //net:isolation_info_proto
-cc_library_static {
-    name: "cronet_aml_net_isolation_info_proto",
-    srcs: [
-        "out/test/gen/net/base/isolation_info.pb.cc",
-    ],
-    shared_libs: [
-        "liblog",
-    ],
-    static_libs: [
-        "cronet_aml_third_party_protobuf_protobuf_lite",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DANDROID",
-        "-DANDROID_NDK_VERSION_ROLL=r23_1",
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DHAVE_SYS_UIO_H",
-        "-D_DEBUG",
-        "-D_GNU_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D__STDC_CONSTANT_MACROS",
-        "-D__STDC_FORMAT_MACROS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/protobuf/src/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //net:isolation_info_proto_gen
 genrule {
     name: "cronet_aml_net_isolation_info_proto_gen",
     srcs: [
         "net/base/isolation_info.proto",
     ],
-    cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) isolation_info.proto " +
-         "--protoc " +
-         "./clang_x64/protoc " +
-         "--proto-in-dir " +
-         "../../net/base " +
-         "--cc-out-dir " +
-         "gen/net/base " +
-         "--py-out-dir " +
-         "pyproto/net/base",
-    out: [
-        "//out/test/pyproto/net/base/isolation_info_pb2.py",
-        "net/base/isolation_info.pb.cc",
-        "net/base/isolation_info.pb.h",
+    tools: [
+        "aprotoc",
     ],
-    tool_files: [
-        "tools/protoc_wrapper/protoc_wrapper.py",
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/base --cpp_out=lite=true:$(genDir)/external/chromium_org/net/base/ $(in)",
+    out: [
+        "external/chromium_org/net/base/isolation_info.pb.cc",
+    ],
+}
+
+// GN: //net:isolation_info_proto
+genrule {
+    name: "cronet_aml_net_isolation_info_proto_gen_headers",
+    srcs: [
+        "net/base/isolation_info.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/base --cpp_out=lite=true:$(genDir)/external/chromium_org/net/base/ $(in)",
+    out: [
+        "external/chromium_org/net/base/isolation_info.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "net/base",
+        "protos",
     ],
 }
 
@@ -3392,10 +2891,12 @@
         ":cronet_aml_net_dns_mdns_client",
         ":cronet_aml_net_dns_public_public",
         ":cronet_aml_net_http_transport_security_state_generated_files",
+        ":cronet_aml_net_isolation_info_proto_gen",
         ":cronet_aml_net_net_deps",
         ":cronet_aml_net_net_export_header",
+        ":cronet_aml_net_net_nqe_proto_gen",
         ":cronet_aml_net_net_public_deps",
-        ":cronet_aml_net_net_resources",
+        ":cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen",
         ":cronet_aml_net_traffic_annotation_traffic_annotation",
         "net/android/android_http_util.cc",
         "net/android/cert_verify_result_android.cc",
@@ -3884,33 +3385,40 @@
     shared_libs: [
         "libandroid",
         "liblog",
+        "libprotobuf-cpp-lite",
     ],
     static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
         "cronet_aml_crypto_crypto",
-        "cronet_aml_net_isolation_info_proto",
-        "cronet_aml_net_net_nqe_proto",
         "cronet_aml_net_preload_decoder",
-        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto",
         "cronet_aml_net_third_party_quiche_quiche",
         "cronet_aml_net_uri_template",
-        "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
-        "cronet_aml_third_party_protobuf_protobuf_lite",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
         "cronet_aml_third_party_zlib_zlib",
         "cronet_aml_url_url",
+        "libssl",
     ],
     generated_headers: [
         "cronet_aml_base_debugging_buildflags",
         "cronet_aml_base_logging_buildflags",
         "cronet_aml_build_branding_buildflags",
         "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains",
         "cronet_aml_net_buildflags",
         "cronet_aml_net_ios_cronet_buildflags",
+        "cronet_aml_net_isolation_info_proto_gen_headers",
         "cronet_aml_net_net_jni_headers",
-        "cronet_aml_tools_grit_grit_sources",
-        "cronet_aml_tools_gritsettings_default_resource_ids",
+        "cronet_aml_net_net_nqe_proto_gen_headers",
+        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen_headers",
         "cronet_aml_url_buildflags",
     ],
     export_generated_headers: [
@@ -3918,13 +3426,19 @@
         "cronet_aml_base_logging_buildflags",
         "cronet_aml_build_branding_buildflags",
         "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains",
         "cronet_aml_net_buildflags",
         "cronet_aml_net_ios_cronet_buildflags",
+        "cronet_aml_net_isolation_info_proto_gen_headers",
         "cronet_aml_net_net_jni_headers",
-        "cronet_aml_tools_grit_grit_sources",
-        "cronet_aml_tools_gritsettings_default_resource_ids",
+        "cronet_aml_net_net_nqe_proto_gen_headers",
+        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen_headers",
         "cronet_aml_url_buildflags",
     ],
+    export_static_lib_headers: [
+        "cronet_aml_crypto_crypto",
+        "cronet_aml_net_third_party_quiche_quiche",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -3962,7 +3476,6 @@
         "third_party/abseil-cpp/",
         "third_party/boringssl/src/include/",
         "third_party/brotli/include/",
-        "third_party/protobuf/src/",
         "third_party/zlib/",
         "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
@@ -3970,6 +3483,7 @@
         "jni_headers",
     ],
     cpp_std: "c++20",
+    rtti: true,
 }
 
 // GN: //net:net_deps
@@ -4077,6 +3591,7 @@
         "net/net_jni_headers/X509Util_jni.h",
     ],
     tool_files: [
+        "base/android/jni_generator/android_jar.classes",
         "base/android/jni_generator/jni_generator.py",
         "build/android/gyp/util/__init__.py",
         "build/android/gyp/util/build_utils.py",
@@ -4085,81 +3600,37 @@
 }
 
 // GN: //net:net_nqe_proto
-cc_library_static {
-    name: "cronet_aml_net_net_nqe_proto",
-    srcs: [
-        ":cronet_aml_net_net_export_header",
-        "out/test/gen/net/nqe/proto/network_id_proto.pb.cc",
-    ],
-    shared_libs: [
-        "liblog",
-    ],
-    static_libs: [
-        "cronet_aml_third_party_protobuf_protobuf_lite",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DANDROID",
-        "-DANDROID_NDK_VERSION_ROLL=r23_1",
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DHAVE_SYS_UIO_H",
-        "-DNET_IMPLEMENTATION",
-        "-D_DEBUG",
-        "-D_GNU_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D__STDC_CONSTANT_MACROS",
-        "-D__STDC_FORMAT_MACROS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/protobuf/src/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //net:net_nqe_proto_gen
 genrule {
     name: "cronet_aml_net_net_nqe_proto_gen",
     srcs: [
         "net/nqe/proto/network_id_proto.proto",
     ],
-    cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) network_id_proto.proto " +
-         "--protoc " +
-         "./clang_x64/protoc " +
-         "--proto-in-dir " +
-         "../../net/nqe/proto " +
-         "--cc-out-dir " +
-         "gen/net/nqe/proto " +
-         "--cc-options " +
-         "dllexport_decl " +
-         "NET_EXPORT_PRIVATE: " +
-         "--include " +
-         "net/base/net_export.h " +
-         "--py-out-dir " +
-         "pyproto/net/nqe/proto",
-    out: [
-        "//out/test/pyproto/net/nqe/proto/network_id_proto_pb2.py",
-        "net/nqe/proto/network_id_proto.pb.cc",
-        "net/nqe/proto/network_id_proto.pb.h",
+    tools: [
+        "aprotoc",
     ],
-    tool_files: [
-        "tools/protoc_wrapper/protoc_wrapper.py",
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/nqe/proto --cpp_out=lite=true:$(genDir)/external/chromium_org/net/nqe/proto/ $(in)",
+    out: [
+        "external/chromium_org/net/nqe/proto/network_id_proto.pb.cc",
+    ],
+}
+
+// GN: //net:net_nqe_proto
+genrule {
+    name: "cronet_aml_net_net_nqe_proto_gen_headers",
+    srcs: [
+        "net/nqe/proto/network_id_proto.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/nqe/proto --cpp_out=lite=true:$(genDir)/external/chromium_org/net/nqe/proto/ $(in)",
+    out: [
+        "external/chromium_org/net/nqe/proto/network_id_proto.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "net/nqe/proto",
+        "protos",
     ],
 }
 
@@ -4168,91 +3639,6 @@
     name: "cronet_aml_net_net_public_deps",
 }
 
-// GN: //net:net_resources
-filegroup {
-    name: "cronet_aml_net_net_resources",
-}
-
-// GN: //net:net_resources_grit
-genrule {
-    name: "cronet_aml_net_net_resources_grit",
-    cmd: "$(location tools/grit/grit.py) -i " +
-         "../../net/base/net_resources.grd " +
-         "build " +
-         "-o " +
-         "gen/net " +
-         "--depdir " +
-         ". " +
-         "--depfile " +
-         "gen/net/net_resources_grit.d " +
-         "--write-only-new " +
-         "1 " +
-         "--depend-on-stamp " +
-         "-D " +
-         "DEVTOOLS_GRD_PATH " +
-         "gen/third_party/devtools-frontend/src/front_end/devtools_resources " +
-         "-D " +
-         "SHARED_INTERMEDIATE_DIR " +
-         "gen " +
-         "-D " +
-         "_google_chrome " +
-         "false " +
-         "-D " +
-         "_google_chrome_for_testing " +
-         "false " +
-         "-D " +
-         "chromeos_ash " +
-         "false " +
-         "-D " +
-         "chromeos_lacros " +
-         "false " +
-         "-D " +
-         "reven " +
-         "false " +
-         "-D " +
-         "toolkit_views " +
-         "false " +
-         "-D " +
-         "use_aura " +
-         "false " +
-         "-D " +
-         "use_ozone " +
-         "false " +
-         "-D " +
-         "use_titlecase " +
-         "false " +
-         "-E " +
-         "root_gen_dir " +
-         "gen " +
-         "-E " +
-         "root_src_dir " +
-         "../../ " +
-         "-E " +
-         "CHROMIUM_BUILD " +
-         "chromium " +
-         "-E " +
-         "ANDROID_JAVA_TAGGED_ONLY " +
-         "true " +
-         "-t " +
-         "android " +
-         "-f " +
-         "gen/tools/gritsettings/default_resource_ids " +
-         "--assert-file-list " +
-         "obj/net/net_resources_expected_outputs.txt",
-    out: [
-        "net/grit/net_resources.h",
-        "net/net_resources.pak",
-        "net/net_resources.pak.info",
-        "net/net_resources_grit.d.stamp",
-    ],
-    tool_files: [
-        "net/base/net_resources.grd",
-        "out/test/gen/tools/gritsettings/default_resource_ids",
-        "out/test/obj/net/net_resources_expected_outputs.txt",
-        "tools/grit/grit.py",
-    ],
-}
-
 // GN: //net:preload_decoder
 cc_library_static {
     name: "cronet_aml_net_preload_decoder",
@@ -4264,7 +3650,16 @@
         "liblog",
     ],
     static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
+        "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
+        "libssl",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -4299,60 +3694,6 @@
 }
 
 // GN: //net/third_party/quiche:net_quic_proto
-cc_library_static {
-    name: "cronet_aml_net_third_party_quiche_net_quic_proto",
-    srcs: [
-        "out/test/gen/net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.cc",
-        "out/test/gen/net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.pb.cc",
-        "out/test/gen/net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.pb.cc",
-    ],
-    shared_libs: [
-        "libandroid",
-        "liblog",
-    ],
-    static_libs: [
-        "cronet_aml_base_base",
-        "cronet_aml_third_party_protobuf_protobuf_lite",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DANDROID",
-        "-DANDROID_NDK_VERSION_ROLL=r23_1",
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DHAVE_SYS_UIO_H",
-        "-DIS_QUICHE_IMPL",
-        "-D_DEBUG",
-        "-D_GNU_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D__STDC_CONSTANT_MACROS",
-        "-D__STDC_FORMAT_MACROS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/abseil-cpp/",
-        "third_party/boringssl/src/include/",
-        "third_party/protobuf/src/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //net/third_party/quiche:net_quic_proto_gen
 genrule {
     name: "cronet_aml_net_third_party_quiche_net_quic_proto_gen",
     srcs: [
@@ -4360,114 +3701,73 @@
         "net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.proto",
         "net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.proto",
     ],
-    cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) quiche/quic/core/proto/cached_network_parameters.proto " +
-         "quiche/quic/core/proto/crypto_server_config.proto " +
-         "quiche/quic/core/proto/source_address_token.proto " +
-         "--protoc " +
-         "./clang_x64/protoc " +
-         "--proto-in-dir " +
-         "../../net/third_party/quiche/src " +
-         "--cc-out-dir " +
-         "gen/net/third_party/quiche/src " +
-         "--cc-options " +
-         "dllexport_decl " +
-         "COMPONENT_EXPORT(QUICHE): " +
-         "--include " +
-         "base/component_export.h " +
-         "--py-out-dir " +
-         "pyproto/net/third_party/quiche/src",
-    out: [
-        "//out/test/pyproto/net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters_pb2.py",
-        "//out/test/pyproto/net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config_pb2.py",
-        "//out/test/pyproto/net/third_party/quiche/src/quiche/quic/core/proto/source_address_token_pb2.py",
-        "net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.cc",
-        "net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.h",
-        "net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.pb.cc",
-        "net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.pb.h",
-        "net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.pb.cc",
-        "net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.pb.h",
+    tools: [
+        "aprotoc",
     ],
-    tool_files: [
-        "tools/protoc_wrapper/protoc_wrapper.py",
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/third_party/quiche/src --cpp_out=lite=true:$(genDir)/external/chromium_org/net/third_party/quiche/src/ $(in)",
+    out: [
+        "external/chromium_org/net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.cc",
+        "external/chromium_org/net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.pb.cc",
+        "external/chromium_org/net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.pb.cc",
+    ],
+}
+
+// GN: //net/third_party/quiche:net_quic_proto
+genrule {
+    name: "cronet_aml_net_third_party_quiche_net_quic_proto_gen_headers",
+    srcs: [
+        "net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.proto",
+        "net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.proto",
+        "net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/third_party/quiche/src --cpp_out=lite=true:$(genDir)/external/chromium_org/net/third_party/quiche/src/ $(in)",
+    out: [
+        "external/chromium_org/net/third_party/quiche/src/quiche/quic/core/proto/cached_network_parameters.pb.h",
+        "external/chromium_org/net/third_party/quiche/src/quiche/quic/core/proto/crypto_server_config.pb.h",
+        "external/chromium_org/net/third_party/quiche/src/quiche/quic/core/proto/source_address_token.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "net/third_party/quiche/src",
+        "protos",
     ],
 }
 
 // GN: //net/third_party/quiche:net_quic_test_tools_proto
-cc_library_static {
-    name: "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto",
-    srcs: [
-        ":cronet_aml_net_net_export_header",
-        "out/test/gen/net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.pb.cc",
-    ],
-    shared_libs: [
-        "liblog",
-    ],
-    static_libs: [
-        "cronet_aml_third_party_protobuf_protobuf_lite",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DANDROID",
-        "-DANDROID_NDK_VERSION_ROLL=r23_1",
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DHAVE_SYS_UIO_H",
-        "-DNET_IMPLEMENTATION",
-        "-D_DEBUG",
-        "-D_GNU_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D__STDC_CONSTANT_MACROS",
-        "-D__STDC_FORMAT_MACROS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/protobuf/src/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //net/third_party/quiche:net_quic_test_tools_proto_gen
 genrule {
     name: "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen",
     srcs: [
         "net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.proto",
     ],
-    cmd: "$(location tools/protoc_wrapper/protoc_wrapper.py) send_algorithm_test_result.proto " +
-         "--protoc " +
-         "./clang_x64/protoc " +
-         "--proto-in-dir " +
-         "../../net/third_party/quiche/src/quiche/quic/test_tools " +
-         "--cc-out-dir " +
-         "gen/net/third_party/quiche/src/quiche/quic/test_tools " +
-         "--cc-options " +
-         "dllexport_decl " +
-         "NET_EXPORT_PRIVATE: " +
-         "--include " +
-         "net/base/net_export.h " +
-         "--py-out-dir " +
-         "pyproto/net/third_party/quiche/src/quiche/quic/test_tools",
-    out: [
-        "//out/test/pyproto/net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result_pb2.py",
-        "net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.pb.cc",
-        "net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.pb.h",
+    tools: [
+        "aprotoc",
     ],
-    tool_files: [
-        "tools/protoc_wrapper/protoc_wrapper.py",
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/third_party/quiche/src/quiche/quic/test_tools --cpp_out=lite=true:$(genDir)/external/chromium_org/net/third_party/quiche/src/quiche/quic/test_tools/ $(in)",
+    out: [
+        "external/chromium_org/net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.pb.cc",
+    ],
+}
+
+// GN: //net/third_party/quiche:net_quic_test_tools_proto
+genrule {
+    name: "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen_headers",
+    srcs: [
+        "net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/net/third_party/quiche/src/quiche/quic/test_tools --cpp_out=lite=true:$(genDir)/external/chromium_org/net/third_party/quiche/src/quiche/quic/test_tools/ $(in)",
+    out: [
+        "external/chromium_org/net/third_party/quiche/src/quiche/quic/test_tools/send_algorithm_test_result.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "net/third_party/quiche/src/quiche/quic/test_tools",
+        "protos",
     ],
 }
 
@@ -4475,6 +3775,7 @@
 cc_library_static {
     name: "cronet_aml_net_third_party_quiche_quiche",
     srcs: [
+        ":cronet_aml_net_third_party_quiche_net_quic_proto_gen",
         ":cronet_aml_third_party_abseil_cpp_absl",
         ":cronet_aml_third_party_abseil_cpp_absl_algorithm_algorithm",
         ":cronet_aml_third_party_abseil_cpp_absl_algorithm_container",
@@ -4869,21 +4170,30 @@
     shared_libs: [
         "libandroid",
         "liblog",
+        "libprotobuf-cpp-lite",
     ],
     static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
-        "cronet_aml_net_third_party_quiche_net_quic_proto",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
+        "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
         "cronet_aml_net_uri_template",
-        "cronet_aml_third_party_boringssl_boringssl",
-        "cronet_aml_third_party_protobuf_protobuf_lite",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
         "cronet_aml_third_party_zlib_zlib",
         "cronet_aml_url_url",
+        "libssl",
     ],
     generated_headers: [
         "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_net_third_party_quiche_net_quic_proto_gen_headers",
     ],
     export_generated_headers: [
         "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_net_third_party_quiche_net_quic_proto_gen_headers",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -4921,7 +4231,6 @@
         "net/third_party/quiche/src/quiche/common/platform/default/",
         "third_party/abseil-cpp/",
         "third_party/boringssl/src/include/",
-        "third_party/protobuf/src/",
         "third_party/zlib/",
         "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
@@ -4934,13 +4243,30 @@
     srcs: [
         ":cronet_aml_buildtools_third_party_libc___libc__",
         ":cronet_aml_buildtools_third_party_libc__abi_libc__abi",
+        ":cronet_aml_net_cert_root_store_proto_full_gen",
         "net/tools/root_store_tool/root_store_tool.cc",
     ],
+    shared_libs: [
+        "libprotobuf-cpp-lite",
+    ],
     static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
+        "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_base_third_party_symbolize_symbolize",
+        "cronet_aml_base_third_party_xdg_mime_xdg_mime",
+        "cronet_aml_base_third_party_xdg_user_dirs_xdg_user_dirs",
         "cronet_aml_crypto_crypto",
-        "cronet_aml_net_cert_root_store_proto_full",
-        "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
+        "libssl",
+    ],
+    generated_headers: [
+        "cronet_aml_net_cert_root_store_proto_full_gen_headers",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -4983,10 +4309,13 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
         "third_party/boringssl/src/include/",
-        "third_party/protobuf/src/",
         "build/linux/debian_bullseye_amd64-sysroot/usr/include",
     ],
     cpp_std: "c++20",
+    cppflags: [
+        "-fexceptions",
+    ],
+    rtti: true,
 }
 
 // GN: //net/traffic_annotation:traffic_annotation
@@ -5008,7 +4337,16 @@
         "liblog",
     ],
     static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
+        "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
+        "libssl",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -5794,2798 +5132,6 @@
     name: "cronet_aml_third_party_abseil_cpp_absl_utility_utility",
 }
 
-// GN: //third_party/android_deps:auto_service_processor__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_auto_service_processor__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_annotation_processor " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_google_auto_service_auto_service_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/auto_service_processor.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:auto_service_processor " +
-         "--non-chromium-code " +
-         "--bundled-srcjars " +
-         "[] " +
-         "--main-class " +
-         "com.google.auto.service.processor.AutoServiceProcessor",
-    out: [
-        "third_party/android_deps/auto_service_processor.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_github_ben_manes_caffeine_caffeine_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_google_errorprone_error_prone_annotations_java.build_config.json)\", \"$(location third_party/android_deps/org_checkerframework_checker_qual_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_github_ben_manes_caffeine_caffeine_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_github_ben_manes_caffeine_caffeine_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_github_ben_manes_caffeine_caffeine.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_github_ben_manes_caffeine_caffeine/caffeine-2.8.8.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_github_ben_manes_caffeine_caffeine.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_github_ben_manes_caffeine_caffeine_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_github_ben_manes_caffeine_caffeine_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_github_ben_manes_caffeine_caffeine/caffeine-2.8.8.jar " +
-         "obj/third_party/android_deps/com_github_ben_manes_caffeine_caffeine.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_github_ben_manes_caffeine_caffeine.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_github_ben_manes_caffeine_caffeine/caffeine-2.8.8.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_github_ben_manes_caffeine_caffeine_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_github_ben_manes_caffeine_caffeine/caffeine-2.8.8.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_github_ben_manes_caffeine_caffeine.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_github_ben_manes_caffeine_caffeine.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_github_ben_manes_caffeine_caffeine/caffeine-2.8.8.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_github_kevinstern_software_and_algorithms_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_github_kevinstern_software_and_algorithms_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_github_kevinstern_software_and_algorithms_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_github_kevinstern_software_and_algorithms.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_github_kevinstern_software_and_algorithms/software-and-algorithms-1.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_github_kevinstern_software_and_algorithms.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_github_kevinstern_software_and_algorithms_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_github_kevinstern_software_and_algorithms_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_github_kevinstern_software_and_algorithms/software-and-algorithms-1.0.jar " +
-         "obj/third_party/android_deps/com_github_kevinstern_software_and_algorithms.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_github_kevinstern_software_and_algorithms.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_github_kevinstern_software_and_algorithms/software-and-algorithms-1.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_github_kevinstern_software_and_algorithms_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_github_kevinstern_software_and_algorithms/software-and-algorithms-1.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_github_kevinstern_software_and_algorithms.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_github_kevinstern_software_and_algorithms.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_github_kevinstern_software_and_algorithms/software-and-algorithms-1.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_auto_common_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_google_guava_guava_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_auto_auto_common_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_auto_auto_common_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_auto_auto_common.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_auto_auto_common/auto-common-1.2.1.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_auto_auto_common.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_auto_auto_common_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_auto_common_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_auto_auto_common/auto-common-1.2.1.jar " +
-         "obj/third_party/android_deps/com_google_auto_auto_common.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_auto_auto_common.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_auto_auto_common/auto-common-1.2.1.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_auto_common_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_auto_auto_common/auto-common-1.2.1.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_auto_auto_common.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_auto_auto_common.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_auto_auto_common/auto-common-1.2.1.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_service_auto_service_annotations_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_auto_service_auto_service_annotations_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_auto_service_auto_service_annotations_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_auto_service_auto_service_annotations.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_auto_service_auto_service_annotations/auto-service-annotations-1.0-rc6.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_auto_service_auto_service_annotations.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_auto_service_auto_service_annotations_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_service_auto_service_annotations_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_auto_service_auto_service_annotations/auto-service-annotations-1.0-rc6.jar " +
-         "obj/third_party/android_deps/com_google_auto_service_auto_service_annotations.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_auto_service_auto_service_annotations.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_auto_service_auto_service_annotations/auto-service-annotations-1.0-rc6.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_service_auto_service_annotations_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_auto_service_auto_service_annotations/auto-service-annotations-1.0-rc6.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_auto_service_auto_service_annotations.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_auto_service_auto_service_annotations.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_auto_service_auto_service_annotations/auto-service-annotations-1.0-rc6.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_service_auto_service_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_google_auto_auto_common_java.build_config.json)\", \"$(location third_party/android_deps/com_google_auto_service_auto_service_annotations_java.build_config.json)\", \"$(location third_party/android_deps/com_google_guava_guava_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_auto_service_auto_service_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_auto_service_auto_service_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_auto_service_auto_service.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_auto_service_auto_service/auto-service-1.0-rc6.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_auto_service_auto_service.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_auto_service_auto_service_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_service_auto_service_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_auto_service_auto_service/auto-service-1.0-rc6.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_auto_service_auto_service.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_auto_service_auto_service.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_auto_service_auto_service/auto-service-1.0-rc6.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_value_auto_value_annotations_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_auto_value_auto_value_annotations_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_auto_value_auto_value_annotations_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_auto_value_auto_value_annotations.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_auto_value_auto_value_annotations/auto-value-annotations-1.9.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_auto_value_auto_value_annotations.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_auto_value_auto_value_annotations_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_value_auto_value_annotations_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_auto_value_auto_value_annotations/auto-value-annotations-1.9.jar " +
-         "obj/third_party/android_deps/com_google_auto_value_auto_value_annotations.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_auto_value_auto_value_annotations.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_auto_value_auto_value_annotations/auto-value-annotations-1.9.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_auto_value_auto_value_annotations_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_auto_value_auto_value_annotations/auto-value-annotations-1.9.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_auto_value_auto_value_annotations.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_auto_value_auto_value_annotations.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_auto_value_auto_value_annotations/auto-value-annotations-1.9.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_code_findbugs_jsr305_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_code_findbugs_jsr305_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_code_findbugs_jsr305_java " +
-         "--non-chromium-code " +
-         "--device-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_code_findbugs_jsr305/jsr305-3.0.2.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_code_findbugs_jsr305.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_code_findbugs_jsr305/jsr305-3.0.2.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_code_findbugs_jsr305.ijar.jar) " +
-         "--dex-path " +
-         "obj/third_party/android_deps/com_google_code_findbugs_jsr305_java.dex.jar " +
-         "--supports-android " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_code_findbugs_jsr305_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_code_findbugs_jsr305_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_code_findbugs_jsr305/jsr305-3.0.2.jar " +
-         "obj/third_party/android_deps/com_google_code_findbugs_jsr305.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_code_findbugs_jsr305.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_code_findbugs_jsr305/jsr305-3.0.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_code_findbugs_jsr305_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_code_findbugs_jsr305/jsr305-3.0.2.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_code_findbugs_jsr305.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_code_findbugs_jsr305.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_code_findbugs_jsr305/jsr305-3.0.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_annotation_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_google_guava_guava_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_errorprone_error_prone_annotation_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_errorprone_error_prone_annotation_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_errorprone_error_prone_annotation.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_errorprone_error_prone_annotation/error_prone_annotation-2.11.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_errorprone_error_prone_annotation.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_errorprone_error_prone_annotation_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_annotation_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_annotation/error_prone_annotation-2.11.0.jar " +
-         "obj/third_party/android_deps/com_google_errorprone_error_prone_annotation.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_errorprone_error_prone_annotation.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_annotation/error_prone_annotation-2.11.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_annotation_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_annotation/error_prone_annotation-2.11.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_errorprone_error_prone_annotation.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_errorprone_error_prone_annotation.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_annotation/error_prone_annotation-2.11.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_annotations_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_errorprone_error_prone_annotations_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_errorprone_error_prone_annotations_java " +
-         "--non-chromium-code " +
-         "--device-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/error_prone_annotations-2.14.0.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_errorprone_error_prone_annotations.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/error_prone_annotations-2.14.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_errorprone_error_prone_annotations.ijar.jar) " +
-         "--dex-path " +
-         "obj/third_party/android_deps/com_google_errorprone_error_prone_annotations_java.dex.jar " +
-         "--supports-android " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_errorprone_error_prone_annotations_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_annotations_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/error_prone_annotations-2.14.0.jar " +
-         "obj/third_party/android_deps/com_google_errorprone_error_prone_annotations.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_errorprone_error_prone_annotations.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/error_prone_annotations-2.14.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_annotations_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/error_prone_annotations-2.14.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_errorprone_error_prone_annotations.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_errorprone_error_prone_annotations.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_annotations/error_prone_annotations-2.14.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_check_api_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_github_ben_manes_caffeine_caffeine_java.build_config.json)\", \"$(location third_party/android_deps/com_github_kevinstern_software_and_algorithms_java.build_config.json)\", \"$(location third_party/android_deps/com_google_auto_value_auto_value_annotations_java.build_config.json)\", \"$(location third_party/android_deps/com_google_code_findbugs_jsr305_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_annotation_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_annotations_java.build_config.json)\", \"$(location third_party/android_deps/io_github_java_diff_utils_java_diff_utils_java.build_config.json)\", \"$(location third_party/android_deps/org_checkerframework_dataflow_errorprone_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_errorprone_error_prone_check_api_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_errorprone_error_prone_check_api_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_errorprone_error_prone_check_api.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_errorprone_error_prone_check_api/error_prone_check_api-2.11.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_errorprone_error_prone_check_api.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_errorprone_error_prone_check_api_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_check_api_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_check_api/error_prone_check_api-2.11.0.jar " +
-         "obj/third_party/android_deps/com_google_errorprone_error_prone_check_api.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_errorprone_error_prone_check_api.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_check_api/error_prone_check_api-2.11.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_check_api_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_check_api/error_prone_check_api-2.11.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_errorprone_error_prone_check_api.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_errorprone_error_prone_check_api.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_check_api/error_prone_check_api-2.11.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_core_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_google_auto_auto_common_java.build_config.json)\", \"$(location third_party/android_deps/com_google_auto_service_auto_service_annotations_java.build_config.json)\", \"$(location third_party/android_deps/com_google_auto_value_auto_value_annotations_java.build_config.json)\", \"$(location third_party/android_deps/com_google_code_findbugs_jsr305_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_annotation_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_annotations_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_check_api_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_type_annotations_java.build_config.json)\", \"$(location third_party/android_deps/com_google_guava_guava_java.build_config.json)\", \"$(location third_party/android_deps/com_google_protobuf_protobuf_java_java.build_config.json)\", \"$(location third_party/android_deps/org_checkerframework_dataflow_errorprone_java.build_config.json)\", \"$(location third_party/android_deps/org_pcollections_pcollections_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_errorprone_error_prone_core_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_errorprone_error_prone_core_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_errorprone_error_prone_core.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_errorprone_error_prone_core/error_prone_core-2.11.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_errorprone_error_prone_core.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_errorprone_error_prone_core_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_core_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_core/error_prone_core-2.11.0.jar " +
-         "obj/third_party/android_deps/com_google_errorprone_error_prone_core.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_errorprone_error_prone_core.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_core/error_prone_core-2.11.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_core_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_core/error_prone_core-2.11.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_errorprone_error_prone_core.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_errorprone_error_prone_core.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_core/error_prone_core-2.11.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_type_annotations_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_errorprone_error_prone_type_annotations_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_errorprone_error_prone_type_annotations_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_errorprone_error_prone_type_annotations.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_errorprone_error_prone_type_annotations/error_prone_type_annotations-2.11.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_errorprone_error_prone_type_annotations.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_errorprone_error_prone_type_annotations_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_type_annotations_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_type_annotations/error_prone_type_annotations-2.11.0.jar " +
-         "obj/third_party/android_deps/com_google_errorprone_error_prone_type_annotations.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_errorprone_error_prone_type_annotations.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_type_annotations/error_prone_type_annotations-2.11.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_error_prone_type_annotations_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_errorprone_error_prone_type_annotations/error_prone_type_annotations-2.11.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_errorprone_error_prone_type_annotations.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_errorprone_error_prone_type_annotations.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_errorprone_error_prone_type_annotations/error_prone_type_annotations-2.11.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_javac_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_errorprone_javac_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_errorprone_javac_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_errorprone_javac.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_errorprone_javac/javac-9+181-r4173-1.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_errorprone_javac.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_errorprone_javac_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_javac_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_errorprone_javac/javac-9+181-r4173-1.jar " +
-         "obj/third_party/android_deps/com_google_errorprone_javac.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_errorprone_javac.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_errorprone_javac/javac-9+181-r4173-1.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_errorprone_javac_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_errorprone_javac/javac-9+181-r4173-1.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_errorprone_javac.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_errorprone_javac.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_errorprone_javac/javac-9+181-r4173-1.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_failureaccess_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_guava_failureaccess_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_guava_failureaccess_java " +
-         "--non-chromium-code " +
-         "--device-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_guava_failureaccess/failureaccess-1.0.1.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_guava_failureaccess.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_guava_failureaccess/failureaccess-1.0.1.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_guava_failureaccess.ijar.jar) " +
-         "--dex-path " +
-         "obj/third_party/android_deps/com_google_guava_failureaccess_java.dex.jar " +
-         "--supports-android " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_guava_failureaccess_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_failureaccess_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_guava_failureaccess/failureaccess-1.0.1.jar " +
-         "obj/third_party/android_deps/com_google_guava_failureaccess.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_guava_failureaccess.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_guava_failureaccess/failureaccess-1.0.1.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_failureaccess_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_guava_failureaccess/failureaccess-1.0.1.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_guava_failureaccess.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_guava_failureaccess.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_guava_failureaccess/failureaccess-1.0.1.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_guava_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_guava_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_google_code_findbugs_jsr305_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_annotations_java.build_config.json)\", \"$(location third_party/android_deps/com_google_guava_failureaccess_java.build_config.json)\", \"$(location third_party/android_deps/com_google_guava_listenablefuture_java.build_config.json)\", \"$(location third_party/android_deps/com_google_j2objc_j2objc_annotations_java.build_config.json)\", \"$(location third_party/android_deps/org_checkerframework_checker_qual_java.build_config.json)\", \"$(location third_party/android_deps/com_google_guava_listenablefuture_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_guava_guava_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_guava_guava_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_guava_guava.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_guava_guava/guava-31.0.1-jre.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_guava_guava.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_guava_guava_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_guava_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_guava_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_guava_guava/guava-31.0.1-jre.jar " +
-         "obj/third_party/android_deps/com_google_guava_guava.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_guava_guava.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_guava_guava/guava-31.0.1-jre.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_guava_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_guava_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_guava_guava/guava-31.0.1-jre.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_guava_guava.jar " +
-         "--exclude-globs " +
-         "[\"*/ListenableFuture.class\"] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_guava_guava.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_guava_guava/guava-31.0.1-jre.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_listenablefuture_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_guava_listenablefuture_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_guava_listenablefuture_java " +
-         "--non-chromium-code " +
-         "--device-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_guava_listenablefuture/listenablefuture-1.0.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_guava_listenablefuture.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_guava_listenablefuture/listenablefuture-1.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_guava_listenablefuture.ijar.jar) " +
-         "--dex-path " +
-         "obj/third_party/android_deps/com_google_guava_listenablefuture_java.dex.jar " +
-         "--supports-android " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_guava_listenablefuture_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_listenablefuture_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_guava_listenablefuture/listenablefuture-1.0.jar " +
-         "obj/third_party/android_deps/com_google_guava_listenablefuture.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_guava_listenablefuture.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_guava_listenablefuture/listenablefuture-1.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_guava_listenablefuture_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_guava_listenablefuture/listenablefuture-1.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_guava_listenablefuture.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_guava_listenablefuture.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_guava_listenablefuture/listenablefuture-1.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_j2objc_j2objc_annotations_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_j2objc_j2objc_annotations_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_j2objc_j2objc_annotations_java " +
-         "--non-chromium-code " +
-         "--device-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/j2objc-annotations-1.3.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_j2objc_j2objc_annotations.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/j2objc-annotations-1.3.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_j2objc_j2objc_annotations.ijar.jar) " +
-         "--dex-path " +
-         "obj/third_party/android_deps/com_google_j2objc_j2objc_annotations_java.dex.jar " +
-         "--supports-android " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_j2objc_j2objc_annotations_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_j2objc_j2objc_annotations_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/j2objc-annotations-1.3.jar " +
-         "obj/third_party/android_deps/com_google_j2objc_j2objc_annotations.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_j2objc_j2objc_annotations.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/j2objc-annotations-1.3.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_j2objc_j2objc_annotations_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/j2objc-annotations-1.3.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_j2objc_j2objc_annotations.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_j2objc_j2objc_annotations.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_j2objc_j2objc_annotations/j2objc-annotations-1.3.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_protobuf_protobuf_java_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/com_google_protobuf_protobuf_java_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:com_google_protobuf_protobuf_java_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/com_google_protobuf_protobuf_java.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/com_google_protobuf_protobuf_java/protobuf-java-3.19.2.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/com_google_protobuf_protobuf_java.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/com_google_protobuf_protobuf_java_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_protobuf_protobuf_java_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/com_google_protobuf_protobuf_java/protobuf-java-3.19.2.jar " +
-         "obj/third_party/android_deps/com_google_protobuf_protobuf_java.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/com_google_protobuf_protobuf_java.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/com_google_protobuf_protobuf_java/protobuf-java-3.19.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:com_google_protobuf_protobuf_java_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/com_google_protobuf_protobuf_java/protobuf-java-3.19.2.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/com_google_protobuf_protobuf_java.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/com_google_protobuf_protobuf_java.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/com_google_protobuf_protobuf_java/protobuf-java-3.19.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:io_github_java_diff_utils_java_diff_utils_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/io_github_java_diff_utils_java_diff_utils_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:io_github_java_diff_utils_java_diff_utils_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/io_github_java_diff_utils_java_diff_utils.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/io_github_java_diff_utils_java_diff_utils/java-diff-utils-4.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/io_github_java_diff_utils_java_diff_utils.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/io_github_java_diff_utils_java_diff_utils_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:io_github_java_diff_utils_java_diff_utils_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/io_github_java_diff_utils_java_diff_utils/java-diff-utils-4.0.jar " +
-         "obj/third_party/android_deps/io_github_java_diff_utils_java_diff_utils.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/io_github_java_diff_utils_java_diff_utils.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/io_github_java_diff_utils_java_diff_utils/java-diff-utils-4.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:io_github_java_diff_utils_java_diff_utils_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/io_github_java_diff_utils_java_diff_utils/java-diff-utils-4.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/io_github_java_diff_utils_java_diff_utils.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/io_github_java_diff_utils_java_diff_utils.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/io_github_java_diff_utils_java_diff_utils/java-diff-utils-4.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_checkerframework_checker_qual_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/org_checkerframework_checker_qual_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:org_checkerframework_checker_qual_java " +
-         "--non-chromium-code " +
-         "--device-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_checkerframework_checker_qual/checker-qual-3.25.0.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/org_checkerframework_checker_qual.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_checkerframework_checker_qual/checker-qual-3.25.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/org_checkerframework_checker_qual.ijar.jar) " +
-         "--dex-path " +
-         "obj/third_party/android_deps/org_checkerframework_checker_qual_java.dex.jar " +
-         "--supports-android " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/org_checkerframework_checker_qual_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:org_checkerframework_checker_qual_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/org_checkerframework_checker_qual/checker-qual-3.25.0.jar " +
-         "obj/third_party/android_deps/org_checkerframework_checker_qual.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/org_checkerframework_checker_qual.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/org_checkerframework_checker_qual/checker-qual-3.25.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_checkerframework_checker_qual_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/org_checkerframework_checker_qual/checker-qual-3.25.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/org_checkerframework_checker_qual.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/org_checkerframework_checker_qual.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/org_checkerframework_checker_qual/checker-qual-3.25.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_checkerframework_dataflow_errorprone_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/org_checkerframework_dataflow_errorprone_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:org_checkerframework_dataflow_errorprone_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/org_checkerframework_dataflow_errorprone.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_checkerframework_dataflow_errorprone/dataflow-errorprone-3.15.0.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/org_checkerframework_dataflow_errorprone.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/org_checkerframework_dataflow_errorprone_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:org_checkerframework_dataflow_errorprone_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/org_checkerframework_dataflow_errorprone/dataflow-errorprone-3.15.0.jar " +
-         "obj/third_party/android_deps/org_checkerframework_dataflow_errorprone.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/org_checkerframework_dataflow_errorprone.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/org_checkerframework_dataflow_errorprone/dataflow-errorprone-3.15.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_checkerframework_dataflow_errorprone_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/org_checkerframework_dataflow_errorprone/dataflow-errorprone-3.15.0.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/org_checkerframework_dataflow_errorprone.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/org_checkerframework_dataflow_errorprone.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/org_checkerframework_dataflow_errorprone/dataflow-errorprone-3.15.0.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_eclipse_jgit_org_eclipse_jgit_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:org_eclipse_jgit_org_eclipse_jgit_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_eclipse_jgit_org_eclipse_jgit/org.eclipse.jgit-4.4.1.201607150455-r.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:org_eclipse_jgit_org_eclipse_jgit_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/org_eclipse_jgit_org_eclipse_jgit/org.eclipse.jgit-4.4.1.201607150455-r.jar " +
-         "obj/third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/org_eclipse_jgit_org_eclipse_jgit/org.eclipse.jgit-4.4.1.201607150455-r.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_eclipse_jgit_org_eclipse_jgit_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/org_eclipse_jgit_org_eclipse_jgit/org.eclipse.jgit-4.4.1.201607150455-r.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/org_eclipse_jgit_org_eclipse_jgit.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/org_eclipse_jgit_org_eclipse_jgit/org.eclipse.jgit-4.4.1.201607150455-r.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_analysis_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/org_ow2_asm_asm_tree_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/org_ow2_asm_asm_analysis_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:org_ow2_asm_asm_analysis_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/org_ow2_asm_asm_analysis.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_ow2_asm_asm_analysis/asm-analysis-9.2.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/org_ow2_asm_asm_analysis.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/org_ow2_asm_asm_analysis_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_analysis_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/org_ow2_asm_asm_analysis/asm-analysis-9.2.jar " +
-         "obj/third_party/android_deps/org_ow2_asm_asm_analysis.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/org_ow2_asm_asm_analysis.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/org_ow2_asm_asm_analysis/asm-analysis-9.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_analysis_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/org_ow2_asm_asm_analysis/asm-analysis-9.2.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/org_ow2_asm_asm_analysis.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/org_ow2_asm_asm_analysis.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/org_ow2_asm_asm_analysis/asm-analysis-9.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/org_ow2_asm_asm_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:org_ow2_asm_asm_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/org_ow2_asm_asm.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_ow2_asm_asm/asm-9.2.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/org_ow2_asm_asm.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/org_ow2_asm_asm_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/org_ow2_asm_asm/asm-9.2.jar " +
-         "obj/third_party/android_deps/org_ow2_asm_asm.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/org_ow2_asm_asm.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/org_ow2_asm_asm/asm-9.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/org_ow2_asm_asm/asm-9.2.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/org_ow2_asm_asm.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/org_ow2_asm_asm.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/org_ow2_asm_asm/asm-9.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_tree_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/org_ow2_asm_asm_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/org_ow2_asm_asm_tree_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:org_ow2_asm_asm_tree_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/org_ow2_asm_asm_tree.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_ow2_asm_asm_tree/asm-tree-9.2.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/org_ow2_asm_asm_tree.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/org_ow2_asm_asm_tree_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_tree_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/org_ow2_asm_asm_tree/asm-tree-9.2.jar " +
-         "obj/third_party/android_deps/org_ow2_asm_asm_tree.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/org_ow2_asm_asm_tree.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/org_ow2_asm_asm_tree/asm-tree-9.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_tree_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/org_ow2_asm_asm_tree/asm-tree-9.2.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/org_ow2_asm_asm_tree.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/org_ow2_asm_asm_tree.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/org_ow2_asm_asm_tree/asm-tree-9.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_util_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/org_ow2_asm_asm_analysis_java.build_config.json)\", \"$(location third_party/android_deps/org_ow2_asm_asm_java.build_config.json)\", \"$(location third_party/android_deps/org_ow2_asm_asm_tree_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/org_ow2_asm_asm_util_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:org_ow2_asm_asm_util_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/org_ow2_asm_asm_util.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_ow2_asm_asm_util/asm-util-9.2.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/org_ow2_asm_asm_util.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/org_ow2_asm_asm_util_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_util_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/org_ow2_asm_asm_util/asm-util-9.2.jar " +
-         "obj/third_party/android_deps/org_ow2_asm_asm_util.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/org_ow2_asm_asm_util.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/org_ow2_asm_asm_util/asm-util-9.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_ow2_asm_asm_util_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/org_ow2_asm_asm_util/asm-util-9.2.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/org_ow2_asm_asm_util.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/org_ow2_asm_asm_util.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/org_ow2_asm_asm_util/asm-util-9.2.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_pcollections_pcollections_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_deps/org_pcollections_pcollections_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_deps:org_pcollections_pcollections_java " +
-         "--non-chromium-code " +
-         "--host-jar-path " +
-         "$(location lib.java/third_party/android_deps/org_pcollections_pcollections.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_deps/libs/org_pcollections_pcollections/pcollections-3.1.4.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_deps/org_pcollections_pcollections.ijar.jar) " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_deps/org_pcollections_pcollections_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_deps:org_pcollections_pcollections_java__header
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_deps/libs/org_pcollections_pcollections/pcollections-3.1.4.jar " +
-         "obj/third_party/android_deps/org_pcollections_pcollections.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_deps/org_pcollections_pcollections.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_deps/libs/org_pcollections_pcollections/pcollections-3.1.4.jar",
-    ],
-}
-
-// GN: //third_party/android_deps:org_pcollections_pcollections_java__host
-genrule {
-    name: "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "../../third_party/android_deps/libs/org_pcollections_pcollections/pcollections-3.1.4.jar " +
-         "--output " +
-         "lib.java/third_party/android_deps/org_pcollections_pcollections.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/third_party/android_deps/org_pcollections_pcollections.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "third_party/android_deps/libs/org_pcollections_pcollections/pcollections-3.1.4.jar",
-    ],
-}
-
 // GN: //third_party/android_ndk:cpu_features
 filegroup {
     name: "cronet_aml_third_party_android_ndk_cpu_features",
@@ -8594,83 +5140,6 @@
     ],
 }
 
-// GN: //third_party/android_sdk:android_sdk_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_third_party_android_sdk_android_sdk_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "system_java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/third_party/android_sdk/android_sdk_java.build_config.json " +
-         "--gn-target " +
-         "//third_party/android_sdk:android_sdk_java " +
-         "--non-chromium-code " +
-         "--unprocessed-jar-path " +
-         "$(location ../../third_party/android_sdk/public/platforms/android-33/android.jar) " +
-         "--interface-jar-path " +
-         "$(location third_party/android_sdk/android.ijar.jar) " +
-         "--supports-android " +
-         "--is-prebuilt " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "third_party/android_sdk/android_sdk_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //third_party/android_sdk:android_sdk_java__header
-genrule {
-    name: "cronet_aml_third_party_android_sdk_android_sdk_java__header",
-    cmd: "$(location build/android/gyp/ijar.py) clang_x64/ijar " +
-         "../../third_party/android_sdk/public/platforms/android-33/android.jar " +
-         "obj/third_party/android_sdk/android.ijar.jar",
-    out: [
-        "//out/test/obj/third_party/android_sdk/android.ijar.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/ijar.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/clang_x64/ijar",
-        "third_party/android_sdk/public/platforms/android-33/android.jar",
-    ],
-}
-
 // GN: //third_party/ashmem:ashmem
 filegroup {
     name: "cronet_aml_third_party_ashmem_ashmem",
@@ -8679,324 +5148,6 @@
     ],
 }
 
-// GN: //third_party/boringssl:boringssl
-cc_library_static {
-    name: "cronet_aml_third_party_boringssl_boringssl",
-    srcs: [
-        ":cronet_aml_third_party_boringssl_boringssl_asm",
-        ":cronet_aml_third_party_boringssl_src_third_party_fiat_fiat_license",
-        "third_party/boringssl/err_data.c",
-        "third_party/boringssl/src/crypto/asn1/a_bitstr.c",
-        "third_party/boringssl/src/crypto/asn1/a_bool.c",
-        "third_party/boringssl/src/crypto/asn1/a_d2i_fp.c",
-        "third_party/boringssl/src/crypto/asn1/a_dup.c",
-        "third_party/boringssl/src/crypto/asn1/a_gentm.c",
-        "third_party/boringssl/src/crypto/asn1/a_i2d_fp.c",
-        "third_party/boringssl/src/crypto/asn1/a_int.c",
-        "third_party/boringssl/src/crypto/asn1/a_mbstr.c",
-        "third_party/boringssl/src/crypto/asn1/a_object.c",
-        "third_party/boringssl/src/crypto/asn1/a_octet.c",
-        "third_party/boringssl/src/crypto/asn1/a_print.c",
-        "third_party/boringssl/src/crypto/asn1/a_strex.c",
-        "third_party/boringssl/src/crypto/asn1/a_strnid.c",
-        "third_party/boringssl/src/crypto/asn1/a_time.c",
-        "third_party/boringssl/src/crypto/asn1/a_type.c",
-        "third_party/boringssl/src/crypto/asn1/a_utctm.c",
-        "third_party/boringssl/src/crypto/asn1/a_utf8.c",
-        "third_party/boringssl/src/crypto/asn1/asn1_lib.c",
-        "third_party/boringssl/src/crypto/asn1/asn1_par.c",
-        "third_party/boringssl/src/crypto/asn1/asn_pack.c",
-        "third_party/boringssl/src/crypto/asn1/f_int.c",
-        "third_party/boringssl/src/crypto/asn1/f_string.c",
-        "third_party/boringssl/src/crypto/asn1/posix_time.c",
-        "third_party/boringssl/src/crypto/asn1/tasn_dec.c",
-        "third_party/boringssl/src/crypto/asn1/tasn_enc.c",
-        "third_party/boringssl/src/crypto/asn1/tasn_fre.c",
-        "third_party/boringssl/src/crypto/asn1/tasn_new.c",
-        "third_party/boringssl/src/crypto/asn1/tasn_typ.c",
-        "third_party/boringssl/src/crypto/asn1/tasn_utl.c",
-        "third_party/boringssl/src/crypto/base64/base64.c",
-        "third_party/boringssl/src/crypto/bio/bio.c",
-        "third_party/boringssl/src/crypto/bio/bio_mem.c",
-        "third_party/boringssl/src/crypto/bio/connect.c",
-        "third_party/boringssl/src/crypto/bio/fd.c",
-        "third_party/boringssl/src/crypto/bio/file.c",
-        "third_party/boringssl/src/crypto/bio/hexdump.c",
-        "third_party/boringssl/src/crypto/bio/pair.c",
-        "third_party/boringssl/src/crypto/bio/printf.c",
-        "third_party/boringssl/src/crypto/bio/socket.c",
-        "third_party/boringssl/src/crypto/bio/socket_helper.c",
-        "third_party/boringssl/src/crypto/blake2/blake2.c",
-        "third_party/boringssl/src/crypto/bn_extra/bn_asn1.c",
-        "third_party/boringssl/src/crypto/bn_extra/convert.c",
-        "third_party/boringssl/src/crypto/buf/buf.c",
-        "third_party/boringssl/src/crypto/bytestring/asn1_compat.c",
-        "third_party/boringssl/src/crypto/bytestring/ber.c",
-        "third_party/boringssl/src/crypto/bytestring/cbb.c",
-        "third_party/boringssl/src/crypto/bytestring/cbs.c",
-        "third_party/boringssl/src/crypto/bytestring/unicode.c",
-        "third_party/boringssl/src/crypto/chacha/chacha.c",
-        "third_party/boringssl/src/crypto/cipher_extra/cipher_extra.c",
-        "third_party/boringssl/src/crypto/cipher_extra/derive_key.c",
-        "third_party/boringssl/src/crypto/cipher_extra/e_aesctrhmac.c",
-        "third_party/boringssl/src/crypto/cipher_extra/e_aesgcmsiv.c",
-        "third_party/boringssl/src/crypto/cipher_extra/e_chacha20poly1305.c",
-        "third_party/boringssl/src/crypto/cipher_extra/e_des.c",
-        "third_party/boringssl/src/crypto/cipher_extra/e_null.c",
-        "third_party/boringssl/src/crypto/cipher_extra/e_rc2.c",
-        "third_party/boringssl/src/crypto/cipher_extra/e_rc4.c",
-        "third_party/boringssl/src/crypto/cipher_extra/e_tls.c",
-        "third_party/boringssl/src/crypto/cipher_extra/tls_cbc.c",
-        "third_party/boringssl/src/crypto/conf/conf.c",
-        "third_party/boringssl/src/crypto/cpu_aarch64_apple.c",
-        "third_party/boringssl/src/crypto/cpu_aarch64_fuchsia.c",
-        "third_party/boringssl/src/crypto/cpu_aarch64_linux.c",
-        "third_party/boringssl/src/crypto/cpu_aarch64_win.c",
-        "third_party/boringssl/src/crypto/cpu_arm.c",
-        "third_party/boringssl/src/crypto/cpu_arm_linux.c",
-        "third_party/boringssl/src/crypto/cpu_intel.c",
-        "third_party/boringssl/src/crypto/cpu_ppc64le.c",
-        "third_party/boringssl/src/crypto/crypto.c",
-        "third_party/boringssl/src/crypto/curve25519/curve25519.c",
-        "third_party/boringssl/src/crypto/curve25519/spake25519.c",
-        "third_party/boringssl/src/crypto/des/des.c",
-        "third_party/boringssl/src/crypto/dh_extra/dh_asn1.c",
-        "third_party/boringssl/src/crypto/dh_extra/params.c",
-        "third_party/boringssl/src/crypto/digest_extra/digest_extra.c",
-        "third_party/boringssl/src/crypto/dsa/dsa.c",
-        "third_party/boringssl/src/crypto/dsa/dsa_asn1.c",
-        "third_party/boringssl/src/crypto/ec_extra/ec_asn1.c",
-        "third_party/boringssl/src/crypto/ec_extra/ec_derive.c",
-        "third_party/boringssl/src/crypto/ec_extra/hash_to_curve.c",
-        "third_party/boringssl/src/crypto/ecdh_extra/ecdh_extra.c",
-        "third_party/boringssl/src/crypto/ecdsa_extra/ecdsa_asn1.c",
-        "third_party/boringssl/src/crypto/engine/engine.c",
-        "third_party/boringssl/src/crypto/err/err.c",
-        "third_party/boringssl/src/crypto/evp/evp.c",
-        "third_party/boringssl/src/crypto/evp/evp_asn1.c",
-        "third_party/boringssl/src/crypto/evp/evp_ctx.c",
-        "third_party/boringssl/src/crypto/evp/p_dsa_asn1.c",
-        "third_party/boringssl/src/crypto/evp/p_ec.c",
-        "third_party/boringssl/src/crypto/evp/p_ec_asn1.c",
-        "third_party/boringssl/src/crypto/evp/p_ed25519.c",
-        "third_party/boringssl/src/crypto/evp/p_ed25519_asn1.c",
-        "third_party/boringssl/src/crypto/evp/p_hkdf.c",
-        "third_party/boringssl/src/crypto/evp/p_rsa.c",
-        "third_party/boringssl/src/crypto/evp/p_rsa_asn1.c",
-        "third_party/boringssl/src/crypto/evp/p_x25519.c",
-        "third_party/boringssl/src/crypto/evp/p_x25519_asn1.c",
-        "third_party/boringssl/src/crypto/evp/pbkdf.c",
-        "third_party/boringssl/src/crypto/evp/print.c",
-        "third_party/boringssl/src/crypto/evp/scrypt.c",
-        "third_party/boringssl/src/crypto/evp/sign.c",
-        "third_party/boringssl/src/crypto/ex_data.c",
-        "third_party/boringssl/src/crypto/fipsmodule/bcm.c",
-        "third_party/boringssl/src/crypto/fipsmodule/fips_shared_support.c",
-        "third_party/boringssl/src/crypto/hkdf/hkdf.c",
-        "third_party/boringssl/src/crypto/hpke/hpke.c",
-        "third_party/boringssl/src/crypto/hrss/hrss.c",
-        "third_party/boringssl/src/crypto/lhash/lhash.c",
-        "third_party/boringssl/src/crypto/mem.c",
-        "third_party/boringssl/src/crypto/obj/obj.c",
-        "third_party/boringssl/src/crypto/obj/obj_xref.c",
-        "third_party/boringssl/src/crypto/pem/pem_all.c",
-        "third_party/boringssl/src/crypto/pem/pem_info.c",
-        "third_party/boringssl/src/crypto/pem/pem_lib.c",
-        "third_party/boringssl/src/crypto/pem/pem_oth.c",
-        "third_party/boringssl/src/crypto/pem/pem_pk8.c",
-        "third_party/boringssl/src/crypto/pem/pem_pkey.c",
-        "third_party/boringssl/src/crypto/pem/pem_x509.c",
-        "third_party/boringssl/src/crypto/pem/pem_xaux.c",
-        "third_party/boringssl/src/crypto/pkcs7/pkcs7.c",
-        "third_party/boringssl/src/crypto/pkcs7/pkcs7_x509.c",
-        "third_party/boringssl/src/crypto/pkcs8/p5_pbev2.c",
-        "third_party/boringssl/src/crypto/pkcs8/pkcs8.c",
-        "third_party/boringssl/src/crypto/pkcs8/pkcs8_x509.c",
-        "third_party/boringssl/src/crypto/poly1305/poly1305.c",
-        "third_party/boringssl/src/crypto/poly1305/poly1305_arm.c",
-        "third_party/boringssl/src/crypto/poly1305/poly1305_vec.c",
-        "third_party/boringssl/src/crypto/pool/pool.c",
-        "third_party/boringssl/src/crypto/rand_extra/deterministic.c",
-        "third_party/boringssl/src/crypto/rand_extra/forkunsafe.c",
-        "third_party/boringssl/src/crypto/rand_extra/fuchsia.c",
-        "third_party/boringssl/src/crypto/rand_extra/passive.c",
-        "third_party/boringssl/src/crypto/rand_extra/rand_extra.c",
-        "third_party/boringssl/src/crypto/rand_extra/windows.c",
-        "third_party/boringssl/src/crypto/rc4/rc4.c",
-        "third_party/boringssl/src/crypto/refcount_c11.c",
-        "third_party/boringssl/src/crypto/refcount_lock.c",
-        "third_party/boringssl/src/crypto/rsa_extra/rsa_asn1.c",
-        "third_party/boringssl/src/crypto/rsa_extra/rsa_print.c",
-        "third_party/boringssl/src/crypto/siphash/siphash.c",
-        "third_party/boringssl/src/crypto/stack/stack.c",
-        "third_party/boringssl/src/crypto/thread.c",
-        "third_party/boringssl/src/crypto/thread_none.c",
-        "third_party/boringssl/src/crypto/thread_pthread.c",
-        "third_party/boringssl/src/crypto/thread_win.c",
-        "third_party/boringssl/src/crypto/trust_token/pmbtoken.c",
-        "third_party/boringssl/src/crypto/trust_token/trust_token.c",
-        "third_party/boringssl/src/crypto/trust_token/voprf.c",
-        "third_party/boringssl/src/crypto/x509/a_digest.c",
-        "third_party/boringssl/src/crypto/x509/a_sign.c",
-        "third_party/boringssl/src/crypto/x509/a_verify.c",
-        "third_party/boringssl/src/crypto/x509/algorithm.c",
-        "third_party/boringssl/src/crypto/x509/asn1_gen.c",
-        "third_party/boringssl/src/crypto/x509/by_dir.c",
-        "third_party/boringssl/src/crypto/x509/by_file.c",
-        "third_party/boringssl/src/crypto/x509/i2d_pr.c",
-        "third_party/boringssl/src/crypto/x509/name_print.c",
-        "third_party/boringssl/src/crypto/x509/rsa_pss.c",
-        "third_party/boringssl/src/crypto/x509/t_crl.c",
-        "third_party/boringssl/src/crypto/x509/t_req.c",
-        "third_party/boringssl/src/crypto/x509/t_x509.c",
-        "third_party/boringssl/src/crypto/x509/t_x509a.c",
-        "third_party/boringssl/src/crypto/x509/x509.c",
-        "third_party/boringssl/src/crypto/x509/x509_att.c",
-        "third_party/boringssl/src/crypto/x509/x509_cmp.c",
-        "third_party/boringssl/src/crypto/x509/x509_d2.c",
-        "third_party/boringssl/src/crypto/x509/x509_def.c",
-        "third_party/boringssl/src/crypto/x509/x509_ext.c",
-        "third_party/boringssl/src/crypto/x509/x509_lu.c",
-        "third_party/boringssl/src/crypto/x509/x509_obj.c",
-        "third_party/boringssl/src/crypto/x509/x509_req.c",
-        "third_party/boringssl/src/crypto/x509/x509_set.c",
-        "third_party/boringssl/src/crypto/x509/x509_trs.c",
-        "third_party/boringssl/src/crypto/x509/x509_txt.c",
-        "third_party/boringssl/src/crypto/x509/x509_v3.c",
-        "third_party/boringssl/src/crypto/x509/x509_vfy.c",
-        "third_party/boringssl/src/crypto/x509/x509_vpm.c",
-        "third_party/boringssl/src/crypto/x509/x509cset.c",
-        "third_party/boringssl/src/crypto/x509/x509name.c",
-        "third_party/boringssl/src/crypto/x509/x509rset.c",
-        "third_party/boringssl/src/crypto/x509/x509spki.c",
-        "third_party/boringssl/src/crypto/x509/x_algor.c",
-        "third_party/boringssl/src/crypto/x509/x_all.c",
-        "third_party/boringssl/src/crypto/x509/x_attrib.c",
-        "third_party/boringssl/src/crypto/x509/x_crl.c",
-        "third_party/boringssl/src/crypto/x509/x_exten.c",
-        "third_party/boringssl/src/crypto/x509/x_info.c",
-        "third_party/boringssl/src/crypto/x509/x_name.c",
-        "third_party/boringssl/src/crypto/x509/x_pkey.c",
-        "third_party/boringssl/src/crypto/x509/x_pubkey.c",
-        "third_party/boringssl/src/crypto/x509/x_req.c",
-        "third_party/boringssl/src/crypto/x509/x_sig.c",
-        "third_party/boringssl/src/crypto/x509/x_spki.c",
-        "third_party/boringssl/src/crypto/x509/x_val.c",
-        "third_party/boringssl/src/crypto/x509/x_x509.c",
-        "third_party/boringssl/src/crypto/x509/x_x509a.c",
-        "third_party/boringssl/src/crypto/x509v3/pcy_cache.c",
-        "third_party/boringssl/src/crypto/x509v3/pcy_data.c",
-        "third_party/boringssl/src/crypto/x509v3/pcy_map.c",
-        "third_party/boringssl/src/crypto/x509v3/pcy_node.c",
-        "third_party/boringssl/src/crypto/x509v3/pcy_tree.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_akey.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_akeya.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_alt.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_bcons.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_bitst.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_conf.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_cpols.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_crld.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_enum.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_extku.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_genn.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_ia5.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_info.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_int.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_lib.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_ncons.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_ocsp.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_pci.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_pcia.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_pcons.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_pmaps.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_prn.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_purp.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_skey.c",
-        "third_party/boringssl/src/crypto/x509v3/v3_utl.c",
-        "third_party/boringssl/src/ssl/bio_ssl.cc",
-        "third_party/boringssl/src/ssl/d1_both.cc",
-        "third_party/boringssl/src/ssl/d1_lib.cc",
-        "third_party/boringssl/src/ssl/d1_pkt.cc",
-        "third_party/boringssl/src/ssl/d1_srtp.cc",
-        "third_party/boringssl/src/ssl/dtls_method.cc",
-        "third_party/boringssl/src/ssl/dtls_record.cc",
-        "third_party/boringssl/src/ssl/encrypted_client_hello.cc",
-        "third_party/boringssl/src/ssl/extensions.cc",
-        "third_party/boringssl/src/ssl/handoff.cc",
-        "third_party/boringssl/src/ssl/handshake.cc",
-        "third_party/boringssl/src/ssl/handshake_client.cc",
-        "third_party/boringssl/src/ssl/handshake_server.cc",
-        "third_party/boringssl/src/ssl/s3_both.cc",
-        "third_party/boringssl/src/ssl/s3_lib.cc",
-        "third_party/boringssl/src/ssl/s3_pkt.cc",
-        "third_party/boringssl/src/ssl/ssl_aead_ctx.cc",
-        "third_party/boringssl/src/ssl/ssl_asn1.cc",
-        "third_party/boringssl/src/ssl/ssl_buffer.cc",
-        "third_party/boringssl/src/ssl/ssl_cert.cc",
-        "third_party/boringssl/src/ssl/ssl_cipher.cc",
-        "third_party/boringssl/src/ssl/ssl_file.cc",
-        "third_party/boringssl/src/ssl/ssl_key_share.cc",
-        "third_party/boringssl/src/ssl/ssl_lib.cc",
-        "third_party/boringssl/src/ssl/ssl_privkey.cc",
-        "third_party/boringssl/src/ssl/ssl_session.cc",
-        "third_party/boringssl/src/ssl/ssl_stat.cc",
-        "third_party/boringssl/src/ssl/ssl_transcript.cc",
-        "third_party/boringssl/src/ssl/ssl_versions.cc",
-        "third_party/boringssl/src/ssl/ssl_x509.cc",
-        "third_party/boringssl/src/ssl/t1_enc.cc",
-        "third_party/boringssl/src/ssl/tls13_both.cc",
-        "third_party/boringssl/src/ssl/tls13_client.cc",
-        "third_party/boringssl/src/ssl/tls13_enc.cc",
-        "third_party/boringssl/src/ssl/tls13_server.cc",
-        "third_party/boringssl/src/ssl/tls_method.cc",
-        "third_party/boringssl/src/ssl/tls_record.cc",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DANDROID",
-        "-DANDROID_NDK_VERSION_ROLL=r23_1",
-        "-DBORINGSSL_ALLOW_CXX_RUNTIME",
-        "-DBORINGSSL_IMPLEMENTATION",
-        "-DBORINGSSL_NO_STATIC_INITIALIZER",
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DHAVE_SYS_UIO_H",
-        "-DOPENSSL_SMALL",
-        "-D_DEBUG",
-        "-D_GNU_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D__STDC_CONSTANT_MACROS",
-        "-D__STDC_FORMAT_MACROS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/boringssl/src/include/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //third_party/boringssl:boringssl_asm
-filegroup {
-    name: "cronet_aml_third_party_boringssl_boringssl_asm",
-}
-
-// GN: //third_party/boringssl/src/third_party/fiat:fiat_license
-filegroup {
-    name: "cronet_aml_third_party_boringssl_src_third_party_fiat_fiat_license",
-}
-
 // GN: //third_party/brotli:common
 cc_library_static {
     name: "cronet_aml_third_party_brotli_common",
@@ -9092,6 +5243,248 @@
 // GN: //third_party/icu:icui18n
 cc_library_static {
     name: "cronet_aml_third_party_icu_icui18n",
+    srcs: [
+        "third_party/icu/source/i18n/alphaindex.cpp",
+        "third_party/icu/source/i18n/anytrans.cpp",
+        "third_party/icu/source/i18n/astro.cpp",
+        "third_party/icu/source/i18n/basictz.cpp",
+        "third_party/icu/source/i18n/bocsu.cpp",
+        "third_party/icu/source/i18n/brktrans.cpp",
+        "third_party/icu/source/i18n/buddhcal.cpp",
+        "third_party/icu/source/i18n/calendar.cpp",
+        "third_party/icu/source/i18n/casetrn.cpp",
+        "third_party/icu/source/i18n/cecal.cpp",
+        "third_party/icu/source/i18n/chnsecal.cpp",
+        "third_party/icu/source/i18n/choicfmt.cpp",
+        "third_party/icu/source/i18n/coleitr.cpp",
+        "third_party/icu/source/i18n/coll.cpp",
+        "third_party/icu/source/i18n/collation.cpp",
+        "third_party/icu/source/i18n/collationbuilder.cpp",
+        "third_party/icu/source/i18n/collationcompare.cpp",
+        "third_party/icu/source/i18n/collationdata.cpp",
+        "third_party/icu/source/i18n/collationdatabuilder.cpp",
+        "third_party/icu/source/i18n/collationdatareader.cpp",
+        "third_party/icu/source/i18n/collationdatawriter.cpp",
+        "third_party/icu/source/i18n/collationfastlatin.cpp",
+        "third_party/icu/source/i18n/collationfastlatinbuilder.cpp",
+        "third_party/icu/source/i18n/collationfcd.cpp",
+        "third_party/icu/source/i18n/collationiterator.cpp",
+        "third_party/icu/source/i18n/collationkeys.cpp",
+        "third_party/icu/source/i18n/collationroot.cpp",
+        "third_party/icu/source/i18n/collationrootelements.cpp",
+        "third_party/icu/source/i18n/collationruleparser.cpp",
+        "third_party/icu/source/i18n/collationsets.cpp",
+        "third_party/icu/source/i18n/collationsettings.cpp",
+        "third_party/icu/source/i18n/collationtailoring.cpp",
+        "third_party/icu/source/i18n/collationweights.cpp",
+        "third_party/icu/source/i18n/compactdecimalformat.cpp",
+        "third_party/icu/source/i18n/coptccal.cpp",
+        "third_party/icu/source/i18n/cpdtrans.cpp",
+        "third_party/icu/source/i18n/csdetect.cpp",
+        "third_party/icu/source/i18n/csmatch.cpp",
+        "third_party/icu/source/i18n/csr2022.cpp",
+        "third_party/icu/source/i18n/csrecog.cpp",
+        "third_party/icu/source/i18n/csrmbcs.cpp",
+        "third_party/icu/source/i18n/csrsbcs.cpp",
+        "third_party/icu/source/i18n/csrucode.cpp",
+        "third_party/icu/source/i18n/csrutf8.cpp",
+        "third_party/icu/source/i18n/curramt.cpp",
+        "third_party/icu/source/i18n/currfmt.cpp",
+        "third_party/icu/source/i18n/currpinf.cpp",
+        "third_party/icu/source/i18n/currunit.cpp",
+        "third_party/icu/source/i18n/dangical.cpp",
+        "third_party/icu/source/i18n/datefmt.cpp",
+        "third_party/icu/source/i18n/dayperiodrules.cpp",
+        "third_party/icu/source/i18n/dcfmtsym.cpp",
+        "third_party/icu/source/i18n/decContext.cpp",
+        "third_party/icu/source/i18n/decNumber.cpp",
+        "third_party/icu/source/i18n/decimfmt.cpp",
+        "third_party/icu/source/i18n/double-conversion-bignum-dtoa.cpp",
+        "third_party/icu/source/i18n/double-conversion-bignum.cpp",
+        "third_party/icu/source/i18n/double-conversion-cached-powers.cpp",
+        "third_party/icu/source/i18n/double-conversion-double-to-string.cpp",
+        "third_party/icu/source/i18n/double-conversion-fast-dtoa.cpp",
+        "third_party/icu/source/i18n/double-conversion-string-to-double.cpp",
+        "third_party/icu/source/i18n/double-conversion-strtod.cpp",
+        "third_party/icu/source/i18n/dtfmtsym.cpp",
+        "third_party/icu/source/i18n/dtitvfmt.cpp",
+        "third_party/icu/source/i18n/dtitvinf.cpp",
+        "third_party/icu/source/i18n/dtptngen.cpp",
+        "third_party/icu/source/i18n/dtrule.cpp",
+        "third_party/icu/source/i18n/erarules.cpp",
+        "third_party/icu/source/i18n/esctrn.cpp",
+        "third_party/icu/source/i18n/ethpccal.cpp",
+        "third_party/icu/source/i18n/fmtable.cpp",
+        "third_party/icu/source/i18n/fmtable_cnv.cpp",
+        "third_party/icu/source/i18n/format.cpp",
+        "third_party/icu/source/i18n/formatted_string_builder.cpp",
+        "third_party/icu/source/i18n/formattedval_iterimpl.cpp",
+        "third_party/icu/source/i18n/formattedval_sbimpl.cpp",
+        "third_party/icu/source/i18n/formattedvalue.cpp",
+        "third_party/icu/source/i18n/fphdlimp.cpp",
+        "third_party/icu/source/i18n/fpositer.cpp",
+        "third_party/icu/source/i18n/funcrepl.cpp",
+        "third_party/icu/source/i18n/gender.cpp",
+        "third_party/icu/source/i18n/gregocal.cpp",
+        "third_party/icu/source/i18n/gregoimp.cpp",
+        "third_party/icu/source/i18n/hebrwcal.cpp",
+        "third_party/icu/source/i18n/indiancal.cpp",
+        "third_party/icu/source/i18n/inputext.cpp",
+        "third_party/icu/source/i18n/islamcal.cpp",
+        "third_party/icu/source/i18n/japancal.cpp",
+        "third_party/icu/source/i18n/listformatter.cpp",
+        "third_party/icu/source/i18n/measfmt.cpp",
+        "third_party/icu/source/i18n/measunit.cpp",
+        "third_party/icu/source/i18n/measunit_extra.cpp",
+        "third_party/icu/source/i18n/measure.cpp",
+        "third_party/icu/source/i18n/msgfmt.cpp",
+        "third_party/icu/source/i18n/name2uni.cpp",
+        "third_party/icu/source/i18n/nfrs.cpp",
+        "third_party/icu/source/i18n/nfrule.cpp",
+        "third_party/icu/source/i18n/nfsubs.cpp",
+        "third_party/icu/source/i18n/nortrans.cpp",
+        "third_party/icu/source/i18n/nultrans.cpp",
+        "third_party/icu/source/i18n/number_affixutils.cpp",
+        "third_party/icu/source/i18n/number_asformat.cpp",
+        "third_party/icu/source/i18n/number_capi.cpp",
+        "third_party/icu/source/i18n/number_compact.cpp",
+        "third_party/icu/source/i18n/number_currencysymbols.cpp",
+        "third_party/icu/source/i18n/number_decimalquantity.cpp",
+        "third_party/icu/source/i18n/number_decimfmtprops.cpp",
+        "third_party/icu/source/i18n/number_fluent.cpp",
+        "third_party/icu/source/i18n/number_formatimpl.cpp",
+        "third_party/icu/source/i18n/number_grouping.cpp",
+        "third_party/icu/source/i18n/number_integerwidth.cpp",
+        "third_party/icu/source/i18n/number_longnames.cpp",
+        "third_party/icu/source/i18n/number_mapper.cpp",
+        "third_party/icu/source/i18n/number_modifiers.cpp",
+        "third_party/icu/source/i18n/number_multiplier.cpp",
+        "third_party/icu/source/i18n/number_notation.cpp",
+        "third_party/icu/source/i18n/number_output.cpp",
+        "third_party/icu/source/i18n/number_padding.cpp",
+        "third_party/icu/source/i18n/number_patternmodifier.cpp",
+        "third_party/icu/source/i18n/number_patternstring.cpp",
+        "third_party/icu/source/i18n/number_rounding.cpp",
+        "third_party/icu/source/i18n/number_scientific.cpp",
+        "third_party/icu/source/i18n/number_skeletons.cpp",
+        "third_party/icu/source/i18n/number_symbolswrapper.cpp",
+        "third_party/icu/source/i18n/number_usageprefs.cpp",
+        "third_party/icu/source/i18n/number_utils.cpp",
+        "third_party/icu/source/i18n/numfmt.cpp",
+        "third_party/icu/source/i18n/numparse_affixes.cpp",
+        "third_party/icu/source/i18n/numparse_compositions.cpp",
+        "third_party/icu/source/i18n/numparse_currency.cpp",
+        "third_party/icu/source/i18n/numparse_decimal.cpp",
+        "third_party/icu/source/i18n/numparse_impl.cpp",
+        "third_party/icu/source/i18n/numparse_parsednumber.cpp",
+        "third_party/icu/source/i18n/numparse_scientific.cpp",
+        "third_party/icu/source/i18n/numparse_symbols.cpp",
+        "third_party/icu/source/i18n/numparse_validators.cpp",
+        "third_party/icu/source/i18n/numrange_capi.cpp",
+        "third_party/icu/source/i18n/numrange_fluent.cpp",
+        "third_party/icu/source/i18n/numrange_impl.cpp",
+        "third_party/icu/source/i18n/numsys.cpp",
+        "third_party/icu/source/i18n/olsontz.cpp",
+        "third_party/icu/source/i18n/persncal.cpp",
+        "third_party/icu/source/i18n/pluralranges.cpp",
+        "third_party/icu/source/i18n/plurfmt.cpp",
+        "third_party/icu/source/i18n/plurrule.cpp",
+        "third_party/icu/source/i18n/quant.cpp",
+        "third_party/icu/source/i18n/quantityformatter.cpp",
+        "third_party/icu/source/i18n/rbnf.cpp",
+        "third_party/icu/source/i18n/rbt.cpp",
+        "third_party/icu/source/i18n/rbt_data.cpp",
+        "third_party/icu/source/i18n/rbt_pars.cpp",
+        "third_party/icu/source/i18n/rbt_rule.cpp",
+        "third_party/icu/source/i18n/rbt_set.cpp",
+        "third_party/icu/source/i18n/rbtz.cpp",
+        "third_party/icu/source/i18n/regexcmp.cpp",
+        "third_party/icu/source/i18n/regeximp.cpp",
+        "third_party/icu/source/i18n/regexst.cpp",
+        "third_party/icu/source/i18n/regextxt.cpp",
+        "third_party/icu/source/i18n/region.cpp",
+        "third_party/icu/source/i18n/reldatefmt.cpp",
+        "third_party/icu/source/i18n/reldtfmt.cpp",
+        "third_party/icu/source/i18n/rematch.cpp",
+        "third_party/icu/source/i18n/remtrans.cpp",
+        "third_party/icu/source/i18n/repattrn.cpp",
+        "third_party/icu/source/i18n/rulebasedcollator.cpp",
+        "third_party/icu/source/i18n/scientificnumberformatter.cpp",
+        "third_party/icu/source/i18n/scriptset.cpp",
+        "third_party/icu/source/i18n/search.cpp",
+        "third_party/icu/source/i18n/selfmt.cpp",
+        "third_party/icu/source/i18n/sharedbreakiterator.cpp",
+        "third_party/icu/source/i18n/simpletz.cpp",
+        "third_party/icu/source/i18n/smpdtfmt.cpp",
+        "third_party/icu/source/i18n/smpdtfst.cpp",
+        "third_party/icu/source/i18n/sortkey.cpp",
+        "third_party/icu/source/i18n/standardplural.cpp",
+        "third_party/icu/source/i18n/string_segment.cpp",
+        "third_party/icu/source/i18n/strmatch.cpp",
+        "third_party/icu/source/i18n/strrepl.cpp",
+        "third_party/icu/source/i18n/stsearch.cpp",
+        "third_party/icu/source/i18n/taiwncal.cpp",
+        "third_party/icu/source/i18n/timezone.cpp",
+        "third_party/icu/source/i18n/titletrn.cpp",
+        "third_party/icu/source/i18n/tmunit.cpp",
+        "third_party/icu/source/i18n/tmutamt.cpp",
+        "third_party/icu/source/i18n/tmutfmt.cpp",
+        "third_party/icu/source/i18n/tolowtrn.cpp",
+        "third_party/icu/source/i18n/toupptrn.cpp",
+        "third_party/icu/source/i18n/translit.cpp",
+        "third_party/icu/source/i18n/transreg.cpp",
+        "third_party/icu/source/i18n/tridpars.cpp",
+        "third_party/icu/source/i18n/tzfmt.cpp",
+        "third_party/icu/source/i18n/tzgnames.cpp",
+        "third_party/icu/source/i18n/tznames.cpp",
+        "third_party/icu/source/i18n/tznames_impl.cpp",
+        "third_party/icu/source/i18n/tzrule.cpp",
+        "third_party/icu/source/i18n/tztrans.cpp",
+        "third_party/icu/source/i18n/ucal.cpp",
+        "third_party/icu/source/i18n/ucln_in.cpp",
+        "third_party/icu/source/i18n/ucol.cpp",
+        "third_party/icu/source/i18n/ucol_res.cpp",
+        "third_party/icu/source/i18n/ucol_sit.cpp",
+        "third_party/icu/source/i18n/ucoleitr.cpp",
+        "third_party/icu/source/i18n/ucsdet.cpp",
+        "third_party/icu/source/i18n/udat.cpp",
+        "third_party/icu/source/i18n/udateintervalformat.cpp",
+        "third_party/icu/source/i18n/udatpg.cpp",
+        "third_party/icu/source/i18n/ufieldpositer.cpp",
+        "third_party/icu/source/i18n/uitercollationiterator.cpp",
+        "third_party/icu/source/i18n/ulistformatter.cpp",
+        "third_party/icu/source/i18n/ulocdata.cpp",
+        "third_party/icu/source/i18n/umsg.cpp",
+        "third_party/icu/source/i18n/unesctrn.cpp",
+        "third_party/icu/source/i18n/uni2name.cpp",
+        "third_party/icu/source/i18n/units_complexconverter.cpp",
+        "third_party/icu/source/i18n/units_converter.cpp",
+        "third_party/icu/source/i18n/units_data.cpp",
+        "third_party/icu/source/i18n/units_router.cpp",
+        "third_party/icu/source/i18n/unum.cpp",
+        "third_party/icu/source/i18n/unumsys.cpp",
+        "third_party/icu/source/i18n/upluralrules.cpp",
+        "third_party/icu/source/i18n/uregex.cpp",
+        "third_party/icu/source/i18n/uregexc.cpp",
+        "third_party/icu/source/i18n/uregion.cpp",
+        "third_party/icu/source/i18n/usearch.cpp",
+        "third_party/icu/source/i18n/uspoof.cpp",
+        "third_party/icu/source/i18n/uspoof_build.cpp",
+        "third_party/icu/source/i18n/uspoof_conf.cpp",
+        "third_party/icu/source/i18n/uspoof_impl.cpp",
+        "third_party/icu/source/i18n/utf16collationiterator.cpp",
+        "third_party/icu/source/i18n/utf8collationiterator.cpp",
+        "third_party/icu/source/i18n/utmscale.cpp",
+        "third_party/icu/source/i18n/utrans.cpp",
+        "third_party/icu/source/i18n/vtzone.cpp",
+        "third_party/icu/source/i18n/vzone.cpp",
+        "third_party/icu/source/i18n/windtfmt.cpp",
+        "third_party/icu/source/i18n/winnmfmt.cpp",
+        "third_party/icu/source/i18n/wintzimpl.cpp",
+        "third_party/icu/source/i18n/zonemeta.cpp",
+        "third_party/icu/source/i18n/zrule.cpp",
+        "third_party/icu/source/i18n/ztrans.cpp",
+    ],
     static_libs: [
         "cronet_aml_third_party_icu_icuuc_private",
     ],
@@ -9135,6 +5528,7 @@
         "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
+    rtti: true,
 }
 
 // GN: //third_party/icu:icuuc_private
@@ -9142,6 +5536,205 @@
     name: "cronet_aml_third_party_icu_icuuc_private",
     srcs: [
         ":cronet_aml_third_party_icu_icuuc_public",
+        "third_party/icu/source/common/appendable.cpp",
+        "third_party/icu/source/common/bmpset.cpp",
+        "third_party/icu/source/common/brkeng.cpp",
+        "third_party/icu/source/common/brkiter.cpp",
+        "third_party/icu/source/common/bytesinkutil.cpp",
+        "third_party/icu/source/common/bytestream.cpp",
+        "third_party/icu/source/common/bytestrie.cpp",
+        "third_party/icu/source/common/bytestriebuilder.cpp",
+        "third_party/icu/source/common/bytestrieiterator.cpp",
+        "third_party/icu/source/common/caniter.cpp",
+        "third_party/icu/source/common/characterproperties.cpp",
+        "third_party/icu/source/common/chariter.cpp",
+        "third_party/icu/source/common/charstr.cpp",
+        "third_party/icu/source/common/cmemory.cpp",
+        "third_party/icu/source/common/cstr.cpp",
+        "third_party/icu/source/common/cstring.cpp",
+        "third_party/icu/source/common/cwchar.cpp",
+        "third_party/icu/source/common/dictbe.cpp",
+        "third_party/icu/source/common/dictionarydata.cpp",
+        "third_party/icu/source/common/dtintrv.cpp",
+        "third_party/icu/source/common/edits.cpp",
+        "third_party/icu/source/common/emojiprops.cpp",
+        "third_party/icu/source/common/errorcode.cpp",
+        "third_party/icu/source/common/filteredbrk.cpp",
+        "third_party/icu/source/common/filterednormalizer2.cpp",
+        "third_party/icu/source/common/icudataver.cpp",
+        "third_party/icu/source/common/icuplug.cpp",
+        "third_party/icu/source/common/loadednormalizer2impl.cpp",
+        "third_party/icu/source/common/localebuilder.cpp",
+        "third_party/icu/source/common/localematcher.cpp",
+        "third_party/icu/source/common/localeprioritylist.cpp",
+        "third_party/icu/source/common/locavailable.cpp",
+        "third_party/icu/source/common/locbased.cpp",
+        "third_party/icu/source/common/locdispnames.cpp",
+        "third_party/icu/source/common/locdistance.cpp",
+        "third_party/icu/source/common/locdspnm.cpp",
+        "third_party/icu/source/common/locid.cpp",
+        "third_party/icu/source/common/loclikely.cpp",
+        "third_party/icu/source/common/loclikelysubtags.cpp",
+        "third_party/icu/source/common/locmap.cpp",
+        "third_party/icu/source/common/locresdata.cpp",
+        "third_party/icu/source/common/locutil.cpp",
+        "third_party/icu/source/common/lsr.cpp",
+        "third_party/icu/source/common/lstmbe.cpp",
+        "third_party/icu/source/common/messagepattern.cpp",
+        "third_party/icu/source/common/normalizer2.cpp",
+        "third_party/icu/source/common/normalizer2impl.cpp",
+        "third_party/icu/source/common/normlzr.cpp",
+        "third_party/icu/source/common/parsepos.cpp",
+        "third_party/icu/source/common/patternprops.cpp",
+        "third_party/icu/source/common/pluralmap.cpp",
+        "third_party/icu/source/common/propname.cpp",
+        "third_party/icu/source/common/propsvec.cpp",
+        "third_party/icu/source/common/punycode.cpp",
+        "third_party/icu/source/common/putil.cpp",
+        "third_party/icu/source/common/rbbi.cpp",
+        "third_party/icu/source/common/rbbi_cache.cpp",
+        "third_party/icu/source/common/rbbidata.cpp",
+        "third_party/icu/source/common/rbbinode.cpp",
+        "third_party/icu/source/common/rbbirb.cpp",
+        "third_party/icu/source/common/rbbiscan.cpp",
+        "third_party/icu/source/common/rbbisetb.cpp",
+        "third_party/icu/source/common/rbbistbl.cpp",
+        "third_party/icu/source/common/rbbitblb.cpp",
+        "third_party/icu/source/common/resbund.cpp",
+        "third_party/icu/source/common/resbund_cnv.cpp",
+        "third_party/icu/source/common/resource.cpp",
+        "third_party/icu/source/common/restrace.cpp",
+        "third_party/icu/source/common/ruleiter.cpp",
+        "third_party/icu/source/common/schriter.cpp",
+        "third_party/icu/source/common/serv.cpp",
+        "third_party/icu/source/common/servlk.cpp",
+        "third_party/icu/source/common/servlkf.cpp",
+        "third_party/icu/source/common/servls.cpp",
+        "third_party/icu/source/common/servnotf.cpp",
+        "third_party/icu/source/common/servrbf.cpp",
+        "third_party/icu/source/common/servslkf.cpp",
+        "third_party/icu/source/common/sharedobject.cpp",
+        "third_party/icu/source/common/simpleformatter.cpp",
+        "third_party/icu/source/common/static_unicode_sets.cpp",
+        "third_party/icu/source/common/stringpiece.cpp",
+        "third_party/icu/source/common/stringtriebuilder.cpp",
+        "third_party/icu/source/common/uarrsort.cpp",
+        "third_party/icu/source/common/ubidi.cpp",
+        "third_party/icu/source/common/ubidi_props.cpp",
+        "third_party/icu/source/common/ubidiln.cpp",
+        "third_party/icu/source/common/ubiditransform.cpp",
+        "third_party/icu/source/common/ubidiwrt.cpp",
+        "third_party/icu/source/common/ubrk.cpp",
+        "third_party/icu/source/common/ucase.cpp",
+        "third_party/icu/source/common/ucasemap.cpp",
+        "third_party/icu/source/common/ucasemap_titlecase_brkiter.cpp",
+        "third_party/icu/source/common/ucat.cpp",
+        "third_party/icu/source/common/uchar.cpp",
+        "third_party/icu/source/common/ucharstrie.cpp",
+        "third_party/icu/source/common/ucharstriebuilder.cpp",
+        "third_party/icu/source/common/ucharstrieiterator.cpp",
+        "third_party/icu/source/common/uchriter.cpp",
+        "third_party/icu/source/common/ucln_cmn.cpp",
+        "third_party/icu/source/common/ucmndata.cpp",
+        "third_party/icu/source/common/ucnv.cpp",
+        "third_party/icu/source/common/ucnv2022.cpp",
+        "third_party/icu/source/common/ucnv_bld.cpp",
+        "third_party/icu/source/common/ucnv_cb.cpp",
+        "third_party/icu/source/common/ucnv_cnv.cpp",
+        "third_party/icu/source/common/ucnv_ct.cpp",
+        "third_party/icu/source/common/ucnv_err.cpp",
+        "third_party/icu/source/common/ucnv_ext.cpp",
+        "third_party/icu/source/common/ucnv_io.cpp",
+        "third_party/icu/source/common/ucnv_lmb.cpp",
+        "third_party/icu/source/common/ucnv_set.cpp",
+        "third_party/icu/source/common/ucnv_u16.cpp",
+        "third_party/icu/source/common/ucnv_u32.cpp",
+        "third_party/icu/source/common/ucnv_u7.cpp",
+        "third_party/icu/source/common/ucnv_u8.cpp",
+        "third_party/icu/source/common/ucnvbocu.cpp",
+        "third_party/icu/source/common/ucnvdisp.cpp",
+        "third_party/icu/source/common/ucnvhz.cpp",
+        "third_party/icu/source/common/ucnvisci.cpp",
+        "third_party/icu/source/common/ucnvlat1.cpp",
+        "third_party/icu/source/common/ucnvmbcs.cpp",
+        "third_party/icu/source/common/ucnvscsu.cpp",
+        "third_party/icu/source/common/ucnvsel.cpp",
+        "third_party/icu/source/common/ucol_swp.cpp",
+        "third_party/icu/source/common/ucptrie.cpp",
+        "third_party/icu/source/common/ucurr.cpp",
+        "third_party/icu/source/common/udata.cpp",
+        "third_party/icu/source/common/udatamem.cpp",
+        "third_party/icu/source/common/udataswp.cpp",
+        "third_party/icu/source/common/uenum.cpp",
+        "third_party/icu/source/common/uhash.cpp",
+        "third_party/icu/source/common/uhash_us.cpp",
+        "third_party/icu/source/common/uidna.cpp",
+        "third_party/icu/source/common/uinit.cpp",
+        "third_party/icu/source/common/uinvchar.cpp",
+        "third_party/icu/source/common/uiter.cpp",
+        "third_party/icu/source/common/ulist.cpp",
+        "third_party/icu/source/common/uloc.cpp",
+        "third_party/icu/source/common/uloc_keytype.cpp",
+        "third_party/icu/source/common/uloc_tag.cpp",
+        "third_party/icu/source/common/umapfile.cpp",
+        "third_party/icu/source/common/umath.cpp",
+        "third_party/icu/source/common/umutablecptrie.cpp",
+        "third_party/icu/source/common/umutex.cpp",
+        "third_party/icu/source/common/unames.cpp",
+        "third_party/icu/source/common/unifiedcache.cpp",
+        "third_party/icu/source/common/unifilt.cpp",
+        "third_party/icu/source/common/unifunct.cpp",
+        "third_party/icu/source/common/uniset.cpp",
+        "third_party/icu/source/common/uniset_closure.cpp",
+        "third_party/icu/source/common/uniset_props.cpp",
+        "third_party/icu/source/common/unisetspan.cpp",
+        "third_party/icu/source/common/unistr.cpp",
+        "third_party/icu/source/common/unistr_case.cpp",
+        "third_party/icu/source/common/unistr_case_locale.cpp",
+        "third_party/icu/source/common/unistr_cnv.cpp",
+        "third_party/icu/source/common/unistr_props.cpp",
+        "third_party/icu/source/common/unistr_titlecase_brkiter.cpp",
+        "third_party/icu/source/common/unorm.cpp",
+        "third_party/icu/source/common/unormcmp.cpp",
+        "third_party/icu/source/common/uobject.cpp",
+        "third_party/icu/source/common/uprops.cpp",
+        "third_party/icu/source/common/ures_cnv.cpp",
+        "third_party/icu/source/common/uresbund.cpp",
+        "third_party/icu/source/common/uresdata.cpp",
+        "third_party/icu/source/common/usc_impl.cpp",
+        "third_party/icu/source/common/uscript.cpp",
+        "third_party/icu/source/common/uscript_props.cpp",
+        "third_party/icu/source/common/uset.cpp",
+        "third_party/icu/source/common/uset_props.cpp",
+        "third_party/icu/source/common/usetiter.cpp",
+        "third_party/icu/source/common/ushape.cpp",
+        "third_party/icu/source/common/usprep.cpp",
+        "third_party/icu/source/common/ustack.cpp",
+        "third_party/icu/source/common/ustr_cnv.cpp",
+        "third_party/icu/source/common/ustr_titlecase_brkiter.cpp",
+        "third_party/icu/source/common/ustr_wcs.cpp",
+        "third_party/icu/source/common/ustrcase.cpp",
+        "third_party/icu/source/common/ustrcase_locale.cpp",
+        "third_party/icu/source/common/ustrenum.cpp",
+        "third_party/icu/source/common/ustrfmt.cpp",
+        "third_party/icu/source/common/ustring.cpp",
+        "third_party/icu/source/common/ustrtrns.cpp",
+        "third_party/icu/source/common/utext.cpp",
+        "third_party/icu/source/common/utf_impl.cpp",
+        "third_party/icu/source/common/util.cpp",
+        "third_party/icu/source/common/util_props.cpp",
+        "third_party/icu/source/common/utrace.cpp",
+        "third_party/icu/source/common/utrie.cpp",
+        "third_party/icu/source/common/utrie2.cpp",
+        "third_party/icu/source/common/utrie2_builder.cpp",
+        "third_party/icu/source/common/utrie_swap.cpp",
+        "third_party/icu/source/common/uts46.cpp",
+        "third_party/icu/source/common/utypes.cpp",
+        "third_party/icu/source/common/uvector.cpp",
+        "third_party/icu/source/common/uvectr32.cpp",
+        "third_party/icu/source/common/uvectr64.cpp",
+        "third_party/icu/source/common/wintz.cpp",
+        "third_party/icu/source/stubdata/stubdata.cpp",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -9186,6 +5779,7 @@
         "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
+    rtti: true,
 }
 
 // GN: //third_party/icu:icuuc_public
@@ -9193,66 +5787,6 @@
     name: "cronet_aml_third_party_icu_icuuc_public",
 }
 
-// GN: //third_party/ijar:ijar
-cc_binary {
-    name: "cronet_aml_third_party_ijar_ijar",
-    srcs: [
-        ":cronet_aml_buildtools_third_party_libc___libc__",
-        ":cronet_aml_buildtools_third_party_libc__abi_libc__abi",
-        "third_party/ijar/classfile.cc",
-        "third_party/ijar/ijar.cc",
-        "third_party/ijar/mapped_file_unix.cc",
-        "third_party/ijar/platform_utils.cc",
-        "third_party/ijar/zip.cc",
-        "third_party/ijar/zlib_client.cc",
-    ],
-    static_libs: [
-        "cronet_aml_third_party_zlib_zlib",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=0",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DLIBCXXABI_SILENT_TERMINATE",
-        "-DLIBCXX_BUILDING_LIBCXXABI",
-        "-DNDEBUG",
-        "-DNVALGRIND",
-        "-DUSE_AURA=1",
-        "-DUSE_OZONE=1",
-        "-DUSE_UDEV",
-        "-D_DEBUG",
-        "-D_FILE_OFFSET_BITS=64",
-        "-D_GNU_SOURCE",
-        "-D_LARGEFILE64_SOURCE",
-        "-D_LARGEFILE_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_BUILDING_LIBRARY",
-        "-D_LIBCPP_CONSTINIT=constinit",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCPP_OVERRIDABLE_FUNC_VIS=__attribute__((__visibility__(\"default\")))",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D__STDC_CONSTANT_MACROS",
-        "-D__STDC_FORMAT_MACROS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++/trunk/src/",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/zlib/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
 // GN: //third_party/libevent:libevent
 cc_library_static {
     name: "cronet_aml_third_party_libevent_libevent",
@@ -9302,6 +5836,145 @@
     cpp_std: "c++20",
 }
 
+// GN: //third_party/metrics_proto:metrics_proto
+genrule {
+    name: "cronet_aml_third_party_metrics_proto_metrics_proto_gen",
+    srcs: [
+        "third_party/metrics_proto/call_stack_profile.proto",
+        "third_party/metrics_proto/cast_logs.proto",
+        "third_party/metrics_proto/chrome_os_app_list_launch_event.proto",
+        "third_party/metrics_proto/chrome_searchbox_stats.proto",
+        "third_party/metrics_proto/chrome_user_metrics_extension.proto",
+        "third_party/metrics_proto/custom_tab_session.proto",
+        "third_party/metrics_proto/execution_context.proto",
+        "third_party/metrics_proto/extension_install.proto",
+        "third_party/metrics_proto/histogram_event.proto",
+        "third_party/metrics_proto/omnibox_event.proto",
+        "third_party/metrics_proto/omnibox_focus_type.proto",
+        "third_party/metrics_proto/omnibox_input_type.proto",
+        "third_party/metrics_proto/perf_data.proto",
+        "third_party/metrics_proto/perf_stat.proto",
+        "third_party/metrics_proto/printer_event.proto",
+        "third_party/metrics_proto/reporting_info.proto",
+        "third_party/metrics_proto/sampled_profile.proto",
+        "third_party/metrics_proto/structured_data.proto",
+        "third_party/metrics_proto/system_profile.proto",
+        "third_party/metrics_proto/trace_log.proto",
+        "third_party/metrics_proto/translate_event.proto",
+        "third_party/metrics_proto/ukm/aggregate.proto",
+        "third_party/metrics_proto/ukm/entry.proto",
+        "third_party/metrics_proto/ukm/report.proto",
+        "third_party/metrics_proto/ukm/source.proto",
+        "third_party/metrics_proto/user_action_event.proto",
+        "third_party/metrics_proto/user_demographics.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/third_party/metrics_proto --cpp_out=lite=true:$(genDir)/external/chromium_org/third_party/metrics_proto/ $(in)",
+    out: [
+        "external/chromium_org/third_party/metrics_proto/call_stack_profile.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/cast_logs.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/chrome_os_app_list_launch_event.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/chrome_searchbox_stats.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/chrome_user_metrics_extension.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/custom_tab_session.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/execution_context.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/extension_install.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/histogram_event.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/omnibox_event.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/omnibox_focus_type.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/omnibox_input_type.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/perf_data.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/perf_stat.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/printer_event.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/reporting_info.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/sampled_profile.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/structured_data.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/system_profile.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/trace_log.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/translate_event.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/ukm/aggregate.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/ukm/entry.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/ukm/report.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/ukm/source.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/user_action_event.pb.cc",
+        "external/chromium_org/third_party/metrics_proto/user_demographics.pb.cc",
+    ],
+}
+
+// GN: //third_party/metrics_proto:metrics_proto
+genrule {
+    name: "cronet_aml_third_party_metrics_proto_metrics_proto_gen_headers",
+    srcs: [
+        "third_party/metrics_proto/call_stack_profile.proto",
+        "third_party/metrics_proto/cast_logs.proto",
+        "third_party/metrics_proto/chrome_os_app_list_launch_event.proto",
+        "third_party/metrics_proto/chrome_searchbox_stats.proto",
+        "third_party/metrics_proto/chrome_user_metrics_extension.proto",
+        "third_party/metrics_proto/custom_tab_session.proto",
+        "third_party/metrics_proto/execution_context.proto",
+        "third_party/metrics_proto/extension_install.proto",
+        "third_party/metrics_proto/histogram_event.proto",
+        "third_party/metrics_proto/omnibox_event.proto",
+        "third_party/metrics_proto/omnibox_focus_type.proto",
+        "third_party/metrics_proto/omnibox_input_type.proto",
+        "third_party/metrics_proto/perf_data.proto",
+        "third_party/metrics_proto/perf_stat.proto",
+        "third_party/metrics_proto/printer_event.proto",
+        "third_party/metrics_proto/reporting_info.proto",
+        "third_party/metrics_proto/sampled_profile.proto",
+        "third_party/metrics_proto/structured_data.proto",
+        "third_party/metrics_proto/system_profile.proto",
+        "third_party/metrics_proto/trace_log.proto",
+        "third_party/metrics_proto/translate_event.proto",
+        "third_party/metrics_proto/ukm/aggregate.proto",
+        "third_party/metrics_proto/ukm/entry.proto",
+        "third_party/metrics_proto/ukm/report.proto",
+        "third_party/metrics_proto/ukm/source.proto",
+        "third_party/metrics_proto/user_action_event.proto",
+        "third_party/metrics_proto/user_demographics.proto",
+    ],
+    tools: [
+        "aprotoc",
+    ],
+    cmd: "$(location aprotoc) --proto_path=external/chromium_org/third_party/metrics_proto --cpp_out=lite=true:$(genDir)/external/chromium_org/third_party/metrics_proto/ $(in)",
+    out: [
+        "external/chromium_org/third_party/metrics_proto/call_stack_profile.pb.h",
+        "external/chromium_org/third_party/metrics_proto/cast_logs.pb.h",
+        "external/chromium_org/third_party/metrics_proto/chrome_os_app_list_launch_event.pb.h",
+        "external/chromium_org/third_party/metrics_proto/chrome_searchbox_stats.pb.h",
+        "external/chromium_org/third_party/metrics_proto/chrome_user_metrics_extension.pb.h",
+        "external/chromium_org/third_party/metrics_proto/custom_tab_session.pb.h",
+        "external/chromium_org/third_party/metrics_proto/execution_context.pb.h",
+        "external/chromium_org/third_party/metrics_proto/extension_install.pb.h",
+        "external/chromium_org/third_party/metrics_proto/histogram_event.pb.h",
+        "external/chromium_org/third_party/metrics_proto/omnibox_event.pb.h",
+        "external/chromium_org/third_party/metrics_proto/omnibox_focus_type.pb.h",
+        "external/chromium_org/third_party/metrics_proto/omnibox_input_type.pb.h",
+        "external/chromium_org/third_party/metrics_proto/perf_data.pb.h",
+        "external/chromium_org/third_party/metrics_proto/perf_stat.pb.h",
+        "external/chromium_org/third_party/metrics_proto/printer_event.pb.h",
+        "external/chromium_org/third_party/metrics_proto/reporting_info.pb.h",
+        "external/chromium_org/third_party/metrics_proto/sampled_profile.pb.h",
+        "external/chromium_org/third_party/metrics_proto/structured_data.pb.h",
+        "external/chromium_org/third_party/metrics_proto/system_profile.pb.h",
+        "external/chromium_org/third_party/metrics_proto/trace_log.pb.h",
+        "external/chromium_org/third_party/metrics_proto/translate_event.pb.h",
+        "external/chromium_org/third_party/metrics_proto/ukm/aggregate.pb.h",
+        "external/chromium_org/third_party/metrics_proto/ukm/entry.pb.h",
+        "external/chromium_org/third_party/metrics_proto/ukm/report.pb.h",
+        "external/chromium_org/third_party/metrics_proto/ukm/source.pb.h",
+        "external/chromium_org/third_party/metrics_proto/user_action_event.pb.h",
+        "external/chromium_org/third_party/metrics_proto/user_demographics.pb.h",
+    ],
+    export_include_dirs: [
+        ".",
+        "protos",
+        "third_party/metrics_proto",
+    ],
+}
+
 // GN: //third_party/modp_b64:modp_b64
 cc_library_static {
     name: "cronet_aml_third_party_modp_b64_modp_b64",
@@ -9338,398 +6011,11 @@
     cpp_std: "c++20",
 }
 
-// GN: //third_party/protobuf:protobuf_full
-cc_library_static {
-    name: "cronet_aml_third_party_protobuf_protobuf_full",
-    srcs: [
-        "third_party/protobuf/src/google/protobuf/any.cc",
-        "third_party/protobuf/src/google/protobuf/any.pb.cc",
-        "third_party/protobuf/src/google/protobuf/any_lite.cc",
-        "third_party/protobuf/src/google/protobuf/api.pb.cc",
-        "third_party/protobuf/src/google/protobuf/arena.cc",
-        "third_party/protobuf/src/google/protobuf/arenastring.cc",
-        "third_party/protobuf/src/google/protobuf/arenaz_sampler.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/importer.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/parser.cc",
-        "third_party/protobuf/src/google/protobuf/descriptor.cc",
-        "third_party/protobuf/src/google/protobuf/descriptor.pb.cc",
-        "third_party/protobuf/src/google/protobuf/descriptor_database.cc",
-        "third_party/protobuf/src/google/protobuf/duration.pb.cc",
-        "third_party/protobuf/src/google/protobuf/dynamic_message.cc",
-        "third_party/protobuf/src/google/protobuf/empty.pb.cc",
-        "third_party/protobuf/src/google/protobuf/extension_set.cc",
-        "third_party/protobuf/src/google/protobuf/extension_set_heavy.cc",
-        "third_party/protobuf/src/google/protobuf/field_mask.pb.cc",
-        "third_party/protobuf/src/google/protobuf/generated_enum_util.cc",
-        "third_party/protobuf/src/google/protobuf/generated_message_bases.cc",
-        "third_party/protobuf/src/google/protobuf/generated_message_reflection.cc",
-        "third_party/protobuf/src/google/protobuf/generated_message_tctable_full.cc",
-        "third_party/protobuf/src/google/protobuf/generated_message_tctable_lite.cc",
-        "third_party/protobuf/src/google/protobuf/generated_message_util.cc",
-        "third_party/protobuf/src/google/protobuf/implicit_weak_message.cc",
-        "third_party/protobuf/src/google/protobuf/inlined_string_field.cc",
-        "third_party/protobuf/src/google/protobuf/io/coded_stream.cc",
-        "third_party/protobuf/src/google/protobuf/io/gzip_stream.cc",
-        "third_party/protobuf/src/google/protobuf/io/io_win32.cc",
-        "third_party/protobuf/src/google/protobuf/io/printer.cc",
-        "third_party/protobuf/src/google/protobuf/io/strtod.cc",
-        "third_party/protobuf/src/google/protobuf/io/tokenizer.cc",
-        "third_party/protobuf/src/google/protobuf/io/zero_copy_stream.cc",
-        "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc",
-        "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
-        "third_party/protobuf/src/google/protobuf/map.cc",
-        "third_party/protobuf/src/google/protobuf/map_field.cc",
-        "third_party/protobuf/src/google/protobuf/message.cc",
-        "third_party/protobuf/src/google/protobuf/message_lite.cc",
-        "third_party/protobuf/src/google/protobuf/parse_context.cc",
-        "third_party/protobuf/src/google/protobuf/reflection_ops.cc",
-        "third_party/protobuf/src/google/protobuf/repeated_field.cc",
-        "third_party/protobuf/src/google/protobuf/repeated_ptr_field.cc",
-        "third_party/protobuf/src/google/protobuf/service.cc",
-        "third_party/protobuf/src/google/protobuf/source_context.pb.cc",
-        "third_party/protobuf/src/google/protobuf/struct.pb.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/bytestream.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/common.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/int128.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/status.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/statusor.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/stringpiece.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/stringprintf.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/structurally_valid.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/strutil.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/substitute.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/time.cc",
-        "third_party/protobuf/src/google/protobuf/text_format.cc",
-        "third_party/protobuf/src/google/protobuf/timestamp.pb.cc",
-        "third_party/protobuf/src/google/protobuf/type.pb.cc",
-        "third_party/protobuf/src/google/protobuf/unknown_field_set.cc",
-        "third_party/protobuf/src/google/protobuf/util/delimited_message_util.cc",
-        "third_party/protobuf/src/google/protobuf/util/field_comparator.cc",
-        "third_party/protobuf/src/google/protobuf/util/field_mask_util.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/datapiece.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/default_value_objectwriter.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/error_listener.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/field_mask_utility.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/json_escaping.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/json_objectwriter.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/json_stream_parser.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/object_writer.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/proto_writer.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/protostream_objectsource.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/protostream_objectwriter.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/type_info.cc",
-        "third_party/protobuf/src/google/protobuf/util/internal/utility.cc",
-        "third_party/protobuf/src/google/protobuf/util/json_util.cc",
-        "third_party/protobuf/src/google/protobuf/util/message_differencer.cc",
-        "third_party/protobuf/src/google/protobuf/util/time_util.cc",
-        "third_party/protobuf/src/google/protobuf/util/type_resolver_util.cc",
-        "third_party/protobuf/src/google/protobuf/wire_format.cc",
-        "third_party/protobuf/src/google/protobuf/wire_format_lite.cc",
-        "third_party/protobuf/src/google/protobuf/wrappers.pb.cc",
-    ],
-    static_libs: [
-        "cronet_aml_third_party_zlib_zlib",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DHAVE_ZLIB",
-        "-DUSE_AURA=1",
-        "-DUSE_OZONE=1",
-        "-DUSE_UDEV",
-        "-D_DEBUG",
-        "-D_FILE_OFFSET_BITS=64",
-        "-D_GNU_SOURCE",
-        "-D_LARGEFILE64_SOURCE",
-        "-D_LARGEFILE_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/protobuf/src/",
-        "third_party/zlib/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //third_party/protobuf:protobuf_lite
-cc_library_static {
-    name: "cronet_aml_third_party_protobuf_protobuf_lite",
-    srcs: [
-        "third_party/protobuf/src/google/protobuf/any_lite.cc",
-        "third_party/protobuf/src/google/protobuf/arena.cc",
-        "third_party/protobuf/src/google/protobuf/arenastring.cc",
-        "third_party/protobuf/src/google/protobuf/arenaz_sampler.cc",
-        "third_party/protobuf/src/google/protobuf/extension_set.cc",
-        "third_party/protobuf/src/google/protobuf/generated_enum_util.cc",
-        "third_party/protobuf/src/google/protobuf/generated_message_tctable_lite.cc",
-        "third_party/protobuf/src/google/protobuf/generated_message_util.cc",
-        "third_party/protobuf/src/google/protobuf/implicit_weak_message.cc",
-        "third_party/protobuf/src/google/protobuf/inlined_string_field.cc",
-        "third_party/protobuf/src/google/protobuf/io/coded_stream.cc",
-        "third_party/protobuf/src/google/protobuf/io/io_win32.cc",
-        "third_party/protobuf/src/google/protobuf/io/strtod.cc",
-        "third_party/protobuf/src/google/protobuf/io/zero_copy_stream.cc",
-        "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl.cc",
-        "third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc",
-        "third_party/protobuf/src/google/protobuf/map.cc",
-        "third_party/protobuf/src/google/protobuf/message_lite.cc",
-        "third_party/protobuf/src/google/protobuf/parse_context.cc",
-        "third_party/protobuf/src/google/protobuf/repeated_field.cc",
-        "third_party/protobuf/src/google/protobuf/repeated_ptr_field.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/bytestream.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/common.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/int128.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/status.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/statusor.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/stringpiece.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/stringprintf.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/structurally_valid.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/strutil.cc",
-        "third_party/protobuf/src/google/protobuf/stubs/time.cc",
-        "third_party/protobuf/src/google/protobuf/wire_format_lite.cc",
-    ],
-    shared_libs: [
-        "liblog",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DANDROID",
-        "-DANDROID_NDK_VERSION_ROLL=r23_1",
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DHAVE_SYS_UIO_H",
-        "-D_DEBUG",
-        "-D_GNU_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/protobuf/src/",
-        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //third_party/protobuf:protoc
-cc_binary {
-    name: "cronet_aml_third_party_protobuf_protoc",
-    srcs: [
-        ":cronet_aml_buildtools_third_party_libc___libc__",
-        ":cronet_aml_buildtools_third_party_libc__abi_libc__abi",
-        "third_party/protobuf/src/google/protobuf/compiler/main.cc",
-    ],
-    static_libs: [
-        "cronet_aml_third_party_protobuf_protoc_lib",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DLIBCXXABI_SILENT_TERMINATE",
-        "-DLIBCXX_BUILDING_LIBCXXABI",
-        "-DUSE_AURA=1",
-        "-DUSE_OZONE=1",
-        "-DUSE_UDEV",
-        "-D_DEBUG",
-        "-D_FILE_OFFSET_BITS=64",
-        "-D_GNU_SOURCE",
-        "-D_LARGEFILE64_SOURCE",
-        "-D_LARGEFILE_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_BUILDING_LIBRARY",
-        "-D_LIBCPP_CONSTINIT=constinit",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCPP_OVERRIDABLE_FUNC_VIS=__attribute__((__visibility__(\"default\")))",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++/trunk/src/",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/protobuf/src/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
-// GN: //third_party/protobuf:protoc_lib
-cc_library_static {
-    name: "cronet_aml_third_party_protobuf_protoc_lib",
-    srcs: [
-        "third_party/protobuf/src/google/protobuf/compiler/code_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/command_line_interface.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_enum.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_enum_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_extension.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_file.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_helpers.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_map_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_message.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_message_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_padding_optimizer.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_parse_function_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_primitive_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_service.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/cpp/cpp_string_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_doc_comment.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_enum.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_enum_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_field_base.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_helpers.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_map_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_message.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_message_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_reflection_class.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_enum_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_message_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_repeated_primitive_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_source_generator_base.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/csharp/csharp_wrapper_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_context.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_doc_comment.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_enum.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_enum_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_enum_field_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_enum_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_extension.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_extension_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_file.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_generator_factory.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_helpers.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_kotlin_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_map_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_map_field_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_message.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_message_builder.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_message_builder_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_message_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_message_field_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_message_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_name_resolver.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_primitive_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_primitive_field_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_service.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_shared_code_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_string_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/java/java_string_field_lite.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/js/js_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/js/well_known_types_embed.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_enum_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_extension.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_file.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_helpers.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_map_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_message_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_oneof.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/objectivec/objectivec_primitive_field.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/php/php_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/plugin.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/plugin.pb.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/python/python_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/python/python_helpers.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/python/python_pyi_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/ruby/ruby_generator.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/subprocess.cc",
-        "third_party/protobuf/src/google/protobuf/compiler/zip_writer.cc",
-    ],
-    static_libs: [
-        "cronet_aml_third_party_protobuf_protobuf_full",
-    ],
-    defaults: [
-        "cronet_aml_defaults",
-    ],
-    cflags: [
-        "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
-        "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
-        "-DDCHECK_ALWAYS_ON=1",
-        "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
-        "-DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0",
-        "-DGOOGLE_PROTOBUF_NO_RTTI",
-        "-DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER",
-        "-DHAVE_PTHREAD",
-        "-DUSE_AURA=1",
-        "-DUSE_OZONE=1",
-        "-DUSE_UDEV",
-        "-D_DEBUG",
-        "-D_FILE_OFFSET_BITS=64",
-        "-D_GNU_SOURCE",
-        "-D_LARGEFILE64_SOURCE",
-        "-D_LARGEFILE_SOURCE",
-        "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
-        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
-        "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
-        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
-    ],
-    local_include_dirs: [
-        "./",
-        "buildtools/third_party/libc++/",
-        "buildtools/third_party/libc++/trunk/include",
-        "buildtools/third_party/libc++abi/trunk/include",
-        "third_party/protobuf/src/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
-    ],
-    cpp_std: "c++20",
-}
-
 // GN: //third_party/zlib:zlib
 cc_library_static {
     name: "cronet_aml_third_party_zlib_zlib",
     srcs: [
+        ":cronet_aml_third_party_android_ndk_cpu_features",
         ":cronet_aml_third_party_zlib_zlib_adler32_simd",
         ":cronet_aml_third_party_zlib_zlib_common_headers",
         ":cronet_aml_third_party_zlib_zlib_crc32_simd",
@@ -9756,26 +6042,22 @@
     ],
     cflags: [
         "-DADLER32_SIMD_SSSE3",
+        "-DANDROID",
+        "-DANDROID_NDK_VERSION_ROLL=r23_1",
         "-DCRC32_SIMD_SSE42_PCLMUL",
         "-DCR_CLANG_REVISION=\"llvmorg-16-init-8697-g60809cd2-1\"",
         "-DCR_LIBCXX_REVISION=47b31179d10646029c260702650a25d24f555acc",
-        "-DCR_SYSROOT_KEY=20220331T153654Z-0",
         "-DDCHECK_ALWAYS_ON=1",
         "-DDEFLATE_SLIDE_HASH_SSE2",
         "-DDYNAMIC_ANNOTATIONS_ENABLED=1",
+        "-DHAVE_SYS_UIO_H",
         "-DINFLATE_CHUNK_READ_64LE",
         "-DINFLATE_CHUNK_SIMD_SSE2",
-        "-DUSE_AURA=1",
-        "-DUSE_OZONE=1",
-        "-DUSE_UDEV",
         "-DX86_NOT_WINDOWS",
         "-DZLIB_DEBUG",
         "-DZLIB_IMPLEMENTATION",
         "-D_DEBUG",
-        "-D_FILE_OFFSET_BITS=64",
         "-D_GNU_SOURCE",
-        "-D_LARGEFILE64_SOURCE",
-        "-D_LARGEFILE_SOURCE",
         "-D_LIBCPP_AVAILABILITY_CUSTOM_VERBOSE_ABORT_PROVIDED=1",
         "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
         "-D_LIBCPP_ENABLE_ASSERTIONS_DEFAULT=1",
@@ -9788,8 +6070,9 @@
         "buildtools/third_party/libc++/",
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
+        "third_party/android_ndk/sources/android/cpufeatures/",
         "third_party/zlib/",
-        "build/linux/debian_bullseye_amd64-sysroot/usr/include",
+        "third_party/android_ndk/toolchains/llvm/prebuilt/linux-x86_64/sysroot/usr/include",
     ],
     cpp_std: "c++20",
 }
@@ -9830,292 +6113,6 @@
     name: "cronet_aml_third_party_zlib_zlib_slide_hash_simd",
 }
 
-// GN: //tools/android/errorprone_plugin:errorprone_plugin__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_binary " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location third_party/android_deps/com_google_auto_service_auto_service_annotations_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_annotation_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_check_api_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_error_prone_core_java.build_config.json)\", \"$(location third_party/android_deps/com_google_errorprone_javac_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/tools/android/errorprone_plugin/errorprone_plugin.build_config.json " +
-         "--gn-target " +
-         "//tools/android/errorprone_plugin:errorprone_plugin " +
-         "--host-jar-path " +
-         "$(location lib.java/tools/android/errorprone_plugin/errorprone_plugin.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location tools/android/errorprone_plugin/errorprone_plugin.javac.jar) " +
-         "--interface-jar-path " +
-         "$(location tools/android/errorprone_plugin/errorprone_plugin.turbine.jar) " +
-         "--annotation-processor-configs " +
-         "[\"gen/third_party/android_deps/auto_service_processor.build_config.json\"] " +
-         "--java-sources-file " +
-         "gen/tools/android/errorprone_plugin/errorprone_plugin.sources " +
-         "--bundled-srcjars " +
-         "[] " +
-         "--main-class " +
-         "<ignore>",
-    out: [
-        "tools/android/errorprone_plugin/errorprone_plugin.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //tools/android/errorprone_plugin:errorprone_plugin__compile_java
-genrule {
-    name: "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__compile_java",
-    srcs: [
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/AndroidNullableCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoAndroidAsyncTaskCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoDynamicStringsInTraceEventCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoRedundantFieldInitCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoSynchronizedMethodCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoSynchronizedThisCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/TestClassNameCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/UseNetworkAnnotations.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/tools/android/errorprone_plugin/errorprone_plugin__compile_java.d " +
-         "--generated-dir " +
-         "gen/tools/android/errorprone_plugin/errorprone_plugin/generated_java " +
-         "--jar-path " +
-         "obj/tools/android/errorprone_plugin/errorprone_plugin.javac.jar " +
-         "--java-srcjars " +
-         "[\"gen/tools/android/errorprone_plugin/errorprone_plugin.generated.srcjar\"] " +
-         "--target-name " +
-         "//tools/android/errorprone_plugin:errorprone_plugin__compile_java " +
-         "--header-jar " +
-         "obj/tools/android/errorprone_plugin/errorprone_plugin.turbine.jar " +
-         "--classpath " +
-         "[\"obj/tools/android/errorprone_plugin/errorprone_plugin.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "@gen/tools/android/errorprone_plugin/errorprone_plugin.sources",
-    out: [
-        "//out/test/obj/tools/android/errorprone_plugin/errorprone_plugin.javac.jar",
-        "//out/test/obj/tools/android/errorprone_plugin/errorprone_plugin.javac.jar.info",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json",
-        "out/test/gen/tools/android/errorprone_plugin/errorprone_plugin.generated.srcjar",
-        "out/test/gen/tools/android/errorprone_plugin/errorprone_plugin.sources",
-        "out/test/obj/tools/android/errorprone_plugin/errorprone_plugin.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //tools/android/errorprone_plugin:errorprone_plugin__header
-genrule {
-    name: "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__header",
-    srcs: [
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/AndroidNullableCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoAndroidAsyncTaskCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoDynamicStringsInTraceEventCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoRedundantFieldInitCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoSynchronizedMethodCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/NoSynchronizedThisCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/TestClassNameCheck.java",
-        "tools/android/errorprone_plugin/src/org/chromium/tools/errorprone/plugin/UseNetworkAnnotations.java",
-    ],
-    cmd: "$(location build/android/gyp/turbine.py) --depfile " +
-         "gen/tools/android/errorprone_plugin/errorprone_plugin__header.d " +
-         "--generated-dir " +
-         "gen/tools/android/errorprone_plugin/errorprone_plugin/generated_java " +
-         "--jar-path " +
-         "obj/tools/android/errorprone_plugin/errorprone_plugin.turbine.jar " +
-         "--java-srcjars " +
-         "[] " +
-         "--target-name " +
-         "//tools/android/errorprone_plugin:errorprone_plugin__header " +
-         "--classpath " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:javac:interface_classpath) " +
-         "--processorpath " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:javac:processor_classpath) " +
-         "--processors " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:javac:processor_classes) " +
-         "--turbine-jar-path " +
-         "../../third_party/turbine/turbine.jar " +
-         "--generated-jar-path " +
-         "gen/tools/android/errorprone_plugin/errorprone_plugin.generated.srcjar " +
-         "--chromium-code " +
-         "1 " +
-         "@gen/tools/android/errorprone_plugin/errorprone_plugin.sources",
-    out: [
-        "//out/test/obj/tools/android/errorprone_plugin/errorprone_plugin.turbine.jar",
-        "tools/android/errorprone_plugin/errorprone_plugin.generated.srcjar",
-    ],
-    tool_files: [
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/turbine.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "out/test/gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json",
-        "out/test/gen/tools/android/errorprone_plugin/errorprone_plugin.sources",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "third_party/turbine/turbine.jar",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //tools/android/errorprone_plugin:errorprone_plugin__host
-genrule {
-    name: "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__host",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "obj/tools/android/errorprone_plugin/errorprone_plugin.javac.jar " +
-         "--output " +
-         "lib.java/tools/android/errorprone_plugin/errorprone_plugin.jar " +
-         "--exclude-globs " +
-         "[] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/lib.java/tools/android/errorprone_plugin/errorprone_plugin.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/obj/tools/android/errorprone_plugin/errorprone_plugin.javac.jar",
-    ],
-}
-
-// GN: //tools/android/errorprone_plugin:errorprone_plugin__java_binary_script
-genrule {
-    name: "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__java_binary_script",
-    cmd: "$(location build/android/gyp/create_java_binary_script.py) --output " +
-         "bin/bin/helper/errorprone_plugin " +
-         "--main-class " +
-         "<ignore> " +
-         "--classpath " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:deps_info:host_classpath) " +
-         "--noverify",
-    out: [
-        "//out/test/bin/bin/helper/errorprone_plugin",
-    ],
-    tool_files: [
-        "build/android/gyp/create_java_binary_script.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json",
-    ],
-}
-
-// GN: //tools/grit:grit_sources
-genrule {
-    name: "cronet_aml_tools_grit_grit_sources",
-    cmd: "$(location tools/grit/stamp_grit_sources.py) ../../tools/grit " +
-         "obj/tools/grit/grit_sources.script.stamp " +
-         "obj/tools/grit/grit_sources.d",
-    out: [
-        "//out/test/obj/tools/grit/grit_sources.script.stamp",
-    ],
-    tool_files: [
-        "tools/grit/grit.py",
-        "tools/grit/stamp_grit_sources.py",
-    ],
-}
-
-// GN: //tools/gritsettings:default_resource_ids
-genrule {
-    name: "cronet_aml_tools_gritsettings_default_resource_ids",
-    cmd: "$(location tools/grit/grit.py) update_resource_ids " +
-         "-o " +
-         "gen/tools/gritsettings/default_resource_ids " +
-         "--add-header " +
-         "--depfile " +
-         "gen/tools/gritsettings/default_resource_ids.d " +
-         "--input " +
-         "../../tools/gritsettings/resource_ids.spec",
-    out: [
-        "tools/gritsettings/default_resource_ids",
-    ],
-    tool_files: [
-        "tools/grit/grit.py",
-        "tools/gritsettings/resource_ids.spec",
-    ],
-}
-
 // GN: //url:buildflags
 genrule {
     name: "cronet_aml_url_buildflags",
@@ -10169,251 +6166,29 @@
         "liblog",
     ],
     static_libs: [
+        "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
+        "cronet_aml_base_base_static",
+        "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_icu_icui18n",
+        "cronet_aml_third_party_icu_icuuc_private",
+        "cronet_aml_third_party_libevent_libevent",
+        "cronet_aml_third_party_modp_b64_modp_b64",
+        "libssl",
     ],
     generated_headers: [
         "cronet_aml_base_debugging_buildflags",
-        "cronet_aml_base_jni_java__build_config_crbug_908819",
-        "cronet_aml_base_jni_java__compile_java",
-        "cronet_aml_base_jni_java__errorprone",
-        "cronet_aml_base_jni_java__header",
-        "cronet_aml_base_jni_java__host",
-        "cronet_aml_base_jni_java__validate",
         "cronet_aml_base_logging_buildflags",
-        "cronet_aml_build_android_build_config_gen",
-        "cronet_aml_build_android_build_java__build_config_crbug_908819",
-        "cronet_aml_build_android_build_java__compile_java",
-        "cronet_aml_build_android_build_java__errorprone",
-        "cronet_aml_build_android_build_java__header",
-        "cronet_aml_build_android_build_java__host",
-        "cronet_aml_build_android_build_java__process_device",
-        "cronet_aml_build_android_build_java__validate",
-        "cronet_aml_build_android_bytecode_bytecode_processor__build_config_crbug_908819",
-        "cronet_aml_build_android_bytecode_bytecode_processor__java_binary_script",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__build_config_crbug_908819",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__compile_java",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__errorprone",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__header",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__host",
-        "cronet_aml_build_android_native_libraries_gen",
         "cronet_aml_build_chromeos_buildflags",
-        "cronet_aml_third_party_android_deps_auto_service_processor__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__header",
-        "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__host",
-        "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__header",
-        "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__host",
-        "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__header",
-        "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__host",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_java__host",
-        "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__header",
-        "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__host",
-        "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__header",
-        "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__host",
-        "cronet_aml_third_party_android_deps_com_google_guava_guava_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_guava_guava_java__header",
-        "cronet_aml_third_party_android_deps_com_google_guava_guava_java__host",
-        "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__header",
-        "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__host",
-        "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__header",
-        "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__host",
-        "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__header",
-        "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__host",
-        "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__header",
-        "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__host",
-        "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__header",
-        "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__host",
-        "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__header",
-        "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__host",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__header",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__host",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__header",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__host",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__header",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__host",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__header",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__host",
-        "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__header",
-        "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__host",
-        "cronet_aml_third_party_android_sdk_android_sdk_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_sdk_android_sdk_java__header",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__build_config_crbug_908819",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__compile_java",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__header",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__host",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__java_binary_script",
         "cronet_aml_url_buildflags",
-        "cronet_aml_url_url_java__build_config_crbug_908819",
-        "cronet_aml_url_url_java__compile_java",
-        "cronet_aml_url_url_java__errorprone",
-        "cronet_aml_url_url_java__header",
-        "cronet_aml_url_url_java__process_device",
         "cronet_aml_url_url_jni_headers",
     ],
     export_generated_headers: [
         "cronet_aml_base_debugging_buildflags",
-        "cronet_aml_base_jni_java__build_config_crbug_908819",
-        "cronet_aml_base_jni_java__compile_java",
-        "cronet_aml_base_jni_java__errorprone",
-        "cronet_aml_base_jni_java__header",
-        "cronet_aml_base_jni_java__host",
-        "cronet_aml_base_jni_java__validate",
         "cronet_aml_base_logging_buildflags",
-        "cronet_aml_build_android_build_config_gen",
-        "cronet_aml_build_android_build_java__build_config_crbug_908819",
-        "cronet_aml_build_android_build_java__compile_java",
-        "cronet_aml_build_android_build_java__errorprone",
-        "cronet_aml_build_android_build_java__header",
-        "cronet_aml_build_android_build_java__host",
-        "cronet_aml_build_android_build_java__process_device",
-        "cronet_aml_build_android_build_java__validate",
-        "cronet_aml_build_android_bytecode_bytecode_processor__build_config_crbug_908819",
-        "cronet_aml_build_android_bytecode_bytecode_processor__java_binary_script",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__build_config_crbug_908819",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__compile_java",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__errorprone",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__header",
-        "cronet_aml_build_android_bytecode_bytecode_processor_java__host",
-        "cronet_aml_build_android_native_libraries_gen",
         "cronet_aml_build_chromeos_buildflags",
-        "cronet_aml_third_party_android_deps_auto_service_processor__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__header",
-        "cronet_aml_third_party_android_deps_com_github_ben_manes_caffeine_caffeine_java__host",
-        "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__header",
-        "cronet_aml_third_party_android_deps_com_github_kevinstern_software_and_algorithms_java__host",
-        "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__header",
-        "cronet_aml_third_party_android_deps_com_google_auto_auto_common_java__host",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_auto_service_auto_service_java__host",
-        "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_auto_value_auto_value_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__header",
-        "cronet_aml_third_party_android_deps_com_google_code_findbugs_jsr305_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotation_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_check_api_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_core_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_error_prone_type_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__header",
-        "cronet_aml_third_party_android_deps_com_google_errorprone_javac_java__host",
-        "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__header",
-        "cronet_aml_third_party_android_deps_com_google_guava_failureaccess_java__host",
-        "cronet_aml_third_party_android_deps_com_google_guava_guava_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_guava_guava_java__header",
-        "cronet_aml_third_party_android_deps_com_google_guava_guava_java__host",
-        "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__header",
-        "cronet_aml_third_party_android_deps_com_google_guava_listenablefuture_java__host",
-        "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__header",
-        "cronet_aml_third_party_android_deps_com_google_j2objc_j2objc_annotations_java__host",
-        "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__header",
-        "cronet_aml_third_party_android_deps_com_google_protobuf_protobuf_java_java__host",
-        "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__header",
-        "cronet_aml_third_party_android_deps_io_github_java_diff_utils_java_diff_utils_java__host",
-        "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__header",
-        "cronet_aml_third_party_android_deps_org_checkerframework_checker_qual_java__host",
-        "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__header",
-        "cronet_aml_third_party_android_deps_org_checkerframework_dataflow_errorprone_java__host",
-        "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__header",
-        "cronet_aml_third_party_android_deps_org_eclipse_jgit_org_eclipse_jgit_java__host",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__header",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_analysis_java__host",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__header",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_java__host",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__header",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_tree_java__host",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__header",
-        "cronet_aml_third_party_android_deps_org_ow2_asm_asm_util_java__host",
-        "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__header",
-        "cronet_aml_third_party_android_deps_org_pcollections_pcollections_java__host",
-        "cronet_aml_third_party_android_sdk_android_sdk_java__build_config_crbug_908819",
-        "cronet_aml_third_party_android_sdk_android_sdk_java__header",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__build_config_crbug_908819",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__compile_java",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__header",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__host",
-        "cronet_aml_tools_android_errorprone_plugin_errorprone_plugin__java_binary_script",
         "cronet_aml_url_buildflags",
-        "cronet_aml_url_url_java__build_config_crbug_908819",
-        "cronet_aml_url_url_java__compile_java",
-        "cronet_aml_url_url_java__errorprone",
-        "cronet_aml_url_url_java__header",
-        "cronet_aml_url_url_java__process_device",
         "cronet_aml_url_url_jni_headers",
     ],
     defaults: [
@@ -10452,388 +6227,6 @@
     cpp_std: "c++20",
 }
 
-// GN: //url:url_java__build_config_crbug_908819
-genrule {
-    name: "cronet_aml_url_url_java__build_config_crbug_908819",
-    cmd: "$(location build/android/gyp/write_build_config.py) --type " +
-         "java_library " +
-         " " +
-         " " +
-         "--deps-configs " +
-         "[\"$(location base/jni_java.build_config.json)\", \"$(location third_party/android_sdk/android_sdk_java.build_config.json)\"] " +
-         "--public-deps-configs " +
-         "[] " +
-         "--build-config " +
-         "$(genDir)/url/url_java.build_config.json " +
-         "--gn-target " +
-         "//url:url_java " +
-         "--device-jar-path " +
-         "$(location url/url_java.processed.jar) " +
-         "--host-jar-path " +
-         "$(location lib.java/url/url_java.jar) " +
-         "--unprocessed-jar-path " +
-         "$(location url/url_java.javac.jar) " +
-         "--interface-jar-path " +
-         "$(location url/url_java.turbine.jar) " +
-         "--dex-path " +
-         "obj/url/url_java.dex.jar " +
-         "--supports-android " +
-         "--requires-android " +
-         "--java-sources-file " +
-         "gen/url/url_java.sources " +
-         "--bundled-srcjars " +
-         "[]",
-    out: [
-        "url/url_java.build_config.json",
-    ],
-    tool_files: [
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/resource_utils.py",
-        "build/android/gyp/write_build_config.py",
-        "build/gn_helpers.py",
-        "third_party/jinja2/__init__.py",
-        "third_party/jinja2/_compat.py",
-        "third_party/jinja2/_identifier.py",
-        "third_party/jinja2/bccache.py",
-        "third_party/jinja2/compiler.py",
-        "third_party/jinja2/defaults.py",
-        "third_party/jinja2/environment.py",
-        "third_party/jinja2/exceptions.py",
-        "third_party/jinja2/filters.py",
-        "third_party/jinja2/idtracking.py",
-        "third_party/jinja2/lexer.py",
-        "third_party/jinja2/loaders.py",
-        "third_party/jinja2/nodes.py",
-        "third_party/jinja2/optimizer.py",
-        "third_party/jinja2/parser.py",
-        "third_party/jinja2/runtime.py",
-        "third_party/jinja2/tests.py",
-        "third_party/jinja2/utils.py",
-        "third_party/jinja2/visitor.py",
-        "third_party/markupsafe/__init__.py",
-        "third_party/markupsafe/_compat.py",
-        "third_party/markupsafe/_native.py",
-    ],
-}
-
-// GN: //url:url_java__compile_java
-genrule {
-    name: "cronet_aml_url_url_java__compile_java",
-    srcs: [
-        "url/android/java/src/org/chromium/url/IDNStringUtil.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/url/url_java__compile_java.d " +
-         "--generated-dir " +
-         "gen/url/url_java/generated_java " +
-         "--jar-path " +
-         "obj/url/url_java.javac.jar " +
-         "--java-srcjars " +
-         "[\"gen/url/url_java.generated.srcjar\"] " +
-         "--target-name " +
-         "//url:url_java__compile_java " +
-         "--classpath " +
-         "@FileArg(gen/url/url_java.build_config.json:android:sdk_interface_jars) " +
-         "--header-jar " +
-         "obj/url/url_java.turbine.jar " +
-         "--classpath " +
-         "[\"obj/url/url_java.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/url/url_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "--jar-info-exclude-globs " +
-         "[\"*/R.class\", \"*/R\\$*.class\", \"*/Manifest.class\", \"*/Manifest\\$*.class\", \"*/GEN_JNI.class\"] " +
-         "@gen/url/url_java.sources",
-    out: [
-        "//out/test/obj/url/url_java.javac.jar",
-        "//out/test/obj/url/url_java.javac.jar.info",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/url/url_java.build_config.json",
-        "out/test/gen/url/url_java.generated.srcjar",
-        "out/test/gen/url/url_java.sources",
-        "out/test/obj/url/url_java.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //url:url_java__dex
-genrule {
-    name: "cronet_aml_url_url_java__dex",
-    cmd: "$(location build/android/gyp/dex.py) --depfile " +
-         "gen/url/url_java__dex.d " +
-         "--output " +
-         "obj/url/url_java.dex.jar " +
-         "--min-api " +
-         "19 " +
-         "--r8-jar-path " +
-         "../../third_party/r8/lib/r8.jar " +
-         "--custom-d8-jar-path " +
-         "../../third_party/r8/custom_d8.jar " +
-         "--incremental-dir " +
-         "obj/url/url_java__dex " +
-         "--library " +
-         "--class-inputs " +
-         "[\"obj/url/url_java.processed.jar\"] " +
-         "--desugar " +
-         "--desugar-jdk-libs-json " +
-         "../../third_party/r8/desugar_jdk_libs.json " +
-         "--show-desugar-default-interface-warnings " +
-         "--classpath " +
-         "obj/url/url_java.javac.jar " +
-         "--desugar-dependencies " +
-         "gen/url/url_java__dex.desugardeps " +
-         "--bootclasspath " +
-         "@FileArg(gen/url/url_java.build_config.json:android:sdk_jars) " +
-         "--classpath " +
-         "@FileArg(gen/url/url_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--force-enable-assertions",
-    out: [
-        "//out/test/obj/url/url_java.dex.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/dex.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/zipalign.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/obj/url/url_java.javac.jar",
-        "out/test/obj/url/url_java.processed.jar",
-        "third_party/r8/custom_d8.jar",
-        "third_party/r8/d8/lib/r8.jar",
-        "third_party/r8/desugar_jdk_libs.json",
-    ],
-}
-
-// GN: //url:url_java__errorprone
-genrule {
-    name: "cronet_aml_url_url_java__errorprone",
-    srcs: [
-        "url/android/java/src/org/chromium/url/IDNStringUtil.java",
-    ],
-    cmd: "$(location build/android/gyp/compile_java.py) --depfile " +
-         "gen/url/url_java__errorprone.d " +
-         "--generated-dir " +
-         "gen/url/url_java/generated_java " +
-         "--jar-path " +
-         "obj/url/url_java__errorprone.errorprone.stamp " +
-         "--java-srcjars " +
-         "[\"gen/url/url_java.generated.srcjar\"] " +
-         "--target-name " +
-         "//url:url_java__errorprone " +
-         "--classpath " +
-         "@FileArg(gen/url/url_java.build_config.json:android:sdk_interface_jars) " +
-         "--header-jar " +
-         "obj/url/url_java.turbine.jar " +
-         "--classpath " +
-         "[\"obj/url/url_java.turbine.jar\"] " +
-         "--classpath " +
-         "@FileArg(gen/url/url_java.build_config.json:deps_info:javac_full_interface_classpath) " +
-         "--chromium-code " +
-         "1 " +
-         "--jar-info-exclude-globs " +
-         "[\"*/R.class\", \"*/R\\$*.class\", \"*/Manifest.class\", \"*/Manifest\\$*.class\", \"*/GEN_JNI.class\"] " +
-         "--processorpath " +
-         "@FileArg(gen/tools/android/errorprone_plugin/errorprone_plugin.build_config.json:deps_info:host_classpath) " +
-         "--enable-errorprone " +
-         "@gen/url/url_java.sources",
-    out: [
-        "//out/test/obj/url/url_java__errorprone.errorprone.stamp",
-    ],
-    tool_files: [
-        "build/android/gyp/compile_java.py",
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/jar_info_utils.py",
-        "build/android/gyp/util/md5_check.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "build/print_python_deps.py",
-        "out/test/gen/url/url_java.build_config.json",
-        "out/test/gen/url/url_java.generated.srcjar",
-        "out/test/gen/url/url_java.sources",
-        "out/test/obj/url/url_java.turbine.jar",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //url:url_java__header
-genrule {
-    name: "cronet_aml_url_url_java__header",
-    srcs: [
-        "url/android/java/src/org/chromium/url/IDNStringUtil.java",
-    ],
-    cmd: "$(location build/android/gyp/turbine.py) --depfile " +
-         "gen/url/url_java__header.d " +
-         "--generated-dir " +
-         "gen/url/url_java/generated_java " +
-         "--jar-path " +
-         "obj/url/url_java.turbine.jar " +
-         "--java-srcjars " +
-         "[] " +
-         "--target-name " +
-         "//url:url_java__header " +
-         "--classpath " +
-         "@FileArg(gen/url/url_java.build_config.json:android:sdk_interface_jars) " +
-         "--classpath " +
-         "@FileArg(gen/url/url_java.build_config.json:javac:interface_classpath) " +
-         "--processorpath " +
-         "@FileArg(gen/url/url_java.build_config.json:javac:processor_classpath) " +
-         "--processors " +
-         "@FileArg(gen/url/url_java.build_config.json:javac:processor_classes) " +
-         "--turbine-jar-path " +
-         "../../third_party/turbine/turbine.jar " +
-         "--generated-jar-path " +
-         "gen/url/url_java.generated.srcjar " +
-         "--chromium-code " +
-         "1 " +
-         "--jar-info-exclude-globs " +
-         "[\"*/R.class\", \"*/R\\$*.class\", \"*/Manifest.class\", \"*/Manifest\\$*.class\", \"*/GEN_JNI.class\"] " +
-         "@gen/url/url_java.sources",
-    out: [
-        "//out/test/obj/url/url_java.turbine.jar",
-        "url/url_java.generated.srcjar",
-    ],
-    tool_files: [
-        "build/android/gyp/javac_output_processor.py",
-        "build/android/gyp/turbine.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/list_java_targets.py",
-        "build/android/pylib/__init__.py",
-        "build/android/pylib/constants/__init__.py",
-        "build/gn_helpers.py",
-        "out/test/gen/url/url_java.build_config.json",
-        "out/test/gen/url/url_java.sources",
-        "third_party/catapult/devil/devil/__init__.py",
-        "third_party/catapult/devil/devil/android/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/__init__.py",
-        "third_party/catapult/devil/devil/android/constants/chrome.py",
-        "third_party/catapult/devil/devil/android/sdk/__init__.py",
-        "third_party/catapult/devil/devil/android/sdk/keyevent.py",
-        "third_party/catapult/devil/devil/android/sdk/version_codes.py",
-        "third_party/catapult/devil/devil/constants/__init__.py",
-        "third_party/catapult/devil/devil/constants/exit_codes.py",
-        "third_party/colorama/src/colorama/__init__.py",
-        "third_party/colorama/src/colorama/ansi.py",
-        "third_party/colorama/src/colorama/ansitowin32.py",
-        "third_party/colorama/src/colorama/initialise.py",
-        "third_party/colorama/src/colorama/win32.py",
-        "third_party/colorama/src/colorama/winterm.py",
-        "third_party/turbine/turbine.jar",
-        "tools/android/modularization/convenience/lookup_dep.py",
-    ],
-}
-
-// GN: //url:url_java__process_device
-genrule {
-    name: "cronet_aml_url_url_java__process_device",
-    cmd: "$(location build/android/gyp/filter_zip.py) --input " +
-         "obj/url/url_java.javac.jar " +
-         "--output " +
-         "obj/url/url_java.processed.jar " +
-         "--exclude-globs " +
-         "[\"*/R.class\", \"*/R\\$*.class\", \"*/Manifest.class\", \"*/Manifest\\$*.class\", \"*/GEN_JNI.class\"] " +
-         "--include-globs " +
-         "[]",
-    out: [
-        "//out/test/obj/url/url_java.processed.jar",
-    ],
-    tool_files: [
-        "build/android/gyp/filter_zip.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/gn_helpers.py",
-        "out/test/obj/url/url_java.javac.jar",
-    ],
-}
-
-// GN: //url:url_java__validate
-genrule {
-    name: "cronet_aml_url_url_java__validate",
-    cmd: "$(location build/android/gyp/bytecode_processor.py) --target-name " +
-         "//url:url_java__validate " +
-         "--script " +
-         "bin/helper/bytecode_processor " +
-         "--gn-target " +
-         "//url:url_java " +
-         "--input-jar " +
-         "obj/url/url_java.javac.jar " +
-         "--stamp " +
-         "obj/url/url_java__validate.bytecode.stamp " +
-         "--direct-classpath-jars " +
-         "@FileArg(gen/url/url_java.build_config.json:javac:classpath) " +
-         "--full-classpath-jars " +
-         "@FileArg(gen/url/url_java.build_config.json:deps_info:javac_full_classpath) " +
-         "--full-classpath-gn-targets " +
-         "@FileArg(gen/url/url_java.build_config.json:deps_info:javac_full_classpath_targets) " +
-         "--sdk-classpath-jars " +
-         "@FileArg(gen/url/url_java.build_config.json:android:sdk_jars)",
-    out: [
-        "//out/test/obj/url/url_java__validate.bytecode.stamp",
-    ],
-    tool_files: [
-        "build/android/gyp/bytecode_processor.py",
-        "build/android/gyp/util/__init__.py",
-        "build/android/gyp/util/build_utils.py",
-        "build/android/gyp/util/server_utils.py",
-        "build/gn_helpers.py",
-        "out/test/bin/helper/bytecode_processor",
-        "out/test/gen/url/url_java.build_config.json",
-        "out/test/obj/url/url_java.javac.jar",
-    ],
-}
-
 // GN: //url:url_jni_headers
 genrule {
     name: "cronet_aml_url_url_jni_headers",
@@ -10863,6 +6256,7 @@
         "url/url_jni_headers/Origin_jni.h",
     ],
     tool_files: [
+        "base/android/jni_generator/android_jar.classes",
         "base/android/jni_generator/jni_generator.py",
         "build/android/gyp/util/__init__.py",
         "build/android/gyp/util/build_utils.py",
diff --git a/tools/gn2bp/desc.json b/tools/gn2bp/desc.json
index 0c51c3c..5648519 100644
--- a/tools/gn2bp/desc.json
+++ b/tools/gn2bp/desc.json
Binary files differ
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 97eeb4d..d3b2a56 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -32,11 +32,17 @@
 import os
 import re
 import sys
+import copy
 
 import gn_utils
 
 ROOT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
 
+# Default targets to translate to the blueprint file.
+default_targets = [
+    '//components/cronet/android:cronet',
+]
+
 # Defines a custom init_rc argument to be applied to the corresponding output
 # blueprint target.
 target_initrc = {
@@ -83,12 +89,17 @@
     'statslog_perfetto',
 ]
 
+# Include directories that will be removed from all targets.
+local_include_dirs_denylist = [
+    'third_party/protobuf/src/',
+]
+
 # Name of the module which settings such as compiler flags for all other
 # modules.
 defaults_module = module_prefix + 'defaults'
 
 # Location of the project in the Android source tree.
-tree_path = 'external/perfetto'
+tree_path = 'external/chromium_org'
 
 # Path for the protobuf sources in the standalone build.
 buildtools_protobuf_src = '//buildtools/protobuf/src'
@@ -101,8 +112,21 @@
 
 # Additional arguments to apply to Android.bp rules.
 additional_args = {
-    # TODO: remove if this is not useful for the cronet build.
-    # Consider using additional_args for overriding the genrule cmd property for gn actions.
+    # TODO: remove if not needed.
+    'cronet_aml_components_cronet_android_cronet': [
+        ('linker_scripts', {
+            'base/android/library_loader/anchor_functions.lds',
+        }),
+    ],
+    'cronet_aml_net_net': [
+        ('export_static_lib_headers', {
+            'cronet_aml_net_third_party_quiche_quiche',
+            'cronet_aml_crypto_crypto',
+        }),
+        # When a code is compiled under rtti(cronet) that depends on another code(net)
+        # that doesn't depend on rtti. undefined symbol: typeinfo 'class' errors appears.
+        ('rtti', True), # go/undefined-symbol-typeinfo
+    ],
 }
 
 
@@ -119,12 +143,13 @@
   elif module.host_supported:
     module.host.static_libs.add('libprotobuf-cpp-full')
     module.android.shared_libs.add('libprotobuf-cpp-full')
-  else:
+  elif module.type not in ['genrule', 'filegroup']:
     module.shared_libs.add('libprotobuf-cpp-full')
 
 
 def enable_protobuf_lite(module):
-  module.shared_libs.add('libprotobuf-cpp-lite')
+  if module.type not in ['genrule', 'filegroup']:
+    module.shared_libs.add('libprotobuf-cpp-lite')
 
 
 def enable_protoc_lib(module):
@@ -192,6 +217,11 @@
   module.header_libs.add('bionic_libc_platform_headers')
 
 
+def enable_boringssl(module):
+  if module.type not in ['genrule', 'filegroup']:
+    module.static_libs.add('libssl')
+
+
 # Android equivalents for third-party libraries that the upstream project
 # depends on.
 builtin_deps = {
@@ -199,18 +229,10 @@
         lambda x: None,
     '//gn:gtest_main':
         lambda x: None,
-    '//gn:protoc':
-        lambda x: None,
     '//gn:gtest_and_gmock':
         enable_gtest_and_gmock,
     '//gn:libunwind':
         enable_libunwind,
-    '//gn:protobuf_full':
-        enable_protobuf_full,
-    '//gn:protobuf_lite':
-        enable_protobuf_lite,
-    '//gn:protoc_lib':
-        enable_protoc_lib,
     '//gn:libunwindstack':
         enable_libunwindstack,
     '//gn:sqlite':
@@ -221,6 +243,16 @@
         enable_uapi_headers,
     '//src/profiling/memory:bionic_libc_platform_headers_on_android':
         enable_bionic_libc_platform_headers_on_android,
+    '//third_party/protobuf:protoc':
+      lambda x: None,
+    '//third_party/protobuf:protobuf_full':
+        enable_protobuf_full,
+    '//third_party/protobuf:protobuf_lite':
+        enable_protobuf_lite,
+    '//third_party/protobuf:protoc_lib':
+        enable_protoc_lib,
+    '//third_party/boringssl:boringssl':
+        enable_boringssl,
 }
 
 # ----------------------------------------------------------------------------
@@ -333,6 +365,7 @@
     self.export_include_dirs = set()
     self.generated_headers = set()
     self.export_generated_headers = set()
+    self.export_static_lib_headers = set()
     self.defaults = set()
     self.cflags = set()
     self.include_dirs = set()
@@ -350,6 +383,7 @@
     self.apex_available = set()
     self.min_sdk_version = None
     self.proto = dict()
+    self.linker_scripts = set()
     # The genrule_XXX below are properties that must to be propagated back
     # on the module(s) that depend on the genrule.
     self.genrule_headers = set()
@@ -360,6 +394,8 @@
     self.test_suites = set()
     self.test_config = None
     self.stubs = {}
+    self.cppflags = set()
+    self.rtti = False
 
   def to_string(self, output):
     if self.comment:
@@ -382,6 +418,7 @@
     self._output_field(output, 'export_include_dirs')
     self._output_field(output, 'generated_headers')
     self._output_field(output, 'export_generated_headers')
+    self._output_field(output, 'export_static_lib_headers')
     self._output_field(output, 'defaults')
     self._output_field(output, 'cflags')
     self._output_field(output, 'include_dirs')
@@ -401,6 +438,10 @@
     self._output_field(output, 'test_config')
     self._output_field(output, 'stubs')
     self._output_field(output, 'proto')
+    self._output_field(output, 'linker_scripts')
+    self._output_field(output, 'cppflags')
+    if self.rtti:
+      self._output_field(output, 'rtti')
 
     target_out = []
     self._output_field(target_out, 'android')
@@ -470,7 +511,7 @@
 
 def is_supported_source_file(name):
   """Returns True if |name| can appear in a 'srcs' list."""
-  return os.path.splitext(name)[1] in ['.c', '.cc', '.java', '.proto']
+  return os.path.splitext(name)[1] in ['.c', '.cc', '.cpp', '.java', '.proto', '.S']
 
 
 def create_proto_modules(blueprint, gn, target):
@@ -491,13 +532,13 @@
   assert (target.type == 'proto_library')
 
   tools = {'aprotoc'}
-  cpp_out_dir = '$(genDir)/%s/' % tree_path
+  cpp_out_dir = '$(genDir)/%s/%s/' % (tree_path, target.proto_in_dir)
   target_module_name = label_to_module_name(target.name)
 
   # In GN builds the proto path is always relative to the output directory
   # (out/tmp.xxx).
-  cmd = ['mkdir -p %s &&' % cpp_out_dir, '$(location aprotoc)']
-  cmd += ['--proto_path=%s' % tree_path]
+  cmd = ['$(location aprotoc)']
+  cmd += ['--proto_path=%s/%s' % (tree_path, target.proto_in_dir)]
 
   if buildtools_protobuf_src in target.proto_paths:
     cmd += ['--proto_path=%s' % android_protobuf_src]
@@ -553,6 +594,10 @@
   # to still do the old #include "perfetto/..." rather than
   # #include "protos/perfetto/...".
   header_module.export_include_dirs = {'.', 'protos'}
+  # Since the .cc file and .h get created by a different gerule target, they
+  # are not put in the same intermediate path, so local includes do not work
+  # without explictily exporting the include dir.
+  header_module.export_include_dirs.add(target.proto_in_dir)
 
   source_module.genrule_srcs.add(':' + source_module.name)
   source_module.genrule_headers.add(header_module.name)
@@ -667,6 +712,69 @@
 
   blueprint.add_module(module)
 
+# HACK: Need to support build_cofig_gen flexibly instead of hardcoding
+# build_config_gen generates srcjar by executing gcc via gcc_preprocess.py but gcc is not
+# available in genrule sandbox. Also gcc path is not configurable.
+# Under the //net:net, gcc_preprocess.py is only used for build_config_gen.
+# So, for now, hardcoding BuildConfig.java and generates srcjar by soong_zip.
+def override_build_config_gen(module):
+  module.tool_files.clear()
+  module.tools.add("soong_zip")
+  cmd = [
+    "echo",
+    "\\\"package org.chromium.build;\\n",
+    "public class BuildConfig {\\n",
+    "public static boolean IS_MULTIDEX_ENABLED ;\\n",
+    "public static boolean ENABLE_ASSERTS = true;\\n",
+    "public static boolean IS_UBSAN ;\\n",
+    "public static boolean IS_CHROME_BRANDED ;\\n",
+    "public static int R_STRING_PRODUCT_VERSION ;\\n",
+    "public static int MIN_SDK_VERSION = 1;\\n",
+    "public static boolean BUNDLES_SUPPORTED ;\\n",
+    "public static boolean IS_INCREMENTAL_INSTALL ;\\n",
+    "public static boolean ISOLATED_SPLITS_ENABLED ;\\n",
+    "public static boolean IS_FOR_TEST ;\\n",
+    "}\\n\\\"",
+    "> $(genDir)/BuildConfig.java &&",
+    "$(location soong_zip) -o $(out) -srcjar -f $(genDir)/BuildConfig.java"
+  ]
+  NEWLINE = ' " +\n         "'
+  module.cmd = NEWLINE.join(cmd)
+  return module
+
+def create_action_foreach_modules(blueprint, target):
+  """ The following assumes that rebase_path exists in the args.
+  The args of an action_foreach contains hints about which output files are generated
+  by which source files.
+  This is copied directly from the args
+  "gen/net/base/registry_controlled_domains/{{source_name_part}}-reversed-inc.cc"
+  So each source file will generate an output whose name is the {source_name-reversed-inc.cc}
+  """
+  new_args = []
+  for i, src in enumerate(sorted(target.sources)):
+    # don't add script arg for the first source -- create_action_module
+    # already does this.
+    if i != 0:
+      new_args.append('&& python3 $(location %s)' %
+                   gn_utils.label_to_path(target.script))
+    for arg in target.args:
+      if '{{source}}' in arg:
+        new_args.append('$(location %s)' % (gn_utils.label_to_path(src)))
+      elif '{{source_name_part}}' in arg:
+        source_name_part = src.split("/")[-1] # Get the file name only
+        source_name_part = source_name_part.split(".")[0] # Remove the extension (Ex: .cc)
+        file_name = arg.replace('{{source_name_part}}', source_name_part).split("/")[-1]
+        # file_name represent the output file name. But we need the whole path
+        # This can be found from target.outputs.
+        for out in target.outputs:
+          if out.endswith(file_name):
+            new_args.append('$(location %s)' % out)
+      else:
+        new_args.append(arg)
+
+  target.args = new_args
+  return create_action_module(blueprint, target)
+
 def create_action_module(blueprint, target):
   bp_module_name = label_to_module_name(target.name)
   module = Module('genrule', bp_module_name, target.name)
@@ -725,6 +833,24 @@
     # fix target.output directory to match #include statements.
     target.outputs = [re.sub('^jni_headers/', '', out) for out in target.outputs]
 
+  elif target.script == '//base/android/jni_generator/jni_registration_generator.py':
+    # jni_registration_generator.py pulls in some config dependencies that we
+    # do not handle. Remove them.
+    # TODO: find a better way to do this.
+    target.deps.clear()
+
+    target.inputs = [file for file in target.inputs if not file.startswith('//out/')]
+    for i, val in enumerate(target.args):
+      if val in ['--depfile', '--srcjar-path', '--header-path']:
+        target.args[i + 1] = re.sub('^gen', '$(genDir)', target.args[i + 1])
+      if val == '--sources-files':
+        target.args[i + 1] = '$(genDir)/java.sources'
+      elif val == '--sources-exclusions':
+        # update_jni_registration_module removes them from the srcs of the module
+        # It might be better to remove sources by '--sources-exclusions'
+        target.args[i] = ''
+        target.args[i + 1] = ''
+
   elif target.script == '//build/android/gyp/write_build_config.py':
     for i, val in enumerate(target.args):
       if val == '--depfile':
@@ -777,6 +903,67 @@
         # wrap filename in \"$(location filename)\"
         args = ['$(location %s)' % arg for arg in args]
         target.args[i + 1] = '[%s]' % ', '.join(args)
+  elif target.script == "//build/android/gyp/write_native_libraries_java.py":
+    for i, val in enumerate(target.args):
+      if val == '--output':
+        target.args[i + 1] = '$(out)'
+  elif target.script == "//tools/grit/stamp_grit_sources.py":
+    target.outputs = [re.sub('^\/\/', '', out) for out in target.outputs]
+    # Directory that contains grit scripts
+    target.args[0] = '`dirname $(location tools/grit/grit.py)`'
+    # Path to the stamp file
+    target.args[1] = '$(out)'
+    # Script tries to create args[2] file but this is not in the output.
+    # Specifying file under $(genDir) so that parent directory exists.
+    # If this file is used by other module, we may need to add this file to the outputs.
+    target.args[2] = '$(genDir)/' + target.args[2].split('/')[-1]
+  elif target.script == "//tools/grit/grit.py":
+    for i, val in enumerate(target.args):
+      if val == '-i':
+        # Delete leading ../..
+        filename = re.sub('^\.\./\.\./', '', target.args[i + 1])
+        target.args[i + 1] = '$(location %s)' % filename
+      elif val == '-o':
+        filename = re.sub('^gen/', '', target.args[i + 1])
+        if filename == "net":
+          # This is a directory not a file
+          target.args[i + 1] = '$(genDir)/net'
+        else:
+          # This is an output fil
+          target.args[i + 1] = '$(location %s)' % filename
+      elif val == '--depfile':
+        # The depfile is replaced by adding /tools/**/*.py to the tools_files
+        # This is basically just globbing all the needed sources by hardcoding.
+        module.tool_files.update([
+            "tools/grit/**/*.py",
+            "third_party/six/src/six.py" # This is not picked up by default. Must be added
+        ])
+
+        # Delete the depfile argument
+        target.args[i] = ' '
+        target.args[i + 1] = ' '
+      elif val == '--input':
+        # Delete leading ../..
+        filename = re.sub('^\.\./\.\./', '', target.args[i + 1])
+        # This is an output file so use $(location %s)
+        target.args[i + 1] = '$(location %s)' % filename
+  elif target.script == "//net/tools/dafsa/make_dafsa.py":
+    # This script generates .cc files but source (registry_controlled_domain.cc) in the target that
+    # depends on this target includes .cc file this script generates.
+    module.genrule_headers.add(module.name)
+  elif target.script == "//build/util/version.py":
+    # android_chrome_version.py is not specified in anywhere but version.py imports this file
+    module.tool_files.add('build/util/android_chrome_version.py')
+    for i, val in enumerate(target.args):
+      if val.startswith('../../'):
+        filename = re.sub('^\.\./\.\./', '', val)
+        target.args[i] = '$(location %s)' % filename
+      elif val == '-e':
+        # arg for -e EVAL option should be passed in -e PATCH_HI=int(PATCH)//256 format.
+        target.args[i + 1] = '%s=\'%s\'' % (target.args[i + 1], target.args[i + 2])
+        target.args[i + 2] = ''
+      elif val == '-o':
+        target.args[i + 1] = '$(out)'
 
   script = gn_utils.label_to_path(target.script)
   module.tool_files.add(script)
@@ -804,7 +991,7 @@
     # Pipe response file contents into script
     module.cmd = 'echo \'%s\' |%s%s' % (target.response_file_contents, NEWLINE, module.cmd)
 
-  if all(os.path.splitext(it)[1] == '.h' for it in target.outputs):
+  if any(os.path.splitext(it)[1] == '.h' for it in target.outputs):
     module.genrule_headers.add(bp_module_name)
 
   # gn treats inputs and sources for actions equally.
@@ -822,6 +1009,36 @@
     module.srcs.remove(script)
 
   module.out.update(target.outputs)
+
+  if target.name == "//build/android:build_config_gen":
+    module = override_build_config_gen(module)
+  elif target.script == "//tools/grit/stamp_grit_sources.py":
+    # stamp_grit_sources.py is not executable
+    module.cmd = "python " + module.cmd
+  elif target.script == "//base/android/jni_generator/jni_generator.py":
+    # android_jar.classes should be part of the tools as it list implicit classes
+    # for the script to generate JNI headers.
+    module.tool_files.add("base/android/jni_generator/android_jar.classes")
+  elif target.script == '//base/android/jni_generator/jni_registration_generator.py':
+    # jni_registration_generator.py doesn't work with python2
+    module.cmd = "python3 " + module.cmd
+    # Path in the original sources file does not work in genrule.
+    # So creating sources file in cmd based on the srcs of this target.
+    # Adding ../$(current_dir)/ to the head because jni_registration_generator.py uses the files
+    # whose path startswith(..)
+    commands = ["current_dir=`basename \\\`pwd\\\``;",
+                "for f in $(in);",
+                "do",
+                "echo \\\"../$$current_dir/$$f\\\" >> $(genDir)/java.sources;",
+                "done;",
+                module.cmd]
+
+    # .h file jni_registration_generator.py generates has #define with directory name.
+    # With the genrule env that contains "." which is invalid. So replace that at the end of cmd.
+    commands.append(";sed -i -e 's/OUT_SOONG_.TEMP_SBOX_.*_OUT/GEN/g' ")
+    commands.append("$(genDir)/components/cronet/android/cronet_jni_registration.h")
+    module.cmd = NEWLINE.join(commands)
+
   blueprint.add_module(module)
   return module
 
@@ -885,14 +1102,16 @@
     else:
       module = create_action_module(blueprint, target)
   elif target.type == 'action_foreach':
-    return None
-      # Add basic support for action_foreach
+    module = create_action_foreach_modules(blueprint, target)
   elif target.type == 'copy':
     # TODO: careful now! copy targets are not supported yet, but this will stop
     # traversing the dependency tree. For //base:base, this is not a big
     # problem as libicu contains the only copy target which happens to be a
     # leaf node.
     return None
+  elif target.type == 'java_group':
+    # Java targets are handled outside of create_modules_from_target.
+    return None
   else:
     raise Error('Unknown target %s (%s)' % (target.name, target.type))
 
@@ -902,7 +1121,7 @@
   module.srcs.update(
       gn_utils.label_to_path(src)
       for src in target.sources
-      if is_supported_source_file(src))
+      if is_supported_source_file(src) and not src.startswith("//out/test"))
 
   local_include_dirs_set = set()
   if target.type in gn_utils.LINKER_UNIT_TYPES:
@@ -913,6 +1132,11 @@
         module.cpp_std = flag[len('-std='):]
       if '-isystem' in flag:
         local_include_dirs_set.add(flag[len('-isystem../../'):])
+      if '-frtti' in flag:
+        module.rtti = True
+      if '-fexceptions' in flag:
+        module.cppflags.add('-fexceptions')
+
 
     # Adding local_include_dirs is necessary due to source_sets / filegroups
     # which do not properly propagate include directories.
@@ -947,29 +1171,20 @@
       if lib in static_library_allowlist:
         module.add_android_static_lib(android_lib)
 
+    # Remove prohibited include directories
+    module.local_include_dirs = [d for d in module.local_include_dirs
+                                 if d not in local_include_dirs_denylist]
+
+
   # If the module is a static library, export all the generated headers.
   if module.type == 'cc_library_static':
     module.export_generated_headers = module.generated_headers
 
-  # Merge in additional hardcoded arguments.
-  for key, add_val in additional_args.get(module.name, []):
-    curr = getattr(module, key)
-    if add_val and isinstance(add_val, set) and isinstance(curr, set):
-      curr.update(add_val)
-    elif isinstance(add_val, str) and (not curr or isinstance(curr, str)):
-      setattr(module, key, add_val)
-    elif isinstance(add_val, bool) and (not curr or isinstance(curr, bool)):
-      setattr(module, key, add_val)
-    elif isinstance(add_val, dict) and isinstance(curr, dict):
-      curr.update(add_val)
-    elif isinstance(add_val, dict) and isinstance(curr, Target):
-      curr.__dict__.update(add_val)
-    else:
-      raise Error('Unimplemented type %r of additional_args: %r' %
-                  (type(add_val), key))
-
   # dep_name is an unmangled GN target name (e.g. //foo:bar(toolchain)).
-  all_deps = target.deps | target.source_set_deps | target.transitive_proto_deps
+  # Currently, only one module is generated from target even target has multiple toolchains.
+  # And module is generated based on the first visited target.
+  # Sort deps before iteration to make result deterministic.
+  all_deps = sorted(target.deps | target.source_set_deps | target.transitive_proto_deps)
   for dep_name in all_deps:
     # |builtin_deps| override GN deps with Android-specific ones. See the
     # config in the top of this file.
@@ -1016,6 +1231,37 @@
 
   return module
 
+def create_java_module(blueprint, gn):
+  bp_module_name = module_prefix + 'java'
+  module = Module('java_library', bp_module_name, '//gn:java')
+  module.srcs.update([gn_utils.label_to_path(source) for source in gn.java_sources])
+  blueprint.add_module(module)
+
+def update_jni_registration_module(blueprint, gn):
+  bp_module_name = label_to_module_name('//components/cronet/android:cronet_jni_registration')
+  if bp_module_name not in blueprint.modules:
+    # To support building targets that might not create the cronet_jni_registration.
+    return
+  module = blueprint.modules[bp_module_name]
+
+  # TODO: deny list is in the arg of jni_registration_generator.py. Should not be hardcoded
+  deny_list = [
+    '//base/android/java/src/org/chromium/base/library_loader/LibraryLoader.java',
+    '//base/android/java/src/org/chromium/base/library_loader/LibraryPrefetcher.java',
+    '//base/android/java/src/org/chromium/base/process_launcher/ChildProcessService.java',
+    '//base/android/java/src/org/chromium/base/SysUtils.java']
+
+  # TODO: java_sources might not contain all the required java files
+  module.srcs.update([gn_utils.label_to_path(source)
+                      for source in gn.java_sources if source not in deny_list])
+
+  # TODO: Remove hardcoded file addition to srcs
+  # jni_registration_generator.py generates empty .h file if native methods are not found in the
+  # java files. But android:cronet depends on `RegisterNonMainDexNatives` which is in the template
+  # of .h file. To make script generate non empty .h file, adding java file which contains native
+  # method. Once all the required java files are added to the srcs, this can be removed.
+  module.srcs.update([
+    "components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequest.java"])
 
 def create_blueprint_for_targets(gn, desc, targets):
   """Generate a blueprint for a list of GN targets."""
@@ -1024,12 +1270,15 @@
   # Default settings used by all modules.
   defaults = Module('cc_defaults', defaults_module, '//gn:default_deps')
   defaults.cflags = [
+      '-DGOOGLE_PROTOBUF_NO_RTTI',
       '-Wno-error=return-type',
       '-Wno-non-virtual-dtor',
+      '-Wno-macro-redefined',
       '-Wno-missing-field-initializers',
       '-Wno-sign-compare',
       '-Wno-sign-promo',
       '-Wno-unused-parameter',
+      '-Wno-deprecated-non-prototype', # needed for zlib
       '-fvisibility=hidden',
       '-O2',
   ]
@@ -1038,6 +1287,28 @@
 
   for target in targets:
     create_modules_from_target(blueprint, gn, target)
+
+  create_java_module(blueprint, gn)
+  update_jni_registration_module(blueprint, gn)
+
+  # Merge in additional hardcoded arguments.
+  for module in blueprint.modules.values():
+    for key, add_val in additional_args.get(module.name, []):
+      curr = getattr(module, key)
+      if add_val and isinstance(add_val, set) and isinstance(curr, set):
+        curr.update(add_val)
+      elif isinstance(add_val, str) and (not curr or isinstance(curr, str)):
+        setattr(module, key, add_val)
+      elif isinstance(add_val, bool) and (not curr or isinstance(curr, bool)):
+        setattr(module, key, add_val)
+      elif isinstance(add_val, dict) and isinstance(curr, dict):
+        curr.update(add_val)
+      elif isinstance(add_val, dict) and isinstance(curr, Target):
+        curr.__dict__.update(add_val)
+      else:
+        raise Error('Unimplemented type %r of additional_args: %r' %
+                    (type(add_val), key))
+
   return blueprint
 
 
@@ -1079,7 +1350,7 @@
     desc = json.load(f)
 
   gn = gn_utils.GnParser(desc)
-  blueprint = create_blueprint_for_targets(gn, desc, args.targets)
+  blueprint = create_blueprint_for_targets(gn, desc, args.targets or default_targets)
   project_root = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
   tool_name = os.path.relpath(os.path.abspath(__file__), project_root)
 
diff --git a/tools/gn2bp/gn_utils.py b/tools/gn2bp/gn_utils.py
index 686003c..1399fcf 100644
--- a/tools/gn2bp/gn_utils.py
+++ b/tools/gn2bp/gn_utils.py
@@ -20,6 +20,7 @@
 import errno
 import filecmp
 import json
+import logging as log
 import os
 import re
 import shutil
@@ -109,6 +110,7 @@
       self.proto_plugin = None
       self.proto_paths = set()
       self.proto_exports = set()
+      self.proto_in_dir = ""
 
       self.sources = set()
       # TODO(primiano): consider whether the public section should be part of
@@ -133,6 +135,7 @@
       self.source_set_deps = set()  # Transitive set of source_set deps.
       self.proto_deps = set()
       self.transitive_proto_deps = set()
+      self.transitive_static_libs_deps = set()
 
       # Deps on //gn:xxx have this flag set to True. These dependencies
       # are special because they pull third_party code from buildtools/.
@@ -169,6 +172,7 @@
     self.source_sets = {}
     self.actions = {}
     self.proto_libs = {}
+    self.java_sources = set()
 
   def _get_response_file_contents(self, action_desc):
     # response_file_contents are formatted as:
@@ -185,6 +189,13 @@
 
     return ' '.join(formatted_flags)
 
+  def _is_java_target(self, target):
+    # Per https://chromium.googlesource.com/chromium/src/build/+/HEAD/android/docs/java_toolchain.md
+    # java target names must end in "_java".
+    # TODO: There are some other possible variations we might need to support.
+    return target.type == 'group' and re.match('.*_java$', target.name)
+
+
   def get_target(self, gn_target_name):
     """Returns a Target object from the fully qualified GN target name.
 
@@ -223,6 +234,7 @@
       target.proto_plugin = proto_target_type
       target.proto_paths.update(self.get_proto_paths(proto_desc))
       target.proto_exports.update(self.get_proto_exports(proto_desc))
+      target.proto_in_dir = self.get_proto_in_dir(proto_desc)
       target.sources.update(proto_desc.get('sources', []))
       assert (all(x.endswith('.proto') for x in target.sources))
     elif target.type == 'source_set':
@@ -243,6 +255,11 @@
     elif target.type == 'copy':
       # TODO: copy rules are not currently implemented.
       self.actions[gn_target_name] = target
+    elif self._is_java_target(target):
+      # java_group identifies the group target generated by the android_library
+      # or java_library template. A java_group must not be added as a dependency, but sources are collected
+      log.debug('Found java target %s', target.name)
+      target.type = 'java_group'
 
     # Default for 'public' is //* - all headers in 'sources' are public.
     # TODO(primiano): if a 'public' section is specified (even if empty), then
@@ -278,6 +295,30 @@
           target.deps.add(dep_name)
       elif dep.type in LINKER_UNIT_TYPES:
         target.deps.add(dep_name)
+      elif dep.type == 'java_group':
+        # Explicitly break dependency chain when a java_group is added.
+        # Java sources are collected and eventually compiled as one large
+        # java_library.
+        pass
+
+      if dep.type == 'static_library':
+        # Bubble up static_libs. Necessary, since soong does not propagate
+        # static_libs up the build tree.
+        target.transitive_static_libs_deps.add(dep_name)
+        target.transitive_static_libs_deps.update(dep.transitive_static_libs_deps)
+        target.deps.update(target.transitive_static_libs_deps)
+
+      # Collect java sources. Java sources are kept inside the __compile_java target.
+      # This target can be used for both host and target compilation; only add
+      # the sources if they are destined for the target (i.e. they are a
+      # dependency of the __dex target)
+      # Note: this skips prebuilt java dependencies. These will have to be
+      # added manually when building the jar.
+      if re.match('.*__dex$', target.name):
+        if re.match('.*__compile_java$', dep.name):
+          log.debug('Adding java sources for %s', dep.name)
+          java_srcs = [src for src in dep.inputs if os.path.splitext(src)[1] == '.java']
+          self.java_sources.update(java_srcs)
 
     return target
 
@@ -291,6 +332,11 @@
     metadata = proto_desc.get('metadata', {})
     return metadata.get('import_dirs', [])
 
+
+  def get_proto_in_dir(self, proto_desc):
+    args = proto_desc.get('args')
+    return re.sub('^\.\./\.\./', '', args[args.index('--proto-in-dir') + 1])
+
   def get_proto_target_type(self, target):
     """ Checks if the target is a proto library and return the plugin.
 
@@ -322,10 +368,10 @@
     gen_desc = self.gn_desc_.get('%s_gen%s' % (name, toolchain))
     if gen_desc is None or gen_desc['type'] != 'action':
       return None, None
-    args = gen_desc.get('args', [])
-    if '/protoc' not in args[0]:
+    if gen_desc['script'] != '//tools/protoc_wrapper/protoc_wrapper.py':
       return None, None
     plugin = 'proto'
+    args = gen_desc.get('args', [])
     for arg in (arg for arg in args if arg.startswith('--plugin=')):
       # |arg| at this point looks like:
       #  --plugin=protoc-gen-plugin=gcc_like_host/protozero_plugin
diff --git a/tools/gn2bp/update_results.sh b/tools/gn2bp/update_results.sh
index ad0277c..f9321d9 100755
--- a/tools/gn2bp/update_results.sh
+++ b/tools/gn2bp/update_results.sh
@@ -12,7 +12,7 @@
 set -eux
 
 TARGETS=(
-  "//net:net"
+  "//components/cronet/android:cronet"
 )
 
 BASEDIR=$(dirname "$0")