Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 31ec8a91 authored by Arc Wang's avatar Arc Wang Committed by Automerger Merge Worker
Browse files

Merge "[Large screen] Fix searched Subsettings back navigation bug" into sc-v2-dev am: c1b5f788

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16145690

Change-Id: Icb336250f28c1b8a05369bb63b1ad3facb8e5a83
parents c5230ce8 c1b5f788
Loading
Loading
Loading
Loading
+25 −10
Original line number Diff line number Diff line
@@ -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. */
@@ -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));
@@ -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);
@@ -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());
    }
}
+4 −1
Original line number Diff line number Diff line
@@ -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;
+4 −2
Original line number Diff line number Diff line
@@ -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);
    }

+5 −0
Original line number Diff line number Diff line
@@ -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;
@@ -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);
    }
+6 −0
Original line number Diff line number Diff line
@@ -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;

/**
@@ -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);