[Large screen] Open the search page in full-screen mode

Bug: 205079744
Test: manual
Change-Id: I3ac663b42fc0538dcb20d53f456b90ea68c9093d
This commit is contained in:
Jason Chiu
2022-01-10 10:28:41 +08:00
parent 53efa5be66
commit 94a9c57759
4 changed files with 44 additions and 12 deletions

View File

@@ -17,9 +17,11 @@
package com.android.settings.activityembedding; package com.android.settings.activityembedding;
import android.app.Activity; import android.app.Activity;
import android.app.settings.SettingsEnums;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.util.FeatureFlagUtils;
import android.util.LayoutDirection; import android.util.LayoutDirection;
import android.util.Log; import android.util.Log;
@@ -35,9 +37,11 @@ import com.android.settings.Settings;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling; import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction;
import com.android.settings.core.FeatureFlags;
import com.android.settings.homepage.DeepLinkHomepageActivity; import com.android.settings.homepage.DeepLinkHomepageActivity;
import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SettingsHomepageActivity;
import com.android.settings.homepage.SliceDeepLinkHomepageActivity; import com.android.settings.homepage.SliceDeepLinkHomepageActivity;
import com.android.settings.overlay.FeatureFactory;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@@ -206,11 +210,22 @@ public class ActivityEmbeddingRulesController {
private void registerAlwaysExpandRule() { private void registerAlwaysExpandRule() {
final Set<ActivityFilter> activityFilters = new HashSet<>(); final Set<ActivityFilter> activityFilters = new HashSet<>();
if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.SETTINGS_SEARCH_ALWAYS_EXPAND)) {
final Intent searchIntent = FeatureFactory.getFactory(mContext)
.getSearchFeatureProvider()
.buildSearchIntent(mContext, SettingsEnums.SETTINGS_HOMEPAGE);
addActivityFilter(activityFilters, searchIntent);
}
addActivityFilter(activityFilters, FingerprintEnrollIntroduction.class); addActivityFilter(activityFilters, FingerprintEnrollIntroduction.class);
addActivityFilter(activityFilters, FingerprintEnrollEnrolling.class); addActivityFilter(activityFilters, FingerprintEnrollEnrolling.class);
mSplitController.registerRule(new ActivityRule(activityFilters, true /* alwaysExpand */)); mSplitController.registerRule(new ActivityRule(activityFilters, true /* alwaysExpand */));
} }
private static void addActivityFilter(Set<ActivityFilter> activityFilters, Intent intent) {
activityFilters.add(new ActivityFilter(new ComponentName("*" /* pkg */, "*" /* cls */),
intent.getAction()));
}
private void addActivityFilter(Set<ActivityFilter> activityFilters, private void addActivityFilter(Set<ActivityFilter> activityFilters,
Class<? extends Activity> activityClass) { Class<? extends Activity> activityClass) {
activityFilters.add(new ActivityFilter(new ComponentName(mContext, activityClass), activityFilters.add(new ActivityFilter(new ComponentName(mContext, activityClass),

View File

@@ -28,4 +28,6 @@ public class FeatureFlags {
public static final String CONDITIONAL_CARDS = "settings_conditionals"; public static final String CONDITIONAL_CARDS = "settings_conditionals";
public static final String TETHER_ALL_IN_ONE = "settings_tether_all_in_one"; public static final String TETHER_ALL_IN_ONE = "settings_tether_all_in_one";
public static final String CONTEXTUAL_HOME = "settings_contextual_home"; public static final String CONTEXTUAL_HOME = "settings_contextual_home";
public static final String SETTINGS_SEARCH_ALWAYS_EXPAND =
"settings_search_always_expand";
} }

View File

@@ -25,6 +25,7 @@ import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.provider.Settings; import android.provider.Settings;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.Log; import android.util.Log;
import com.android.settings.SettingsActivity; import com.android.settings.SettingsActivity;
@@ -32,6 +33,7 @@ import com.android.settings.SettingsApplication;
import com.android.settings.SubSettings; import com.android.settings.SubSettings;
import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingRulesController;
import com.android.settings.activityembedding.ActivityEmbeddingUtils; import com.android.settings.activityembedding.ActivityEmbeddingUtils;
import com.android.settings.core.FeatureFlags;
import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SettingsHomepageActivity;
import com.android.settings.overlay.FeatureFactory; import com.android.settings.overlay.FeatureFactory;
@@ -97,20 +99,26 @@ public class SearchResultTrampoline extends Activity {
if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
startActivity(intent); startActivity(intent);
} else if (isSettingsIntelligence(callingActivity)) { } else if (isSettingsIntelligence(callingActivity)) {
// Register SplitPairRule for SubSettings, set clearTop false to prevent unexpected back if (FeatureFlagUtils.isEnabled(this, FeatureFlags.SETTINGS_SEARCH_ALWAYS_EXPAND)) {
// navigation behavior. startActivity(SettingsActivity.getTrampolineIntent(intent, highlightMenuKey)
ActivityEmbeddingRulesController.registerSubSettingsPairRule(this, .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK
false /* clearTop */); | Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS));
} else {
// Register SplitPairRule for SubSettings, set clearTop false to prevent unexpected
// back navigation behavior.
ActivityEmbeddingRulesController.registerSubSettingsPairRule(this,
false /* clearTop */);
intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK); intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); startActivity(intent);
// Pass menu key to homepage // Pass menu key to homepage
final SettingsHomepageActivity homeActivity = final SettingsHomepageActivity homeActivity =
((SettingsApplication) getApplicationContext()).getHomeActivity(); ((SettingsApplication) getApplicationContext()).getHomeActivity();
if (homeActivity != null) { if (homeActivity != null) {
homeActivity.getMainFragment().setHighlightMenuKey(highlightMenuKey, homeActivity.getMainFragment().setHighlightMenuKey(highlightMenuKey,
/* scrollNeeded= */ true); /* scrollNeeded= */ true);
}
} }
} else { } else {
// Two-pane case // Two-pane case

View File

@@ -20,9 +20,11 @@ import android.content.BroadcastReceiver;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.FeatureFlagUtils;
import android.util.Log; import android.util.Log;
import com.android.settings.SettingsApplication; import com.android.settings.SettingsApplication;
import com.android.settings.core.FeatureFlags;
import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SettingsHomepageActivity;
/** /**
@@ -36,6 +38,11 @@ public class SearchStateReceiver extends BroadcastReceiver {
@Override @Override
public void onReceive(Context context, Intent intent) { public void onReceive(Context context, Intent intent) {
if (FeatureFlagUtils.isEnabled(context, FeatureFlags.SETTINGS_SEARCH_ALWAYS_EXPAND)) {
// Not needed to show/hide the highlight when search is full screen
return;
}
if (intent == null) { if (intent == null) {
Log.w(TAG, "Null intent"); Log.w(TAG, "Null intent");
return; return;