From 7b614376bc96cae1885fd62b1e6cee39caa7b62e Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Wed, 28 Sep 2016 15:17:50 +0200 Subject: [PATCH] Fix case in which onTaskStackChanged was not called In completeResumeLocked, visibility was changed but we didn't set the flag so the listeners didn't get notified. Test: runtest -c com.android.server.am.TaskStackChangedListenerTest frameworks-services Change-Id: I4b4076a895baafc877f312d24211a2fc69a98e3b Fixes: 31527783 --- .../com/android/server/am/ActivityStack.java | 5 + services/tests/servicestests/Android.mk | 2 + .../tests/servicestests/AndroidManifest.xml | 4 + .../am/TaskStackChangedListenerTest.java | 123 ++++++++++++++++++ 4 files changed, 134 insertions(+) create mode 100644 services/tests/servicestests/src/com/android/server/am/TaskStackChangedListenerTest.java diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 7708b0205074c..645d114467ec5 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1414,7 +1414,12 @@ final class ActivityStack { * this function updates the rest of our state to match that fact. */ private void completeResumeLocked(ActivityRecord next) { + boolean wasVisible = next.visible; next.visible = true; + if (!wasVisible) { + // Visibility has changed, so take a note of it so we call the TaskStackChangedListener + mStackSupervisor.mAppVisibilitiesChangedSinceLastPause = true; + } next.idle = false; next.results = null; next.newIntents = null; diff --git a/services/tests/servicestests/Android.mk b/services/tests/servicestests/Android.mk index b76392c967f65..3f5b96ea6a191 100644 --- a/services/tests/servicestests/Android.mk +++ b/services/tests/servicestests/Android.mk @@ -53,6 +53,8 @@ ifeq (true,$(EMMA_INSTRUMENT)) LOCAL_JACK_FLAGS := --multi-dex native endif # EMMA_INSTRUMENT_STATIC +LOCAL_STATIC_JAVA_LIBRARIES += ub-uiautomator + include $(BUILD_PACKAGE) ######################################################################### diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml index b8ace28fc0937..514f095cbd58c 100644 --- a/services/tests/servicestests/AndroidManifest.xml +++ b/services/tests/servicestests/AndroidManifest.xml @@ -43,6 +43,7 @@ + @@ -155,6 +156,9 @@ + + +