summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorJose Lima <joselima@google.com>2014-05-30 01:41:18 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-05-30 01:41:18 +0000
commit4f8a92bd20be374811b2cab855f390221893279a (patch)
treea102cdcddf42fae1e062337c0ac48d3fb80ef8df /services
parent432fe9829744983576f0afabb4b73165f9695a8f (diff)
parent58e66d69f9f239a444a90c7ff5eae32557fe350c (diff)
downloadframeworks_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.java24
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;
+ }
}