Let SpaBridgeActivity support ActivityEmbedding

Move the multi pane shared logic into EmbeddedDeepLinkUtils.

Fix: 309075424
Test: manual - with SpaActivity
Test: unit tests
Test: m RunSettingsRoboTests ROBOTEST_FILTER=".*\.SettingsActivityTest"
Change-Id: I8c41c801b8a5009a3959c85b784ed9739d947a70
This commit is contained in:
Chaohui Wang
2023-11-03 17:48:35 +08:00
parent 005c47f19c
commit 0d338cd1df
12 changed files with 355 additions and 179 deletions

View File

@@ -28,7 +28,7 @@ import com.android.settings.applications.appinfo.WriteSettingsDetails
import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureDetails
import com.android.settings.applications.specialaccess.pictureinpicture.PictureInPictureSettings
import com.android.settings.spa.SpaActivity.Companion.startSpaActivity
import com.android.settings.spa.SpaActivity.Companion.startSpaActivityForApp
import com.android.settings.spa.SpaAppBridgeActivity.Companion.getDestinationForApp
import com.android.settings.spa.app.specialaccess.AlarmsAndRemindersAppListProvider
import com.android.settings.spa.app.specialaccess.AllFilesAccessAppListProvider
import com.android.settings.spa.app.specialaccess.DisplayOverOtherAppsAppListProvider
@@ -72,17 +72,18 @@ object SettingsActivityUtil {
@JvmStatic
fun Context.launchSpaActivity(fragmentName: String, intent: Intent): Boolean {
if (!FeatureFlagUtils.isEnabled(this, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) {
return false
}
FRAGMENT_TO_SPA_DESTINATION_MAP[fragmentName]?.let { destination ->
startSpaActivity(destination)
return true
}
FRAGMENT_TO_SPA_APP_DESTINATION_PREFIX_MAP[fragmentName]?.let { appDestinationPrefix ->
startSpaActivityForApp(appDestinationPrefix, intent)
return true
if (FeatureFlagUtils.isEnabled(this, FeatureFlagUtils.SETTINGS_ENABLE_SPA)) {
getDestination(fragmentName, intent)?.let { destination ->
startSpaActivity(destination)
return true
}
}
return false
}
private fun getDestination(fragmentName: String, intent: Intent): String? =
FRAGMENT_TO_SPA_DESTINATION_MAP[fragmentName]
?: FRAGMENT_TO_SPA_APP_DESTINATION_PREFIX_MAP[fragmentName]?.let { destinationPrefix ->
getDestinationForApp(destinationPrefix, intent)
}
}