diff options
| author | 2017-03-21 23:29:14 +0000 | |
|---|---|---|
| committer | 2017-03-21 23:29:24 +0000 | |
| commit | 8da5735266da00ccae7ccfcc8567d3dfdafa056e (patch) | |
| tree | f08502db8660c30d6744cdc12ee141b80f452e6a | |
| parent | 6a0b9d43790971b5845a77760c6a64e24952c253 (diff) | |
| parent | 82ea6cb9de38fd20ebcddfd84f0132908beeeab1 (diff) | |
Merge "Switch display uid whitelist from task to activity"
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(); } /** |