From 38f426c8083e9aedd17449e0cc3ecacddfaaf2ab Mon Sep 17 00:00:00 2001 From: Vladislav Kaznacheev Date: Wed, 28 Oct 2015 15:48:12 -0700 Subject: [PATCH] Show the app shelf depending on the platform feature This CL uses PackageManager. FEATURE_FREEFORM_WINDOW_MANAGEMENT to determine whether app shelf should be displayed, and removes config_enableAppShelf flag that was previously used for that. Bug: 25329519 Change-Id: I6460eca8e158b0e114e8f2cfdfea4a2e5eadd03b --- packages/SystemUI/res/values/config.xml | 3 --- .../statusbar/phone/PhoneStatusBar.java | 19 +++++++++++++++---- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 07c59a9b3b94f..0c638a2b71646 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -269,9 +269,6 @@ 300 - - false - false diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index cfdb01e177eaa..f3658eb3c1c99 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -33,6 +33,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.content.pm.IPackageManager; +import android.content.pm.PackageManager; import android.content.res.Configuration; import android.content.res.Resources; import android.database.ContentObserver; @@ -246,15 +247,25 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, * Prudently disable QS and notifications. */ private static final boolean ONLY_CORE_APPS; + /* If true, the device supports freeform window management. + * This affects the status bar UI. */ + private static final boolean FREEFORM_WINDOW_MANAGEMENT; + static { boolean onlyCoreApps; + boolean freeformWindowManagement; try { - onlyCoreApps = IPackageManager.Stub.asInterface(ServiceManager.getService("package")) - .isOnlyCoreApps(); + IPackageManager packageManager = + IPackageManager.Stub.asInterface(ServiceManager.getService("package")); + onlyCoreApps = packageManager.isOnlyCoreApps(); + freeformWindowManagement = packageManager.hasSystemFeature( + PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT); } catch (RemoteException e) { onlyCoreApps = false; + freeformWindowManagement = false; } ONLY_CORE_APPS = onlyCoreApps; + FREEFORM_WINDOW_MANAGEMENT = freeformWindowManagement; } PhoneStatusBarPolicy mIconPolicy; @@ -982,8 +993,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, if (shelfOverride != DEFAULT) { return shelfOverride != 0; } - // Otherwise default to the build setting. - return mContext.getResources().getBoolean(R.bool.config_enableAppShelf); + // Otherwise default to the platform feature. + return FREEFORM_WINDOW_MANAGEMENT; } private void clearAllNotifications() {