Loading src/com/android/settings/activityembedding/EmbeddedDeepLinkUtils.kt +23 −17 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.settings.activityembedding import android.app.Activity import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent Loading @@ -36,29 +35,36 @@ object EmbeddedDeepLinkUtils { private const val TAG = "EmbeddedDeepLinkUtils" @JvmStatic fun Context.tryStartMultiPaneDeepLink( @JvmOverloads fun tryStartMultiPaneDeepLink( context: Context, intent: Intent, highlightMenuKey: String? = null, isSearch: Boolean = false, ): Boolean { intent.putExtra( SettingsActivity.EXTRA_INITIAL_CALLING_PACKAGE, PasswordUtils.getCallingAppPackageName(activityToken), PasswordUtils.getCallingAppPackageName(context.activityToken), ) val trampolineIntent: Intent if (intent.getBooleanExtra(SettingsActivity.EXTRA_IS_FROM_SLICE, false)) { val trampolineIntent = if (isSearch) { getTrampolineIntentForSearchResult(context, intent, highlightMenuKey) } else if (intent.getBooleanExtra(SettingsActivity.EXTRA_IS_FROM_SLICE, false)) { // Get menu key for slice deep link case. var sliceHighlightMenuKey: String? = intent.getStringExtra( var sliceHighlightMenuKey: String? = intent.getStringExtra( Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY ) if (sliceHighlightMenuKey.isNullOrEmpty()) { sliceHighlightMenuKey = highlightMenuKey } trampolineIntent = getTrampolineIntent(intent, sliceHighlightMenuKey) trampolineIntent.setClass(this, DeepLinkHomepageActivityInternal::class.java) getTrampolineIntent(intent, sliceHighlightMenuKey).apply { setClass(context, DeepLinkHomepageActivityInternal::class.java) } } else { trampolineIntent = getTrampolineIntent(intent, highlightMenuKey) getTrampolineIntent(intent, highlightMenuKey) } return startTrampolineIntent(trampolineIntent) return context.startTrampolineIntent(trampolineIntent) } /** Loading src/com/android/settings/spa/SpaDestination.kt +13 −3 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Intent import com.android.settings.activityembedding.ActivityEmbeddingUtils import com.android.settings.activityembedding.EmbeddedDeepLinkUtils.tryStartMultiPaneDeepLink import com.android.settingslib.spa.framework.util.SESSION_EXTERNAL import com.android.settingslib.spa.framework.util.SESSION_SEARCH import com.android.settingslib.spa.framework.util.appendSpaParams data class SpaDestination( Loading @@ -31,15 +32,24 @@ data class SpaDestination( val highlightMenuKey: String? = null, ) { fun startFromExportedActivity(context: Context) { start(context, isSearch = false) } fun startFromSearch(context: Context) { start(context, isSearch = true) } private fun start(context: Context, isSearch: Boolean) { val intent = Intent(context, SpaActivity::class.java) .appendSpaParams( destination = destination, highlightItemKey = highlightItemKey, sessionName = SESSION_EXTERNAL, sessionName = if (isSearch) SESSION_SEARCH else SESSION_EXTERNAL, ) if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context) || !context.tryStartMultiPaneDeepLink(intent, highlightMenuKey) if ( !ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context) || !tryStartMultiPaneDeepLink(context, intent, highlightMenuKey, isSearch) ) { context.startActivity(intent) } Loading src/com/android/settings/spa/search/SettingsSpaSearchLandingActivity.kt +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ class SettingsSpaSearchLandingActivity : SpaSearchLandingActivity() { override fun startSpaPage(destination: String, highlightItemKey: String) { SpaDestination(destination = destination, highlightItemKey = highlightItemKey) .startFromExportedActivity(this) .startFromSearch(this) } override fun startFragment(fragmentName: String, arguments: Bundle) { Loading tests/spa_unit/src/com/android/settings/spa/SpaDestinationTest.kt +22 −2 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ class SpaDestinationTest { } @Test fun startFromExportedActivity() { fun startFromExportedActivity_hasCorrectDestination() { val spaDestination = SpaDestination(destination = DESTINATION) spaDestination.startFromExportedActivity(context) Loading @@ -48,7 +48,7 @@ class SpaDestinationTest { } @Test fun startFromExportedActivity_with() { fun startFromExportedActivity_withHighlightItemKey() { val spaDestination = SpaDestination(destination = DESTINATION, highlightItemKey = HIGHLIGHT_ITEM_KEY) Loading @@ -58,6 +58,26 @@ class SpaDestinationTest { .startActivity(argThat { getStringExtra(KEY_HIGHLIGHT_ITEM_KEY) == HIGHLIGHT_ITEM_KEY }) } @Test fun startFromSearch_hasCorrectDestination() { val spaDestination = SpaDestination(destination = DESTINATION) spaDestination.startFromSearch(context) verify(context).startActivity(argThat { getStringExtra(KEY_DESTINATION) == DESTINATION }) } @Test fun startFromSearch_withHighlightItemKey() { val spaDestination = SpaDestination(destination = DESTINATION, highlightItemKey = HIGHLIGHT_ITEM_KEY) spaDestination.startFromSearch(context) verify(context) .startActivity(argThat { getStringExtra(KEY_HIGHLIGHT_ITEM_KEY) == HIGHLIGHT_ITEM_KEY }) } private companion object { const val DESTINATION = "Destination" const val HIGHLIGHT_ITEM_KEY = "highlight_item_key" Loading Loading
src/com/android/settings/activityembedding/EmbeddedDeepLinkUtils.kt +23 −17 Original line number Diff line number Diff line Loading @@ -16,7 +16,6 @@ package com.android.settings.activityembedding import android.app.Activity import android.content.ActivityNotFoundException import android.content.Context import android.content.Intent Loading @@ -36,29 +35,36 @@ object EmbeddedDeepLinkUtils { private const val TAG = "EmbeddedDeepLinkUtils" @JvmStatic fun Context.tryStartMultiPaneDeepLink( @JvmOverloads fun tryStartMultiPaneDeepLink( context: Context, intent: Intent, highlightMenuKey: String? = null, isSearch: Boolean = false, ): Boolean { intent.putExtra( SettingsActivity.EXTRA_INITIAL_CALLING_PACKAGE, PasswordUtils.getCallingAppPackageName(activityToken), PasswordUtils.getCallingAppPackageName(context.activityToken), ) val trampolineIntent: Intent if (intent.getBooleanExtra(SettingsActivity.EXTRA_IS_FROM_SLICE, false)) { val trampolineIntent = if (isSearch) { getTrampolineIntentForSearchResult(context, intent, highlightMenuKey) } else if (intent.getBooleanExtra(SettingsActivity.EXTRA_IS_FROM_SLICE, false)) { // Get menu key for slice deep link case. var sliceHighlightMenuKey: String? = intent.getStringExtra( var sliceHighlightMenuKey: String? = intent.getStringExtra( Settings.EXTRA_SETTINGS_EMBEDDED_DEEP_LINK_HIGHLIGHT_MENU_KEY ) if (sliceHighlightMenuKey.isNullOrEmpty()) { sliceHighlightMenuKey = highlightMenuKey } trampolineIntent = getTrampolineIntent(intent, sliceHighlightMenuKey) trampolineIntent.setClass(this, DeepLinkHomepageActivityInternal::class.java) getTrampolineIntent(intent, sliceHighlightMenuKey).apply { setClass(context, DeepLinkHomepageActivityInternal::class.java) } } else { trampolineIntent = getTrampolineIntent(intent, highlightMenuKey) getTrampolineIntent(intent, highlightMenuKey) } return startTrampolineIntent(trampolineIntent) return context.startTrampolineIntent(trampolineIntent) } /** Loading
src/com/android/settings/spa/SpaDestination.kt +13 −3 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import android.content.Intent import com.android.settings.activityembedding.ActivityEmbeddingUtils import com.android.settings.activityembedding.EmbeddedDeepLinkUtils.tryStartMultiPaneDeepLink import com.android.settingslib.spa.framework.util.SESSION_EXTERNAL import com.android.settingslib.spa.framework.util.SESSION_SEARCH import com.android.settingslib.spa.framework.util.appendSpaParams data class SpaDestination( Loading @@ -31,15 +32,24 @@ data class SpaDestination( val highlightMenuKey: String? = null, ) { fun startFromExportedActivity(context: Context) { start(context, isSearch = false) } fun startFromSearch(context: Context) { start(context, isSearch = true) } private fun start(context: Context, isSearch: Boolean) { val intent = Intent(context, SpaActivity::class.java) .appendSpaParams( destination = destination, highlightItemKey = highlightItemKey, sessionName = SESSION_EXTERNAL, sessionName = if (isSearch) SESSION_SEARCH else SESSION_EXTERNAL, ) if (!ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context) || !context.tryStartMultiPaneDeepLink(intent, highlightMenuKey) if ( !ActivityEmbeddingUtils.isEmbeddingActivityEnabled(context) || !tryStartMultiPaneDeepLink(context, intent, highlightMenuKey, isSearch) ) { context.startActivity(intent) } Loading
src/com/android/settings/spa/search/SettingsSpaSearchLandingActivity.kt +1 −1 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ class SettingsSpaSearchLandingActivity : SpaSearchLandingActivity() { override fun startSpaPage(destination: String, highlightItemKey: String) { SpaDestination(destination = destination, highlightItemKey = highlightItemKey) .startFromExportedActivity(this) .startFromSearch(this) } override fun startFragment(fragmentName: String, arguments: Bundle) { Loading
tests/spa_unit/src/com/android/settings/spa/SpaDestinationTest.kt +22 −2 Original line number Diff line number Diff line Loading @@ -39,7 +39,7 @@ class SpaDestinationTest { } @Test fun startFromExportedActivity() { fun startFromExportedActivity_hasCorrectDestination() { val spaDestination = SpaDestination(destination = DESTINATION) spaDestination.startFromExportedActivity(context) Loading @@ -48,7 +48,7 @@ class SpaDestinationTest { } @Test fun startFromExportedActivity_with() { fun startFromExportedActivity_withHighlightItemKey() { val spaDestination = SpaDestination(destination = DESTINATION, highlightItemKey = HIGHLIGHT_ITEM_KEY) Loading @@ -58,6 +58,26 @@ class SpaDestinationTest { .startActivity(argThat { getStringExtra(KEY_HIGHLIGHT_ITEM_KEY) == HIGHLIGHT_ITEM_KEY }) } @Test fun startFromSearch_hasCorrectDestination() { val spaDestination = SpaDestination(destination = DESTINATION) spaDestination.startFromSearch(context) verify(context).startActivity(argThat { getStringExtra(KEY_DESTINATION) == DESTINATION }) } @Test fun startFromSearch_withHighlightItemKey() { val spaDestination = SpaDestination(destination = DESTINATION, highlightItemKey = HIGHLIGHT_ITEM_KEY) spaDestination.startFromSearch(context) verify(context) .startActivity(argThat { getStringExtra(KEY_HIGHLIGHT_ITEM_KEY) == HIGHLIGHT_ITEM_KEY }) } private companion object { const val DESTINATION = "Destination" const val HIGHLIGHT_ITEM_KEY = "highlight_item_key" Loading