Settings: Start search result deep link in same task

This fixes a bug where the deep link initiated from a search result
would open the results page in a separate window. The root cause was the
inclusion of the FLAG_ACTIVITY_NEW_TASK intent flag.

Bug: 381127948
Test: atest SettingsSpaUnitTests:com.android.settings.activityembedding
Test: atest CtsSettingsTestCases:SettingsMultiPaneDeepLinkTest
Test: Manually verify UI
Flag: com.android.settings.flags.settings_search_result_deep_link_in_same_task
Change-Id: I91f9e5096ad02bd87e43bae03a2b3e69256be651
This commit is contained in:
Wes Okuhara
2025-02-26 15:09:10 -08:00
parent 4bc471f61e
commit cf2bcd7f1a
5 changed files with 114 additions and 6 deletions

View File

@@ -24,7 +24,9 @@ import android.content.pm.UserInfo
import android.provider.Settings
import android.util.Log
import com.android.settings.SettingsActivity
import com.android.settings.SettingsActivity.EXTRA_IS_DEEPLINK_HOME_STARTED_FROM_SEARCH
import com.android.settings.Utils
import com.android.settings.flags.Flags
import com.android.settings.homepage.DeepLinkHomepageActivityInternal
import com.android.settings.homepage.SettingsHomepageActivity
import com.android.settings.password.PasswordUtils
@@ -94,6 +96,28 @@ object EmbeddedDeepLinkUtils {
}
}
/**
* Returns the deep link trampoline intent for settings search results for large screen devices.
*/
@JvmStatic
fun getTrampolineIntentForSearchResult(
context: Context,
intent: Intent,
highlightMenuKey: String?
): Intent {
return getTrampolineIntent(intent, highlightMenuKey).apply {
if (Flags.settingsSearchResultDeepLinkInSameTask()) {
// Ensure the deep link intent does not include FLAG_ACTIVITY_NEW_TASK which
// causes the search result deep link to open in a separate window.
removeFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
putExtra(EXTRA_IS_DEEPLINK_HOME_STARTED_FROM_SEARCH, true)
} else {
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS)
}
setClass(context, DeepLinkHomepageActivityInternal::class.java)
}
}
/**
* Returns whether the user is a sub profile.