dont forward custom tab long presses

This commit is contained in:
Fabian Freund
2026-03-26 10:36:02 +01:00
parent 9e00151d24
commit b0c9d6c283
@@ -25,6 +25,7 @@ import mozilla.components.browser.state.action.LastAccessAction
import mozilla.components.browser.state.action.ReaderAction import mozilla.components.browser.state.action.ReaderAction
import mozilla.components.browser.state.action.TabListAction import mozilla.components.browser.state.action.TabListAction
import mozilla.components.browser.state.action.WebExtensionAction import mozilla.components.browser.state.action.WebExtensionAction
import mozilla.components.browser.state.selector.findCustomTab
import mozilla.components.browser.state.state.BrowserState import mozilla.components.browser.state.state.BrowserState
import mozilla.components.concept.engine.HitResult import mozilla.components.concept.engine.HitResult
import mozilla.components.feature.addons.logger import mozilla.components.feature.addons.logger
@@ -93,21 +94,25 @@ class FlutterEventMiddleware(private val flutterEvents: GeckoStateEvents) : Midd
} }
} }
is ContentAction.UpdateHitResultAction -> { is ContentAction.UpdateHitResultAction -> {
runOnUiThread { // Skip forwarding to Flutter for custom tab sessions (PWAs, TWAs),
flutterEvents.onLongPress( // as they handle context menus natively via ContextMenuFeature
EventSequence.next(), if (store.state.findCustomTab(action.sessionId) == null) {
action.sessionId, runOnUiThread {
when(val result = action.hitResult) { flutterEvents.onLongPress(
is HitResult.AUDIO -> AudioHitResult(result.src, result.title) EventSequence.next(),
is HitResult.EMAIL -> EmailHitResult(result.src) action.sessionId,
is HitResult.GEO -> GeoHitResult(result.src) when(val result = action.hitResult) {
is HitResult.IMAGE -> ImageHitResult(result.src, result.title) is HitResult.AUDIO -> AudioHitResult(result.src, result.title)
is HitResult.IMAGE_SRC -> ImageSrcHitResult(result.src, result.uri) is HitResult.EMAIL -> EmailHitResult(result.src)
is HitResult.PHONE -> PhoneHitResult(result.src) is HitResult.GEO -> GeoHitResult(result.src)
is HitResult.UNKNOWN -> UnknownHitResult(result.src, result.linkText) is HitResult.IMAGE -> ImageHitResult(result.src, result.title)
is HitResult.VIDEO -> VideoHitResult(result.src, result.title) is HitResult.IMAGE_SRC -> ImageSrcHitResult(result.src, result.uri)
} is HitResult.PHONE -> PhoneHitResult(result.src)
) { _ -> } is HitResult.UNKNOWN -> UnknownHitResult(result.src, result.linkText)
is HitResult.VIDEO -> VideoHitResult(result.src, result.title)
}
) { _ -> }
}
} }
} }
is ContentAction.AddFindResultAction -> { is ContentAction.AddFindResultAction -> {