From bb46f550d7af463062384822cb54a8153804b817 Mon Sep 17 00:00:00 2001 From: Michael Mikhail Date: Mon, 22 Aug 2022 20:29:03 +0000 Subject: [PATCH] Getting rid of Dependency.get Moving Dependency.get from HeadsUpManager class and its children classes by passing the AccessibiltyManagerWrapper and UIEventLogger object in the constructor. Bug: 218354106 Test: manual Change-Id: I5cd2435c0608968a2d880d742ebb1a307c48b02b Merged-In: I5cd2435c0608968a2d880d742ebb1a307c48b02b --- .../dagger/ReferenceSystemUIModule.java | 12 ++++++++-- .../AlertingNotificationManager.java | 7 +++--- .../statusbar/phone/HeadsUpManagerPhone.java | 11 +++++++-- .../statusbar/policy/HeadsUpManager.java | 15 ++++++++---- .../android/systemui/tv/TvSystemUIModule.java | 12 ++++++++-- .../AlertingNotificationManagerTest.java | 12 ++++------ .../row/NotificationTestHelper.java | 7 +++++- .../phone/HeadsUpManagerPhoneTest.java | 24 ++++++++++++++----- .../statusbar/policy/HeadsUpManagerTest.java | 18 +++++++------- 9 files changed, 82 insertions(+), 36 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java index a9e47c48b2fe7..4157728d8360f 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/dagger/ReferenceSystemUIModule.java @@ -26,6 +26,7 @@ import android.os.PowerManager; import androidx.annotation.Nullable; +import com.android.internal.logging.UiEventLogger; import com.android.keyguard.KeyguardViewController; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.qualifiers.Background; @@ -61,6 +62,7 @@ import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; +import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryControllerImpl; import com.android.systemui.statusbar.policy.ConfigurationController; @@ -190,7 +192,10 @@ public abstract class ReferenceSystemUIModule { KeyguardBypassController bypassController, GroupMembershipManager groupManager, VisualStabilityProvider visualStabilityProvider, - ConfigurationController configurationController) { + ConfigurationController configurationController, + @Main Handler handler, + AccessibilityManagerWrapper accessibilityManagerWrapper, + UiEventLogger uiEventLogger) { return new HeadsUpManagerPhone( context, headsUpManagerLogger, @@ -198,7 +203,10 @@ public abstract class ReferenceSystemUIModule { bypassController, groupManager, visualStabilityProvider, - configurationController + configurationController, + handler, + accessibilityManagerWrapper, + uiEventLogger ); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/AlertingNotificationManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/AlertingNotificationManager.java index 15c75ffb8c138..a72b7f167d95c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/AlertingNotificationManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/AlertingNotificationManager.java @@ -19,13 +19,13 @@ package com.android.systemui.statusbar; import android.annotation.NonNull; import android.annotation.Nullable; import android.os.Handler; -import android.os.Looper; import android.os.SystemClock; import android.util.ArrayMap; import android.util.ArraySet; import android.view.accessibility.AccessibilityEvent; import com.android.internal.annotations.VisibleForTesting; +import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; import com.android.systemui.statusbar.policy.HeadsUpManagerLogger; @@ -43,14 +43,15 @@ public abstract class AlertingNotificationManager { protected final ArrayMap mAlertEntries = new ArrayMap<>(); protected final HeadsUpManagerLogger mLogger; - public AlertingNotificationManager(HeadsUpManagerLogger logger) { + public AlertingNotificationManager(HeadsUpManagerLogger logger, @Main Handler handler) { mLogger = logger; + mHandler = handler; } protected int mMinimumDisplayTime; protected int mAutoDismissNotificationDecay; @VisibleForTesting - public Handler mHandler = new Handler(Looper.getMainLooper()); + public Handler mHandler; /** * Called when posting a new notification that should alert the user and appear on screen. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java index 51536c310dc9a..38c3f93dc6ad9 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhone.java @@ -21,14 +21,17 @@ import android.annotation.Nullable; import android.content.Context; import android.content.res.Resources; import android.graphics.Region; +import android.os.Handler; import android.util.Pools; import androidx.collection.ArraySet; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.logging.UiEventLogger; import com.android.internal.policy.SystemBarUtils; import com.android.systemui.Dumpable; import com.android.systemui.R; +import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener; import com.android.systemui.statusbar.StatusBarState; @@ -37,6 +40,7 @@ import com.android.systemui.statusbar.notification.collection.provider.OnReorder import com.android.systemui.statusbar.notification.collection.provider.VisualStabilityProvider; import com.android.systemui.statusbar.notification.collection.render.GroupMembershipManager; import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow; +import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.HeadsUpManager; import com.android.systemui.statusbar.policy.HeadsUpManagerLogger; @@ -104,8 +108,11 @@ public class HeadsUpManagerPhone extends HeadsUpManager implements Dumpable, KeyguardBypassController bypassController, GroupMembershipManager groupMembershipManager, VisualStabilityProvider visualStabilityProvider, - ConfigurationController configurationController) { - super(context, logger); + ConfigurationController configurationController, + @Main Handler handler, + AccessibilityManagerWrapper accessibilityManagerWrapper, + UiEventLogger uiEventLogger) { + super(context, logger, handler, accessibilityManagerWrapper, uiEventLogger); Resources resources = mContext.getResources(); mExtensionTime = resources.getInteger(R.integer.ambient_notification_extension_time); statusBarStateController.addCallback(mStatusBarStateListener); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java index d3837d7347dcf..9f21ed9133187 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HeadsUpManager.java @@ -24,6 +24,7 @@ import android.app.Notification; import android.content.Context; import android.content.res.Resources; import android.database.ContentObserver; +import android.os.Handler; import android.provider.Settings; import android.util.ArrayMap; import android.view.accessibility.AccessibilityManager; @@ -31,9 +32,9 @@ import android.view.accessibility.AccessibilityManager; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.UiEvent; import com.android.internal.logging.UiEventLogger; -import com.android.systemui.Dependency; import com.android.systemui.EventLogTags; import com.android.systemui.R; +import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.statusbar.AlertingNotificationManager; import com.android.systemui.statusbar.notification.collection.NotificationEntry; import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag; @@ -79,11 +80,15 @@ public abstract class HeadsUpManager extends AlertingNotificationManager { } } - public HeadsUpManager(@NonNull final Context context, HeadsUpManagerLogger logger) { - super(logger); + public HeadsUpManager(@NonNull final Context context, + HeadsUpManagerLogger logger, + @Main Handler handler, + AccessibilityManagerWrapper accessibilityManagerWrapper, + UiEventLogger uiEventLogger) { + super(logger, handler); mContext = context; - mAccessibilityMgr = Dependency.get(AccessibilityManagerWrapper.class); - mUiEventLogger = Dependency.get(UiEventLogger.class); + mAccessibilityMgr = accessibilityManagerWrapper; + mUiEventLogger = uiEventLogger; Resources resources = context.getResources(); mMinimumDisplayTime = resources.getInteger(R.integer.heads_up_notification_minimum_time); mAutoDismissNotificationDecay = resources.getInteger(R.integer.heads_up_notification_decay); diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java index aac5bf0fe00d5..abffe5550415d 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java +++ b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIModule.java @@ -26,6 +26,7 @@ import android.os.PowerManager; import androidx.annotation.Nullable; +import com.android.internal.logging.UiEventLogger; import com.android.keyguard.KeyguardViewController; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; @@ -63,6 +64,7 @@ import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; import com.android.systemui.statusbar.phone.KeyguardBypassController; import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; +import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.BatteryController; import com.android.systemui.statusbar.policy.BatteryControllerImpl; import com.android.systemui.statusbar.policy.ConfigurationController; @@ -172,7 +174,10 @@ public abstract class TvSystemUIModule { KeyguardBypassController bypassController, GroupMembershipManager groupManager, VisualStabilityProvider visualStabilityProvider, - ConfigurationController configurationController) { + ConfigurationController configurationController, + @Main Handler handler, + AccessibilityManagerWrapper accessibilityManagerWrapper, + UiEventLogger uiEventLogger) { return new HeadsUpManagerPhone( context, headsUpManagerLogger, @@ -180,7 +185,10 @@ public abstract class TvSystemUIModule { bypassController, groupManager, visualStabilityProvider, - configurationController + configurationController, + handler, + accessibilityManagerWrapper, + uiEventLogger ); } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/AlertingNotificationManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/AlertingNotificationManagerTest.java index 98de1763825f8..c6207e53beed0 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/AlertingNotificationManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/AlertingNotificationManagerTest.java @@ -82,12 +82,10 @@ public class AlertingNotificationManagerTest extends SysuiTestCase { private final class TestableAlertingNotificationManager extends AlertingNotificationManager { private AlertEntry mLastCreatedEntry; - private TestableAlertingNotificationManager() { - super(mock(HeadsUpManagerLogger.class)); + private TestableAlertingNotificationManager(Handler handler) { + super(mock(HeadsUpManagerLogger.class), handler); mMinimumDisplayTime = TEST_MINIMUM_DISPLAY_TIME; mAutoDismissNotificationDecay = TEST_AUTO_DISMISS_TIME; - mHandler.removeCallbacksAndMessages(null); - mHandler = mTestHandler; } @Override @@ -108,8 +106,8 @@ public class AlertingNotificationManagerTest extends SysuiTestCase { } } - protected AlertingNotificationManager createAlertingNotificationManager() { - return new TestableAlertingNotificationManager(); + protected AlertingNotificationManager createAlertingNotificationManager(Handler handler) { + return new TestableAlertingNotificationManager(handler); } protected StatusBarNotification createNewSbn(int id, Notification.Builder n) { @@ -143,7 +141,7 @@ public class AlertingNotificationManagerTest extends SysuiTestCase { .build(); mEntry.setRow(mRow); - mAlertingNotificationManager = createAlertingNotificationManager(); + mAlertingNotificationManager = createAlertingNotificationManager(mTestHandler); } @After diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java index 66821dd5e4b47..9abdeb900c679 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java @@ -48,6 +48,7 @@ import android.view.LayoutInflater; import android.widget.RemoteViews; import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.UiEventLogger; import com.android.systemui.TestableDependency; import com.android.systemui.classifier.FalsingCollectorFake; import com.android.systemui.classifier.FalsingManagerFake; @@ -75,6 +76,7 @@ import com.android.systemui.statusbar.notification.row.NotificationRowContentBin import com.android.systemui.statusbar.phone.ConfigurationControllerImpl; import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; import com.android.systemui.statusbar.phone.KeyguardBypassController; +import com.android.systemui.statusbar.policy.AccessibilityManagerWrapper; import com.android.systemui.statusbar.policy.HeadsUpManagerLogger; import com.android.systemui.statusbar.policy.InflatedSmartReplyState; import com.android.systemui.statusbar.policy.InflatedSmartReplyViewHolder; @@ -144,7 +146,10 @@ public class NotificationTestHelper { mock(KeyguardBypassController.class), mock(GroupMembershipManager.class), mock(VisualStabilityProvider.class), - mock(ConfigurationControllerImpl.class) + mock(ConfigurationControllerImpl.class), + new Handler(mTestLooper.getLooper()), + mock(AccessibilityManagerWrapper.class), + mock(UiEventLogger.class) ); mHeadsUpManager.mHandler.removeCallbacksAndMessages(null); mHeadsUpManager.mHandler = new Handler(mTestLooper.getLooper()); diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhoneTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhoneTest.java index 2ab2172b7e290..e252401d328cd 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhoneTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpManagerPhoneTest.java @@ -23,11 +23,13 @@ import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.Mockito.when; import android.content.Context; +import android.os.Handler; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; import androidx.test.filters.SmallTest; +import com.android.internal.logging.UiEventLogger; import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.AlertingNotificationManager; import com.android.systemui.statusbar.AlertingNotificationManagerTest; @@ -64,6 +66,8 @@ public class HeadsUpManagerPhoneTest extends AlertingNotificationManagerTest { @Mock private StatusBarStateController mStatusBarStateController; @Mock private KeyguardBypassController mBypassController; @Mock private ConfigurationControllerImpl mConfigurationController; + @Mock private AccessibilityManagerWrapper mAccessibilityManagerWrapper; + @Mock private UiEventLogger mUiEventLogger; private boolean mLivesPastNormalTime; private static final class TestableHeadsUpManagerPhone extends HeadsUpManagerPhone { @@ -74,7 +78,10 @@ public class HeadsUpManagerPhoneTest extends AlertingNotificationManagerTest { VisualStabilityProvider visualStabilityProvider, StatusBarStateController statusBarStateController, KeyguardBypassController keyguardBypassController, - ConfigurationController configurationController + ConfigurationController configurationController, + Handler handler, + AccessibilityManagerWrapper accessibilityManagerWrapper, + UiEventLogger uiEventLogger ) { super( context, @@ -83,7 +90,10 @@ public class HeadsUpManagerPhoneTest extends AlertingNotificationManagerTest { keyguardBypassController, groupManager, visualStabilityProvider, - configurationController + configurationController, + handler, + accessibilityManagerWrapper, + uiEventLogger ); mMinimumDisplayTime = TEST_MINIMUM_DISPLAY_TIME; mAutoDismissNotificationDecay = TEST_AUTO_DISMISS_TIME; @@ -103,6 +113,8 @@ public class HeadsUpManagerPhoneTest extends AlertingNotificationManagerTest { when(mVSProvider.isReorderingAllowed()).thenReturn(true); mDependency.injectMockDependency(NotificationShadeWindowController.class); mDependency.injectMockDependency(ConfigurationController.class); + super.setUp(); + mHeadsUpManager = new TestableHeadsUpManagerPhone( mContext, mHeadsUpManagerLogger, @@ -110,11 +122,11 @@ public class HeadsUpManagerPhoneTest extends AlertingNotificationManagerTest { mVSProvider, mStatusBarStateController, mBypassController, - mConfigurationController + mConfigurationController, + mTestHandler, + mAccessibilityManagerWrapper, + mUiEventLogger ); - super.setUp(); - mHeadsUpManager.mHandler.removeCallbacksAndMessages(null); - mHeadsUpManager.mHandler = mTestHandler; } @After diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HeadsUpManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HeadsUpManagerTest.java index b8e25ab436914..9764b8c07c2c1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HeadsUpManagerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HeadsUpManagerTest.java @@ -36,6 +36,7 @@ import android.app.PendingIntent; import android.app.Person; import android.content.Context; import android.content.Intent; +import android.os.Handler; import android.service.notification.StatusBarNotification; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; @@ -62,7 +63,6 @@ public class HeadsUpManagerTest extends AlertingNotificationManagerTest { private static final int TEST_A11Y_AUTO_DISMISS_TIME = 600; private static final int TEST_A11Y_TIMEOUT_TIME = 5_000; - private AccessibilityManagerWrapper mAccessibilityMgr; private HeadsUpManager mHeadsUpManager; private boolean mLivesPastNormalTime; private UiEventLoggerFake mUiEventLoggerFake = new UiEventLoggerFake(); @@ -71,10 +71,15 @@ public class HeadsUpManagerTest extends AlertingNotificationManagerTest { @Mock private StatusBarNotification mSbn; @Mock private Notification mNotification; @Mock private HeadsUpManagerLogger mLogger; + @Mock private AccessibilityManagerWrapper mAccessibilityMgr; private final class TestableHeadsUpManager extends HeadsUpManager { - TestableHeadsUpManager(Context context, HeadsUpManagerLogger logger) { - super(context, logger); + TestableHeadsUpManager(Context context, + HeadsUpManagerLogger logger, + Handler handler, + AccessibilityManagerWrapper accessibilityManagerWrapper, + UiEventLogger uiEventLogger) { + super(context, logger, handler, accessibilityManagerWrapper, uiEventLogger); mMinimumDisplayTime = TEST_MINIMUM_DISPLAY_TIME; mAutoDismissNotificationDecay = TEST_AUTO_DISMISS_TIME; } @@ -87,14 +92,11 @@ public class HeadsUpManagerTest extends AlertingNotificationManagerTest { @Before public void setUp() { initMocks(this); - mAccessibilityMgr = mDependency.injectMockDependency(AccessibilityManagerWrapper.class); - mDependency.injectTestDependency(UiEventLogger.class, mUiEventLoggerFake); when(mEntry.getSbn()).thenReturn(mSbn); when(mSbn.getNotification()).thenReturn(mNotification); - mHeadsUpManager = new TestableHeadsUpManager(mContext, mLogger); super.setUp(); - mHeadsUpManager.mHandler.removeCallbacksAndMessages(null); - mHeadsUpManager.mHandler = mTestHandler; + mHeadsUpManager = new TestableHeadsUpManager(mContext, mLogger, mTestHandler, + mAccessibilityMgr, mUiEventLoggerFake); } @After