summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Riddle Hsu <riddlehsu@google.com> 2020-01-21 16:12:38 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-01-21 16:12:38 +0000
commitb2cbd9dcc2734b1905a8c79c3a903889525540ab (patch)
tree90182f7a761094a2a5e9bc1adf68033da8885e29
parent58423362b9f1423b5c0b9e420784877b147f5339 (diff)
parent03c8642490de98ca675f199250d7ad91b42664a1 (diff)
Merge "Fix NPE when popping ANR dialog for system"
-rw-r--r--services/core/java/com/android/server/am/ActivityManagerService.java3
-rw-r--r--services/core/java/com/android/server/am/ProcessRecord.java9
2 files changed, 6 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index b0369752bdaf..d9fbc85fb6e1 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -363,6 +363,7 @@ import com.android.server.wm.ActivityMetricsLaunchObserver;
import com.android.server.wm.ActivityServiceConnectionsHolder;
import com.android.server.wm.ActivityTaskManagerInternal;
import com.android.server.wm.ActivityTaskManagerService;
+import com.android.server.wm.WindowManagerInternal;
import com.android.server.wm.WindowManagerService;
import com.android.server.wm.WindowProcessController;
@@ -1505,6 +1506,7 @@ public class ActivityManagerService extends IActivityManager.Stub
@VisibleForTesting
public WindowManagerService mWindowManager;
+ WindowManagerInternal mWmInternal;
@VisibleForTesting
public ActivityTaskManagerService mActivityTaskManager;
@VisibleForTesting
@@ -2085,6 +2087,7 @@ public class ActivityManagerService extends IActivityManager.Stub
public void setWindowManager(WindowManagerService wm) {
synchronized (this) {
mWindowManager = wm;
+ mWmInternal = LocalServices.getService(WindowManagerInternal.class);
mActivityTaskManager.setWindowManager(wm);
}
}
diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index cbf058700909..0639db02469d 100644
--- a/services/core/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
@@ -65,8 +65,6 @@ import com.android.internal.app.procstats.ProcessStats;
import com.android.internal.os.BatteryStatsImpl;
import com.android.internal.os.ProcessCpuTracker;
import com.android.internal.os.Zygote;
-import com.android.server.LocalServices;
-import com.android.server.wm.WindowManagerInternal;
import com.android.server.wm.WindowProcessController;
import com.android.server.wm.WindowProcessListener;
@@ -1804,9 +1802,6 @@ class ProcessRecord implements WindowProcessListener {
/** current wait for debugger dialog */
private AppWaitingForDebuggerDialog mWaitDialog;
- private final WindowManagerInternal mWmInternal =
- LocalServices.getService(WindowManagerInternal.class);
-
boolean hasCrashDialogs() {
return mCrashDialogs != null;
}
@@ -1932,7 +1927,9 @@ class ProcessRecord implements WindowProcessListener {
}
// If there is no foreground window display, fallback to last used display.
if (displayContexts.isEmpty() || lastUsedOnly) {
- displayContexts.add(mWmInternal.getTopFocusedDisplayUiContext());
+ displayContexts.add(mService.mWmInternal != null
+ ? mService.mWmInternal.getTopFocusedDisplayUiContext()
+ : mService.mUiContext);
}
return displayContexts;
}