diff options
author | Jose Lima <joselima@google.com> | 2014-05-30 01:41:18 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-05-30 01:41:18 +0000 |
commit | 4f8a92bd20be374811b2cab855f390221893279a (patch) | |
tree | a102cdcddf42fae1e062337c0ac48d3fb80ef8df /services | |
parent | 432fe9829744983576f0afabb4b73165f9695a8f (diff) | |
parent | 58e66d69f9f239a444a90c7ff5eae32557fe350c (diff) | |
download | frameworks_base-4f8a92bd20be374811b2cab855f390221893279a.zip frameworks_base-4f8a92bd20be374811b2cab855f390221893279a.tar.gz frameworks_base-4f8a92bd20be374811b2cab855f390221893279a.tar.bz2 |
Merge "Only allow 1 Stack on Leanback-only devices" into lmp-preview-dev
Diffstat (limited to 'services')
-rw-r--r-- | services/core/java/com/android/server/am/ActivityStackSupervisor.java | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/services/core/java/com/android/server/am/ActivityStackSupervisor.java b/services/core/java/com/android/server/am/ActivityStackSupervisor.java index 0b1c2b8..0cc53d1 100644 --- a/services/core/java/com/android/server/am/ActivityStackSupervisor.java +++ b/services/core/java/com/android/server/am/ActivityStackSupervisor.java @@ -204,6 +204,10 @@ public final class ActivityStackSupervisor implements DisplayListener { /** Set when we have taken too long waiting to go to sleep. */ boolean mSleepTimeout = false; + /** Indicates if we are running on a Leanback-only (TV) device. Only initialized after + * setWindowManager is called. **/ + private boolean mLeanbackOnlyDevice; + /** * We don't want to allow the device to go to sleep while in the process * of launching an activity. This is primarily to allow alarm intent @@ -268,6 +272,9 @@ public final class ActivityStackSupervisor implements DisplayListener { mHomeStack = mFocusedStack = mLastFocusedStack = getStack(HOME_STACK_ID); mInputManagerInternal = LocalServices.getService(InputManagerInternal.class); + + // Initialize this here, now that we can get a valid reference to PackageManager. + mLeanbackOnlyDevice = isLeanbackOnlyDevice(); } } @@ -1375,7 +1382,10 @@ public final class ActivityStackSupervisor implements DisplayListener { ActivityStack adjustStackFocus(ActivityRecord r, boolean newTask) { final TaskRecord task = r.task; - if (r.isApplicationActivity() || (task != null && task.isApplicationTask())) { + + // On leanback only devices we should keep all activities in the same stack. + if (!mLeanbackOnlyDevice && + (r.isApplicationActivity() || (task != null && task.isApplicationTask()))) { if (task != null) { final ActivityStack taskStack = task.stack; if (taskStack.isOnHomeDisplay()) { @@ -3423,4 +3433,16 @@ public final class ActivityStackSupervisor implements DisplayListener { return "VirtualActivityDisplay={" + mDisplayId + "}"; } } + + private boolean isLeanbackOnlyDevice() { + boolean onLeanbackOnly = false; + try { + onLeanbackOnly = AppGlobals.getPackageManager().hasSystemFeature( + PackageManager.FEATURE_LEANBACK_ONLY); + } catch (RemoteException e) { + // noop + } + + return onLeanbackOnly; + } } |