Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 29b69986 authored by Sudheer Shanka's avatar Sudheer Shanka
Browse files

Attach defer_outgoing_bcasts flag.

Bug: 327496592
Test: atest services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueTest.java
Test: atest services/tests/mockingservicestests/src/com/android/server/am/BroadcastQueueModernImplTest.java
Change-Id: Ic0c516b14f6c536ee08066b53b527530498ca234
parent ef10f0dc
Loading
Loading
Loading
Loading
+1 −4
Original line number Diff line number Diff line
@@ -286,9 +286,6 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
    // when the flag is fused on.
    private static final int MSG_DELIVERY_TIMEOUT_SOFT = 8;

    // TODO: Use the trunk stable flag.
    private static final boolean DEFER_FROZEN_OUTGOING_BCASTS = false;

    private void enqueueUpdateRunningList() {
        mLocalHandler.removeMessages(MSG_UPDATE_RUNNING_LIST);
        mLocalHandler.sendEmptyMessage(MSG_UPDATE_RUNNING_LIST);
@@ -766,7 +763,7 @@ class BroadcastQueueModernImpl extends BroadcastQueue {
        // TODO: Apply delivery group policies and FLAG_REPLACE_PENDING to collapse the
        // outgoing broadcasts.
        // TODO: Add traces/logs for the enqueueing outgoing broadcasts logic.
        if (DEFER_FROZEN_OUTGOING_BCASTS && isProcessFreezable(r.callerApp)) {
        if (Flags.deferOutgoingBcasts() && isProcessFreezable(r.callerApp)) {
            final BroadcastProcessQueue queue = getOrCreateProcessQueue(
                    r.callerApp.processName, r.callerApp.uid);
            if (queue.getOutgoingBroadcastCount() >= mConstants.MAX_FROZEN_OUTGOING_BROADCASTS) {
+2 −0
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ import com.android.server.wm.ActivityTaskManagerService;

import org.junit.Rule;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;

import java.io.File;
@@ -160,6 +161,7 @@ public abstract class BaseBroadcastQueueTest {
        realAms.mActivityTaskManager = new ActivityTaskManagerService(mContext);
        realAms.mActivityTaskManager.initialize(null, null, mContext.getMainLooper());
        realAms.mAtmInternal = spy(realAms.mActivityTaskManager.getAtmInternal());
        realAms.mOomAdjuster.mCachedAppOptimizer = Mockito.mock(CachedAppOptimizer.class);
        realAms.mOomAdjuster = spy(realAms.mOomAdjuster);
        ExtendedMockito.doNothing().when(() -> ProcessList.setOomAdj(anyInt(), anyInt(), anyInt()));
        realAms.mPackageManagerInt = mPackageManagerInt;
+3 −2
Original line number Diff line number Diff line
@@ -86,7 +86,6 @@ import androidx.test.platform.app.InstrumentationRegistry;

import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.mockito.ArgumentMatcher;
import org.mockito.InOrder;
@@ -2335,8 +2334,8 @@ public class BroadcastQueueTest extends BaseBroadcastQueueTest {
                .isGreaterThan(getReceiverScheduledTime(prioritizedRecord, receiverBlue));
    }

    @Ignore
    @Test
    @RequiresFlagsEnabled(Flags.FLAG_DEFER_OUTGOING_BCASTS)
    public void testDeferOutgoingBroadcasts() throws Exception {
        final ProcessRecord callerApp = makeActiveProcessRecord(PACKAGE_RED);
        setProcessFreezable(callerApp, true /* pendingFreeze */, false /* frozen */);
@@ -2350,6 +2349,8 @@ public class BroadcastQueueTest extends BaseBroadcastQueueTest {
                makeRegisteredReceiver(receiverGreenApp),
                makeManifestReceiver(PACKAGE_BLUE, CLASS_BLUE),
                makeManifestReceiver(PACKAGE_YELLOW, CLASS_YELLOW))));
        // Verify that we invoke the call to freeze the caller app.
        verify(mAms.mOomAdjuster.mCachedAppOptimizer).freezeAppAsyncImmediateLSP(callerApp);

        waitForIdle();
        verifyScheduleRegisteredReceiver(never(), receiverGreenApp, timeTick);