Merge "Uses identical hostName across all interface"
diff --git a/Cronet/tests/cts/src/android/net/http/cts/BidirectionalStreamTest.kt b/Cronet/tests/cts/src/android/net/http/cts/BidirectionalStreamTest.kt
new file mode 100644
index 0000000..13c220d
--- /dev/null
+++ b/Cronet/tests/cts/src/android/net/http/cts/BidirectionalStreamTest.kt
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2023 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.http.cts
+
+import android.content.Context
+import android.net.http.BidirectionalStream
+import android.net.http.HttpEngine
+import android.net.http.cts.util.TestBidirectionalStreamCallback
+import android.net.http.cts.util.TestBidirectionalStreamCallback.ResponseStep
+import android.net.http.cts.util.assumeOKStatusCode
+import android.net.http.cts.util.skipIfNoInternetConnection
+import androidx.test.core.app.ApplicationProvider
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import kotlin.test.Test
+import kotlin.test.assertEquals
+import org.hamcrest.MatcherAssert
+import org.hamcrest.Matchers
+import org.junit.After
+import org.junit.Before
+import org.junit.runner.RunWith
+
+private const val URL = "https://source.android.com"
+
+/**
+ * This tests uses a non-hermetic server. Instead of asserting, assume the next callback. This way,
+ * if the request were to fail, the test would just be skipped instead of failing.
+ */
+@RunWith(AndroidJUnit4::class)
+class BidirectionalStreamTest {
+    private val context: Context = ApplicationProvider.getApplicationContext()
+    private val callback = TestBidirectionalStreamCallback()
+    private val httpEngine = HttpEngine.Builder(context).build()
+    private var stream: BidirectionalStream? = null
+
+    @Before
+    fun setUp() {
+        skipIfNoInternetConnection(context)
+    }
+
+    @After
+    @Throws(Exception::class)
+    fun tearDown() {
+        // cancel active requests to enable engine shutdown.
+        stream?.let {
+            it.cancel()
+            callback.blockForDone()
+        }
+        httpEngine.shutdown()
+    }
+
+    private fun createBidirectionalStreamBuilder(url: String): BidirectionalStream.Builder {
+        return httpEngine.newBidirectionalStreamBuilder(url, callback, callback.executor)
+    }
+
+    @Test
+    @Throws(Exception::class)
+    fun testBidirectionalStream_GetStream_CompletesSuccessfully() {
+        stream = createBidirectionalStreamBuilder(URL).setHttpMethod("GET").build()
+        stream!!.start()
+        callback.assumeCallback(ResponseStep.ON_SUCCEEDED)
+        val info = callback.mResponseInfo
+        assumeOKStatusCode(info)
+        MatcherAssert.assertThat(
+            "Received byte count must be > 0", info.receivedByteCount, Matchers.greaterThan(0L))
+        assertEquals("h2", info.negotiatedProtocol)
+    }
+}
diff --git a/Cronet/tests/cts/src/android/net/http/cts/util/TestBidirectionalStreamCallback.java b/Cronet/tests/cts/src/android/net/http/cts/util/TestBidirectionalStreamCallback.java
new file mode 100644
index 0000000..e82b24d
--- /dev/null
+++ b/Cronet/tests/cts/src/android/net/http/cts/util/TestBidirectionalStreamCallback.java
@@ -0,0 +1,484 @@
+/*
+ * Copyright (C) 2023 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.http.cts.util;
+
+import static org.hamcrest.Matchers.equalTo;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assume.assumeThat;
+import static org.junit.Assume.assumeTrue;
+
+import android.net.http.BidirectionalStream;
+import android.net.http.HttpException;
+import android.net.http.UrlResponseInfo;
+import android.os.ConditionVariable;
+
+import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadFactory;
+
+/**
+ * Callback that tracks information from different callbacks and has a method to block thread until
+ * the stream completes on another thread. Allows to cancel, block stream or throw an exception from
+ * an arbitrary step.
+ */
+public class TestBidirectionalStreamCallback extends BidirectionalStream.Callback {
+    private static final int TIMEOUT_MS = 12_000;
+    public UrlResponseInfo mResponseInfo;
+    public HttpException mError;
+
+    public ResponseStep mResponseStep = ResponseStep.NOTHING;
+
+    public boolean mOnErrorCalled;
+    public boolean mOnCanceledCalled;
+
+    public int mHttpResponseDataLength;
+    public String mResponseAsString = "";
+
+    public UrlResponseInfo.HeaderBlock mTrailers;
+
+    private static final int READ_BUFFER_SIZE = 32 * 1024;
+
+    // When false, the consumer is responsible for all calls into the stream
+    // that advance it.
+    private boolean mAutoAdvance = true;
+
+    // Conditionally fail on certain steps.
+    private FailureType mFailureType = FailureType.NONE;
+    private ResponseStep mFailureStep = ResponseStep.NOTHING;
+
+    // Signals when the stream is done either successfully or not.
+    private final ConditionVariable mDone = new ConditionVariable();
+
+    // Signaled on each step when mAutoAdvance is false.
+    private final ConditionVariable mReadStepBlock = new ConditionVariable();
+    private final ConditionVariable mWriteStepBlock = new ConditionVariable();
+
+    // Executor Service for Cronet callbacks.
+    private final ExecutorService mExecutorService =
+            Executors.newSingleThreadExecutor(new ExecutorThreadFactory());
+    private Thread mExecutorThread;
+
+    // position() of ByteBuffer prior to read() call.
+    private int mBufferPositionBeforeRead;
+
+    // Data to write.
+    private final ArrayList<WriteBuffer> mWriteBuffers = new ArrayList<WriteBuffer>();
+
+    // Buffers that we yet to receive the corresponding onWriteCompleted callback.
+    private final ArrayList<WriteBuffer> mWriteBuffersToBeAcked = new ArrayList<WriteBuffer>();
+
+    // Whether to use a direct executor.
+    private final boolean mUseDirectExecutor;
+    private final DirectExecutor mDirectExecutor;
+
+    private class ExecutorThreadFactory implements ThreadFactory {
+        @Override
+        public Thread newThread(Runnable r) {
+            mExecutorThread = new Thread(r);
+            return mExecutorThread;
+        }
+    }
+
+    private static class WriteBuffer {
+        final ByteBuffer mBuffer;
+        final boolean mFlush;
+
+        WriteBuffer(ByteBuffer buffer, boolean flush) {
+            mBuffer = buffer;
+            mFlush = flush;
+        }
+    }
+
+    private static class DirectExecutor implements Executor {
+        @Override
+        public void execute(Runnable task) {
+            task.run();
+        }
+    }
+
+    public enum ResponseStep {
+        NOTHING,
+        ON_STREAM_READY,
+        ON_RESPONSE_STARTED,
+        ON_READ_COMPLETED,
+        ON_WRITE_COMPLETED,
+        ON_TRAILERS,
+        ON_CANCELED,
+        ON_FAILED,
+        ON_SUCCEEDED,
+    }
+
+    public enum FailureType {
+        NONE,
+        CANCEL_SYNC,
+        CANCEL_ASYNC,
+        // Same as above, but continues to advance the stream after posting
+        // the cancellation task.
+        CANCEL_ASYNC_WITHOUT_PAUSE,
+        THROW_SYNC
+    }
+
+    private boolean isTerminalCallback(ResponseStep step) {
+        switch (step) {
+            case ON_SUCCEEDED:
+            case ON_CANCELED:
+            case ON_FAILED:
+                return true;
+            default:
+                return false;
+        }
+    }
+
+    public TestBidirectionalStreamCallback() {
+        mUseDirectExecutor = false;
+        mDirectExecutor = null;
+    }
+
+    public TestBidirectionalStreamCallback(boolean useDirectExecutor) {
+        mUseDirectExecutor = useDirectExecutor;
+        mDirectExecutor = new DirectExecutor();
+    }
+
+    public void setAutoAdvance(boolean autoAdvance) {
+        mAutoAdvance = autoAdvance;
+    }
+
+    public void setFailure(FailureType failureType, ResponseStep failureStep) {
+        mFailureStep = failureStep;
+        mFailureType = failureType;
+    }
+
+    public boolean blockForDone() {
+        return mDone.block(TIMEOUT_MS);
+    }
+
+    /**
+     * Waits for a terminal callback to complete execution before failing if the callback is not the
+     * expected one
+     *
+     * @param expectedStep the expected callback step
+     */
+    public void expectCallback(ResponseStep expectedStep) {
+        if (isTerminalCallback(expectedStep)) {
+            assertTrue(String.format(
+                            "Request timed out. Expected %s callback. Current callback is %s",
+                            expectedStep, mResponseStep),
+                    blockForDone());
+        }
+        assertSame(expectedStep, mResponseStep);
+    }
+
+    /**
+     * Waits for a terminal callback to complete execution before skipping the test if the callback
+     * is not the expected one
+     *
+     * @param expectedStep the expected callback step
+     */
+    public void assumeCallback(ResponseStep expectedStep) {
+        if (isTerminalCallback(expectedStep)) {
+            assumeTrue(
+                    String.format(
+                            "Request timed out. Expected %s callback. Current callback is %s",
+                            expectedStep, mResponseStep),
+                    blockForDone());
+        }
+        assumeThat(expectedStep, equalTo(mResponseStep));
+    }
+
+    public void waitForNextReadStep() {
+        mReadStepBlock.block();
+        mReadStepBlock.close();
+    }
+
+    public void waitForNextWriteStep() {
+        mWriteStepBlock.block();
+        mWriteStepBlock.close();
+    }
+
+    public Executor getExecutor() {
+        if (mUseDirectExecutor) {
+            return mDirectExecutor;
+        }
+        return mExecutorService;
+    }
+
+    public void shutdownExecutor() {
+        if (mUseDirectExecutor) {
+            throw new UnsupportedOperationException("DirectExecutor doesn't support shutdown");
+        }
+        mExecutorService.shutdown();
+    }
+
+    public void addWriteData(byte[] data) {
+        addWriteData(data, true);
+    }
+
+    public void addWriteData(byte[] data, boolean flush) {
+        ByteBuffer writeBuffer = ByteBuffer.allocateDirect(data.length);
+        writeBuffer.put(data);
+        writeBuffer.flip();
+        mWriteBuffers.add(new WriteBuffer(writeBuffer, flush));
+        mWriteBuffersToBeAcked.add(new WriteBuffer(writeBuffer, flush));
+    }
+
+    @Override
+    public void onStreamReady(BidirectionalStream stream) {
+        checkOnValidThread();
+        assertFalse(stream.isDone());
+        assertEquals(ResponseStep.NOTHING, mResponseStep);
+        assertNull(mError);
+        mResponseStep = ResponseStep.ON_STREAM_READY;
+        if (maybeThrowCancelOrPause(stream, mWriteStepBlock)) {
+            return;
+        }
+        startNextWrite(stream);
+    }
+
+    @Override
+    public void onResponseHeadersReceived(BidirectionalStream stream, UrlResponseInfo info) {
+        checkOnValidThread();
+        assertFalse(stream.isDone());
+        assertTrue(
+                mResponseStep == ResponseStep.NOTHING
+                        || mResponseStep == ResponseStep.ON_STREAM_READY
+                        || mResponseStep == ResponseStep.ON_WRITE_COMPLETED);
+        assertNull(mError);
+
+        mResponseStep = ResponseStep.ON_RESPONSE_STARTED;
+        mResponseInfo = info;
+        if (maybeThrowCancelOrPause(stream, mReadStepBlock)) {
+            return;
+        }
+        startNextRead(stream);
+    }
+
+    @Override
+    public void onReadCompleted(
+            BidirectionalStream stream,
+            UrlResponseInfo info,
+            ByteBuffer byteBuffer,
+            boolean endOfStream) {
+        checkOnValidThread();
+        assertFalse(stream.isDone());
+        assertTrue(
+                mResponseStep == ResponseStep.ON_RESPONSE_STARTED
+                        || mResponseStep == ResponseStep.ON_READ_COMPLETED
+                        || mResponseStep == ResponseStep.ON_WRITE_COMPLETED
+                        || mResponseStep == ResponseStep.ON_TRAILERS);
+        assertNull(mError);
+
+        mResponseStep = ResponseStep.ON_READ_COMPLETED;
+        mResponseInfo = info;
+
+        final int bytesRead = byteBuffer.position() - mBufferPositionBeforeRead;
+        mHttpResponseDataLength += bytesRead;
+        final byte[] lastDataReceivedAsBytes = new byte[bytesRead];
+        // Rewind byteBuffer.position() to pre-read() position.
+        byteBuffer.position(mBufferPositionBeforeRead);
+        // This restores byteBuffer.position() to its value on entrance to
+        // this function.
+        byteBuffer.get(lastDataReceivedAsBytes);
+
+        mResponseAsString += new String(lastDataReceivedAsBytes);
+
+        if (maybeThrowCancelOrPause(stream, mReadStepBlock)) {
+            return;
+        }
+        // Do not read if EOF has been reached.
+        if (!endOfStream) {
+            startNextRead(stream);
+        }
+    }
+
+    @Override
+    public void onWriteCompleted(
+            BidirectionalStream stream,
+            UrlResponseInfo info,
+            ByteBuffer buffer,
+            boolean endOfStream) {
+        checkOnValidThread();
+        assertFalse(stream.isDone());
+        assertNull(mError);
+        mResponseStep = ResponseStep.ON_WRITE_COMPLETED;
+        mResponseInfo = info;
+        if (!mWriteBuffersToBeAcked.isEmpty()) {
+            assertEquals(buffer, mWriteBuffersToBeAcked.get(0).mBuffer);
+            mWriteBuffersToBeAcked.remove(0);
+        }
+        if (maybeThrowCancelOrPause(stream, mWriteStepBlock)) {
+            return;
+        }
+        startNextWrite(stream);
+    }
+
+    @Override
+    public void onResponseTrailersReceived(
+            BidirectionalStream stream,
+            UrlResponseInfo info,
+            UrlResponseInfo.HeaderBlock trailers) {
+        checkOnValidThread();
+        assertFalse(stream.isDone());
+        assertNull(mError);
+        mResponseStep = ResponseStep.ON_TRAILERS;
+        mResponseInfo = info;
+        mTrailers = trailers;
+        if (maybeThrowCancelOrPause(stream, mReadStepBlock)) {
+            return;
+        }
+    }
+
+    @Override
+    public void onSucceeded(BidirectionalStream stream, UrlResponseInfo info) {
+        checkOnValidThread();
+        assertTrue(stream.isDone());
+        assertTrue(
+                mResponseStep == ResponseStep.ON_RESPONSE_STARTED
+                        || mResponseStep == ResponseStep.ON_READ_COMPLETED
+                        || mResponseStep == ResponseStep.ON_WRITE_COMPLETED
+                        || mResponseStep == ResponseStep.ON_TRAILERS);
+        assertFalse(mOnErrorCalled);
+        assertFalse(mOnCanceledCalled);
+        assertNull(mError);
+        assertEquals(0, mWriteBuffers.size());
+        assertEquals(0, mWriteBuffersToBeAcked.size());
+
+        mResponseStep = ResponseStep.ON_SUCCEEDED;
+        mResponseInfo = info;
+        openDone();
+        maybeThrowCancelOrPause(stream, mReadStepBlock);
+    }
+
+    @Override
+    public void onFailed(BidirectionalStream stream, UrlResponseInfo info, HttpException error) {
+        checkOnValidThread();
+        assertTrue(stream.isDone());
+        // Shouldn't happen after success.
+        assertTrue(mResponseStep != ResponseStep.ON_SUCCEEDED);
+        // Should happen at most once for a single stream.
+        assertFalse(mOnErrorCalled);
+        assertFalse(mOnCanceledCalled);
+        assertNull(mError);
+        mResponseStep = ResponseStep.ON_FAILED;
+        mResponseInfo = info;
+
+        mOnErrorCalled = true;
+        mError = error;
+        openDone();
+        maybeThrowCancelOrPause(stream, mReadStepBlock);
+    }
+
+    @Override
+    public void onCanceled(BidirectionalStream stream, UrlResponseInfo info) {
+        checkOnValidThread();
+        assertTrue(stream.isDone());
+        // Should happen at most once for a single stream.
+        assertFalse(mOnCanceledCalled);
+        assertFalse(mOnErrorCalled);
+        assertNull(mError);
+        mResponseStep = ResponseStep.ON_CANCELED;
+        mResponseInfo = info;
+
+        mOnCanceledCalled = true;
+        openDone();
+        maybeThrowCancelOrPause(stream, mReadStepBlock);
+    }
+
+    public void startNextRead(BidirectionalStream stream) {
+        startNextRead(stream, ByteBuffer.allocateDirect(READ_BUFFER_SIZE));
+    }
+
+    public void startNextRead(BidirectionalStream stream, ByteBuffer buffer) {
+        mBufferPositionBeforeRead = buffer.position();
+        stream.read(buffer);
+    }
+
+    public void startNextWrite(BidirectionalStream stream) {
+        if (!mWriteBuffers.isEmpty()) {
+            Iterator<WriteBuffer> iterator = mWriteBuffers.iterator();
+            while (iterator.hasNext()) {
+                WriteBuffer b = iterator.next();
+                stream.write(b.mBuffer, !iterator.hasNext());
+                iterator.remove();
+                if (b.mFlush) {
+                    stream.flush();
+                    break;
+                }
+            }
+        }
+    }
+
+    public boolean isDone() {
+        // It's not mentioned by the Android docs, but block(0) seems to block
+        // indefinitely, so have to block for one millisecond to get state
+        // without blocking.
+        return mDone.block(1);
+    }
+
+    /** Returns the number of pending Writes. */
+    public int numPendingWrites() {
+        return mWriteBuffers.size();
+    }
+
+    protected void openDone() {
+        mDone.open();
+    }
+
+    /** Returns {@code false} if the callback should continue to advance the stream. */
+    private boolean maybeThrowCancelOrPause(
+            final BidirectionalStream stream, ConditionVariable stepBlock) {
+        if (mResponseStep != mFailureStep || mFailureType == FailureType.NONE) {
+            if (!mAutoAdvance) {
+                stepBlock.open();
+                return true;
+            }
+            return false;
+        }
+
+        if (mFailureType == FailureType.THROW_SYNC) {
+            throw new IllegalStateException("Callback Exception.");
+        }
+        Runnable task =
+                new Runnable() {
+                    @Override
+                    public void run() {
+                        stream.cancel();
+                    }
+                };
+        if (mFailureType == FailureType.CANCEL_ASYNC
+                || mFailureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE) {
+            getExecutor().execute(task);
+        } else {
+            task.run();
+        }
+        return mFailureType != FailureType.CANCEL_ASYNC_WITHOUT_PAUSE;
+    }
+
+    /** Checks whether callback methods are invoked on the correct thread. */
+    private void checkOnValidThread() {
+        if (!mUseDirectExecutor) {
+            assertEquals(mExecutorThread, Thread.currentThread());
+        }
+    }
+}
diff --git a/Cronet/tools/import/copy.bara.sky b/Cronet/tools/import/copy.bara.sky
index 64256a0..2acf8cd 100644
--- a/Cronet/tools/import/copy.bara.sky
+++ b/Cronet/tools/import/copy.bara.sky
@@ -17,8 +17,8 @@
     "**/Android.bp",
     "**/Android.mk",
 
-    # Exclude existing OWNERS files
-    "**/OWNERS",
+    # Exclude existing *OWNERS files
+    "**/*OWNERS",
 ]
 
 cronet_origin_files = glob(
diff --git a/Tethering/tests/mts/AndroidManifest.xml b/Tethering/tests/mts/AndroidManifest.xml
index 6d2abca..42f2da9 100644
--- a/Tethering/tests/mts/AndroidManifest.xml
+++ b/Tethering/tests/mts/AndroidManifest.xml
@@ -27,8 +27,6 @@
     <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
                      android:targetPackage="android.tethering.mts"
                      android:label="MTS tests of android.tethering">
-        <meta-data android:name="listener"
-            android:value="com.android.cts.runner.CtsTestRunListener" />
     </instrumentation>
 
 </manifest>
diff --git a/framework-t/src/android/net/NetworkStatsAccess.java b/framework-t/src/android/net/NetworkStatsAccess.java
index b64fbdb..0585756 100644
--- a/framework-t/src/android/net/NetworkStatsAccess.java
+++ b/framework-t/src/android/net/NetworkStatsAccess.java
@@ -111,17 +111,18 @@
         final DevicePolicyManager mDpm = context.getSystemService(DevicePolicyManager.class);
         final TelephonyManager tm = (TelephonyManager)
                 context.getSystemService(Context.TELEPHONY_SERVICE);
-        boolean hasCarrierPrivileges;
-        final long token = Binder.clearCallingIdentity();
+        final boolean hasCarrierPrivileges;
+        final boolean isDeviceOwner;
+        long token = Binder.clearCallingIdentity();
         try {
             hasCarrierPrivileges = tm != null
                     && tm.checkCarrierPrivilegesForPackageAnyPhone(callingPackage)
                             == TelephonyManager.CARRIER_PRIVILEGE_STATUS_HAS_ACCESS;
+            isDeviceOwner = mDpm != null && mDpm.isDeviceOwnerApp(callingPackage);
         } finally {
             Binder.restoreCallingIdentity(token);
         }
 
-        final boolean isDeviceOwner = mDpm != null && mDpm.isDeviceOwnerApp(callingPackage);
         final int appId = UserHandle.getAppId(callingUid);
 
         final boolean isNetworkStack = context.checkPermission(
@@ -135,15 +136,20 @@
             return NetworkStatsAccess.Level.DEVICE;
         }
 
-        boolean hasAppOpsPermission = hasAppOpsPermission(context, callingUid, callingPackage);
+        final boolean hasAppOpsPermission =
+                hasAppOpsPermission(context, callingUid, callingPackage);
         if (hasAppOpsPermission || context.checkCallingOrSelfPermission(
                 READ_NETWORK_USAGE_HISTORY) == PackageManager.PERMISSION_GRANTED) {
             return NetworkStatsAccess.Level.DEVICESUMMARY;
         }
 
-        //TODO(b/169395065) Figure out if this flow makes sense in Device Owner mode.
-        boolean isProfileOwner = mDpm != null && (mDpm.isProfileOwnerApp(callingPackage)
-                || mDpm.isDeviceOwnerApp(callingPackage));
+        final boolean isProfileOwner;
+        token = Binder.clearCallingIdentity();
+        try {
+            isProfileOwner = mDpm != null && mDpm.isProfileOwnerApp(callingPackage);
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
         if (isProfileOwner) {
             // Apps with the AppOps permission, profile owners, and apps with the privileged
             // permission can access data usage for all apps in this user/profile.
diff --git a/netd/BpfHandler.cpp b/netd/BpfHandler.cpp
index 7950ff7..2b773c9 100644
--- a/netd/BpfHandler.cpp
+++ b/netd/BpfHandler.cpp
@@ -93,7 +93,7 @@
     // cgroup if the program is pinned properly.
     // TODO: delete the if statement once all devices should support cgroup
     // socket filter (ie. the minimum kernel version required is 4.14).
-    if (!access(CGROUP_SOCKET_PROG_PATH, F_OK)) {
+    if (bpf::isAtLeastKernelVersion(4, 14, 0)) {
         RETURN_IF_NOT_OK(
                 attachProgramToCgroup(CGROUP_SOCKET_PROG_PATH, cg_fd, BPF_CGROUP_INET_SOCK_CREATE));
     }
diff --git a/service-t/src/com/android/server/NsdService.java b/service-t/src/com/android/server/NsdService.java
index 4ad39e1..8e06fde 100644
--- a/service-t/src/com/android/server/NsdService.java
+++ b/service-t/src/com/android/server/NsdService.java
@@ -317,7 +317,7 @@
             if (!mIsMonitoringSocketsStarted) return;
             if (isAnyRequestActive()) return;
 
-            mMdnsSocketProvider.stopMonitoringSockets();
+            mMdnsSocketProvider.requestStopWhenInactive();
             mIsMonitoringSocketsStarted = false;
         }
 
diff --git a/service-t/src/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java b/service-t/src/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java
index fdd1478..c472a8f 100644
--- a/service-t/src/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java
+++ b/service-t/src/com/android/server/connectivity/mdns/EnqueueMdnsQueryCallable.java
@@ -60,13 +60,21 @@
         }
     }
 
+    @NonNull
     private final WeakReference<MdnsSocketClientBase> weakRequestSender;
+    @NonNull
     private final MdnsPacketWriter packetWriter;
+    @NonNull
     private final String[] serviceTypeLabels;
+    @NonNull
     private final List<String> subtypes;
     private final boolean expectUnicastResponse;
     private final int transactionId;
+    @Nullable
     private final Network network;
+    private final boolean sendDiscoveryQueries;
+    @NonNull
+    private final List<MdnsResponse> servicesToResolve;
 
     EnqueueMdnsQueryCallable(
             @NonNull MdnsSocketClientBase requestSender,
@@ -75,7 +83,9 @@
             @NonNull Collection<String> subtypes,
             boolean expectUnicastResponse,
             int transactionId,
-            @Nullable Network network) {
+            @Nullable Network network,
+            boolean sendDiscoveryQueries,
+            @NonNull Collection<MdnsResponse> servicesToResolve) {
         weakRequestSender = new WeakReference<>(requestSender);
         this.packetWriter = packetWriter;
         serviceTypeLabels = TextUtils.split(serviceType, "\\.");
@@ -83,6 +93,8 @@
         this.expectUnicastResponse = expectUnicastResponse;
         this.transactionId = transactionId;
         this.network = network;
+        this.sendDiscoveryQueries = sendDiscoveryQueries;
+        this.servicesToResolve = new ArrayList<>(servicesToResolve);
     }
 
     // Incompatible return type for override of Callable#call().
@@ -96,9 +108,48 @@
                 return null;
             }
 
-            int numQuestions = 1;
-            if (!subtypes.isEmpty()) {
-                numQuestions += subtypes.size();
+            int numQuestions = 0;
+
+            if (sendDiscoveryQueries) {
+                numQuestions++; // Base service type
+                if (!subtypes.isEmpty()) {
+                    numQuestions += subtypes.size();
+                }
+            }
+
+            // List of (name, type) to query
+            final ArrayList<Pair<String[], Integer>> missingKnownAnswerRecords = new ArrayList<>();
+            for (MdnsResponse response : servicesToResolve) {
+                // In practice responses should always have at least one pointer record, since the
+                // record is added after creation in MdnsResponseDecoder. All PTR records point to
+                // the same instance name, since addPointerRecord is only called on instances
+                // obtained through MdnsResponseDecoder.findResponseWithPointer.
+                // TODO: also send queries to renew record TTL (as per RFC6762 7.1 no need to query
+                // if remaining TTL is more than half the original one, so send the queries if half
+                // the TTL has passed).
+                if (!response.hasPointerRecords() || response.isComplete()) continue;
+                final String[] instanceName = response.getPointerRecords().get(0).getPointer();
+                if (instanceName == null) continue;
+                if (!response.hasTextRecord()) {
+                    missingKnownAnswerRecords.add(new Pair<>(instanceName, MdnsRecord.TYPE_TXT));
+                }
+                if (!response.hasServiceRecord()) {
+                    missingKnownAnswerRecords.add(new Pair<>(instanceName, MdnsRecord.TYPE_SRV));
+                    // The hostname is not yet known, so queries for address records will be sent
+                    // the next time the EnqueueMdnsQueryCallable is enqueued if the reply does not
+                    // contain them. In practice, advertisers should include the address records
+                    // when queried for SRV, although it's not a MUST requirement (RFC6763 12.2).
+                } else if (!response.hasInet4AddressRecord() && !response.hasInet6AddressRecord()) {
+                    final String[] host = response.getServiceRecord().getServiceHost();
+                    missingKnownAnswerRecords.add(new Pair<>(host, MdnsRecord.TYPE_A));
+                    missingKnownAnswerRecords.add(new Pair<>(host, MdnsRecord.TYPE_AAAA));
+                }
+            }
+            numQuestions += missingKnownAnswerRecords.size();
+
+            if (numQuestions == 0) {
+                // No query to send
+                return null;
             }
 
             // Header.
@@ -109,28 +160,25 @@
             packetWriter.writeUInt16(0); // number of authority entries
             packetWriter.writeUInt16(0); // number of additional records
 
-            // Question(s). There will be one question for each (fqdn+subtype, recordType)
-          // combination,
-            // as well as one for each (fqdn, recordType) combination.
-
-            for (String subtype : subtypes) {
-                String[] labels = new String[serviceTypeLabels.length + 2];
-                labels[0] = MdnsConstants.SUBTYPE_PREFIX + subtype;
-                labels[1] = MdnsConstants.SUBTYPE_LABEL;
-                System.arraycopy(serviceTypeLabels, 0, labels, 2, serviceTypeLabels.length);
-
-                packetWriter.writeLabels(labels);
-                packetWriter.writeUInt16(MdnsRecord.TYPE_PTR);
-                packetWriter.writeUInt16(
-                        MdnsConstants.QCLASS_INTERNET
-                                | (expectUnicastResponse ? MdnsConstants.QCLASS_UNICAST : 0));
+            // Question(s) for missing records on known answers
+            for (Pair<String[], Integer> question : missingKnownAnswerRecords) {
+                writeQuestion(question.first, question.second);
             }
 
-            packetWriter.writeLabels(serviceTypeLabels);
-            packetWriter.writeUInt16(MdnsRecord.TYPE_PTR);
-            packetWriter.writeUInt16(
-                    MdnsConstants.QCLASS_INTERNET
-                            | (expectUnicastResponse ? MdnsConstants.QCLASS_UNICAST : 0));
+            // Question(s) for discovering other services with the type. There will be one question
+            // for each (fqdn+subtype, recordType) combination, as well as one for each (fqdn,
+            // recordType) combination.
+            if (sendDiscoveryQueries) {
+                for (String subtype : subtypes) {
+                    String[] labels = new String[serviceTypeLabels.length + 2];
+                    labels[0] = MdnsConstants.SUBTYPE_PREFIX + subtype;
+                    labels[1] = MdnsConstants.SUBTYPE_LABEL;
+                    System.arraycopy(serviceTypeLabels, 0, labels, 2, serviceTypeLabels.length);
+
+                    writeQuestion(labels, MdnsRecord.TYPE_PTR);
+                }
+                writeQuestion(serviceTypeLabels, MdnsRecord.TYPE_PTR);
+            }
 
             if (requestSender instanceof MdnsMultinetworkSocketClient) {
                 sendPacketToIpv4AndIpv6(requestSender, MdnsConstants.MDNS_PORT, network);
@@ -159,6 +207,14 @@
         }
     }
 
+    private void writeQuestion(String[] labels, int type) throws IOException {
+        packetWriter.writeLabels(labels);
+        packetWriter.writeUInt16(type);
+        packetWriter.writeUInt16(
+                MdnsConstants.QCLASS_INTERNET
+                        | (expectUnicastResponse ? MdnsConstants.QCLASS_UNICAST : 0));
+    }
+
     private void sendPacketTo(MdnsSocketClientBase requestSender, InetSocketAddress address)
             throws IOException {
         DatagramPacket packet = packetWriter.getPacket(address);
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java b/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java
index cc6b98b..67059e7 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsDiscoveryManager.java
@@ -19,6 +19,7 @@
 import android.Manifest.permission;
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
+import android.net.Network;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.Log;
@@ -27,7 +28,6 @@
 import com.android.server.connectivity.mdns.util.MdnsLogger;
 
 import java.io.IOException;
-import java.util.Arrays;
 import java.util.Map;
 
 /**
@@ -119,22 +119,10 @@
     }
 
     @Override
-    public synchronized void onResponseReceived(@NonNull MdnsResponse response) {
-        String[] name =
-                response.getPointerRecords().isEmpty()
-                        ? null
-                        : response.getPointerRecords().get(0).getName();
-        if (name != null) {
-            for (MdnsServiceTypeClient serviceTypeClient : serviceTypeClients.values()) {
-                String[] serviceType = serviceTypeClient.getServiceTypeLabels();
-                if ((Arrays.equals(name, serviceType)
-                        || ((name.length == (serviceType.length + 2))
-                        && name[1].equals(MdnsConstants.SUBTYPE_LABEL)
-                        && MdnsRecord.labelsAreSuffix(serviceType, name)))) {
-                    serviceTypeClient.processResponse(response);
-                    return;
-                }
-            }
+    public synchronized void onResponseReceived(@NonNull MdnsPacket packet,
+            int interfaceIndex, Network network) {
+        for (MdnsServiceTypeClient serviceTypeClient : serviceTypeClients.values()) {
+            serviceTypeClient.processResponse(packet, interfaceIndex, network);
         }
     }
 
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClient.java b/service-t/src/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClient.java
index d959065..93972d9 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClient.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClient.java
@@ -33,7 +33,6 @@
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetSocketAddress;
-import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
@@ -48,7 +47,6 @@
 
     @NonNull private final Handler mHandler;
     @NonNull private final MdnsSocketProvider mSocketProvider;
-    @NonNull private final MdnsResponseDecoder mResponseDecoder;
 
     private final Map<MdnsServiceBrowserListener, InterfaceSocketCallback> mRequestedNetworks =
             new ArrayMap<>();
@@ -62,8 +60,6 @@
             @NonNull MdnsSocketProvider provider) {
         mHandler = new Handler(looper);
         mSocketProvider = provider;
-        mResponseDecoder = new MdnsResponseDecoder(
-                new MdnsResponseDecoder.Clock(), null /* serviceType */);
     }
 
     private class InterfaceSocketCallback implements MdnsSocketProvider.SocketCallback {
@@ -170,19 +166,21 @@
             @NonNull Network network) {
         int packetNumber = ++mReceivedPacketNumber;
 
-        final List<MdnsResponse> responses = new ArrayList<>();
-        final int errorCode = mResponseDecoder.decode(
-                recvbuf, length, responses, interfaceIndex, network);
-        if (errorCode == MdnsResponseDecoder.SUCCESS) {
-            for (MdnsResponse response : responses) {
+        final MdnsPacket response;
+        try {
+            response = MdnsResponseDecoder.parseResponse(recvbuf, length);
+        } catch (MdnsPacket.ParseException e) {
+            if (e.code != MdnsResponseErrorCode.ERROR_NOT_RESPONSE_MESSAGE) {
+                Log.e(TAG, e.getMessage(), e);
                 if (mCallback != null) {
-                    mCallback.onResponseReceived(response);
+                    mCallback.onFailedToParseMdnsResponse(packetNumber, e.code);
                 }
             }
-        } else if (errorCode != MdnsResponseErrorCode.ERROR_NOT_RESPONSE_MESSAGE) {
-            if (mCallback != null) {
-                mCallback.onFailedToParseMdnsResponse(packetNumber, errorCode);
-            }
+            return;
+        }
+
+        if (mCallback != null) {
+            mCallback.onResponseReceived(response, interfaceIndex, network);
         }
     }
 
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsResponseDecoder.java b/service-t/src/com/android/server/connectivity/mdns/MdnsResponseDecoder.java
index 82da2e4..31527c0 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsResponseDecoder.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsResponseDecoder.java
@@ -24,7 +24,6 @@
 import com.android.server.connectivity.mdns.util.MdnsLogger;
 
 import java.io.EOFException;
-import java.net.DatagramPacket;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
@@ -82,34 +81,16 @@
 
     /**
      * Decodes all mDNS responses for the desired service type from a packet. The class does not
-     * check
-     * the responses for completeness; the caller should do that.
-     *
-     * @param packet The packet to read from.
-     * @param interfaceIndex the network interface index (or {@link
-     *     MdnsSocket#INTERFACE_INDEX_UNSPECIFIED} if not known) at which the packet was received
-     * @param network the network at which the packet was received, or null if it is unknown.
-     * @return A list of mDNS responses, or null if the packet contained no appropriate responses.
-     */
-    public int decode(@NonNull DatagramPacket packet, @NonNull List<MdnsResponse> responses,
-            int interfaceIndex, @Nullable Network network) {
-        return decode(packet.getData(), packet.getLength(), responses, interfaceIndex, network);
-    }
-
-    /**
-     * Decodes all mDNS responses for the desired service type from a packet. The class does not
-     * check
-     * the responses for completeness; the caller should do that.
+     * check the responses for completeness; the caller should do that.
      *
      * @param recvbuf The received data buffer to read from.
      * @param length The length of received data buffer.
-     * @param interfaceIndex the network interface index (or {@link
-     *     MdnsSocket#INTERFACE_INDEX_UNSPECIFIED} if not known) at which the packet was received
-     * @param network the network at which the packet was received, or null if it is unknown.
-     * @return A list of mDNS responses, or null if the packet contained no appropriate responses.
+     * @return A decoded {@link MdnsPacket}.
+     * @throws MdnsPacket.ParseException if a response packet could not be parsed.
      */
-    public int decode(@NonNull byte[] recvbuf, int length, @NonNull List<MdnsResponse> responses,
-            int interfaceIndex, @Nullable Network network) {
+    @NonNull
+    public static MdnsPacket parseResponse(@NonNull byte[] recvbuf, int length)
+            throws MdnsPacket.ParseException {
         MdnsPacketReader reader = new MdnsPacketReader(recvbuf, length);
 
         final MdnsPacket mdnsPacket;
@@ -117,21 +98,35 @@
             reader.readUInt16(); // transaction ID (not used)
             int flags = reader.readUInt16();
             if ((flags & MdnsConstants.FLAGS_RESPONSE_MASK) != MdnsConstants.FLAGS_RESPONSE) {
-                return MdnsResponseErrorCode.ERROR_NOT_RESPONSE_MESSAGE;
+                throw new MdnsPacket.ParseException(
+                        MdnsResponseErrorCode.ERROR_NOT_RESPONSE_MESSAGE, "Not a response", null);
             }
 
             mdnsPacket = MdnsPacket.parseRecordsSection(reader, flags);
             if (mdnsPacket.answers.size() < 1) {
-                return MdnsResponseErrorCode.ERROR_NO_ANSWERS;
+                throw new MdnsPacket.ParseException(
+                        MdnsResponseErrorCode.ERROR_NOT_RESPONSE_MESSAGE, "Response has no answers",
+                        null);
             }
+            return mdnsPacket;
         } catch (EOFException e) {
-            LOGGER.e("Reached the end of the mDNS response unexpectedly.", e);
-            return MdnsResponseErrorCode.ERROR_END_OF_FILE;
-        } catch (MdnsPacket.ParseException e) {
-            LOGGER.e(e.getMessage(), e);
-            return e.code;
+            throw new MdnsPacket.ParseException(MdnsResponseErrorCode.ERROR_END_OF_FILE,
+                    "Reached the end of the mDNS response unexpectedly.", e);
         }
+    }
 
+    /**
+     * Builds mDNS responses for the desired service type from a packet.
+     *
+     * The class does not check the responses for completeness; the caller should do that.
+     *
+     * @param mdnsPacket The packet to read from.
+     * @param interfaceIndex the network interface index (or {@link
+     *     MdnsSocket#INTERFACE_INDEX_UNSPECIFIED} if not known) at which the packet was received.
+     * @param network the network at which the packet was received, or null if it is unknown.
+     */
+    public List<MdnsResponse> buildResponses(@NonNull MdnsPacket mdnsPacket, int interfaceIndex,
+            @Nullable Network network) {
         final ArrayList<MdnsRecord> records = new ArrayList<>(
                 mdnsPacket.questions.size() + mdnsPacket.answers.size()
                         + mdnsPacket.authorityRecords.size() + mdnsPacket.additionalRecords.size());
@@ -139,6 +134,8 @@
         records.addAll(mdnsPacket.authorityRecords);
         records.addAll(mdnsPacket.additionalRecords);
 
+        final ArrayList<MdnsResponse> responses = new ArrayList<>();
+
         // The response records are structured in a hierarchy, where some records reference
         // others, as follows:
         //
@@ -224,8 +221,7 @@
                 }
             }
         }
-
-        return SUCCESS;
+        return responses;
     }
 
     private static void assignInetRecord(MdnsResponse response, MdnsInetAddressRecord inetRecord) {
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsSearchOptions.java b/service-t/src/com/android/server/connectivity/mdns/MdnsSearchOptions.java
index 583c4a9..3da6bd0 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsSearchOptions.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSearchOptions.java
@@ -46,7 +46,8 @@
                 public MdnsSearchOptions createFromParcel(Parcel source) {
                     return new MdnsSearchOptions(source.createStringArrayList(),
                             source.readBoolean(), source.readBoolean(),
-                            source.readParcelable(null));
+                            source.readParcelable(null),
+                            source.readString());
                 }
 
                 @Override
@@ -56,6 +57,8 @@
             };
     private static MdnsSearchOptions defaultOptions;
     private final List<String> subtypes;
+    @Nullable
+    private final String resolveInstanceName;
 
     private final boolean isPassiveMode;
     private final boolean removeExpiredService;
@@ -64,7 +67,7 @@
 
     /** Parcelable constructs for a {@link MdnsSearchOptions}. */
     MdnsSearchOptions(List<String> subtypes, boolean isPassiveMode, boolean removeExpiredService,
-            @Nullable Network network) {
+            @Nullable Network network, @Nullable String resolveInstanceName) {
         this.subtypes = new ArrayList<>();
         if (subtypes != null) {
             this.subtypes.addAll(subtypes);
@@ -72,6 +75,7 @@
         this.isPassiveMode = isPassiveMode;
         this.removeExpiredService = removeExpiredService;
         mNetwork = network;
+        this.resolveInstanceName = resolveInstanceName;
     }
 
     /** Returns a {@link Builder} for {@link MdnsSearchOptions}. */
@@ -115,6 +119,15 @@
         return mNetwork;
     }
 
+    /**
+     * If non-null, queries should try to resolve all records of this specific service, rather than
+     * discovering all services.
+     */
+    @Nullable
+    public String getResolveInstanceName() {
+        return resolveInstanceName;
+    }
+
     @Override
     public int describeContents() {
         return 0;
@@ -126,6 +139,7 @@
         out.writeBoolean(isPassiveMode);
         out.writeBoolean(removeExpiredService);
         out.writeParcelable(mNetwork, 0);
+        out.writeString(resolveInstanceName);
     }
 
     /** A builder to create {@link MdnsSearchOptions}. */
@@ -134,6 +148,7 @@
         private boolean isPassiveMode = true;
         private boolean removeExpiredService;
         private Network mNetwork;
+        private String resolveInstanceName;
 
         private Builder() {
             subtypes = new ArraySet<>();
@@ -194,10 +209,22 @@
             return this;
         }
 
+        /**
+         * Set the instance name to resolve.
+         *
+         * If non-null, queries should try to resolve all records of this specific service,
+         * rather than discovering all services.
+         * @param name The instance name.
+         */
+        public Builder setResolveInstanceName(String name) {
+            resolveInstanceName = name;
+            return this;
+        }
+
         /** Builds a {@link MdnsSearchOptions} with the arguments supplied to this builder. */
         public MdnsSearchOptions build() {
             return new MdnsSearchOptions(new ArrayList<>(subtypes), isPassiveMode,
-                    removeExpiredService, mNetwork);
+                    removeExpiredService, mNetwork, resolveInstanceName);
         }
     }
 }
\ No newline at end of file
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java b/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
index d26fbdb..707a57e 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsServiceTypeClient.java
@@ -21,9 +21,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.net.Network;
-import android.os.SystemClock;
 import android.text.TextUtils;
-import android.util.ArraySet;
+import android.util.ArrayMap;
 import android.util.Pair;
 
 import com.android.internal.annotations.GuardedBy;
@@ -33,12 +32,12 @@
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
-import java.util.Set;
 import java.util.concurrent.Future;
 import java.util.concurrent.ScheduledExecutorService;
 
@@ -54,15 +53,19 @@
     private final String serviceType;
     private final String[] serviceTypeLabels;
     private final MdnsSocketClientBase socketClient;
+    private final MdnsResponseDecoder responseDecoder;
     private final ScheduledExecutorService executor;
     private final Object lock = new Object();
-    private final Set<MdnsServiceBrowserListener> listeners = new ArraySet<>();
+    private final ArrayMap<MdnsServiceBrowserListener, MdnsSearchOptions> listeners =
+            new ArrayMap<>();
     private final Map<String, MdnsResponse> instanceNameToResponse = new HashMap<>();
     private final boolean removeServiceAfterTtlExpires =
             MdnsConfigs.removeServiceAfterTtlExpires();
     private final boolean allowSearchOptionsToRemoveExpiredService =
             MdnsConfigs.allowSearchOptionsToRemoveExpiredService();
 
+    private final MdnsResponseDecoder.Clock clock;
+
     @Nullable private MdnsSearchOptions searchOptions;
 
     // The session ID increases when startSendAndReceive() is called where we schedule a
@@ -84,10 +87,21 @@
             @NonNull String serviceType,
             @NonNull MdnsSocketClientBase socketClient,
             @NonNull ScheduledExecutorService executor) {
+        this(serviceType, socketClient, executor, new MdnsResponseDecoder.Clock());
+    }
+
+    @VisibleForTesting
+    public MdnsServiceTypeClient(
+            @NonNull String serviceType,
+            @NonNull MdnsSocketClientBase socketClient,
+            @NonNull ScheduledExecutorService executor,
+            @NonNull MdnsResponseDecoder.Clock clock) {
         this.serviceType = serviceType;
         this.socketClient = socketClient;
         this.executor = executor;
-        serviceTypeLabels = TextUtils.split(serviceType, "\\.");
+        this.serviceTypeLabels = TextUtils.split(serviceType, "\\.");
+        this.responseDecoder = new MdnsResponseDecoder(clock, serviceTypeLabels);
+        this.clock = clock;
     }
 
     private static MdnsServiceInfo buildMdnsServiceInfoFromResponse(
@@ -148,7 +162,7 @@
             @NonNull MdnsSearchOptions searchOptions) {
         synchronized (lock) {
             this.searchOptions = searchOptions;
-            if (listeners.add(listener)) {
+            if (listeners.put(listener, searchOptions) == null) {
                 for (MdnsResponse existingResponse : instanceNameToResponse.values()) {
                     final MdnsServiceInfo info =
                             buildMdnsServiceInfoFromResponse(existingResponse, serviceTypeLabels);
@@ -197,30 +211,38 @@
         return serviceTypeLabels;
     }
 
-    public synchronized void processResponse(@NonNull MdnsResponse response) {
-        if (shouldRemoveServiceAfterTtlExpires()) {
-            // Because {@link QueryTask} and {@link processResponse} are running in different
-            // threads. We need to synchronize {@link lock} to protect
-            // {@link instanceNameToResponse} won’t be modified at the same time.
-            synchronized (lock) {
+    /**
+     * Process an incoming response packet.
+     */
+    public synchronized void processResponse(@NonNull MdnsPacket packet, int interfaceIndex,
+            Network network) {
+        final List<MdnsResponse> responses = responseDecoder.buildResponses(packet, interfaceIndex,
+                network);
+        for (MdnsResponse response : responses) {
+            if (shouldRemoveServiceAfterTtlExpires()) {
+                // Because {@link QueryTask} and {@link processResponse} are running in different
+                // threads. We need to synchronize {@link lock} to protect
+                // {@link instanceNameToResponse} won’t be modified at the same time.
+                synchronized (lock) {
+                    if (response.isGoodbye()) {
+                        onGoodbyeReceived(response.getServiceInstanceName());
+                    } else {
+                        onResponseReceived(response);
+                    }
+                }
+            } else {
                 if (response.isGoodbye()) {
                     onGoodbyeReceived(response.getServiceInstanceName());
                 } else {
                     onResponseReceived(response);
                 }
             }
-        } else {
-            if (response.isGoodbye()) {
-                onGoodbyeReceived(response.getServiceInstanceName());
-            } else {
-                onResponseReceived(response);
-            }
         }
     }
 
     public synchronized void onFailedToParseMdnsResponse(int receivedPacketNumber, int errorCode) {
-        for (MdnsServiceBrowserListener listener : listeners) {
-            listener.onFailedToParseMdnsResponse(receivedPacketNumber, errorCode);
+        for (int i = 0; i < listeners.size(); i++) {
+            listeners.keyAt(i).onFailedToParseMdnsResponse(receivedPacketNumber, errorCode);
         }
     }
 
@@ -250,7 +272,8 @@
         MdnsServiceInfo serviceInfo =
                 buildMdnsServiceInfoFromResponse(currentResponse, serviceTypeLabels);
 
-        for (MdnsServiceBrowserListener listener : listeners) {
+        for (int i = 0; i < listeners.size(); i++) {
+            final MdnsServiceBrowserListener listener = listeners.keyAt(i);
             if (newServiceFound) {
                 listener.onServiceNameDiscovered(serviceInfo);
             }
@@ -270,7 +293,8 @@
         if (response == null) {
             return;
         }
-        for (MdnsServiceBrowserListener listener : listeners) {
+        for (int i = 0; i < listeners.size(); i++) {
+            final MdnsServiceBrowserListener listener = listeners.keyAt(i);
             final MdnsServiceInfo serviceInfo =
                     buildMdnsServiceInfoFromResponse(response, serviceTypeLabels);
             if (response.isComplete()) {
@@ -400,6 +424,36 @@
 
         @Override
         public void run() {
+            final List<MdnsResponse> servicesToResolve = new ArrayList<>();
+            boolean sendDiscoveryQueries = false;
+            synchronized (lock) {
+                for (int i = 0; i < listeners.size(); i++) {
+                    final String resolveName = listeners.valueAt(i).getResolveInstanceName();
+                    if (resolveName == null) {
+                        sendDiscoveryQueries = true;
+                        continue;
+                    }
+                    MdnsResponse knownResponse = instanceNameToResponse.get(resolveName);
+                    if (knownResponse == null) {
+                        // The listener is requesting to resolve a service that has no info in
+                        // cache. Use the provided name to generate a minimal response with just a
+                        // PTR record, so other records are queried to complete it.
+                        // Only the names are used to know which queries to send, other
+                        // parameters do not matter.
+                        knownResponse = new MdnsResponse(
+                                0L /* now */, 0 /* interfaceIndex */, config.network);
+                        final ArrayList<String> instanceFullName = new ArrayList<>(
+                                serviceTypeLabels.length + 1);
+                        instanceFullName.add(resolveName);
+                        instanceFullName.addAll(Arrays.asList(serviceTypeLabels));
+                        knownResponse.addPointerRecord(new MdnsPointerRecord(
+                                serviceTypeLabels, 0L /* receiptTimeMillis */,
+                                false /* cacheFlush */, 0L /* ttlMillis */,
+                                instanceFullName.toArray(new String[0])));
+                    }
+                    servicesToResolve.add(knownResponse);
+                }
+            }
             Pair<Integer, List<String>> result;
             try {
                 result =
@@ -410,7 +464,9 @@
                                 config.subtypes,
                                 config.expectUnicastResponse,
                                 config.transactionId,
-                                config.network)
+                                config.network,
+                                sendDiscoveryQueries,
+                                servicesToResolve)
                                 .call();
             } catch (RuntimeException e) {
                 LOGGER.e(String.format("Failed to run EnqueueMdnsQueryCallable for subtype: %s",
@@ -435,8 +491,8 @@
                     }
                 }
                 if ((result != null)) {
-                    for (MdnsServiceBrowserListener listener : listeners) {
-                        listener.onDiscoveryQuerySent(result.second, result.first);
+                    for (int i = 0; i < listeners.size(); i++) {
+                        listeners.keyAt(i).onDiscoveryQuerySent(result.second, result.first);
                     }
                 }
                 if (shouldRemoveServiceAfterTtlExpires()) {
@@ -446,10 +502,11 @@
                         if (existingResponse.hasServiceRecord()
                                 && existingResponse
                                 .getServiceRecord()
-                                .getRemainingTTL(SystemClock.elapsedRealtime())
+                                .getRemainingTTL(clock.elapsedRealtime())
                                 == 0) {
                             iter.remove();
-                            for (MdnsServiceBrowserListener listener : listeners) {
+                            for (int i = 0; i < listeners.size(); i++) {
+                                final MdnsServiceBrowserListener listener = listeners.keyAt(i);
                                 String serviceInstanceName =
                                         existingResponse.getServiceInstanceName();
                                 if (serviceInstanceName != null) {
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketClient.java b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketClient.java
index 907687e..c03e6aa 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketClient.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketClient.java
@@ -16,8 +16,6 @@
 
 package com.android.server.connectivity.mdns;
 
-import static com.android.server.connectivity.mdns.MdnsSocketClientBase.Callback;
-
 import android.Manifest.permission;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -35,7 +33,6 @@
 import java.net.DatagramPacket;
 import java.util.ArrayDeque;
 import java.util.ArrayList;
-import java.util.LinkedList;
 import java.util.List;
 import java.util.Queue;
 import java.util.Timer;
@@ -73,7 +70,6 @@
     private final Context context;
     private final byte[] multicastReceiverBuffer = new byte[RECEIVER_BUFFER_SIZE];
     @Nullable private final byte[] unicastReceiverBuffer;
-    private final MdnsResponseDecoder responseDecoder;
     private final MulticastLock multicastLock;
     private final boolean useSeparateSocketForUnicast =
             MdnsConfigs.useSeparateSocketToSendUnicastQuery();
@@ -110,7 +106,6 @@
     public MdnsSocketClient(@NonNull Context context, @NonNull MulticastLock multicastLock) {
         this.context = context;
         this.multicastLock = multicastLock;
-        responseDecoder = new MdnsResponseDecoder(new MdnsResponseDecoder.Clock(), null);
         if (useSeparateSocketForUnicast) {
             unicastReceiverBuffer = new byte[RECEIVER_BUFFER_SIZE];
         } else {
@@ -421,37 +416,27 @@
             int interfaceIndex, @Nullable Network network) {
         int packetNumber = ++receivedPacketNumber;
 
-        List<MdnsResponse> responses = new LinkedList<>();
-        int errorCode = responseDecoder.decode(packet, responses, interfaceIndex, network);
-        if (errorCode == MdnsResponseDecoder.SUCCESS) {
-            if (responseType.equals(MULTICAST_TYPE)) {
-                receivedMulticastResponse = true;
-                if (cannotReceiveMulticastResponse.getAndSet(false)) {
-                    // If we are already in the bad state, receiving a multicast response means
-                    // we are recovered.
-                    LOGGER.e(
-                            "Recovered from the state where the phone can't receive any multicast"
-                                    + " response");
-                }
-            } else {
-                receivedUnicastResponse = true;
-            }
-            for (MdnsResponse response : responses) {
-                String serviceInstanceName = response.getServiceInstanceName();
-                LOGGER.log("mDNS %s response received: %s at ifIndex %d", responseType,
-                        serviceInstanceName, interfaceIndex);
-                if (callback != null) {
-                    callback.onResponseReceived(response);
-                }
-            }
-        } else if (errorCode != MdnsResponseErrorCode.ERROR_NOT_RESPONSE_MESSAGE) {
+        final MdnsPacket response;
+        try {
+            response = MdnsResponseDecoder.parseResponse(packet.getData(), packet.getLength());
+        } catch (MdnsPacket.ParseException e) {
             LOGGER.w(String.format("Error while decoding %s packet (%d): %d",
-                    responseType, packetNumber, errorCode));
+                    responseType, packetNumber, e.code));
             if (callback != null) {
-                callback.onFailedToParseMdnsResponse(packetNumber, errorCode);
+                callback.onFailedToParseMdnsResponse(packetNumber, e.code);
             }
+            return e.code;
         }
-        return errorCode;
+
+        if (response == null) {
+            return MdnsResponseErrorCode.ERROR_NOT_RESPONSE_MESSAGE;
+        }
+
+        if (callback != null) {
+            callback.onResponseReceived(response, interfaceIndex, network);
+        }
+
+        return MdnsResponseErrorCode.SUCCESS;
     }
 
     @VisibleForTesting
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketClientBase.java b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketClientBase.java
index 23504a0..796dc83 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketClientBase.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketClientBase.java
@@ -72,7 +72,8 @@
     /*** Callback for mdns response  */
     interface Callback {
         /*** Receive a mdns response */
-        void onResponseReceived(@NonNull MdnsResponse response);
+        void onResponseReceived(@NonNull MdnsPacket packet, int interfaceIndex,
+                @Nullable Network network);
 
         /*** Parse a mdns response failed */
         void onFailedToParseMdnsResponse(int receivedPacketNumber, int errorCode);
diff --git a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java
index 9298852..743f946 100644
--- a/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java
+++ b/service-t/src/com/android/server/connectivity/mdns/MdnsSocketProvider.java
@@ -82,6 +82,7 @@
     private final List<String> mTetheredInterfaces = new ArrayList<>();
     private final byte[] mPacketReadBuffer = new byte[READ_BUFFER_SIZE];
     private boolean mMonitoringSockets = false;
+    private boolean mRequestStop = false;
 
     public MdnsSocketProvider(@NonNull Context context, @NonNull Looper looper) {
         this(context, looper, new Dependencies());
@@ -179,6 +180,7 @@
     /*** Start monitoring sockets by listening callbacks for sockets creation or removal */
     public void startMonitoringSockets() {
         ensureRunningOnHandlerThread(mHandler);
+        mRequestStop = false; // Reset stop request flag.
         if (mMonitoringSockets) {
             Log.d(TAG, "Already monitoring sockets.");
             return;
@@ -195,22 +197,34 @@
         mMonitoringSockets = true;
     }
 
-    /*** Stop monitoring sockets and unregister callbacks */
-    public void stopMonitoringSockets() {
+    private void maybeStopMonitoringSockets() {
+        if (!mMonitoringSockets) return; // Already unregistered.
+        if (!mRequestStop) return; // No stop request.
+
+        // Only unregister the network callback if there is no socket request.
+        if (mCallbacksToRequestedNetworks.isEmpty()) {
+            mContext.getSystemService(ConnectivityManager.class)
+                    .unregisterNetworkCallback(mNetworkCallback);
+
+            final TetheringManager tetheringManager = mContext.getSystemService(
+                    TetheringManager.class);
+            tetheringManager.unregisterTetheringEventCallback(mTetheringEventCallback);
+
+            mHandler.post(mNetlinkMonitor::stop);
+            mMonitoringSockets = false;
+        }
+    }
+
+    /*** Request to stop monitoring sockets and unregister callbacks */
+    public void requestStopWhenInactive() {
         ensureRunningOnHandlerThread(mHandler);
         if (!mMonitoringSockets) {
             Log.d(TAG, "Monitoring sockets hasn't been started.");
             return;
         }
-        if (DBG) Log.d(TAG, "Stop monitoring sockets.");
-        mContext.getSystemService(ConnectivityManager.class)
-                .unregisterNetworkCallback(mNetworkCallback);
-
-        final TetheringManager tetheringManager = mContext.getSystemService(TetheringManager.class);
-        tetheringManager.unregisterTetheringEventCallback(mTetheringEventCallback);
-
-        mHandler.post(mNetlinkMonitor::stop);
-        mMonitoringSockets = false;
+        if (DBG) Log.d(TAG, "Try to stop monitoring sockets.");
+        mRequestStop = true;
+        maybeStopMonitoringSockets();
     }
 
     /*** Check whether the target network is matched current network */
@@ -450,6 +464,9 @@
             cb.onInterfaceDestroyed(new Network(INetd.LOCAL_NET_ID), info.mSocket);
         }
         mTetherInterfaceSockets.clear();
+
+        // Try to unregister network callback.
+        maybeStopMonitoringSockets();
     }
 
     /*** Callbacks for listening socket changes */
diff --git a/service/src/com/android/metrics/stats.proto b/service/src/com/android/metrics/stats.proto
index 48b8316..8104632 100644
--- a/service/src/com/android/metrics/stats.proto
+++ b/service/src/com/android/metrics/stats.proto
@@ -284,3 +284,66 @@
     // The latency of selection issued in milli-second
     optional int32 selection_issued_latency_milli = 5;
 }
+
+message NetworkSliceRequestCountSample {
+    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
+    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int64 slice_id = 1;
+
+    // Bitfield representing the network's enterprise capability identifier
+    // (e.g. NET_ENTERPRISE_ID_1), defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int32 enterprise_id = 2;
+
+    // number of request for this slice
+    optional int32 request_count = 3;
+
+    // number of apps with outstanding request(s) for this slice
+    optional int32 distinct_app_count = 4;
+}
+
+message NetworkSliceSessionEnded {
+    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
+    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int64 slice_id = 1;
+
+    // Bitfield representing the network's enterprise capability identifier
+    // (e.g. NET_ENTERPRISE_ID_1), defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int32 enterprise_id = 2;
+
+    // Number of bytes received at the device on this slice id
+    optional int64 rx_bytes = 3;
+
+    // Number of bytes transmitted by the device on this slice id
+    optional int64 tx_bytes = 4;
+
+    // Number of apps that have used this slice
+    optional int32 number_of_apps = 5;
+
+    // How long(in seconds) this slice has been connected
+    optional int32 slice_connection_duration_sec = 6;
+}
+
+message NetworkSliceDailyDataUsageReported {
+    // Bitfield representing the network's capability(e.g. NET_CAPABILITY_PRIORITIZE_LATENCY),
+    // defined in packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int64 slice_id = 1;
+
+    // Bitfield representing the network's enterprise capability identifier
+    // (e.g. NET_ENTERPRISE_ID_1), defined in
+    // packages/modules/Connectivity/framework/src/android/net/NetworkCapabilities.java
+    optional int32 enterprise_id = 2;
+
+    // Number of bytes received at the device on this slice id
+    optional int64 rx_bytes = 3;
+
+    // Number of bytes transmitted by the device on this slice id
+    optional int64 tx_bytes = 4;
+
+    // Number of apps that have used this slice
+    optional int32 number_of_apps = 5;
+
+    // How long(in seconds) this slice has been connected
+    optional int32 slice_connection_duration_sec = 6;
+}
diff --git a/service/src/com/android/server/ConnectivityService.java b/service/src/com/android/server/ConnectivityService.java
index 3a6e0f2..58310bb 100755
--- a/service/src/com/android/server/ConnectivityService.java
+++ b/service/src/com/android/server/ConnectivityService.java
@@ -5052,9 +5052,6 @@
     @Override
     public void setTestLowTcpPollingTimerForKeepalive(long timeMs) {
         enforceSettingsPermission();
-        if (!Build.isDebuggable()) {
-            throw new IllegalStateException("Is not supported in non-debuggable build");
-        }
 
         if (timeMs > System.currentTimeMillis() + MAX_TEST_LOW_TCP_POLLING_UNTIL_MS) {
             throw new IllegalArgumentException("Argument should not exceed "
diff --git a/tests/cts/net/src/android/net/cts/IpSecManagerTest.java b/tests/cts/net/src/android/net/cts/IpSecManagerTest.java
index 4fa0080..9c30811 100644
--- a/tests/cts/net/src/android/net/cts/IpSecManagerTest.java
+++ b/tests/cts/net/src/android/net/cts/IpSecManagerTest.java
@@ -395,7 +395,7 @@
     private static class StatsChecker {
         private static final double ERROR_MARGIN_BYTES = 1.05;
         private static final double ERROR_MARGIN_PKTS = 1.05;
-        private static final int MAX_WAIT_TIME_MILLIS = 1000;
+        private static final int MAX_WAIT_TIME_MILLIS = 3000;
 
         private static long uidTxBytes;
         private static long uidRxBytes;
diff --git a/tests/unit/java/com/android/server/NsdServiceTest.java b/tests/unit/java/com/android/server/NsdServiceTest.java
index 0680772..8fc9252 100644
--- a/tests/unit/java/com/android/server/NsdServiceTest.java
+++ b/tests/unit/java/com/android/server/NsdServiceTest.java
@@ -932,7 +932,7 @@
         waitForIdle();
         verify(mDiscoveryManager).unregisterListener(eq(serviceTypeWithLocalDomain), any());
         verify(discListener, timeout(TIMEOUT_MS)).onDiscoveryStopped(SERVICE_TYPE);
-        verify(mSocketProvider, timeout(CLEANUP_DELAY_MS + TIMEOUT_MS)).stopMonitoringSockets();
+        verify(mSocketProvider, timeout(CLEANUP_DELAY_MS + TIMEOUT_MS)).requestStopWhenInactive();
     }
 
     @Test
@@ -1016,7 +1016,7 @@
         // Verify the listener has been unregistered.
         verify(mDiscoveryManager, timeout(TIMEOUT_MS))
                 .unregisterListener(eq(constructedServiceType), any());
-        verify(mSocketProvider, timeout(CLEANUP_DELAY_MS + TIMEOUT_MS)).stopMonitoringSockets();
+        verify(mSocketProvider, timeout(CLEANUP_DELAY_MS + TIMEOUT_MS)).requestStopWhenInactive();
     }
 
     @Test
@@ -1090,7 +1090,7 @@
         verify(mAdvertiser).removeService(idCaptor.getValue());
         verify(regListener, timeout(TIMEOUT_MS)).onServiceUnregistered(
                 argThat(info -> matches(info, regInfo)));
-        verify(mSocketProvider, timeout(TIMEOUT_MS)).stopMonitoringSockets();
+        verify(mSocketProvider, timeout(TIMEOUT_MS)).requestStopWhenInactive();
     }
 
     @Test
diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsDiscoveryManagerTests.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsDiscoveryManagerTests.java
index 83e7696..e6b8326 100644
--- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsDiscoveryManagerTests.java
+++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsDiscoveryManagerTests.java
@@ -23,6 +23,7 @@
 import static org.mockito.Mockito.when;
 
 import android.annotation.NonNull;
+import android.net.Network;
 import android.text.TextUtils;
 
 import com.android.testutils.DevSdkIgnoreRule;
@@ -35,7 +36,10 @@
 import org.mockito.MockitoAnnotations;
 
 import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
+import java.util.List;
 
 /** Tests for {@link MdnsDiscoveryManager}. */
 @RunWith(DevSdkIgnoreRunner.class)
@@ -111,25 +115,38 @@
         discoveryManager.registerListener(
                 SERVICE_TYPE_2, mockListenerTwo, MdnsSearchOptions.getDefaultOptions());
 
-        MdnsResponse responseForServiceTypeOne = createMockResponse(SERVICE_TYPE_1);
-        discoveryManager.onResponseReceived(responseForServiceTypeOne);
-        verify(mockServiceTypeClientOne).processResponse(responseForServiceTypeOne);
+        MdnsPacket responseForServiceTypeOne = createMdnsPacket(SERVICE_TYPE_1);
+        final int ifIndex = 1;
+        final Network network = mock(Network.class);
+        discoveryManager.onResponseReceived(responseForServiceTypeOne, ifIndex, network);
+        verify(mockServiceTypeClientOne).processResponse(responseForServiceTypeOne, ifIndex,
+                network);
 
-        MdnsResponse responseForServiceTypeTwo = createMockResponse(SERVICE_TYPE_2);
-        discoveryManager.onResponseReceived(responseForServiceTypeTwo);
-        verify(mockServiceTypeClientTwo).processResponse(responseForServiceTypeTwo);
+        MdnsPacket responseForServiceTypeTwo = createMdnsPacket(SERVICE_TYPE_2);
+        discoveryManager.onResponseReceived(responseForServiceTypeTwo, ifIndex, network);
+        verify(mockServiceTypeClientTwo).processResponse(responseForServiceTypeTwo, ifIndex,
+                network);
 
-        MdnsResponse responseForSubtype = createMockResponse("subtype._sub._googlecast._tcp.local");
-        discoveryManager.onResponseReceived(responseForSubtype);
-        verify(mockServiceTypeClientOne).processResponse(responseForSubtype);
+        MdnsPacket responseForSubtype = createMdnsPacket("subtype._sub._googlecast._tcp.local");
+        discoveryManager.onResponseReceived(responseForSubtype, ifIndex, network);
+        verify(mockServiceTypeClientOne).processResponse(responseForSubtype, ifIndex, network);
     }
 
-    private MdnsResponse createMockResponse(String serviceType) {
-        MdnsPointerRecord mockPointerRecord = mock(MdnsPointerRecord.class);
-        MdnsResponse mockResponse = mock(MdnsResponse.class);
-        when(mockResponse.getPointerRecords())
-                .thenReturn(Collections.singletonList(mockPointerRecord));
-        when(mockPointerRecord.getName()).thenReturn(TextUtils.split(serviceType, "\\."));
-        return mockResponse;
+    private MdnsPacket createMdnsPacket(String serviceType) {
+        final String[] type = TextUtils.split(serviceType, "\\.");
+        final ArrayList<String> name = new ArrayList<>(type.length + 1);
+        name.add("TestName");
+        name.addAll(Arrays.asList(type));
+        return new MdnsPacket(0 /* flags */,
+                Collections.emptyList() /* questions */,
+                List.of(new MdnsPointerRecord(
+                        type,
+                        0L /* receiptTimeMillis */,
+                        false /* cacheFlush */,
+                        120000 /* ttlMillis */,
+                        name.toArray(new String[0])
+                        )) /* answers */,
+                Collections.emptyList() /* authorityRecords */,
+                Collections.emptyList() /* additionalRecords */);
     }
 }
\ No newline at end of file
diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClientTest.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClientTest.java
index 9d42a65..1e322e4 100644
--- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClientTest.java
+++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsMultinetworkSocketClientTest.java
@@ -19,9 +19,9 @@
 import static com.android.server.connectivity.mdns.MdnsSocketProvider.SocketCallback;
 import static com.android.server.connectivity.mdns.MulticastPacketReader.PacketHandler;
 
-import static org.junit.Assert.assertArrayEquals;
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.timeout;
@@ -146,16 +146,23 @@
         // Send the data and verify the received records.
         final PacketHandler handler = handlerCaptor.getValue();
         handler.handlePacket(data, data.length, null /* src */);
-        final ArgumentCaptor<MdnsResponse> responseCaptor =
-                ArgumentCaptor.forClass(MdnsResponse.class);
-        verify(mCallback).onResponseReceived(responseCaptor.capture());
-        final MdnsResponse response = responseCaptor.getValue();
-        assertTrue(response.hasPointerRecords());
-        assertArrayEquals("_testtype._tcp.local".split("\\."),
-                response.getPointerRecords().get(0).getName());
-        assertTrue(response.hasServiceRecord());
-        assertEquals("testservice", response.getServiceRecord().getServiceInstanceName());
-        assertEquals("Android.local".split("\\."),
-                response.getServiceRecord().getServiceHost());
+        final ArgumentCaptor<MdnsPacket> responseCaptor =
+                ArgumentCaptor.forClass(MdnsPacket.class);
+        verify(mCallback).onResponseReceived(responseCaptor.capture(), anyInt(), any());
+        final MdnsPacket response = responseCaptor.getValue();
+        assertEquals(0, response.questions.size());
+        assertEquals(0, response.additionalRecords.size());
+        assertEquals(0, response.authorityRecords.size());
+
+        final String[] serviceName = "testservice._testtype._tcp.local".split("\\.");
+        assertEquals(List.of(
+                new MdnsPointerRecord("_testtype._tcp.local".split("\\."),
+                        0L /* receiptTimeMillis */, false /* cacheFlush */, 4500000 /* ttlMillis */,
+                        serviceName),
+                new MdnsServiceRecord(serviceName, 0L /* receiptTimeMillis */,
+                        false /* cacheFlush */, 4500000 /* ttlMillis */, 0 /* servicePriority */,
+                        0 /* serviceWeight */, 31234 /* servicePort */,
+                        new String[] { "Android", "local" } /* serviceHost */)
+        ), response.answers);
     }
 }
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 4cae447..aaef048 100644
--- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java
+++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsResponseDecoderTests.java
@@ -43,7 +43,6 @@
 import java.net.Inet4Address;
 import java.net.Inet6Address;
 import java.net.InetSocketAddress;
-import java.util.LinkedList;
 import java.util.List;
 
 @RunWith(DevSdkIgnoreRunner.class)
@@ -154,35 +153,22 @@
     private static final String[] MATTER_SERVICE_TYPE =
             new String[] {MATTER_SERVICE_NAME, "_tcp", "local"};
 
-    private final List<MdnsResponse> responses = new LinkedList<>();
+    private List<MdnsResponse> responses;
 
     private final Clock mClock = mock(Clock.class);
 
     @Before
-    public void setUp() {
+    public void setUp() throws Exception {
         MdnsResponseDecoder decoder = new MdnsResponseDecoder(mClock, CAST_SERVICE_TYPE);
         assertNotNull(data);
-        DatagramPacket packet = new DatagramPacket(data, data.length);
-        packet.setSocketAddress(
-                new InetSocketAddress(MdnsConstants.getMdnsIPv4Address(), MdnsConstants.MDNS_PORT));
-        responses.clear();
-        int errorCode = decoder.decode(
-                packet, responses, MdnsSocket.INTERFACE_INDEX_UNSPECIFIED, mock(Network.class));
-        assertEquals(MdnsResponseDecoder.SUCCESS, errorCode);
+        responses = decode(decoder, data);
         assertEquals(1, responses.size());
     }
 
     @Test
-    public void testDecodeWithNullServiceType() {
+    public void testDecodeWithNullServiceType() throws Exception {
         MdnsResponseDecoder decoder = new MdnsResponseDecoder(mClock, null);
-        assertNotNull(data);
-        DatagramPacket packet = new DatagramPacket(data, data.length);
-        packet.setSocketAddress(
-                new InetSocketAddress(MdnsConstants.getMdnsIPv4Address(), MdnsConstants.MDNS_PORT));
-        responses.clear();
-        int errorCode = decoder.decode(
-                packet, responses, MdnsSocket.INTERFACE_INDEX_UNSPECIFIED, mock(Network.class));
-        assertEquals(MdnsResponseDecoder.SUCCESS, errorCode);
+        responses = decode(decoder, data);
         assertEquals(2, responses.size());
     }
 
@@ -235,15 +221,9 @@
     public void testDecodeIPv6AnswerPacket() throws IOException {
         MdnsResponseDecoder decoder = new MdnsResponseDecoder(mClock, CAST_SERVICE_TYPE);
         assertNotNull(data6);
-        DatagramPacket packet = new DatagramPacket(data6, data6.length);
-        packet.setSocketAddress(
-                new InetSocketAddress(MdnsConstants.getMdnsIPv6Address(), MdnsConstants.MDNS_PORT));
 
-        responses.clear();
-        int errorCode = decoder.decode(
-                packet, responses, MdnsSocket.INTERFACE_INDEX_UNSPECIFIED, mock(Network.class));
-        assertEquals(MdnsResponseDecoder.SUCCESS, errorCode);
-
+        responses = decode(decoder, data6);
+        assertEquals(1, responses.size());
         MdnsResponse response = responses.get(0);
         assertTrue(response.isComplete());
 
@@ -283,39 +263,33 @@
     }
 
     @Test
-    public void decode_withInterfaceIndex_populatesInterfaceIndex() {
+    public void decode_withInterfaceIndex_populatesInterfaceIndex() throws Exception {
         MdnsResponseDecoder decoder = new MdnsResponseDecoder(mClock, CAST_SERVICE_TYPE);
         assertNotNull(data6);
         DatagramPacket packet = new DatagramPacket(data6, data6.length);
         packet.setSocketAddress(
                 new InetSocketAddress(MdnsConstants.getMdnsIPv6Address(), MdnsConstants.MDNS_PORT));
 
-        responses.clear();
+        final MdnsPacket parsedPacket = MdnsResponseDecoder.parseResponse(data6, data6.length);
+        assertNotNull(parsedPacket);
+
         final Network network = mock(Network.class);
-        int errorCode = decoder.decode(
-                packet, responses, /* interfaceIndex= */ 10, network);
-        assertEquals(errorCode, MdnsResponseDecoder.SUCCESS);
+        responses = decoder.buildResponses(parsedPacket,
+                /* interfaceIndex= */ 10, network /* expireOnExit= */);
+
         assertEquals(responses.size(), 1);
         assertEquals(responses.get(0).getInterfaceIndex(), 10);
         assertEquals(network, responses.get(0).getNetwork());
     }
 
     @Test
-    public void decode_singleHostname_multipleSrvRecords_flagEnabled_multipleCompleteResponses() {
+    public void decode_singleHostname_multipleSrvRecords_flagEnabled_multipleCompleteResponses()
+            throws Exception {
         //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, mock(Network.class));
-        assertEquals(MdnsResponseDecoder.SUCCESS, errorCode);
+        responses = decode(decoder, matterDuplicateHostname);
 
         // This should emit two records:
         assertEquals(2, responses.size());
@@ -336,21 +310,13 @@
 
     @Test
     @Ignore("MdnsConfigs is not configurable currently.")
-    public void decode_singleHostname_multipleSrvRecords_flagDisabled_singleCompleteResponse() {
+    public void decode_singleHostname_multipleSrvRecords_flagDisabled_singleCompleteResponse()
+            throws Exception {
         //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, mock(Network.class));
-        assertEquals(MdnsResponseDecoder.SUCCESS, errorCode);
+        responses = decode(decoder, matterDuplicateHostname);
 
         // This should emit only two records:
         assertEquals(2, responses.size());
@@ -359,4 +325,14 @@
         assertTrue(responses.get(0).isComplete());
         assertFalse(responses.get(1).isComplete());
     }
+
+
+    private List<MdnsResponse> decode(MdnsResponseDecoder decoder, byte[] data)
+            throws MdnsPacket.ParseException {
+        final MdnsPacket parsedPacket = MdnsResponseDecoder.parseResponse(data, data.length);
+        assertNotNull(parsedPacket);
+
+        return decoder.buildResponses(parsedPacket,
+                MdnsSocket.INTERFACE_INDEX_UNSPECIFIED, mock(Network.class));
+    }
 }
\ No newline at end of file
diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsServiceTypeClientTests.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsServiceTypeClientTests.java
index a45ca68..d266b3d 100644
--- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsServiceTypeClientTests.java
+++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsServiceTypeClientTests.java
@@ -24,13 +24,10 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -60,8 +57,7 @@
 
 import java.io.IOException;
 import java.net.DatagramPacket;
-import java.net.Inet4Address;
-import java.net.Inet6Address;
+import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -85,6 +81,9 @@
     private static final InetSocketAddress IPV6_ADDRESS = new InetSocketAddress(
             MdnsConstants.getMdnsIPv6Address(), MdnsConstants.MDNS_PORT);
 
+    private static final long TEST_TTL = 120000L;
+    private static final long TEST_ELAPSED_REALTIME = 123L;
+
     @Mock
     private MdnsServiceBrowserListener mockListenerOne;
     @Mock
@@ -95,6 +94,8 @@
     private MdnsMultinetworkSocketClient mockSocketClient;
     @Mock
     private Network mockNetwork;
+    @Mock
+    private MdnsResponseDecoder.Clock mockDecoderClock;
     @Captor
     private ArgumentCaptor<MdnsServiceInfo> serviceInfoCaptor;
 
@@ -111,6 +112,7 @@
     @SuppressWarnings("DoNotMock")
     public void setUp() throws IOException {
         MockitoAnnotations.initMocks(this);
+        doReturn(TEST_ELAPSED_REALTIME).when(mockDecoderClock).elapsedRealtime();
 
         expectedIPv4Packets = new DatagramPacket[16];
         expectedIPv6Packets = new DatagramPacket[16];
@@ -160,7 +162,8 @@
                 .thenReturn(expectedIPv6Packets[15]);
 
         client =
-                new MdnsServiceTypeClient(SERVICE_TYPE, mockSocketClient, currentThreadExecutor) {
+                new MdnsServiceTypeClient(SERVICE_TYPE, mockSocketClient, currentThreadExecutor,
+                        mockDecoderClock) {
                     @Override
                     MdnsPacketWriter createMdnsPacketWriter() {
                         return mockPacketWriter;
@@ -424,6 +427,7 @@
         assertEquals(port, serviceInfo.getPort());
         assertEquals(subTypes, serviceInfo.getSubtypes());
         for (String key : attributes.keySet()) {
+            assertTrue(attributes.containsKey(key));
             assertEquals(attributes.get(key), serviceInfo.getAttributeByKey(key));
         }
         assertEquals(interfaceIndex, serviceInfo.getInterfaceIndex());
@@ -434,22 +438,19 @@
     public void processResponse_incompleteResponse() {
         client.startSendAndReceive(mockListenerOne, MdnsSearchOptions.getDefaultOptions());
 
-        MdnsResponse response = mock(MdnsResponse.class);
-        when(response.getServiceInstanceName()).thenReturn("service-instance-1");
-        doReturn(INTERFACE_INDEX).when(response).getInterfaceIndex();
-        doReturn(mockNetwork).when(response).getNetwork();
-        when(response.isComplete()).thenReturn(false);
-
-        client.processResponse(response);
+        client.processResponse(createResponse(
+                "service-instance-1", null /* host */, 0 /* port */,
+                SERVICE_TYPE_LABELS,
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
         verify(mockListenerOne).onServiceNameDiscovered(serviceInfoCaptor.capture());
         verifyServiceInfo(serviceInfoCaptor.getAllValues().get(0),
                 "service-instance-1",
                 SERVICE_TYPE_LABELS,
-                null /* ipv4Address */,
-                null /* ipv6Address */,
-                0 /* port */,
-                List.of() /* subTypes */,
-                Collections.singletonMap("key", null) /* attributes */,
+                /* ipv4Address= */ null,
+                /* ipv6Address= */ null,
+                /* port= */ 0,
+                /* subTypes= */ List.of(),
+                Collections.emptyMap(),
                 INTERFACE_INDEX,
                 mockNetwork);
 
@@ -463,28 +464,17 @@
         client.startSendAndReceive(mockListenerOne, MdnsSearchOptions.getDefaultOptions());
 
         // Process the initial response.
-        MdnsResponse initialResponse =
-                createResponse(
-                        "service-instance-1",
-                        ipV4Address,
-                        5353,
-                        /* subtype= */ "ABCDE",
-                        Collections.emptyMap(),
-                        /* interfaceIndex= */ 20,
-                        mockNetwork);
-        client.processResponse(initialResponse);
+        client.processResponse(createResponse(
+                "service-instance-1", ipV4Address, 5353,
+                /* subtype= */ "ABCDE",
+                Collections.emptyMap(), TEST_TTL), /* interfaceIndex= */ 20, mockNetwork);
 
         // Process a second response with a different port and updated text attributes.
-        MdnsResponse secondResponse =
-                createResponse(
-                        "service-instance-1",
-                        ipV4Address,
-                        5354,
-                        /* subtype= */ "ABCDE",
-                        Collections.singletonMap("key", "value"),
-                        /* interfaceIndex= */ 20,
-                        mockNetwork);
-        client.processResponse(secondResponse);
+        client.processResponse(createResponse(
+                "service-instance-1", ipV4Address, 5354,
+                /* subtype= */ "ABCDE",
+                Collections.singletonMap("key", "value"), TEST_TTL),
+                /* interfaceIndex= */ 20, mockNetwork);
 
         // Verify onServiceNameDiscovered was called once for the initial response.
         verify(mockListenerOne).onServiceNameDiscovered(serviceInfoCaptor.capture());
@@ -529,31 +519,17 @@
         client.startSendAndReceive(mockListenerOne, MdnsSearchOptions.getDefaultOptions());
 
         // Process the initial response.
-        MdnsResponse initialResponse =
-                createResponse(
-                        "service-instance-1",
-                        ipV6Address,
-                        5353,
-                        /* subtype= */ "ABCDE",
-                        Collections.emptyMap(),
-                        /* interfaceIndex= */ 20,
-                        mockNetwork);
-        client.processResponse(initialResponse);
+        client.processResponse(createResponse(
+                "service-instance-1", ipV6Address, 5353,
+                /* subtype= */ "ABCDE",
+                Collections.emptyMap(), TEST_TTL), /* interfaceIndex= */ 20, mockNetwork);
 
         // Process a second response with a different port and updated text attributes.
-        MdnsResponse secondResponse =
-                createResponse(
-                        "service-instance-1",
-                        ipV6Address,
-                        5354,
-                        /* subtype= */ "ABCDE",
-                        Collections.singletonMap("key", "value"),
-                        /* interfaceIndex= */ 20,
-                        mockNetwork);
-        client.processResponse(secondResponse);
-
-        System.out.println("secondResponses ip"
-                + secondResponse.getInet6AddressRecord().getInet6Address().getHostAddress());
+        client.processResponse(createResponse(
+                "service-instance-1", ipV6Address, 5354,
+                /* subtype= */ "ABCDE",
+                Collections.singletonMap("key", "value"), TEST_TTL),
+                /* interfaceIndex= */ 20, mockNetwork);
 
         // Verify onServiceNameDiscovered was called once for the initial response.
         verify(mockListenerOne).onServiceNameDiscovered(serviceInfoCaptor.capture());
@@ -619,29 +595,25 @@
         final String serviceName = "service-instance-1";
         final String ipV6Address = "2000:3333::da6c:63ff:fe7c:7483";
         // Process the initial response.
-        final MdnsResponse initialResponse =
-                createResponse(
-                        serviceName,
-                        ipV6Address,
-                        5353 /* port */,
-                        /* subtype= */ "ABCDE",
-                        Collections.emptyMap(),
-                        INTERFACE_INDEX,
-                        mockNetwork);
-        client.processResponse(initialResponse);
-        MdnsResponse response = mock(MdnsResponse.class);
-        doReturn("goodbye-service").when(response).getServiceInstanceName();
-        doReturn(INTERFACE_INDEX).when(response).getInterfaceIndex();
-        doReturn(mockNetwork).when(response).getNetwork();
-        doReturn(true).when(response).isGoodbye();
-        client.processResponse(response);
+        client.processResponse(createResponse(
+                serviceName, ipV6Address, 5353,
+                SERVICE_TYPE_LABELS,
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
+
+        client.processResponse(createResponse(
+                "goodbye-service", ipV6Address, 5353,
+                SERVICE_TYPE_LABELS,
+                Collections.emptyMap(), /* ptrTtlMillis= */ 0L), INTERFACE_INDEX, mockNetwork);
+
         // Verify removed callback won't be called if the service is not existed.
         verifyServiceRemovedNoCallback(mockListenerOne);
         verifyServiceRemovedNoCallback(mockListenerTwo);
 
         // Verify removed callback would be called.
-        doReturn(serviceName).when(response).getServiceInstanceName();
-        client.processResponse(response);
+        client.processResponse(createResponse(
+                serviceName, ipV6Address, 5353,
+                SERVICE_TYPE_LABELS,
+                Collections.emptyMap(), 0L), INTERFACE_INDEX, mockNetwork);
         verifyServiceRemovedCallback(
                 mockListenerOne, serviceName, SERVICE_TYPE_LABELS, INTERFACE_INDEX, mockNetwork);
         verifyServiceRemovedCallback(
@@ -651,16 +623,10 @@
     @Test
     public void reportExistingServiceToNewlyRegisteredListeners() throws Exception {
         // Process the initial response.
-        MdnsResponse initialResponse =
-                createResponse(
-                        "service-instance-1",
-                        "192.168.1.1",
-                        5353,
-                        /* subtype= */ "ABCDE",
-                        Collections.emptyMap(),
-                        INTERFACE_INDEX,
-                        mockNetwork);
-        client.processResponse(initialResponse);
+        client.processResponse(createResponse(
+                "service-instance-1", "192.168.1.1", 5353,
+                /* subtype= */ "ABCDE",
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
 
         client.startSendAndReceive(mockListenerOne, MdnsSearchOptions.getDefaultOptions());
 
@@ -687,10 +653,10 @@
         assertNull(existingServiceInfo.getAttributeByKey("key"));
 
         // Process a goodbye message for the existing response.
-        MdnsResponse goodByeResponse = mock(MdnsResponse.class);
-        when(goodByeResponse.getServiceInstanceName()).thenReturn("service-instance-1");
-        when(goodByeResponse.isGoodbye()).thenReturn(true);
-        client.processResponse(goodByeResponse);
+        client.processResponse(createResponse(
+                "service-instance-1", "192.168.1.1", 5353,
+                SERVICE_TYPE_LABELS,
+                Collections.emptyMap(), /* ptrTtlMillis= */ 0L), INTERFACE_INDEX, mockNetwork);
 
         client.startSendAndReceive(mockListenerTwo, MdnsSearchOptions.getDefaultOptions());
 
@@ -709,17 +675,15 @@
         Runnable firstMdnsTask = currentThreadExecutor.getAndClearSubmittedRunnable();
 
         // Process the initial response.
-        MdnsResponse initialResponse =
-                createMockResponse(
-                        serviceInstanceName, "192.168.1.1", 5353, List.of("ABCDE"),
-                        Map.of(), INTERFACE_INDEX, mockNetwork);
-        client.processResponse(initialResponse);
+        client.processResponse(createResponse(
+                serviceInstanceName, "192.168.1.1", 5353, /* subtype= */ "ABCDE",
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
 
         // Clear the scheduled runnable.
         currentThreadExecutor.getAndClearLastScheduledRunnable();
 
         // Simulate the case where the response is after TTL.
-        when(initialResponse.getServiceRecord().getRemainingTTL(anyLong())).thenReturn((long) 0);
+        doReturn(TEST_ELAPSED_REALTIME + TEST_TTL + 1L).when(mockDecoderClock).elapsedRealtime();
         firstMdnsTask.run();
 
         // Verify removed callback was not called.
@@ -733,7 +697,8 @@
         //MdnsConfigsFlagsImpl.allowSearchOptionsToRemoveExpiredService.override(true);
         final String serviceInstanceName = "service-instance-1";
         client =
-                new MdnsServiceTypeClient(SERVICE_TYPE, mockSocketClient, currentThreadExecutor) {
+                new MdnsServiceTypeClient(SERVICE_TYPE, mockSocketClient, currentThreadExecutor,
+                        mockDecoderClock) {
                     @Override
                     MdnsPacketWriter createMdnsPacketWriter() {
                         return mockPacketWriter;
@@ -743,24 +708,22 @@
         Runnable firstMdnsTask = currentThreadExecutor.getAndClearSubmittedRunnable();
 
         // Process the initial response.
-        MdnsResponse initialResponse =
-                createMockResponse(
-                        serviceInstanceName, "192.168.1.1", 5353, List.of("ABCDE"),
-                        Map.of(), INTERFACE_INDEX, mockNetwork);
-        client.processResponse(initialResponse);
+        client.processResponse(createResponse(
+                serviceInstanceName, "192.168.1.1", 5353, /* subtype= */ "ABCDE",
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
 
         // Clear the scheduled runnable.
         currentThreadExecutor.getAndClearLastScheduledRunnable();
 
         // Simulate the case where the response is under TTL.
-        when(initialResponse.getServiceRecord().getRemainingTTL(anyLong())).thenReturn((long) 1000);
+        doReturn(TEST_ELAPSED_REALTIME + TEST_TTL - 1L).when(mockDecoderClock).elapsedRealtime();
         firstMdnsTask.run();
 
         // Verify removed callback was not called.
         verifyServiceRemovedNoCallback(mockListenerOne);
 
         // Simulate the case where the response is after TTL.
-        when(initialResponse.getServiceRecord().getRemainingTTL(anyLong())).thenReturn((long) 0);
+        doReturn(TEST_ELAPSED_REALTIME + TEST_TTL + 1L).when(mockDecoderClock).elapsedRealtime();
         firstMdnsTask.run();
 
         // Verify removed callback was called.
@@ -773,7 +736,8 @@
             throws Exception {
         final String serviceInstanceName = "service-instance-1";
         client =
-                new MdnsServiceTypeClient(SERVICE_TYPE, mockSocketClient, currentThreadExecutor) {
+                new MdnsServiceTypeClient(SERVICE_TYPE, mockSocketClient, currentThreadExecutor,
+                        mockDecoderClock) {
                     @Override
                     MdnsPacketWriter createMdnsPacketWriter() {
                         return mockPacketWriter;
@@ -783,17 +747,15 @@
         Runnable firstMdnsTask = currentThreadExecutor.getAndClearSubmittedRunnable();
 
         // Process the initial response.
-        MdnsResponse initialResponse =
-                createMockResponse(
-                        serviceInstanceName, "192.168.1.1", 5353, List.of("ABCDE"),
-                        Map.of(), INTERFACE_INDEX, mockNetwork);
-        client.processResponse(initialResponse);
+        client.processResponse(createResponse(
+                serviceInstanceName, "192.168.1.1", 5353, /* subtype= */ "ABCDE",
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
 
         // Clear the scheduled runnable.
         currentThreadExecutor.getAndClearLastScheduledRunnable();
 
         // Simulate the case where the response is after TTL.
-        when(initialResponse.getServiceRecord().getRemainingTTL(anyLong())).thenReturn((long) 0);
+        doReturn(TEST_ELAPSED_REALTIME + TEST_TTL + 1L).when(mockDecoderClock).elapsedRealtime();
         firstMdnsTask.run();
 
         // Verify removed callback was not called.
@@ -807,7 +769,8 @@
         //MdnsConfigsFlagsImpl.removeServiceAfterTtlExpires.override(true);
         final String serviceInstanceName = "service-instance-1";
         client =
-                new MdnsServiceTypeClient(SERVICE_TYPE, mockSocketClient, currentThreadExecutor) {
+                new MdnsServiceTypeClient(SERVICE_TYPE, mockSocketClient, currentThreadExecutor,
+                        mockDecoderClock) {
                     @Override
                     MdnsPacketWriter createMdnsPacketWriter() {
                         return mockPacketWriter;
@@ -817,17 +780,15 @@
         Runnable firstMdnsTask = currentThreadExecutor.getAndClearSubmittedRunnable();
 
         // Process the initial response.
-        MdnsResponse initialResponse =
-                createMockResponse(
-                        serviceInstanceName, "192.168.1.1", 5353, List.of("ABCDE"),
-                        Map.of(), INTERFACE_INDEX, mockNetwork);
-        client.processResponse(initialResponse);
+        client.processResponse(createResponse(
+                serviceInstanceName, "192.168.1.1", 5353, /* subtype= */ "ABCDE",
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
 
         // Clear the scheduled runnable.
         currentThreadExecutor.getAndClearLastScheduledRunnable();
 
         // Simulate the case where the response is after TTL.
-        when(initialResponse.getServiceRecord().getRemainingTTL(anyLong())).thenReturn((long) 0);
+        doReturn(TEST_ELAPSED_REALTIME + TEST_TTL + 1L).when(mockDecoderClock).elapsedRealtime();
         firstMdnsTask.run();
 
         // Verify removed callback was called.
@@ -844,46 +805,26 @@
         InOrder inOrder = inOrder(mockListenerOne);
 
         // Process the initial response which is incomplete.
-        final MdnsResponse initialResponse =
-                createResponse(
-                        serviceName,
-                        null,
-                        5353,
-                        "ABCDE" /* subtype */,
-                        Collections.emptyMap(),
-                        INTERFACE_INDEX,
-                        mockNetwork);
-        client.processResponse(initialResponse);
+        final String subtype = "ABCDE";
+        client.processResponse(createResponse(
+                serviceName, null, 5353, subtype,
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
 
         // Process a second response which has ip address to make response become complete.
-        final MdnsResponse secondResponse =
-                createResponse(
-                        serviceName,
-                        ipV4Address,
-                        5353,
-                        "ABCDE" /* subtype */,
-                        Collections.emptyMap(),
-                        INTERFACE_INDEX,
-                        mockNetwork);
-        client.processResponse(secondResponse);
+        client.processResponse(createResponse(
+                serviceName, ipV4Address, 5353, subtype,
+                Collections.emptyMap(), TEST_TTL), INTERFACE_INDEX, mockNetwork);
 
         // Process a third response with a different ip address, port and updated text attributes.
-        final MdnsResponse thirdResponse =
-                createResponse(
-                        serviceName,
-                        ipV6Address,
-                        5354,
-                        "ABCDE" /* subtype */,
-                        Collections.singletonMap("key", "value"),
-                        INTERFACE_INDEX,
-                        mockNetwork);
-        client.processResponse(thirdResponse);
+        client.processResponse(createResponse(
+                serviceName, ipV6Address, 5354, subtype,
+                Collections.singletonMap("key", "value"), TEST_TTL), INTERFACE_INDEX, mockNetwork);
 
-        // Process the last response which is goodbye message.
-        final MdnsResponse lastResponse = mock(MdnsResponse.class);
-        doReturn(serviceName).when(lastResponse).getServiceInstanceName();
-        doReturn(true).when(lastResponse).isGoodbye();
-        client.processResponse(lastResponse);
+        // Process the last response which is goodbye message (with the main type, not subtype).
+        client.processResponse(createResponse(
+                serviceName, ipV6Address, 5354, SERVICE_TYPE_LABELS,
+                Collections.singletonMap("key", "value"), /* ptrTtlMillis= */ 0L),
+                INTERFACE_INDEX, mockNetwork);
 
         // Verify onServiceNameDiscovered was first called for the initial response.
         inOrder.verify(mockListenerOne).onServiceNameDiscovered(serviceInfoCaptor.capture());
@@ -893,7 +834,7 @@
                 null /* ipv4Address */,
                 null /* ipv6Address */,
                 5353 /* port */,
-                Collections.singletonList("ABCDE") /* subTypes */,
+                Collections.singletonList(subtype) /* subTypes */,
                 Collections.singletonMap("key", null) /* attributes */,
                 INTERFACE_INDEX,
                 mockNetwork);
@@ -906,7 +847,7 @@
                 ipV4Address /* ipv4Address */,
                 null /* ipv6Address */,
                 5353 /* port */,
-                Collections.singletonList("ABCDE") /* subTypes */,
+                Collections.singletonList(subtype) /* subTypes */,
                 Collections.singletonMap("key", null) /* attributes */,
                 INTERFACE_INDEX,
                 mockNetwork);
@@ -919,7 +860,7 @@
                 ipV4Address /* ipv4Address */,
                 ipV6Address /* ipv6Address */,
                 5354 /* port */,
-                Collections.singletonList("ABCDE") /* subTypes */,
+                Collections.singletonList(subtype) /* subTypes */,
                 Collections.singletonMap("key", "value") /* attributes */,
                 INTERFACE_INDEX,
                 mockNetwork);
@@ -1029,106 +970,68 @@
         }
     }
 
-    // Creates a mock mDNS response.
-    private MdnsResponse createMockResponse(
-            @NonNull String serviceInstanceName,
-            @NonNull String host,
-            int port,
-            @NonNull List<String> subtypes,
-            @NonNull Map<String, String> textAttributes,
-            int interfaceIndex,
-            Network network)
-            throws Exception {
-        String[] hostName = new String[]{"hostname"};
-        MdnsServiceRecord serviceRecord = mock(MdnsServiceRecord.class);
-        when(serviceRecord.getServiceHost()).thenReturn(hostName);
-        when(serviceRecord.getServicePort()).thenReturn(port);
-
-        MdnsResponse response = spy(new MdnsResponse(0, interfaceIndex, network));
-
-        MdnsInetAddressRecord inetAddressRecord = mock(MdnsInetAddressRecord.class);
-        if (host.contains(":")) {
-            when(inetAddressRecord.getInet6Address())
-                    .thenReturn((Inet6Address) Inet6Address.getByName(host));
-            response.setInet6AddressRecord(inetAddressRecord);
-        } else {
-            when(inetAddressRecord.getInet4Address())
-                    .thenReturn((Inet4Address) Inet4Address.getByName(host));
-            response.setInet4AddressRecord(inetAddressRecord);
-        }
-
-        MdnsTextRecord textRecord = mock(MdnsTextRecord.class);
-        List<String> textStrings = new ArrayList<>();
-        List<TextEntry> textEntries = new ArrayList<>();
-        for (Map.Entry<String, String> kv : textAttributes.entrySet()) {
-            textStrings.add(kv.getKey() + "=" + kv.getValue());
-            textEntries.add(new TextEntry(kv.getKey(), kv.getValue().getBytes(UTF_8)));
-        }
-        when(textRecord.getStrings()).thenReturn(textStrings);
-        when(textRecord.getEntries()).thenReturn(textEntries);
-
-        response.setServiceRecord(serviceRecord);
-        response.setTextRecord(textRecord);
-
-        doReturn(false).when(response).isGoodbye();
-        doReturn(true).when(response).isComplete();
-        doReturn(serviceInstanceName).when(response).getServiceInstanceName();
-        doReturn(new ArrayList<>(subtypes)).when(response).getSubtypes();
-        return response;
-    }
-
-    // Creates a mDNS response.
-    private MdnsResponse createResponse(
+    private MdnsPacket createResponse(
             @NonNull String serviceInstanceName,
             @Nullable String host,
             int port,
             @NonNull String subtype,
             @NonNull Map<String, String> textAttributes,
-            int interfaceIndex,
-            Network network)
+            long ptrTtlMillis)
             throws Exception {
-        MdnsResponse response = new MdnsResponse(0, interfaceIndex, network);
+        final ArrayList<String> type = new ArrayList<>();
+        type.add(subtype);
+        type.add(MdnsConstants.SUBTYPE_LABEL);
+        type.addAll(Arrays.asList(SERVICE_TYPE_LABELS));
+        return createResponse(serviceInstanceName, host, port, type.toArray(new String[0]),
+                textAttributes, ptrTtlMillis);
+    }
+
+    // Creates a mDNS response.
+    private MdnsPacket createResponse(
+            @NonNull String serviceInstanceName,
+            @Nullable String host,
+            int port,
+            @NonNull String[] type,
+            @NonNull Map<String, String> textAttributes,
+            long ptrTtlMillis) {
+
+        final ArrayList<MdnsRecord> answerRecords = new ArrayList<>();
 
         // Set PTR record
+        final ArrayList<String> serviceNameList = new ArrayList<>();
+        serviceNameList.add(serviceInstanceName);
+        serviceNameList.addAll(Arrays.asList(type));
+        final String[] serviceName = serviceNameList.toArray(new String[0]);
         final MdnsPointerRecord pointerRecord = new MdnsPointerRecord(
-                new String[]{subtype, MdnsConstants.SUBTYPE_LABEL, "test"} /* name */,
-                0L /* receiptTimeMillis */,
+                type,
+                TEST_ELAPSED_REALTIME /* receiptTimeMillis */,
                 false /* cacheFlush */,
-                120000L /* ttlMillis */,
-                new String[]{serviceInstanceName});
-        response.addPointerRecord(pointerRecord);
+                ptrTtlMillis,
+                serviceName);
+        answerRecords.add(pointerRecord);
 
         // Set SRV record.
         final MdnsServiceRecord serviceRecord = new MdnsServiceRecord(
-                new String[] {"service"} /* name */,
-                0L /* receiptTimeMillis */,
+                serviceName,
+                TEST_ELAPSED_REALTIME /* receiptTimeMillis */,
                 false /* cacheFlush */,
-                120000L /* ttlMillis */,
+                TEST_TTL,
                 0 /* servicePriority */,
                 0 /* serviceWeight */,
                 port,
                 new String[]{"hostname"});
-        response.setServiceRecord(serviceRecord);
+        answerRecords.add(serviceRecord);
 
         // Set A/AAAA record.
         if (host != null) {
-            if (InetAddresses.parseNumericAddress(host) instanceof Inet6Address) {
-                final MdnsInetAddressRecord inetAddressRecord = new MdnsInetAddressRecord(
-                        new String[] {"address"} /* name */,
-                        0L /* receiptTimeMillis */,
-                        false /* cacheFlush */,
-                        120000L /* ttlMillis */,
-                        Inet6Address.getByName(host));
-                response.setInet6AddressRecord(inetAddressRecord);
-            } else {
-                final MdnsInetAddressRecord inetAddressRecord = new MdnsInetAddressRecord(
-                        new String[] {"address"} /* name */,
-                        0L /* receiptTimeMillis */,
-                        false /* cacheFlush */,
-                        120000L /* ttlMillis */,
-                        Inet4Address.getByName(host));
-                response.setInet4AddressRecord(inetAddressRecord);
-            }
+            final InetAddress addr = InetAddresses.parseNumericAddress(host);
+            final MdnsInetAddressRecord inetAddressRecord = new MdnsInetAddressRecord(
+                    new String[] {"hostname"} /* name */,
+                    TEST_ELAPSED_REALTIME /* receiptTimeMillis */,
+                    false /* cacheFlush */,
+                    TEST_TTL,
+                    addr);
+            answerRecords.add(inetAddressRecord);
         }
 
         // Set TXT record.
@@ -1137,12 +1040,18 @@
             textEntries.add(new TextEntry(kv.getKey(), kv.getValue().getBytes(UTF_8)));
         }
         final MdnsTextRecord textRecord = new MdnsTextRecord(
-                new String[] {"text"} /* name */,
-                0L /* receiptTimeMillis */,
+                serviceName,
+                TEST_ELAPSED_REALTIME /* receiptTimeMillis */,
                 false /* cacheFlush */,
-                120000L /* ttlMillis */,
+                TEST_TTL,
                 textEntries);
-        response.setTextRecord(textRecord);
-        return response;
+        answerRecords.add(textRecord);
+        return new MdnsPacket(
+                0 /* flags */,
+                Collections.emptyList() /* questions */,
+                answerRecords,
+                Collections.emptyList() /* authorityRecords */,
+                Collections.emptyList() /* additionalRecords */
+        );
     }
 }
\ No newline at end of file
diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketClientTests.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketClientTests.java
index 1d61cd3..9048686 100644
--- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketClientTests.java
+++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketClientTests.java
@@ -18,13 +18,11 @@
 
 import static com.android.testutils.DevSdkIgnoreRuleKt.SC_V2;
 
-import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
-import static org.mockito.ArgumentMatchers.argThat;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.never;
@@ -48,7 +46,6 @@
 import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.ArgumentCaptor;
 import org.mockito.ArgumentMatchers;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
@@ -373,7 +370,7 @@
         mdnsClient.startDiscovery();
 
         verify(mockCallback, timeout(TIMEOUT).atLeast(1))
-                .onResponseReceived(any(MdnsResponse.class));
+                .onResponseReceived(any(MdnsPacket.class), anyInt(), any());
     }
 
     @Test
@@ -382,7 +379,7 @@
         mdnsClient.startDiscovery();
 
         verify(mockCallback, timeout(TIMEOUT).atLeastOnce())
-                .onResponseReceived(any(MdnsResponse.class));
+                .onResponseReceived(any(MdnsPacket.class), anyInt(), any());
 
         mdnsClient.stopDiscovery();
     }
@@ -514,7 +511,7 @@
         mdnsClient.startDiscovery();
 
         verify(mockCallback, timeout(TIMEOUT).atLeastOnce())
-                .onResponseReceived(argThat(response -> response.getInterfaceIndex() == 21));
+                .onResponseReceived(any(), eq(21), any());
     }
 
     @Test
@@ -536,11 +533,7 @@
         mdnsClient.setCallback(mockCallback);
         mdnsClient.startDiscovery();
 
-        ArgumentCaptor<MdnsResponse> mdnsResponseCaptor =
-                ArgumentCaptor.forClass(MdnsResponse.class);
         verify(mockMulticastSocket, never()).getInterfaceIndex();
-        verify(mockCallback, timeout(TIMEOUT).atLeast(1))
-                .onResponseReceived(mdnsResponseCaptor.capture());
-        assertEquals(-1, mdnsResponseCaptor.getValue().getInterfaceIndex());
+        verify(mockCallback, timeout(TIMEOUT).atLeast(1)).onResponseReceived(any(), eq(-1), any());
     }
 }
\ No newline at end of file
diff --git a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java
index 635b296..b9cb255 100644
--- a/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java
+++ b/tests/unit/java/com/android/server/connectivity/mdns/MdnsSocketProviderTest.java
@@ -27,6 +27,7 @@
 import static org.mockito.Mockito.doCallRealMethod;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
@@ -109,12 +110,15 @@
         final HandlerThread thread = new HandlerThread("MdnsSocketProviderTest");
         thread.start();
         mHandler = new Handler(thread.getLooper());
+        mSocketProvider = new MdnsSocketProvider(mContext, thread.getLooper(), mDeps);
+    }
 
+    private void startMonitoringSockets() {
         final ArgumentCaptor<NetworkCallback> nwCallbackCaptor =
                 ArgumentCaptor.forClass(NetworkCallback.class);
         final ArgumentCaptor<TetheringEventCallback> teCallbackCaptor =
                 ArgumentCaptor.forClass(TetheringEventCallback.class);
-        mSocketProvider = new MdnsSocketProvider(mContext, thread.getLooper(), mDeps);
+
         mHandler.post(mSocketProvider::startMonitoringSockets);
         HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
         verify(mCm).registerNetworkCallback(any(), nwCallbackCaptor.capture(), any());
@@ -205,6 +209,8 @@
 
     @Test
     public void testSocketRequestAndUnrequestSocket() {
+        startMonitoringSockets();
+
         final TestSocketCallback testCallback1 = new TestSocketCallback();
         mHandler.post(() -> mSocketProvider.requestSocket(TEST_NETWORK, testCallback1));
         HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
@@ -275,6 +281,8 @@
 
     @Test
     public void testAddressesChanged() throws Exception {
+        startMonitoringSockets();
+
         final TestSocketCallback testCallback = new TestSocketCallback();
         mHandler.post(() -> mSocketProvider.requestSocket(TEST_NETWORK, testCallback));
         HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
@@ -297,4 +305,53 @@
         testCallback.expectedAddressesChangedForNetwork(
                 TEST_NETWORK, List.of(LINKADDRV4, LINKADDRV6));
     }
+
+    @Test
+    public void testStartAndStopMonitoringSockets() {
+        // Stop monitoring sockets before start. Should not unregister any network callback.
+        mHandler.post(mSocketProvider::requestStopWhenInactive);
+        HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
+        verify(mCm, never()).unregisterNetworkCallback(any(NetworkCallback.class));
+        verify(mTm, never()).unregisterTetheringEventCallback(any(TetheringEventCallback.class));
+
+        // Start sockets monitoring.
+        startMonitoringSockets();
+        // Request a socket then unrequest it. Expect no network callback unregistration.
+        final TestSocketCallback testCallback = new TestSocketCallback();
+        mHandler.post(() -> mSocketProvider.requestSocket(TEST_NETWORK, testCallback));
+        HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
+        testCallback.expectedNoCallback();
+        mHandler.post(()-> mSocketProvider.unrequestSocket(testCallback));
+        HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
+        verify(mCm, never()).unregisterNetworkCallback(any(NetworkCallback.class));
+        verify(mTm, never()).unregisterTetheringEventCallback(any(TetheringEventCallback.class));
+        // Request stop and it should unregister network callback immediately because there is no
+        // socket request.
+        mHandler.post(mSocketProvider::requestStopWhenInactive);
+        HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
+        verify(mCm, times(1)).unregisterNetworkCallback(any(NetworkCallback.class));
+        verify(mTm, times(1)).unregisterTetheringEventCallback(any(TetheringEventCallback.class));
+
+        // Start sockets monitoring and request a socket again.
+        mHandler.post(mSocketProvider::startMonitoringSockets);
+        HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
+        verify(mCm, times(2)).registerNetworkCallback(any(), any(NetworkCallback.class), any());
+        verify(mTm, times(2)).registerTetheringEventCallback(
+                any(), any(TetheringEventCallback.class));
+        final TestSocketCallback testCallback2 = new TestSocketCallback();
+        mHandler.post(() -> mSocketProvider.requestSocket(TEST_NETWORK, testCallback2));
+        HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
+        testCallback2.expectedNoCallback();
+        // Try to stop monitoring sockets but should be ignored and wait until all socket are
+        // unrequested.
+        mHandler.post(mSocketProvider::requestStopWhenInactive);
+        HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
+        verify(mCm, times(1)).unregisterNetworkCallback(any(NetworkCallback.class));
+        verify(mTm, times(1)).unregisterTetheringEventCallback(any());
+        // Unrequest the socket then network callbacks should be unregistered.
+        mHandler.post(()-> mSocketProvider.unrequestSocket(testCallback2));
+        HandlerUtils.waitForIdle(mHandler, DEFAULT_TIMEOUT);
+        verify(mCm, times(2)).unregisterNetworkCallback(any(NetworkCallback.class));
+        verify(mTm, times(2)).unregisterTetheringEventCallback(any(TetheringEventCallback.class));
+    }
 }
diff --git a/tools/gn2bp/Android.bp.swp b/tools/gn2bp/Android.bp.swp
index 0ff8284..d22a576 100644
--- a/tools/gn2bp/Android.bp.swp
+++ b/tools/gn2bp/Android.bp.swp
@@ -292,7 +292,6 @@
 cc_library_static {
     name: "cronet_aml_base_allocator_partition_allocator_partition_alloc",
     srcs: [
-        ":cronet_aml_third_party_android_ndk_cpu_features",
         "base/allocator/partition_allocator/address_pool_manager.cc",
         "base/allocator/partition_allocator/address_pool_manager_bitmap.cc",
         "base/allocator/partition_allocator/address_space_randomization.cc",
@@ -346,6 +345,9 @@
         "base/allocator/partition_allocator/tagging.cc",
         "base/allocator/partition_allocator/thread_cache.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_android_ndk_cpu_features",
+    ],
     generated_headers: [
         "cronet_aml_base_allocator_partition_allocator_chromecast_buildflags",
         "cronet_aml_base_allocator_partition_allocator_chromeos_buildflags",
@@ -557,13 +559,15 @@
     target: {
         android_arm: {
             srcs: [
-                ":cronet_aml_third_party_android_ndk_cpu_features__testing",
                 "base/allocator/partition_allocator/partition_alloc_base/files/file_path.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/native_library.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/native_library_posix.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/time/time_android.cc",
                 "base/allocator/partition_allocator/starscan/stack/asm/arm/push_registers_asm.cc",
             ],
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -576,13 +580,15 @@
         },
         android_arm64: {
             srcs: [
-                ":cronet_aml_third_party_android_ndk_cpu_features__testing",
                 "base/allocator/partition_allocator/partition_alloc_base/files/file_path.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/native_library.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/native_library_posix.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/time/time_android.cc",
                 "base/allocator/partition_allocator/starscan/stack/asm/arm64/push_registers_asm.cc",
             ],
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -598,13 +604,15 @@
         },
         android_x86: {
             srcs: [
-                ":cronet_aml_third_party_android_ndk_cpu_features__testing",
                 "base/allocator/partition_allocator/partition_alloc_base/files/file_path.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/native_library.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/native_library_posix.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/time/time_android.cc",
                 "base/allocator/partition_allocator/starscan/stack/asm/x86/push_registers_asm.cc",
             ],
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -617,13 +625,15 @@
         },
         android_x86_64: {
             srcs: [
-                ":cronet_aml_third_party_android_ndk_cpu_features__testing",
                 "base/allocator/partition_allocator/partition_alloc_base/files/file_path.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/native_library.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/native_library_posix.cc",
                 "base/allocator/partition_allocator/partition_alloc_base/time/time_android.cc",
                 "base/allocator/partition_allocator/starscan/stack/asm/x64/push_registers_asm.cc",
             ],
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -933,56 +943,6 @@
 cc_library_static {
     name: "cronet_aml_base_base",
     srcs: [
-        ":cronet_aml_base_nodebug_assertion",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_base",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
-        ":cronet_aml_third_party_android_ndk_cpu_features",
-        ":cronet_aml_third_party_ashmem_ashmem",
         "base/allocator/allocator_check.cc",
         "base/allocator/allocator_extension.cc",
         "base/allocator/dispatcher/dispatcher.cc",
@@ -1424,9 +1384,60 @@
     static_libs: [
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -1605,54 +1616,6 @@
 cc_library_static {
     name: "cronet_aml_base_base__testing",
     srcs: [
-        ":cronet_aml_base_nodebug_assertion__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
         "base/allocator/allocator_check.cc",
         "base/allocator/allocator_extension.cc",
         "base/allocator/dispatcher/dispatcher.cc",
@@ -2020,9 +1983,58 @@
     static_libs: [
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -2134,8 +2146,6 @@
         },
         android_arm: {
             srcs: [
-                ":cronet_aml_third_party_android_ndk_cpu_features__testing",
-                ":cronet_aml_third_party_ashmem_ashmem__testing",
                 "base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc",
                 "base/android/android_hardware_buffer_compat.cc",
                 "base/android/android_image_reader_compat.cc",
@@ -2212,6 +2222,10 @@
                 "base/time/time_android.cc",
                 "base/trace_event/cfi_backtrace_android.cc",
             ],
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+                "cronet_aml_third_party_ashmem_ashmem__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -2228,13 +2242,6 @@
                 "cronet_aml_base_logging_buildflags__testing",
                 "cronet_aml_build_chromeos_buildflags__testing",
             ],
-            export_generated_headers: [
-                "cronet_aml_base_android_runtime_jni_headers__testing",
-                "cronet_aml_base_base_jni_headers__testing",
-                "cronet_aml_base_debugging_buildflags__testing",
-                "cronet_aml_base_logging_buildflags__testing",
-                "cronet_aml_build_chromeos_buildflags__testing",
-            ],
             ldflags: [
                 "-Wl,-wrap,asprintf",
                 "-Wl,-wrap,calloc",
@@ -2255,8 +2262,6 @@
         },
         android_arm64: {
             srcs: [
-                ":cronet_aml_third_party_android_ndk_cpu_features__testing",
-                ":cronet_aml_third_party_ashmem_ashmem__testing",
                 "base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc",
                 "base/android/android_hardware_buffer_compat.cc",
                 "base/android/android_image_reader_compat.cc",
@@ -2329,6 +2334,10 @@
                 "base/threading/platform_thread_android.cc",
                 "base/time/time_android.cc",
             ],
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+                "cronet_aml_third_party_ashmem_ashmem__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -2347,13 +2356,6 @@
                 "cronet_aml_base_logging_buildflags__testing",
                 "cronet_aml_build_chromeos_buildflags__testing",
             ],
-            export_generated_headers: [
-                "cronet_aml_base_android_runtime_jni_headers__testing",
-                "cronet_aml_base_base_jni_headers__testing",
-                "cronet_aml_base_debugging_buildflags__testing",
-                "cronet_aml_base_logging_buildflags__testing",
-                "cronet_aml_build_chromeos_buildflags__testing",
-            ],
             ldflags: [
                 "-Wl,-wrap,asprintf",
                 "-Wl,-wrap,calloc",
@@ -2374,8 +2376,6 @@
         },
         android_x86: {
             srcs: [
-                ":cronet_aml_third_party_android_ndk_cpu_features__testing",
-                ":cronet_aml_third_party_ashmem_ashmem__testing",
                 "base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc",
                 "base/android/android_hardware_buffer_compat.cc",
                 "base/android/android_image_reader_compat.cc",
@@ -2448,6 +2448,10 @@
                 "base/threading/platform_thread_android.cc",
                 "base/time/time_android.cc",
             ],
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+                "cronet_aml_third_party_ashmem_ashmem__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -2464,13 +2468,6 @@
                 "cronet_aml_base_logging_buildflags__testing",
                 "cronet_aml_build_chromeos_buildflags__testing",
             ],
-            export_generated_headers: [
-                "cronet_aml_base_android_runtime_jni_headers__testing",
-                "cronet_aml_base_base_jni_headers__testing",
-                "cronet_aml_base_debugging_buildflags__testing",
-                "cronet_aml_base_logging_buildflags__testing",
-                "cronet_aml_build_chromeos_buildflags__testing",
-            ],
             ldflags: [
                 "-Wl,-wrap,asprintf",
                 "-Wl,-wrap,calloc",
@@ -2491,8 +2488,6 @@
         },
         android_x86_64: {
             srcs: [
-                ":cronet_aml_third_party_android_ndk_cpu_features__testing",
-                ":cronet_aml_third_party_ashmem_ashmem__testing",
                 "base/allocator/partition_allocator/shim/allocator_shim_default_dispatch_to_linker_wrapped_symbols.cc",
                 "base/android/android_hardware_buffer_compat.cc",
                 "base/android/android_image_reader_compat.cc",
@@ -2565,6 +2560,10 @@
                 "base/threading/platform_thread_android.cc",
                 "base/time/time_android.cc",
             ],
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+                "cronet_aml_third_party_ashmem_ashmem__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -2582,13 +2581,6 @@
                 "cronet_aml_base_logging_buildflags__testing",
                 "cronet_aml_build_chromeos_buildflags__testing",
             ],
-            export_generated_headers: [
-                "cronet_aml_base_android_runtime_jni_headers__testing",
-                "cronet_aml_base_base_jni_headers__testing",
-                "cronet_aml_base_debugging_buildflags__testing",
-                "cronet_aml_base_logging_buildflags__testing",
-                "cronet_aml_build_chromeos_buildflags__testing",
-            ],
             ldflags: [
                 "-Wl,-wrap,asprintf",
                 "-Wl,-wrap,calloc",
@@ -3743,9 +3735,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_ced_ced__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
@@ -4051,7 +4094,7 @@
 }
 
 // GN: //base:nodebug_assertion
-cc_object {
+cc_library_static {
     name: "cronet_aml_base_nodebug_assertion",
     srcs: [
         "base/nodebug_assertion.cc",
@@ -4096,6 +4139,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -4124,7 +4172,7 @@
 }
 
 // GN: //base:nodebug_assertion__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_base_nodebug_assertion__testing",
     srcs: [
         "base/nodebug_assertion.cc",
@@ -4165,6 +4213,11 @@
         "buildtools/third_party/libc++/trunk/include",
         "buildtools/third_party/libc++abi/trunk/include",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -4648,9 +4701,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -4754,55 +4858,6 @@
 cc_library_static {
     name: "cronet_aml_base_test_test_support__testing",
     srcs: [
-        ":cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
-        ":cronet_aml_third_party_googletest_gmock__testing",
-        ":cronet_aml_third_party_googletest_gtest__testing",
         "base/task/sequence_manager/test/fake_task.cc",
         "base/task/sequence_manager/test/mock_time_domain.cc",
         "base/task/sequence_manager/test/mock_time_message_pump.cc",
@@ -4880,12 +4935,65 @@
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
         "cronet_aml_base_i18n__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_test_test_config__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_ced_ced__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -5823,7 +5931,7 @@
 }
 
 // GN: //buildtools/third_party/libc++:libc++
-cc_object {
+cc_library_static {
     name: "cronet_aml_buildtools_third_party_libc___libc__",
     srcs: [
         "buildtools/third_party/libc++/trunk/src/algorithm.cpp",
@@ -5869,6 +5977,9 @@
         "buildtools/third_party/libc++/trunk/src/vector.cpp",
         "buildtools/third_party/libc++/trunk/src/verbose_abort.cpp",
     ],
+    static_libs: [
+        "cronet_aml_buildtools_third_party_libc__abi_libc__abi",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -5904,6 +6015,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
     ],
     cpp_std: "c++20",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     cppflags: [
         "-fexceptions",
     ],
@@ -5967,7 +6083,7 @@
 }
 
 // GN: //buildtools/third_party/libc++:libc++__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_buildtools_third_party_libc___libc____testing",
     srcs: [
         "buildtools/third_party/libc++/trunk/src/algorithm.cpp",
@@ -6013,6 +6129,9 @@
         "buildtools/third_party/libc++/trunk/src/vector.cpp",
         "buildtools/third_party/libc++/trunk/src/verbose_abort.cpp",
     ],
+    static_libs: [
+        "cronet_aml_buildtools_third_party_libc__abi_libc__abi__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -6048,6 +6167,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
     ],
     cpp_std: "c++20",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     cppflags: [
         "-fexceptions",
     ],
@@ -6111,7 +6235,7 @@
 }
 
 // GN: //buildtools/third_party/libc++abi:libc++abi
-cc_object {
+cc_library_static {
     name: "cronet_aml_buildtools_third_party_libc__abi_libc__abi",
     srcs: [
         "buildtools/third_party/libc++abi/trunk/src/abort_message.cpp",
@@ -6165,6 +6289,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
     ],
     cpp_std: "c++20",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     cppflags: [
         "-fexceptions",
     ],
@@ -6243,7 +6372,7 @@
 }
 
 // GN: //buildtools/third_party/libc++abi:libc++abi__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_buildtools_third_party_libc__abi_libc__abi__testing",
     srcs: [
         "buildtools/third_party/libc++abi/trunk/src/abort_message.cpp",
@@ -6297,6 +6426,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
     ],
     cpp_std: "c++20",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     cppflags: [
         "-fexceptions",
     ],
@@ -6424,12 +6558,6 @@
 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_components_cronet_android_cronet_static",
-        ":cronet_aml_components_cronet_cronet_common",
-        ":cronet_aml_components_cronet_metrics_util",
-        ":cronet_aml_components_metrics_library_support",
         "components/cronet/android/cronet_jni.cc",
     ],
     shared_libs: [
@@ -6441,15 +6569,79 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_buildtools_third_party_libc___libc__",
+        "cronet_aml_buildtools_third_party_libc__abi_libc__abi",
+        "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_metrics_library_support",
         "cronet_aml_components_prefs_prefs",
         "cronet_aml_crypto_crypto",
+        "cronet_aml_net_dns_dns",
+        "cronet_aml_net_dns_public_public",
+        "cronet_aml_net_http_transport_security_state_generated_files",
         "cronet_aml_net_net",
+        "cronet_aml_net_net_deps",
+        "cronet_aml_net_net_public_deps",
         "cronet_aml_net_preload_decoder",
         "cronet_aml_net_third_party_quiche_quiche",
+        "cronet_aml_net_traffic_annotation_traffic_annotation",
         "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
         "cronet_aml_third_party_icu_icui18n",
@@ -6459,30 +6651,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite",
         "cronet_aml_url_url",
     ],
-    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",
-    ],
-    export_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",
     ],
@@ -7693,7 +7861,7 @@
 }
 
 // GN: //components/cronet/android:cronet_static
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_cronet_android_cronet_static",
     srcs: [
         "components/cronet/android/cronet_bidirectional_stream_adapter.cc",
@@ -7713,15 +7881,76 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_components_cronet_cronet_common",
+        "cronet_aml_components_cronet_cronet_version_header",
+        "cronet_aml_components_cronet_metrics_util",
+        "cronet_aml_components_metrics_library_support",
         "cronet_aml_components_prefs_prefs",
         "cronet_aml_crypto_crypto",
+        "cronet_aml_net_dns_dns",
+        "cronet_aml_net_dns_public_public",
+        "cronet_aml_net_http_transport_security_state_generated_files",
         "cronet_aml_net_net",
+        "cronet_aml_net_net_deps",
+        "cronet_aml_net_net_public_deps",
         "cronet_aml_net_preload_decoder",
         "cronet_aml_net_third_party_quiche_quiche",
+        "cronet_aml_net_traffic_annotation_traffic_annotation",
         "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
         "cronet_aml_third_party_icu_icui18n",
@@ -7738,9 +7967,15 @@
         "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",
+    ],
+    export_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_url_buildflags",
     ],
     defaults: [
@@ -7789,6 +8024,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -7817,7 +8073,7 @@
 }
 
 // GN: //components/cronet/android:cronet_static__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_cronet_android_cronet_static__testing",
     srcs: [
         "components/cronet/android/cronet_bidirectional_stream_adapter.cc",
@@ -7837,15 +8093,76 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_components_cronet_cronet_common__testing",
+        "cronet_aml_components_cronet_cronet_version_header__testing",
+        "cronet_aml_components_cronet_metrics_util__testing",
+        "cronet_aml_components_metrics_library_support__testing",
         "cronet_aml_components_prefs_prefs__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -7862,9 +8179,15 @@
         "cronet_aml_components_cronet_android_buildflags__testing",
         "cronet_aml_components_cronet_android_cronet_jni_headers__testing",
         "cronet_aml_components_cronet_android_cronet_jni_registration__testing",
-        "cronet_aml_components_cronet_cronet_buildflags__testing",
-        "cronet_aml_components_cronet_cronet_version_header_action__testing",
-        "cronet_aml_third_party_metrics_proto_metrics_proto__testing_gen_headers",
+        "cronet_aml_url_buildflags__testing",
+    ],
+    export_generated_headers: [
+        "cronet_aml_base_debugging_buildflags__testing",
+        "cronet_aml_base_logging_buildflags__testing",
+        "cronet_aml_build_chromeos_buildflags__testing",
+        "cronet_aml_components_cronet_android_buildflags__testing",
+        "cronet_aml_components_cronet_android_cronet_jni_headers__testing",
+        "cronet_aml_components_cronet_android_cronet_jni_registration__testing",
         "cronet_aml_url_buildflags__testing",
     ],
     defaults: [
@@ -7913,6 +8236,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -7944,15 +8288,6 @@
 cc_library_shared {
     name: "cronet_aml_components_cronet_android_cronet_unittests_android__library__testing",
     srcs: [
-        ":cronet_aml_buildtools_third_party_libc___libc____testing",
-        ":cronet_aml_buildtools_third_party_libc__abi_libc__abi__testing",
-        ":cronet_aml_components_cronet_android_cronet_static__testing",
-        ":cronet_aml_components_cronet_cronet_common__testing",
-        ":cronet_aml_components_cronet_cronet_common_unittests__testing",
-        ":cronet_aml_components_cronet_metrics_util__testing",
-        ":cronet_aml_components_metrics_library_support__testing",
-        ":cronet_aml_testing_android_native_test_native_test_native_code__testing",
-        ":cronet_aml_testing_android_native_test_native_test_support__testing",
         "components/cronet/run_all_unittests.cc",
     ],
     shared_libs: [
@@ -7965,25 +8300,98 @@
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
         "cronet_aml_base_i18n__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_test_test_config__testing",
         "cronet_aml_base_test_test_support__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_buildtools_third_party_libc___libc____testing",
+        "cronet_aml_buildtools_third_party_libc__abi_libc__abi__testing",
+        "cronet_aml_components_cronet_android_cronet_static__testing",
+        "cronet_aml_components_cronet_cronet_common__testing",
+        "cronet_aml_components_cronet_cronet_common_unittests__testing",
+        "cronet_aml_components_cronet_cronet_version_header__testing",
+        "cronet_aml_components_cronet_metrics_util__testing",
+        "cronet_aml_components_metrics_library_support__testing",
         "cronet_aml_components_prefs_prefs__testing",
         "cronet_aml_components_prefs_test_support__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_dns_test_support__testing",
         "cronet_aml_net_gtest_util__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
+        "cronet_aml_net_quic_test_flags_utils__testing",
+        "cronet_aml_net_simple_quic_tools__testing",
         "cronet_aml_net_test_support__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
         "cronet_aml_net_third_party_quiche_quiche_tool_support__testing",
+        "cronet_aml_net_tools_tld_cleanup_tld_cleanup__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_testing_android_native_test_native_test_native_code__testing",
+        "cronet_aml_testing_android_native_test_native_test_support__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_ced_ced__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -7994,32 +8402,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite__testing",
         "cronet_aml_url_url__testing",
     ],
-    generated_headers: [
-        "cronet_aml_base_debugging_buildflags__testing",
-        "cronet_aml_base_logging_buildflags__testing",
-        "cronet_aml_build_chromeos_buildflags__testing",
-        "cronet_aml_components_cronet_android_buildflags__testing",
-        "cronet_aml_components_cronet_android_cronet_jni_headers__testing",
-        "cronet_aml_components_cronet_android_cronet_jni_registration__testing",
-        "cronet_aml_components_cronet_cronet_buildflags__testing",
-        "cronet_aml_components_cronet_cronet_version_header_action__testing",
-        "cronet_aml_testing_android_native_test_native_test_jni_headers__testing",
-        "cronet_aml_third_party_metrics_proto_metrics_proto__testing_gen_headers",
-        "cronet_aml_url_buildflags__testing",
-    ],
-    export_generated_headers: [
-        "cronet_aml_base_debugging_buildflags__testing",
-        "cronet_aml_base_logging_buildflags__testing",
-        "cronet_aml_build_chromeos_buildflags__testing",
-        "cronet_aml_components_cronet_android_buildflags__testing",
-        "cronet_aml_components_cronet_android_cronet_jni_headers__testing",
-        "cronet_aml_components_cronet_android_cronet_jni_registration__testing",
-        "cronet_aml_components_cronet_cronet_buildflags__testing",
-        "cronet_aml_components_cronet_cronet_version_header_action__testing",
-        "cronet_aml_testing_android_native_test_native_test_jni_headers__testing",
-        "cronet_aml_third_party_metrics_proto_metrics_proto__testing_gen_headers",
-        "cronet_aml_url_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -8430,7 +8812,7 @@
 }
 
 // GN: //components/cronet:cronet_common
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_cronet_cronet_common",
     srcs: [
         "components/cronet/cronet_context.cc",
@@ -8450,15 +8832,74 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_components_cronet_cronet_version_header",
+        "cronet_aml_components_metrics_library_support",
         "cronet_aml_components_prefs_prefs",
         "cronet_aml_crypto_crypto",
+        "cronet_aml_net_dns_dns",
+        "cronet_aml_net_dns_public_public",
+        "cronet_aml_net_http_transport_security_state_generated_files",
         "cronet_aml_net_net",
+        "cronet_aml_net_net_deps",
+        "cronet_aml_net_net_public_deps",
         "cronet_aml_net_preload_decoder",
         "cronet_aml_net_third_party_quiche_quiche",
+        "cronet_aml_net_traffic_annotation_traffic_annotation",
         "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
         "cronet_aml_third_party_icu_icui18n",
@@ -8470,8 +8911,9 @@
     ],
     generated_headers: [
         "cronet_aml_components_cronet_cronet_buildflags",
-        "cronet_aml_components_cronet_cronet_version_header_action",
-        "cronet_aml_third_party_metrics_proto_metrics_proto_gen_headers",
+    ],
+    export_generated_headers: [
+        "cronet_aml_components_cronet_cronet_buildflags",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -8519,6 +8961,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -8547,7 +9010,7 @@
 }
 
 // GN: //components/cronet:cronet_common__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_cronet_cronet_common__testing",
     srcs: [
         "components/cronet/cronet_context.cc",
@@ -8567,15 +9030,74 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_components_cronet_cronet_version_header__testing",
+        "cronet_aml_components_metrics_library_support__testing",
         "cronet_aml_components_prefs_prefs__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -8587,8 +9109,9 @@
     ],
     generated_headers: [
         "cronet_aml_components_cronet_cronet_buildflags__testing",
-        "cronet_aml_components_cronet_cronet_version_header_action__testing",
-        "cronet_aml_third_party_metrics_proto_metrics_proto__testing_gen_headers",
+    ],
+    export_generated_headers: [
+        "cronet_aml_components_cronet_cronet_buildflags__testing",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -8636,6 +9159,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -8664,7 +9208,7 @@
 }
 
 // GN: //components/cronet:cronet_common_unittests__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_cronet_cronet_common_unittests__testing",
     srcs: [
         "components/cronet/host_cache_persistence_manager_unittest.cc",
@@ -8682,25 +9226,91 @@
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
         "cronet_aml_base_i18n__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_test_test_config__testing",
         "cronet_aml_base_test_test_support__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_components_cronet_cronet_common__testing",
+        "cronet_aml_components_cronet_cronet_version_header__testing",
+        "cronet_aml_components_metrics_library_support__testing",
         "cronet_aml_components_prefs_prefs__testing",
         "cronet_aml_components_prefs_test_support__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_dns_test_support__testing",
         "cronet_aml_net_gtest_util__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
+        "cronet_aml_net_quic_test_flags_utils__testing",
+        "cronet_aml_net_simple_quic_tools__testing",
         "cronet_aml_net_test_support__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
         "cronet_aml_net_third_party_quiche_quiche_tool_support__testing",
+        "cronet_aml_net_tools_tld_cleanup_tld_cleanup__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_ced_ced__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -8711,11 +9321,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite__testing",
         "cronet_aml_url_url__testing",
     ],
-    generated_headers: [
-        "cronet_aml_components_cronet_cronet_buildflags__testing",
-        "cronet_aml_components_cronet_cronet_version_header_action__testing",
-        "cronet_aml_third_party_metrics_proto_metrics_proto__testing_gen_headers",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -8782,6 +9387,181 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
+    target: {
+        android_arm: {
+            cflags: [
+                "-fstack-protector",
+            ],
+        },
+        android_arm64: {
+            cflags: [
+                "-fstack-protector",
+                "-mno-outline",
+                "-mno-outline-atomics",
+            ],
+        },
+        android_x86: {
+            cflags: [
+                "-msse3",
+            ],
+        },
+        android_x86_64: {
+            cflags: [
+                "-fstack-protector",
+                "-msse3",
+            ],
+        },
+    },
+}
+
+// GN: //components/cronet:cronet_version_header
+cc_library_static {
+    name: "cronet_aml_components_cronet_cronet_version_header",
+    generated_headers: [
+        "cronet_aml_components_cronet_cronet_version_header_action",
+    ],
+    export_generated_headers: [
+        "cronet_aml_components_cronet_cronet_version_header_action",
+    ],
+    defaults: [
+        "cronet_aml_defaults",
+    ],
+    cflags: [
+        "-DANDROID",
+        "-DANDROID_NDK_VERSION_ROLL=r23_1",
+        "-DCR_CLANG_REVISION=\"llvmorg-16-init-6578-g0d30e92f-2\"",
+        "-DCR_LIBCXX_REVISION=64d36e572d3f9719c5d75011a718f33f11126851",
+        "-DDYNAMIC_ANNOTATIONS_ENABLED=0",
+        "-DHAVE_SYS_UIO_H",
+        "-DNDEBUG",
+        "-DNO_UNWIND_TABLES",
+        "-DNVALGRIND",
+        "-DOFFICIAL_BUILD",
+        "-D_FORTIFY_SOURCE=2",
+        "-D_GNU_SOURCE",
+        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D__STDC_CONSTANT_MACROS",
+        "-D__STDC_FORMAT_MACROS",
+        "-Oz",
+        "-fdata-sections",
+        "-ffunction-sections",
+        "-fno-asynchronous-unwind-tables",
+        "-fno-unwind-tables",
+        "-fvisibility-inlines-hidden",
+        "-fvisibility=hidden",
+        "-g1",
+    ],
+    local_include_dirs: [
+        "./",
+        "buildtools/third_party/libc++/",
+        "buildtools/third_party/libc++/trunk/include",
+        "buildtools/third_party/libc++abi/trunk/include",
+    ],
+    cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
+    target: {
+        android_arm: {
+            cflags: [
+                "-fstack-protector",
+            ],
+        },
+        android_arm64: {
+            cflags: [
+                "-fstack-protector",
+                "-mno-outline",
+                "-mno-outline-atomics",
+            ],
+        },
+        android_x86: {
+            cflags: [
+                "-msse3",
+            ],
+        },
+        android_x86_64: {
+            cflags: [
+                "-fstack-protector",
+                "-msse3",
+            ],
+        },
+    },
+}
+
+// GN: //components/cronet:cronet_version_header__testing
+cc_library_static {
+    name: "cronet_aml_components_cronet_cronet_version_header__testing",
+    generated_headers: [
+        "cronet_aml_components_cronet_cronet_version_header_action__testing",
+    ],
+    export_generated_headers: [
+        "cronet_aml_components_cronet_cronet_version_header_action__testing",
+    ],
+    defaults: [
+        "cronet_aml_defaults",
+    ],
+    cflags: [
+        "-DANDROID",
+        "-DANDROID_NDK_VERSION_ROLL=r23_1",
+        "-DCR_CLANG_REVISION=\"llvmorg-16-init-6578-g0d30e92f-2\"",
+        "-DCR_LIBCXX_REVISION=64d36e572d3f9719c5d75011a718f33f11126851",
+        "-DDYNAMIC_ANNOTATIONS_ENABLED=0",
+        "-DHAVE_SYS_UIO_H",
+        "-DNDEBUG",
+        "-DNO_UNWIND_TABLES",
+        "-DNVALGRIND",
+        "-DOFFICIAL_BUILD",
+        "-D_FORTIFY_SOURCE=2",
+        "-D_GNU_SOURCE",
+        "-D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS",
+        "-D__STDC_CONSTANT_MACROS",
+        "-D__STDC_FORMAT_MACROS",
+        "-Oz",
+        "-fdata-sections",
+        "-ffunction-sections",
+        "-fno-asynchronous-unwind-tables",
+        "-fno-unwind-tables",
+        "-fvisibility-inlines-hidden",
+        "-fvisibility=hidden",
+        "-g1",
+    ],
+    local_include_dirs: [
+        "./",
+        "buildtools/third_party/libc++/",
+        "buildtools/third_party/libc++/trunk/include",
+        "buildtools/third_party/libc++abi/trunk/include",
+    ],
+    cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -8862,7 +9642,7 @@
 }
 
 // GN: //components/cronet:metrics_util
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_cronet_metrics_util",
     srcs: [
         "components/cronet/metrics_util.cc",
@@ -8875,9 +9655,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -8921,6 +9752,27 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -8949,7 +9801,7 @@
 }
 
 // GN: //components/cronet:metrics_util__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_cronet_metrics_util__testing",
     srcs: [
         "components/cronet/metrics_util.cc",
@@ -8962,9 +9814,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -9008,6 +9911,27 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -9036,7 +9960,7 @@
 }
 
 // GN: //components/metrics:library_support
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_metrics_library_support",
     srcs: [
         ":cronet_aml_third_party_metrics_proto_metrics_proto_gen",
@@ -9052,9 +9976,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -9064,6 +10039,9 @@
     generated_headers: [
         "cronet_aml_third_party_metrics_proto_metrics_proto_gen_headers",
     ],
+    export_generated_headers: [
+        "cronet_aml_third_party_metrics_proto_metrics_proto_gen_headers",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -9107,6 +10085,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -9135,7 +10134,7 @@
 }
 
 // GN: //components/metrics:library_support__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_components_metrics_library_support__testing",
     srcs: [
         ":cronet_aml_third_party_metrics_proto_metrics_proto__testing_gen",
@@ -9151,9 +10150,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -9163,6 +10213,9 @@
     generated_headers: [
         "cronet_aml_third_party_metrics_proto_metrics_proto__testing_gen_headers",
     ],
+    export_generated_headers: [
+        "cronet_aml_third_party_metrics_proto_metrics_proto__testing_gen_headers",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -9206,6 +10259,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -9333,9 +10407,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -9474,9 +10599,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -9585,55 +10761,6 @@
 cc_library_static {
     name: "cronet_aml_components_prefs_test_support__testing",
     srcs: [
-        ":cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
-        ":cronet_aml_third_party_googletest_gmock__testing",
-        ":cronet_aml_third_party_googletest_gtest__testing",
         "components/prefs/mock_pref_change_callback.cc",
         "components/prefs/pref_store_observer_mock.cc",
         "components/prefs/pref_test_utils.cc",
@@ -9650,14 +10777,67 @@
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
         "cronet_aml_base_i18n__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_test_test_config__testing",
         "cronet_aml_base_test_test_support__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_components_prefs_prefs__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_ced_ced__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -9666,12 +10846,6 @@
         "cronet_aml_third_party_libxml_xml_reader__testing",
         "cronet_aml_third_party_modp_b64_modp_b64__testing",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
-    export_generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -9856,9 +11030,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -9985,9 +11210,58 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -10048,6 +11322,10 @@
             ],
         },
         android_arm: {
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+                "cronet_aml_third_party_ashmem_ashmem__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -10074,6 +11352,10 @@
             ],
         },
         android_arm64: {
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+                "cronet_aml_third_party_ashmem_ashmem__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -10102,6 +11384,10 @@
             ],
         },
         android_x86: {
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+                "cronet_aml_third_party_ashmem_ashmem__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -10128,6 +11414,10 @@
             ],
         },
         android_x86_64: {
+            static_libs: [
+                "cronet_aml_third_party_android_ndk_cpu_features__testing",
+                "cronet_aml_third_party_ashmem_ashmem__testing",
+            ],
             cflags: [
                 "-DANDROID",
                 "-DANDROID_NDK_VERSION_ROLL=r23_1",
@@ -11094,7 +12384,7 @@
 }
 
 // GN: //net/dns:dns
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_dns_dns",
     srcs: [
         "net/dns/address_info.cc",
@@ -11144,13 +12434,68 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "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_dns_public_public",
+        "cronet_aml_net_net_deps",
+        "cronet_aml_net_net_public_deps",
         "cronet_aml_net_preload_decoder",
         "cronet_aml_net_third_party_quiche_quiche",
+        "cronet_aml_net_traffic_annotation_traffic_annotation",
         "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
         "cronet_aml_third_party_icu_icui18n",
@@ -11160,18 +12505,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite",
         "cronet_aml_url_url",
     ],
-    generated_headers: [
-        "cronet_aml_base_debugging_buildflags",
-        "cronet_aml_base_logging_buildflags",
-        "cronet_aml_build_chromeos_buildflags",
-        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains",
-        "cronet_aml_net_buildflags",
-        "cronet_aml_net_isolation_info_proto_gen_headers",
-        "cronet_aml_net_net_jni_headers",
-        "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",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -11221,6 +12554,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -11249,7 +12603,7 @@
 }
 
 // GN: //net/dns:dns__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_dns_dns__testing",
     srcs: [
         "net/dns/address_info.cc",
@@ -11299,13 +12653,68 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -11315,18 +12724,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite__testing",
         "cronet_aml_url_url__testing",
     ],
-    generated_headers: [
-        "cronet_aml_base_debugging_buildflags__testing",
-        "cronet_aml_base_logging_buildflags__testing",
-        "cronet_aml_build_chromeos_buildflags__testing",
-        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains__testing",
-        "cronet_aml_net_buildflags__testing",
-        "cronet_aml_net_isolation_info_proto__testing_gen_headers",
-        "cronet_aml_net_net_jni_headers__testing",
-        "cronet_aml_net_net_nqe_proto__testing_gen_headers",
-        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto__testing_gen_headers",
-        "cronet_aml_url_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -11376,6 +12773,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -11404,7 +12822,7 @@
 }
 
 // GN: //net/dns/public:public
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_dns_public_public",
     srcs: [
         "net/dns/public/dns_config_overrides.cc",
@@ -11425,13 +12843,67 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "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_net_deps",
+        "cronet_aml_net_net_public_deps",
         "cronet_aml_net_preload_decoder",
         "cronet_aml_net_third_party_quiche_quiche",
+        "cronet_aml_net_traffic_annotation_traffic_annotation",
         "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
         "cronet_aml_third_party_icu_icui18n",
@@ -11441,18 +12913,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite",
         "cronet_aml_url_url",
     ],
-    generated_headers: [
-        "cronet_aml_base_debugging_buildflags",
-        "cronet_aml_base_logging_buildflags",
-        "cronet_aml_build_chromeos_buildflags",
-        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains",
-        "cronet_aml_net_buildflags",
-        "cronet_aml_net_isolation_info_proto_gen_headers",
-        "cronet_aml_net_net_jni_headers",
-        "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",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -11502,6 +12962,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -11530,7 +13011,7 @@
 }
 
 // GN: //net/dns/public:public__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_dns_public_public__testing",
     srcs: [
         "net/dns/public/dns_config_overrides.cc",
@@ -11551,13 +13032,67 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -11567,18 +13102,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite__testing",
         "cronet_aml_url_url__testing",
     ],
-    generated_headers: [
-        "cronet_aml_base_debugging_buildflags__testing",
-        "cronet_aml_base_logging_buildflags__testing",
-        "cronet_aml_build_chromeos_buildflags__testing",
-        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains__testing",
-        "cronet_aml_net_buildflags__testing",
-        "cronet_aml_net_isolation_info_proto__testing_gen_headers",
-        "cronet_aml_net_net_jni_headers__testing",
-        "cronet_aml_net_net_nqe_proto__testing_gen_headers",
-        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto__testing_gen_headers",
-        "cronet_aml_url_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -11628,6 +13151,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -11656,7 +13200,7 @@
 }
 
 // GN: //net/dns:test_support__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_dns_test_support__testing",
     srcs: [
         "net/dns/dns_test_util.cc",
@@ -11672,17 +13216,76 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -11690,9 +13293,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite__testing",
         "cronet_aml_url_url__testing",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -11748,6 +13348,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -11798,55 +13419,6 @@
 cc_library_static {
     name: "cronet_aml_net_gtest_util__testing",
     srcs: [
-        ":cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
-        ":cronet_aml_third_party_googletest_gmock__testing",
-        ":cronet_aml_third_party_googletest_gtest__testing",
         "net/test/scoped_disable_exit_on_dfatal.cc",
     ],
     shared_libs: [
@@ -11859,20 +13431,79 @@
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
         "cronet_aml_base_i18n__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_test_test_config__testing",
         "cronet_aml_base_test_test_support__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_ced_ced__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -11883,12 +13514,6 @@
         "cronet_aml_third_party_protobuf_protobuf_lite__testing",
         "cronet_aml_url_url__testing",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
-    export_generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -12003,7 +13628,7 @@
 }
 
 // GN: //net/http:transport_security_state_generated_files
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_http_transport_security_state_generated_files",
     srcs: [
         "net/http/transport_security_state.cc",
@@ -12017,13 +13642,69 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "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_dns_dns",
+        "cronet_aml_net_dns_public_public",
+        "cronet_aml_net_net_deps",
+        "cronet_aml_net_net_public_deps",
         "cronet_aml_net_preload_decoder",
         "cronet_aml_net_third_party_quiche_quiche",
+        "cronet_aml_net_traffic_annotation_traffic_annotation",
         "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
         "cronet_aml_third_party_icu_icui18n",
@@ -12034,17 +13715,10 @@
         "cronet_aml_url_url",
     ],
     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_isolation_info_proto_gen_headers",
-        "cronet_aml_net_net_jni_headers",
-        "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: [
+        "cronet_aml_build_branding_buildflags",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -12095,6 +13769,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -12123,7 +13818,7 @@
 }
 
 // GN: //net/http:transport_security_state_generated_files__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_http_transport_security_state_generated_files__testing",
     srcs: [
         "net/http/transport_security_state.cc",
@@ -12137,13 +13832,69 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -12154,17 +13905,10 @@
         "cronet_aml_url_url__testing",
     ],
     generated_headers: [
-        "cronet_aml_base_debugging_buildflags__testing",
-        "cronet_aml_base_logging_buildflags__testing",
         "cronet_aml_build_branding_buildflags__testing",
-        "cronet_aml_build_chromeos_buildflags__testing",
-        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains__testing",
-        "cronet_aml_net_buildflags__testing",
-        "cronet_aml_net_isolation_info_proto__testing_gen_headers",
-        "cronet_aml_net_net_jni_headers__testing",
-        "cronet_aml_net_net_nqe_proto__testing_gen_headers",
-        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto__testing_gen_headers",
-        "cronet_aml_url_buildflags__testing",
+    ],
+    export_generated_headers: [
+        "cronet_aml_build_branding_buildflags__testing",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -12215,6 +13959,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -12399,12 +14164,6 @@
 cc_library_static {
     name: "cronet_aml_net_net",
     srcs: [
-        ":cronet_aml_net_dns_dns",
-        ":cronet_aml_net_dns_public_public",
-        ":cronet_aml_net_http_transport_security_state_generated_files",
-        ":cronet_aml_net_net_deps",
-        ":cronet_aml_net_net_public_deps",
-        ":cronet_aml_net_traffic_annotation_traffic_annotation",
         "net/android/android_http_util.cc",
         "net/android/cert_verify_result_android.cc",
         "net/android/gurl_utils.cc",
@@ -12897,13 +14656,70 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "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_dns_dns",
+        "cronet_aml_net_dns_public_public",
+        "cronet_aml_net_http_transport_security_state_generated_files",
+        "cronet_aml_net_net_deps",
+        "cronet_aml_net_net_public_deps",
         "cronet_aml_net_preload_decoder",
         "cronet_aml_net_third_party_quiche_quiche",
+        "cronet_aml_net_traffic_annotation_traffic_annotation",
         "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
         "cronet_aml_third_party_icu_icui18n",
@@ -12914,32 +14730,12 @@
         "cronet_aml_url_url",
     ],
     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_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: [
-        "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_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",
@@ -13058,12 +14854,6 @@
 cc_library_static {
     name: "cronet_aml_net_net__testing",
     srcs: [
-        ":cronet_aml_net_dns_dns__testing",
-        ":cronet_aml_net_dns_public_public__testing",
-        ":cronet_aml_net_http_transport_security_state_generated_files__testing",
-        ":cronet_aml_net_net_deps__testing",
-        ":cronet_aml_net_net_public_deps__testing",
-        ":cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "net/android/android_http_util.cc",
         "net/android/cert_verify_result_android.cc",
         "net/android/gurl_utils.cc",
@@ -13556,13 +15346,70 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -13573,32 +15420,12 @@
         "cronet_aml_url_url__testing",
     ],
     generated_headers: [
-        "cronet_aml_base_debugging_buildflags__testing",
-        "cronet_aml_base_logging_buildflags__testing",
-        "cronet_aml_build_branding_buildflags__testing",
         "cronet_aml_build_chromeos_buildflags__testing",
-        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains__testing",
-        "cronet_aml_net_buildflags__testing",
         "cronet_aml_net_ios_cronet_buildflags__testing",
-        "cronet_aml_net_isolation_info_proto__testing_gen_headers",
-        "cronet_aml_net_net_jni_headers__testing",
-        "cronet_aml_net_net_nqe_proto__testing_gen_headers",
-        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto__testing_gen_headers",
-        "cronet_aml_url_buildflags__testing",
     ],
     export_generated_headers: [
-        "cronet_aml_base_debugging_buildflags__testing",
-        "cronet_aml_base_logging_buildflags__testing",
-        "cronet_aml_build_branding_buildflags__testing",
         "cronet_aml_build_chromeos_buildflags__testing",
-        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains__testing",
-        "cronet_aml_net_buildflags__testing",
         "cronet_aml_net_ios_cronet_buildflags__testing",
-        "cronet_aml_net_isolation_info_proto__testing_gen_headers",
-        "cronet_aml_net_net_jni_headers__testing",
-        "cronet_aml_net_net_nqe_proto__testing_gen_headers",
-        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto__testing_gen_headers",
-        "cronet_aml_url_buildflags__testing",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -13710,7 +15537,7 @@
 }
 
 // GN: //net:net_deps
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_net_deps",
     srcs: [
         ":cronet_aml_net_isolation_info_proto_gen",
@@ -13725,10 +15552,61 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
         "cronet_aml_net_preload_decoder",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_brotli_common",
         "cronet_aml_third_party_brotli_dec",
         "cronet_aml_third_party_icu_icui18n",
@@ -13746,6 +15624,15 @@
         "cronet_aml_net_net_jni_headers",
         "cronet_aml_url_buildflags",
     ],
+    export_generated_headers: [
+        "cronet_aml_base_debugging_buildflags",
+        "cronet_aml_base_logging_buildflags",
+        "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains",
+        "cronet_aml_net_isolation_info_proto_gen_headers",
+        "cronet_aml_net_net_jni_headers",
+        "cronet_aml_url_buildflags",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -13792,6 +15679,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -13820,7 +15728,7 @@
 }
 
 // GN: //net:net_deps__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_net_deps__testing",
     srcs: [
         ":cronet_aml_net_isolation_info_proto__testing_gen",
@@ -13835,10 +15743,61 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_net_preload_decoder__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -13856,6 +15815,15 @@
         "cronet_aml_net_net_jni_headers__testing",
         "cronet_aml_url_buildflags__testing",
     ],
+    export_generated_headers: [
+        "cronet_aml_base_debugging_buildflags__testing",
+        "cronet_aml_base_logging_buildflags__testing",
+        "cronet_aml_build_chromeos_buildflags__testing",
+        "cronet_aml_net_base_registry_controlled_domains_registry_controlled_domains__testing",
+        "cronet_aml_net_isolation_info_proto__testing_gen_headers",
+        "cronet_aml_net_net_jni_headers__testing",
+        "cronet_aml_url_buildflags__testing",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -13902,6 +15870,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -14222,7 +16211,7 @@
 }
 
 // GN: //net:net_public_deps
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_net_public_deps",
     srcs: [
         ":cronet_aml_net_net_nqe_proto_gen",
@@ -14238,12 +16227,64 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "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_third_party_quiche_quiche",
+        "cronet_aml_net_traffic_annotation_traffic_annotation",
         "cronet_aml_net_uri_template",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -14252,7 +16293,11 @@
         "cronet_aml_url_url",
     ],
     generated_headers: [
-        "cronet_aml_build_chromeos_buildflags",
+        "cronet_aml_net_buildflags",
+        "cronet_aml_net_net_nqe_proto_gen_headers",
+        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen_headers",
+    ],
+    export_generated_headers: [
         "cronet_aml_net_buildflags",
         "cronet_aml_net_net_nqe_proto_gen_headers",
         "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto_gen_headers",
@@ -14303,6 +16348,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -14331,7 +16397,7 @@
 }
 
 // GN: //net:net_public_deps__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_net_public_deps__testing",
     srcs: [
         ":cronet_aml_net_net_nqe_proto__testing_gen",
@@ -14347,12 +16413,64 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -14361,7 +16479,11 @@
         "cronet_aml_url_url__testing",
     ],
     generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
+        "cronet_aml_net_buildflags__testing",
+        "cronet_aml_net_net_nqe_proto__testing_gen_headers",
+        "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto__testing_gen_headers",
+    ],
+    export_generated_headers: [
         "cronet_aml_net_buildflags__testing",
         "cronet_aml_net_net_nqe_proto__testing_gen_headers",
         "cronet_aml_net_third_party_quiche_net_quic_test_tools_proto__testing_gen_headers",
@@ -14412,6 +16534,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -14453,9 +16596,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -14561,9 +16755,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -14656,7 +16901,7 @@
 }
 
 // GN: //net:quic_test_flags_utils__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_quic_test_flags_utils__testing",
     srcs: [
         "net/quic/platform/impl/quic_test_flags_utils.cc",
@@ -14670,14 +16915,71 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -14733,6 +17035,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -14761,7 +17084,7 @@
 }
 
 // GN: //net:simple_quic_tools__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_simple_quic_tools__testing",
     srcs: [
         "net/tools/quic/quic_client_message_loop_network_helper.cc",
@@ -14781,15 +17104,72 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
         "cronet_aml_net_third_party_quiche_quiche_tool_support__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -14845,6 +17225,27 @@
         "third_party/protobuf/src/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -14876,60 +17277,6 @@
 cc_library_static {
     name: "cronet_aml_net_test_support__testing",
     srcs: [
-        ":cronet_aml_net_dns_test_support__testing",
-        ":cronet_aml_net_quic_test_flags_utils__testing",
-        ":cronet_aml_net_simple_quic_tools__testing",
-        ":cronet_aml_net_tools_tld_cleanup_tld_cleanup__testing",
-        ":cronet_aml_net_traffic_annotation_traffic_annotation__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
-        ":cronet_aml_third_party_googletest_gmock__testing",
-        ":cronet_aml_third_party_googletest_gtest__testing",
         "net/base/connection_endpoint_metadata_test_util.cc",
         "net/base/load_timing_info_test_util.cc",
         "net/base/mock_file_stream.cc",
@@ -15016,22 +17363,85 @@
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
         "cronet_aml_base_i18n__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_test_test_config__testing",
         "cronet_aml_base_test_test_support__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_dns_test_support__testing",
         "cronet_aml_net_gtest_util__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
+        "cronet_aml_net_quic_test_flags_utils__testing",
+        "cronet_aml_net_simple_quic_tools__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
         "cronet_aml_net_third_party_quiche_quiche_tool_support__testing",
+        "cronet_aml_net_tools_tld_cleanup_tld_cleanup__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_ced_ced__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -15043,11 +17453,9 @@
         "cronet_aml_url_url__testing",
     ],
     generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
         "cronet_aml_net_http_transport_security_state_unittest_data_default__testing",
     ],
     export_generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
         "cronet_aml_net_http_transport_security_state_unittest_data_default__testing",
     ],
     defaults: [
@@ -15349,53 +17757,6 @@
     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_base_base",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
         "net/third_party/quiche/overrides/quiche_platform_impl/quiche_mutex_impl.cc",
         "net/third_party/quiche/overrides/quiche_platform_impl/quiche_time_utils_impl.cc",
         "net/third_party/quiche/overrides/quiche_platform_impl/quiche_url_utils_impl.cc",
@@ -15687,10 +18048,61 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "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_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -15699,11 +18111,9 @@
         "cronet_aml_url_url",
     ],
     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: [
@@ -15806,53 +18216,6 @@
     name: "cronet_aml_net_third_party_quiche_quiche__testing",
     srcs: [
         ":cronet_aml_net_third_party_quiche_net_quic_proto__testing_gen",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
         "net/third_party/quiche/overrides/quiche_platform_impl/quiche_mutex_impl.cc",
         "net/third_party/quiche/overrides/quiche_platform_impl/quiche_time_utils_impl.cc",
         "net/third_party/quiche/overrides/quiche_platform_impl/quiche_url_utils_impl.cc",
@@ -16144,10 +18507,61 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -16156,11 +18570,9 @@
         "cronet_aml_url_url__testing",
     ],
     generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
         "cronet_aml_net_third_party_quiche_net_quic_proto__testing_gen_headers",
     ],
     export_generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
         "cronet_aml_net_third_party_quiche_net_quic_proto__testing_gen_headers",
     ],
     defaults: [
@@ -16296,14 +18708,71 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_dns_dns__testing",
+        "cronet_aml_net_dns_public_public__testing",
+        "cronet_aml_net_http_transport_security_state_generated_files__testing",
         "cronet_aml_net_net__testing",
+        "cronet_aml_net_net_deps__testing",
+        "cronet_aml_net_net_public_deps__testing",
         "cronet_aml_net_preload_decoder__testing",
         "cronet_aml_net_third_party_quiche_quiche__testing",
+        "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
         "cronet_aml_net_uri_template__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_brotli_common__testing",
         "cronet_aml_third_party_brotli_dec__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
@@ -16408,7 +18877,7 @@
 }
 
 // GN: //net/tools/huffman_trie:huffman_trie_generator_sources__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_tools_huffman_trie_huffman_trie_generator_sources__testing",
     srcs: [
         "net/tools/huffman_trie/bit_writer.cc",
@@ -16421,9 +18890,58 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -16475,10 +18993,15 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++20",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
 }
 
 // GN: //net/tools/tld_cleanup:tld_cleanup__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_tools_tld_cleanup_tld_cleanup__testing",
     srcs: [
         "net/tools/tld_cleanup/tld_cleanup_util.cc",
@@ -16491,9 +19014,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -16538,6 +19112,27 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -16569,20 +19164,69 @@
 cc_binary {
     name: "cronet_aml_net_tools_transport_security_state_generator_transport_security_state_generator__testing",
     srcs: [
-        ":cronet_aml_buildtools_third_party_libc___libc____testing",
-        ":cronet_aml_buildtools_third_party_libc__abi_libc__abi__testing",
-        ":cronet_aml_net_tools_huffman_trie_huffman_trie_generator_sources__testing",
-        ":cronet_aml_net_tools_transport_security_state_generator_transport_security_state_generator_sources__testing",
         "net/tools/transport_security_state_generator/transport_security_state_generator.cc",
     ],
     static_libs: [
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_buildtools_third_party_libc___libc____testing",
+        "cronet_aml_buildtools_third_party_libc__abi_libc__abi__testing",
         "cronet_aml_crypto_crypto__testing",
+        "cronet_aml_net_tools_huffman_trie_huffman_trie_generator_sources__testing",
+        "cronet_aml_net_tools_transport_security_state_generator_transport_security_state_generator_sources__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -16642,7 +19286,7 @@
 }
 
 // GN: //net/tools/transport_security_state_generator:transport_security_state_generator_sources__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_tools_transport_security_state_generator_transport_security_state_generator_sources__testing",
     srcs: [
         "net/tools/transport_security_state_generator/cert_util.cc",
@@ -16657,9 +19301,59 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_net_tools_huffman_trie_huffman_trie_generator_sources__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -16711,10 +19405,15 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++20",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
 }
 
 // GN: //net/traffic_annotation:traffic_annotation
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_traffic_annotation_traffic_annotation",
     srcs: [
         "net/traffic_annotation/network_traffic_annotation_android.cc",
@@ -16727,9 +19426,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -16738,6 +19488,9 @@
     generated_headers: [
         "cronet_aml_build_chromeos_buildflags",
     ],
+    export_generated_headers: [
+        "cronet_aml_build_chromeos_buildflags",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -16776,6 +19529,27 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -16804,7 +19578,7 @@
 }
 
 // GN: //net/traffic_annotation:traffic_annotation__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_net_traffic_annotation_traffic_annotation__testing",
     srcs: [
         "net/traffic_annotation/network_traffic_annotation_android.cc",
@@ -16817,9 +19591,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -16828,6 +19653,9 @@
     generated_headers: [
         "cronet_aml_build_chromeos_buildflags__testing",
     ],
+    export_generated_headers: [
+        "cronet_aml_build_chromeos_buildflags__testing",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -16866,6 +19694,27 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -16907,9 +19756,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -17016,9 +19916,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -17150,7 +20101,7 @@
 }
 
 // GN: //testing/android/native_test:native_test_native_code__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_testing_android_native_test_native_test_native_code__testing",
     srcs: [
         "testing/android/native_test/native_test_jni_onload.cc",
@@ -17165,13 +20116,67 @@
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
         "cronet_aml_base_i18n__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_test_test_config__testing",
         "cronet_aml_base_test_test_support__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_testing_android_native_test_native_test_support__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_ced_ced__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -17180,12 +20185,6 @@
         "cronet_aml_third_party_libxml_xml_reader__testing",
         "cronet_aml_third_party_modp_b64_modp_b64__testing",
     ],
-    generated_headers: [
-        "cronet_aml_base_debugging_buildflags__testing",
-        "cronet_aml_base_logging_buildflags__testing",
-        "cronet_aml_build_chromeos_buildflags__testing",
-        "cronet_aml_testing_android_native_test_native_test_jni_headers__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -17224,6 +20223,27 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -17252,7 +20272,7 @@
 }
 
 // GN: //testing/android/native_test:native_test_support__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_testing_android_native_test_native_test_support__testing",
     srcs: [
         "testing/android/native_test/main_runner.cc",
@@ -17269,13 +20289,66 @@
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
         "cronet_aml_base_i18n__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_test_test_config__testing",
         "cronet_aml_base_test_test_support__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
         "cronet_aml_testing_gtest_gtest__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_ced_ced__testing",
+        "cronet_aml_third_party_googletest_gmock__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
@@ -17290,6 +20363,12 @@
         "cronet_aml_build_chromeos_buildflags__testing",
         "cronet_aml_testing_android_native_test_native_test_jni_headers__testing",
     ],
+    export_generated_headers: [
+        "cronet_aml_base_debugging_buildflags__testing",
+        "cronet_aml_base_logging_buildflags__testing",
+        "cronet_aml_build_chromeos_buildflags__testing",
+        "cronet_aml_testing_android_native_test_native_test_jni_headers__testing",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -17347,6 +20426,27 @@
         "third_party/icu/source/i18n/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -17378,54 +20478,6 @@
 cc_library_static {
     name: "cronet_aml_testing_gtest_gtest__testing",
     srcs: [
-        ":cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
-        ":cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
-        ":cronet_aml_third_party_googletest_gtest__testing",
         "testing/gtest/empty.cc",
         "testing/multiprocess_func_list.cc",
     ],
@@ -17437,20 +20489,66 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
         "cronet_aml_third_party_modp_b64_modp_b64__testing",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
-    export_generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -17545,7 +20643,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:base
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_base",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/cycleclock.cc",
@@ -17554,6 +20652,11 @@
         "third_party/abseil-cpp/absl/base/internal/thread_identity.cc",
         "third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -17589,6 +20692,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -17617,7 +20725,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:base__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/cycleclock.cc",
@@ -17626,6 +20734,11 @@
         "third_party/abseil-cpp/absl/base/internal/thread_identity.cc",
         "third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -17657,6 +20770,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -17716,7 +20834,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:log_severity
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
     srcs: [
         "third_party/abseil-cpp/absl/base/log_severity.cc",
@@ -17756,6 +20874,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -17784,7 +20907,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:log_severity__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
     srcs: [
         "third_party/abseil-cpp/absl/base/log_severity.cc",
@@ -17820,6 +20943,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -17879,11 +21007,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:malloc_internal
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -17919,6 +21053,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -17947,11 +21086,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:malloc_internal__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -17983,6 +21128,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18042,11 +21192,14 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:raw_logging_internal
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/raw_logging.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -18082,6 +21235,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18110,11 +21268,14 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:raw_logging_internal__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/raw_logging.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -18146,6 +21307,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18205,7 +21371,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:spinlock_wait
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc",
@@ -18245,6 +21411,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18273,7 +21444,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:spinlock_wait__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc",
@@ -18309,6 +21480,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18368,7 +21544,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:strerror
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/strerror.cc",
@@ -18408,6 +21584,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18436,7 +21617,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:strerror__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/strerror.cc",
@@ -18472,6 +21653,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18531,11 +21717,15 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:throw_delegate
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/throw_delegate.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -18571,6 +21761,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18599,11 +21794,15 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/base:throw_delegate__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
     srcs: [
         "third_party/abseil-cpp/absl/base/internal/throw_delegate.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -18635,6 +21834,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18694,12 +21898,33 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/container:hashtablez_sampler
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
     srcs: [
         "third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc",
         "third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -18735,6 +21960,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18763,12 +21993,33 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/container:hashtablez_sampler__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
     srcs: [
         "third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc",
         "third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -18800,6 +22051,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18859,11 +22115,34 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/container:raw_hash_set
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
     srcs: [
         "third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -18899,6 +22178,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -18927,11 +22211,34 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/container:raw_hash_set__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
     srcs: [
         "third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -18963,6 +22270,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19022,13 +22334,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:debugging_internal
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc",
         "third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc",
         "third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -19064,6 +22380,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19092,13 +22413,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:debugging_internal__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc",
         "third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc",
         "third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -19130,6 +22455,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19189,11 +22519,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:demangle_internal
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/internal/demangle.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -19229,6 +22565,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19257,11 +22598,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:demangle_internal__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/internal/demangle.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -19293,6 +22640,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19352,11 +22704,26 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:examine_stack
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -19392,6 +22759,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19420,11 +22792,26 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:examine_stack__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/internal/examine_stack.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -19456,6 +22843,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19515,11 +22907,27 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:failure_signal_handler
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -19555,6 +22963,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19583,11 +22996,27 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:failure_signal_handler__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/failure_signal_handler.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -19619,6 +23048,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19678,11 +23112,16 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:stacktrace
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/stacktrace.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -19718,6 +23157,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19746,11 +23190,16 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:stacktrace__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/stacktrace.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -19782,6 +23231,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19841,11 +23295,24 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:symbolize
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/symbolize.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -19881,6 +23348,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -19909,11 +23381,24 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/debugging:symbolize__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
     srcs: [
         "third_party/abseil-cpp/absl/debugging/symbolize.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -19945,6 +23430,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20004,11 +23494,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/hash:city
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_hash_city",
     srcs: [
         "third_party/abseil-cpp/absl/hash/internal/city.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -20044,6 +23540,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20072,11 +23573,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/hash:city__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
     srcs: [
         "third_party/abseil-cpp/absl/hash/internal/city.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -20108,6 +23615,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20167,11 +23679,25 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/hash:hash
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
     srcs: [
         "third_party/abseil-cpp/absl/hash/internal/hash.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -20207,6 +23733,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20235,11 +23766,25 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/hash:hash__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
     srcs: [
         "third_party/abseil-cpp/absl/hash/internal/hash.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -20271,6 +23816,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20330,11 +23880,18 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/hash:low_level_hash
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
     srcs: [
         "third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -20370,6 +23927,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20398,11 +23960,18 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/hash:low_level_hash__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
     srcs: [
         "third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -20434,6 +24003,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20493,7 +24067,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/numeric:int128
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
     srcs: [
         "third_party/abseil-cpp/absl/numeric/int128.cc",
@@ -20533,6 +24107,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20561,7 +24140,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/numeric:int128__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
     srcs: [
         "third_party/abseil-cpp/absl/numeric/int128.cc",
@@ -20597,6 +24176,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20656,7 +24240,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/profiling:exponential_biased
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
     srcs: [
         "third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc",
@@ -20696,6 +24280,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20724,7 +24313,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/profiling:exponential_biased__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
     srcs: [
         "third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc",
@@ -20760,6 +24349,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20819,12 +24413,22 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random:distributions
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
     srcs: [
         "third_party/abseil-cpp/absl/random/discrete_distribution.cc",
         "third_party/abseil-cpp/absl/random/gaussian_distribution.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -20860,6 +24464,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20888,12 +24497,22 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random:distributions__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/discrete_distribution.cc",
         "third_party/abseil-cpp/absl/random/gaussian_distribution.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -20925,6 +24544,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -20984,7 +24608,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:platform
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc",
@@ -20992,6 +24616,9 @@
     generated_headers: [
         "cronet_aml_build_chromeos_buildflags",
     ],
+    export_generated_headers: [
+        "cronet_aml_build_chromeos_buildflags",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -21027,6 +24654,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21055,7 +24687,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:platform__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc",
@@ -21064,6 +24696,9 @@
     generated_headers: [
         "cronet_aml_build_chromeos_buildflags__testing",
     ],
+    export_generated_headers: [
+        "cronet_aml_build_chromeos_buildflags__testing",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -21094,6 +24729,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21153,13 +24793,28 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:pool_urbg
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/pool_urbg.cc",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -21196,6 +24851,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21224,15 +24884,30 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:pool_urbg__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/pool_urbg.cc",
     ],
-    host_supported: true,
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
     ],
+    host_supported: true,
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -21263,6 +24938,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21322,13 +25002,21 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:randen
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen.cc",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -21365,6 +25053,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21393,15 +25086,23 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:randen__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen.cc",
     ],
-    host_supported: true,
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
     ],
+    host_supported: true,
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -21432,6 +25133,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21491,13 +25197,15 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:randen_hwaes
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen_detect.cc",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -21534,6 +25242,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21562,15 +25275,17 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:randen_hwaes__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen_detect.cc",
     ],
-    host_supported: true,
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
     ],
+    host_supported: true,
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -21601,6 +25316,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21660,13 +25380,14 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:randen_hwaes_impl
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -21703,6 +25424,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21731,15 +25457,16 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:randen_hwaes_impl__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc",
     ],
-    host_supported: true,
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
     ],
+    host_supported: true,
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -21770,6 +25497,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21829,13 +25561,18 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:randen_slow
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen_slow.cc",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -21872,6 +25609,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21900,15 +25642,20 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:randen_slow__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/randen_slow.cc",
     ],
-    host_supported: true,
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
     ],
+    host_supported: true,
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -21939,6 +25686,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -21998,11 +25750,22 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:seed_material
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/seed_material.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -22038,6 +25801,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22066,11 +25834,22 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random/internal:seed_material__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/internal/seed_material.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -22102,6 +25881,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22161,7 +25945,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random:seed_gen_exception
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
     srcs: [
         "third_party/abseil-cpp/absl/random/seed_gen_exception.cc",
@@ -22201,6 +25985,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22229,7 +26018,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random:seed_gen_exception__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/seed_gen_exception.cc",
@@ -22265,6 +26054,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22324,13 +26118,29 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random:seed_sequences
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
     srcs: [
         "third_party/abseil-cpp/absl/random/seed_sequences.cc",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
     ],
     defaults: [
         "cronet_aml_defaults",
@@ -22367,6 +26177,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22395,15 +26210,31 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/random:seed_sequences__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
     srcs: [
         "third_party/abseil-cpp/absl/random/seed_sequences.cc",
     ],
-    host_supported: true,
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
     ],
+    host_supported: true,
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -22434,6 +26265,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22493,12 +26329,41 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/status:status
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_status_status",
     srcs: [
         "third_party/abseil-cpp/absl/status/status.cc",
         "third_party/abseil-cpp/absl/status/status_payload_printer.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -22534,6 +26399,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22562,12 +26432,41 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/status:status__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
     srcs: [
         "third_party/abseil-cpp/absl/status/status.cc",
         "third_party/abseil-cpp/absl/status/status_payload_printer.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -22599,6 +26498,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22658,11 +26562,42 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/status:statusor
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
     srcs: [
         "third_party/abseil-cpp/absl/status/statusor.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -22698,6 +26633,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22726,11 +26666,42 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/status:statusor__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
     srcs: [
         "third_party/abseil-cpp/absl/status/statusor.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -22762,6 +26733,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22821,13 +26797,40 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cord
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
     srcs: [
         "third_party/abseil-cpp/absl/strings/cord.cc",
         "third_party/abseil-cpp/absl/strings/cord_analysis.cc",
         "third_party/abseil-cpp/absl/strings/cord_buffer.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -22863,6 +26866,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22891,13 +26899,40 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cord__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
     srcs: [
         "third_party/abseil-cpp/absl/strings/cord.cc",
         "third_party/abseil-cpp/absl/strings/cord_analysis.cc",
         "third_party/abseil-cpp/absl/strings/cord_buffer.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -22929,6 +26964,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -22988,7 +27028,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cord_internal
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/cord_internal.cc",
@@ -22999,6 +27039,16 @@
         "third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc",
         "third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -23034,6 +27084,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23062,7 +27117,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cord_internal__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/cord_internal.cc",
@@ -23073,6 +27128,16 @@
         "third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc",
         "third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -23104,6 +27169,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23163,11 +27233,16 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cordz_functions
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -23203,6 +27278,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23231,11 +27311,16 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cordz_functions__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -23267,6 +27352,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23326,11 +27416,31 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cordz_handle
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -23366,6 +27476,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23394,11 +27509,31 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cordz_handle__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -23430,6 +27565,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23489,11 +27629,35 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cordz_info
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/cordz_info.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -23529,6 +27693,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23557,11 +27726,35 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:cordz_info__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/cordz_info.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -23593,6 +27786,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23652,13 +27850,19 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:internal
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/escaping.cc",
         "third_party/abseil-cpp/absl/strings/internal/ostringstream.cc",
         "third_party/abseil-cpp/absl/strings/internal/utf8.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -23694,6 +27898,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23722,13 +27931,19 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:internal__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/escaping.cc",
         "third_party/abseil-cpp/absl/strings/internal/ostringstream.cc",
         "third_party/abseil-cpp/absl/strings/internal/utf8.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -23760,6 +27975,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23819,7 +28039,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:str_format_internal
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc",
@@ -23829,6 +28049,17 @@
         "third_party/abseil-cpp/absl/strings/internal/str_format/output.cc",
         "third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -23864,6 +28095,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23892,7 +28128,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:str_format_internal__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
     srcs: [
         "third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc",
@@ -23902,6 +28138,17 @@
         "third_party/abseil-cpp/absl/strings/internal/str_format/output.cc",
         "third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -23933,6 +28180,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -23992,7 +28244,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:strings
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
     srcs: [
         "third_party/abseil-cpp/absl/strings/ascii.cc",
@@ -24009,6 +28261,15 @@
         "third_party/abseil-cpp/absl/strings/string_view.cc",
         "third_party/abseil-cpp/absl/strings/substitute.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -24044,6 +28305,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24072,7 +28338,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/strings:strings__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
     srcs: [
         "third_party/abseil-cpp/absl/strings/ascii.cc",
@@ -24089,6 +28355,15 @@
         "third_party/abseil-cpp/absl/strings/string_view.cc",
         "third_party/abseil-cpp/absl/strings/substitute.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -24120,6 +28395,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24179,11 +28459,18 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/synchronization:graphcycles_internal
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
     srcs: [
         "third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -24219,6 +28506,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24247,11 +28539,18 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/synchronization:graphcycles_internal__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
     srcs: [
         "third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -24283,6 +28582,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24342,7 +28646,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/synchronization:synchronization
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
     srcs: [
         "third_party/abseil-cpp/absl/synchronization/barrier.cc",
@@ -24353,6 +28657,25 @@
         "third_party/abseil-cpp/absl/synchronization/mutex.cc",
         "third_party/abseil-cpp/absl/synchronization/notification.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -24388,6 +28711,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24416,7 +28744,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/synchronization:synchronization__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
     srcs: [
         "third_party/abseil-cpp/absl/synchronization/barrier.cc",
@@ -24427,6 +28755,25 @@
         "third_party/abseil-cpp/absl/synchronization/mutex.cc",
         "third_party/abseil-cpp/absl/synchronization/notification.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -24458,6 +28805,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24517,7 +28869,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/time/internal/cctz:civil_time
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
     srcs: [
         "third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc",
@@ -24557,6 +28909,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24585,7 +28942,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/time/internal/cctz:civil_time__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
     srcs: [
         "third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc",
@@ -24621,6 +28978,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24680,7 +29042,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/time/internal/cctz:time_zone
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
     srcs: [
         "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc",
@@ -24693,6 +29055,9 @@
         "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc",
         "third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -24728,6 +29093,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24756,7 +29126,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/time/internal/cctz:time_zone__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
     srcs: [
         "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc",
@@ -24769,6 +29139,9 @@
         "third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc",
         "third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -24800,6 +29173,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24859,7 +29237,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/time:time
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_time_time",
     srcs: [
         "third_party/abseil-cpp/absl/time/civil_time.cc",
@@ -24868,6 +29246,18 @@
         "third_party/abseil-cpp/absl/time/format.cc",
         "third_party/abseil-cpp/absl/time/time.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -24903,6 +29293,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -24931,7 +29326,7 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/time:time__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
     srcs: [
         "third_party/abseil-cpp/absl/time/civil_time.cc",
@@ -24940,6 +29335,18 @@
         "third_party/abseil-cpp/absl/time/format.cc",
         "third_party/abseil-cpp/absl/time/time.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -24971,6 +29378,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25030,11 +29442,15 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/types:bad_optional_access
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
     srcs: [
         "third_party/abseil-cpp/absl/types/bad_optional_access.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -25070,6 +29486,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25098,11 +29519,15 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/types:bad_optional_access__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
     srcs: [
         "third_party/abseil-cpp/absl/types/bad_optional_access.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -25134,6 +29559,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25193,11 +29623,15 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/types:bad_variant_access
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
     srcs: [
         "third_party/abseil-cpp/absl/types/bad_variant_access.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -25233,6 +29667,11 @@
         "third_party/abseil-cpp/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25261,11 +29700,15 @@
 }
 
 // GN: //third_party/abseil-cpp/absl/types:bad_variant_access__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
     srcs: [
         "third_party/abseil-cpp/absl/types/bad_variant_access.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -25297,6 +29740,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/abseil-cpp/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25356,7 +29804,7 @@
 }
 
 // GN: //third_party/android_ndk:cpu_features
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_android_ndk_cpu_features",
     srcs: [
         "third_party/android_ndk/sources/android/cpufeatures/cpu-features.c",
@@ -25395,6 +29843,11 @@
         "third_party/android_ndk/sources/android/cpufeatures/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25423,7 +29876,7 @@
 }
 
 // GN: //third_party/android_ndk:cpu_features__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_android_ndk_cpu_features__testing",
     srcs: [
         "third_party/android_ndk/sources/android/cpufeatures/cpu-features.c",
@@ -25462,6 +29915,11 @@
         "third_party/android_ndk/sources/android/cpufeatures/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25490,7 +29948,7 @@
 }
 
 // GN: //third_party/ashmem:ashmem
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_ashmem_ashmem",
     srcs: [
         "third_party/ashmem/ashmem-dev.c",
@@ -25531,6 +29989,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25559,7 +30022,7 @@
 }
 
 // GN: //third_party/ashmem:ashmem__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_ashmem_ashmem__testing",
     srcs: [
         "third_party/ashmem/ashmem-dev.c",
@@ -25600,6 +30063,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -25631,7 +30099,6 @@
 cc_library_static {
     name: "cronet_aml_third_party_boringssl_boringssl",
     srcs: [
-        ":cronet_aml_third_party_boringssl_boringssl_asm",
         "third_party/boringssl/err_data.c",
         "third_party/boringssl/src/crypto/asn1/a_bitstr.c",
         "third_party/boringssl/src/crypto/asn1/a_bool.c",
@@ -25899,6 +30366,9 @@
         "third_party/boringssl/src/ssl/tls_method.cc",
         "third_party/boringssl/src/ssl/tls_record.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_boringssl_boringssl_asm",
+    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -25973,7 +30443,6 @@
 cc_library_static {
     name: "cronet_aml_third_party_boringssl_boringssl__testing",
     srcs: [
-        ":cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "third_party/boringssl/err_data.c",
         "third_party/boringssl/src/crypto/asn1/a_bitstr.c",
         "third_party/boringssl/src/crypto/asn1/a_bool.c",
@@ -26241,6 +30710,9 @@
         "third_party/boringssl/src/ssl/tls_method.cc",
         "third_party/boringssl/src/ssl/tls_record.cc",
     ],
+    static_libs: [
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
+    ],
     host_supported: true,
     defaults: [
         "cronet_aml_defaults",
@@ -26339,7 +30811,7 @@
 }
 
 // GN: //third_party/boringssl:boringssl_asm
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_boringssl_boringssl_asm",
     defaults: [
         "cronet_aml_defaults",
@@ -26378,6 +30850,11 @@
         "third_party/boringssl/src/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             srcs: [
@@ -26473,7 +30950,7 @@
 }
 
 // GN: //third_party/boringssl:boringssl_asm__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_boringssl_boringssl_asm__testing",
     host_supported: true,
     defaults: [
@@ -26508,6 +30985,11 @@
         "buildtools/third_party/libc++abi/trunk/include",
         "third_party/boringssl/src/include/",
     ],
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+    ],
     target: {
         android_arm: {
             srcs: [
@@ -27049,7 +31531,7 @@
 }
 
 // GN: //third_party/googletest:gmock__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_googletest_gmock__testing",
     srcs: [
         "third_party/googletest/src/googlemock/src/gmock-cardinalities.cc",
@@ -27066,17 +31548,66 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
+        "cronet_aml_third_party_googletest_gtest__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
         "cronet_aml_third_party_modp_b64_modp_b64__testing",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -27122,6 +31653,27 @@
         "third_party/googletest/src/googletest/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -27150,7 +31702,7 @@
 }
 
 // GN: //third_party/googletest:gtest__testing
-cc_object {
+cc_library_static {
     name: "cronet_aml_third_party_googletest_gtest__testing",
     srcs: [
         "third_party/googletest/custom/gtest/internal/custom/chrome_custom_temp_dir.cc",
@@ -27173,17 +31725,65 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
         "cronet_aml_third_party_modp_b64_modp_b64__testing",
     ],
-    generated_headers: [
-        "cronet_aml_build_chromeos_buildflags__testing",
-    ],
     defaults: [
         "cronet_aml_defaults",
     ],
@@ -27227,6 +31827,27 @@
         "third_party/googletest/src/googletest/include/",
     ],
     cpp_std: "c++17",
+    ldflags: [
+        "-Wl,--as-needed",
+        "-Wl,--gc-sections",
+        "-Wl,--icf=all",
+        "-Wl,--script,external/cronet/base/android/library_loader/anchor_functions.lds",
+        "-Wl,-wrap,asprintf",
+        "-Wl,-wrap,calloc",
+        "-Wl,-wrap,free",
+        "-Wl,-wrap,getcwd",
+        "-Wl,-wrap,malloc",
+        "-Wl,-wrap,malloc_usable_size",
+        "-Wl,-wrap,memalign",
+        "-Wl,-wrap,posix_memalign",
+        "-Wl,-wrap,pvalloc",
+        "-Wl,-wrap,realloc",
+        "-Wl,-wrap,realpath",
+        "-Wl,-wrap,strdup",
+        "-Wl,-wrap,strndup",
+        "-Wl,-wrap,valloc",
+        "-Wl,-wrap,vasprintf",
+    ],
     target: {
         android_arm: {
             cflags: [
@@ -29879,14 +34500,14 @@
 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",
     ],
     shared_libs: [
         "libz",
     ],
     static_libs: [
+        "cronet_aml_buildtools_third_party_libc___libc__",
+        "cronet_aml_buildtools_third_party_libc__abi_libc__abi",
         "cronet_aml_third_party_protobuf_protobuf_full",
         "cronet_aml_third_party_protobuf_protoc_lib",
     ],
@@ -30173,9 +34794,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc",
         "cronet_aml_base_base",
         "cronet_aml_base_base_static",
+        "cronet_aml_base_nodebug_assertion",
         "cronet_aml_base_third_party_double_conversion_double_conversion",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access",
+        "cronet_aml_third_party_android_ndk_cpu_features",
+        "cronet_aml_third_party_ashmem_ashmem",
         "cronet_aml_third_party_boringssl_boringssl",
+        "cronet_aml_third_party_boringssl_boringssl_asm",
         "cronet_aml_third_party_icu_icui18n",
         "cronet_aml_third_party_icu_icuuc_private",
         "cronet_aml_third_party_libevent_libevent",
@@ -30317,9 +34989,60 @@
         "cronet_aml_base_allocator_partition_allocator_partition_alloc__testing",
         "cronet_aml_base_base__testing",
         "cronet_aml_base_base_static__testing",
+        "cronet_aml_base_nodebug_assertion__testing",
         "cronet_aml_base_third_party_double_conversion_double_conversion__testing",
         "cronet_aml_base_third_party_dynamic_annotations_dynamic_annotations__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_base__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_log_severity__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_malloc_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_raw_logging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_spinlock_wait__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_strerror__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_base_throw_delegate__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_hashtablez_sampler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_container_raw_hash_set__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_debugging_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_demangle_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_examine_stack__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_failure_signal_handler__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_stacktrace__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_debugging_symbolize__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_city__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_hash_low_level_hash__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_numeric_int128__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_profiling_exponential_biased__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_distributions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_platform__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_pool_urbg__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_hwaes_impl__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_randen_slow__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_internal_seed_material__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_gen_exception__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_random_seed_sequences__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_status__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_status_statusor__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cord_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_functions__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_handle__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_cordz_info__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_str_format_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_strings_strings__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_graphcycles_internal__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_synchronization_synchronization__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_civil_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_internal_cctz_time_zone__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_time_time__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_optional_access__testing",
+        "cronet_aml_third_party_abseil_cpp_absl_types_bad_variant_access__testing",
+        "cronet_aml_third_party_android_ndk_cpu_features__testing",
+        "cronet_aml_third_party_ashmem_ashmem__testing",
         "cronet_aml_third_party_boringssl_boringssl__testing",
+        "cronet_aml_third_party_boringssl_boringssl_asm__testing",
         "cronet_aml_third_party_icu_icui18n__testing",
         "cronet_aml_third_party_icu_icuuc_private__testing",
         "cronet_aml_third_party_libevent_libevent__testing",
diff --git a/tools/gn2bp/gen_android_bp b/tools/gn2bp/gen_android_bp
index 2c970a5..d714a90 100755
--- a/tools/gn2bp/gen_android_bp
+++ b/tools/gn2bp/gen_android_bp
@@ -549,7 +549,13 @@
     return self.type == "cc_genrule"
 
   def has_input_files(self):
-    return len(self.srcs) > 0 or any([len(target.srcs) > 0 for target in self.target.values()])
+    if len(self.srcs) > 0:
+      return True
+    if any([len(target.srcs) > 0 for target in self.target.values()]):
+      return True
+    # Allow cc_static_library with export_generated_headers as those are crucial for
+    # the depending modules
+    return len(self.export_generated_headers) > 0
 
   def merge_attribute(self, key, source_module, allowed_archs, source_key = None):
     """
@@ -591,8 +597,8 @@
 
   def to_string(self, output):
     for m in sorted(self.modules.values(), key=lambda m: m.name):
-      if m.type != "cc_object" or m.has_input_files():
-        # Don't print cc_object with empty srcs. These attributes are already
+      if m.type != "cc_library_static" or m.has_input_files():
+        # Don't print cc_library_static with empty srcs. These attributes are already
         # propagated up the tree. Printing them messes the presubmits because
         # every module is compiled while those targets are not reachable in
         # a normal compilation path.
@@ -1345,10 +1351,9 @@
 
 def set_module_flags(module, module_type, cflags, defines, ldflags, libs):
   module.cflags.update(_get_cflags(cflags, defines))
-  if module_type != 'cc_object':
-    module.ldflags.update({flag for flag in ldflags
-            if flag in ldflag_allowlist or flag.startswith("-Wl,-wrap,")})
-    _set_linker_script(module, libs)
+  module.ldflags.update({flag for flag in ldflags
+                         if flag in ldflag_allowlist or flag.startswith("-Wl,-wrap,")})
+  _set_linker_script(module, libs)
   # TODO: implement proper cflag parsing.
   for flag in cflags:
     if '-std=' in flag:
@@ -1397,12 +1402,10 @@
       # Can be used for both host and device targets.
       module_type = 'cc_binary'
     module = Module(module_type, bp_module_name, gn_target_name)
-  elif target.type == 'static_library':
+  elif target.type in ['static_library', 'source_set']:
     module = Module('cc_library_static', bp_module_name, gn_target_name)
   elif target.type == 'shared_library':
     module = Module('cc_library_shared', bp_module_name, gn_target_name)
-  elif target.type == 'source_set':
-    module = Module('cc_object', bp_module_name, gn_target_name)
   elif target.type == 'group':
     # "group" targets are resolved recursively by gn_utils.get_target().
     # There's nothing we need to do at this level for them.
@@ -1525,27 +1528,21 @@
     if not module.is_compiled() or module.is_genrule():
       continue
 
+    # Drop compiled modules that doesn't provide any benefit. This is mostly
+    # applicable to source_sets when converted to cc_static_library, sometimes
+    # the source set only has header files which are dropped so the module becomes empty.
+    if dep_module.is_compiled() and not dep_module.has_input_files():
+      continue
+
     if dep_module.type == 'cc_library_shared':
       module.shared_libs.add(dep_module.name)
     elif dep_module.type == 'cc_library_static':
       module.static_libs.add(dep_module.name)
-    elif dep_module.type == 'cc_object':
-      module.merge_attribute('generated_headers', dep_module, target.arch.keys())
-      if module.type != 'cc_object':
-        if dep_module.has_input_files():
-          # Only add it as part of srcs if the dep_module has input files otherwise
-          # this would throw an error.
-          module.srcs.add(":" + dep_module.name)
-        module.merge_attribute('export_generated_headers', dep_module,
-                         target.arch.keys(), 'generated_headers')
     elif dep_module.type == 'cc_genrule':
       module.merge_attribute('generated_headers', dep_module, [], 'genrule_headers')
       module.merge_attribute('srcs', dep_module, [], 'genrule_srcs')
       module.merge_attribute('shared_libs', dep_module, [], 'genrule_shared_libs')
       module.merge_attribute('header_libs', dep_module, [], 'genrule_header_libs')
-      if module.type not in ["cc_object"]:
-        module.merge_attribute('export_generated_headers', dep_module, [],
-                         'genrule_headers')
     elif dep_module.type == 'cc_binary':
       continue  # Ignore executables deps (used by cmdline integration tests).
     else:
@@ -1563,20 +1560,13 @@
       # Arch-specific dependencies currently only include cc_library_static.
       # Revisit this approach once we need to support more target types.
       if dep_module.type == 'cc_library_static':
-        module.target[arch_name].static_libs.add(dep_module.name)
+        if dep_module.has_input_files():
+          module.target[arch_name].static_libs.add(dep_module.name)
       elif dep_module.type == 'cc_genrule':
         module.target[arch_name].generated_headers.update(dep_module.genrule_headers)
         module.target[arch_name].srcs.update(dep_module.genrule_srcs)
         module.target[arch_name].shared_libs.update(dep_module.genrule_shared_libs)
         module.target[arch_name].header_libs.update(dep_module.genrule_header_libs)
-        if module.type not in ["cc_object"]:
-          module.target[arch_name].export_generated_headers.update(
-            dep_module.genrule_headers)
-      elif dep_module.type == 'cc_object':
-        if dep_module.has_input_files():
-          # Only add it as part of srcs if the dep_module has input files otherwise
-          # this would throw an error.
-          module.target[arch_name].srcs.add(":" + dep_module.name)
       else:
         raise Error('Unsupported arch-specific dependency %s of target %s with type %s' %
                     (dep_module.name, target.name, dep_module.type))
diff --git a/tools/gn2bp/gn_utils.py b/tools/gn2bp/gn_utils.py
index 09a7b80..4066673 100644
--- a/tools/gn2bp/gn_utils.py
+++ b/tools/gn2bp/gn_utils.py
@@ -429,14 +429,6 @@
         target.transitive_proto_deps.add(dep.name)
         target.proto_paths.update(dep.proto_paths)
         target.transitive_proto_deps.update(dep.transitive_proto_deps)
-      elif dep.type == 'source_set':
-        target.arch[arch].source_set_deps.add(dep.name)
-        target.arch[arch].source_set_deps.update(dep.arch[arch].source_set_deps)
-        # flatten source_set deps
-        if target.is_linker_unit_type():
-          # This ensure that all transitive source set dependencies are
-          # propagated upward to the linker units.
-          target.arch[arch].deps.update(target.arch[arch].source_set_deps)
       elif dep.type == 'group':
         target.update(dep, arch)  # Bubble up groups's cflags/ldflags etc.
       elif dep.type in ['action', 'action_foreach', 'copy']:
@@ -450,12 +442,11 @@
         # java_library.
         pass
 
-      # Source set bubble up transitive source sets but can't be combined with this
-      # if they are combined then source sets will bubble up static libraries
-      # while we only want to have source sets bubble up only source sets.
-      if dep.type == 'static_library':
-        # Bubble up static_libs. Necessary, since soong does not propagate
+      if dep.type in ['static_library', 'source_set']:
+        # Bubble up static_libs and source_set. Necessary, since soong does not propagate
         # static_libs up the build tree.
+        # Source sets are later translated to static_libraries, so it makes sense
+        # to reuse transitive_static_libs_deps.
         target.arch[arch].transitive_static_libs_deps.add(dep.name)
 
       if arch in dep.arch: