diff --git a/services/core/java/com/android/server/wm/WindowOrientationListener.java b/services/core/java/com/android/server/wm/WindowOrientationListener.java index a967ea8fbf8c4..de87ab9dcce09 100644 --- a/services/core/java/com/android/server/wm/WindowOrientationListener.java +++ b/services/core/java/com/android/server/wm/WindowOrientationListener.java @@ -1167,6 +1167,10 @@ public abstract class WindowOrientationListener { if (mRotationResolverService == null) { mRotationResolverService = LocalServices.getService( RotationResolverInternal.class); + if (mRotationResolverService == null) { + finalizeRotation(reportedRotation); + return; + } } String packageName = null; diff --git a/services/tests/servicestests/src/com/android/server/wm/WindowOrientationListenerTest.java b/services/tests/servicestests/src/com/android/server/wm/WindowOrientationListenerTest.java index 2794d48371012..c64ff9e128e62 100644 --- a/services/tests/servicestests/src/com/android/server/wm/WindowOrientationListenerTest.java +++ b/services/tests/servicestests/src/com/android/server/wm/WindowOrientationListenerTest.java @@ -114,7 +114,7 @@ public class WindowOrientationListenerTest { } @Test - public void testSensorChanged_normalCase2() { + public void testOnSensorChanged_normalCase2() { mWindowOrientationListener.mOrientationJudge.onSensorChanged(mFakeSensorEvent); mFakeRotationResolverInternal.callbackWithFailureResult( @@ -123,6 +123,15 @@ public class WindowOrientationListenerTest { assertThat(mFinalizedRotation).isEqualTo(DEFAULT_SENSOR_ROTATION); } + @Test + public void testOnSensorChanged_rotationResolverServiceIsNull_useSensorResult() { + mWindowOrientationListener.mRotationResolverService = null; + + mWindowOrientationListener.mOrientationJudge.onSensorChanged(mFakeSensorEvent); + + assertThat(mFinalizedRotation).isEqualTo(DEFAULT_SENSOR_ROTATION); + } + static final class TestableRotationResolver extends RotationResolverInternal { @Surface.Rotation RotationResolverCallbackInternal mCallback;