From 94a9c57759156a09a5eca2cab303f4724abfef4e Mon Sep 17 00:00:00 2001 From: Jason Chiu Date: Mon, 10 Jan 2022 10:28:41 +0800 Subject: [PATCH] [Large screen] Open the search page in full-screen mode Bug: 205079744 Test: manual Change-Id: I3ac663b42fc0538dcb20d53f456b90ea68c9093d --- .../ActivityEmbeddingRulesController.java | 15 +++++++++ .../android/settings/core/FeatureFlags.java | 2 ++ .../search/SearchResultTrampoline.java | 32 ++++++++++++------- .../settings/search/SearchStateReceiver.java | 7 ++++ 4 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java index 84843241504..71932da24f2 100644 --- a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java +++ b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java @@ -17,9 +17,11 @@ package com.android.settings.activityembedding; import android.app.Activity; +import android.app.settings.SettingsEnums; import android.content.ComponentName; import android.content.Context; import android.content.Intent; +import android.util.FeatureFlagUtils; import android.util.LayoutDirection; import android.util.Log; @@ -35,9 +37,11 @@ import com.android.settings.Settings; import com.android.settings.SubSettings; import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling; import com.android.settings.biometrics.fingerprint.FingerprintEnrollIntroduction; +import com.android.settings.core.FeatureFlags; import com.android.settings.homepage.DeepLinkHomepageActivity; import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.homepage.SliceDeepLinkHomepageActivity; +import com.android.settings.overlay.FeatureFactory; import java.util.HashSet; import java.util.Set; @@ -206,11 +210,22 @@ public class ActivityEmbeddingRulesController { private void registerAlwaysExpandRule() { final Set 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, FingerprintEnrollEnrolling.class); mSplitController.registerRule(new ActivityRule(activityFilters, true /* alwaysExpand */)); } + private static void addActivityFilter(Set activityFilters, Intent intent) { + activityFilters.add(new ActivityFilter(new ComponentName("*" /* pkg */, "*" /* cls */), + intent.getAction())); + } + private void addActivityFilter(Set activityFilters, Class activityClass) { activityFilters.add(new ActivityFilter(new ComponentName(mContext, activityClass), diff --git a/src/com/android/settings/core/FeatureFlags.java b/src/com/android/settings/core/FeatureFlags.java index 7f0c2e0c5b0..1a97ca99116 100644 --- a/src/com/android/settings/core/FeatureFlags.java +++ b/src/com/android/settings/core/FeatureFlags.java @@ -28,4 +28,6 @@ public class FeatureFlags { 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 CONTEXTUAL_HOME = "settings_contextual_home"; + public static final String SETTINGS_SEARCH_ALWAYS_EXPAND = + "settings_search_always_expand"; } diff --git a/src/com/android/settings/search/SearchResultTrampoline.java b/src/com/android/settings/search/SearchResultTrampoline.java index 8b041b67f87..ab2d27c4c2c 100644 --- a/src/com/android/settings/search/SearchResultTrampoline.java +++ b/src/com/android/settings/search/SearchResultTrampoline.java @@ -25,6 +25,7 @@ import android.content.Intent; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; +import android.util.FeatureFlagUtils; import android.util.Log; import com.android.settings.SettingsActivity; @@ -32,6 +33,7 @@ import com.android.settings.SettingsApplication; import com.android.settings.SubSettings; import com.android.settings.activityembedding.ActivityEmbeddingRulesController; import com.android.settings.activityembedding.ActivityEmbeddingUtils; +import com.android.settings.core.FeatureFlags; import com.android.settings.homepage.SettingsHomepageActivity; import com.android.settings.overlay.FeatureFactory; @@ -97,20 +99,26 @@ public class SearchResultTrampoline extends Activity { if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) { startActivity(intent); } else if (isSettingsIntelligence(callingActivity)) { - // Register SplitPairRule for SubSettings, set clearTop false to prevent unexpected back - // navigation behavior. - ActivityEmbeddingRulesController.registerSubSettingsPairRule(this, - false /* clearTop */); + if (FeatureFlagUtils.isEnabled(this, FeatureFlags.SETTINGS_SEARCH_ALWAYS_EXPAND)) { + startActivity(SettingsActivity.getTrampolineIntent(intent, highlightMenuKey) + .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK + | 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); - startActivity(intent); + intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(intent); - // Pass menu key to homepage - final SettingsHomepageActivity homeActivity = - ((SettingsApplication) getApplicationContext()).getHomeActivity(); - if (homeActivity != null) { - homeActivity.getMainFragment().setHighlightMenuKey(highlightMenuKey, - /* scrollNeeded= */ true); + // Pass menu key to homepage + final SettingsHomepageActivity homeActivity = + ((SettingsApplication) getApplicationContext()).getHomeActivity(); + if (homeActivity != null) { + homeActivity.getMainFragment().setHighlightMenuKey(highlightMenuKey, + /* scrollNeeded= */ true); + } } } else { // Two-pane case diff --git a/src/com/android/settings/search/SearchStateReceiver.java b/src/com/android/settings/search/SearchStateReceiver.java index d1f6f161a48..37ac6cbf29e 100644 --- a/src/com/android/settings/search/SearchStateReceiver.java +++ b/src/com/android/settings/search/SearchStateReceiver.java @@ -20,9 +20,11 @@ import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.text.TextUtils; +import android.util.FeatureFlagUtils; import android.util.Log; import com.android.settings.SettingsApplication; +import com.android.settings.core.FeatureFlags; import com.android.settings.homepage.SettingsHomepageActivity; /** @@ -36,6 +38,11 @@ public class SearchStateReceiver extends BroadcastReceiver { @Override 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) { Log.w(TAG, "Null intent"); return;