Loading res/values/strings.xml +17 −10 Original line number Diff line number Diff line Loading @@ -12201,10 +12201,17 @@ <!-- Default title for the settings panel [CHAR LIMIT=NONE] --> <string name="settings_panel_title">Settings Panel</string> <!-- UI debug setting: force desktop mode [CHAR LIMIT=50] --> <string name="force_desktop_mode">Force desktop mode</string> <!-- UI debug setting: force desktop mode summary [CHAR LIMIT=NONE] --> <string name="force_desktop_mode_summary">Force experimental desktop mode on secondary displays</string> <!-- Title for enabling freeform windows (desktop mode) developer option toggle [CHAR LIMIT=50] --> <string name="enable_desktop_mode">Enable freeform windows</string> <!-- Summary for enabling freeform windows (desktop mode) developer option toggle [CHAR LIMIT=NONE] --> <string name="enable_desktop_mode_summary">Enable support for freeform windows.</string> <!-- TODO(b/348193756): Rename resources for this toggle to indicate that it is for secondary display --> <!-- Title for enabling freeform windows (desktop mode) on secondary display developer option toggle [CHAR LIMIT=50] --> <string name="force_desktop_mode">Enable freeform windowing on second display</string> <!-- Summary for enabling freeform windows (desktop mode) on secondary display developer option toggle [CHAR LIMIT=NONE] --> <string name="force_desktop_mode_summary">Enable freeform windows only on secondary display.</string> <!-- UI debug setting: enable non-resizables in multi window [CHAR LIMIT=60] --> <string name="enable_non_resizable_multi_window">Enable non-resizable in multi window</string> <!-- UI debug setting: enable non-resizables in multi window summary [CHAR LIMIT=NONE] --> Loading Loading @@ -13168,12 +13175,12 @@ <!-- Dialog body text used to explain a reboot is required after enabling freeform support for it to work [CHAR LIMIT=none] --> <string name="reboot_dialog_enable_freeform_support">A reboot is required to enable freeform support.</string> <!-- Dialog body text used to explain a reboot is required after forcing desktop mode on secondary dislays. [CHAR LIMIT=none] --> <string name="reboot_dialog_force_desktop_mode">A reboot is required to force desktop mode on secondary displays.</string> <string name="reboot_dialog_enable_freeform_support">A reboot is required to enable legacy freeform windowing support.</string> <!-- Dialog body text used to explain a reboot is required after overriding freeform windowing (desktop mode) support. [CHAR LIMIT=none] --> <string name="reboot_dialog_override_desktop_mode">A reboot is required to change freeform windowing support.</string> <!-- Dialog body text used to explain a reboot is required after forcing freeform windowing (desktop mode) on secondary displays. [CHAR LIMIT=none] --> <string name="reboot_dialog_force_desktop_mode">A reboot is required to force freeform windowing on secondary displays.</string> <!-- Text on the dialog button to reboot the device now [CHAR LIMIT=50] --> <string name="reboot_dialog_reboot_now">Reboot now</string> <!-- Text on the dialog button to reboot the device later [CHAR LIMIT=50] --> res/xml/development_settings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -737,6 +737,11 @@ android:title="@string/force_resizable_activities" android:summary="@string/force_resizable_activities_summary" /> <SwitchPreferenceCompat android:key="override_desktop_mode_features" android:title="@string/enable_desktop_mode" android:summary="@string/enable_desktop_mode_summary" /> <SwitchPreferenceCompat android:key="enable_freeform_support" android:title="@string/enable_freeform_support" Loading src/com/android/settings/development/DesktopModePreferenceController.java +45 −15 Original line number Diff line number Diff line Loading @@ -16,11 +16,12 @@ package com.android.settings.development; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS; import static android.provider.Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES; import android.content.Context; import android.os.Build; import android.os.SystemProperties; import android.provider.Settings; import android.util.Log; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; Loading @@ -30,19 +31,29 @@ import androidx.preference.TwoStatePreference; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; import com.android.window.flags.Flags; /** * Preference controller to control Desktop mode features */ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, RebootConfirmationDialogHost { private static final String FORCE_DESKTOP_MODE_KEY = "force_desktop_mode_on_external_displays"; private static final String OVERRIDE_DESKTOP_MODE_FEATURES_KEY = "override_desktop_mode_features"; private static final String TAG = "DesktopModePreferenceController"; @VisibleForTesting static final int SETTING_VALUE_OFF = 0; @VisibleForTesting static final int SETTING_VALUE_ON = 1; @VisibleForTesting static final int SETTING_VALUE_UNSET = -1; @Nullable private final DevelopmentSettingsDashboardFragment mFragment; @Nullable private final DevelopmentSettingsDashboardFragment mFragment; public DesktopModePreferenceController( Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) { Loading @@ -50,41 +61,60 @@ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceC mFragment = fragment; } @Override public boolean isAvailable() { return isDeviceEligibleForDesktopMode() && Flags.showDesktopWindowingDevOption(); } @Override public String getPreferenceKey() { return FORCE_DESKTOP_MODE_KEY; return OVERRIDE_DESKTOP_MODE_FEATURES_KEY; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean isEnabled = (Boolean) newValue; Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); if (isEnabled) { if (mFragment != null) { RebootConfirmationDialogFragment.show( mFragment, R.string.reboot_dialog_force_desktop_mode, this); mFragment, R.string.reboot_dialog_override_desktop_mode, this); } return true; } @Override public void updateState(Preference preference) { // Use overridden state, if not present, then use default state final boolean shouldDevOptionBeEnabledByDefault = Flags.enableDesktopWindowingMode(); final int mode = Settings.Global.getInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF); ((TwoStatePreference) mPreference).setChecked(mode != SETTING_VALUE_OFF); DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, shouldDevOptionBeEnabledByDefault ? SETTING_VALUE_ON : SETTING_VALUE_OFF); final boolean shouldDevOptionBeEnabled = switch (mode) { case SETTING_VALUE_OFF -> false; case SETTING_VALUE_ON -> true; case SETTING_VALUE_UNSET -> shouldDevOptionBeEnabledByDefault; default -> { Log.w(TAG, "Invalid override for desktop mode: " + mode); yield shouldDevOptionBeEnabledByDefault; } }; ((TwoStatePreference) mPreference).setChecked(shouldDevOptionBeEnabled); } @Override protected void onDeveloperOptionsSwitchDisabled() { super.onDeveloperOptionsSwitchDisabled(); Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF); ((TwoStatePreference) mPreference).setChecked(false); DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, SETTING_VALUE_UNSET); } @VisibleForTesting String getBuildType() { return Build.TYPE; private boolean isDeviceEligibleForDesktopMode() { boolean enforceDeviceRestrictions = SystemProperties.getBoolean( "persist.wm.debug.desktop_mode_enforce_device_restrictions", true); boolean isDesktopModeSupported = mContext.getResources().getBoolean( com.android.internal.R.bool.config_isDesktopModeSupported); return !enforceDeviceRestrictions || isDesktopModeSupported; } } src/com/android/settings/development/DesktopModeSecondaryDisplayPreferenceController.java 0 → 100644 +96 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.development; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS; import android.content.Context; import android.os.Build; import android.provider.Settings; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.TwoStatePreference; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; /** * Preference controller to control Desktop mode features on secondary display */ public class DesktopModeSecondaryDisplayPreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, RebootConfirmationDialogHost { private static final String ENABLE_DESKTOP_MODE_ON_SECONDARY_DISPLAY = "force_desktop_mode_on_external_displays"; @VisibleForTesting static final int SETTING_VALUE_OFF = 0; @VisibleForTesting static final int SETTING_VALUE_ON = 1; @Nullable private final DevelopmentSettingsDashboardFragment mFragment; public DesktopModeSecondaryDisplayPreferenceController( Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) { super(context); mFragment = fragment; } @Override public String getPreferenceKey() { return ENABLE_DESKTOP_MODE_ON_SECONDARY_DISPLAY; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean isEnabled = (Boolean) newValue; Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); if (isEnabled && mFragment != null) { RebootConfirmationDialogFragment.show( mFragment, R.string.reboot_dialog_force_desktop_mode, this); } return true; } @Override public void updateState(Preference preference) { final int mode = Settings.Global.getInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF); ((TwoStatePreference) mPreference).setChecked(mode != SETTING_VALUE_OFF); } @Override protected void onDeveloperOptionsSwitchDisabled() { super.onDeveloperOptionsSwitchDisabled(); Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF); ((TwoStatePreference) mPreference).setChecked(false); } @VisibleForTesting String getBuildType() { return Build.TYPE; } } src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +1 −0 Original line number Diff line number Diff line Loading @@ -749,6 +749,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra controllers.add(new ResizableActivityPreferenceController(context)); controllers.add(new FreeformWindowsPreferenceController(context, fragment)); controllers.add(new DesktopModePreferenceController(context, fragment)); controllers.add(new DesktopModeSecondaryDisplayPreferenceController(context, fragment)); controllers.add(new NonResizableMultiWindowPreferenceController(context)); controllers.add(new ShortcutManagerThrottlingPreferenceController(context)); controllers.add(new EnableGnssRawMeasFullTrackingPreferenceController(context)); Loading Loading
res/values/strings.xml +17 −10 Original line number Diff line number Diff line Loading @@ -12201,10 +12201,17 @@ <!-- Default title for the settings panel [CHAR LIMIT=NONE] --> <string name="settings_panel_title">Settings Panel</string> <!-- UI debug setting: force desktop mode [CHAR LIMIT=50] --> <string name="force_desktop_mode">Force desktop mode</string> <!-- UI debug setting: force desktop mode summary [CHAR LIMIT=NONE] --> <string name="force_desktop_mode_summary">Force experimental desktop mode on secondary displays</string> <!-- Title for enabling freeform windows (desktop mode) developer option toggle [CHAR LIMIT=50] --> <string name="enable_desktop_mode">Enable freeform windows</string> <!-- Summary for enabling freeform windows (desktop mode) developer option toggle [CHAR LIMIT=NONE] --> <string name="enable_desktop_mode_summary">Enable support for freeform windows.</string> <!-- TODO(b/348193756): Rename resources for this toggle to indicate that it is for secondary display --> <!-- Title for enabling freeform windows (desktop mode) on secondary display developer option toggle [CHAR LIMIT=50] --> <string name="force_desktop_mode">Enable freeform windowing on second display</string> <!-- Summary for enabling freeform windows (desktop mode) on secondary display developer option toggle [CHAR LIMIT=NONE] --> <string name="force_desktop_mode_summary">Enable freeform windows only on secondary display.</string> <!-- UI debug setting: enable non-resizables in multi window [CHAR LIMIT=60] --> <string name="enable_non_resizable_multi_window">Enable non-resizable in multi window</string> <!-- UI debug setting: enable non-resizables in multi window summary [CHAR LIMIT=NONE] --> Loading Loading @@ -13168,12 +13175,12 @@ <!-- Dialog body text used to explain a reboot is required after enabling freeform support for it to work [CHAR LIMIT=none] --> <string name="reboot_dialog_enable_freeform_support">A reboot is required to enable freeform support.</string> <!-- Dialog body text used to explain a reboot is required after forcing desktop mode on secondary dislays. [CHAR LIMIT=none] --> <string name="reboot_dialog_force_desktop_mode">A reboot is required to force desktop mode on secondary displays.</string> <string name="reboot_dialog_enable_freeform_support">A reboot is required to enable legacy freeform windowing support.</string> <!-- Dialog body text used to explain a reboot is required after overriding freeform windowing (desktop mode) support. [CHAR LIMIT=none] --> <string name="reboot_dialog_override_desktop_mode">A reboot is required to change freeform windowing support.</string> <!-- Dialog body text used to explain a reboot is required after forcing freeform windowing (desktop mode) on secondary displays. [CHAR LIMIT=none] --> <string name="reboot_dialog_force_desktop_mode">A reboot is required to force freeform windowing on secondary displays.</string> <!-- Text on the dialog button to reboot the device now [CHAR LIMIT=50] --> <string name="reboot_dialog_reboot_now">Reboot now</string> <!-- Text on the dialog button to reboot the device later [CHAR LIMIT=50] -->
res/xml/development_settings.xml +5 −0 Original line number Diff line number Diff line Loading @@ -737,6 +737,11 @@ android:title="@string/force_resizable_activities" android:summary="@string/force_resizable_activities_summary" /> <SwitchPreferenceCompat android:key="override_desktop_mode_features" android:title="@string/enable_desktop_mode" android:summary="@string/enable_desktop_mode_summary" /> <SwitchPreferenceCompat android:key="enable_freeform_support" android:title="@string/enable_freeform_support" Loading
src/com/android/settings/development/DesktopModePreferenceController.java +45 −15 Original line number Diff line number Diff line Loading @@ -16,11 +16,12 @@ package com.android.settings.development; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS; import static android.provider.Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES; import android.content.Context; import android.os.Build; import android.os.SystemProperties; import android.provider.Settings; import android.util.Log; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; Loading @@ -30,19 +31,29 @@ import androidx.preference.TwoStatePreference; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; import com.android.window.flags.Flags; /** * Preference controller to control Desktop mode features */ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, RebootConfirmationDialogHost { private static final String FORCE_DESKTOP_MODE_KEY = "force_desktop_mode_on_external_displays"; private static final String OVERRIDE_DESKTOP_MODE_FEATURES_KEY = "override_desktop_mode_features"; private static final String TAG = "DesktopModePreferenceController"; @VisibleForTesting static final int SETTING_VALUE_OFF = 0; @VisibleForTesting static final int SETTING_VALUE_ON = 1; @VisibleForTesting static final int SETTING_VALUE_UNSET = -1; @Nullable private final DevelopmentSettingsDashboardFragment mFragment; @Nullable private final DevelopmentSettingsDashboardFragment mFragment; public DesktopModePreferenceController( Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) { Loading @@ -50,41 +61,60 @@ public class DesktopModePreferenceController extends DeveloperOptionsPreferenceC mFragment = fragment; } @Override public boolean isAvailable() { return isDeviceEligibleForDesktopMode() && Flags.showDesktopWindowingDevOption(); } @Override public String getPreferenceKey() { return FORCE_DESKTOP_MODE_KEY; return OVERRIDE_DESKTOP_MODE_FEATURES_KEY; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean isEnabled = (Boolean) newValue; Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); if (isEnabled) { if (mFragment != null) { RebootConfirmationDialogFragment.show( mFragment, R.string.reboot_dialog_force_desktop_mode, this); mFragment, R.string.reboot_dialog_override_desktop_mode, this); } return true; } @Override public void updateState(Preference preference) { // Use overridden state, if not present, then use default state final boolean shouldDevOptionBeEnabledByDefault = Flags.enableDesktopWindowingMode(); final int mode = Settings.Global.getInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF); ((TwoStatePreference) mPreference).setChecked(mode != SETTING_VALUE_OFF); DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, shouldDevOptionBeEnabledByDefault ? SETTING_VALUE_ON : SETTING_VALUE_OFF); final boolean shouldDevOptionBeEnabled = switch (mode) { case SETTING_VALUE_OFF -> false; case SETTING_VALUE_ON -> true; case SETTING_VALUE_UNSET -> shouldDevOptionBeEnabledByDefault; default -> { Log.w(TAG, "Invalid override for desktop mode: " + mode); yield shouldDevOptionBeEnabledByDefault; } }; ((TwoStatePreference) mPreference).setChecked(shouldDevOptionBeEnabled); } @Override protected void onDeveloperOptionsSwitchDisabled() { super.onDeveloperOptionsSwitchDisabled(); Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF); ((TwoStatePreference) mPreference).setChecked(false); DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES, SETTING_VALUE_UNSET); } @VisibleForTesting String getBuildType() { return Build.TYPE; private boolean isDeviceEligibleForDesktopMode() { boolean enforceDeviceRestrictions = SystemProperties.getBoolean( "persist.wm.debug.desktop_mode_enforce_device_restrictions", true); boolean isDesktopModeSupported = mContext.getResources().getBoolean( com.android.internal.R.bool.config_isDesktopModeSupported); return !enforceDeviceRestrictions || isDesktopModeSupported; } }
src/com/android/settings/development/DesktopModeSecondaryDisplayPreferenceController.java 0 → 100644 +96 −0 Original line number Diff line number Diff line /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.settings.development; import static android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS; import android.content.Context; import android.os.Build; import android.provider.Settings; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.preference.Preference; import androidx.preference.TwoStatePreference; import com.android.settings.R; import com.android.settings.core.PreferenceControllerMixin; import com.android.settingslib.development.DeveloperOptionsPreferenceController; /** * Preference controller to control Desktop mode features on secondary display */ public class DesktopModeSecondaryDisplayPreferenceController extends DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin, RebootConfirmationDialogHost { private static final String ENABLE_DESKTOP_MODE_ON_SECONDARY_DISPLAY = "force_desktop_mode_on_external_displays"; @VisibleForTesting static final int SETTING_VALUE_OFF = 0; @VisibleForTesting static final int SETTING_VALUE_ON = 1; @Nullable private final DevelopmentSettingsDashboardFragment mFragment; public DesktopModeSecondaryDisplayPreferenceController( Context context, @Nullable DevelopmentSettingsDashboardFragment fragment) { super(context); mFragment = fragment; } @Override public String getPreferenceKey() { return ENABLE_DESKTOP_MODE_ON_SECONDARY_DISPLAY; } @Override public boolean onPreferenceChange(Preference preference, Object newValue) { final boolean isEnabled = (Boolean) newValue; Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, isEnabled ? SETTING_VALUE_ON : SETTING_VALUE_OFF); if (isEnabled && mFragment != null) { RebootConfirmationDialogFragment.show( mFragment, R.string.reboot_dialog_force_desktop_mode, this); } return true; } @Override public void updateState(Preference preference) { final int mode = Settings.Global.getInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF); ((TwoStatePreference) mPreference).setChecked(mode != SETTING_VALUE_OFF); } @Override protected void onDeveloperOptionsSwitchDisabled() { super.onDeveloperOptionsSwitchDisabled(); Settings.Global.putInt(mContext.getContentResolver(), DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, SETTING_VALUE_OFF); ((TwoStatePreference) mPreference).setChecked(false); } @VisibleForTesting String getBuildType() { return Build.TYPE; } }
src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java +1 −0 Original line number Diff line number Diff line Loading @@ -749,6 +749,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra controllers.add(new ResizableActivityPreferenceController(context)); controllers.add(new FreeformWindowsPreferenceController(context, fragment)); controllers.add(new DesktopModePreferenceController(context, fragment)); controllers.add(new DesktopModeSecondaryDisplayPreferenceController(context, fragment)); controllers.add(new NonResizableMultiWindowPreferenceController(context)); controllers.add(new ShortcutManagerThrottlingPreferenceController(context)); controllers.add(new EnableGnssRawMeasFullTrackingPreferenceController(context)); Loading