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.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<CentralSurfaces> 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> 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;

View File

@@ -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 {
/**

View File

@@ -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,