From ca2af9e38c31c823f72a6060c45b27fc968e6bd8 Mon Sep 17 00:00:00 2001 From: Wale Ogunwale Date: Thu, 26 May 2016 14:43:19 -0700 Subject: [PATCH] Only make Recents activity invisible if not focused on TV devices. Change was introduced in b/28246419 to fix Recents activity visibility issues on TV, but was causing other issues on phones. So, only apply rule on TV devices. Bug: 28246419 Bug: 28943853 Change-Id: Icd19eae4ffa5e0a798bc9f63bc7a6c9a60422236 --- .../core/java/com/android/server/am/ActivityManagerService.java | 6 ++++++ services/core/java/com/android/server/am/ActivityStack.java | 6 +++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 5400e0ddcbd6..c0a65055e6c2 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -266,6 +266,7 @@ import static android.app.ActivityManager.StackId.INVALID_STACK_ID; import static android.app.ActivityManager.StackId.LAST_STATIC_STACK_ID; import static android.app.ActivityManager.StackId.PINNED_STACK_ID; import static android.content.pm.PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT; +import static android.content.pm.PackageManager.FEATURE_LEANBACK_ONLY; import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.GET_PROVIDERS; import static android.content.pm.PackageManager.MATCH_DEBUG_TRIAGED_MISSING; @@ -1344,6 +1345,7 @@ public final class ActivityManagerService extends ActivityManagerNative boolean mSupportsMultiWindow; boolean mSupportsFreeformWindowManagement; boolean mSupportsPictureInPicture; + boolean mSupportsLeanbackOnly; Rect mDefaultPinnedStackBounds; IActivityController mController = null; boolean mControllerIsAMonkey = false; @@ -12785,6 +12787,9 @@ public final class ActivityManagerService extends ActivityManagerNative final boolean forceRtl = Settings.Global.getInt(resolver, DEVELOPMENT_FORCE_RTL, 0) != 0; final boolean forceResizable = Settings.Global.getInt( resolver, DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, 0) != 0; + final boolean supportsLeanbackOnly = + mContext.getPackageManager().hasSystemFeature(FEATURE_LEANBACK_ONLY); + // Transfer any global setting for forcing RTL layout, into a System Property SystemProperties.set(DEVELOPMENT_FORCE_RTL, forceRtl ? "1":"0"); @@ -12800,6 +12805,7 @@ public final class ActivityManagerService extends ActivityManagerNative mWaitForDebugger = mOrigWaitForDebugger = waitForDebugger; mAlwaysFinishActivities = alwaysFinishActivities; mLenientBackgroundCheck = lenientBackgroundCheck; + mSupportsLeanbackOnly = supportsLeanbackOnly; mForceResizableActivities = forceResizable; mWindowManager.setForceResizableTasks(mForceResizableActivities); if (supportsMultiWindow || forceResizable) { diff --git a/services/core/java/com/android/server/am/ActivityStack.java b/services/core/java/com/android/server/am/ActivityStack.java index 8b637e0ae44d..ba044cc4c2a1 100644 --- a/services/core/java/com/android/server/am/ActivityStack.java +++ b/services/core/java/com/android/server/am/ActivityStack.java @@ -1832,9 +1832,9 @@ final class ActivityStack { boolean isVisible = !behindFullscreenActivity || r.mLaunchTaskBehind || activityVisibleBehind; - if (isVisible && r.isRecentsActivity()) { - // Recents activity can only be visible if the home stack is the focused stack or we are - // in split-screen mode. + if (mService.mSupportsLeanbackOnly && isVisible && r.isRecentsActivity()) { + // On devices that support leanback only (Android TV), Recents activity can only be + // visible if the home stack is the focused stack or we are in split-screen mode. isVisible = mStackSupervisor.getStack(DOCKED_STACK_ID) != null || mStackSupervisor.isFocusedStack(this); } -- 2.11.0