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

Bug: 205079744
Test: manual
Change-Id: I3ac663b42fc0538dcb20d53f456b90ea68c9093d
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java b/src/com/android/settings/activityembedding/ActivityEmbeddingRulesController.java
index 8484324..71932da 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.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 @@
 
     private void registerAlwaysExpandRule() {
         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, FingerprintEnrollEnrolling.class);
         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,
             Class<? extends Activity> 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 7f0c2e0..1a97ca9 100644
--- a/src/com/android/settings/core/FeatureFlags.java
+++ b/src/com/android/settings/core/FeatureFlags.java
@@ -28,4 +28,6 @@
     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 8b041b6..ab2d27c 100644
--- a/src/com/android/settings/search/SearchResultTrampoline.java
+++ b/src/com/android/settings/search/SearchResultTrampoline.java
@@ -25,6 +25,7 @@
 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.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 @@
         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 d1f6f16..37ac6cb 100644
--- a/src/com/android/settings/search/SearchStateReceiver.java
+++ b/src/com/android/settings/search/SearchStateReceiver.java
@@ -20,9 +20,11 @@
 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 @@
 
     @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;