diff options
4 files changed, 47 insertions, 10 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayNotificationCountProvider.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayNotificationCountProvider.java index 3dd43866e465..f9fc1f3ca184 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayNotificationCountProvider.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayNotificationCountProvider.java @@ -20,7 +20,6 @@ import android.annotation.NonNull; import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; -import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Background; import com.android.systemui.statusbar.NotificationListener; import com.android.systemui.statusbar.NotificationListener.NotificationHandler; @@ -33,13 +32,10 @@ import java.util.List; import java.util.Set; import java.util.concurrent.Executor; -import javax.inject.Inject; - /*** * {@link DreamOverlayNotificationCountProvider} provides the current notification count to * registered callbacks. Ongoing notifications are not included in the count. */ -@SysUISingleton public class DreamOverlayNotificationCountProvider implements CallbackController<DreamOverlayNotificationCountProvider.Callback> { private final Set<String> mNotificationKeys = new HashSet<>(); @@ -82,7 +78,6 @@ public class DreamOverlayNotificationCountProvider } }; - @Inject public DreamOverlayNotificationCountProvider( NotificationListener notificationListener, @Background Executor bgExecutor) { diff --git a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java index e878b22f61ed..250313d0aae8 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/DreamOverlayStatusBarViewController.java @@ -49,6 +49,7 @@ import com.android.systemui.util.time.DateFormatUtil; import java.util.Locale; import java.util.Map; +import java.util.Optional; import java.util.concurrent.Executor; import javax.inject.Inject; @@ -65,7 +66,8 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve private final Resources mResources; private final DateFormatUtil mDateFormatUtil; private final IndividualSensorPrivacyController mSensorPrivacyController; - private final DreamOverlayNotificationCountProvider mDreamOverlayNotificationCountProvider; + private final Optional<DreamOverlayNotificationCountProvider> + mDreamOverlayNotificationCountProvider; private final ZenModeController mZenModeController; private final Executor mMainExecutor; @@ -125,7 +127,7 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve NextAlarmController nextAlarmController, DateFormatUtil dateFormatUtil, IndividualSensorPrivacyController sensorPrivacyController, - DreamOverlayNotificationCountProvider dreamOverlayNotificationCountProvider, + Optional<DreamOverlayNotificationCountProvider> dreamOverlayNotificationCountProvider, ZenModeController zenModeController, StatusBarWindowStateController statusBarWindowStateController) { super(view); @@ -161,7 +163,9 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve mZenModeController.addCallback(mZenModeCallback); updatePriorityModeStatusIcon(); - mDreamOverlayNotificationCountProvider.addCallback(mNotificationCountCallback); + mDreamOverlayNotificationCountProvider.ifPresent( + provider -> provider.addCallback(mNotificationCountCallback)); + mTouchInsetSession.addViewToTracking(mView); } @@ -171,7 +175,8 @@ public class DreamOverlayStatusBarViewController extends ViewController<DreamOve mSensorPrivacyController.removeCallback(mSensorCallback); mNextAlarmController.removeCallback(mNextAlarmCallback); mConnectivityManager.unregisterNetworkCallback(mNetworkCallback); - mDreamOverlayNotificationCountProvider.removeCallback(mNotificationCountCallback); + mDreamOverlayNotificationCountProvider.ifPresent( + provider -> provider.removeCallback(mNotificationCountCallback)); mTouchInsetSession.clear(); mIsAttached = false; diff --git a/packages/SystemUI/src/com/android/systemui/dreams/dagger/DreamModule.java b/packages/SystemUI/src/com/android/systemui/dreams/dagger/DreamModule.java index cd23f149cf7d..2dd2098a78b9 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/dagger/DreamModule.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/dagger/DreamModule.java @@ -20,9 +20,13 @@ import android.content.Context; import android.content.res.Resources; import com.android.settingslib.dream.DreamBackend; +import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; +import com.android.systemui.dreams.DreamOverlayNotificationCountProvider; import com.android.systemui.dreams.complication.dagger.RegisteredComplicationsModule; +import java.util.Optional; + import javax.inject.Named; import dagger.Module; @@ -50,6 +54,18 @@ public interface DreamModule { return DreamBackend.getInstance(context); } + /** + * Provides an instance of a {@link DreamOverlayNotificationCountProvider}. + */ + @SysUISingleton + @Provides + static Optional<DreamOverlayNotificationCountProvider> + providesDreamOverlayNotificationCountProvider() { + // If we decide to bring this back, we should gate it on a config that can be changed in + // an overlay. + return Optional.empty(); + } + /** */ @Provides @Named(DREAM_ONLY_ENABLED_FOR_SYSTEM_USER) diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java index 3c28d48c2eb5..d334694805fe 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/DreamOverlayStatusBarViewControllerTest.java @@ -57,6 +57,7 @@ import org.mockito.ArgumentCaptor; import org.mockito.Mock; import org.mockito.MockitoAnnotations; +import java.util.Optional; import java.util.concurrent.Executor; @SmallTest @@ -115,7 +116,7 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase { mNextAlarmController, mDateFormatUtil, mSensorPrivacyController, - mDreamOverlayNotificationCountProvider, + Optional.of(mDreamOverlayNotificationCountProvider), mZenModeController, mStatusBarWindowStateController); } @@ -231,6 +232,26 @@ public class DreamOverlayStatusBarViewControllerTest extends SysuiTestCase { } @Test + public void testNotificationsIconNotShownWhenCountProviderAbsent() { + DreamOverlayStatusBarViewController controller = new DreamOverlayStatusBarViewController( + mView, + mResources, + mMainExecutor, + mConnectivityManager, + mTouchSession, + mAlarmManager, + mNextAlarmController, + mDateFormatUtil, + mSensorPrivacyController, + Optional.empty(), + mZenModeController, + mStatusBarWindowStateController); + controller.onViewAttached(); + verify(mView, never()).showIcon( + eq(DreamOverlayStatusBarView.STATUS_ICON_NOTIFICATIONS), eq(true), any()); + } + + @Test public void testOnViewAttachedShowsPriorityModeIconWhenEnabled() { when(mZenModeController.getZen()).thenReturn( Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS); |