From 274eecfba13a77ff22fbb43115ff95dded3749ee Mon Sep 17 00:00:00 2001 From: Jordan Demeulenaere Date: Wed, 9 Mar 2022 14:55:07 +0000 Subject: Fix dialog exit animation This CL fixes a bug that could happen when animating a dialog out at the same time as hiding the SystemUI shade, and that would make the phone unusable until the shade is swiped down again. See b/223387276 for more info. Bug: 223387276 Test: Manual, see b/223387276#comment1 Change-Id: If251b00558a5ca9a927d1be2bb015f1c0acb2d57 (cherry picked from commit 631a7ef1a60a8d61077e1762e5a18cc53e8211f4) Merged-In: If251b00558a5ca9a927d1be2bb015f1c0acb2d57 --- core/java/android/view/ViewRootImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java index f1eb783726db..0b19f4f44653 100644 --- a/core/java/android/view/ViewRootImpl.java +++ b/core/java/android/view/ViewRootImpl.java @@ -3390,6 +3390,12 @@ public final class ViewRootImpl implements ViewParent, mReportNextDraw = false; pendingDrawFinished(); } + + // Make sure the consumer is not waiting if the view root was just made invisible. + if (mBLASTDrawConsumer != null) { + mBLASTDrawConsumer.accept(null); + mBLASTDrawConsumer = null; + } } } -- cgit v1.2.3 From f4e1af0ae6056d28c98e24a5aded127586be1a28 Mon Sep 17 00:00:00 2001 From: wilsonshih Date: Tue, 1 Mar 2022 16:12:53 +0800 Subject: Revert "Fixes cannot leave dozing when dismiss keyguard" Regression from I62be9283a1d22119eceae5585960b5775a019153. When dismiss keyguard from shell command, the wakeup signal should only be used when dream activity is on top. Bug: 219376804 Bug: 222429976 Test: atest KeyguardTests KeyguardLockedTests Test: atest WindowManagerServiceTests Change-Id: I4edab8588421b3e341cf3bde07e989ff5e651cfe Merged-In: I4edab8588421b3e341cf3bde07e989ff5e651cfe (cherry picked from commit 0063c2488e0eacb103ed33f2b1397a7d83c225d0) Merged-In: I4edab8588421b3e341cf3bde07e989ff5e651cfe --- .../java/com/android/server/wm/WindowManagerService.java | 3 --- .../src/com/android/server/wm/WindowManagerServiceTests.java | 12 ------------ 2 files changed, 15 deletions(-) diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java index 4258e073429e..575ae691dbe8 100644 --- a/services/core/java/com/android/server/wm/WindowManagerService.java +++ b/services/core/java/com/android/server/wm/WindowManagerService.java @@ -3277,9 +3277,6 @@ public class WindowManagerService extends IWindowManager.Stub if (!checkCallingPermission(permission.CONTROL_KEYGUARD, "dismissKeyguard")) { throw new SecurityException("Requires CONTROL_KEYGUARD permission"); } - if (mAtmInternal.isDreaming()) { - mAtmService.mTaskSupervisor.wakeUp("dismissKeyguard"); - } synchronized (mGlobalLock) { mPolicy.dismissKeyguardLw(callback, message); } diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java index a91298f73d08..10011fd4e6e3 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java @@ -31,7 +31,6 @@ import static android.window.DisplayAreaOrganizer.FEATURE_VENDOR_FIRST; import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; -import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing; import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn; import static com.android.dx.mockito.inline.extended.ExtendedMockito.never; import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn; @@ -42,7 +41,6 @@ import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; -import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.verify; @@ -157,16 +155,6 @@ public class WindowManagerServiceTests extends WindowTestsBase { verify(mWm.mAtmService).setFocusedTask(tappedTask.mTaskId, null); } - @Test - public void testDismissKeyguardCanWakeUp() { - doReturn(true).when(mWm).checkCallingPermission(anyString(), anyString()); - spyOn(mWm.mAtmInternal); - doReturn(true).when(mWm.mAtmInternal).isDreaming(); - doNothing().when(mWm.mAtmService.mTaskSupervisor).wakeUp(anyString()); - mWm.dismissKeyguard(null, "test-dismiss-keyguard"); - verify(mWm.mAtmService.mTaskSupervisor).wakeUp(anyString()); - } - @Test public void testMoveWindowTokenToDisplay_NullToken_DoNothing() { mWm.moveWindowTokenToDisplay(null, mDisplayContent.getDisplayId()); -- cgit v1.2.3