From fb134455ce75f3b854a769f6d496f508846d5ec9 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Wed, 30 Jun 2021 18:36:00 +0900 Subject: [PATCH] Make StatusBar purely optional To be able to inject Optional.empty() to Optional, this CL - removes raw StatusBar references and replaces it with Optional - replaces Optional> to Lazy> Bug: 144309772 Bug: 138625582 Bug: 187111275 Bug: 187111293 Test: atest SystemUITests Change-Id: I07b63e417dd4cc75a17951619065ba0f234bc2aa Merged-In: I07b63e417dd4cc75a17951619065ba0f234bc2aa --- .../systemui/ActivityStarterDelegate.java | 75 ++++++++++--------- .../src/com/android/systemui/Dependency.java | 3 - .../systemui/accessibility/SystemActions.java | 21 ++++-- .../systemui/assist/PhoneStateMonitor.java | 7 +- .../UdfpsAnimationViewController.java | 15 ++-- .../biometrics/UdfpsBpViewController.java | 6 +- .../systemui/biometrics/UdfpsController.java | 14 ++-- .../biometrics/UdfpsEnrollViewController.java | 6 +- .../UdfpsFpmOtherViewController.java | 6 +- .../UdfpsKeyguardViewController.java | 5 +- .../systemui/dagger/DependencyProvider.java | 4 +- .../globalactions/GlobalActionsDialog.java | 9 ++- .../GlobalActionsDialogLite.java | 39 +++++----- .../systemui/navigationbar/NavigationBar.java | 33 ++++---- .../NavigationBarController.java | 8 +- .../com/android/systemui/power/PowerUI.java | 10 ++- .../recents/OverviewProxyRecentsImpl.java | 11 +-- .../recents/OverviewProxyService.java | 16 ++-- .../recents/ScreenPinningRequest.java | 13 ++-- .../statusbar/NotificationMediaManager.java | 10 ++- .../NotificationRemoteInputManager.java | 16 ++-- .../dagger/StatusBarDependenciesModule.java | 8 +- .../dagger/NotificationsModule.java | 4 +- .../row/NotificationGutsManager.java | 20 ++--- .../phone/CollapsedStatusBarFragment.java | 23 ++++-- .../statusbar/phone/ShadeControllerImpl.java | 8 +- .../systemui/statusbar/phone/StatusBar.java | 3 +- .../biometrics/UdfpsControllerTest.java | 2 +- .../UdfpsKeyguardViewControllerTest.java | 3 +- .../GlobalActionsDialogLiteTest.java | 3 +- .../GlobalActionsDialogTest.java | 3 +- .../NavigationBarControllerTest.java | 2 +- .../navigationbar/NavigationBarTest.java | 2 +- .../android/systemui/power/PowerUITest.java | 8 +- .../NotificationRemoteInputManagerTest.java | 8 +- .../statusbar/SmartReplyControllerTest.java | 4 +- .../row/NotificationGutsManagerTest.java | 14 ++-- .../phone/CollapsedStatusBarFragmentTest.java | 11 ++- .../statusbar/phone/StatusBarTest.java | 2 +- 39 files changed, 254 insertions(+), 201 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java index 62d5a458d51d7..06fbe842eb85c 100644 --- a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java @@ -39,113 +39,114 @@ import dagger.Lazy; @SysUISingleton public class ActivityStarterDelegate implements ActivityStarter { - private Optional> mActualStarter; + private Lazy> mActualStarterOptionalLazy; @Inject - public ActivityStarterDelegate(Optional> statusBar) { - mActualStarter = statusBar; + public ActivityStarterDelegate(Lazy> statusBarOptionalLazy) { + mActualStarterOptionalLazy = statusBarOptionalLazy; } @Override public void startPendingIntentDismissingKeyguard(PendingIntent intent) { - mActualStarter.ifPresent( - starter -> starter.get().startPendingIntentDismissingKeyguard(intent)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startPendingIntentDismissingKeyguard(intent)); } @Override public void startPendingIntentDismissingKeyguard(PendingIntent intent, Runnable intentSentUiThreadCallback) { - mActualStarter.ifPresent( - starter -> starter.get().startPendingIntentDismissingKeyguard(intent, - intentSentUiThreadCallback)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startPendingIntentDismissingKeyguard( + intent, intentSentUiThreadCallback)); } @Override public void startPendingIntentDismissingKeyguard(PendingIntent intent, Runnable intentSentUiThreadCallback, View associatedView) { - mActualStarter.ifPresent( - starter -> starter.get().startPendingIntentDismissingKeyguard(intent, - intentSentUiThreadCallback, associatedView)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startPendingIntentDismissingKeyguard( + intent, intentSentUiThreadCallback, associatedView)); } @Override public void startPendingIntentDismissingKeyguard(PendingIntent intent, Runnable intentSentUiThreadCallback, ActivityLaunchAnimator.Controller animationController) { - mActualStarter.ifPresent( - starter -> starter.get().startPendingIntentDismissingKeyguard(intent, - intentSentUiThreadCallback, animationController)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startPendingIntentDismissingKeyguard( + intent, intentSentUiThreadCallback, animationController)); } @Override public void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade, int flags) { - mActualStarter.ifPresent( - starter -> starter.get().startActivity(intent, onlyProvisioned, dismissShade, - flags)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startActivity(intent, onlyProvisioned, dismissShade, flags)); } @Override public void startActivity(Intent intent, boolean dismissShade) { - mActualStarter.ifPresent(starter -> starter.get().startActivity(intent, dismissShade)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startActivity(intent, dismissShade)); } @Override public void startActivity(Intent intent, boolean dismissShade, @Nullable ActivityLaunchAnimator.Controller animationController) { - mActualStarter.ifPresent( - starter -> starter.get().startActivity(intent, dismissShade, animationController)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startActivity(intent, dismissShade, animationController)); } @Override public void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade) { - mActualStarter.ifPresent( - starter -> starter.get().startActivity(intent, onlyProvisioned, dismissShade)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startActivity(intent, onlyProvisioned, dismissShade)); } @Override public void startActivity(Intent intent, boolean dismissShade, Callback callback) { - mActualStarter.ifPresent( - starter -> starter.get().startActivity(intent, dismissShade, callback)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.startActivity(intent, dismissShade, callback)); } @Override public void postStartActivityDismissingKeyguard(Intent intent, int delay) { - mActualStarter.ifPresent( - starter -> starter.get().postStartActivityDismissingKeyguard(intent, delay)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.postStartActivityDismissingKeyguard(intent, delay)); } @Override public void postStartActivityDismissingKeyguard(Intent intent, int delay, @Nullable ActivityLaunchAnimator.Controller animationController) { - mActualStarter.ifPresent( - starter -> starter.get().postStartActivityDismissingKeyguard(intent, delay, - animationController)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.postStartActivityDismissingKeyguard( + intent, delay, animationController)); } @Override public void postStartActivityDismissingKeyguard(PendingIntent intent) { - mActualStarter.ifPresent( - starter -> starter.get().postStartActivityDismissingKeyguard(intent)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.postStartActivityDismissingKeyguard(intent)); } @Override public void postStartActivityDismissingKeyguard(PendingIntent intent, ActivityLaunchAnimator.Controller animationController) { - mActualStarter.ifPresent(starter -> - starter.get().postStartActivityDismissingKeyguard(intent, animationController)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.postStartActivityDismissingKeyguard( + intent, animationController)); } @Override public void postQSRunnableDismissingKeyguard(Runnable runnable) { - mActualStarter.ifPresent( - starter -> starter.get().postQSRunnableDismissingKeyguard(runnable)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.postQSRunnableDismissingKeyguard(runnable)); } @Override public void dismissKeyguardThenExecute(OnDismissAction action, Runnable cancel, boolean afterKeyguardGone) { - mActualStarter.ifPresent(starter -> starter.get().dismissKeyguardThenExecute(action, cancel, - afterKeyguardGone)); + mActualStarterOptionalLazy.get().ifPresent( + starter -> starter.dismissKeyguardThenExecute(action, cancel, afterKeyguardGone)); } } diff --git a/packages/SystemUI/src/com/android/systemui/Dependency.java b/packages/SystemUI/src/com/android/systemui/Dependency.java index 104d711f46fb6..71df2ad8d5b72 100644 --- a/packages/SystemUI/src/com/android/systemui/Dependency.java +++ b/packages/SystemUI/src/com/android/systemui/Dependency.java @@ -99,7 +99,6 @@ import com.android.systemui.statusbar.phone.LockscreenGestureLogger; import com.android.systemui.statusbar.phone.ManagedProfileController; import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper; import com.android.systemui.statusbar.phone.ShadeController; -import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.statusbar.phone.StatusBarIconController; import com.android.systemui.statusbar.phone.StatusBarWindowController; import com.android.systemui.statusbar.policy.AccessibilityController; @@ -350,7 +349,6 @@ public class Dependency { @Inject Lazy mWallpaperManager; @Inject Lazy mCommandQueue; @Inject Lazy mRecents; - @Inject Lazy mStatusBar; @Inject Lazy mRecordingController; @Inject Lazy mProtoTracer; @Inject Lazy mMediaOutputDialogFactory; @@ -554,7 +552,6 @@ public class Dependency { mProviders.put(IWallpaperManager.class, mWallpaperManager::get); mProviders.put(CommandQueue.class, mCommandQueue::get); mProviders.put(Recents.class, mRecents::get); - mProviders.put(StatusBar.class, mStatusBar::get); mProviders.put(ProtoTracer.class, mProtoTracer::get); mProviders.put(DeviceConfigProxy.class, mDeviceConfigProxy::get); mProviders.put(TelephonyListenerManager.class, mTelephonyListenerManager::get); diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java b/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java index fa56453a89929..a2005d2bbe011 100644 --- a/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java +++ b/packages/SystemUI/src/com/android/systemui/accessibility/SystemActions.java @@ -59,6 +59,7 @@ import com.android.systemui.statusbar.phone.StatusBarWindowCallback; import com.android.systemui.util.Assert; import java.util.Locale; +import java.util.Optional; import javax.inject.Inject; @@ -142,7 +143,7 @@ public class SystemActions extends SystemUI { private final Recents mRecents; private Locale mLocale; private final AccessibilityManager mA11yManager; - private final Lazy mStatusBar; + private final Lazy> mStatusBarOptionalLazy; private final NotificationShadeWindowController mNotificationShadeController; private final StatusBarWindowCallback mNotificationShadeCallback; private boolean mDismissNotificationShadeActionRegistered; @@ -150,7 +151,7 @@ public class SystemActions extends SystemUI { @Inject public SystemActions(Context context, NotificationShadeWindowController notificationShadeController, - Lazy statusBar, + Lazy> statusBarOptionalLazy, Recents recents) { super(context); mRecents = recents; @@ -163,7 +164,7 @@ public class SystemActions extends SystemUI { // NotificationShadeWindowController.registerCallback() only keeps weak references. mNotificationShadeCallback = (keyguardShowing, keyguardOccluded, bouncerShowing, mDozing) -> registerOrUnregisterDismissNotificationShadeAction(); - mStatusBar = statusBar; + mStatusBarOptionalLazy = statusBarOptionalLazy; } @Override @@ -242,8 +243,9 @@ public class SystemActions extends SystemUI { // Saving state in instance variable since this callback is called quite often to avoid // binder calls - StatusBar statusBar = mStatusBar.get(); - if (statusBar.isPanelExpanded() && !statusBar.isKeyguardShowing()) { + final Optional statusBarOptional = mStatusBarOptionalLazy.get(); + if (statusBarOptional.map(StatusBar::isPanelExpanded).orElse(false) + && !statusBarOptional.get().isKeyguardShowing()) { if (!mDismissNotificationShadeActionRegistered) { mA11yManager.registerSystemAction( createRemoteAction( @@ -372,11 +374,12 @@ public class SystemActions extends SystemUI { } private void handleNotifications() { - mStatusBar.get().animateExpandNotificationsPanel(); + mStatusBarOptionalLazy.get().ifPresent(StatusBar::animateExpandNotificationsPanel); } private void handleQuickSettings() { - mStatusBar.get().animateExpandSettingsPanel(null); + mStatusBarOptionalLazy.get().ifPresent( + statusBar -> statusBar.animateExpandSettingsPanel(null)); } private void handlePowerDialog() { @@ -425,7 +428,9 @@ public class SystemActions extends SystemUI { } private void handleAccessibilityDismissNotificationShade() { - mStatusBar.get().animateCollapsePanels(CommandQueue.FLAG_EXCLUDE_NONE, false /* force */); + mStatusBarOptionalLazy.get().ifPresent( + statusBar -> statusBar.animateCollapsePanels( + CommandQueue.FLAG_EXCLUDE_NONE, false /* force */)); } private class SystemActionsBroadcastReceiver extends BroadcastReceiver { diff --git a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java index 169a9c0c6eac9..f13730e602a0a 100644 --- a/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java +++ b/packages/SystemUI/src/com/android/systemui/assist/PhoneStateMonitor.java @@ -70,7 +70,7 @@ public final class PhoneStateMonitor { }; private final Context mContext; - private final Optional> mStatusBarOptionalLazy; + private final Lazy> mStatusBarOptionalLazy; private final StatusBarStateController mStatusBarStateController; private boolean mLauncherShowing; @@ -78,7 +78,7 @@ public final class PhoneStateMonitor { @Inject PhoneStateMonitor(Context context, BroadcastDispatcher broadcastDispatcher, - Optional> statusBarOptionalLazy, BootCompleteCache bootCompleteCache) { + Lazy> statusBarOptionalLazy, BootCompleteCache bootCompleteCache) { mContext = context; mStatusBarOptionalLazy = statusBarOptionalLazy; mStatusBarStateController = Dependency.get(StatusBarStateController.class); @@ -180,8 +180,7 @@ public final class PhoneStateMonitor { } private boolean isBouncerShowing() { - return mStatusBarOptionalLazy.map( - statusBarLazy -> statusBarLazy.get().isBouncerShowing()).orElse(false); + return mStatusBarOptionalLazy.get().map(StatusBar::isBouncerShowing).orElse(false); } private boolean isKeyguardLocked() { diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java index b7344fbc6ddad..a2e55c0f76e22 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsAnimationViewController.java @@ -28,6 +28,7 @@ import com.android.systemui.util.ViewController; import java.io.FileDescriptor; import java.io.PrintWriter; +import java.util.Optional; /** * Handles: @@ -42,7 +43,7 @@ import java.io.PrintWriter; abstract class UdfpsAnimationViewController extends ViewController implements Dumpable { @NonNull final StatusBarStateController mStatusBarStateController; - @NonNull final StatusBar mStatusBar; + @NonNull final Optional mStatusBarOptional; @NonNull final DumpManager mDumpManger; boolean mNotificationShadeExpanded; @@ -50,11 +51,11 @@ abstract class UdfpsAnimationViewController protected UdfpsAnimationViewController( T view, @NonNull StatusBarStateController statusBarStateController, - @NonNull StatusBar statusBar, + @NonNull Optional statusBarOptional, @NonNull DumpManager dumpManager) { super(view); mStatusBarStateController = statusBarStateController; - mStatusBar = statusBar; + mStatusBarOptional = statusBarOptional; mDumpManger = dumpManager; } @@ -62,13 +63,17 @@ abstract class UdfpsAnimationViewController @Override protected void onViewAttached() { - mStatusBar.addExpansionChangedListener(mStatusBarExpansionChangedListener); + mStatusBarOptional.ifPresent( + statusBar -> statusBar.addExpansionChangedListener( + mStatusBarExpansionChangedListener)); mDumpManger.registerDumpable(getDumpTag(), this); } @Override protected void onViewDetached() { - mStatusBar.removeExpansionChangedListener(mStatusBarExpansionChangedListener); + mStatusBarOptional.ifPresent( + statusBar -> statusBar.removeExpansionChangedListener( + mStatusBarExpansionChangedListener)); mDumpManger.unregisterDumpable(getDumpTag()); } diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsBpViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsBpViewController.java index 93d80e29aded8..85955e1b5d561 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsBpViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsBpViewController.java @@ -22,6 +22,8 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.StatusBar; +import java.util.Optional; + /** * Class that coordinates non-HBM animations for biometric prompt. */ @@ -29,9 +31,9 @@ class UdfpsBpViewController extends UdfpsAnimationViewController { protected UdfpsBpViewController( @NonNull UdfpsBpView view, @NonNull StatusBarStateController statusBarStateController, - @NonNull StatusBar statusBar, + @NonNull Optional statusBarOptional, @NonNull DumpManager dumpManager) { - super(view, statusBarStateController, statusBar, dumpManager); + super(view, statusBarStateController, statusBarOptional, dumpManager); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java index e51baed065ef6..f913b8abbc3b9 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsController.java @@ -108,7 +108,7 @@ public class UdfpsController implements DozeReceiver { @NonNull private final LayoutInflater mInflater; private final WindowManager mWindowManager; private final DelayableExecutor mFgExecutor; - @NonNull private final StatusBar mStatusBar; + @NonNull private final Optional mStatusBarOptional; @NonNull private final StatusBarStateController mStatusBarStateController; @NonNull private final StatusBarKeyguardViewManager mKeyguardViewManager; @NonNull private final DumpManager mDumpManager; @@ -480,7 +480,7 @@ public class UdfpsController implements DozeReceiver { @NonNull WindowManager windowManager, @NonNull StatusBarStateController statusBarStateController, @Main DelayableExecutor fgExecutor, - @NonNull StatusBar statusBar, + @NonNull Optional statusBarOptional, @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull DumpManager dumpManager, @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, @@ -504,7 +504,7 @@ public class UdfpsController implements DozeReceiver { mFingerprintManager = checkNotNull(fingerprintManager); mWindowManager = windowManager; mFgExecutor = fgExecutor; - mStatusBar = statusBar; + mStatusBarOptional = statusBarOptional; mStatusBarStateController = statusBarStateController; mKeyguardViewManager = statusBarKeyguardViewManager; mDumpManager = dumpManager; @@ -725,7 +725,7 @@ public class UdfpsController implements DozeReceiver { enrollView, mServerRequest.mEnrollHelper, mStatusBarStateController, - mStatusBar, + mStatusBarOptional, mDumpManager ); case IUdfpsOverlayController.REASON_AUTH_FPM_KEYGUARD: @@ -735,7 +735,7 @@ public class UdfpsController implements DozeReceiver { return new UdfpsKeyguardViewController( keyguardView, mStatusBarStateController, - mStatusBar, + mStatusBarOptional, mKeyguardViewManager, mKeyguardUpdateMonitor, mFgExecutor, @@ -751,7 +751,7 @@ public class UdfpsController implements DozeReceiver { return new UdfpsBpViewController( bpView, mStatusBarStateController, - mStatusBar, + mStatusBarOptional, mDumpManager ); case IUdfpsOverlayController.REASON_AUTH_FPM_OTHER: @@ -761,7 +761,7 @@ public class UdfpsController implements DozeReceiver { return new UdfpsFpmOtherViewController( authOtherView, mStatusBarStateController, - mStatusBar, + mStatusBarOptional, mDumpManager ); default: diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java index 3dab010d917cd..54244a16ed78b 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java @@ -24,6 +24,8 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.StatusBar; +import java.util.Optional; + /** * Class that coordinates non-HBM animations during enrollment. */ @@ -48,9 +50,9 @@ public class UdfpsEnrollViewController extends UdfpsAnimationViewController statusBarOptional, @NonNull DumpManager dumpManager) { - super(view, statusBarStateController, statusBar, dumpManager); + super(view, statusBarStateController, statusBarOptional, dumpManager); mEnrollProgressBarRadius = getContext().getResources() .getInteger(R.integer.config_udfpsEnrollProgressBar); mEnrollHelper = enrollHelper; diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherViewController.java index 6e2e4baf492bb..dcb5aefc8aa33 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsFpmOtherViewController.java @@ -22,6 +22,8 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.phone.StatusBar; +import java.util.Optional; + /** * Class that coordinates non-HBM animations for non keyguard, enrollment or biometric prompt * states. @@ -32,9 +34,9 @@ class UdfpsFpmOtherViewController extends UdfpsAnimationViewController statusBarOptional, @NonNull DumpManager dumpManager) { - super(view, statusBarStateController, statusBar, dumpManager); + super(view, statusBarStateController, statusBarOptional, dumpManager); } @Override diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java index 51124fb28ad19..bed3fd10208a7 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsKeyguardViewController.java @@ -40,6 +40,7 @@ import com.android.systemui.util.concurrency.DelayableExecutor; import java.io.FileDescriptor; import java.io.PrintWriter; +import java.util.Optional; /** @@ -80,7 +81,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController statusBarOptional, @NonNull StatusBarKeyguardViewManager statusBarKeyguardViewManager, @NonNull KeyguardUpdateMonitor keyguardUpdateMonitor, @NonNull DelayableExecutor mainDelayableExecutor, @@ -88,7 +89,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController pipOptional, Optional splitScreenOptional, Optional recentsOptional, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, ShadeController shadeController, NotificationRemoteInputManager notificationRemoteInputManager, NotificationShadeDepthController notificationShadeDepthController, @@ -256,7 +256,7 @@ public class DependencyProvider { pipOptional, splitScreenOptional, recentsOptional, - statusBarLazy, + statusBarOptionalLazy, shadeController, notificationRemoteInputManager, notificationShadeDepthController, diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java index 98fb3c9b91070..04a0226aa0b4c 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java @@ -81,6 +81,7 @@ import com.android.systemui.util.leak.RotationUtils; import com.android.systemui.util.settings.GlobalSettings; import com.android.systemui.util.settings.SecureSettings; +import java.util.Optional; import java.util.concurrent.Executor; import javax.inject.Inject; @@ -172,7 +173,7 @@ public class GlobalActionsDialog extends GlobalActionsDialogLite SysUiState sysUiState, @Main Handler handler, PackageManager packageManager, - StatusBar statusBar) { + Optional statusBarOptional) { super(context, windowManagerFuncs, @@ -203,7 +204,7 @@ public class GlobalActionsDialog extends GlobalActionsDialogLite sysUiState, handler, packageManager, - statusBar); + statusBarOptional); mLockPatternUtils = lockPatternUtils; mKeyguardStateController = keyguardStateController; @@ -333,11 +334,11 @@ public class GlobalActionsDialog extends GlobalActionsDialogLite NotificationShadeWindowController notificationShadeWindowController, SysUiState sysuiState, Runnable onRotateCallback, boolean keyguardShowing, MyPowerOptionsAdapter powerAdapter, UiEventLogger uiEventLogger, - StatusBar statusBar) { + Optional statusBarOptional) { super(context, com.android.systemui.R.style.Theme_SystemUI_Dialog_GlobalActions, adapter, overflowAdapter, sysuiColorExtractor, statusBarService, notificationShadeWindowController, sysuiState, onRotateCallback, - keyguardShowing, powerAdapter, uiEventLogger, statusBar); + keyguardShowing, powerAdapter, uiEventLogger, statusBarOptional); mWalletFactory = walletFactory; // Update window attributes diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java index 2afce719c4060..83d92a9ecd02f 100644 --- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java +++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialogLite.java @@ -131,6 +131,7 @@ import com.android.systemui.util.settings.SecureSettings; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import java.util.concurrent.Executor; import javax.inject.Inject; @@ -229,7 +230,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene private int mDialogPressDelay = DIALOG_PRESS_DELAY; // ms protected Handler mMainHandler; private int mSmallestScreenWidthDp; - private final StatusBar mStatusBar; + private final Optional mStatusBarOptional; @VisibleForTesting public enum GlobalActionsEvent implements UiEventLogger.UiEventEnum { @@ -336,7 +337,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene SysUiState sysUiState, @Main Handler handler, PackageManager packageManager, - StatusBar statusBar) { + Optional statusBarOptional) { mContext = context; mWindowManagerFuncs = windowManagerFuncs; mAudioManager = audioManager; @@ -365,7 +366,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mSysUiState = sysUiState; mMainHandler = handler; mSmallestScreenWidthDp = resources.getConfiguration().smallestScreenWidthDp; - mStatusBar = statusBar; + mStatusBarOptional = statusBarOptional; // receive broadcasts IntentFilter filter = new IntentFilter(); @@ -415,8 +416,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene return mUiEventLogger; } - protected StatusBar getStatusBar() { - return mStatusBar; + protected Optional getStatusBar() { + return mStatusBarOptional; } /** @@ -650,7 +651,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mAdapter, mOverflowAdapter, mSysuiColorExtractor, mStatusBarService, mNotificationShadeWindowController, mSysUiState, this::onRotate, mKeyguardShowing, mPowerAdapter, mUiEventLogger, - mStatusBar); + mStatusBarOptional); dialog.setOnDismissListener(this); dialog.setOnShowListener(this); @@ -852,7 +853,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mUiEventLogger.log(GlobalActionsEvent.GA_EMERGENCY_DIALER_PRESS); if (mTelecomManager != null) { // Close shade so user sees the activity - mStatusBar.collapseShade(); + mStatusBarOptional.ifPresent(StatusBar::collapseShade); Intent intent = mTelecomManager.createLaunchEmergencyDialerIntent( null /* number */); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK @@ -984,7 +985,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mIActivityManager.requestInteractiveBugReport(); } // Close shade so user sees the activity - mStatusBar.collapseShade(); + mStatusBarOptional.ifPresent(StatusBar::collapseShade); } catch (RemoteException e) { } } @@ -1004,7 +1005,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mUiEventLogger.log(GlobalActionsEvent.GA_BUGREPORT_LONG_PRESS); mIActivityManager.requestFullBugReport(); // Close shade so user sees the activity - mStatusBar.collapseShade(); + mStatusBarOptional.ifPresent(StatusBar::collapseShade); } catch (RemoteException e) { } return false; @@ -2122,7 +2123,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene protected final Runnable mOnRotateCallback; private UiEventLogger mUiEventLogger; private GestureDetector mGestureDetector; - private StatusBar mStatusBar; + private Optional mStatusBarOptional; protected ViewGroup mContainer; @@ -2147,7 +2148,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { if (distanceY < 0 && distanceY > distanceX - && e1.getY() <= mStatusBar.getStatusBarHeight()) { + && e1.getY() <= mStatusBarOptional.map( + StatusBar::getStatusBarHeight).orElse(0)) { // Downwards scroll from top openShadeAndDismiss(); return true; @@ -2159,7 +2161,8 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { if (velocityY > 0 && Math.abs(velocityY) > Math.abs(velocityX) - && e1.getY() <= mStatusBar.getStatusBarHeight()) { + && e1.getY() <= mStatusBarOptional.map( + StatusBar::getStatusBarHeight).orElse(0)) { // Downwards fling from top openShadeAndDismiss(); return true; @@ -2174,7 +2177,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene NotificationShadeWindowController notificationShadeWindowController, SysUiState sysuiState, Runnable onRotateCallback, boolean keyguardShowing, MyPowerOptionsAdapter powerAdapter, UiEventLogger uiEventLogger, - StatusBar statusBar) { + Optional statusBarOptional) { super(context, themeRes); mContext = context; mAdapter = adapter; @@ -2187,7 +2190,7 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene mOnRotateCallback = onRotateCallback; mKeyguardShowing = keyguardShowing; mUiEventLogger = uiEventLogger; - mStatusBar = statusBar; + mStatusBarOptional = statusBarOptional; mGestureDetector = new GestureDetector(mContext, mGestureListener); @@ -2218,12 +2221,14 @@ public class GlobalActionsDialogLite implements DialogInterface.OnDismissListene private void openShadeAndDismiss() { mUiEventLogger.log(GlobalActionsEvent.GA_CLOSE_TAP_OUTSIDE); - if (mStatusBar.isKeyguardShowing()) { + if (mStatusBarOptional.map(StatusBar::isKeyguardShowing).orElse(false)) { // match existing lockscreen behavior to open QS when swiping from status bar - mStatusBar.animateExpandSettingsPanel(null); + mStatusBarOptional.ifPresent( + statusBar -> statusBar.animateExpandSettingsPanel(null)); } else { // otherwise, swiping down should expand notification shade - mStatusBar.animateExpandNotificationsPanel(); + mStatusBarOptional.ifPresent( + statusBar -> statusBar.animateExpandNotificationsPanel()); } dismiss(); } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java index 3073f8353d38e..e762839c96ed6 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBar.java @@ -187,7 +187,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, private final MetricsLogger mMetricsLogger; private final Lazy mAssistManagerLazy; private final SysUiState mSysUiFlagsContainer; - private final Lazy mStatusBarLazy; + private final Lazy> mStatusBarOptionalLazy; private final ShadeController mShadeController; private final NotificationRemoteInputManager mNotificationRemoteInputManager; private final OverviewProxyService mOverviewProxyService; @@ -485,7 +485,8 @@ public class NavigationBar implements View.OnAttachStateChangeListener, CommandQueue commandQueue, Optional pipOptional, Optional splitScreenOptional, - Optional recentsOptional, Lazy statusBarLazy, + Optional recentsOptional, + Lazy> statusBarOptionalLazy, ShadeController shadeController, NotificationRemoteInputManager notificationRemoteInputManager, NotificationShadeDepthController notificationShadeDepthController, @@ -503,7 +504,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, mMetricsLogger = metricsLogger; mAssistManagerLazy = assistManagerLazy; mSysUiFlagsContainer = sysUiFlagsContainer; - mStatusBarLazy = statusBarLazy; + mStatusBarOptionalLazy = statusBarOptionalLazy; mShadeController = shadeController; mNotificationRemoteInputManager = notificationRemoteInputManager; mOverviewProxyService = overviewProxyService; @@ -610,7 +611,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, @Override public void onViewAttachedToWindow(View v) { final Display display = v.getDisplay(); - mNavigationBarView.setComponents(mStatusBarLazy.get().getPanelController()); + mNavigationBarView.setComponents(mStatusBarOptionalLazy.get().get().getPanelController()); mNavigationBarView.setDisabledFlags(mDisabledFlags1); mNavigationBarView.setOnVerticalChangedListener(this::onVerticalChanged); mNavigationBarView.setOnTouchListener(this::onNavigationTouch); @@ -1161,13 +1162,14 @@ public class NavigationBar implements View.OnAttachStateChangeListener, // If an incoming call is ringing, HOME is totally disabled. // (The user is already on the InCallUI at this point, // and their ONLY options are to answer or reject the call.) + final Optional statusBarOptional = mStatusBarOptionalLazy.get(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mHomeBlockedThisTouch = false; TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class); if (telecomManager != null && telecomManager.isRinging()) { - if (mStatusBarLazy.get().isKeyguardShowing()) { + if (statusBarOptional.map(StatusBar::isKeyguardShowing).orElse(false)) { Log.i(TAG, "Ignoring HOME; there's a ringing incoming call. " + "No heads up"); mHomeBlockedThisTouch = true; @@ -1183,14 +1185,15 @@ public class NavigationBar implements View.OnAttachStateChangeListener, case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: mHandler.removeCallbacks(mOnVariableDurationHomeLongClick); - mStatusBarLazy.get().awakenDreams(); + statusBarOptional.ifPresent(StatusBar::awakenDreams); break; } return false; } private void onVerticalChanged(boolean isVertical) { - mStatusBarLazy.get().setQsScrimEnabled(!isVertical); + mStatusBarOptionalLazy.get().ifPresent( + statusBar -> statusBar.setQsScrimEnabled(!isVertical)); } private boolean onNavigationTouch(View v, MotionEvent event) { @@ -1216,7 +1219,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, AssistManager.INVOCATION_TYPE_KEY, AssistManager.INVOCATION_TYPE_HOME_BUTTON_LONG_PRESS); mAssistManagerLazy.get().startAssist(args); - mStatusBarLazy.get().awakenDreams(); + mStatusBarOptionalLazy.get().ifPresent(StatusBar::awakenDreams); mNavigationBarView.abortCurrentGesture(); return true; } @@ -1242,7 +1245,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, LatencyTracker.getInstance(mContext).onActionStart( LatencyTracker.ACTION_TOGGLE_RECENTS); } - mStatusBarLazy.get().awakenDreams(); + mStatusBarOptionalLazy.get().ifPresent(StatusBar::awakenDreams); mCommandQueue.toggleRecentApps(); } @@ -1347,8 +1350,11 @@ public class NavigationBar implements View.OnAttachStateChangeListener, return false; } - return mStatusBarLazy.get().toggleSplitScreenMode(MetricsEvent.ACTION_WINDOW_DOCK_LONGPRESS, - MetricsEvent.ACTION_WINDOW_UNDOCK_LONGPRESS); + return mStatusBarOptionalLazy.get().map( + statusBar -> statusBar.toggleSplitScreenMode( + MetricsEvent.ACTION_WINDOW_DOCK_LONGPRESS, + MetricsEvent.ACTION_WINDOW_UNDOCK_LONGPRESS)) + .orElse(false); } private void onAccessibilityClick(View v) { @@ -1474,7 +1480,7 @@ public class NavigationBar implements View.OnAttachStateChangeListener, private void checkBarModes() { // We only have status bar on default display now. if (mIsOnDefaultDisplay) { - mStatusBarLazy.get().checkBarModes(); + mStatusBarOptionalLazy.get().ifPresent(StatusBar::checkBarModes); } else { checkNavBarModes(); } @@ -1492,7 +1498,8 @@ public class NavigationBar implements View.OnAttachStateChangeListener, * Checks current navigation bar mode and make transitions. */ public void checkNavBarModes() { - final boolean anim = mStatusBarLazy.get().isDeviceInteractive() + final boolean anim = + mStatusBarOptionalLazy.get().map(StatusBar::isDeviceInteractive).orElse(false) && mNavigationBarWindowState != WINDOW_STATE_HIDDEN; mNavigationBarView.getBarTransitions().transitionTo(mNavigationBarMode, anim); } diff --git a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java index 6344c591803d2..458c50d9cb817 100644 --- a/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java +++ b/packages/SystemUI/src/com/android/systemui/navigationbar/NavigationBarController.java @@ -104,7 +104,7 @@ public class NavigationBarController implements Callbacks, private final Optional mPipOptional; private final Optional mSplitScreenOptional; private final Optional mRecentsOptional; - private final Lazy mStatusBarLazy; + private final Lazy> mStatusBarOptionalLazy; private final ShadeController mShadeController; private final NotificationRemoteInputManager mNotificationRemoteInputManager; private final SystemActions mSystemActions; @@ -146,7 +146,7 @@ public class NavigationBarController implements Callbacks, Optional pipOptional, Optional splitScreenOptional, Optional recentsOptional, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, ShadeController shadeController, NotificationRemoteInputManager notificationRemoteInputManager, NotificationShadeDepthController notificationShadeDepthController, @@ -175,7 +175,7 @@ public class NavigationBarController implements Callbacks, mPipOptional = pipOptional; mSplitScreenOptional = splitScreenOptional; mRecentsOptional = recentsOptional; - mStatusBarLazy = statusBarLazy; + mStatusBarOptionalLazy = statusBarOptionalLazy; mShadeController = shadeController; mNotificationRemoteInputManager = notificationRemoteInputManager; mNotificationShadeDepthController = notificationShadeDepthController; @@ -369,7 +369,7 @@ public class NavigationBarController implements Callbacks, mPipOptional, mSplitScreenOptional, mRecentsOptional, - mStatusBarLazy, + mStatusBarOptionalLazy, mShadeController, mNotificationRemoteInputManager, mNotificationShadeDepthController, diff --git a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java index a888305cc83d8..625265485f6d9 100644 --- a/packages/SystemUI/src/com/android/systemui/power/PowerUI.java +++ b/packages/SystemUI/src/com/android/systemui/power/PowerUI.java @@ -54,6 +54,7 @@ import java.io.FileDescriptor; import java.io.PrintWriter; import java.time.Duration; import java.util.Arrays; +import java.util.Optional; import java.util.concurrent.Future; import javax.inject.Inject; @@ -108,15 +109,15 @@ public class PowerUI extends SystemUI implements CommandQueue.Callbacks { private IThermalEventListener mUsbThermalEventListener; private final BroadcastDispatcher mBroadcastDispatcher; private final CommandQueue mCommandQueue; - private final Lazy mStatusBarLazy; + private final Lazy> mStatusBarOptionalLazy; @Inject public PowerUI(Context context, BroadcastDispatcher broadcastDispatcher, - CommandQueue commandQueue, Lazy statusBarLazy) { + CommandQueue commandQueue, Lazy> statusBarOptionalLazy) { super(context); mBroadcastDispatcher = broadcastDispatcher; mCommandQueue = commandQueue; - mStatusBarLazy = statusBarLazy; + mStatusBarOptionalLazy = statusBarOptionalLazy; } public void start() { @@ -710,7 +711,8 @@ public class PowerUI extends SystemUI implements CommandQueue.Callbacks { int status = temp.getStatus(); if (status >= Temperature.THROTTLING_EMERGENCY) { - if (!mStatusBarLazy.get().isDeviceInVrMode()) { + final Optional statusBarOptional = mStatusBarOptionalLazy.get(); + if (!statusBarOptional.map(StatusBar::isDeviceInVrMode).orElse(false)) { mWarnings.showHighTemperatureWarning(); Slog.d(TAG, "SkinThermalEventListener: notifyThrottling was called " + ", current skin status = " + status diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java index bbeff6ece9021..77c61a4f18452 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyRecentsImpl.java @@ -42,7 +42,7 @@ public class OverviewProxyRecentsImpl implements RecentsImplementation { private final static String TAG = "OverviewProxyRecentsImpl"; @Nullable - private final Lazy mStatusBarLazy; + private final Lazy> mStatusBarOptionalLazy; private Context mContext; private Handler mHandler; @@ -51,8 +51,8 @@ public class OverviewProxyRecentsImpl implements RecentsImplementation { @SuppressWarnings("OptionalUsedAsFieldOrParameterType") @Inject - public OverviewProxyRecentsImpl(Optional> statusBarLazy) { - mStatusBarLazy = statusBarLazy.orElse(null); + public OverviewProxyRecentsImpl(Lazy> statusBarOptionalLazy) { + mStatusBarOptionalLazy = statusBarOptionalLazy; } @Override @@ -109,8 +109,9 @@ public class OverviewProxyRecentsImpl implements RecentsImplementation { } }; // Preload only if device for current user is unlocked - if (mStatusBarLazy != null && mStatusBarLazy.get().isKeyguardShowing()) { - mStatusBarLazy.get().executeRunnableDismissingKeyguard(() -> { + final Optional statusBarOptional = mStatusBarOptionalLazy.get(); + if (statusBarOptional.map(StatusBar::isKeyguardShowing).orElse(false)) { + statusBarOptional.get().executeRunnableDismissingKeyguard(() -> { // Flush trustmanager before checking device locked per user mTrustManager.reportKeyguardShowingChanged(); mHandler.post(toggleRecents); diff --git a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java index da9d8882c0911..eb72296d5c5bd 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java +++ b/packages/SystemUI/src/com/android/systemui/recents/OverviewProxyService.java @@ -136,7 +136,7 @@ public class OverviewProxyService extends CurrentUserTracker implements private final Context mContext; private final Optional mPipOptional; - private final Optional> mStatusBarOptionalLazy; + private final Lazy> mStatusBarOptionalLazy; private final Optional mLegacySplitScreenOptional; private final Optional mSplitScreenOptional; private SysUiState mSysUiState; @@ -174,8 +174,8 @@ public class OverviewProxyService extends CurrentUserTracker implements @Override public void startScreenPinning(int taskId) { verifyCallerAndClearCallingIdentityPostMain("startScreenPinning", () -> - mStatusBarOptionalLazy.ifPresent( - statusBarLazy -> statusBarLazy.get().showScreenPinningRequest(taskId, + mStatusBarOptionalLazy.get().ifPresent( + statusBar -> statusBar.showScreenPinningRequest(taskId, false /* allowCancel */))); } @@ -195,8 +195,7 @@ public class OverviewProxyService extends CurrentUserTracker implements public void onStatusBarMotionEvent(MotionEvent event) { verifyCallerAndClearCallingIdentity("onStatusBarMotionEvent", () -> { // TODO move this logic to message queue - mStatusBarOptionalLazy.ifPresent(statusBarLazy -> { - StatusBar statusBar = statusBarLazy.get(); + mStatusBarOptionalLazy.get().ifPresent(statusBar -> { if (event.getActionMasked() == ACTION_DOWN) { statusBar.getPanelController().startExpandLatencyTracking(); } @@ -527,7 +526,7 @@ public class OverviewProxyService extends CurrentUserTracker implements Optional pipOptional, Optional legacySplitScreenOptional, Optional splitScreenOptional, - Optional> statusBarOptionalLazy, + Lazy> statusBarOptionalLazy, Optional oneHandedOptional, BroadcastDispatcher broadcastDispatcher, ShellTransitions shellTransitions, @@ -681,10 +680,9 @@ public class OverviewProxyService extends CurrentUserTracker implements public void cleanupAfterDeath() { if (mInputFocusTransferStarted) { mHandler.post(() -> { - mStatusBarOptionalLazy.ifPresent(statusBarLazy -> { + mStatusBarOptionalLazy.get().ifPresent(statusBar -> { mInputFocusTransferStarted = false; - statusBarLazy.get().onInputFocusTransfer(false, true /* cancel */, - 0 /* velocity */); + statusBar.onInputFocusTransfer(false, true /* cancel */, 0 /* velocity */); }); }); } diff --git a/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java b/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java index aa8d710e75705..85bf98c09f594 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java +++ b/packages/SystemUI/src/com/android/systemui/recents/ScreenPinningRequest.java @@ -51,10 +51,10 @@ import android.widget.TextView; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.broadcast.BroadcastDispatcher; -import com.android.systemui.shared.system.QuickStepContract; -import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.navigationbar.NavigationModeController; +import com.android.systemui.shared.system.QuickStepContract; +import com.android.systemui.shared.system.WindowManagerWrapper; import com.android.systemui.statusbar.phone.StatusBar; import com.android.systemui.util.leak.RotationUtils; @@ -69,7 +69,7 @@ public class ScreenPinningRequest implements View.OnClickListener, NavigationModeController.ModeChangedListener { private final Context mContext; - private final Optional> mStatusBarOptionalLazy; + private final Lazy> mStatusBarOptionalLazy; private final AccessibilityManager mAccessibilityService; private final WindowManager mWindowManager; @@ -82,7 +82,7 @@ public class ScreenPinningRequest implements View.OnClickListener, private int taskId; @Inject - public ScreenPinningRequest(Context context, Optional> statusBarOptionalLazy) { + public ScreenPinningRequest(Context context, Lazy> statusBarOptionalLazy) { mContext = context; mStatusBarOptionalLazy = statusBarOptionalLazy; mAccessibilityService = (AccessibilityManager) @@ -266,8 +266,9 @@ public class ScreenPinningRequest implements View.OnClickListener, .setVisibility(View.INVISIBLE); } - NavigationBarView navigationBarView = mStatusBarOptionalLazy.map( - statusBarLazy -> statusBarLazy.get().getNavigationBarView()).orElse(null); + final Optional statusBarOptional = mStatusBarOptionalLazy.get(); + NavigationBarView navigationBarView = + statusBarOptional.map(StatusBar::getNavigationBarView).orElse(null); final boolean recentsVisible = navigationBarView != null && navigationBarView.isRecentsButtonVisible(); boolean touchExplorationEnabled = mAccessibilityService.isTouchExplorationEnabled(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java index 25cbdc5c2187e..8969b4d1bcbc7 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationMediaManager.java @@ -84,6 +84,7 @@ import java.util.Collection; import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.Set; import dagger.Lazy; @@ -132,7 +133,7 @@ public class NotificationMediaManager implements Dumpable { private final Context mContext; private final MediaSessionManager mMediaSessionManager; private final ArrayList mMediaListeners; - private final Lazy mStatusBarLazy; + private final Lazy> mStatusBarOptionalLazy; private final MediaArtworkProcessor mMediaArtworkProcessor; private final Set> mProcessArtworkTasks = new ArraySet<>(); @@ -177,7 +178,7 @@ public class NotificationMediaManager implements Dumpable { */ public NotificationMediaManager( Context context, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, Lazy notificationShadeWindowController, NotificationEntryManager notificationEntryManager, MediaArtworkProcessor mediaArtworkProcessor, @@ -197,7 +198,7 @@ public class NotificationMediaManager implements Dumpable { mMediaSessionManager = (MediaSessionManager) mContext.getSystemService( Context.MEDIA_SESSION_SERVICE); // TODO: use KeyguardStateController#isOccluded to remove this dependency - mStatusBarLazy = statusBarLazy; + mStatusBarOptionalLazy = statusBarOptionalLazy; mNotificationShadeWindowController = notificationShadeWindowController; mEntryManager = notificationEntryManager; mMainExecutor = mainExecutor; @@ -694,7 +695,8 @@ public class NotificationMediaManager implements Dumpable { NotificationShadeWindowController windowController = mNotificationShadeWindowController.get(); - boolean hideBecauseOccluded = mStatusBarLazy.get().isOccluded(); + boolean hideBecauseOccluded = + mStatusBarOptionalLazy.get().map(StatusBar::isOccluded).orElse(false); final boolean hasArtwork = artworkDrawable != null; mColorExtractor.setHasMediaArtwork(hasMediaArtwork); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java index 4552138761c0a..bc3883ca76ed5 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoteInputManager.java @@ -45,6 +45,7 @@ import android.view.View; import android.view.ViewGroup; import android.view.ViewParent; import android.widget.RemoteViews; +import android.widget.RemoteViews.InteractionHandler; import android.widget.TextView; import com.android.internal.annotations.VisibleForTesting; @@ -70,6 +71,7 @@ import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; import java.util.Objects; +import java.util.Optional; import java.util.Set; import java.util.stream.Stream; @@ -118,7 +120,7 @@ public class NotificationRemoteInputManager implements Dumpable { private final Handler mMainHandler; private final ActionClickLogger mLogger; - private final Lazy mStatusBarLazy; + private final Lazy> mStatusBarOptionalLazy; protected final Context mContext; private final UserManager mUserManager; @@ -134,14 +136,14 @@ public class NotificationRemoteInputManager implements Dumpable { protected Callback mCallback; protected final ArrayList mLifetimeExtenders = new ArrayList<>(); - private final RemoteViews.InteractionHandler - mInteractionHandler = new RemoteViews.InteractionHandler() { + private final InteractionHandler mInteractionHandler = new InteractionHandler() { @Override public boolean onInteraction( View view, PendingIntent pendingIntent, RemoteViews.RemoteResponse response) { - mStatusBarLazy.get().wakeUpIfDozing(SystemClock.uptimeMillis(), view, - "NOTIFICATION_CLICK"); + mStatusBarOptionalLazy.get().ifPresent( + statusBar -> statusBar.wakeUpIfDozing( + SystemClock.uptimeMillis(), view, "NOTIFICATION_CLICK")); final NotificationEntry entry = getNotificationForParent(view.getParent()); mLogger.logInitialClick(entry, pendingIntent); @@ -280,7 +282,7 @@ public class NotificationRemoteInputManager implements Dumpable { NotificationLockscreenUserManager lockscreenUserManager, SmartReplyController smartReplyController, NotificationEntryManager notificationEntryManager, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, StatusBarStateController statusBarStateController, @Main Handler mainHandler, RemoteInputUriController remoteInputUriController, @@ -290,7 +292,7 @@ public class NotificationRemoteInputManager implements Dumpable { mLockscreenUserManager = lockscreenUserManager; mSmartReplyController = smartReplyController; mEntryManager = notificationEntryManager; - mStatusBarLazy = statusBarLazy; + mStatusBarOptionalLazy = statusBarOptionalLazy; mMainHandler = mainHandler; mLogger = logger; mBarService = IStatusBarService.Stub.asInterface( diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java index 491959320ab78..71f667aa2a817 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/dagger/StatusBarDependenciesModule.java @@ -92,7 +92,7 @@ public interface StatusBarDependenciesModule { NotificationLockscreenUserManager lockscreenUserManager, SmartReplyController smartReplyController, NotificationEntryManager notificationEntryManager, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, StatusBarStateController statusBarStateController, Handler mainHandler, RemoteInputUriController remoteInputUriController, @@ -103,7 +103,7 @@ public interface StatusBarDependenciesModule { lockscreenUserManager, smartReplyController, notificationEntryManager, - statusBarLazy, + statusBarOptionalLazy, statusBarStateController, mainHandler, remoteInputUriController, @@ -116,7 +116,7 @@ public interface StatusBarDependenciesModule { @Provides static NotificationMediaManager provideNotificationMediaManager( Context context, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, Lazy notificationShadeWindowController, NotificationEntryManager notificationEntryManager, MediaArtworkProcessor mediaArtworkProcessor, @@ -129,7 +129,7 @@ public interface StatusBarDependenciesModule { MediaDataManager mediaDataManager) { return new NotificationMediaManager( context, - statusBarLazy, + statusBarOptionalLazy, notificationShadeWindowController, notificationEntryManager, mediaArtworkProcessor, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java index 6964838e7e411..f75811478195a 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java @@ -126,7 +126,7 @@ public interface NotificationsModule { @Provides static NotificationGutsManager provideNotificationGutsManager( Context context, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, @Main Handler mainHandler, @Background Handler bgHandler, AccessibilityManager accessibilityManager, @@ -145,7 +145,7 @@ public interface NotificationsModule { ShadeController shadeController) { return new NotificationGutsManager( context, - statusBarLazy, + statusBarOptionalLazy, mainHandler, bgHandler, accessibilityManager, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java index 4319e29985d82..668d541e1770b 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java @@ -116,7 +116,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx @VisibleForTesting protected String mKeyToRemoveOnGutsClosed; - private final Lazy mStatusBarLazy; + private final Lazy> mStatusBarOptionalLazy; private final Handler mMainHandler; private final Handler mBgHandler; private final Optional mBubblesManagerOptional; @@ -135,7 +135,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx * Injected constructor. See {@link NotificationsModule}. */ public NotificationGutsManager(Context context, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, @Main Handler mainHandler, @Background Handler bgHandler, AccessibilityManager accessibilityManager, @@ -153,7 +153,7 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx OnUserInteractionCallback onUserInteractionCallback, ShadeController shadeController) { mContext = context; - mStatusBarLazy = statusBarLazy; + mStatusBarOptionalLazy = statusBarOptionalLazy; mMainHandler = mainHandler; mBgHandler = bgHandler; mAccessibilityManager = accessibilityManager; @@ -564,13 +564,13 @@ public class NotificationGutsManager implements Dumpable, NotificationLifetimeEx Runnable r = () -> mMainHandler.post( () -> openGutsInternal(view, x, y, menuItem)); - mStatusBarLazy.get().executeRunnableDismissingKeyguard( - r, - null /* cancelAction */, - false /* dismissShade */, - true /* afterKeyguardGone */, - true /* deferred */); - + mStatusBarOptionalLazy.get().ifPresent( + statusBar -> statusBar.executeRunnableDismissingKeyguard( + r, + null /* cancelAction */, + false /* dismissShade */, + true /* afterKeyguardGone */, + true /* deferred */)); return true; } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java index 1361acb1e156e..a68dab9f046bf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragment.java @@ -58,9 +58,12 @@ import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; +import java.util.Optional; import javax.inject.Inject; +import dagger.Lazy; + /** * Contains the collapsed status bar and handles hiding/showing based on disable flags * and keyguard state. Also manages lifecycle to make sure the views it contains are being @@ -86,7 +89,7 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue private View mCenteredIconArea; private int mDisabled1; private int mDisabled2; - private StatusBar mStatusBarComponent; + private Lazy> mStatusBarOptionalLazy; private DarkIconManager mDarkIconManager; private View mOperatorNameFrame; private CommandQueue mCommandQueue; @@ -118,13 +121,15 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue SystemStatusAnimationScheduler animationScheduler, StatusBarLocationPublisher locationPublisher, NotificationIconAreaController notificationIconAreaController, - FeatureFlags featureFlags + FeatureFlags featureFlags, + Lazy> statusBarOptionalLazy ) { mOngoingCallController = ongoingCallController; mAnimationScheduler = animationScheduler; mLocationPublisher = locationPublisher; mNotificationIconAreaController = notificationIconAreaController; mFeatureFlags = featureFlags; + mStatusBarOptionalLazy = statusBarOptionalLazy; } @Override @@ -133,7 +138,6 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue mKeyguardStateController = Dependency.get(KeyguardStateController.class); mNetworkController = Dependency.get(NetworkController.class); mStatusBarStateController = Dependency.get(StatusBarStateController.class); - mStatusBarComponent = Dependency.get(StatusBar.class); mCommandQueue = Dependency.get(CommandQueue.class); } @@ -269,7 +273,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue } protected int adjustDisableFlags(int state) { - boolean headsUpVisible = mStatusBarComponent.headsUpShouldBeVisible(); + boolean headsUpVisible = mStatusBarOptionalLazy.get() + .map(StatusBar::headsUpShouldBeVisible).orElse(false); if (headsUpVisible) { state |= DISABLE_CLOCK; } @@ -297,7 +302,8 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue // The shelf will be hidden when dozing with a custom clock, we must show notification // icons in this occasion. if (mStatusBarStateController.isDozing() - && mStatusBarComponent.getPanelController().hasCustomClock()) { + && mStatusBarOptionalLazy.get().map( + sb -> sb.getPanelController().hasCustomClock()).orElse(false)) { state |= DISABLE_CLOCK | DISABLE_SYSTEM_INFO; } @@ -338,10 +344,13 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue } private boolean shouldHideNotificationIcons() { - if (!mStatusBar.isClosed() && mStatusBarComponent.hideStatusBarIconsWhenExpanded()) { + final Optional statusBarOptional = mStatusBarOptionalLazy.get(); + if (!mStatusBar.isClosed() + && statusBarOptional.map( + StatusBar::hideStatusBarIconsWhenExpanded).orElse(false)) { return true; } - if (mStatusBarComponent.hideStatusBarIconsForBouncer()) { + if (statusBarOptional.map(StatusBar::hideStatusBarIconsForBouncer).orElse(false)) { return true; } return false; diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadeControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadeControllerImpl.java index d4458e29a3066..edacbe1b96965 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadeControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ShadeControllerImpl.java @@ -48,7 +48,7 @@ public class ShadeControllerImpl implements ShadeController { protected final NotificationShadeWindowController mNotificationShadeWindowController; private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private final int mDisplayId; - protected final Lazy mStatusBarLazy; + protected final Lazy> mStatusBarOptionalLazy; private final Lazy mAssistManagerLazy; private final Optional mBubblesOptional; @@ -61,7 +61,7 @@ public class ShadeControllerImpl implements ShadeController { NotificationShadeWindowController notificationShadeWindowController, StatusBarKeyguardViewManager statusBarKeyguardViewManager, WindowManager windowManager, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, Lazy assistManagerLazy, Optional bubblesOptional ) { @@ -71,7 +71,7 @@ public class ShadeControllerImpl implements ShadeController { mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; mDisplayId = windowManager.getDefaultDisplay().getDisplayId(); // TODO: Remove circular reference to StatusBar when possible. - mStatusBarLazy = statusBarLazy; + mStatusBarOptionalLazy = statusBarOptionalLazy; mAssistManagerLazy = assistManagerLazy; mBubblesOptional = bubblesOptional; } @@ -210,7 +210,7 @@ public class ShadeControllerImpl implements ShadeController { } private StatusBar getStatusBar() { - return mStatusBarLazy.get(); + return mStatusBarOptionalLazy.get().get(); } private NotificationPresenter getPresenter() { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index e3b2a2f56df30..9d0d42306f3db 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1190,7 +1190,8 @@ public class StatusBar extends SystemUI implements DemoMode, mAnimationScheduler, mStatusBarLocationPublisher, mNotificationIconAreaController, - mFeatureFlags), + mFeatureFlags, + () -> Optional.of(this)), CollapsedStatusBarFragment.TAG) .commit(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java index d8d3676d4fa24..dd6227165741a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsControllerTest.java @@ -181,7 +181,7 @@ public class UdfpsControllerTest extends SysuiTestCase { mWindowManager, mStatusBarStateController, mFgExecutor, - mStatusBar, + Optional.of(mStatusBar), mStatusBarKeyguardViewManager, mDumpManager, mKeyguardUpdateMonitor, diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerTest.java index f62587c6e87cf..57c57ec3273df 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/UdfpsKeyguardViewControllerTest.java @@ -49,6 +49,7 @@ import org.mockito.Captor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.Optional; @SmallTest @RunWith(AndroidTestingRunner.class) @@ -103,7 +104,7 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase { mController = new UdfpsKeyguardViewController( mView, mStatusBarStateController, - mStatusBar, + Optional.of(mStatusBar), mStatusBarKeyguardViewManager, mKeyguardUpdateMonitor, mExecutor, diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java index 32abbc755c560..8c0d21e911dae 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogLiteTest.java @@ -74,6 +74,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.List; +import java.util.Optional; import java.util.concurrent.Executor; @SmallTest @@ -154,7 +155,7 @@ public class GlobalActionsDialogLiteTest extends SysuiTestCase { mSysUiState, mHandler, mPackageManager, - mStatusBar + Optional.of(mStatusBar) ); mGlobalActionsDialogLite.setZeroDialogPressDelayForTesting(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java index 2fa67cc0be600..6d1db378bf2ab 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/globalactions/GlobalActionsDialogTest.java @@ -81,6 +81,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.util.List; +import java.util.Optional; import java.util.concurrent.Executor; import java.util.regex.Pattern; @@ -169,7 +170,7 @@ public class GlobalActionsDialogTest extends SysuiTestCase { mSysUiState, mHandler, mPackageManager, - mStatusBar + Optional.of(mStatusBar) ); mGlobalActionsDialog.setZeroDialogPressDelayForTesting(); diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java index e9a7c73558c87..8fd2a329a33e5 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarControllerTest.java @@ -105,7 +105,7 @@ public class NavigationBarControllerTest extends SysuiTestCase { Optional.of(mock(Pip.class)), Optional.of(mock(LegacySplitScreen.class)), Optional.of(mock(Recents.class)), - () -> mock(StatusBar.class), + () -> Optional.of(mock(StatusBar.class)), mock(ShadeController.class), mock(NotificationRemoteInputManager.class), mock(NotificationShadeDepthController.class), diff --git a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java index c606a430e325a..92cd244e2e63a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/navigationbar/NavigationBarTest.java @@ -272,7 +272,7 @@ public class NavigationBarTest extends SysuiTestCase { Optional.of(mock(Pip.class)), Optional.of(mock(LegacySplitScreen.class)), Optional.of(mock(Recents.class)), - () -> mock(StatusBar.class), + () -> Optional.of(mock(StatusBar.class)), mock(ShadeController.class), mock(NotificationRemoteInputManager.class), mock(NotificationShadeDepthController.class), diff --git a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java index 35620329467b5..e73e5ff49dd2a 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/power/PowerUITest.java @@ -58,6 +58,7 @@ import org.mockito.Mock; import org.mockito.MockitoAnnotations; import java.time.Duration; +import java.util.Optional; import java.util.concurrent.TimeUnit; import dagger.Lazy; @@ -89,7 +90,7 @@ public class PowerUITest extends SysuiTestCase { private IThermalEventListener mSkinThermalEventListener; @Mock private BroadcastDispatcher mBroadcastDispatcher; @Mock private CommandQueue mCommandQueue; - @Mock private Lazy mStatusBarLazy; + @Mock private Lazy> mStatusBarOptionalLazy; @Mock private StatusBar mStatusBar; @Before @@ -98,7 +99,7 @@ public class PowerUITest extends SysuiTestCase { mMockWarnings = mDependency.injectMockDependency(WarningsUI.class); mEnhancedEstimates = mDependency.injectMockDependency(EnhancedEstimates.class); - when(mStatusBarLazy.get()).thenReturn(mStatusBar); + when(mStatusBarOptionalLazy.get()).thenReturn(Optional.of(mStatusBar)); mContext.addMockSystemService(Context.POWER_SERVICE, mPowerManager); @@ -688,7 +689,8 @@ public class PowerUITest extends SysuiTestCase { } private void createPowerUi() { - mPowerUI = new PowerUI(mContext, mBroadcastDispatcher, mCommandQueue, mStatusBarLazy); + mPowerUI = new PowerUI( + mContext, mBroadcastDispatcher, mCommandQueue, mStatusBarOptionalLazy); mPowerUI.mThermalService = mThermalServiceMock; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java index 8e949e7d1e37f..8b7c76a9727a2 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationRemoteInputManagerTest.java @@ -44,6 +44,8 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.Optional; + import dagger.Lazy; @SmallTest @@ -80,7 +82,7 @@ public class NotificationRemoteInputManagerTest extends SysuiTestCase { mRemoteInputManager = new TestableNotificationRemoteInputManager(mContext, mLockscreenUserManager, mSmartReplyController, mEntryManager, - () -> mock(StatusBar.class), + () -> Optional.of(mock(StatusBar.class)), mStateController, Handler.createAsync(Looper.myLooper()), mRemoteInputUriController, @@ -265,7 +267,7 @@ public class NotificationRemoteInputManagerTest extends SysuiTestCase { NotificationLockscreenUserManager lockscreenUserManager, SmartReplyController smartReplyController, NotificationEntryManager notificationEntryManager, - Lazy statusBarLazy, + Lazy> statusBarOptionalLazy, StatusBarStateController statusBarStateController, Handler mainHandler, RemoteInputUriController remoteInputUriController, @@ -276,7 +278,7 @@ public class NotificationRemoteInputManagerTest extends SysuiTestCase { lockscreenUserManager, smartReplyController, notificationEntryManager, - statusBarLazy, + statusBarOptionalLazy, statusBarStateController, mainHandler, remoteInputUriController, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/SmartReplyControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SmartReplyControllerTest.java index 7cbc4e4e2c621..659d96e92f34f 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/SmartReplyControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SmartReplyControllerTest.java @@ -51,6 +51,8 @@ import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.Optional; + @RunWith(AndroidTestingRunner.class) @TestableLooper.RunWithLooper @SmallTest @@ -90,7 +92,7 @@ public class SmartReplyControllerTest extends SysuiTestCase { mRemoteInputManager = new NotificationRemoteInputManager(mContext, mock(NotificationLockscreenUserManager.class), mSmartReplyController, - mNotificationEntryManager, () -> mock(StatusBar.class), + mNotificationEntryManager, () -> Optional.of(mock(StatusBar.class)), mStatusBarStateController, Handler.createAsync(Looper.myLooper()), mRemoteInputUriController, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java index 9f537f5b6afc5..fc44669c56424 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java @@ -91,7 +91,6 @@ import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; -import org.mockito.Answers; import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; @@ -99,8 +98,6 @@ import org.mockito.junit.MockitoRule; import java.util.Optional; -import javax.inject.Provider; - /** * Tests for {@link NotificationGutsManager}. */ @@ -157,11 +154,12 @@ public class NotificationGutsManagerTest extends SysuiTestCase { when(mAccessibilityManager.isTouchExplorationEnabled()).thenReturn(false); mGutsManager = new NotificationGutsManager(mContext, - () -> mStatusBar, mHandler, mHandler, mAccessibilityManager, mHighPriorityProvider, - mINotificationManager, mNotificationEntryManager, mPeopleSpaceWidgetManager, - mLauncherApps, mShortcutManager, mChannelEditorDialogController, mContextTracker, - mAssistantFeedbackController, Optional.of(mBubblesManager), - new UiEventLoggerFake(), mOnUserInteractionCallback, mShadeController); + () -> Optional.of(mStatusBar), mHandler, mHandler, mAccessibilityManager, + mHighPriorityProvider, mINotificationManager, mNotificationEntryManager, + mPeopleSpaceWidgetManager, mLauncherApps, mShortcutManager, + mChannelEditorDialogController, mContextTracker, mAssistantFeedbackController, + Optional.of(mBubblesManager), new UiEventLoggerFake(), mOnUserInteractionCallback, + mShadeController); mGutsManager.setUpWithPresenter(mPresenter, mNotificationListContainer, mCheckSaveListener, mOnSettingsClickListener); mGutsManager.setNotificationActivityStarter(mNotificationActivityStarter); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java index 9640423425f5b..32b08be51cdfc 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CollapsedStatusBarFragmentTest.java @@ -47,11 +47,14 @@ import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mockito; +import java.util.Optional; + @RunWith(AndroidTestingRunner.class) @RunWithLooper(setAsMainLooper = true) @SmallTest public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { + private StatusBar mStatusBar; private NotificationIconAreaController mMockNotificationAreaController; private View mNotificationAreaInner; private StatusBarStateController mStatusBarStateController; @@ -65,12 +68,11 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { @Before public void setup() { - StatusBar statusBar = mock(StatusBar.class); - mDependency.injectTestDependency(StatusBar.class, statusBar); + mStatusBar = mock(StatusBar.class); mStatusBarStateController = mDependency .injectMockDependency(StatusBarStateController.class); injectLeakCheckedDependencies(ALL_SUPPORTED_CLASSES); - when(statusBar.getPanelController()).thenReturn( + when(mStatusBar.getPanelController()).thenReturn( mock(NotificationPanelViewController.class)); } @@ -231,7 +233,8 @@ public class CollapsedStatusBarFragmentTest extends SysuiBaseFragmentTest { mAnimationScheduler, mLocationPublisher, mMockNotificationAreaController, - mock(FeatureFlags.class)); + mock(FeatureFlags.class), + () -> Optional.of(mStatusBar)); } private void setUpNotificationIconAreaController() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java index f126ed0c75558..c504fd8c78010 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java @@ -353,7 +353,7 @@ public class StatusBarTest extends SysuiTestCase { mShadeController = new ShadeControllerImpl(mCommandQueue, mStatusBarStateController, mNotificationShadeWindowController, mStatusBarKeyguardViewManager, mContext.getSystemService(WindowManager.class), - () -> mStatusBar, () -> mAssistManager, Optional.of(mBubbles)); + () -> Optional.of(mStatusBar), () -> mAssistManager, Optional.of(mBubbles)); mStatusBar = new StatusBar( mContext,