mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-01 08:42:13 +00:00
Bug 868859 - Use CPOWs to pass browser.contentWindow and webProgress.DOMWindow in e10s. r=felipe
This commit is contained in:
parent
673f9e26ff
commit
c424960853
@ -29,12 +29,24 @@ let WebProgressListener = {
|
||||
};
|
||||
},
|
||||
|
||||
_setupObjects: function setupObjects(aWebProgress) {
|
||||
let win = docShell.QueryInterface(Ci.nsIInterfaceRequestor)
|
||||
.getInterface(Ci.nsIDOMWindow);
|
||||
return {
|
||||
contentWindow: win,
|
||||
// DOMWindow is not necessarily the content-window with subframes.
|
||||
DOMWindow: aWebProgress.DOMWindow
|
||||
};
|
||||
},
|
||||
|
||||
onStateChange: function onStateChange(aWebProgress, aRequest, aStateFlags, aStatus) {
|
||||
let json = this._setupJSON(aWebProgress, aRequest);
|
||||
let objects = this._setupObjects(aWebProgress);
|
||||
|
||||
json.stateFlags = aStateFlags;
|
||||
json.status = aStatus;
|
||||
|
||||
sendAsyncMessage("Content:StateChange", json);
|
||||
sendAsyncMessage("Content:StateChange", json, objects);
|
||||
},
|
||||
|
||||
onProgressChange: function onProgressChange(aWebProgress, aRequest, aCurSelf, aMaxSelf, aCurTotal, aMaxTotal) {
|
||||
@ -45,29 +57,35 @@ let WebProgressListener = {
|
||||
let charset = content.document.characterSet;
|
||||
|
||||
let json = this._setupJSON(aWebProgress, aRequest);
|
||||
let objects = this._setupObjects(aWebProgress);
|
||||
|
||||
json.documentURI = aWebProgress.DOMWindow.document.documentURIObject.spec;
|
||||
json.location = spec;
|
||||
json.canGoBack = docShell.canGoBack;
|
||||
json.canGoForward = docShell.canGoForward;
|
||||
json.charset = charset.toString();
|
||||
|
||||
sendAsyncMessage("Content:LocationChange", json);
|
||||
sendAsyncMessage("Content:LocationChange", json, objects);
|
||||
},
|
||||
|
||||
onStatusChange: function onStatusChange(aWebProgress, aRequest, aStatus, aMessage) {
|
||||
let json = this._setupJSON(aWebProgress, aRequest);
|
||||
let objects = this._setupObjects(aWebProgress);
|
||||
|
||||
json.status = aStatus;
|
||||
json.message = aMessage;
|
||||
|
||||
sendAsyncMessage("Content:StatusChange", json);
|
||||
sendAsyncMessage("Content:StatusChange", json, objects);
|
||||
},
|
||||
|
||||
onSecurityChange: function onSecurityChange(aWebProgress, aRequest, aState) {
|
||||
let json = this._setupJSON(aWebProgress, aRequest);
|
||||
let objects = this._setupObjects(aWebProgress);
|
||||
|
||||
json.state = aState;
|
||||
json.status = SecurityUI.getSSLStatusAsString();
|
||||
|
||||
sendAsyncMessage("Content:SecurityChange", json);
|
||||
sendAsyncMessage("Content:SecurityChange", json, objects);
|
||||
},
|
||||
|
||||
QueryInterface: function QueryInterface(aIID) {
|
||||
|
@ -62,6 +62,16 @@
|
||||
onget="return this._characterSet"
|
||||
readonly="true"/>
|
||||
|
||||
<field name="_contentWindow">null</field>
|
||||
|
||||
<property name="contentWindow"
|
||||
onget="return this._contentWindow"
|
||||
readonly="true"/>
|
||||
|
||||
<property name="contentDocument"
|
||||
onget="return this.contentWindow ? this.contentWindow.document : null"
|
||||
readonly="true"/>
|
||||
|
||||
<constructor>
|
||||
<![CDATA[
|
||||
this.messageManager.addMessageListener("DOMTitleChanged", this);
|
||||
|
@ -27,6 +27,7 @@ function RemoteWebProgress(browser)
|
||||
{
|
||||
this._browser = browser;
|
||||
this._isDocumentLoading = false;
|
||||
this._DOMWindow = null;
|
||||
this._isTopLevel = true;
|
||||
this._progressListeners = [];
|
||||
}
|
||||
@ -60,7 +61,7 @@ RemoteWebProgress.prototype = {
|
||||
},
|
||||
|
||||
get isLoadingDocument() { return this._isDocumentLoading },
|
||||
get DOMWindow() { return null; },
|
||||
get DOMWindow() { return this._DOMWindow; },
|
||||
get DOMWindowID() { return 0; },
|
||||
get isTopLevel() { return this._isTopLevel; },
|
||||
|
||||
@ -81,7 +82,9 @@ RemoteWebProgress.prototype = {
|
||||
},
|
||||
|
||||
receiveMessage: function WP_ReceiveMessage(aMessage) {
|
||||
this._DOMWindow = aMessage.objects.DOMWindow;
|
||||
this._isTopLevel = aMessage.json.isTopLevel;
|
||||
this._browser._contentWindow = aMessage.objects.contentWindow;
|
||||
|
||||
let req = this._uriSpec(aMessage.json.requestURI);
|
||||
switch (aMessage.name) {
|
||||
|
Loading…
Reference in New Issue
Block a user