summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author David Stevens <stevensd@google.com> 2017-03-21 23:29:14 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-03-21 23:29:24 +0000
commit8da5735266da00ccae7ccfcc8567d3dfdafa056e (patch)
treef08502db8660c30d6744cdc12ee141b80f452e6a
parent6a0b9d43790971b5845a77760c6a64e24952c253 (diff)
parent82ea6cb9de38fd20ebcddfd84f0132908beeeab1 (diff)
Merge "Switch display uid whitelist from task to activity"
-rw-r--r--services/core/java/com/android/server/am/ActivityRecord.java4
-rw-r--r--services/core/java/com/android/server/am/ActivityStack.java10
-rw-r--r--services/core/java/com/android/server/am/ActivityStackSupervisor.java6
-rw-r--r--services/core/java/com/android/server/am/TaskRecord.java4
4 files changed, 20 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/am/ActivityRecord.java b/services/core/java/com/android/server/am/ActivityRecord.java
index 7868fdfd864a..b9bb10645dd7 100644
--- a/services/core/java/com/android/server/am/ActivityRecord.java
+++ b/services/core/java/com/android/server/am/ActivityRecord.java
@@ -2391,6 +2391,10 @@ final class ActivityRecord implements AppWindowContainerListener {
return (config.uiMode & Configuration.UI_MODE_TYPE_MASK) == UI_MODE_TYPE_VR_HEADSET;
}
+ int getUid() {
+ return info.applicationInfo.uid;
+ }
+
@Override
public String toString() {
if (stringName != null) {
diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java
index e64b4b325642..9a4f804cb1b3 100644
--- a/services/core/java/com/android/server/am/ActivityStack.java
+++ b/services/core/java/com/android/server/am/ActivityStack.java
@@ -741,8 +741,10 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
/** Checks if there are tasks with specific UID in the stack. */
boolean isUidPresent(int uid) {
for (TaskRecord task : mTaskHistory) {
- if (task.effectiveUid == uid) {
- return true;
+ for (ActivityRecord r : task.mActivities) {
+ if (r.getUid() == uid) {
+ return true;
+ }
}
}
return false;
@@ -751,7 +753,9 @@ class ActivityStack<T extends StackWindowController> extends ConfigurationContai
/** Get all UIDs that are present in the stack. */
void getPresentUIDs(IntArray presentUIDs) {
for (TaskRecord task : mTaskHistory) {
- presentUIDs.add(task.effectiveUid);
+ for (ActivityRecord r : task.mActivities) {
+ presentUIDs.add(r.getUid());
+ }
}
}
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
index 2be87dcf3b79..5c49dfd7052b 100644
--- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -1636,7 +1636,11 @@ public class ActivityStackSupervisor extends ConfigurationContainer implements D
mDisplayAccessUIDs.clear();
for (int displayNdx = mActivityDisplays.size() - 1; displayNdx >= 0; --displayNdx) {
final ActivityDisplay activityDisplay = mActivityDisplays.valueAt(displayNdx);
- mDisplayAccessUIDs.append(activityDisplay.mDisplayId, activityDisplay.getPresentUIDs());
+ // Only bother calculating the whitelist for private displays
+ if (activityDisplay.isPrivate()) {
+ mDisplayAccessUIDs.append(
+ activityDisplay.mDisplayId, activityDisplay.getPresentUIDs());
+ }
}
// Store updated lists in DisplayManager. Callers from outside of AM should get them there.
mDisplayManagerInternal.setDisplayAccessUIDs(mDisplayAccessUIDs);
diff --git a/services/core/java/com/android/server/am/TaskRecord.java b/services/core/java/com/android/server/am/TaskRecord.java
index 13c8865525ef..a668fea9711f 100644
--- a/services/core/java/com/android/server/am/TaskRecord.java
+++ b/services/core/java/com/android/server/am/TaskRecord.java
@@ -1236,6 +1236,10 @@ final class TaskRecord extends ConfigurationContainer implements TaskWindowConta
mWindowContainerController.positionChildAt(appController, index);
}
r.onOverrideConfigurationSent();
+
+ // Make sure the list of display UID whitelists is updated
+ // now that this record is in a new task.
+ mService.mStackSupervisor.updateUIDsPresentOnDisplay();
}
/**