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

Commit 3bdb0728 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Decouple OverviewProxyService from notifications

Notifications doesn't talk to Launcher through it and doesn't need to be
responsible for registering that communication channel.

Test: NotificationLockscreenUserManagerTest
Test: OverviewProxyServiceTest
Test: flash device, open recents
Test: will monitor car_system_ui_tests flakiness
Fixes: 319732207
Change-Id: Iefcbf83199c47261ebb1bc2119bfb290f990bf2f
parent ee91033f
Loading
Loading
Loading
Loading
+28 −2
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.systemui.recents;

import static android.app.Flags.keyguardPrivateNotifications;
import static android.content.Intent.ACTION_PACKAGE_ADDED;
import static android.content.Intent.EXTRA_CHANGED_COMPONENT_NAME_LIST;
import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
@@ -81,6 +82,7 @@ import com.android.internal.logging.UiEventLogger;
import com.android.internal.util.ScreenshotHelper;
import com.android.internal.util.ScreenshotRequest;
import com.android.systemui.Dumpable;
import com.android.systemui.broadcast.BroadcastDispatcher;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.dump.DumpManager;
@@ -167,9 +169,10 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
    private final Optional<UnfoldTransitionProgressForwarder> mUnfoldTransitionProgressForwarder;
    private final UiEventLogger mUiEventLogger;
    private final DisplayTracker mDisplayTracker;

    private Region mActiveNavBarRegion;

    private final BroadcastDispatcher mBroadcastDispatcher;

    private IOverviewProxy mOverviewProxy;
    private int mConnectionBackoffAttempts;
    private boolean mBound;
@@ -419,6 +422,21 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
        retryConnectionWithBackoff();
    };

    private final BroadcastReceiver mUserEventReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (Objects.equals(intent.getAction(), Intent.ACTION_USER_UNLOCKED)) {
                if (keyguardPrivateNotifications()) {
                    // Start the overview connection to the launcher service
                    // Connect if user hasn't connected yet
                    if (getProxy() == null) {
                        startConnectionToCurrentUser();
                    }
                }
            }
        }
    };

    private final BroadcastReceiver mLauncherStateChangedReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
@@ -586,7 +604,8 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
            FeatureFlags featureFlags,
            SceneContainerFlags sceneContainerFlags,
            DumpManager dumpManager,
            Optional<UnfoldTransitionProgressForwarder> unfoldTransitionProgressForwarder
            Optional<UnfoldTransitionProgressForwarder> unfoldTransitionProgressForwarder,
            BroadcastDispatcher broadcastDispatcher
    ) {
        // b/241601880: This component shouldn't be running for a non-primary user
        if (!Process.myUserHandle().equals(UserHandle.SYSTEM)) {
@@ -615,6 +634,7 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
        mUiEventLogger = uiEventLogger;
        mDisplayTracker = displayTracker;
        mUnfoldTransitionProgressForwarder = unfoldTransitionProgressForwarder;
        mBroadcastDispatcher = broadcastDispatcher;

        if (!featureFlags.isEnabled(Flags.KEYGUARD_WM_STATE_REFACTOR)) {
            mSysuiUnlockAnimationController = sysuiUnlockAnimationController;
@@ -635,6 +655,12 @@ public class OverviewProxyService implements CallbackController<OverviewProxyLis
        filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
        mContext.registerReceiver(mLauncherStateChangedReceiver, filter);

        if (keyguardPrivateNotifications()) {
            mBroadcastDispatcher.registerReceiver(mUserEventReceiver,
                    new IntentFilter(Intent.ACTION_USER_UNLOCKED),
                    null /* executor */, UserHandle.ALL);
        }

        // Listen for status bar state changes
        statusBarWinController.registerCallback(mStatusBarWindowCallback);
        mScreenshotHelper = new ScreenshotHelper(context);
+6 −4
Original line number Diff line number Diff line
@@ -234,11 +234,13 @@ public class NotificationLockscreenUserManagerImpl implements
            } else if (profileAvailabilityActions(action)) {
                updateCurrentProfilesCache();
            } else if (Objects.equals(action, Intent.ACTION_USER_UNLOCKED)) {
                if (!keyguardPrivateNotifications()) {
                    // Start the overview connection to the launcher service
                    // Connect if user hasn't connected yet
                    if (mOverviewProxyServiceLazy.get().getProxy() == null) {
                        mOverviewProxyServiceLazy.get().startConnectionToCurrentUser();
                    }
                }
            } else if (Objects.equals(action, NOTIFICATION_UNLOCKED_BY_WORK_CHALLENGE_ACTION)) {
                final IntentSender intentSender = intent.getParcelableExtra(
                        Intent.EXTRA_INTENT);
+5 −1
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import androidx.test.filters.SmallTest
import com.android.internal.app.AssistUtils
import com.android.internal.logging.UiEventLogger
import com.android.systemui.SysuiTestCase
import com.android.systemui.broadcast.BroadcastDispatcher
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.dump.DumpManager
import com.android.systemui.flags.FakeFeatureFlags
@@ -109,6 +110,8 @@ class OverviewProxyServiceTest : SysuiTestCase() {
    @Mock
    private lateinit var unfoldTransitionProgressForwarder:
        Optional<UnfoldTransitionProgressForwarder>
    @Mock
    private lateinit var broadcastDispatcher: BroadcastDispatcher

    @Before
    fun setUp() {
@@ -155,7 +158,8 @@ class OverviewProxyServiceTest : SysuiTestCase() {
                featureFlags,
                FakeSceneContainerFlags(),
                dumpManager,
                unfoldTransitionProgressForwarder
                unfoldTransitionProgressForwarder,
                broadcastDispatcher
            )
    }