[fenix] Closes https://github.com/mozilla-mobile/fenix/issues/3996: Remove workaround for opening custom tab in browser.

`EngineView` now allows releasing the `Session` so that it can be rendered by an
other `EngineView` instance.
pull/600/head
Sebastian Kaspari 5 years ago
parent 8f72063d99
commit 3e44741d8d

@ -769,14 +769,22 @@ class BrowserFragment : Fragment(), BackHandler {
} }
ToolbarMenu.Item.SaveToCollection -> showSaveToCollection() ToolbarMenu.Item.SaveToCollection -> showSaveToCollection()
ToolbarMenu.Item.OpenInFenix -> { ToolbarMenu.Item.OpenInFenix -> {
// To not get a "Display Already Acquired" error we need to force remove the engineView here // Release the session from this view so that it can immediately be rendered by a different view
swipeRefresh?.removeView(engineView as View) engineView.release()
pendingOpenInBrowserIntent = Intent(context, IntentReceiverActivity::class.java)
pendingOpenInBrowserIntent?.action = Intent.ACTION_VIEW // Strip the CustomTabConfig to turn this Session into a regular tab and then select it
getSessionById()?.customTabConfig = null
getSessionById()?.let { getSessionById()?.let {
it.customTabConfig = null
requireComponents.core.sessionManager.select(it) requireComponents.core.sessionManager.select(it)
} }
// Switch to the actual browser which should now display our new selected session
pendingOpenInBrowserIntent = Intent(context, IntentReceiverActivity::class.java).also {
it.action = Intent.ACTION_VIEW
it.flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
// Close this activity since it is no longer displaying any session
activity?.finish() activity?.finish()
} }
} }

Loading…
Cancel
Save