Closed Bug 1450856 Opened 2 years ago Closed 2 years ago

ContentDelegate.onExternalResponse doesn't work under non-e10s

Categories

(GeckoView :: General, enhancement, P1)

All
Android
enhancement

Tracking

(firefox-esr52 wontfix, firefox59 wontfix, firefox60 wontfix, firefox61 fixed)

RESOLVED FIXED
mozilla61
Tracking Status
firefox-esr52 --- wontfix
firefox59 --- wontfix
firefox60 --- wontfix
firefox61 --- fixed

People

(Reporter: jchen, Assigned: snorp)

References

Details

(Whiteboard: [geckoview:klar])

Attachments

(1 file)

Assignee: nobody → snorp
Comment on attachment 8972954 [details]
Bug 1450856 - Fix PromptDelegate.onExternalResponse() for non-e10s

https://reviewboard.mozilla.org/r/241526/#review247332

::: mobile/android/components/geckoview/GeckoViewExternalAppService.js:28
(Diff revision 1)
>  
>  ExternalAppService.prototype = {
>    classID: Components.ID("{a89eeec6-6608-42ee-a4f8-04d425992f45}"),
>    QueryInterface: ChromeUtils.generateQI([Ci.nsIExternalHelperAppService]),
>  
> +  getTopChromeWindow(context) {

We might already support this in GeckoViewUtils, if not we should move it there.

::: mobile/android/components/geckoview/GeckoViewExternalAppService.js:45
(Diff revision 1)
>      debug `doContent: uri=${channel.URI.displaySpec}
>                        contentType=${channel.contentType}`;
>  
> -    EventDispatcher.forMessageManager(mm).sendRequest({
> +    let dispatcher;
> +    if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_DEFAULT) {
> +      dispatcher = EventDispatcher.for(this.getTopChromeWindow(context));

Same as above, should be in GeckoViewUtils.
Comment on attachment 8972954 [details]
Bug 1450856 - Fix PromptDelegate.onExternalResponse() for non-e10s

https://reviewboard.mozilla.org/r/241526/#review247348

::: mobile/android/components/geckoview/GeckoViewExternalAppService.js:35
(Diff revision 3)
> +    if (GeckoViewUtils.IS_PARENT_PROCESS) {
> +      dispatcher = EventDispatcher.for(GeckoViewUtils.getChromeWindow(context));
> +    } else {
> +      const mm = context.QueryInterface(Ci.nsIDocShell).tabChild.messageManager;
> +      dispatcher = EventDispatcher.forMessageManager(mm);
> +    }

I think you can use GeckoViewUtils.getDispatcherForWindow for this?
Comment on attachment 8972954 [details]
Bug 1450856 - Fix PromptDelegate.onExternalResponse() for non-e10s

https://reviewboard.mozilla.org/r/241526/#review247384
Attachment #8972954 - Flags: review?(esawin) → review+
Pushed by jwillcox@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/7d21cb6d11c2
Fix PromptDelegate.onExternalResponse() for non-e10s r=esawin
https://hg.mozilla.org/mozilla-central/rev/7d21cb6d11c2
Status: NEW → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 61
Product: Firefox for Android → GeckoView
Target Milestone: Firefox 61 → mozilla61
You need to log in before you can comment on or make changes to this bug.