summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Bryce Lee <brycelee@google.com> 2017-07-26 14:26:18 +0000
committer android-build-merger <android-build-merger@google.com> 2017-07-26 14:26:18 +0000
commita9ba9c3ed61f75f6712ae60ab77c3bafdd638b90 (patch)
tree058060d9d7ea6935b26dd7dbd03ce6472c46a13d
parent6b46beea25325db6c1b1054d38a40f53c1de7ff7 (diff)
parent512e5d1b9b2312e25a4db59e33502f7e6b043137 (diff)
Merge "Do not report app bound differences as a Configuration change." into oc-dr1-dev
am: 512e5d1b9b Change-Id: I2853f3545e7250d2d6f0a17399e4073c83d431a7
-rw-r--r--core/java/android/content/pm/ActivityInfo.java12
-rw-r--r--core/java/android/content/res/Configuration.java2
-rw-r--r--services/core/java/com/android/server/am/ActivityRecord.java7
-rw-r--r--services/tests/servicestests/src/com/android/server/wm/AppBoundsTests.java14
4 files changed, 32 insertions, 3 deletions
diff --git a/core/java/android/content/pm/ActivityInfo.java b/core/java/android/content/pm/ActivityInfo.java
index f098f2a7c143..16c834d18b9e 100644
--- a/core/java/android/content/pm/ActivityInfo.java
+++ b/core/java/android/content/pm/ActivityInfo.java
@@ -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
@@ -775,6 +773,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
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java
index 68d4cd8c5f7d..7b96c6a3b5f5 100644
--- a/core/java/android/content/res/Configuration.java
+++ b/core/java/android/content/res/Configuration.java
@@ -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;
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 7a00a549a293..c09947c402fb 100644
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -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;
@@ -2601,6 +2602,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;
}
diff --git a/services/tests/servicestests/src/com/android/server/wm/AppBoundsTests.java b/services/tests/servicestests/src/com/android/server/wm/AppBoundsTests.java
index 520666b6ab8d..f7ea0c47b874 100644
--- a/services/tests/servicestests/src/com/android/server/wm/AppBoundsTests.java
+++ b/services/tests/servicestests/src/com/android/server/wm/AppBoundsTests.java
@@ -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;
@@ -49,6 +50,19 @@ public class AppBoundsTests extends WindowTestsBase {
}
/**
+ * 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.
*/
@Test