Loading src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +36 −6 Original line number Diff line number Diff line Loading @@ -73,6 +73,9 @@ public class ActivityEmbeddingRulesController { boolean finishPrimaryWithSecondary, boolean finishSecondaryWithPrimary, boolean clearTop) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) { return; } final Set<SplitPairFilter> filters = new HashSet<>(); filters.add(new SplitPairFilter(primaryComponent, secondaryComponent, secondaryIntentAction)); Loading @@ -87,18 +90,45 @@ public class ActivityEmbeddingRulesController { LayoutDirection.LOCALE)); } /** * Register a new SplitPairRule for Settings home. Because homepage is able to be opened by * {@link Settings} or {@link SettingsHomepageActivity}, we register split rule twice for * two cases. */ public static void registerTwoPanePairRuleForSettingsHome(Context context, ComponentName secondaryComponent, String secondaryIntentAction, boolean clearTop) { registerTwoPanePairRule( context, getComponentName(context, Settings.class), secondaryComponent, secondaryIntentAction, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, clearTop); registerTwoPanePairRule( context, getComponentName(context, SettingsHomepageActivity.class), secondaryComponent, secondaryIntentAction, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, clearTop); } /** Register a SplitPairRule for SubSettings if the device supports 2-pane. */ public static void registerSubSettingsPairRuleIfNeeded(Context context, boolean clearTop) { public static void registerSubSettingsPairRule(Context context, boolean clearTop) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) { return; } registerTwoPanePairRule(context, getComponentName(context, Settings.class), registerTwoPanePairRuleForSettingsHome( context, getComponentName(context, SubSettings.class), null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, clearTop); } Loading src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +3 −7 Original line number Diff line number Diff line Loading @@ -175,14 +175,10 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { if (fragment instanceof TopLevelSettings && ActivityEmbeddingUtils.isEmbeddingActivityEnabled(mContext)) { // Register the rule for injected apps. ActivityEmbeddingRulesController.registerTwoPanePairRule(mContext, new ComponentName(activity.getPackageName(), com.android.settings.Settings.class.getName()), new ComponentName(tile.getPackageName(), tile.getComponentName()), ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome( mContext, new ComponentName(tile.getPackageName(), tile.getComponentName()), null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, true /* clearTop */); // Highlight preference ui. Loading src/com/android/settings/display/TopLevelWallpaperPreferenceController.java +6 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.RestrictedLockUtilsInternal; Loading Loading @@ -102,6 +103,11 @@ public class TopLevelWallpaperPreferenceController extends BasePreferenceControl mContext)) { intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); } ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome( mContext, intent.getComponent(), null /* secondaryIntentAction */, true /* clearTop */); preference.getContext().startActivity(intent); return true; } Loading src/com/android/settings/homepage/TopLevelSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ public class TopLevelSettings extends DashboardFragment implements @Override public boolean onPreferenceTreeClick(Preference preference) { // Register SplitPairRule for SubSettings. ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(getContext(), ActivityEmbeddingRulesController.registerSubSettingsPairRule(getContext(), true /* clearTop */); setHighlightPreferenceKey(preference.getKey()); Loading src/com/android/settings/search/SearchResultTrampoline.java +1 −1 Original line number Diff line number Diff line Loading @@ -97,7 +97,7 @@ public class SearchResultTrampoline extends Activity { } else if (isFromSettingsIntelligence(callingActivity)) { // Register SplitPairRule for SubSettings, set clearTop false to prevent unexpected back // navigation behavior. ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(this, ActivityEmbeddingRulesController.registerSubSettingsPairRule(this, false /* clearTop */); // TODO: pass menu key to homepage intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK); Loading Loading
src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +36 −6 Original line number Diff line number Diff line Loading @@ -73,6 +73,9 @@ public class ActivityEmbeddingRulesController { boolean finishPrimaryWithSecondary, boolean finishSecondaryWithPrimary, boolean clearTop) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) { return; } final Set<SplitPairFilter> filters = new HashSet<>(); filters.add(new SplitPairFilter(primaryComponent, secondaryComponent, secondaryIntentAction)); Loading @@ -87,18 +90,45 @@ public class ActivityEmbeddingRulesController { LayoutDirection.LOCALE)); } /** * Register a new SplitPairRule for Settings home. Because homepage is able to be opened by * {@link Settings} or {@link SettingsHomepageActivity}, we register split rule twice for * two cases. */ public static void registerTwoPanePairRuleForSettingsHome(Context context, ComponentName secondaryComponent, String secondaryIntentAction, boolean clearTop) { registerTwoPanePairRule( context, getComponentName(context, Settings.class), secondaryComponent, secondaryIntentAction, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, clearTop); registerTwoPanePairRule( context, getComponentName(context, SettingsHomepageActivity.class), secondaryComponent, secondaryIntentAction, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, clearTop); } /** Register a SplitPairRule for SubSettings if the device supports 2-pane. */ public static void registerSubSettingsPairRuleIfNeeded(Context context, boolean clearTop) { public static void registerSubSettingsPairRule(Context context, boolean clearTop) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) { return; } registerTwoPanePairRule(context, getComponentName(context, Settings.class), registerTwoPanePairRuleForSettingsHome( context, getComponentName(context, SubSettings.class), null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, clearTop); } Loading
src/com/android/settings/dashboard/DashboardFeatureProviderImpl.java +3 −7 Original line number Diff line number Diff line Loading @@ -175,14 +175,10 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider { if (fragment instanceof TopLevelSettings && ActivityEmbeddingUtils.isEmbeddingActivityEnabled(mContext)) { // Register the rule for injected apps. ActivityEmbeddingRulesController.registerTwoPanePairRule(mContext, new ComponentName(activity.getPackageName(), com.android.settings.Settings.class.getName()), new ComponentName(tile.getPackageName(), tile.getComponentName()), ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome( mContext, new ComponentName(tile.getPackageName(), tile.getComponentName()), null /* secondaryIntentAction */, true /* finishPrimaryWithSecondary */, true /* finishSecondaryWithPrimary */, true /* clearTop */); // Highlight preference ui. Loading
src/com/android/settings/display/TopLevelWallpaperPreferenceController.java +6 −0 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.core.BasePreferenceController; import com.android.settingslib.RestrictedLockUtilsInternal; Loading Loading @@ -102,6 +103,11 @@ public class TopLevelWallpaperPreferenceController extends BasePreferenceControl mContext)) { intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); } ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome( mContext, intent.getComponent(), null /* secondaryIntentAction */, true /* clearTop */); preference.getContext().startActivity(intent); return true; } Loading
src/com/android/settings/homepage/TopLevelSettings.java +1 −1 Original line number Diff line number Diff line Loading @@ -100,7 +100,7 @@ public class TopLevelSettings extends DashboardFragment implements @Override public boolean onPreferenceTreeClick(Preference preference) { // Register SplitPairRule for SubSettings. ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(getContext(), ActivityEmbeddingRulesController.registerSubSettingsPairRule(getContext(), true /* clearTop */); setHighlightPreferenceKey(preference.getKey()); Loading
src/com/android/settings/search/SearchResultTrampoline.java +1 −1 Original line number Diff line number Diff line Loading @@ -97,7 +97,7 @@ public class SearchResultTrampoline extends Activity { } else if (isFromSettingsIntelligence(callingActivity)) { // Register SplitPairRule for SubSettings, set clearTop false to prevent unexpected back // navigation behavior. ActivityEmbeddingRulesController.registerSubSettingsPairRuleIfNeeded(this, ActivityEmbeddingRulesController.registerSubSettingsPairRule(this, false /* clearTop */); // TODO: pass menu key to homepage intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK); Loading