Loading src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +25 −10 Original line number Diff line number Diff line Loading @@ -63,13 +63,6 @@ public class ActivityEmbeddingRulesController { // Set a placeholder for home page. registerHomepagePlaceholderRule(); // Set subsettings rule. registerTwoPanePairRule(mContext, getComponentName(Settings.class), getComponentName(SubSettings.class), null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */); } /** Register a SplitPairRule for 2-pane. */ Loading @@ -78,7 +71,8 @@ public class ActivityEmbeddingRulesController { ComponentName secondaryComponent, String secondaryIntentAction, boolean finishPrimaryWithSecondary, boolean finishSecondaryWithPrimary) { boolean finishSecondaryWithPrimary, boolean clearTop) { final Set<SplitPairFilter> filters = new HashSet<>(); filters.add(new SplitPairFilter(primaryComponent, secondaryComponent, secondaryIntentAction)); Loading @@ -86,13 +80,28 @@ public class ActivityEmbeddingRulesController { SplitController.getInstance().registerRule(new SplitPairRule(filters, finishPrimaryWithSecondary, finishSecondaryWithPrimary, true /* clearTop */, clearTop, ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context), ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context), ActivityEmbeddingUtils.SPLIT_RATIO, LayoutDirection.LOCALE)); } /** Register a SplitPairRule for SubSettings if the device supports 2-pane. */ public static void registerSubSettingsPairRuleIfNeeded(Context context, boolean clearTop) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) { return; } registerTwoPanePairRule(context, getComponentName(context, Settings.class), getComponentName(context, SubSettings.class), null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, clearTop); } private void registerHomepagePlaceholderRule() { final Set<ActivityFilter> activityFilters = new HashSet<>(); addActivityFilter(activityFilters, SettingsHomepageActivity.class); Loading Loading @@ -131,6 +140,12 @@ public class ActivityEmbeddingRulesController { @NonNull private ComponentName getComponentName(Class<? extends Activity> activityClass) { return new ComponentName(mContext.getPackageName(), activityClass.getName()); return getComponentName(mContext, activityClass); } @NonNull private static ComponentName getComponentName(Context context, Class<? extends Activity> activityClass) { return new ComponentName(context.getPackageName(), activityClass.getName()); } } src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +4 −1 Original line number Diff line number Diff line Loading @@ -180,7 +180,10 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { com.android.settings.Settings.class.getName()), new ComponentName(tile.getPackageName(), tile.getComponentName()), null, true, true); null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, true /* clearTop */); // Highlight preference ui. final TopLevelSettings topLevelSettings = (TopLevelSettings) fragment; Loading src/com/android/settings/homepage/SettingsHomepageActivity.java +4 −2 Original line number Diff line number Diff line Loading @@ -239,13 +239,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements targetComponentName, targetIntent.getAction(), true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */); true /* finishSecondaryWithPrimary */, true /* clearTop*/); ActivityEmbeddingRulesController.registerTwoPanePairRule(this, new ComponentName(Settings.class.getPackageName(), Settings.class.getName()), targetComponentName, targetIntent.getAction(), true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */); true /* finishSecondaryWithPrimary */, true /* clearTop*/); startActivity(targetIntent); } Loading src/com/android/settings/homepage/TopLevelSettings.java +5 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; Loading Loading @@ -98,6 +99,10 @@ public class TopLevelSettings extends DashboardFragment implements @Override public boolean onPreferenceTreeClick(Preference preference) { // Register SplitPairRule for SubSettings. ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(getContext(), true /* clearTop*/); setHighlightPreferenceKey(preference.getKey()); return super.onPreferenceTreeClick(preference); } Loading src/com/android/settings/search/SearchResultTrampoline.java +6 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Bundle; import com.android.settings.SettingsActivity; import com.android.settings.SubSettings; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.overlay.FeatureFactory; /** Loading Loading @@ -53,6 +54,11 @@ public class SearchResultTrampoline extends Activity { args.putInt(EXTRA_SHOW_FRAGMENT_TAB, tab); intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args); // Register SplirPairRule for SubSettings, set clearTop false to prevent unexpected back // navigation behavior. ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(this /* context */, false /* clearTop*/); // Reroute request to SubSetting. intent.setClass(this /* context */, SubSettings.class) .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); Loading Loading
src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +25 −10 Original line number Diff line number Diff line Loading @@ -63,13 +63,6 @@ public class ActivityEmbeddingRulesController { // Set a placeholder for home page. registerHomepagePlaceholderRule(); // Set subsettings rule. registerTwoPanePairRule(mContext, getComponentName(Settings.class), getComponentName(SubSettings.class), null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */); } /** Register a SplitPairRule for 2-pane. */ Loading @@ -78,7 +71,8 @@ public class ActivityEmbeddingRulesController { ComponentName secondaryComponent, String secondaryIntentAction, boolean finishPrimaryWithSecondary, boolean finishSecondaryWithPrimary) { boolean finishSecondaryWithPrimary, boolean clearTop) { final Set<SplitPairFilter> filters = new HashSet<>(); filters.add(new SplitPairFilter(primaryComponent, secondaryComponent, secondaryIntentAction)); Loading @@ -86,13 +80,28 @@ public class ActivityEmbeddingRulesController { SplitController.getInstance().registerRule(new SplitPairRule(filters, finishPrimaryWithSecondary, finishSecondaryWithPrimary, true /* clearTop */, clearTop, ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context), ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context), ActivityEmbeddingUtils.SPLIT_RATIO, LayoutDirection.LOCALE)); } /** Register a SplitPairRule for SubSettings if the device supports 2-pane. */ public static void registerSubSettingsPairRuleIfNeeded(Context context, boolean clearTop) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) { return; } registerTwoPanePairRule(context, getComponentName(context, Settings.class), getComponentName(context, SubSettings.class), null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, clearTop); } private void registerHomepagePlaceholderRule() { final Set<ActivityFilter> activityFilters = new HashSet<>(); addActivityFilter(activityFilters, SettingsHomepageActivity.class); Loading Loading @@ -131,6 +140,12 @@ public class ActivityEmbeddingRulesController { @NonNull private ComponentName getComponentName(Class<? extends Activity> activityClass) { return new ComponentName(mContext.getPackageName(), activityClass.getName()); return getComponentName(mContext, activityClass); } @NonNull private static ComponentName getComponentName(Context context, Class<? extends Activity> activityClass) { return new ComponentName(context.getPackageName(), activityClass.getName()); } }
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +4 −1 Original line number Diff line number Diff line Loading @@ -180,7 +180,10 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { com.android.settings.Settings.class.getName()), new ComponentName(tile.getPackageName(), tile.getComponentName()), null, true, true); null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, true /* clearTop */); // Highlight preference ui. final TopLevelSettings topLevelSettings = (TopLevelSettings) fragment; Loading
src/com/android/settings/homepage/SettingsHomepageActivity.java +4 −2 Original line number Diff line number Diff line Loading @@ -239,13 +239,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements targetComponentName, targetIntent.getAction(), true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */); true /* finishSecondaryWithPrimary */, true /* clearTop*/); ActivityEmbeddingRulesController.registerTwoPanePairRule(this, new ComponentName(Settings.class.getPackageName(), Settings.class.getName()), targetComponentName, targetIntent.getAction(), true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */); true /* finishSecondaryWithPrimary */, true /* clearTop*/); startActivity(targetIntent); } Loading
src/com/android/settings/homepage/TopLevelSettings.java +5 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.android.settings.R; import com.android.settings.SettingsActivity; import com.android.settings.Utils; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.core.SubSettingLauncher; import com.android.settings.dashboard.DashboardFragment; Loading Loading @@ -98,6 +99,10 @@ public class TopLevelSettings extends DashboardFragment implements @Override public boolean onPreferenceTreeClick(Preference preference) { // Register SplitPairRule for SubSettings. ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(getContext(), true /* clearTop*/); setHighlightPreferenceKey(preference.getKey()); return super.onPreferenceTreeClick(preference); } Loading
src/com/android/settings/search/SearchResultTrampoline.java +6 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import android.os.Bundle; import com.android.settings.SettingsActivity; import com.android.settings.SubSettings; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.overlay.FeatureFactory; /** Loading Loading @@ -53,6 +54,11 @@ public class SearchResultTrampoline extends Activity { args.putInt(EXTRA_SHOW_FRAGMENT_TAB, tab); intent.putExtra(EXTRA_SHOW_FRAGMENT_ARGUMENTS, args); // Register SplirPairRule for SubSettings, set clearTop false to prevent unexpected back // navigation behavior. ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(this /* context */, false /* clearTop*/); // Reroute request to SubSetting. intent.setClass(this /* context */, SubSettings.class) .addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); Loading