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

Commit 034d7a66 authored by Sudheer Shanka's avatar Sudheer Shanka Committed by Android (Google) Code Review
Browse files

Merge changes I7181a3f1,I7835a235 into main

* changes:
  Revert^2 "Attach defer_outgoing_bcasts flag."
  Create defer_outgoing_broadcasts flag.
parents 8934cfe1 16a9710b
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);
@@ -780,7 +777,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.deferOutgoingBroadcasts() && isProcessFreezable(r.callerApp)) {
            final BroadcastProcessQueue queue = getOrCreateProcessQueue(
                    r.callerApp.processName, r.callerApp.uid);
            if (queue.getOutgoingBroadcastCount() >= mConstants.MAX_FROZEN_OUTGOING_BROADCASTS) {
+8 −0
Original line number Diff line number Diff line
@@ -50,6 +50,14 @@ flag {
    bug: "318717054"
}

flag {
    namespace: "backstage_power"
    name: "defer_outgoing_broadcasts"
    description: "Defer outgoing broadcasts from processes in freezable state"
    bug: "327496592"
    is_fixed_read_only: true
}

flag {
    namespace: "backstage_power"
    name: "avoid_repeated_bcast_re_enqueues"
+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_BROADCASTS)
    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);