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

Commit a8c97980 authored by Charles Chen's avatar Charles Chen Committed by Tsung-Mao Fang
Browse files

Fix different behaviors of deeplink in one/two pane

Test: manual - Reproducible steps mentioned in bug
fixes: 207740082
Change-Id: I1163e38c177307ccac8798eb649271d0466ab1c8
parent 17423d16
Loading
Loading
Loading
Loading
+16 −14
Original line number Diff line number Diff line
@@ -77,8 +77,8 @@ public class ActivityEmbeddingRulesController {
            ComponentName primaryComponent,
            ComponentName secondaryComponent,
            String secondaryIntentAction,
            boolean finishPrimaryWithSecondary,
            boolean finishSecondaryWithPrimary,
            int finishPrimaryWithSecondary,
            int finishSecondaryWithPrimary,
            boolean clearTop) {
        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context)) {
            return;
@@ -88,8 +88,8 @@ public class ActivityEmbeddingRulesController {
                secondaryIntentAction));

        SplitController.getInstance().registerRule(new SplitPairRule(filters,
                finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
                finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
                finishPrimaryWithSecondary,
                finishSecondaryWithPrimary,
                clearTop,
                ActivityEmbeddingUtils.getMinCurrentScreenSplitWidthPx(context),
                ActivityEmbeddingUtils.getMinSmallestScreenSplitWidthPx(context),
@@ -117,26 +117,28 @@ public class ActivityEmbeddingRulesController {
                getComponentName(context, Settings.class),
                secondaryComponent,
                secondaryIntentAction,
                finishPrimaryWithSecondary,
                finishSecondaryWithPrimary,
                finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
                finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
                clearTop);

        registerTwoPanePairRule(
                context,
                new ComponentName(context, DeepLinkHomepageActivity.class),
                getComponentName(context, SettingsHomepageActivity.class),
                secondaryComponent,
                secondaryIntentAction,
                finishPrimaryWithSecondary,
                finishSecondaryWithPrimary,
                finishPrimaryWithSecondary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
                finishSecondaryWithPrimary ? SplitRule.FINISH_ADJACENT : SplitRule.FINISH_NEVER,
                clearTop);

        // We should finish HomePageActivity altogether even if it shows in single pane for all deep
        // link cases.
        registerTwoPanePairRule(
                context,
                getComponentName(context, SettingsHomepageActivity.class),
                new ComponentName(context, DeepLinkHomepageActivity.class),
                secondaryComponent,
                secondaryIntentAction,
                finishPrimaryWithSecondary,
                finishSecondaryWithPrimary,
                finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
                finishSecondaryWithPrimary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
                clearTop);

        registerTwoPanePairRule(
@@ -144,8 +146,8 @@ public class ActivityEmbeddingRulesController {
                getComponentName(context, SliceDeepLinkHomepageActivity.class),
                secondaryComponent,
                secondaryIntentAction,
                finishPrimaryWithSecondary,
                finishSecondaryWithPrimary,
                finishPrimaryWithSecondary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
                finishSecondaryWithPrimary ? SplitRule.FINISH_ALWAYS : SplitRule.FINISH_NEVER,
                clearTop);
    }

+5 −4
Original line number Diff line number Diff line
@@ -40,6 +40,7 @@ import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.window.embedding.SplitRule;

import com.android.settings.R;
import com.android.settings.Settings;
@@ -338,15 +339,15 @@ public class SettingsHomepageActivity extends FragmentActivity implements
                new ComponentName(getApplicationContext(), getClass()),
                targetComponentName,
                targetIntent.getAction(),
                true /* finishPrimaryWithSecondary */,
                true /* finishSecondaryWithPrimary */,
                SplitRule.FINISH_ALWAYS,
                SplitRule.FINISH_ALWAYS,
                true /* clearTop*/);
        ActivityEmbeddingRulesController.registerTwoPanePairRule(this,
                new ComponentName(Settings.class.getPackageName(), Settings.class.getName()),
                targetComponentName,
                targetIntent.getAction(),
                true /* finishPrimaryWithSecondary */,
                true /* finishSecondaryWithPrimary */,
                SplitRule.FINISH_ALWAYS,
                SplitRule.FINISH_ALWAYS,
                true /* clearTop*/);
        startActivity(targetIntent);
    }