summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Jeff Chang <chengjeff@google.com> 2020-05-03 15:52:07 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-05-03 15:52:07 +0000
commit495fd8e5495e42e78fb003ad18b0148775889909 (patch)
tree00cc4b1d148ac90aca3319fa6e2dc5ad7fe81fc2
parentaeae048088acbea279550bd9404dd78e76637735 (diff)
parent51de04a67d3c1b2ae13cfec831fbb19b3899661d (diff)
Merge "Protect against assumptions of a top focused stack." into rvc-dev
-rw-r--r--services/core/java/com/android/server/wm/ActivityRecord.java3
-rw-r--r--services/core/java/com/android/server/wm/ActivityStarter.java2
2 files changed, 4 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index 5f8e9ffb2881..8fbb2a90bb38 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -5526,6 +5526,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
// timeout should not be caused by this.
if (stopped) {
final ActivityStack stack = mRootWindowContainer.getTopDisplayFocusedStack();
+ if (stack == null) {
+ return this;
+ }
// Try to use the one which is closest to top.
ActivityRecord r = stack.getResumedActivity();
if (r == null) {
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 4ea990285269..79e8ee3ec54b 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -1125,7 +1125,7 @@ class ActivityStarter {
// If we are starting an activity that is not from the same uid as the currently resumed
// one, check whether app switches are allowed.
- if (voiceSession == null && (stack.getResumedActivity() == null
+ if (voiceSession == null && stack != null && (stack.getResumedActivity() == null
|| stack.getResumedActivity().info.applicationInfo.uid != realCallingUid)) {
if (!mService.checkAppSwitchAllowedLocked(callingPid, callingUid,
realCallingPid, realCallingUid, "Activity start")) {