diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b3771542f..a4593e02e 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -75,14 +75,6 @@
android:taskAffinity=""
android:windowSoftInputMode="adjustResize|stateAlwaysHidden" />
-
-
@@ -185,6 +177,17 @@
android:enabled="${isRaptorEnabled}"
android:exported="${isRaptorEnabled}" />
+
+
+
+
diff --git a/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt b/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt
index 89a348382..0478b64ef 100644
--- a/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt
+++ b/app/src/main/java/org/mozilla/fenix/IntentReceiverActivity.kt
@@ -13,8 +13,6 @@ import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
import mozilla.components.feature.intent.processing.TabIntentProcessor
import mozilla.components.support.utils.Browsers
-import org.mozilla.fenix.customtabs.AuthCustomTabActivity
-import org.mozilla.fenix.customtabs.AuthCustomTabActivity.Companion.EXTRA_AUTH_CUSTOM_TAB
import org.mozilla.fenix.customtabs.ExternalAppBrowserActivity
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
@@ -77,13 +75,7 @@ class IntentReceiverActivity : Activity() {
private fun setIntentActivity(intent: Intent, tabIntentProcessor: TabIntentProcessor) {
val openToBrowser = when {
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 {
- ExternalAppBrowserActivity::class
- }
- intent.setClassName(applicationContext, activityClass.java.name)
+ intent.setClassName(applicationContext, ExternalAppBrowserActivity::class.java.name)
true
}
tabIntentProcessor.matches(intent) -> {
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 230b12611..e4cac05ca 100644
--- a/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt
+++ b/app/src/main/java/org/mozilla/fenix/components/IntentProcessors.kt
@@ -44,6 +44,10 @@ 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(
TrustedWebActivityIntentProcessor(
@@ -55,7 +59,7 @@ class IntentProcessors(
store = customTabsStore
),
WebAppIntentProcessor(sessionManager, sessionUseCases.loadUrl, ManifestStorage(context)),
- CustomTabIntentProcessor(sessionManager, sessionUseCases.loadUrl, context.resources)
+ customTabIntentProcessor
)
}
}
diff --git a/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt b/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt
index 82a83e682..30ae842b4 100644
--- a/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt
+++ b/app/src/main/java/org/mozilla/fenix/settings/SupportUtils.kt
@@ -12,8 +12,8 @@ import mozilla.components.support.ktx.android.content.appVersionName
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.IntentReceiverActivity
import org.mozilla.fenix.R
-import org.mozilla.fenix.customtabs.AuthCustomTabActivity.Companion.EXTRA_AUTH_CUSTOM_TAB
import org.mozilla.fenix.ext.getColorFromAttr
+import org.mozilla.fenix.settings.account.AuthIntentReceiverActivity
import java.io.UnsupportedEncodingException
import java.net.URLEncoder
import java.util.Locale
@@ -68,11 +68,11 @@ object SupportUtils {
.build()
.intent
.setData(url.toUri())
- .setClassName(context.applicationContext, IntentReceiverActivity::class.java.name)
+ .setClassName(context, IntentReceiverActivity::class.java.name)
.setPackage(context.packageName)
fun createAuthCustomTabIntent(context: Context, url: String): Intent =
- createCustomTabIntent(context, url).putExtra(EXTRA_AUTH_CUSTOM_TAB, true)
+ createCustomTabIntent(context, url).setClassName(context, AuthIntentReceiverActivity::class.java.name)
private fun getEncodedTopicUTF8(topic: String): String {
try {
diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/AuthCustomTabActivity.kt b/app/src/main/java/org/mozilla/fenix/settings/account/AuthCustomTabActivity.kt
similarity index 88%
rename from app/src/main/java/org/mozilla/fenix/customtabs/AuthCustomTabActivity.kt
rename to app/src/main/java/org/mozilla/fenix/settings/account/AuthCustomTabActivity.kt
index cf1e30f56..98b986dc7 100644
--- a/app/src/main/java/org/mozilla/fenix/customtabs/AuthCustomTabActivity.kt
+++ b/app/src/main/java/org/mozilla/fenix/settings/account/AuthCustomTabActivity.kt
@@ -2,11 +2,12 @@
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-package org.mozilla.fenix.customtabs
+package org.mozilla.fenix.settings.account
import mozilla.components.concept.sync.AccountObserver
import mozilla.components.concept.sync.AuthType
import mozilla.components.concept.sync.OAuthAccount
+import org.mozilla.fenix.customtabs.ExternalAppBrowserActivity
import org.mozilla.fenix.ext.components
/**
@@ -28,8 +29,4 @@ class AuthCustomTabActivity : ExternalAppBrowserActivity() {
val accountManager = components.backgroundServices.accountManager
accountManager.register(accountStateObserver, this, true)
}
-
- companion object {
- const val EXTRA_AUTH_CUSTOM_TAB = "support.customtabs.extra.AUTH"
- }
}
diff --git a/app/src/main/java/org/mozilla/fenix/settings/account/AuthIntentReceiverActivity.kt b/app/src/main/java/org/mozilla/fenix/settings/account/AuthIntentReceiverActivity.kt
new file mode 100644
index 000000000..427b81d9e
--- /dev/null
+++ b/app/src/main/java/org/mozilla/fenix/settings/account/AuthIntentReceiverActivity.kt
@@ -0,0 +1,39 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+package org.mozilla.fenix.settings.account
+
+import android.app.Activity
+import android.content.Intent
+import android.os.Bundle
+import androidx.annotation.VisibleForTesting
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.launch
+import org.mozilla.fenix.HomeActivity
+import org.mozilla.fenix.ext.components
+
+/**
+ * Processes incoming intents and sends them to the corresponding activity.
+ */
+class AuthIntentReceiverActivity : Activity() {
+
+ @VisibleForTesting
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+
+ MainScope().launch {
+ // The intent property is nullable, but the rest of the code below
+ // assumes it is not. If it's null, then we make a new one and open
+ // the HomeActivity.
+ val intent = intent?.let { Intent(intent) } ?: Intent()
+ components.intentProcessors.customTabIntentProcessor.process(intent)
+ intent.setClassName(applicationContext, AuthCustomTabActivity::class.java.name)
+ intent.putExtra(HomeActivity.OPEN_TO_BROWSER, true)
+
+ startActivity(intent)
+
+ finish()
+ }
+ }
+}