Merge "Make CentralSurfaces optional" into tm-dev

This commit is contained in:
Robin Lee
2022-04-17 13:19:34 +00:00
committed by Android (Google) Code Review
3 changed files with 33 additions and 10 deletions

View File

@@ -42,6 +42,7 @@ import com.android.systemui.statusbar.phone.KeyguardBouncer;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.wm.shell.animation.FlingAnimationUtils; import com.android.wm.shell.animation.FlingAnimationUtils;
import java.util.Optional;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Named; import javax.inject.Named;
@@ -77,7 +78,7 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler {
private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
private float mCurrentExpansion; private float mCurrentExpansion;
private final CentralSurfaces mCentralSurfaces; private final Optional<CentralSurfaces> mCentralSurfaces;
private VelocityTracker mVelocityTracker; private VelocityTracker mVelocityTracker;
@@ -107,7 +108,9 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler {
// If the user scrolling favors a vertical direction, begin capturing // If the user scrolling favors a vertical direction, begin capturing
// scrolls. // scrolls.
mCapture = Math.abs(distanceY) > Math.abs(distanceX); mCapture = Math.abs(distanceY) > Math.abs(distanceX);
mBouncerInitiallyShowing = mCentralSurfaces.isBouncerShowing(); mBouncerInitiallyShowing = mCentralSurfaces
.map(CentralSurfaces::isBouncerShowing)
.orElse(false);
if (mCapture) { if (mCapture) {
// Since the user is dragging the bouncer up, set scrimmed to false. // Since the user is dragging the bouncer up, set scrimmed to false.
@@ -129,13 +132,17 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler {
return true; return true;
} }
if (!mCentralSurfaces.isPresent()) {
return true;
}
// For consistency, we adopt the expansion definition found in the // For consistency, we adopt the expansion definition found in the
// PanelViewController. In this case, expansion refers to the view above the // PanelViewController. In this case, expansion refers to the view above the
// bouncer. As that view's expansion shrinks, the bouncer appears. The bouncer // 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 // is fully hidden at full expansion (1) and fully visible when fully collapsed
// (0). // (0).
final float screenTravelPercentage = Math.abs(e1.getY() - e2.getY()) final float screenTravelPercentage = Math.abs(e1.getY() - e2.getY())
/ mCentralSurfaces.getDisplayHeight(); / mCentralSurfaces.get().getDisplayHeight();
setPanelExpansion(mBouncerInitiallyShowing setPanelExpansion(mBouncerInitiallyShowing
? screenTravelPercentage : 1 - screenTravelPercentage); ? screenTravelPercentage : 1 - screenTravelPercentage);
return true; return true;
@@ -171,7 +178,7 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler {
public BouncerSwipeTouchHandler( public BouncerSwipeTouchHandler(
DisplayMetrics displayMetrics, DisplayMetrics displayMetrics,
StatusBarKeyguardViewManager statusBarKeyguardViewManager, StatusBarKeyguardViewManager statusBarKeyguardViewManager,
CentralSurfaces centralSurfaces, Optional<CentralSurfaces> centralSurfaces,
NotificationShadeWindowController notificationShadeWindowController, NotificationShadeWindowController notificationShadeWindowController,
ValueAnimatorCreator valueAnimatorCreator, ValueAnimatorCreator valueAnimatorCreator,
VelocityTrackerFactory velocityTrackerFactory, VelocityTrackerFactory velocityTrackerFactory,
@@ -195,7 +202,7 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler {
@Override @Override
public void getTouchInitiationRegion(Region region) { public void getTouchInitiationRegion(Region region) {
if (mCentralSurfaces.isBouncerShowing()) { if (mCentralSurfaces.map(CentralSurfaces::isBouncerShowing).orElse(false)) {
region.op(new Rect(0, 0, mDisplayMetrics.widthPixels, region.op(new Rect(0, 0, mDisplayMetrics.widthPixels,
Math.round( Math.round(
mDisplayMetrics.heightPixels * mBouncerZoneScreenPercentage)), mDisplayMetrics.heightPixels * mBouncerZoneScreenPercentage)),
@@ -306,8 +313,12 @@ public class BouncerSwipeTouchHandler implements DreamTouchHandler {
} }
protected void flingToExpansion(float velocity, float expansion) { protected void flingToExpansion(float velocity, float expansion) {
if (!mCentralSurfaces.isPresent()) {
return;
}
// The animation utils deal in pixel units, rather than expansion height. // 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 currentHeight = viewHeight * mCurrentExpansion;
final float targetHeight = viewHeight * expansion; final float targetHeight = viewHeight * expansion;

View File

@@ -22,6 +22,12 @@ import com.android.systemui.dagger.SysUIComponent;
import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.SystemUIBinder; import com.android.systemui.dagger.SystemUIBinder;
import com.android.systemui.dagger.SystemUIModule; 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; import dagger.Subcomponent;
@@ -30,13 +36,17 @@ import dagger.Subcomponent;
*/ */
@SysUISingleton @SysUISingleton
@Subcomponent(modules = { @Subcomponent(modules = {
CentralSurfacesDependenciesModule.class,
DefaultComponentBinder.class, DefaultComponentBinder.class,
DependencyProvider.class, DependencyProvider.class,
SystemUIBinder.class, KeyguardModule.class,
NotificationRowModule.class,
NotificationsModule.class,
RecentsModule.class,
SystemUIModule.class, SystemUIModule.class,
TvSystemUIBinder.class,
TVSystemUICoreStartableModule.class, TVSystemUICoreStartableModule.class,
TvSystemUIModule.class, TvSystemUIModule.class})
TvSystemUIBinder.class})
public interface TvSysUIComponent extends SysUIComponent { public interface TvSysUIComponent extends SysUIComponent {
/** /**

View File

@@ -57,6 +57,8 @@ import org.mockito.Mock;
import org.mockito.Mockito; import org.mockito.Mockito;
import org.mockito.MockitoAnnotations; import org.mockito.MockitoAnnotations;
import java.util.Optional;
@SmallTest @SmallTest
@RunWith(AndroidTestingRunner.class) @RunWith(AndroidTestingRunner.class)
public class BouncerSwipeTouchHandlerTest extends SysuiTestCase { public class BouncerSwipeTouchHandlerTest extends SysuiTestCase {
@@ -110,7 +112,7 @@ public class BouncerSwipeTouchHandlerTest extends SysuiTestCase {
mTouchHandler = new BouncerSwipeTouchHandler( mTouchHandler = new BouncerSwipeTouchHandler(
mDisplayMetrics, mDisplayMetrics,
mStatusBarKeyguardViewManager, mStatusBarKeyguardViewManager,
mCentralSurfaces, Optional.of(mCentralSurfaces),
mNotificationShadeWindowController, mNotificationShadeWindowController,
mValueAnimatorCreator, mValueAnimatorCreator,
mVelocityTrackerFactory, mVelocityTrackerFactory,