Close #9960: Launch URI in Fenix if failed to launch in custom tab (#9964)

fennec/production
Roger Yang 4 years ago committed by GitHub
parent ec1d4e8fca
commit 40550e88de
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -33,9 +33,11 @@ android {
resValue "bool", "IS_DEBUG", "false" resValue "bool", "IS_DEBUG", "false"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "false" buildConfigField "boolean", "USE_RELEASE_VERSIONING", "false"
buildConfigField "String", "AMO_COLLECTION", "\"7e8d6dc651b54ab385fb8791bf9dac\"" buildConfigField "String", "AMO_COLLECTION", "\"7e8d6dc651b54ab385fb8791bf9dac\""
def deepLinkSchemeValue = "fenix-dev"
buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\""
manifestPlaceholders = [ manifestPlaceholders = [
"isRaptorEnabled": "false", "isRaptorEnabled": "false",
"deepLinkScheme": "fenix-dev" "deepLinkScheme": deepLinkSchemeValue
] ]
} }
@ -72,21 +74,29 @@ android {
applicationIdSuffix ".fenix.nightly" applicationIdSuffix ".fenix.nightly"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true" buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
buildConfigField "String", "AMO_COLLECTION", "\"16f6e5d9a40448b8955db57ced6d75\"" buildConfigField "String", "AMO_COLLECTION", "\"16f6e5d9a40448b8955db57ced6d75\""
manifestPlaceholders = ["deepLinkScheme": "fenix-nightly"] def deepLinkSchemeValue = "fenix-nightly"
buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\""
manifestPlaceholders = ["deepLinkScheme": deepLinkSchemeValue]
} }
fenixBeta releaseTemplate >> { fenixBeta releaseTemplate >> {
applicationIdSuffix ".fenix.beta" applicationIdSuffix ".fenix.beta"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true" buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
manifestPlaceholders = ["deepLinkScheme": "fenix-beta"] def deepLinkSchemeValue = "fenix-beta"
buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\""
manifestPlaceholders = ["deepLinkScheme": deepLinkSchemeValue]
} }
fenixProduction releaseTemplate >> { fenixProduction releaseTemplate >> {
applicationIdSuffix ".fenix" applicationIdSuffix ".fenix"
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true" buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
manifestPlaceholders = ["deepLinkScheme": "fenix"] def deepLinkSchemeValue = "fenix"
buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\""
manifestPlaceholders = ["deepLinkScheme": deepLinkSchemeValue]
} }
fennecProduction releaseTemplate >> { fennecProduction releaseTemplate >> {
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true" buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
applicationIdSuffix ".firefox" applicationIdSuffix ".firefox"
def deepLinkSchemeValue = "fenix"
buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\""
manifestPlaceholders = [ manifestPlaceholders = [
// This release type is meant to replace Firefox (Release channel) and therefore needs to inherit // This release type is meant to replace Firefox (Release channel) and therefore needs to inherit
// its sharedUserId for all eternity. See: // its sharedUserId for all eternity. See:
@ -96,12 +106,14 @@ android {
// - https://issuetracker.google.com/issues/36924841 // - https://issuetracker.google.com/issues/36924841
// - https://issuetracker.google.com/issues/36905922 // - https://issuetracker.google.com/issues/36905922
"sharedUserId": "org.mozilla.firefox.sharedID", "sharedUserId": "org.mozilla.firefox.sharedID",
"deepLinkScheme": "fenix" "deepLinkScheme": deepLinkSchemeValue
] ]
} }
fennecBeta releaseTemplate >> { fennecBeta releaseTemplate >> {
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true" buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
applicationIdSuffix ".firefox_beta" applicationIdSuffix ".firefox_beta"
def deepLinkSchemeValue = "fenix-beta"
buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\""
manifestPlaceholders = [ manifestPlaceholders = [
// This release type is meant to replace Firefox (Release channel) and therefore needs to inherit // This release type is meant to replace Firefox (Release channel) and therefore needs to inherit
// its sharedUserId for all eternity. See: // its sharedUserId for all eternity. See:
@ -111,13 +123,15 @@ android {
// - https://issuetracker.google.com/issues/36924841 // - https://issuetracker.google.com/issues/36924841
// - https://issuetracker.google.com/issues/36905922 // - https://issuetracker.google.com/issues/36905922
"sharedUserId": "org.mozilla.firefox.sharedID", "sharedUserId": "org.mozilla.firefox.sharedID",
"deepLinkScheme": "fenix-beta" "deepLinkScheme": deepLinkSchemeValue
] ]
} }
fennecNightly releaseTemplate >> { fennecNightly releaseTemplate >> {
buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true" buildConfigField "boolean", "USE_RELEASE_VERSIONING", "true"
buildConfigField "String", "AMO_COLLECTION", "\"16f6e5d9a40448b8955db57ced6d75\"" buildConfigField "String", "AMO_COLLECTION", "\"16f6e5d9a40448b8955db57ced6d75\""
applicationIdSuffix ".fennec_aurora" applicationIdSuffix ".fennec_aurora"
def deepLinkSchemeValue = "fenix-nightly"
buildConfigField "String", "DEEP_LINK_SCHEME", "\"$deepLinkSchemeValue\""
manifestPlaceholders = [ manifestPlaceholders = [
// This release type is meant to replace Firefox (Release channel) and therefore needs to inherit // This release type is meant to replace Firefox (Release channel) and therefore needs to inherit
// its sharedUserId for all eternity. See: // its sharedUserId for all eternity. See:
@ -127,7 +141,7 @@ android {
// - https://issuetracker.google.com/issues/36924841 // - https://issuetracker.google.com/issues/36924841
// - https://issuetracker.google.com/issues/36905922 // - https://issuetracker.google.com/issues/36905922
"sharedUserId": "org.mozilla.fennec.sharedID", "sharedUserId": "org.mozilla.fennec.sharedID",
"deepLinkScheme": "fenix-nightly" "deepLinkScheme": deepLinkSchemeValue
] ]
} }
} }

@ -5,6 +5,7 @@
package org.mozilla.fenix.customtabs package org.mozilla.fenix.customtabs
import android.content.Context import android.content.Context
import android.content.Intent
import android.view.View import android.view.View
import androidx.navigation.fragment.navArgs import androidx.navigation.fragment.navArgs
import kotlinx.android.synthetic.main.component_browser_top_toolbar.* import kotlinx.android.synthetic.main.component_browser_top_toolbar.*
@ -28,13 +29,13 @@ import mozilla.components.lib.state.ext.consumeFrom
import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.base.feature.UserInteractionHandler
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import mozilla.components.support.ktx.android.arch.lifecycle.addObservers import mozilla.components.support.ktx.android.arch.lifecycle.addObservers
import org.mozilla.fenix.BuildConfig
import org.mozilla.fenix.FeatureFlags import org.mozilla.fenix.FeatureFlags
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.BaseBrowserFragment import org.mozilla.fenix.browser.BaseBrowserFragment
import org.mozilla.fenix.browser.CustomTabContextMenuCandidate import org.mozilla.fenix.browser.CustomTabContextMenuCandidate
import org.mozilla.fenix.browser.FenixSnackbarDelegate import org.mozilla.fenix.browser.FenixSnackbarDelegate
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
@ -85,15 +86,14 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
components.core.store, components.core.store,
customTabSessionId customTabSessionId
) { uri -> ) { uri ->
components.analytics.crashReporter.submitCaughtException(Exception("Unknown scheme error $uri")) val intent = Intent.parseUri("${BuildConfig.DEEP_LINK_SCHEME}://open?url=$uri", 0)
FenixSnackbar.make( if (intent.action == Intent.ACTION_VIEW) {
view = view.swipeRefresh, intent.addCategory(Intent.CATEGORY_BROWSABLE)
duration = FenixSnackbar.LENGTH_LONG, intent.component = null
isDisplayedWithBrowserToolbar = true intent.selector = null
).apply { intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
setText(resources.getString(R.string.unknown_scheme_error_message)) }
setAppropriateBackground(true) activity.startActivity(intent)
}.show()
}, },
owner = this, owner = this,
view = view view = view

Loading…
Cancel
Save