Merge "Fixed Shade freezing when tapped while collapsing" into tm-qpr-dev

This commit is contained in:
Shawn Lee
2022-10-21 16:14:07 +00:00
committed by Android (Google) Code Review
2 changed files with 48 additions and 0 deletions

View File

@@ -1443,6 +1443,16 @@ public final class NotificationPanelViewController {
mMaxAllowedKeyguardNotifications = maxAllowed; mMaxAllowedKeyguardNotifications = maxAllowed;
} }
@VisibleForTesting
boolean getClosing() {
return mClosing;
}
@VisibleForTesting
boolean getIsFlinging() {
return mIsFlinging;
}
private void updateMaxDisplayedNotifications(boolean recompute) { private void updateMaxDisplayedNotifications(boolean recompute) {
if (recompute) { if (recompute) {
setMaxDisplayedNotifications(Math.max(computeMaxKeyguardNotifications(), 1)); setMaxDisplayedNotifications(Math.max(computeMaxKeyguardNotifications(), 1));
@@ -3718,6 +3728,11 @@ public final class NotificationPanelViewController {
setListening(true); setListening(true);
} }
@VisibleForTesting
void setTouchSlopExceeded(boolean isTouchSlopExceeded) {
mTouchSlopExceeded = isTouchSlopExceeded;
}
public void setOverExpansion(float overExpansion) { public void setOverExpansion(float overExpansion) {
if (overExpansion == mOverExpansion) { if (overExpansion == mOverExpansion) {
return; return;
@@ -4778,6 +4793,7 @@ public final class NotificationPanelViewController {
mAmbientState.setSwipingUp(false); mAmbientState.setSwipingUp(false);
if ((mTracking && mTouchSlopExceeded) || Math.abs(x - mInitialExpandX) > mTouchSlop if ((mTracking && mTouchSlopExceeded) || Math.abs(x - mInitialExpandX) > mTouchSlop
|| Math.abs(y - mInitialExpandY) > mTouchSlop || Math.abs(y - mInitialExpandY) > mTouchSlop
|| (!isFullyExpanded() && !isFullyCollapsed())
|| event.getActionMasked() == MotionEvent.ACTION_CANCEL || forceCancel) { || event.getActionMasked() == MotionEvent.ACTION_CANCEL || forceCancel) {
mVelocityTracker.computeCurrentVelocity(1000); mVelocityTracker.computeCurrentVelocity(1000);
float vel = mVelocityTracker.getYVelocity(); float vel = mVelocityTracker.getYVelocity();

View File

@@ -756,6 +756,38 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
assertThat(mNotificationPanelViewController.isTracking()).isTrue(); assertThat(mNotificationPanelViewController.isTracking()).isTrue();
} }
@Test
public void testOnTouchEvent_expansionResumesAfterBriefTouch() {
// Start shade collapse with swipe up
onTouchEvent(MotionEvent.obtain(0L /* downTime */,
0L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 0f /* y */,
0 /* metaState */));
onTouchEvent(MotionEvent.obtain(0L /* downTime */,
0L /* eventTime */, MotionEvent.ACTION_MOVE, 0f /* x */, 300f /* y */,
0 /* metaState */));
onTouchEvent(MotionEvent.obtain(0L /* downTime */,
0L /* eventTime */, MotionEvent.ACTION_UP, 0f /* x */, 300f /* y */,
0 /* metaState */));
assertThat(mNotificationPanelViewController.getClosing()).isTrue();
assertThat(mNotificationPanelViewController.getIsFlinging()).isTrue();
// simulate touch that does not exceed touch slop
onTouchEvent(MotionEvent.obtain(2L /* downTime */,
2L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 300f /* y */,
0 /* metaState */));
mNotificationPanelViewController.setTouchSlopExceeded(false);
onTouchEvent(MotionEvent.obtain(2L /* downTime */,
2L /* eventTime */, MotionEvent.ACTION_UP, 0f /* x */, 300f /* y */,
0 /* metaState */));
// fling should still be called after a touch that does not exceed touch slop
assertThat(mNotificationPanelViewController.getClosing()).isTrue();
assertThat(mNotificationPanelViewController.getIsFlinging()).isTrue();
}
@Test @Test
public void handleTouchEventFromStatusBar_panelsNotEnabled_returnsFalseAndNoViewEvent() { public void handleTouchEventFromStatusBar_panelsNotEnabled_returnsFalseAndNoViewEvent() {
when(mCommandQueue.panelsEnabled()).thenReturn(false); when(mCommandQueue.panelsEnabled()).thenReturn(false);