Loading Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ android_library { "lottie", "WifiTrackerLib", "windowExtLib", "SettingsLibActivityEmbedding", ], libs: [ Loading src/com/android/settings/SettingsActivity.java +17 −3 Original line number Diff line number Diff line Loading @@ -143,6 +143,8 @@ public class SettingsActivity extends SettingsBaseActivity public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING = ":settings:show_fragment_as_subsetting"; public static final String EXTRA_IS_SECONDARY_LAYER_PAGE = ":settings:is_secondary_layer_page"; /** * Additional extra of Settings#ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK. Loading Loading @@ -301,12 +303,12 @@ public class SettingsActivity extends SettingsBaseActivity launchSettingFragment(initialFragmentName, intent); } final boolean isInSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent()); final boolean isActionBarButtonEnabled = isActionBarButtonEnabled(intent); final ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(!isInSetupWizard); actionBar.setHomeButtonEnabled(!isInSetupWizard); actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled); actionBar.setHomeButtonEnabled(isActionBarButtonEnabled); actionBar.setDisplayShowTitleEnabled(true); } mMainSwitch = findViewById(R.id.switch_bar); Loading Loading @@ -366,6 +368,18 @@ public class SettingsActivity extends SettingsBaseActivity } } private boolean isActionBarButtonEnabled(Intent intent) { if (WizardManagerHelper.isAnySetupWizard(intent)) { return false; } final boolean isSecondaryLayerPage = intent.getBooleanExtra(EXTRA_IS_SECONDARY_LAYER_PAGE, false); // TODO: move Settings's ActivityEmbeddingUtils to SettingsLib. return !com.android.settingslib.activityembedding.ActivityEmbeddingUtils .shouldHideBackButton(this, isSecondaryLayerPage); } private boolean isSubSettings(Intent intent) { return this instanceof SubSettings || intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false); Loading src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import androidx.window.embedding.SplitPlaceholderRule; import androidx.window.embedding.SplitRule; import com.android.settings.Settings; import com.android.settings.SettingsActivity; import com.android.settings.SubSettings; import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; Loading Loading @@ -196,6 +197,7 @@ public class ActivityEmbeddingRulesController { addActivityFilter(activityFilters, Settings.class); final Intent intent = new Intent(mContext, Settings.NetworkDashboardActivity.class); intent.putExtra(SettingsActivity.EXTRA_IS_SECONDARY_LAYER_PAGE, true); final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule( activityFilters, intent, Loading src/com/android/settings/core/SubSettingLauncher.java +48 −39 Original line number Diff line number Diff line Loading @@ -43,11 +43,11 @@ public class SubSettingLauncher { } mContext = context; mLaunchRequest = new LaunchRequest(); mLaunchRequest.transitionType = TransitionType.TRANSITION_SHARED_AXIS; mLaunchRequest.mTransitionType = TransitionType.TRANSITION_SHARED_AXIS; } public SubSettingLauncher setDestination(String fragmentName) { mLaunchRequest.destinationName = fragmentName; mLaunchRequest.mDestinationName = fragmentName; return this; } Loading @@ -67,9 +67,9 @@ public class SubSettingLauncher { * @param titleResId res id of string, will use package name to resolve */ public SubSettingLauncher setTitleRes(String titlePackageName, @StringRes int titleResId) { mLaunchRequest.titleResPackageName = titlePackageName; mLaunchRequest.titleResId = titleResId; mLaunchRequest.title = null; mLaunchRequest.mTitleResPackageName = titlePackageName; mLaunchRequest.mTitleResId = titleResId; mLaunchRequest.mTitle = null; return this; } Loading @@ -82,22 +82,22 @@ public class SubSettingLauncher { * @param title text title */ public SubSettingLauncher setTitleText(CharSequence title) { mLaunchRequest.title = title; mLaunchRequest.mTitle = title; return this; } public SubSettingLauncher setArguments(Bundle arguments) { mLaunchRequest.arguments = arguments; mLaunchRequest.mArguments = arguments; return this; } public SubSettingLauncher setExtras(Bundle extras) { mLaunchRequest.extras = extras; mLaunchRequest.mExtras = extras; return this; } public SubSettingLauncher setSourceMetricsCategory(int sourceMetricsCategory) { mLaunchRequest.sourceMetricsCategory = sourceMetricsCategory; mLaunchRequest.mSourceMetricsCategory = sourceMetricsCategory; return this; } Loading @@ -108,17 +108,23 @@ public class SubSettingLauncher { } public SubSettingLauncher addFlags(int flags) { mLaunchRequest.flags |= flags; mLaunchRequest.mFlags |= flags; return this; } public SubSettingLauncher setUserHandle(UserHandle userHandle) { mLaunchRequest.userHandle = userHandle; mLaunchRequest.mUserHandle = userHandle; return this; } public SubSettingLauncher setTransitionType(int transitionType) { mLaunchRequest.transitionType = transitionType; mLaunchRequest.mTransitionType = transitionType; return this; } /** Decide whether the next page is secondary layer page or not. */ public SubSettingLauncher setIsSecondaryLayerPage(boolean isSecondaryLayerPage) { mLaunchRequest.mIsSecondaryLayerPage = isSecondaryLayerPage; return this; } Loading @@ -131,14 +137,14 @@ public class SubSettingLauncher { final Intent intent = toIntent(); boolean launchAsUser = mLaunchRequest.userHandle != null && mLaunchRequest.userHandle.getIdentifier() != UserHandle.myUserId(); boolean launchAsUser = mLaunchRequest.mUserHandle != null && mLaunchRequest.mUserHandle.getIdentifier() != UserHandle.myUserId(); boolean launchForResult = mLaunchRequest.mResultListener != null; if (launchAsUser && launchForResult) { launchForResultAsUser(intent, mLaunchRequest.userHandle, mLaunchRequest.mResultListener, mLaunchRequest.mRequestCode); launchForResultAsUser(intent, mLaunchRequest.mUserHandle, mLaunchRequest.mResultListener, mLaunchRequest.mRequestCode); } else if (launchAsUser && !launchForResult) { launchAsUser(intent, mLaunchRequest.userHandle); launchAsUser(intent, mLaunchRequest.mUserHandle); } else if (!launchAsUser && launchForResult) { launchForResult(mLaunchRequest.mResultListener, intent, mLaunchRequest.mRequestCode); } else { Loading @@ -150,26 +156,28 @@ public class SubSettingLauncher { final Intent intent = new Intent(Intent.ACTION_MAIN); copyExtras(intent); intent.setClass(mContext, SubSettings.class); if (TextUtils.isEmpty(mLaunchRequest.destinationName)) { if (TextUtils.isEmpty(mLaunchRequest.mDestinationName)) { throw new IllegalArgumentException("Destination fragment must be set"); } intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.destinationName); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.mDestinationName); if (mLaunchRequest.sourceMetricsCategory < 0) { if (mLaunchRequest.mSourceMetricsCategory < 0) { throw new IllegalArgumentException("Source metrics category must be set"); } intent.putExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, mLaunchRequest.sourceMetricsCategory); mLaunchRequest.mSourceMetricsCategory); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, mLaunchRequest.arguments); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, mLaunchRequest.mArguments); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RES_PACKAGE_NAME, mLaunchRequest.titleResPackageName); mLaunchRequest.mTitleResPackageName); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, mLaunchRequest.titleResId); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, mLaunchRequest.title); intent.addFlags(mLaunchRequest.flags); mLaunchRequest.mTitleResId); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, mLaunchRequest.mTitle); intent.addFlags(mLaunchRequest.mFlags); intent.putExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE, mLaunchRequest.transitionType); mLaunchRequest.mTransitionType); intent.putExtra(SettingsActivity.EXTRA_IS_SECONDARY_LAYER_PAGE, mLaunchRequest.mIsSecondaryLayerPage); return intent; } Loading @@ -196,8 +204,8 @@ public class SubSettingLauncher { } private void copyExtras(Intent intent) { if (mLaunchRequest.extras != null) { intent.replaceExtras(mLaunchRequest.extras); if (mLaunchRequest.mExtras != null) { intent.replaceExtras(mLaunchRequest.mExtras); } } Loading @@ -205,17 +213,18 @@ public class SubSettingLauncher { * Simple container that has information about how to launch a subsetting. */ static class LaunchRequest { String destinationName; int titleResId; String titleResPackageName; CharSequence title; int sourceMetricsCategory = -100; int flags; String mDestinationName; int mTitleResId; String mTitleResPackageName; CharSequence mTitle; int mSourceMetricsCategory = -100; int mFlags; Fragment mResultListener; int mRequestCode; UserHandle userHandle; int transitionType; Bundle arguments; Bundle extras; UserHandle mUserHandle; int mTransitionType; Bundle mArguments; Bundle mExtras; boolean mIsSecondaryLayerPage; } } src/com/android/settings/development/featureflags/FeatureFlagPreference.java +10 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.settings.development.featureflags; import android.content.Context; import android.provider.Settings; import android.text.TextUtils; import android.util.FeatureFlagUtils; import androidx.preference.SwitchPreference; Loading Loading @@ -49,5 +51,13 @@ public class FeatureFlagPreference extends SwitchPreference { } else { FeatureFlagUtils.setEnabled(getContext(), mKey, isChecked); } // A temporary logic for settings_hide_secondary_page_back_button_in_two_pane // Remove it before Android T release. if (TextUtils.equals(mKey, FeatureFlagUtils.SETTINGS_HIDE_SECONDARY_PAGE_BACK_BUTTON_IN_TWO_PANE)) { Settings.Global.putString(getContext().getContentResolver(), mKey, String.valueOf(isChecked)); } } } Loading
Android.bp +1 −0 Original line number Diff line number Diff line Loading @@ -75,6 +75,7 @@ android_library { "lottie", "WifiTrackerLib", "windowExtLib", "SettingsLibActivityEmbedding", ], libs: [ Loading
src/com/android/settings/SettingsActivity.java +17 −3 Original line number Diff line number Diff line Loading @@ -143,6 +143,8 @@ public class SettingsActivity extends SettingsBaseActivity public static final String EXTRA_SHOW_FRAGMENT_AS_SUBSETTING = ":settings:show_fragment_as_subsetting"; public static final String EXTRA_IS_SECONDARY_LAYER_PAGE = ":settings:is_secondary_layer_page"; /** * Additional extra of Settings#ACTION_SETTINGS_LARGE_SCREEN_DEEP_LINK. Loading Loading @@ -301,12 +303,12 @@ public class SettingsActivity extends SettingsBaseActivity launchSettingFragment(initialFragmentName, intent); } final boolean isInSetupWizard = WizardManagerHelper.isAnySetupWizard(getIntent()); final boolean isActionBarButtonEnabled = isActionBarButtonEnabled(intent); final ActionBar actionBar = getActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(!isInSetupWizard); actionBar.setHomeButtonEnabled(!isInSetupWizard); actionBar.setDisplayHomeAsUpEnabled(isActionBarButtonEnabled); actionBar.setHomeButtonEnabled(isActionBarButtonEnabled); actionBar.setDisplayShowTitleEnabled(true); } mMainSwitch = findViewById(R.id.switch_bar); Loading Loading @@ -366,6 +368,18 @@ public class SettingsActivity extends SettingsBaseActivity } } private boolean isActionBarButtonEnabled(Intent intent) { if (WizardManagerHelper.isAnySetupWizard(intent)) { return false; } final boolean isSecondaryLayerPage = intent.getBooleanExtra(EXTRA_IS_SECONDARY_LAYER_PAGE, false); // TODO: move Settings's ActivityEmbeddingUtils to SettingsLib. return !com.android.settingslib.activityembedding.ActivityEmbeddingUtils .shouldHideBackButton(this, isSecondaryLayerPage); } private boolean isSubSettings(Intent intent) { return this instanceof SubSettings || intent.getBooleanExtra(EXTRA_SHOW_FRAGMENT_AS_SUBSETTING, false); Loading
src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +2 −0 Original line number Diff line number Diff line Loading @@ -34,6 +34,7 @@ import androidx.window.embedding.SplitPlaceholderRule; import androidx.window.embedding.SplitRule; import com.android.settings.Settings; import com.android.settings.SettingsActivity; import com.android.settings.SubSettings; import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; Loading Loading @@ -196,6 +197,7 @@ public class ActivityEmbeddingRulesController { addActivityFilter(activityFilters, Settings.class); final Intent intent = new Intent(mContext, Settings.NetworkDashboardActivity.class); intent.putExtra(SettingsActivity.EXTRA_IS_SECONDARY_LAYER_PAGE, true); final SplitPlaceholderRule placeholderRule = new SplitPlaceholderRule( activityFilters, intent, Loading
src/com/android/settings/core/SubSettingLauncher.java +48 −39 Original line number Diff line number Diff line Loading @@ -43,11 +43,11 @@ public class SubSettingLauncher { } mContext = context; mLaunchRequest = new LaunchRequest(); mLaunchRequest.transitionType = TransitionType.TRANSITION_SHARED_AXIS; mLaunchRequest.mTransitionType = TransitionType.TRANSITION_SHARED_AXIS; } public SubSettingLauncher setDestination(String fragmentName) { mLaunchRequest.destinationName = fragmentName; mLaunchRequest.mDestinationName = fragmentName; return this; } Loading @@ -67,9 +67,9 @@ public class SubSettingLauncher { * @param titleResId res id of string, will use package name to resolve */ public SubSettingLauncher setTitleRes(String titlePackageName, @StringRes int titleResId) { mLaunchRequest.titleResPackageName = titlePackageName; mLaunchRequest.titleResId = titleResId; mLaunchRequest.title = null; mLaunchRequest.mTitleResPackageName = titlePackageName; mLaunchRequest.mTitleResId = titleResId; mLaunchRequest.mTitle = null; return this; } Loading @@ -82,22 +82,22 @@ public class SubSettingLauncher { * @param title text title */ public SubSettingLauncher setTitleText(CharSequence title) { mLaunchRequest.title = title; mLaunchRequest.mTitle = title; return this; } public SubSettingLauncher setArguments(Bundle arguments) { mLaunchRequest.arguments = arguments; mLaunchRequest.mArguments = arguments; return this; } public SubSettingLauncher setExtras(Bundle extras) { mLaunchRequest.extras = extras; mLaunchRequest.mExtras = extras; return this; } public SubSettingLauncher setSourceMetricsCategory(int sourceMetricsCategory) { mLaunchRequest.sourceMetricsCategory = sourceMetricsCategory; mLaunchRequest.mSourceMetricsCategory = sourceMetricsCategory; return this; } Loading @@ -108,17 +108,23 @@ public class SubSettingLauncher { } public SubSettingLauncher addFlags(int flags) { mLaunchRequest.flags |= flags; mLaunchRequest.mFlags |= flags; return this; } public SubSettingLauncher setUserHandle(UserHandle userHandle) { mLaunchRequest.userHandle = userHandle; mLaunchRequest.mUserHandle = userHandle; return this; } public SubSettingLauncher setTransitionType(int transitionType) { mLaunchRequest.transitionType = transitionType; mLaunchRequest.mTransitionType = transitionType; return this; } /** Decide whether the next page is secondary layer page or not. */ public SubSettingLauncher setIsSecondaryLayerPage(boolean isSecondaryLayerPage) { mLaunchRequest.mIsSecondaryLayerPage = isSecondaryLayerPage; return this; } Loading @@ -131,14 +137,14 @@ public class SubSettingLauncher { final Intent intent = toIntent(); boolean launchAsUser = mLaunchRequest.userHandle != null && mLaunchRequest.userHandle.getIdentifier() != UserHandle.myUserId(); boolean launchAsUser = mLaunchRequest.mUserHandle != null && mLaunchRequest.mUserHandle.getIdentifier() != UserHandle.myUserId(); boolean launchForResult = mLaunchRequest.mResultListener != null; if (launchAsUser && launchForResult) { launchForResultAsUser(intent, mLaunchRequest.userHandle, mLaunchRequest.mResultListener, mLaunchRequest.mRequestCode); launchForResultAsUser(intent, mLaunchRequest.mUserHandle, mLaunchRequest.mResultListener, mLaunchRequest.mRequestCode); } else if (launchAsUser && !launchForResult) { launchAsUser(intent, mLaunchRequest.userHandle); launchAsUser(intent, mLaunchRequest.mUserHandle); } else if (!launchAsUser && launchForResult) { launchForResult(mLaunchRequest.mResultListener, intent, mLaunchRequest.mRequestCode); } else { Loading @@ -150,26 +156,28 @@ public class SubSettingLauncher { final Intent intent = new Intent(Intent.ACTION_MAIN); copyExtras(intent); intent.setClass(mContext, SubSettings.class); if (TextUtils.isEmpty(mLaunchRequest.destinationName)) { if (TextUtils.isEmpty(mLaunchRequest.mDestinationName)) { throw new IllegalArgumentException("Destination fragment must be set"); } intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.destinationName); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT, mLaunchRequest.mDestinationName); if (mLaunchRequest.sourceMetricsCategory < 0) { if (mLaunchRequest.mSourceMetricsCategory < 0) { throw new IllegalArgumentException("Source metrics category must be set"); } intent.putExtra(MetricsFeatureProvider.EXTRA_SOURCE_METRICS_CATEGORY, mLaunchRequest.sourceMetricsCategory); mLaunchRequest.mSourceMetricsCategory); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, mLaunchRequest.arguments); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_ARGUMENTS, mLaunchRequest.mArguments); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RES_PACKAGE_NAME, mLaunchRequest.titleResPackageName); mLaunchRequest.mTitleResPackageName); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID, mLaunchRequest.titleResId); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, mLaunchRequest.title); intent.addFlags(mLaunchRequest.flags); mLaunchRequest.mTitleResId); intent.putExtra(SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE, mLaunchRequest.mTitle); intent.addFlags(mLaunchRequest.mFlags); intent.putExtra(SettingsBaseActivity.EXTRA_PAGE_TRANSITION_TYPE, mLaunchRequest.transitionType); mLaunchRequest.mTransitionType); intent.putExtra(SettingsActivity.EXTRA_IS_SECONDARY_LAYER_PAGE, mLaunchRequest.mIsSecondaryLayerPage); return intent; } Loading @@ -196,8 +204,8 @@ public class SubSettingLauncher { } private void copyExtras(Intent intent) { if (mLaunchRequest.extras != null) { intent.replaceExtras(mLaunchRequest.extras); if (mLaunchRequest.mExtras != null) { intent.replaceExtras(mLaunchRequest.mExtras); } } Loading @@ -205,17 +213,18 @@ public class SubSettingLauncher { * Simple container that has information about how to launch a subsetting. */ static class LaunchRequest { String destinationName; int titleResId; String titleResPackageName; CharSequence title; int sourceMetricsCategory = -100; int flags; String mDestinationName; int mTitleResId; String mTitleResPackageName; CharSequence mTitle; int mSourceMetricsCategory = -100; int mFlags; Fragment mResultListener; int mRequestCode; UserHandle userHandle; int transitionType; Bundle arguments; Bundle extras; UserHandle mUserHandle; int mTransitionType; Bundle mArguments; Bundle mExtras; boolean mIsSecondaryLayerPage; } }
src/com/android/settings/development/featureflags/FeatureFlagPreference.java +10 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,8 @@ package com.android.settings.development.featureflags; import android.content.Context; import android.provider.Settings; import android.text.TextUtils; import android.util.FeatureFlagUtils; import androidx.preference.SwitchPreference; Loading Loading @@ -49,5 +51,13 @@ public class FeatureFlagPreference extends SwitchPreference { } else { FeatureFlagUtils.setEnabled(getContext(), mKey, isChecked); } // A temporary logic for settings_hide_secondary_page_back_button_in_two_pane // Remove it before Android T release. if (TextUtils.equals(mKey, FeatureFlagUtils.SETTINGS_HIDE_SECONDARY_PAGE_BACK_BUTTON_IN_TWO_PANE)) { Settings.Global.putString(getContext().getContentResolver(), mKey, String.valueOf(isChecked)); } } }