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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user