diff options
author | Jorim Jaggi <jjaggi@google.com> | 2015-12-23 12:04:39 +0100 |
---|---|---|
committer | Jorim Jaggi <jjaggi@google.com> | 2016-01-05 13:49:59 +0100 |
commit | 6f2efd3d8c114f9a4b472ef699bbd844323cd82c (patch) | |
tree | c96a89850283982b1a65e946f8358c46cae32e51 | |
parent | a6c934e2a3e6ddec6549cea55b7bece02348c6f8 (diff) |
Add developer option for freeform window support (1/2)
Also disable default force-resizable on non-user builds.
Bug: 25276672
Bug: 24815256
Bug: 26294625
Bug: 26294534
Change-Id: I5b31e494c993d2d9dad175b94b4f30637e8f3718
4 files changed, 21 insertions, 4 deletions
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index b883f9c736d0..4eaee0b44fc5 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -6374,6 +6374,13 @@ public final class Settings { public static final String DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES = "force_resizable_activities"; + /** + * Whether to enable experimental freeform support for windows. + * @hide + */ + public static final String DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT + = "enable_freeform_support"; + /** * Whether user has enabled development settings. */ diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml index 7e2288133ab3..f7e25dbe5f6e 100644 --- a/packages/SettingsLib/res/values/strings.xml +++ b/packages/SettingsLib/res/values/strings.xml @@ -624,6 +624,11 @@ <!-- UI debug setting: force allow on external summary [CHAR LIMIT=150] --> <string name="force_resizable_activities_summary">Makes all activities resizable for multi-window, regardless of manifest values.</string> + <!-- UI debug setting: enable freeform window support [CHAR LIMIT=50] --> + <string name="enable_freeform_support">Enable freeform windows</string> + <!-- UI debug setting: enable freeform window support summary [CHAR LIMIT=150] --> + <string name="enable_freeform_support_summary">Enables support for experimental freeform windows.</string> + <!-- Local (desktop) backup password menu title [CHAR LIMIT=25] --> <string name="local_backup_password_title">Desktop backup password</string> <!-- Summary text of the "local backup password" setting when the user has not supplied a password --> diff --git a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java index 362c2060c14d..ce75e8add781 100644 --- a/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java +++ b/packages/SystemUI/src/com/android/systemui/recents/misc/SystemServicesProxy.java @@ -79,6 +79,7 @@ import static android.app.ActivityManager.StackId.DOCKED_STACK_ID; import static android.app.ActivityManager.StackId.FREEFORM_WORKSPACE_STACK_ID; import static android.app.ActivityManager.StackId.HOME_STACK_ID; import static android.app.ActivityManager.StackId.INVALID_STACK_ID; +import static android.provider.Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT; /** * Acts as a shim around the real system services that we need to access data from, and provides @@ -128,7 +129,9 @@ public class SystemServicesProxy { mDisplay = mWm.getDefaultDisplay(); mRecentsPackage = context.getPackageName(); mHasFreeformWorkspaceSupport = - mPm.hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT); + mPm.hasSystemFeature(PackageManager.FEATURE_FREEFORM_WINDOW_MANAGEMENT) || + Settings.Global.getInt(context.getContentResolver(), + DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0; // Get the dummy thumbnail width/heights Resources res = context.getResources(); diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java index 39bd361c577b..998f9806095c 100644 --- a/services/core/java/com/android/server/am/ActivityManagerService.java +++ b/services/core/java/com/android/server/am/ActivityManagerService.java @@ -258,6 +258,7 @@ import static android.content.pm.PackageManager.FEATURE_PICTURE_IN_PICTURE; import static android.content.pm.PackageManager.PERMISSION_GRANTED; import static android.provider.Settings.Global.ALWAYS_FINISH_ACTIVITIES; import static android.provider.Settings.Global.DEBUG_APP; +import static android.provider.Settings.Global.DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_RTL; import static android.provider.Settings.Global.WAIT_FOR_DEBUGGER; @@ -12204,7 +12205,9 @@ public final class ActivityManagerService extends ActivityManagerNative private void retrieveSettings() { final ContentResolver resolver = mContext.getContentResolver(); final boolean freeformWindowManagement = - mContext.getPackageManager().hasSystemFeature(FEATURE_FREEFORM_WINDOW_MANAGEMENT); + mContext.getPackageManager().hasSystemFeature(FEATURE_FREEFORM_WINDOW_MANAGEMENT) + || Settings.Global.getInt( + resolver, DEVELOPMENT_ENABLE_FREEFORM_WINDOWS_SUPPORT, 0) != 0; final boolean supportsPictureInPicture = mContext.getPackageManager().hasSystemFeature(FEATURE_PICTURE_IN_PICTURE); @@ -12213,9 +12216,8 @@ public final class ActivityManagerService extends ActivityManagerNative final boolean alwaysFinishActivities = Settings.Global.getInt(resolver, ALWAYS_FINISH_ACTIVITIES, 0) != 0; final boolean forceRtl = Settings.Global.getInt(resolver, DEVELOPMENT_FORCE_RTL, 0) != 0; - final int defaultForceResizable = Build.IS_DEBUGGABLE ? 1 : 0; final boolean forceResizable = Settings.Global.getInt( - resolver, DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, defaultForceResizable) != 0; + resolver, DEVELOPMENT_FORCE_RESIZABLE_ACTIVITIES, 0) != 0; // Transfer any global setting for forcing RTL layout, into a System Property SystemProperties.set(DEVELOPMENT_FORCE_RTL, forceRtl ? "1":"0"); |