forked from mirrors/gecko-dev
Backed out changeset eae555c11f25 (bug 1510569) Backed out changeset 2fb8938d16db (bug 1510569) Backed out changeset b480af862022 (bug 1510569) Backed out changeset 642cd6323cdc (bug 1510569)
88 lines
2.7 KiB
JavaScript
88 lines
2.7 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 */
|
|
|
|
ChromeUtils.defineModuleGetter(
|
|
this,
|
|
"BrowserUtils",
|
|
"resource://gre/modules/BrowserUtils.jsm"
|
|
);
|
|
|
|
const { WebProgressChild } = ChromeUtils.import(
|
|
"resource://gre/modules/WebProgressChild.jsm"
|
|
);
|
|
|
|
this.WebProgress = new WebProgressChild(this);
|
|
|
|
try {
|
|
docShell
|
|
.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIBrowserChild)
|
|
.beginSendingWebProgressEventsToParent();
|
|
} catch (e) {
|
|
// In responsive design mode, we do not have a BrowserChild for the in-parent
|
|
// document.
|
|
}
|
|
|
|
// This message is used to measure content process startup performance in Talos
|
|
// tests.
|
|
sendAsyncMessage("Content:BrowserChildReady", {
|
|
time: Services.telemetry.msSystemNow(),
|
|
});
|
|
|
|
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
|
|
);
|
|
|
|
// This is here for now until we find a better way of forcing an about:blank load
|
|
// with a particular principal that doesn't involve the message manager. We can't
|
|
// do this with JS Window Actors for now because JS Window Actors are tied to the
|
|
// document principals themselves, so forcing the load with a new principal is
|
|
// self-destructive in that case.
|
|
addMessageListener("BrowserElement:CreateAboutBlank", message => {
|
|
if (!content.document || content.document.documentURI != "about:blank") {
|
|
throw new Error("Can't create a content viewer unless on about:blank");
|
|
}
|
|
let { principal, storagePrincipal } = message.data;
|
|
principal = BrowserUtils.principalWithMatchingOA(
|
|
principal,
|
|
content.document.nodePrincipal
|
|
);
|
|
storagePrincipal = BrowserUtils.principalWithMatchingOA(
|
|
storagePrincipal,
|
|
content.document.effectiveStoragePrincipal
|
|
);
|
|
docShell.createAboutBlankContentViewer(principal, storagePrincipal);
|
|
});
|
|
|
|
// 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 });
|