2
0
mirror of https://github.com/fork-maintainers/iceraven-browser synced 2024-11-15 18:12:54 +00:00

Closes #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.
This commit is contained in:
Sebastian Kaspari 2019-07-12 19:15:47 +02:00
parent e4ff70c542
commit e4e0d45c1b

View File

@ -769,14 +769,22 @@ class BrowserFragment : Fragment(), BackHandler {
}
ToolbarMenu.Item.SaveToCollection -> showSaveToCollection()
ToolbarMenu.Item.OpenInFenix -> {
// To not get a "Display Already Acquired" error we need to force remove the engineView here
swipeRefresh?.removeView(engineView as View)
pendingOpenInBrowserIntent = Intent(context, IntentReceiverActivity::class.java)
pendingOpenInBrowserIntent?.action = Intent.ACTION_VIEW
getSessionById()?.customTabConfig = null
// Release the session from this view so that it can immediately be rendered by a different view
engineView.release()
// Strip the CustomTabConfig to turn this Session into a regular tab and then select it
getSessionById()?.let {
it.customTabConfig = null
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()
}
}