Merge "Apply new keyguard orientation when it becomes non-rotatable" into tm-dev

This commit is contained in:
TreeHugger Robot
2022-02-23 17:00:56 +00:00
committed by Android (Google) Code Review
2 changed files with 46 additions and 1 deletions

View File

@@ -26,6 +26,7 @@ import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENAB
import android.app.IActivityManager;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.PixelFormat;
import android.graphics.Region;
import android.os.Binder;
@@ -117,6 +118,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW
* @see #batchApplyWindowLayoutParams(Runnable)
*/
private int mDeferWindowLayoutParams;
private boolean mLastKeyguardRotationAllowed;
@Inject
public NotificationShadeWindowControllerImpl(Context context, WindowManager windowManager,
@@ -143,7 +145,7 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW
mScreenOffAnimationController = screenOffAnimationController;
dumpManager.registerDumpable(getClass().getName(), this);
mAuthController = authController;
mLastKeyguardRotationAllowed = mKeyguardStateController.isKeyguardScreenRotationAllowed();
mLockScreenDisplayTimeout = context.getResources()
.getInteger(R.integer.config_lockScreenDisplayTimeout);
((SysuiStatusBarStateController) statusBarStateController)
@@ -779,6 +781,17 @@ public class NotificationShadeWindowControllerImpl implements NotificationShadeW
setKeyguardDark(useDarkText);
}
@Override
public void onConfigChanged(Configuration newConfig) {
final boolean newScreenRotationAllowed = mKeyguardStateController
.isKeyguardScreenRotationAllowed();
if (mLastKeyguardRotationAllowed != newScreenRotationAllowed) {
apply(mCurrentState);
mLastKeyguardRotationAllowed = newScreenRotationAllowed;
}
}
/**
* When keyguard will be dismissed but didn't start animation yet.
*/

View File

@@ -32,6 +32,8 @@ import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.IActivityManager;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.testing.AndroidTestingRunner;
import android.testing.TestableLooper.RunWithLooper;
import android.view.View;
@@ -227,6 +229,36 @@ public class NotificationShadeWindowControllerImplTest extends SysuiTestCase {
assertThat((mLayoutParameters.getValue().flags & FLAG_ALT_FOCUSABLE_IM) == 0).isTrue();
}
@Test
public void rotationBecameAllowed_layoutParamsUpdated() {
mNotificationShadeWindowController.setKeyguardShowing(true);
when(mKeyguardStateController.isKeyguardScreenRotationAllowed()).thenReturn(false);
mNotificationShadeWindowController.onConfigChanged(new Configuration());
clearInvocations(mWindowManager);
when(mKeyguardStateController.isKeyguardScreenRotationAllowed()).thenReturn(true);
mNotificationShadeWindowController.onConfigChanged(new Configuration());
verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
assertThat(mLayoutParameters.getValue().screenOrientation)
.isEqualTo(ActivityInfo.SCREEN_ORIENTATION_USER);
}
@Test
public void rotationBecameNotAllowed_layoutParamsUpdated() {
mNotificationShadeWindowController.setKeyguardShowing(true);
when(mKeyguardStateController.isKeyguardScreenRotationAllowed()).thenReturn(true);
mNotificationShadeWindowController.onConfigChanged(new Configuration());
clearInvocations(mWindowManager);
when(mKeyguardStateController.isKeyguardScreenRotationAllowed()).thenReturn(false);
mNotificationShadeWindowController.onConfigChanged(new Configuration());
verify(mWindowManager).updateViewLayout(any(), mLayoutParameters.capture());
assertThat(mLayoutParameters.getValue().screenOrientation)
.isEqualTo(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
}
@Test
public void batchApplyWindowLayoutParams_doesNotDispatchEvents() {
mNotificationShadeWindowController.setForceDozeBrightness(true);