Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 835f63f9 authored by Yi Jiang's avatar Yi Jiang
Browse files

Fixes NPE from resolveRotation()

RotatatinResolverInternal can be null when the service is not ready.
This change adds a null check to avoid NPE.

Test: atest WindowOrientatinListenerTest
Bug: 199375757
Bug: 199381926

Change-Id: I1b6f3aee3eddf8f565f7ca21b1879f40c36f4e5c
parent 4e8636d1
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -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;
+10 −1
Original line number Diff line number Diff line
@@ -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;