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

Commit d6a2ed19 authored by Bryce Lee's avatar Bryce Lee Committed by android-build-merger
Browse files

Merge "Do not report app bound differences as a Configuration change." into oc-dr1-dev

am: 512e5d1b

Change-Id: If5c2ce81a92d751c3481d7613611b9373060f78a
parents 147966d7 512e5d1b
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -28,8 +28,6 @@ import android.util.Printer;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

import static android.view.WindowManager.LayoutParams.ROTATION_ANIMATION_ROTATE;

/**
 * Information you can retrieve about a particular application
 * activity or receiver. This corresponds to information collected
@@ -792,6 +790,16 @@ public class ActivityInfo extends ComponentInfo
     * {@link Configuration}.
     */
    public static final int CONFIG_ROTATION = 0x20000000;
    /**
     * Bit in {@link #configChanges} that indicates that the activity
     * can itself handle changes to the app bounds.  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_APP_BOUNDS = 0x10000000;

    /** @hide
     * Unfortunately the constants for config changes in native code are
+1 −1
Original line number Diff line number Diff line
@@ -1445,7 +1445,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration
        if ((compareUndefined || delta.appBounds != null)
                && appBounds != delta.appBounds
                && (appBounds == null || !appBounds.equals(delta.appBounds))) {
            changed |= ActivityInfo.CONFIG_SCREEN_SIZE;
            changed |= ActivityInfo.CONFIG_APP_BOUNDS;
        }

        return changed;
+7 −0
Original line number Diff line number Diff line
@@ -41,6 +41,7 @@ import static android.content.Intent.CATEGORY_HOME;
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_APP_BOUNDS;
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;
@@ -2576,6 +2577,12 @@ final class ActivityRecord extends ConfigurationContainer implements AppWindowCo
        if ((changes & CONFIG_ROTATION) != 0) {
            changes &= ~CONFIG_ROTATION;
        }

        // We don't want app bound changes to cause relaunches.
        if ((changes & CONFIG_APP_BOUNDS) != 0) {
            changes &= ~CONFIG_APP_BOUNDS;
        }

        return changes;
    }

+14 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.server.wm;

import android.app.ActivityManager;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.view.DisplayInfo;
@@ -48,6 +49,19 @@ public class AppBoundsTests extends WindowTestsBase {
        mParentBounds = new Rect(10 /*left*/, 30 /*top*/, 80 /*right*/, 60 /*bottom*/);
    }

    /**
     * Ensures that appBounds causes {@link android.content.pm.ActivityInfo.CONFIG_APP_BOUNDS} diff.
     */
    @Test
    public void testAppBoundsConfigurationDiff() {
        final Configuration config = new Configuration();
        final Configuration config2 = new Configuration();
        config.appBounds = new Rect(0, 1, 1, 0);
        config2.appBounds = new Rect(0, 2, 2, 0);

        assertEquals(ActivityInfo.CONFIG_APP_BOUNDS, config.diff(config2));
    }

    /**
     * Ensures the configuration app bounds at the root level match the app dimensions.
     */