Merge "Fixing setting mQsExpandImmediate state in correct context in split shade" into tm-dev

This commit is contained in:
Michał Brzeziński
2022-04-28 13:46:23 +00:00
committed by Android (Google) Code Review
2 changed files with 32 additions and 9 deletions

View File

@@ -3178,12 +3178,6 @@ public class NotificationPanelViewController extends PanelViewController {
mFalsingCollector.onTrackingStarted(!mKeyguardStateController.canDismissLockScreen()); mFalsingCollector.onTrackingStarted(!mKeyguardStateController.canDismissLockScreen());
super.onTrackingStarted(); super.onTrackingStarted();
mScrimController.onTrackingStarted(); mScrimController.onTrackingStarted();
// normally we want to set mQsExpandImmediate for every split shade case (at least when
// expanding), but keyguard tracking logic is different - this callback is called when
// unlocking with swipe up but not when swiping down to reveal shade
if (mShouldUseSplitNotificationShade && !mKeyguardShowing) {
mQsExpandImmediate = true;
}
if (mQsFullyExpanded) { if (mQsFullyExpanded) {
mQsExpandImmediate = true; mQsExpandImmediate = true;
setShowShelfOnly(true); setShowShelfOnly(true);
@@ -4930,6 +4924,12 @@ public class NotificationPanelViewController extends PanelViewController {
mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
} }
if (state == STATE_OPENING) { if (state == STATE_OPENING) {
// we need to ignore it on keyguard as this is a false alarm - transition from unlocked
// to locked will trigger this event and we're not actually in the process of opening
// the shade, lockscreen is just always expanded
if (mShouldUseSplitNotificationShade && !isOnKeyguard()) {
mQsExpandImmediate = true;
}
mCentralSurfaces.makeExpandedVisible(false); mCentralSurfaces.makeExpandedVisible(false);
} }
if (state == STATE_CLOSED) { if (state == STATE_CLOSED) {

View File

@@ -352,6 +352,8 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
private FalsingManagerFake mFalsingManager = new FalsingManagerFake(); private FalsingManagerFake mFalsingManager = new FalsingManagerFake();
private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock()); private FakeExecutor mExecutor = new FakeExecutor(new FakeSystemClock());
private Handler mMainHandler; private Handler mMainHandler;
private final PanelExpansionStateManager mPanelExpansionStateManager =
new PanelExpansionStateManager();
@Before @Before
public void setup() { public void setup() {
@@ -516,7 +518,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
mLargeScreenShadeHeaderController, mLargeScreenShadeHeaderController,
mScreenOffAnimationController, mScreenOffAnimationController,
mLockscreenGestureLogger, mLockscreenGestureLogger,
new PanelExpansionStateManager(), mPanelExpansionStateManager,
mNotificationRemoteInputManager, mNotificationRemoteInputManager,
mSysUIUnfoldComponent, mSysUIUnfoldComponent,
mControlsComponent, mControlsComponent,
@@ -1018,14 +1020,35 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase {
} }
@Test @Test
public void testQsToBeImmediatelyExpandedInSplitShade() { public void testQsToBeImmediatelyExpandedWhenOpeningPanelInSplitShade() {
enableSplitShade(/* enabled= */ true); enableSplitShade(/* enabled= */ true);
// set panel state to CLOSED
mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 0,
/* expanded= */ false, /* tracking= */ false, /* dragDownPxAmount= */ 0);
assertThat(mNotificationPanelViewController.mQsExpandImmediate).isFalse();
mNotificationPanelViewController.onTrackingStarted(); // change panel state to OPENING
mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 0.5f,
/* expanded= */ true, /* tracking= */ true, /* dragDownPxAmount= */ 100);
assertThat(mNotificationPanelViewController.mQsExpandImmediate).isTrue(); assertThat(mNotificationPanelViewController.mQsExpandImmediate).isTrue();
} }
@Test
public void testQsNotToBeImmediatelyExpandedWhenGoingFromUnlockedToLocked() {
enableSplitShade(/* enabled= */ true);
// set panel state to CLOSED
mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 0,
/* expanded= */ false, /* tracking= */ false, /* dragDownPxAmount= */ 0);
// go to lockscreen, which also sets fraction to 1.0f and makes shade "expanded"
mStatusBarStateController.setState(KEYGUARD);
mPanelExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1,
/* expanded= */ true, /* tracking= */ true, /* dragDownPxAmount= */ 0);
assertThat(mNotificationPanelViewController.mQsExpandImmediate).isFalse();
}
@Test @Test
public void interceptTouchEvent_withinQs_shadeExpanded_startsQsTracking() { public void interceptTouchEvent_withinQs_shadeExpanded_startsQsTracking() {
mNotificationPanelViewController.mQs = mQs; mNotificationPanelViewController.mQs = mQs;