From ecb2d83dd187e22a13acf7735db49ed9e344c2cc Mon Sep 17 00:00:00 2001 From: Michal Brzezinski Date: Mon, 15 Feb 2021 14:06:47 +0000 Subject: [PATCH] Removing horizontal translation of shade for dual pane For dual pane there is no need for horizontal translation when finger is dragging from one side of the screen and it causes shade to be partially outside of the screen borders. Bug: 171917882 Test: Presubmit + manual Change-Id: I7f18931c94130253a28d05b332e2d67d1df35c21 --- .../NotificationPanelViewController.java | 3 ++- .../phone/NotificationPanelViewTest.java | 24 +++++++++++++++---- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java index 0b3fd161d8654..9d9a05beefc74 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java @@ -2920,7 +2920,8 @@ public class NotificationPanelViewController extends PanelViewController { * @param x the x-coordinate the touch event */ protected void updateHorizontalPanelPosition(float x) { - if (mNotificationStackScrollLayoutController.getWidth() * 1.75f > mView.getWidth()) { + if (mNotificationStackScrollLayoutController.getWidth() * 1.75f > mView.getWidth() + || Utils.shouldUseSplitNotificationShade(mFeatureFlags, mResources)) { resetHorizontalPanelPosition(); return; } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java index e788a1c0954b6..837b51c9028bc 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java @@ -442,9 +442,7 @@ public class NotificationPanelViewTest extends SysuiTestCase { @Test public void testAllChildrenOfNotificationContainer_haveIds() { - when(mResources.getBoolean(R.bool.config_use_split_notification_shade)).thenReturn(true); - when(mFeatureFlags.isTwoColumnNotificationShadeEnabled()).thenReturn(true); - + enableDualPaneShade(); mNotificationContainerParent.addView(newViewWithId(1)); mNotificationContainerParent.addView(newViewWithId(View.NO_ID)); @@ -473,8 +471,7 @@ public class NotificationPanelViewTest extends SysuiTestCase { @Test public void testSplitShadeLayout_isAlignedToGuideline() { - when(mResources.getBoolean(R.bool.config_use_split_notification_shade)).thenReturn(true); - when(mFeatureFlags.isTwoColumnNotificationShadeEnabled()).thenReturn(true); + enableDualPaneShade(); mNotificationContainerParent.addView(newViewWithId(R.id.qs_frame)); mNotificationContainerParent.addView(newViewWithId(R.id.notification_stack_scroller)); @@ -499,6 +496,23 @@ public class NotificationPanelViewTest extends SysuiTestCase { return view; } + @Test + public void testOnDragDownEvent_horizontalTranslationIsZeroForDualPaneShade() { + when(mNotificationStackScrollLayoutController.getWidth()).thenReturn(350f); + when(mView.getWidth()).thenReturn(800); + enableDualPaneShade(); + + onTouchEvent(MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_DOWN, + 200f /* x position */, 0f, 0)); + + verify(mQsFrame).setTranslationX(0); + } + + private void enableDualPaneShade() { + when(mResources.getBoolean(R.bool.config_use_split_notification_shade)).thenReturn(true); + when(mFeatureFlags.isTwoColumnNotificationShadeEnabled()).thenReturn(true); + } + private void onTouchEvent(MotionEvent ev) { mTouchHandler.onTouch(mView, ev); }