summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2019-11-19 01:35:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-11-19 01:35:04 +0000
commite5deb3f1c93e0750637252ca5d3b125e9d28bdc6 (patch)
tree71dc157b6c5eb1822092fa4dfd5535e95ffd25c3
parenta3f338f126a9780f3ec2ac320578e9571b158ce9 (diff)
parent4c73e65592e432d8effdffa5a19258d6757e1576 (diff)
Merge "Make StatusBarNotificationActivityStarter injectable."
-rw-r--r--packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java4
-rw-r--r--packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java6
-rw-r--r--packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java8
-rw-r--r--packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java24
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java10
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java32
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java3
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java174
-rw-r--r--packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java16
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java24
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java2
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java3
13 files changed, 241 insertions, 69 deletions
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
index f944d553b282..bef769d7ba10 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -121,6 +121,7 @@ import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
+import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.phone.StatusBarWindowViewController;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -306,6 +307,8 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
Optional<Divider> dividerOptional,
SuperStatusBarViewFactory superStatusBarViewFactory,
LightsOutNotifController lightsOutNotifController,
+ StatusBarNotificationActivityStarter.Builder
+ statusBarNotificationActivityStarterBuilder,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
ViewMediatorCallback viewMediatorCallback,
DismissCallbackRegistry dismissCallbackRegistry,
@@ -383,6 +386,7 @@ public class CarStatusBar extends StatusBar implements CarBatteryController.Batt
remoteInputUriController,
dividerOptional,
lightsOutNotifController,
+ statusBarNotificationActivityStarterBuilder,
superStatusBarViewFactory,
statusBarKeyguardViewManager,
viewMediatorCallback,
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
index eaf4ffb66227..6529868c19ad 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
@@ -80,6 +80,7 @@ import com.android.systemui.statusbar.phone.NotificationGroupManager;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
+import com.android.systemui.statusbar.phone.StatusBarNotificationActivityStarter;
import com.android.systemui.statusbar.phone.StatusBarWindowController;
import com.android.systemui.statusbar.phone.StatusBarWindowViewController;
import com.android.systemui.statusbar.policy.BatteryController;
@@ -179,6 +180,8 @@ public class CarStatusBarModule {
Optional<Divider> dividerOptional,
SuperStatusBarViewFactory superStatusBarViewFactory,
LightsOutNotifController lightsOutNotifController,
+ StatusBarNotificationActivityStarter.Builder
+ statusBarNotificationActivityStarterBuilder,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
ViewMediatorCallback viewMediatorCallback,
DismissCallbackRegistry dismissCallbackRegistry,
@@ -255,6 +258,7 @@ public class CarStatusBarModule {
dividerOptional,
superStatusBarViewFactory,
lightsOutNotifController,
+ statusBarNotificationActivityStarterBuilder,
statusBarKeyguardViewManager,
viewMediatorCallback,
dismissCallbackRegistry,
diff --git a/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java b/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
index 2b62e040b1fd..63840bcb293a 100644
--- a/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/ActivityIntentHelper.java
@@ -24,14 +24,20 @@ import android.content.pm.ResolveInfo;
import java.util.List;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Contains useful methods for querying properties of an Activity Intent.
*/
+@Singleton
public class ActivityIntentHelper {
private final Context mContext;
+ @Inject
public ActivityIntentHelper(Context context) {
+ // TODO: inject a package manager, not a context.
mContext = context;
}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
index 87fe3a21186d..e31e44e7a736 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
@@ -33,7 +33,6 @@ import android.view.IWindowManager;
import android.view.LayoutInflater;
import com.android.internal.logging.MetricsLogger;
-import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.ViewMediatorCallback;
import com.android.systemui.broadcast.BroadcastDispatcher;
@@ -141,13 +140,6 @@ public class DependencyProvider {
return new DisplayMetrics();
}
- @Singleton
- @Provides
- public IStatusBarService provideIStatusBarService() {
- return IStatusBarService.Stub.asInterface(
- ServiceManager.getService(Context.STATUS_BAR_SERVICE));
- }
-
/** */
@Singleton
@Provides
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
index fffba8cc1639..0d4cc0170be9 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemServicesModule.java
@@ -22,6 +22,7 @@ import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.IActivityManager;
import android.app.IWallpaperManager;
+import android.app.KeyguardManager;
import android.app.WallpaperManager;
import android.content.Context;
import android.content.res.Resources;
@@ -30,10 +31,13 @@ import android.os.Handler;
import android.os.PowerManager;
import android.os.ServiceManager;
import android.os.UserHandle;
+import android.service.dreams.DreamService;
+import android.service.dreams.IDreamManager;
import android.view.IWindowManager;
import android.view.WindowManager;
import android.view.WindowManagerGlobal;
+import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.util.LatencyTracker;
import com.android.settingslib.bluetooth.LocalBluetoothManager;
import com.android.systemui.dagger.qualifiers.BgHandler;
@@ -64,6 +68,20 @@ public class SystemServicesModule {
}
@Provides
+ @Singleton
+ static IDreamManager provideIDreamManager() {
+ return IDreamManager.Stub.asInterface(
+ ServiceManager.checkService(DreamService.DREAM_SERVICE));
+ }
+
+ @Singleton
+ @Provides
+ static IStatusBarService provideIStatusBarService() {
+ return IStatusBarService.Stub.asInterface(
+ ServiceManager.getService(Context.STATUS_BAR_SERVICE));
+ }
+
+ @Provides
@Nullable
static IWallpaperManager provideIWallPaperManager() {
return IWallpaperManager.Stub.asInterface(
@@ -78,6 +96,12 @@ public class SystemServicesModule {
@Singleton
@Provides
+ static KeyguardManager provideKeyguardManager(Context context) {
+ return context.getSystemService(KeyguardManager.class);
+ }
+
+ @Singleton
+ @Provides
static LatencyTracker provideLatencyTracker(Context context) {
return LatencyTracker.getInstance(context);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java b/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
index e808ad12af0b..9398e6f689f6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/SuperStatusBarViewFactory.java
@@ -22,6 +22,7 @@ import android.view.ViewGroup;
import com.android.systemui.R;
import com.android.systemui.statusbar.phone.LockIcon;
+import com.android.systemui.statusbar.phone.NotificationPanelView;
import com.android.systemui.statusbar.phone.StatusBarWindowView;
import com.android.systemui.util.InjectionInflationController;
@@ -95,4 +96,13 @@ public class SuperStatusBarViewFactory {
}
return mNotificationShelf;
}
+
+ public NotificationPanelView getNotificationPanelView() {
+ StatusBarWindowView statusBarWindowView = getStatusBarWindowView();
+ if (statusBarWindowView == null) {
+ return null;
+ }
+
+ return mStatusBarWindowView.findViewById(R.id.notification_panel);
+ }
}
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 2ace45c978e5..06183b780028 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -30,8 +30,6 @@ import static android.view.WindowInsetsController.APPEARANCE_LOW_PROFILE_BARS;
import static android.view.WindowInsetsController.APPEARANCE_OPAQUE_TOP_BAR;
import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
-import static com.android.systemui.Dependency.BG_HANDLER;
-import static com.android.systemui.Dependency.MAIN_HANDLER;
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_ASLEEP;
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWAKE;
import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_WAKING;
@@ -123,7 +121,6 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.internal.statusbar.IStatusBarService;
import com.android.internal.statusbar.RegisterStatusBarResult;
import com.android.internal.view.AppearanceRegion;
-import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.KeyguardUpdateMonitor;
import com.android.keyguard.KeyguardUpdateMonitorCallback;
import com.android.keyguard.ViewMediatorCallback;
@@ -386,6 +383,8 @@ public class StatusBar extends SystemUI implements DemoMode,
private final PluginManager mPluginManager;
private final RemoteInputUriController mRemoteInputUriController;
private final Optional<Divider> mDividerOptional;
+ private final StatusBarNotificationActivityStarter.Builder
+ mStatusBarNotificationActivityStarterBuilder;
private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
private final LightsOutNotifController mLightsOutNotifController;
private final DismissCallbackRegistry mDismissCallbackRegistry;
@@ -678,6 +677,8 @@ public class StatusBar extends SystemUI implements DemoMode,
RemoteInputUriController remoteInputUriController,
Optional<Divider> dividerOptional,
LightsOutNotifController lightsOutNotifController,
+ StatusBarNotificationActivityStarter.Builder
+ statusBarNotificationActivityStarterBuilder,
SuperStatusBarViewFactory superStatusBarViewFactory,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
ViewMediatorCallback viewMediatorCallback,
@@ -748,7 +749,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mPluginManager = pluginManager;
mRemoteInputUriController = remoteInputUriController;
mDividerOptional = dividerOptional;
-
+ mStatusBarNotificationActivityStarterBuilder = statusBarNotificationActivityStarterBuilder;
mSuperStatusBarViewFactory = superStatusBarViewFactory;
mLightsOutNotifController = lightsOutNotifController;
mStatusBarKeyguardViewManager = statusBarKeyguardViewManager;
@@ -967,7 +968,7 @@ public class StatusBar extends SystemUI implements DemoMode,
// TODO: Deal with the ugliness that comes from having some of the statusbar broken out
// into fragments, but the rest here, it leaves some awkward lifecycle and whatnot.
- mNotificationPanel = mStatusBarWindow.findViewById(R.id.notification_panel);
+ mNotificationPanel = mSuperStatusBarViewFactory.getNotificationPanelView();
mStackScroller = mStatusBarWindow.findViewById(R.id.notification_stack_scroller);
NotificationListContainer notifListContainer = (NotificationListContainer) mStackScroller;
@@ -1228,6 +1229,7 @@ public class StatusBar extends SystemUI implements DemoMode,
mStatusBarStateController,
mNotificationLogger);
+ // TODO: inject this.
mPresenter = new StatusBarNotificationPresenter(mContext, mNotificationPanel,
mHeadsUpManager, mStatusBarWindow, mStackScroller, mDozeScrimController,
mScrimController, mActivityLaunchAnimator, mDynamicPrivacyController,
@@ -1242,20 +1244,12 @@ public class StatusBar extends SystemUI implements DemoMode,
mNotificationShelf.setOnActivatedListener(mPresenter);
mRemoteInputManager.getController().addCallback(mStatusBarWindowController);
- final StatusBarRemoteInputCallback mStatusBarRemoteInputCallback =
- (StatusBarRemoteInputCallback) Dependency.get(
- NotificationRemoteInputManager.Callback.class);
- final ActivityStarter activityStarter = Dependency.get(ActivityStarter.class);
-
- mNotificationActivityStarter = new StatusBarNotificationActivityStarter(mContext,
- mCommandQueue, mAssistManagerLazy.get(), mNotificationPanel, mPresenter,
- mEntryManager, mHeadsUpManager, activityStarter, mActivityLaunchAnimator,
- mBarService, mStatusBarStateController, mKeyguardManager, mDreamManager,
- mRemoteInputManager, mStatusBarRemoteInputCallback, mGroupManager,
- mLockscreenUserManager, this, mKeyguardStateController,
- mNotificationInterruptionStateProvider, mMetricsLogger,
- new LockPatternUtils(mContext), Dependency.get(MAIN_HANDLER),
- Dependency.get(BG_HANDLER), mActivityIntentHelper, mBubbleController);
+ mNotificationActivityStarter =
+ mStatusBarNotificationActivityStarterBuilder
+ .setShadeController(this)
+ .setActivityLaunchAnimator(mActivityLaunchAnimator)
+ .setNotificationPresenter(mPresenter)
+ .build();
mGutsManager.setNotificationActivityStarter(mNotificationActivityStarter);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
index ffb5afe70915..5d69409d1d4c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
@@ -161,6 +161,8 @@ public class StatusBarModule {
RemoteInputUriController remoteInputUriController,
Optional<Divider> dividerOptional,
LightsOutNotifController lightsOutNotifController,
+ StatusBarNotificationActivityStarter.Builder
+ statusBarNotificationActivityStarterBuilder,
SuperStatusBarViewFactory superStatusBarViewFactory,
StatusBarKeyguardViewManager statusBarKeyguardViewManager,
ViewMediatorCallback viewMediatorCallback,
@@ -233,6 +235,7 @@ public class StatusBarModule {
remoteInputUriController,
dividerOptional,
lightsOutNotifController,
+ statusBarNotificationActivityStarterBuilder,
superStatusBarViewFactory,
statusBarKeyguardViewManager,
viewMediatorCallback,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
index b340813b42f8..863874e788c6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
@@ -52,6 +52,8 @@ import com.android.systemui.EventLogTags;
import com.android.systemui.UiOffloadThread;
import com.android.systemui.assist.AssistManager;
import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.dagger.qualifiers.BgHandler;
+import com.android.systemui.dagger.qualifiers.MainHandler;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.CommandQueue;
@@ -60,6 +62,7 @@ import com.android.systemui.statusbar.NotificationPresenter;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.SuperStatusBarViewFactory;
import com.android.systemui.statusbar.notification.ActivityLaunchAnimator;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.NotificationEntryListener;
@@ -71,6 +74,11 @@ import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow
import com.android.systemui.statusbar.policy.HeadsUpUtil;
import com.android.systemui.statusbar.policy.KeyguardStateController;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+import dagger.Lazy;
+
/**
* Status bar implementation of {@link NotificationActivityStarter}.
*/
@@ -79,7 +87,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
private static final String TAG = "NotifActivityStarter";
protected static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- private final AssistManager mAssistManager;
+ private final Lazy<AssistManager> mAssistManagerLazy;
private final NotificationGroupManager mGroupManager;
private final StatusBarRemoteInputCallback mStatusBarRemoteInputCallback;
private final NotificationRemoteInputManager mRemoteInputManager;
@@ -108,32 +116,20 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
private boolean mIsCollapsingToShowActivityOverLockscreen;
- public StatusBarNotificationActivityStarter(Context context,
- CommandQueue commandQueue,
- AssistManager assistManager,
- NotificationPanelView panel,
- NotificationPresenter presenter,
- NotificationEntryManager entryManager,
- HeadsUpManagerPhone headsUpManager,
- ActivityStarter activityStarter,
- ActivityLaunchAnimator activityLaunchAnimator,
- IStatusBarService statusBarService,
- StatusBarStateController statusBarStateController,
- KeyguardManager keyguardManager,
- IDreamManager dreamManager,
- NotificationRemoteInputManager remoteInputManager,
- StatusBarRemoteInputCallback remoteInputCallback,
- NotificationGroupManager groupManager,
+ private StatusBarNotificationActivityStarter(Context context, CommandQueue commandQueue,
+ Lazy<AssistManager> assistManagerLazy, NotificationPanelView panel,
+ NotificationPresenter presenter, NotificationEntryManager entryManager,
+ HeadsUpManagerPhone headsUpManager, ActivityStarter activityStarter,
+ ActivityLaunchAnimator activityLaunchAnimator, IStatusBarService statusBarService,
+ StatusBarStateController statusBarStateController, KeyguardManager keyguardManager,
+ IDreamManager dreamManager, NotificationRemoteInputManager remoteInputManager,
+ StatusBarRemoteInputCallback remoteInputCallback, NotificationGroupManager groupManager,
NotificationLockscreenUserManager lockscreenUserManager,
- ShadeController shadeController,
- KeyguardStateController keyguardStateController,
+ ShadeController shadeController, KeyguardStateController keyguardStateController,
NotificationInterruptionStateProvider notificationInterruptionStateProvider,
- MetricsLogger metricsLogger,
- LockPatternUtils lockPatternUtils,
- Handler mainThreadHandler,
- Handler backgroundHandler,
- ActivityIntentHelper activityIntentHelper,
- BubbleController bubbleController) {
+ MetricsLogger metricsLogger, LockPatternUtils lockPatternUtils,
+ Handler mainThreadHandler, Handler backgroundHandler,
+ ActivityIntentHelper activityIntentHelper, BubbleController bubbleController) {
mContext = context;
mNotificationPanel = panel;
mPresenter = presenter;
@@ -152,7 +148,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
mStatusBarStateController = statusBarStateController;
mNotificationInterruptionStateProvider = notificationInterruptionStateProvider;
mMetricsLogger = metricsLogger;
- mAssistManager = assistManager;
+ mAssistManagerLazy = assistManagerLazy;
mGroupManager = groupManager;
mLockPatternUtils = lockPatternUtils;
mBackgroundHandler = backgroundHandler;
@@ -318,7 +314,7 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
startNotificationIntent(intent, fillInIntent, row, wasOccluded, isActivityIntent);
}
if (isActivityIntent || isBubble) {
- mAssistManager.hideAssist();
+ mAssistManagerLazy.get().hideAssist();
}
if (shouldCollapse()) {
collapseOnMainThread();
@@ -490,4 +486,128 @@ public class StatusBarNotificationActivityStarter implements NotificationActivit
}
});
}
+
+ /**
+ * Public builder for {@link StatusBarNotificationActivityStarter}.
+ */
+ @Singleton
+ public static class Builder {
+ private final Context mContext;
+ private final CommandQueue mCommandQueue;
+ private final Lazy<AssistManager> mAssistManagerLazy;
+ private final NotificationEntryManager mEntryManager;
+ private final HeadsUpManagerPhone mHeadsUpManager;
+ private final ActivityStarter mActivityStarter;
+ private final IStatusBarService mStatusBarService;
+ private final StatusBarStateController mStatusBarStateController;
+ private final KeyguardManager mKeyguardManager;
+ private final IDreamManager mDreamManager;
+ private final NotificationRemoteInputManager mRemoteInputManager;
+ private final StatusBarRemoteInputCallback mRemoteInputCallback;
+ private final NotificationGroupManager mGroupManager;
+ private final NotificationLockscreenUserManager mLockscreenUserManager;
+ private final KeyguardStateController mKeyguardStateController;
+ private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
+ private final MetricsLogger mMetricsLogger;
+ private final LockPatternUtils mLockPatternUtils;
+ private final Handler mMainThreadHandler;
+ private final Handler mBackgroundHandler;
+ private final ActivityIntentHelper mActivityIntentHelper;
+ private final BubbleController mBubbleController;
+ private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
+ private ShadeController mShadeController;
+ private NotificationPresenter mNotificationPresenter;
+ private ActivityLaunchAnimator mActivityLaunchAnimator;
+
+ @Inject
+ public Builder(Context context,
+ CommandQueue commandQueue,
+ Lazy<AssistManager> assistManagerLazy,
+ NotificationEntryManager entryManager,
+ HeadsUpManagerPhone headsUpManager,
+ ActivityStarter activityStarter,
+ IStatusBarService statusBarService,
+ StatusBarStateController statusBarStateController,
+ KeyguardManager keyguardManager,
+ IDreamManager dreamManager,
+ NotificationRemoteInputManager remoteInputManager,
+ StatusBarRemoteInputCallback remoteInputCallback,
+ NotificationGroupManager groupManager,
+ NotificationLockscreenUserManager lockscreenUserManager,
+ KeyguardStateController keyguardStateController,
+ NotificationInterruptionStateProvider notificationInterruptionStateProvider,
+ MetricsLogger metricsLogger,
+ LockPatternUtils lockPatternUtils,
+ @MainHandler Handler mainThreadHandler,
+ @BgHandler Handler backgroundHandler,
+ ActivityIntentHelper activityIntentHelper,
+ BubbleController bubbleController,
+ SuperStatusBarViewFactory superStatusBarViewFactory) {
+ mContext = context;
+ mCommandQueue = commandQueue;
+ mAssistManagerLazy = assistManagerLazy;
+ mEntryManager = entryManager;
+ mHeadsUpManager = headsUpManager;
+ mActivityStarter = activityStarter;
+ mStatusBarService = statusBarService;
+ mStatusBarStateController = statusBarStateController;
+ mKeyguardManager = keyguardManager;
+ mDreamManager = dreamManager;
+ mRemoteInputManager = remoteInputManager;
+ mRemoteInputCallback = remoteInputCallback;
+ mGroupManager = groupManager;
+ mLockscreenUserManager = lockscreenUserManager;
+ mKeyguardStateController = keyguardStateController;
+ mNotificationInterruptionStateProvider = notificationInterruptionStateProvider;
+ mMetricsLogger = metricsLogger;
+ mLockPatternUtils = lockPatternUtils;
+ mMainThreadHandler = mainThreadHandler;
+ mBackgroundHandler = backgroundHandler;
+ mActivityIntentHelper = activityIntentHelper;
+ mBubbleController = bubbleController;
+ mSuperStatusBarViewFactory = superStatusBarViewFactory;
+ }
+ public Builder setShadeController(ShadeController shadeController) {
+ mShadeController = shadeController;
+ return this;
+ }
+
+ public Builder setNotificationPresenter(NotificationPresenter notificationPresenter) {
+ mNotificationPresenter = notificationPresenter;
+ return this;
+ }
+
+ public Builder setActivityLaunchAnimator(ActivityLaunchAnimator activityLaunchAnimator) {
+ mActivityLaunchAnimator = activityLaunchAnimator;
+ return this;
+ }
+
+ public StatusBarNotificationActivityStarter build() {
+ return new StatusBarNotificationActivityStarter(mContext,
+ mCommandQueue, mAssistManagerLazy,
+ mSuperStatusBarViewFactory.getNotificationPanelView(),
+ mNotificationPresenter,
+ mEntryManager,
+ mHeadsUpManager,
+ mActivityStarter,
+ mActivityLaunchAnimator,
+ mStatusBarService,
+ mStatusBarStateController,
+ mKeyguardManager,
+ mDreamManager,
+ mRemoteInputManager,
+ mRemoteInputCallback,
+ mGroupManager,
+ mLockscreenUserManager,
+ mShadeController,
+ mKeyguardStateController,
+ mNotificationInterruptionStateProvider,
+ mMetricsLogger,
+ mLockPatternUtils,
+ mMainThreadHandler,
+ mBackgroundHandler,
+ mActivityIntentHelper,
+ mBubbleController);
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
index 322b23fa50ee..3e6ba4dacb71 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallback.java
@@ -50,6 +50,8 @@ import com.android.systemui.statusbar.policy.KeyguardStateController;
import javax.inject.Inject;
import javax.inject.Singleton;
+import dagger.Lazy;
+
/**
*/
@Singleton
@@ -60,7 +62,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
private final SysuiStatusBarStateController mStatusBarStateController;
private final NotificationLockscreenUserManager mLockscreenUserManager;
private final ActivityStarter mActivityStarter;
- private final ShadeController mShadeController;
+ private final Lazy<ShadeController> mShadeControllerLazy;
private final Context mContext;
private final ActivityIntentHelper mActivityIntentHelper;
private final NotificationGroupManager mGroupManager;
@@ -79,7 +81,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
NotificationLockscreenUserManager notificationLockscreenUserManager,
KeyguardStateController keyguardStateController,
StatusBarStateController statusBarStateController,
- ActivityStarter activityStarter, ShadeController shadeController,
+ ActivityStarter activityStarter, Lazy<ShadeController> shadeControllerLazy,
CommandQueue commandQueue) {
mContext = context;
mContext.registerReceiverAsUser(mChallengeReceiver, UserHandle.ALL,
@@ -87,7 +89,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
mLockscreenUserManager = notificationLockscreenUserManager;
mKeyguardStateController = keyguardStateController;
mStatusBarStateController = (SysuiStatusBarStateController) statusBarStateController;
- mShadeController = shadeController;
+ mShadeControllerLazy = shadeControllerLazy;
mActivityStarter = activityStarter;
mStatusBarStateController.addCallback(this);
mKeyguardManager = context.getSystemService(KeyguardManager.class);
@@ -116,7 +118,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
if (!row.isPinned()) {
mStatusBarStateController.setLeaveOpenOnKeyguardHide(true);
}
- mShadeController.showBouncer(true /* scrimmed */);
+ mShadeControllerLazy.get().showBouncer(true /* scrimmed */);
mPendingRemoteInputView = clicked;
}
@@ -162,8 +164,8 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
});
}
};
- mShadeController.postOnShadeExpanded(clickPendingViewRunnable);
- mShadeController.instantExpandNotificationsPanel();
+ mShadeControllerLazy.get().postOnShadeExpanded(clickPendingViewRunnable);
+ mShadeControllerLazy.get().instantExpandNotificationsPanel();
}
}
@@ -251,7 +253,7 @@ public class StatusBarRemoteInputCallback implements Callback, Callbacks,
boolean handled = defaultHandler.handleClick();
// close the shade if it was open and maybe wait for activity start.
- return handled && mShadeController.closeShadeIfOpen();
+ return handled && mShadeControllerLazy.get().closeShadeIfOpen();
}, null, afterKeyguardGone);
return true;
} else {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
index 07be0d7efffb..6f5cfbecb5d0 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
@@ -64,6 +64,7 @@ import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.NotificationTestHelper;
import com.android.systemui.statusbar.RemoteInputController;
import com.android.systemui.statusbar.StatusBarState;
+import com.android.systemui.statusbar.SuperStatusBarViewFactory;
import com.android.systemui.statusbar.notification.ActivityLaunchAnimator;
import com.android.systemui.statusbar.notification.NotificationActivityStarter;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
@@ -116,8 +117,11 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase {
@Mock
private Intent mContentIntentInner;
@Mock
-
private NotificationActivityStarter mNotificationActivityStarter;
+ @Mock
+ private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
+ @Mock
+ private NotificationPanelView mNotificationPanelView;
private NotificationTestHelper mNotificationTestHelper;
private ExpandableNotificationRow mNotificationRow;
@@ -156,19 +160,25 @@ public class StatusBarNotificationActivityStarterTest extends SysuiTestCase {
mActiveNotifications.add(mBubbleNotificationRow.getEntry());
when(mEntryManager.getVisibleNotifications()).thenReturn(mActiveNotifications);
when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
+ when(mSuperStatusBarViewFactory.getNotificationPanelView())
+ .thenReturn(mNotificationPanelView);
- mNotificationActivityStarter = new StatusBarNotificationActivityStarter(getContext(),
- mock(CommandQueue.class), mAssistManager, mock(NotificationPanelView.class),
- mock(NotificationPresenter.class), mEntryManager, mock(HeadsUpManagerPhone.class),
- mActivityStarter, mock(ActivityLaunchAnimator.class), mStatusBarService,
+ mNotificationActivityStarter = (new StatusBarNotificationActivityStarter.Builder(
+ getContext(), mock(CommandQueue.class), () -> mAssistManager,
+ mEntryManager, mock(HeadsUpManagerPhone.class),
+ mActivityStarter, mStatusBarService,
mock(StatusBarStateController.class), mock(KeyguardManager.class),
mock(IDreamManager.class), mRemoteInputManager,
mock(StatusBarRemoteInputCallback.class), mock(NotificationGroupManager.class),
- mock(NotificationLockscreenUserManager.class), mShadeController,
+ mock(NotificationLockscreenUserManager.class),
mKeyguardStateController,
mock(NotificationInterruptionStateProvider.class), mock(MetricsLogger.class),
mock(LockPatternUtils.class), mHandler, mHandler, mActivityIntentHelper,
- mBubbleController);
+ mBubbleController, mSuperStatusBarViewFactory))
+ .setShadeController(mShadeController)
+ .setNotificationPresenter(mock(NotificationPresenter.class))
+ .setActivityLaunchAnimator(mock(ActivityLaunchAnimator.class))
+ .build();
// set up dismissKeyguardThenExecute to synchronously invoke the OnDismissAction arg
doAnswer(mCallOnDismiss).when(mActivityStarter).dismissKeyguardThenExecute(
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java
index b1b66b5360e3..9d76b425725f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarRemoteInputCallbackTest.java
@@ -72,7 +72,7 @@ public class StatusBarRemoteInputCallbackTest extends SysuiTestCase {
mRemoteInputCallback = spy(new StatusBarRemoteInputCallback(mContext,
mock(NotificationGroupManager.class), mNotificationLockscreenUserManager,
mKeyguardStateController, mStatusBarStateController, mActivityStarter,
- mShadeController, new CommandQueue(mContext)));
+ () -> mShadeController, new CommandQueue(mContext)));
mRemoteInputCallback.mChallengeReceiver = mRemoteInputCallback.new ChallengeReceiver();
}
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 8009ff0faa9d..e78fb9e521e1 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
@@ -236,6 +236,8 @@ public class StatusBarTest extends SysuiTestCase {
@Mock private ScreenPinningRequest mScreenPinningRequest;
@Mock private NotificationEntryManager mEntryManager;
@Mock private LockscreenLockIconController mLockscreenLockIconController;
+ @Mock private StatusBarNotificationActivityStarter.Builder
+ mStatusBarNotificationActivityStarterBuilder;
@Before
public void setup() throws Exception {
@@ -369,6 +371,7 @@ public class StatusBarTest extends SysuiTestCase {
mRemoteInputUriController,
Optional.of(mDivider),
mLightsOutNotifController,
+ mStatusBarNotificationActivityStarterBuilder,
mSuperStatusBarViewFactory,
mStatusBarKeyguardViewManager,
mViewMediatorCallback,