diff --git a/packages/SystemUI/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandler.java b/packages/SystemUI/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandler.java index c147fde65cf75..54b9430eb4453 100644 --- a/packages/SystemUI/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandler.java +++ b/packages/SystemUI/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandler.java @@ -42,6 +42,7 @@ import com.android.systemui.statusbar.phone.KeyguardBouncer; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.wm.shell.animation.FlingAnimationUtils; +import java.util.Optional; import javax.inject.Inject; import javax.inject.Named; @@ -77,7 +78,7 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler { private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private float mCurrentExpansion; - private final CentralSurfaces mCentralSurfaces; + private final Optional mCentralSurfaces; private VelocityTracker mVelocityTracker; @@ -107,7 +108,9 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler { // If the user scrolling favors a vertical direction, begin capturing // scrolls. mCapture = Math.abs(distanceY) > Math.abs(distanceX); - mBouncerInitiallyShowing = mCentralSurfaces.isBouncerShowing(); + mBouncerInitiallyShowing = mCentralSurfaces + .map(CentralSurfaces::isBouncerShowing) + .orElse(false); if (mCapture) { // Since the user is dragging the bouncer up, set scrimmed to false. @@ -129,13 +132,17 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler { return true; } + if (!mCentralSurfaces.isPresent()) { + return true; + } + // For consistency, we adopt the expansion definition found in the // PanelViewController. In this case, expansion refers to the view above the // bouncer. As that view's expansion shrinks, the bouncer appears. The bouncer // is fully hidden at full expansion (1) and fully visible when fully collapsed // (0). final float screenTravelPercentage = Math.abs(e1.getY() - e2.getY()) - / mCentralSurfaces.getDisplayHeight(); + / mCentralSurfaces.get().getDisplayHeight(); setPanelExpansion(mBouncerInitiallyShowing ? screenTravelPercentage : 1 - screenTravelPercentage); return true; @@ -171,7 +178,7 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler { public BouncerSwipeTouchHandler( DisplayMetrics displayMetrics, StatusBarKeyguardViewManager statusBarKeyguardViewManager, - CentralSurfaces centralSurfaces, + Optional centralSurfaces, NotificationShadeWindowController notificationShadeWindowController, ValueAnimatorCreator valueAnimatorCreator, VelocityTrackerFactory velocityTrackerFactory, @@ -195,7 +202,7 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler { @Override public void getTouchInitiationRegion(Region region) { - if (mCentralSurfaces.isBouncerShowing()) { + if (mCentralSurfaces.map(CentralSurfaces::isBouncerShowing).orElse(false)) { region.op(new Rect(0, 0, mDisplayMetrics.widthPixels, Math.round( mDisplayMetrics.heightPixels * mBouncerZoneScreenPercentage)), @@ -306,8 +313,12 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler { } protected void flingToExpansion(float velocity, float expansion) { + if (!mCentralSurfaces.isPresent()) { + return; + } + // The animation utils deal in pixel units, rather than expansion height. - final float viewHeight = mCentralSurfaces.getDisplayHeight(); + final float viewHeight = mCentralSurfaces.get().getDisplayHeight(); final float currentHeight = viewHeight * mCurrentExpansion; final float targetHeight = viewHeight * expansion; diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java index 6fdce1ae4ec28..640adcc9dd946 100644 --- a/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java +++ b/packages/SystemUI/src/com/android/systemui/tv/TvSysUIComponent.java @@ -22,6 +22,12 @@ import com.android.systemui.dagger.SysUIComponent; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SystemUIBinder; import com.android.systemui.dagger.SystemUIModule; +import com.android.systemui.statusbar.dagger.CentralSurfacesDependenciesModule; +import com.android.systemui.statusbar.notification.dagger.NotificationsModule; +import com.android.systemui.statusbar.notification.row.NotificationRowModule; + +import com.android.systemui.keyguard.dagger.KeyguardModule; +import com.android.systemui.recents.RecentsModule; import dagger.Subcomponent; @@ -30,13 +36,17 @@ import dagger.Subcomponent; */ @SysUISingleton @Subcomponent(modules = { + CentralSurfacesDependenciesModule.class, DefaultComponentBinder.class, DependencyProvider.class, - SystemUIBinder.class, + KeyguardModule.class, + NotificationRowModule.class, + NotificationsModule.class, + RecentsModule.class, SystemUIModule.class, + TvSystemUIBinder.class, TVSystemUICoreStartableModule.class, - TvSystemUIModule.class, - TvSystemUIBinder.class}) + TvSystemUIModule.class}) public interface TvSysUIComponent extends SysUIComponent { /** diff --git a/packages/SystemUI/tests/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandlerTest.java index e175af7a037d5..d0b3d6d2d2c71 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandlerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/dreams/touch/BouncerSwipeTouchHandlerTest.java @@ -57,6 +57,8 @@ import org.mockito.Mock; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; +import java.util.Optional; + @SmallTest @RunWith(AndroidTestingRunner.class) public class BouncerSwipeTouchHandlerTest extends SysuiTestCase { @@ -110,7 +112,7 @@ public class BouncerSwipeTouchHandlerTest extends SysuiTestCase { mTouchHandler = new BouncerSwipeTouchHandler( mDisplayMetrics, mStatusBarKeyguardViewManager, - mCentralSurfaces, + Optional.of(mCentralSurfaces), mNotificationShadeWindowController, mValueAnimatorCreator, mVelocityTrackerFactory,