diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c29b36552..4fb4c277a 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -66,7 +66,7 @@ { + components.intentProcessors.externalAppIntentProcessors.any { it.matches(intent) } -> { // TODO this needs to change: https://github.com/mozilla-mobile/fenix/issues/5225 val activityClass = if (intent.hasExtra(EXTRA_AUTH_CUSTOM_TAB)) { AuthCustomTabActivity::class } else { - CustomTabActivity::class + ExternalAppBrowserActivity::class } intent.setClassName(applicationContext, activityClass.java.name) true } - intent.action == Intent.ACTION_VIEW || intent.action == Intent.ACTION_SEND -> { + tabIntentProcessor.matches(intent) -> { intent.setClassName(applicationContext, HomeActivity::class.java.name) // This Intent was launched from history (recent apps). Android will redeliver the // original Intent (which might be a VIEW intent). However if there's no active browsing diff --git a/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt b/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt index 99f7720ba..514d74dc4 100644 --- a/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt +++ b/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt @@ -36,7 +36,9 @@ class IntentProcessors( TabIntentProcessor(sessionManager, sessionUseCases.loadUrl, searchUseCases.newTabSearch, isPrivate = true) } - val customTabIntentProcessor by lazy { - CustomTabIntentProcessor(sessionManager, sessionUseCases.loadUrl, context.resources) + val externalAppIntentProcessors by lazy { + listOf( + CustomTabIntentProcessor(sessionManager, sessionUseCases.loadUrl, context.resources) + ) } } diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/AuthCustomTabActivity.kt b/app/src/main/java/org/mozilla/fenix/customtabs/AuthCustomTabActivity.kt index 8e74944d4..cf1e30f56 100644 --- a/app/src/main/java/org/mozilla/fenix/customtabs/AuthCustomTabActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/customtabs/AuthCustomTabActivity.kt @@ -12,7 +12,7 @@ import org.mozilla.fenix.ext.components /** * A special custom tab for signing into a Firefox Account. The activity is closed once the user is signed in. */ -class AuthCustomTabActivity : CustomTabActivity() { +class AuthCustomTabActivity : ExternalAppBrowserActivity() { private val accountStateObserver = object : AccountObserver { /** diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserActivity.kt similarity index 92% rename from app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt rename to app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserActivity.kt index cf3e162d0..ccee13230 100644 --- a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/customtabs/ExternalAppBrowserActivity.kt @@ -17,7 +17,11 @@ import org.mozilla.fenix.ext.components import org.mozilla.fenix.theme.CustomTabThemeManager import java.security.InvalidParameterException -open class CustomTabActivity : HomeActivity() { +/** + * Activity that holds the [ExternalAppBrowserFragment] that is launched within an external app, + * such as custom tabs and progressive web apps. + */ +open class ExternalAppBrowserActivity : HomeActivity() { final override fun getBreadcrumbMessage(destination: NavDestination): String { val fragmentName = resources.getResourceEntryName(destination.id) return "Changing to fragment $fragmentName, isCustomTab: true" diff --git a/app/src/test/java/org/mozilla/fenix/customtabs/CustomTabActivityTest.kt b/app/src/test/java/org/mozilla/fenix/customtabs/ExternalAppBrowserActivityTest.kt similarity index 93% rename from app/src/test/java/org/mozilla/fenix/customtabs/CustomTabActivityTest.kt rename to app/src/test/java/org/mozilla/fenix/customtabs/ExternalAppBrowserActivityTest.kt index 04ebd6c1a..6eeea7e4f 100644 --- a/app/src/test/java/org/mozilla/fenix/customtabs/CustomTabActivityTest.kt +++ b/app/src/test/java/org/mozilla/fenix/customtabs/ExternalAppBrowserActivityTest.kt @@ -18,11 +18,11 @@ import org.robolectric.annotation.Config @ObsoleteCoroutinesApi @RunWith(RobolectricTestRunner::class) @Config(application = TestApplication::class) -class CustomTabActivityTest { +class ExternalAppBrowserActivityTest { @Test fun getIntentSource() { - val activity = CustomTabActivity() + val activity = ExternalAppBrowserActivity() val launcherIntent = Intent(Intent.ACTION_MAIN).apply { addCategory(Intent.CATEGORY_LAUNCHER)