commit | acda839b9e3fa12d0f0b40ffd8ec3708ad0a6038 | [log] [tgz] |
---|---|---|
author | Ming-Shin Lu <lumark@google.com> | Tue Jun 19 03:11:57 2018 +0000 |
committer | Android (Google) Code Review <android-gerrit@google.com> | Tue Jun 19 03:11:57 2018 +0000 |
tree | a5ac446e657184c825f75d1f280225edbac2eadc | |
parent | e6c03a07d0899f42eafefe9c361287ed604f7a4e [diff] | |
parent | f6c4a9868cf92c292ddac05b4237ec12a78410e9 [diff] |
Merge "Prevent NPEs when no focusable stack."
diff --git a/services/core/java/com/android/server/am/ActivityMetricsLogger.java b/services/core/java/com/android/server/am/ActivityMetricsLogger.java index 6618830..1611a38 100644 --- a/services/core/java/com/android/server/am/ActivityMetricsLogger.java +++ b/services/core/java/com/android/server/am/ActivityMetricsLogger.java
@@ -185,6 +185,10 @@ mWindowState = WINDOW_STATE_INVALID; ActivityStack stack = mSupervisor.getFocusedStack(); + if (stack == null) { + return; + } + if (stack.isActivityTypeAssistant()) { mWindowState = WINDOW_STATE_ASSISTANT; return;
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index c372266..a77d734 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java
@@ -709,6 +709,11 @@ if (!focusCandidate.isFocusable()) { // The focus candidate isn't focusable. Move focus to the top stack that is focusable. focusCandidate = getNextFocusableStackLocked(focusCandidate, false /* ignoreCurrent */); + if (focusCandidate == null) { + Slog.w(TAG, + "setFocusStackUnchecked: No focusable stack found, focus home as default"); + focusCandidate = mHomeStack; + } } if (focusCandidate != mFocusedStack) {