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

Commit 248fbb18 authored by Bryce Lee's avatar Bryce Lee
Browse files

Do not use rotation as indicator to relaunch from config change.

Rotation is a hidden member inside configuration that should not
influence configuration related logic. This CL ensures that we do
not consider changes to the rotation as grounds for relaunching an
activity.

Change-Id: I9e6d4a1a75fd3ee3beb63f307433e9c3fcfd6dd4
Fixes: 63533208
Test: go/wm-smoke
Test:cts/hostsidetests/services/activityandwindowmanager/util/run-test CtsServicesHostTestCases android.server.cts.ActivityManagerConfigChangeTests
parent 64905381
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -765,6 +765,16 @@ public class ActivityInfo extends ComponentInfo
     * constant starts at the high bits.
     */
    public static final int CONFIG_FONT_SCALE = 0x40000000;
    /**
     * Bit in {@link #configChanges} that indicates that the activity
     * can itself handle changes to the rotation.  Set from the
     * {@link android.R.attr#configChanges} attribute.  This is
     * not a core resource configuration, but a higher-level value, so its
     * constant starts at the high bits.
     * @hide We do not want apps to handle this. It will eventually be moved out of
     * {@link Configuration}.
     */
    public static final int CONFIG_ROTATION = 0x20000000;

    /** @hide
     * Unfortunately the constants for config changes in native code are
+1 −1
Original line number Diff line number Diff line
@@ -1395,7 +1395,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        }
        if ((compareUndefined || delta.mRotation != ROTATION_UNDEFINED)
                && mRotation != delta.mRotation) {
            changed |= ActivityInfo.CONFIG_ORIENTATION;
            changed |= ActivityInfo.CONFIG_ROTATION;
        }
        if ((compareUndefined || getScreenLayoutNoDirection(delta.screenLayout) !=
                (SCREENLAYOUT_SIZE_UNDEFINED | SCREENLAYOUT_LONG_UNDEFINED))
+5 −0
Original line number Diff line number Diff line
@@ -42,6 +42,7 @@ import static android.content.Intent.CATEGORY_LAUNCHER;
import static android.content.Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS;
import static android.content.Intent.FLAG_ACTIVITY_NO_HISTORY;
import static android.content.pm.ActivityInfo.CONFIG_ORIENTATION;
import static android.content.pm.ActivityInfo.CONFIG_ROTATION;
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_LAYOUT;
import static android.content.pm.ActivityInfo.CONFIG_SCREEN_SIZE;
import static android.content.pm.ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
@@ -2581,6 +2582,10 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
                changes &= ~CONFIG_SMALLEST_SCREEN_SIZE;
            }
        }
        // We don't want rotation to cause relaunches.
        if ((changes & CONFIG_ROTATION) != 0) {
            changes &= ~CONFIG_ROTATION;
        }
        return changes;
    }