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

Commit 937904fd authored by Mariia Sandrikova's avatar Mariia Sandrikova Committed by Automerger Merge Worker
Browse files

Merge "Fallback to orientation read from the sysprop instead of ROTATION_0."...

Merge "Fallback to orientation read from the sysprop instead of ROTATION_0." into tm-qpr-dev am: c1cb41e9

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/21117400



Change-Id: Ice7b7ffc82c248757c199d38adad2a05404924d7
Signed-off-by: default avatarAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
parents df0c4121 c1cb41e9
Loading
Loading
Loading
Loading
+7 −4
Original line number Original line Diff line number Diff line
@@ -249,11 +249,13 @@ public class DisplayRotation {
        mDeskDockRotation = readRotation(R.integer.config_deskDockRotation);
        mDeskDockRotation = readRotation(R.integer.config_deskDockRotation);
        mUndockedHdmiRotation = readRotation(R.integer.config_undockedHdmiRotation);
        mUndockedHdmiRotation = readRotation(R.integer.config_undockedHdmiRotation);


        mRotation = readDefaultDisplayRotation(displayAddress);
        int defaultRotation = readDefaultDisplayRotation(displayAddress);
        mRotation = defaultRotation;


        if (isDefaultDisplay) {
        if (isDefaultDisplay) {
            final Handler uiHandler = UiThread.getHandler();
            final Handler uiHandler = UiThread.getHandler();
            mOrientationListener = new OrientationListener(mContext, uiHandler);
            mOrientationListener =
                    new OrientationListener(mContext, uiHandler, defaultRotation);
            mOrientationListener.setCurrentRotation(mRotation);
            mOrientationListener.setCurrentRotation(mRotation);
            mSettingsObserver = new SettingsObserver(uiHandler);
            mSettingsObserver = new SettingsObserver(uiHandler);
            mSettingsObserver.observe();
            mSettingsObserver.observe();
@@ -1735,8 +1737,9 @@ public class DisplayRotation {
    private class OrientationListener extends WindowOrientationListener implements Runnable {
    private class OrientationListener extends WindowOrientationListener implements Runnable {
        transient boolean mEnabled;
        transient boolean mEnabled;


        OrientationListener(Context context, Handler handler) {
        OrientationListener(Context context, Handler handler,
            super(context, handler);
                @Surface.Rotation int defaultRotation) {
            super(context, handler, defaultRotation);
        }
        }


        @Override
        @Override
+12 −6
Original line number Original line Diff line number Diff line
@@ -88,14 +88,19 @@ public abstract class WindowOrientationListener {


    private final Object mLock = new Object();
    private final Object mLock = new Object();


    @Surface.Rotation
    private final int mDefaultRotation;

    /**
    /**
     * Creates a new WindowOrientationListener.
     * Creates a new WindowOrientationListener.
     *
     *
     * @param context for the WindowOrientationListener.
     * @param context for the WindowOrientationListener.
     * @param handler Provides the Looper for receiving sensor updates.
     * @param handler Provides the Looper for receiving sensor updates.
     * @param defaultRotation Default rotation of the display.
     */
     */
    public WindowOrientationListener(Context context, Handler handler) {
    public WindowOrientationListener(Context context, Handler handler,
        this(context, handler, SensorManager.SENSOR_DELAY_UI);
            @Surface.Rotation int defaultRotation) {
        this(context, handler, defaultRotation, SensorManager.SENSOR_DELAY_UI);
    }
    }


    /**
    /**
@@ -103,7 +108,7 @@ public abstract class WindowOrientationListener {
     *
     *
     * @param context for the WindowOrientationListener.
     * @param context for the WindowOrientationListener.
     * @param handler Provides the Looper for receiving sensor updates.
     * @param handler Provides the Looper for receiving sensor updates.
     * @param wmService WindowManagerService to read the device config from.
     * @param defaultRotation Default rotation of the display.
     * @param rate at which sensor events are processed (see also
     * @param rate at which sensor events are processed (see also
     * {@link android.hardware.SensorManager SensorManager}). Use the default
     * {@link android.hardware.SensorManager SensorManager}). Use the default
     * value of {@link android.hardware.SensorManager#SENSOR_DELAY_NORMAL
     * value of {@link android.hardware.SensorManager#SENSOR_DELAY_NORMAL
@@ -111,10 +116,11 @@ public abstract class WindowOrientationListener {
     *
     *
     * This constructor is private since no one uses it.
     * This constructor is private since no one uses it.
     */
     */
    private WindowOrientationListener(
    private WindowOrientationListener(Context context, Handler handler,
            Context context, Handler handler, int rate) {
            @Surface.Rotation int defaultRotation, int rate) {
        mContext = context;
        mContext = context;
        mHandler = handler;
        mHandler = handler;
        mDefaultRotation = defaultRotation;
        mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
        mSensorManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
        mRate = rate;
        mRate = rate;
        List<Sensor> l = mSensorManager.getSensorList(Sensor.TYPE_DEVICE_ORIENTATION);
        List<Sensor> l = mSensorManager.getSensorList(Sensor.TYPE_DEVICE_ORIENTATION);
@@ -1159,7 +1165,7 @@ public abstract class WindowOrientationListener {
                                "Reusing the last rotation resolution: " + mLastRotationResolution);
                                "Reusing the last rotation resolution: " + mLastRotationResolution);
                        finalizeRotation(mLastRotationResolution);
                        finalizeRotation(mLastRotationResolution);
                    } else {
                    } else {
                        finalizeRotation(Surface.ROTATION_0);
                        finalizeRotation(mDefaultRotation);
                    }
                    }
                    return;
                    return;
                }
                }
+19 −10
Original line number Original line Diff line number Diff line
@@ -132,6 +132,19 @@ public class WindowOrientationListenerTest {
        assertThat(mFinalizedRotation).isEqualTo(DEFAULT_SENSOR_ROTATION);
        assertThat(mFinalizedRotation).isEqualTo(DEFAULT_SENSOR_ROTATION);
    }
    }


    @Test
    public void testOnSensorChanged_screenLocked_doNotCallRotationResolverReturnDefaultRotation() {
        mWindowOrientationListener = new TestableWindowOrientationListener(mMockContext,
                mHandler, /* defaultRotation */ Surface.ROTATION_180);
        mWindowOrientationListener.mRotationResolverService = mFakeRotationResolverInternal;
        mWindowOrientationListener.mIsScreenLocked = true;

        mWindowOrientationListener.mOrientationJudge.onSensorChanged(mFakeSensorEvent);

        assertThat(mWindowOrientationListener.mIsOnProposedRotationChangedCalled).isFalse();
        assertThat(mFinalizedRotation).isEqualTo(Surface.ROTATION_180);
    }

    static final class TestableRotationResolver extends RotationResolverInternal {
    static final class TestableRotationResolver extends RotationResolverInternal {
        @Surface.Rotation
        @Surface.Rotation
        RotationResolverCallbackInternal mCallback;
        RotationResolverCallbackInternal mCallback;
@@ -166,21 +179,17 @@ public class WindowOrientationListenerTest {
        }
        }
    }
    }


    @Test
    public void testOnSensorChanged_inLockScreen_doNotCallRotationResolver() {
        mWindowOrientationListener.mIsScreenLocked = true;

        mWindowOrientationListener.mOrientationJudge.onSensorChanged(mFakeSensorEvent);

        assertThat(mWindowOrientationListener.mIsOnProposedRotationChangedCalled).isFalse();
    }

    final class TestableWindowOrientationListener extends WindowOrientationListener {
    final class TestableWindowOrientationListener extends WindowOrientationListener {
        private boolean mIsOnProposedRotationChangedCalled = false;
        private boolean mIsOnProposedRotationChangedCalled = false;
        private boolean mIsScreenLocked;
        private boolean mIsScreenLocked;


        TestableWindowOrientationListener(Context context, Handler handler) {
        TestableWindowOrientationListener(Context context, Handler handler) {
            super(context, handler);
            this(context, handler, Surface.ROTATION_0);
        }

        TestableWindowOrientationListener(Context context, Handler handler,
                @Surface.Rotation int defaultRotation) {
            super(context, handler, defaultRotation);
            this.mOrientationJudge = new OrientationSensorJudge();
            this.mOrientationJudge = new OrientationSensorJudge();
        }
        }