Avoid activity embedding if the activity is already embedded

Test: manual + robotests com.android.settings.search and com.android.settings.SettingsActivityTest
Bug: 271260497

Change-Id: Ia21ca7a75cacee64d1942e2fe1b439ac4a3cb134
diff --git a/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java b/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
index 370392b..a0dac5a 100644
--- a/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
+++ b/src/com/android/settings/activityembedding/ActivityEmbeddingUtils.java
@@ -23,6 +23,7 @@
 import android.util.Log;
 import android.util.TypedValue;
 
+import androidx.window.embedding.ActivityEmbeddingController;
 import androidx.window.embedding.SplitController;
 
 import com.android.settings.R;
@@ -81,4 +82,13 @@
         return dm.widthPixels >= (int) TypedValue.applyDimension(
                 TypedValue.COMPLEX_UNIT_DIP, MIN_REGULAR_HOMEPAGE_LAYOUT_WIDTH_DP, dm);
     }
+
+    /**
+     * Check if activity is already embedded
+     */
+    public static boolean isAlreadyEmbedded(Activity activity) {
+        return ActivityEmbeddingController
+                .getInstance(activity)
+                .isActivityEmbedded(activity);
+    }
 }
diff --git a/src/com/android/settings/search/SearchResultTrampoline.java b/src/com/android/settings/search/SearchResultTrampoline.java
index bcd8ee0..6ba0338 100644
--- a/src/com/android/settings/search/SearchResultTrampoline.java
+++ b/src/com/android/settings/search/SearchResultTrampoline.java
@@ -102,7 +102,8 @@
 
         intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
 
-        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)) {
+        if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(this)
+                || ActivityEmbeddingUtils.isAlreadyEmbedded(this)) {
             startActivity(intent);
         } else if (isSettingsIntelligence(callingActivity)) {
             if (FeatureFlagUtils.isEnabled(this, FeatureFlags.SETTINGS_SEARCH_ALWAYS_EXPAND)) {