Merge "Adding more test coverage for QuickSettingsController" into tm-qpr-dev am: 5a9061eeb3
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21466903 Change-Id: If56d59ddc33a0061415f527ea0cd3c34f3f5625d Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -425,6 +425,11 @@ public class QuickSettingsController {
|
|||||||
updateExpansionEnabledAmbient();
|
updateExpansionEnabledAmbient();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
void setStatusBarMinHeight(int height) {
|
||||||
|
mStatusBarMinHeight = height;
|
||||||
|
}
|
||||||
|
|
||||||
int getHeaderHeight() {
|
int getHeaderHeight() {
|
||||||
return mQs.getHeader().getHeight();
|
return mQs.getHeader().getHeight();
|
||||||
}
|
}
|
||||||
@@ -474,7 +479,8 @@ public class QuickSettingsController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/** Returns whether or not event should open QS */
|
/** Returns whether or not event should open QS */
|
||||||
private boolean isOpenQsEvent(MotionEvent event) {
|
@VisibleForTesting
|
||||||
|
boolean isOpenQsEvent(MotionEvent event) {
|
||||||
final int pointerCount = event.getPointerCount();
|
final int pointerCount = event.getPointerCount();
|
||||||
final int action = event.getActionMasked();
|
final int action = event.getActionMasked();
|
||||||
|
|
||||||
@@ -847,6 +853,11 @@ public class QuickSettingsController {
|
|||||||
mTwoFingerExpandPossible = expandPossible;
|
mTwoFingerExpandPossible = expandPossible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@VisibleForTesting
|
||||||
|
boolean isTwoFingerExpandPossible() {
|
||||||
|
return mTwoFingerExpandPossible;
|
||||||
|
}
|
||||||
|
|
||||||
/** Called when Qs starts expanding */
|
/** Called when Qs starts expanding */
|
||||||
private void onExpansionStarted() {
|
private void onExpansionStarted() {
|
||||||
cancelExpansionAnimation();
|
cancelExpansionAnimation();
|
||||||
@@ -1363,7 +1374,8 @@ public class QuickSettingsController {
|
|||||||
return mTouchAboveFalsingThreshold;
|
return mTouchAboveFalsingThreshold;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onHeightChanged() {
|
@VisibleForTesting
|
||||||
|
void onHeightChanged() {
|
||||||
mMaxExpansionHeight = isQsFragmentCreated() ? mQs.getDesiredHeight() : 0;
|
mMaxExpansionHeight = isQsFragmentCreated() ? mQs.getDesiredHeight() : 0;
|
||||||
if (mExpanded && mFullyExpanded) {
|
if (mExpanded && mFullyExpanded) {
|
||||||
mExpansionHeight = mMaxExpansionHeight;
|
mExpansionHeight = mMaxExpansionHeight;
|
||||||
@@ -1668,7 +1680,8 @@ public class QuickSettingsController {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onPanelExpansionChanged(ShadeExpansionChangeEvent event) {
|
@VisibleForTesting
|
||||||
|
void onPanelExpansionChanged(ShadeExpansionChangeEvent event) {
|
||||||
mShadeExpandedFraction = event.getFraction();
|
mShadeExpandedFraction = event.getFraction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,13 @@
|
|||||||
|
|
||||||
package com.android.systemui.shade;
|
package com.android.systemui.shade;
|
||||||
|
|
||||||
|
import static android.view.MotionEvent.ACTION_DOWN;
|
||||||
|
import static android.view.MotionEvent.ACTION_MOVE;
|
||||||
|
import static android.view.MotionEvent.ACTION_POINTER_DOWN;
|
||||||
|
import static android.view.MotionEvent.ACTION_UP;
|
||||||
|
import static android.view.MotionEvent.BUTTON_SECONDARY;
|
||||||
|
import static android.view.MotionEvent.BUTTON_STYLUS_PRIMARY;
|
||||||
|
|
||||||
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
|
import static com.android.systemui.statusbar.StatusBarState.KEYGUARD;
|
||||||
import static com.android.systemui.statusbar.StatusBarState.SHADE;
|
import static com.android.systemui.statusbar.StatusBarState.SHADE;
|
||||||
|
|
||||||
@@ -70,13 +77,11 @@ import com.android.systemui.statusbar.StatusBarStateControllerImpl;
|
|||||||
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
import com.android.systemui.statusbar.SysuiStatusBarStateController;
|
||||||
import com.android.systemui.statusbar.notification.stack.AmbientState;
|
import com.android.systemui.statusbar.notification.stack.AmbientState;
|
||||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
|
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController;
|
||||||
import com.android.systemui.statusbar.phone.DozeParameters;
|
|
||||||
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
|
import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBottomAreaView;
|
import com.android.systemui.statusbar.phone.KeyguardBottomAreaView;
|
||||||
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
import com.android.systemui.statusbar.phone.KeyguardBypassController;
|
||||||
import com.android.systemui.statusbar.phone.KeyguardStatusBarView;
|
import com.android.systemui.statusbar.phone.KeyguardStatusBarView;
|
||||||
import com.android.systemui.statusbar.phone.LockscreenGestureLogger;
|
import com.android.systemui.statusbar.phone.LockscreenGestureLogger;
|
||||||
import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
|
|
||||||
import com.android.systemui.statusbar.phone.ScrimController;
|
import com.android.systemui.statusbar.phone.ScrimController;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
|
||||||
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
|
import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager;
|
||||||
@@ -97,6 +102,11 @@ import dagger.Lazy;
|
|||||||
public class QuickSettingsControllerTest extends SysuiTestCase {
|
public class QuickSettingsControllerTest extends SysuiTestCase {
|
||||||
|
|
||||||
private static final int SPLIT_SHADE_FULL_TRANSITION_DISTANCE = 400;
|
private static final int SPLIT_SHADE_FULL_TRANSITION_DISTANCE = 400;
|
||||||
|
private static final float QS_FRAME_START_X = 0f;
|
||||||
|
private static final int QS_FRAME_WIDTH = 1000;
|
||||||
|
private static final int QS_FRAME_TOP = 0;
|
||||||
|
private static final int QS_FRAME_BOTTOM = 1000;
|
||||||
|
|
||||||
|
|
||||||
private QuickSettingsController mQsController;
|
private QuickSettingsController mQsController;
|
||||||
|
|
||||||
@@ -139,8 +149,7 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
@Mock private ShadeLogger mShadeLogger;
|
@Mock private ShadeLogger mShadeLogger;
|
||||||
|
|
||||||
@Mock private DumpManager mDumpManager;
|
@Mock private DumpManager mDumpManager;
|
||||||
@Mock private DozeParameters mDozeParameters;
|
|
||||||
@Mock private ScreenOffAnimationController mScreenOffAnimationController;
|
|
||||||
@Mock private HeadsUpManagerPhone mHeadsUpManager;
|
@Mock private HeadsUpManagerPhone mHeadsUpManager;
|
||||||
@Mock private UiEventLogger mUiEventLogger;
|
@Mock private UiEventLogger mUiEventLogger;
|
||||||
|
|
||||||
@@ -169,6 +178,12 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
when(mPanelView.findViewById(R.id.keyguard_header)).thenReturn(mKeyguardStatusBar);
|
when(mPanelView.findViewById(R.id.keyguard_header)).thenReturn(mKeyguardStatusBar);
|
||||||
when(mNotificationStackScrollLayoutController.getHeight()).thenReturn(1000);
|
when(mNotificationStackScrollLayoutController.getHeight()).thenReturn(1000);
|
||||||
when(mPanelView.findViewById(R.id.qs_frame)).thenReturn(mQsFrame);
|
when(mPanelView.findViewById(R.id.qs_frame)).thenReturn(mQsFrame);
|
||||||
|
when(mQsFrame.getX()).thenReturn(QS_FRAME_START_X);
|
||||||
|
when(mQsFrame.getWidth()).thenReturn(QS_FRAME_WIDTH);
|
||||||
|
when(mQsHeader.getTop()).thenReturn(QS_FRAME_TOP);
|
||||||
|
when(mQsHeader.getBottom()).thenReturn(QS_FRAME_BOTTOM);
|
||||||
|
when(mPanelView.getY()).thenReturn((float) QS_FRAME_TOP);
|
||||||
|
when(mPanelView.getHeight()).thenReturn(QS_FRAME_BOTTOM);
|
||||||
when(mPanelView.findViewById(R.id.keyguard_status_view))
|
when(mPanelView.findViewById(R.id.keyguard_status_view))
|
||||||
.thenReturn(mock(KeyguardStatusView.class));
|
.thenReturn(mock(KeyguardStatusView.class));
|
||||||
when(mQs.getView()).thenReturn(mPanelView);
|
when(mQs.getView()).thenReturn(mPanelView);
|
||||||
@@ -229,20 +244,9 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
|
|
||||||
@After
|
@After
|
||||||
public void tearDown() {
|
public void tearDown() {
|
||||||
mNotificationPanelViewController.cancelHeightAnimator();
|
|
||||||
mMainHandler.removeCallbacksAndMessages(null);
|
mMainHandler.removeCallbacksAndMessages(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testOnTouchEvent_isConflictingExpansionGestureSet() {
|
|
||||||
assertThat(mQsController.isConflictingExpansionGesture()).isFalse();
|
|
||||||
mShadeExpansionStateManager.onPanelExpansionChanged(1f, true, false, 0f);
|
|
||||||
mQsController.handleTouch(MotionEvent.obtain(0L /* downTime */,
|
|
||||||
0L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 0f /* y */,
|
|
||||||
0 /* metaState */), false, false);
|
|
||||||
assertThat(mQsController.isConflictingExpansionGesture()).isTrue();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testCloseQsSideEffects() {
|
public void testCloseQsSideEffects() {
|
||||||
enableSplitShade(true);
|
enableSplitShade(true);
|
||||||
@@ -270,7 +274,7 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
public void testPanelStaysOpenWhenClosingQs() {
|
public void testPanelStaysOpenWhenClosingQs() {
|
||||||
mShadeExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1,
|
mShadeExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1,
|
||||||
/* expanded= */ true, /* tracking= */ false, /* dragDownPxAmount= */ 0);
|
/* expanded= */ true, /* tracking= */ false, /* dragDownPxAmount= */ 0);
|
||||||
mNotificationPanelViewController.setExpandedFraction(1f);
|
mQsController.setShadeExpandedHeight(1);
|
||||||
|
|
||||||
float shadeExpandedHeight = mQsController.getShadeExpandedHeight();
|
float shadeExpandedHeight = mQsController.getShadeExpandedHeight();
|
||||||
mQsController.animateCloseQs(false);
|
mQsController.animateCloseQs(false);
|
||||||
@@ -281,16 +285,12 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
@Test
|
@Test
|
||||||
public void interceptTouchEvent_withinQs_shadeExpanded_startsQsTracking() {
|
public void interceptTouchEvent_withinQs_shadeExpanded_startsQsTracking() {
|
||||||
mQsController.setQs(mQs);
|
mQsController.setQs(mQs);
|
||||||
when(mQsFrame.getX()).thenReturn(0f);
|
|
||||||
when(mQsFrame.getWidth()).thenReturn(1000);
|
|
||||||
when(mQsHeader.getTop()).thenReturn(0);
|
|
||||||
when(mQsHeader.getBottom()).thenReturn(1000);
|
|
||||||
|
|
||||||
mQsController.setShadeExpandedHeight(1f);
|
mQsController.setShadeExpandedHeight(1f);
|
||||||
mQsController.onIntercept(
|
mQsController.onIntercept(
|
||||||
createMotionEvent(0, 0, MotionEvent.ACTION_DOWN));
|
createMotionEvent(0, 0, ACTION_DOWN));
|
||||||
mQsController.onIntercept(
|
mQsController.onIntercept(
|
||||||
createMotionEvent(0, 500, MotionEvent.ACTION_MOVE));
|
createMotionEvent(0, 500, ACTION_MOVE));
|
||||||
|
|
||||||
assertThat(mQsController.isTracking()).isTrue();
|
assertThat(mQsController.isTracking()).isTrue();
|
||||||
}
|
}
|
||||||
@@ -299,20 +299,123 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
public void interceptTouchEvent_withinQs_shadeExpanded_inSplitShade_doesNotStartQsTracking() {
|
public void interceptTouchEvent_withinQs_shadeExpanded_inSplitShade_doesNotStartQsTracking() {
|
||||||
enableSplitShade(true);
|
enableSplitShade(true);
|
||||||
mQsController.setQs(mQs);
|
mQsController.setQs(mQs);
|
||||||
when(mQsFrame.getX()).thenReturn(0f);
|
|
||||||
when(mQsFrame.getWidth()).thenReturn(1000);
|
|
||||||
when(mQsHeader.getTop()).thenReturn(0);
|
|
||||||
when(mQsHeader.getBottom()).thenReturn(1000);
|
|
||||||
|
|
||||||
mQsController.setShadeExpandedHeight(1f);
|
mQsController.setShadeExpandedHeight(1f);
|
||||||
mQsController.onIntercept(
|
mQsController.onIntercept(
|
||||||
createMotionEvent(0, 0, MotionEvent.ACTION_DOWN));
|
createMotionEvent(0, 0, ACTION_DOWN));
|
||||||
mQsController.onIntercept(
|
mQsController.onIntercept(
|
||||||
createMotionEvent(0, 500, MotionEvent.ACTION_MOVE));
|
createMotionEvent(0, 500, ACTION_MOVE));
|
||||||
|
|
||||||
assertThat(mQsController.isTracking()).isFalse();
|
assertThat(mQsController.isTracking()).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void interceptTouch_downBetweenFullyCollapsedAndExpanded() {
|
||||||
|
mQsController.setQs(mQs);
|
||||||
|
when(mQs.getDesiredHeight()).thenReturn(QS_FRAME_BOTTOM);
|
||||||
|
mQsController.onHeightChanged();
|
||||||
|
mQsController.setExpansionHeight(QS_FRAME_BOTTOM / 2f);
|
||||||
|
|
||||||
|
assertThat(mQsController.onIntercept(
|
||||||
|
createMotionEvent(0, QS_FRAME_BOTTOM / 2, ACTION_DOWN))).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void onTouch_moveActionSetsCorrectExpansionHeight() {
|
||||||
|
mQsController.setQs(mQs);
|
||||||
|
when(mQs.getDesiredHeight()).thenReturn(QS_FRAME_BOTTOM);
|
||||||
|
mQsController.onHeightChanged();
|
||||||
|
mQsController.setExpansionHeight(QS_FRAME_BOTTOM / 2f);
|
||||||
|
mQsController.handleTouch(
|
||||||
|
createMotionEvent(0, QS_FRAME_BOTTOM / 4, ACTION_DOWN), false, false);
|
||||||
|
assertThat(mQsController.isTracking()).isTrue();
|
||||||
|
mQsController.handleTouch(
|
||||||
|
createMotionEvent(0, QS_FRAME_BOTTOM / 4 + 1, ACTION_MOVE), false, false);
|
||||||
|
|
||||||
|
assertThat(mQsController.getExpansionHeight()).isEqualTo(QS_FRAME_BOTTOM / 2 + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleTouch_downActionInQsArea() {
|
||||||
|
mQsController.setQs(mQs);
|
||||||
|
mQsController.setBarState(SHADE);
|
||||||
|
mQsController.onPanelExpansionChanged(
|
||||||
|
new ShadeExpansionChangeEvent(
|
||||||
|
0.5f,
|
||||||
|
true,
|
||||||
|
true,
|
||||||
|
0
|
||||||
|
));
|
||||||
|
MotionEvent event =
|
||||||
|
createMotionEvent(QS_FRAME_WIDTH / 2, QS_FRAME_BOTTOM / 2, ACTION_DOWN);
|
||||||
|
mQsController.handleTouch(event, false, false);
|
||||||
|
|
||||||
|
assertThat(mQsController.isTracking()).isTrue();
|
||||||
|
assertThat(mQsController.getInitialTouchY()).isEqualTo(QS_FRAME_BOTTOM / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleTouch_qsTouchedWhileCollapsingDisablesTracking() {
|
||||||
|
mQsController.handleTouch(
|
||||||
|
createMotionEvent(0, QS_FRAME_BOTTOM, ACTION_DOWN), false, false);
|
||||||
|
mQsController.setLastShadeFlingWasExpanding(false);
|
||||||
|
mQsController.handleTouch(
|
||||||
|
createMotionEvent(0, QS_FRAME_BOTTOM / 2, ACTION_MOVE), false, true);
|
||||||
|
MotionEvent secondTouch = createMotionEvent(0, QS_FRAME_TOP, ACTION_DOWN);
|
||||||
|
mQsController.handleTouch(secondTouch, false, true);
|
||||||
|
assertThat(mQsController.isTracking()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleTouch_qsTouchedWhileExpanding() {
|
||||||
|
mQsController.setQs(mQs);
|
||||||
|
mQsController.handleTouch(
|
||||||
|
createMotionEvent(100, 100, ACTION_DOWN), false, false);
|
||||||
|
mQsController.handleTouch(
|
||||||
|
createMotionEvent(0, QS_FRAME_BOTTOM / 2, ACTION_MOVE), false, false);
|
||||||
|
mQsController.setLastShadeFlingWasExpanding(true);
|
||||||
|
mQsController.handleTouch(
|
||||||
|
createMotionEvent(0, QS_FRAME_TOP, ACTION_DOWN), false, false);
|
||||||
|
assertThat(mQsController.isTracking()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleTouch_isConflictingExpansionGestureSet() {
|
||||||
|
assertThat(mQsController.isConflictingExpansionGesture()).isFalse();
|
||||||
|
mShadeExpansionStateManager.onPanelExpansionChanged(1f, true, false, 0f);
|
||||||
|
mQsController.handleTouch(MotionEvent.obtain(0L /* downTime */,
|
||||||
|
0L /* eventTime */, ACTION_DOWN, 0f /* x */, 0f /* y */,
|
||||||
|
0 /* metaState */), false, false);
|
||||||
|
assertThat(mQsController.isConflictingExpansionGesture()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleTouch_isConflictingExpansionGestureSet_cancel() {
|
||||||
|
mShadeExpansionStateManager.onPanelExpansionChanged(1f, true, false, 0f);
|
||||||
|
mQsController.handleTouch(createMotionEvent(0, 0, ACTION_DOWN), false, false);
|
||||||
|
assertThat(mQsController.isConflictingExpansionGesture()).isTrue();
|
||||||
|
mQsController.handleTouch(createMotionEvent(0, 0, ACTION_UP), true, true);
|
||||||
|
assertThat(mQsController.isConflictingExpansionGesture()).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleTouch_twoFingerExpandPossibleConditions() {
|
||||||
|
assertThat(mQsController.isTwoFingerExpandPossible()).isFalse();
|
||||||
|
mQsController.handleTouch(createMotionEvent(0, 0, ACTION_DOWN), true, false);
|
||||||
|
assertThat(mQsController.isTwoFingerExpandPossible()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleTouch_twoFingerDrag() {
|
||||||
|
mQsController.setQs(mQs);
|
||||||
|
mQsController.setStatusBarMinHeight(1);
|
||||||
|
mQsController.setTwoFingerExpandPossible(true);
|
||||||
|
mQsController.handleTouch(
|
||||||
|
createMultitouchMotionEvent(ACTION_POINTER_DOWN), false, false);
|
||||||
|
assertThat(mQsController.isExpandImmediate()).isTrue();
|
||||||
|
verify(mQs).setListening(true);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void onQsFragmentAttached_fullWidth_setsFullWidthTrueOnQS() {
|
public void onQsFragmentAttached_fullWidth_setsFullWidthTrueOnQS() {
|
||||||
setIsFullWidth(true);
|
setIsFullWidth(true);
|
||||||
@@ -329,19 +432,6 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
verify(mQSFragment).setIsNotificationPanelFullWidth(false);
|
verify(mQSFragment).setIsNotificationPanelFullWidth(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void getMaxPanelTransitionDistance_inSplitShade_withHeadsUp_returnsBiggerValue() {
|
|
||||||
enableSplitShade(true);
|
|
||||||
mNotificationPanelViewController.expandWithQs();
|
|
||||||
when(mHeadsUpManager.isTrackingHeadsUp()).thenReturn(true);
|
|
||||||
|
|
||||||
mNotificationPanelViewController.setHeadsUpDraggingStartingHeight(
|
|
||||||
SPLIT_SHADE_FULL_TRANSITION_DISTANCE);
|
|
||||||
|
|
||||||
assertThat(mQsController.calculatePanelHeightExpanded(0))
|
|
||||||
.isGreaterThan(SPLIT_SHADE_FULL_TRANSITION_DISTANCE);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void setQsExpansion_lockscreenShadeTransitionInProgress_usesLockscreenSquishiness() {
|
public void setQsExpansion_lockscreenShadeTransitionInProgress_usesLockscreenSquishiness() {
|
||||||
float squishinessFraction = 0.456f;
|
float squishinessFraction = 0.456f;
|
||||||
@@ -378,6 +468,21 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateExpansion_expandImmediateOrAlreadyExpanded_usesFullSquishiness() {
|
||||||
|
mQsController.setQs(mQs);
|
||||||
|
when(mQs.getDesiredHeight()).thenReturn(100);
|
||||||
|
mQsController.onHeightChanged();
|
||||||
|
|
||||||
|
mQsController.setExpandImmediate(true);
|
||||||
|
mQsController.setExpanded(false);
|
||||||
|
mQsController.updateExpansion();
|
||||||
|
mQsController.setExpandImmediate(false);
|
||||||
|
mQsController.setExpanded(true);
|
||||||
|
mQsController.updateExpansion();
|
||||||
|
verify(mQs, times(2)).setQsExpansion(0, 0, 0, 1);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void shadeExpanded_onKeyguard() {
|
public void shadeExpanded_onKeyguard() {
|
||||||
mStatusBarStateController.setState(KEYGUARD);
|
mStatusBarStateController.setState(KEYGUARD);
|
||||||
@@ -393,9 +498,52 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
assertThat(mQsController.computeExpansionFraction()).isEqualTo(1f);
|
assertThat(mQsController.computeExpansionFraction()).isEqualTo(1f);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void handleTouch_splitShadeAndtouchXOutsideQs() {
|
||||||
|
enableSplitShade(true);
|
||||||
|
|
||||||
|
assertThat(mQsController.handleTouch(createMotionEvent(
|
||||||
|
QS_FRAME_WIDTH + 1, QS_FRAME_BOTTOM - 1, ACTION_DOWN),
|
||||||
|
false, false)).isFalse();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isOpenQsEvent_twoFingerDrag() {
|
||||||
|
assertThat(mQsController.isOpenQsEvent(
|
||||||
|
createMultitouchMotionEvent(ACTION_POINTER_DOWN))).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isOpenQsEvent_stylusButtonClickDrag() {
|
||||||
|
MotionEvent event = createMotionEvent(0, 0, ACTION_DOWN);
|
||||||
|
event.setButtonState(BUTTON_STYLUS_PRIMARY);
|
||||||
|
|
||||||
|
assertThat(mQsController.isOpenQsEvent(event)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isOpenQsEvent_mouseButtonClickDrag() {
|
||||||
|
MotionEvent event = createMotionEvent(0, 0, ACTION_DOWN);
|
||||||
|
event.setButtonState(BUTTON_SECONDARY);
|
||||||
|
|
||||||
|
assertThat(mQsController.isOpenQsEvent(event)).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
private static MotionEvent createMotionEvent(int x, int y, int action) {
|
private static MotionEvent createMotionEvent(int x, int y, int action) {
|
||||||
return MotionEvent.obtain(
|
return MotionEvent.obtain(0, 0, action, x, y, 0);
|
||||||
/* downTime= */ 0, /* eventTime= */ 0, action, x, y, /* metaState= */ 0);
|
}
|
||||||
|
|
||||||
|
// Creates an empty multitouch event for now
|
||||||
|
private static MotionEvent createMultitouchMotionEvent(int action) {
|
||||||
|
return MotionEvent.obtain(0, 0, action, 2,
|
||||||
|
new MotionEvent.PointerProperties[] {
|
||||||
|
new MotionEvent.PointerProperties(),
|
||||||
|
new MotionEvent.PointerProperties()
|
||||||
|
},
|
||||||
|
new MotionEvent.PointerCoords[] {
|
||||||
|
new MotionEvent.PointerCoords(),
|
||||||
|
new MotionEvent.PointerCoords()
|
||||||
|
}, 0, 0, 0, 0, 0, 0, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void enableSplitShade(boolean enabled) {
|
private void enableSplitShade(boolean enabled) {
|
||||||
@@ -412,4 +560,6 @@ public class QuickSettingsControllerTest extends SysuiTestCase {
|
|||||||
int oldMaxHeight = mQsController.updateHeightsOnShadeLayoutChange();
|
int oldMaxHeight = mQsController.updateHeightsOnShadeLayoutChange();
|
||||||
mQsController.handleShadeLayoutChanged(oldMaxHeight);
|
mQsController.handleShadeLayoutChanged(oldMaxHeight);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user