mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-23 10:15:41 +00:00
cf23208d84
Before the WebProgress event handlers started migrating to C++, the parent process would only receive WebProgress events after the child process had finished loading the WebProgressChild script. Now that listeners are registered much earlier (before the BrowserChild has finished setting up its frame scripts), the BrowserParent would receive WebProgress events that were heretofore not received unless the BrowserChild was *very* careful about when it sent the IPC messages. However, even while being very careful, the OnStateChange event handler would always fire events for initial about:blank loads that break a lot of unit tests. Before porting that event, we are now ensuring that the WebProgressChild has finished loading before the BrowserChild will send IPC messages for these events to the BrowserParent. Differential Revision: https://phabricator.services.mozilla.com/D30252 --HG-- extra : moz-landing-system : lando
36 lines
1.3 KiB
JavaScript
36 lines
1.3 KiB
JavaScript
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
/* eslint-env mozilla/frame-script */
|
|
|
|
const {WebProgressChild} = ChromeUtils.import("resource://gre/modules/WebProgressChild.jsm");
|
|
|
|
this.WebProgress = new WebProgressChild(this);
|
|
|
|
docShell.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIBrowserChild)
|
|
.beginSendingWebProgressEventsToParent();
|
|
|
|
addEventListener("DOMTitleChanged", function(aEvent) {
|
|
if (!aEvent.isTrusted || aEvent.target.defaultView != content)
|
|
return;
|
|
sendAsyncMessage("DOMTitleChanged", { title: content.document.title });
|
|
}, false);
|
|
|
|
addEventListener("ImageContentLoaded", function(aEvent) {
|
|
if (content.document instanceof Ci.nsIImageDocument) {
|
|
let req = content.document.imageRequest;
|
|
if (!req.image)
|
|
return;
|
|
sendAsyncMessage("ImageDocumentLoaded", { width: req.image.width,
|
|
height: req.image.height });
|
|
}
|
|
}, false);
|
|
|
|
// We may not get any responses to Browser:Init if the browser element
|
|
// is torn down too quickly.
|
|
var outerWindowID = docShell.outerWindowID;
|
|
var browsingContextId = docShell.browsingContext.id;
|
|
sendAsyncMessage("Browser:Init", {outerWindowID, browsingContextId});
|