Only set embedding rule for top level injection

Only the injected items on the top level pages should always be opened
on the right pane, so we should only register the split rule for that
part. This will leave flexibilities for those injected items in the
subpages.

Fixes: 216026158
Test: Go to Passwords & accounts > {account} > Google Account and see
the page opened in a full screen/new task.

Change-Id: I9f311547854ace410e93fdb4ca394df1079f723c
This commit is contained in:
Yi-Ling Chuang
2022-01-24 10:35:06 +08:00
parent e6bb6730aa
commit 2cb3f925a3
2 changed files with 8 additions and 11 deletions

View File

@@ -171,11 +171,13 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
intent.setAction(action);
}
// Register the rule for injected apps.
ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
mContext,
new ComponentName(tile.getPackageName(), tile.getComponentName()),
action,
true /* clearTop */);
if (fragment instanceof TopLevelSettings) {
ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
mContext,
new ComponentName(tile.getPackageName(), tile.getComponentName()),
action,
true /* clearTop */);
}
pref.setOnPreferenceClickListener(preference -> {
TopLevelHighlightMixin highlightMixin = null;
if (fragment instanceof TopLevelSettings
@@ -442,11 +444,6 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
ProfileSelectDialog.updateUserHandlesIfNeeded(mContext, tile);
mMetricsFeatureProvider.logStartedIntent(intent, sourceMetricCategory);
//TODO(b/201970810): Add test cases.
if (tile.isNewTask(mContext)) {
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
if (tile.userHandle == null || tile.isPrimaryProfileOnly()) {
activity.startActivity(intent);
} else if (tile.userHandle.size() == 1) {

View File

@@ -97,7 +97,7 @@ public class ProfileSelectDialog extends DialogFragment implements OnClickListen
public void onClick(DialogInterface dialog, int which) {
final UserHandle user = mSelectedTile.userHandle.get(which);
// Show menu on top level items.
final Intent intent = mSelectedTile.getIntent();
final Intent intent = new Intent(mSelectedTile.getIntent());
FeatureFactory.getFactory(getContext()).getMetricsFeatureProvider()
.logStartedIntentWithProfile(intent, mSourceMetricCategory,
which == 1 /* isWorkProfile */);