diff options
3 files changed, 39 insertions, 7 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index cc53aabfcd25..075fb53247bb 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -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); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java index 24ac70e63e46..2a4753def463 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java @@ -234,10 +234,12 @@ public class NotificationLockscreenUserManagerImpl implements } else if (profileAvailabilityActions(action)) { updateCurrentProfilesCache(); } else if (Objects.equals(action, Intent.ACTION_USER_UNLOCKED)) { - // Start the overview connection to the launcher service - // Connect if user hasn't connected yet - if (mOverviewProxyServiceLazy.get().getProxy() == null) { - mOverviewProxyServiceLazy.get().startConnectionToCurrentUser(); + 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( diff --git a/packages/SystemUI/tests/src/com/android/systemui/recents/OverviewProxyServiceTest.kt b/packages/SystemUI/tests/src/com/android/systemui/recents/OverviewProxyServiceTest.kt index 70a48f574949..70d8a5fe0a78 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/recents/OverviewProxyServiceTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/recents/OverviewProxyServiceTest.kt @@ -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 ) } |