diff --git a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java index 41a7bc43eaa05..47a10af7c550c 100644 --- a/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java +++ b/packages/SystemUI/src/com/android/systemui/ActivityStarterDelegate.java @@ -19,117 +19,99 @@ import android.content.Intent; import android.view.View; import com.android.systemui.plugins.ActivityStarter; +import com.android.systemui.statusbar.phone.StatusBar; + +import java.util.Optional; import javax.inject.Inject; import javax.inject.Singleton; +import dagger.Lazy; + /** * Single common instance of ActivityStarter that can be gotten and referenced from anywhere, but - * delegates to an actual implementation such as StatusBar, assuming it exists. + * delegates to an actual implementation (StatusBar). */ +@SuppressWarnings("OptionalUsedAsFieldOrParameterType") @Singleton public class ActivityStarterDelegate implements ActivityStarter { - private ActivityStarter mActualStarter; + private Optional> mActualStarter; @Inject - public ActivityStarterDelegate() { + public ActivityStarterDelegate(Optional> statusBar) { + mActualStarter = statusBar; } @Override public void startPendingIntentDismissingKeyguard(PendingIntent intent) { - if (mActualStarter == null) { - return; - } - mActualStarter.startPendingIntentDismissingKeyguard(intent); + mActualStarter.ifPresent( + starter -> starter.get().startPendingIntentDismissingKeyguard(intent)); } @Override public void startPendingIntentDismissingKeyguard(PendingIntent intent, Runnable intentSentCallback) { - if (mActualStarter == null) { - return; - } - mActualStarter.startPendingIntentDismissingKeyguard(intent, intentSentCallback); + mActualStarter.ifPresent( + starter -> starter.get().startPendingIntentDismissingKeyguard(intent, + intentSentCallback)); } @Override public void startPendingIntentDismissingKeyguard(PendingIntent intent, Runnable intentSentCallback, View associatedView) { - if (mActualStarter == null) { - return; - } - mActualStarter.startPendingIntentDismissingKeyguard(intent, intentSentCallback, - associatedView); + mActualStarter.ifPresent( + starter -> starter.get().startPendingIntentDismissingKeyguard(intent, + intentSentCallback, associatedView)); } @Override public void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade, int flags) { - if (mActualStarter == null) { - return; - } - mActualStarter.startActivity(intent, onlyProvisioned, dismissShade, flags); + mActualStarter.ifPresent( + starter -> starter.get().startActivity(intent, onlyProvisioned, dismissShade, + flags)); } @Override public void startActivity(Intent intent, boolean dismissShade) { - if (mActualStarter == null) { - return; - } - mActualStarter.startActivity(intent, dismissShade); + mActualStarter.ifPresent(starter -> starter.get().startActivity(intent, dismissShade)); } @Override public void startActivity(Intent intent, boolean onlyProvisioned, boolean dismissShade) { - if (mActualStarter == null) { - return; - } - mActualStarter.startActivity(intent, onlyProvisioned, dismissShade); + mActualStarter.ifPresent( + starter -> starter.get().startActivity(intent, onlyProvisioned, dismissShade)); } @Override public void startActivity(Intent intent, boolean dismissShade, Callback callback) { - if (mActualStarter == null) { - return; - } - mActualStarter.startActivity(intent, dismissShade, callback); + mActualStarter.ifPresent( + starter -> starter.get().startActivity(intent, dismissShade, callback)); } @Override public void postStartActivityDismissingKeyguard(Intent intent, int delay) { - if (mActualStarter == null) { - return; - } - mActualStarter.postStartActivityDismissingKeyguard(intent, delay); + mActualStarter.ifPresent( + starter -> starter.get().postStartActivityDismissingKeyguard(intent, delay)); } @Override public void postStartActivityDismissingKeyguard(PendingIntent intent) { - if (mActualStarter == null) { - return; - } - mActualStarter.postStartActivityDismissingKeyguard(intent); + mActualStarter.ifPresent( + starter -> starter.get().postStartActivityDismissingKeyguard(intent)); } @Override public void postQSRunnableDismissingKeyguard(Runnable runnable) { - if (mActualStarter == null) { - return; - } - mActualStarter.postQSRunnableDismissingKeyguard(runnable); + mActualStarter.ifPresent( + starter -> starter.get().postQSRunnableDismissingKeyguard(runnable)); } @Override public void dismissKeyguardThenExecute(OnDismissAction action, Runnable cancel, boolean afterKeyguardGone) { - if (mActualStarter == null) { - return; - } - mActualStarter.dismissKeyguardThenExecute(action, cancel, afterKeyguardGone); - } - - public void setActivityStarterImpl(ActivityStarter starter) { - mActualStarter = starter; + mActualStarter.ifPresent(starter -> starter.get().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 dd38a332df68f..94e7c68c831d4 100644 --- a/packages/SystemUI/src/com/android/systemui/Dependency.java +++ b/packages/SystemUI/src/com/android/systemui/Dependency.java @@ -210,7 +210,6 @@ public class Dependency { private final ArrayMap mProviders = new ArrayMap<>(); @Inject Lazy mActivityStarter; - @Inject Lazy mActivityStarterDelegate; @Inject Lazy mBroadcastDispatcher; @Inject Lazy mAsyncSensorManager; @Inject Lazy mBluetoothController; @@ -341,7 +340,6 @@ public class Dependency { mProviders.put(MAIN_LOOPER, mMainLooper::get); mProviders.put(MAIN_HANDLER, mMainHandler::get); mProviders.put(ActivityStarter.class, mActivityStarter::get); - mProviders.put(ActivityStarterDelegate.class, mActivityStarterDelegate::get); mProviders.put(BroadcastDispatcher.class, mBroadcastDispatcher::get); mProviders.put(AsyncSensorManager.class, mAsyncSensorManager::get); 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 f4c7e23f9cda0..312f9c1811211 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -124,7 +124,6 @@ import com.android.keyguard.KeyguardUpdateMonitor; import com.android.keyguard.KeyguardUpdateMonitorCallback; import com.android.keyguard.ViewMediatorCallback; import com.android.systemui.ActivityIntentHelper; -import com.android.systemui.ActivityStarterDelegate; import com.android.systemui.AutoReinflateContainer; import com.android.systemui.DejankUtils; import com.android.systemui.DemoMode; @@ -898,8 +897,6 @@ public class StatusBar extends SystemUI implements DemoMode, mStatusBarWindowViewController, mNotificationPanel, mAmbientIndicationContainer); - Dependency.get(ActivityStarterDelegate.class).setActivityStarterImpl(this); - mConfigurationController.addCallback(this); // set the initial view visibility diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java index 49b47c5c72d42..6bd24b954bda4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java @@ -47,6 +47,7 @@ import androidx.test.filters.SmallTest; import com.android.internal.logging.MetricsLogger; import com.android.systemui.Dependency; import com.android.systemui.SysuiTestCase; +import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.qs.QSTile; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.qs.QSHost; @@ -83,6 +84,7 @@ public class QSTileImplTest extends SysuiTestCase { String spec = "spec"; mTestableLooper = TestableLooper.get(this); mDependency.injectTestDependency(Dependency.BG_LOOPER, mTestableLooper.getLooper()); + mDependency.injectMockDependency(ActivityStarter.class); mMetricsLogger = mDependency.injectMockDependency(MetricsLogger.class); mStatusBarStateController = mDependency.injectMockDependency(StatusBarStateController.class);