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

Commit fb134455 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Make StatusBar purely optional

To be able to inject Optional.empty() to Optional<StatusBar>, this CL

 - removes raw StatusBar references and replaces it with Optional<StatusBar>
 - replaces Optional<Lazy<StatusBar>> to Lazy<Optional<StatusBar>>

Bug: 144309772
Bug: 138625582
Bug: 187111275
Bug: 187111293
Test: atest SystemUITests
Change-Id: I07b63e417dd4cc75a17951619065ba0f234bc2aa
Merged-In: I07b63e417dd4cc75a17951619065ba0f234bc2aa
parent 109a5be4
Loading
Loading
Loading
Loading
+38 −37
Original line number Diff line number Diff line
@@ -39,113 +39,114 @@ import dagger.Lazy;
@SysUISingleton
public class ActivityStarterDelegate implements ActivityStarter {

    private Optional<Lazy<StatusBar>> mActualStarter;
    private Lazy<Optional<StatusBar>> mActualStarterOptionalLazy;

    @Inject
    public ActivityStarterDelegate(Optional<Lazy<StatusBar>> statusBar) {
        mActualStarter = statusBar;
    public ActivityStarterDelegate(Lazy<Optional<StatusBar>> 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));
    }
}
+0 −3
Original line number Diff line number Diff line
@@ -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<IWallpaperManager> mWallpaperManager;
    @Inject Lazy<CommandQueue> mCommandQueue;
    @Inject Lazy<Recents> mRecents;
    @Inject Lazy<StatusBar> mStatusBar;
    @Inject Lazy<RecordingController> mRecordingController;
    @Inject Lazy<ProtoTracer> mProtoTracer;
    @Inject Lazy<MediaOutputDialogFactory> 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);
+13 −8
Original line number Diff line number Diff line
@@ -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<StatusBar> mStatusBar;
    private final Lazy<Optional<StatusBar>> 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> statusBar,
            Lazy<Optional<StatusBar>> 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<StatusBar> 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 {
+3 −4
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ public final class PhoneStateMonitor {
    };

    private final Context mContext;
    private final Optional<Lazy<StatusBar>> mStatusBarOptionalLazy;
    private final Lazy<Optional<StatusBar>> mStatusBarOptionalLazy;
    private final StatusBarStateController mStatusBarStateController;

    private boolean mLauncherShowing;
@@ -78,7 +78,7 @@ public final class PhoneStateMonitor {

    @Inject
    PhoneStateMonitor(Context context, BroadcastDispatcher broadcastDispatcher,
            Optional<Lazy<StatusBar>> statusBarOptionalLazy, BootCompleteCache bootCompleteCache) {
            Lazy<Optional<StatusBar>> 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() {
+10 −5
Original line number Diff line number Diff line
@@ -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<T extends UdfpsAnimationView>
        extends ViewController<T> implements Dumpable {
    @NonNull final StatusBarStateController mStatusBarStateController;
    @NonNull final StatusBar mStatusBar;
    @NonNull final Optional<StatusBar> mStatusBarOptional;
    @NonNull final DumpManager mDumpManger;

    boolean mNotificationShadeExpanded;
@@ -50,11 +51,11 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView>
    protected UdfpsAnimationViewController(
            T view,
            @NonNull StatusBarStateController statusBarStateController,
            @NonNull StatusBar statusBar,
            @NonNull Optional<StatusBar> statusBarOptional,
            @NonNull DumpManager dumpManager) {
        super(view);
        mStatusBarStateController = statusBarStateController;
        mStatusBar = statusBar;
        mStatusBarOptional = statusBarOptional;
        mDumpManger = dumpManager;
    }

@@ -62,13 +63,17 @@ abstract class UdfpsAnimationViewController<T extends UdfpsAnimationView>

    @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());
    }

Loading