mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:30:27 +00:00
f3297ff565
- Bug 1161802 part 1 - Add FullscreenChanged callback in WidgetListener. r=roc (caee485f4) - Bug 1058712, e10s, support for copy image command, r=ehsan,mconley (42d1bcc2c) - Bug 1122090 - Make ContentHelper take a LayoutDeviceIntPoint instead of an nsIntPoint. r=botond (21588cadb) - Bug 1122090 - Send the allowed behaviour notification to APZ for touch blocks when touch-action is enabled. r=botond (5bb0aad4a) - remove unneeded include (b77797920) - Add wheel transaction support to APZ. (bug 1142866 part 1, r=kats) (a4ed2150a) - End APZ wheel transactions when the mouse moves out of frame. (bug 1142866 part 2, r=kats,botond) (b26b0eb89) - Add APZ support for test.mousescroll callbacks. (bug 1142866 part 3, r=kats) (424ef3ad7) - Add helper for applying async transforms to widget input events. (bug 1143567 part 1, r=kats) (221cf7b02) - Ensure input events account for APZ transforms on Gtk. (bug 1143567 part 2, r=kats) (a62991076) - Allow synthetic input events to be dispatched asynchronously. (bug 1146243, r=kats) (0878aac4e) - Bug 1120300 - Export WritingModes.h as mozilla/WritingModes.h. r=jfkthame (67838dec2) - Bug 1075670 - Make event.screen[XY] work in content processes (r=smaug,kats,tn,joshmoz) (7c800e2a1) - Bug 1150563 - Intermittent test_compartments.js | test_measure - [test_measure : 125] At least 10ms counted for built-in statistics (0) - false == true;r=yoric (72ce9c7fc) - Bug 1143847 - Fix bogus asserts in x64 Assembler::finish(). r=sunfish (36aecaf48) - pointer style (a1a5a7b0f) - Bug 1148232 - OdinMonkey: Mark x86 disassembler code as MOZ_COLD and use MOZ_RELEASE_ASSERT r=luke (346cf1fdd) - Bug 1148232 - OdinMonkey: Update an asm.js error message r=luke (98c72b0b1) - Bug 1148232 - OdinMonkey: Update tests to avoid using legacy syntax. r=luke (d212510f3) - Bug 1148232 - OdinMonkey: Misc CheckArrayAccess cleanups r=luke (e5cda1cf0) - pointer style (23135ba24) - Bug 1148232 - OdinMonkey: Always put asm.js heap alignment masks just before their accesses r=luke (d604adf5d) - pointer style (9a5d58741) - Bug 1148232 - IonMonkey: Delete unused code r=luke (ea5bc5edc) - pointer style (73be379e1) - Bug 1143704 part 1 - Make Emit1/Emit2 return bool instead of ptrdiff_t. r=luke (2ca42caa9) - pointer style (eb30078f0) - Bug 1143704 part 2 - Make Emit3/EmitCall/EmitBackPatchOp return bool instead of ptrdiff_t. r=jorendorff (7275c56af) - Bug 1143704 part 3 - Make EmitLoopHead return bool instead of ptrdiff_t. r=shu (aff098096) - Bug 1143704 part 4 - Turn Emit1 into a BytecodeEmitter method. r=bhackett (5ca0356ba) - Bug 1143704 part 5 - Add a cx member to BytecodeEmitter. r=Waldo (8ce42c388) - Bug 1143704 part 6 - Move more functions into BytecodeEmitter. r=efaust (b26f60b2f) - pointer style (39e0e76ab) - Bug 1143704 part 7 - Move more functions into BytecodeEmitter. r=bhackett (7397bc2e5) - pointer style (f08664ab1) - Bug 1143704 part 8 - Move more functions into BytecodeEmitter. r=luke (2b0411545) - pointer style (5042217ea) - Bug 1143704 part 9 - Move more functions into BytecodeEmitter. r=shu (97501236a) - pointer style (4248e54fa) - Bug 1143704 part 10 - Move more functions into BytecodeEmitter. r=efaust (cd1fcb6a4) - pointer style (06026238e) - Bug 1143704 part 11 - Move more functions into BytecodeEmitter. r=jorendorff (300cdd416) - Bug 1145491 part 1. Only do the fast path for JSOP_BINDGNAME when the script doesn't have a polluted global. r=luke,jandem (75d663d20) - Bug 1145491 part 2. Only do the fast path for JSOP_GETGNAME when the script doesn't have a polluted global. r=luke,jandem (776bb0b37) - Bug 1145491 part 3. Only do the fast path for JSOP_SETGNAME and JSOP_STRICTSETGNAME when the script doesn't have a polluted global. r=luke,jandem (dfc5781e2) - Bug 537013 - Make the find bar exist on a per-tab basis. r=dao (cf361fd57) - Bug 1145491 part 4. Emit JSOP_IMPLICITTHIS for JSOP_GETGNAME as well, because otherwise bareword calls in polluted-global scripts won't work right. r=luk (2a4c829e2) - Bug 1145491 part 5. Fix up various other places that check for JSOP_GET/SETNAME without checking for the GNAME versions too. r=luke (08ebda6b5) - pointer style (dbdd1393a) - Bug 1145491 part 6. Fix script cloning to propagate the polluted-global-scope state to the lambda templates in the script. r=luke (a0c85b629) - pointer style (906b885ff) - Bug 1145491 part 7. Stop checking compileAndGo before emitting GNAME ops. r=luke (33e64a432)
421 lines
15 KiB
XML
421 lines
15 KiB
XML
<?xml version="1.0"?>
|
|
|
|
<!-- 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/. -->
|
|
|
|
<bindings id="firefoxBrowserBindings"
|
|
xmlns="http://www.mozilla.org/xbl"
|
|
xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
|
|
|
<binding id="remote-browser" extends="chrome://global/content/bindings/browser.xml#browser">
|
|
|
|
<implementation type="application/javascript"
|
|
implements="nsIObserver, nsIDOMEventListener, nsIMessageListener, nsIRemoteBrowser">
|
|
|
|
<field name="_securityUI">null</field>
|
|
|
|
<property name="securityUI"
|
|
readonly="true">
|
|
<getter><![CDATA[
|
|
if (!this._securityUI) {
|
|
// Don't attempt to create the remote web progress if the
|
|
// messageManager has already gone away
|
|
if (!this.messageManager)
|
|
return null;
|
|
|
|
let jsm = "resource://gre/modules/RemoteSecurityUI.jsm";
|
|
let RemoteSecurityUI = Components.utils.import(jsm, {}).RemoteSecurityUI;
|
|
this._securityUI = new RemoteSecurityUI();
|
|
}
|
|
|
|
// We want to double-wrap the JS implemented interface, so that QI and instanceof works.
|
|
var ptr = Cc["@mozilla.org/supports-interface-pointer;1"].
|
|
createInstance(Ci.nsISupportsInterfacePointer);
|
|
ptr.data = this._securityUI;
|
|
return ptr.data.QueryInterface(Ci.nsISecureBrowserUI);
|
|
]]></getter>
|
|
</property>
|
|
|
|
<method name="adjustPriority">
|
|
<parameter name="adjustment"/>
|
|
<body><![CDATA[
|
|
this.messageManager.sendAsyncMessage("NetworkPrioritizer:AdjustPriority",
|
|
{adjustment: adjustment});
|
|
]]></body>
|
|
</method>
|
|
|
|
<field name="_controller">null</field>
|
|
|
|
<field name="_remoteWebNavigation">null</field>
|
|
|
|
<property name="webNavigation"
|
|
onget="return this._remoteWebNavigation;"
|
|
readonly="true"/>
|
|
|
|
<field name="_remoteWebProgress">null</field>
|
|
|
|
<property name="webProgress" readonly="true">
|
|
<getter>
|
|
<![CDATA[
|
|
if (!this._remoteWebProgress) {
|
|
// Don't attempt to create the remote web progress if the
|
|
// messageManager has already gone away
|
|
if (!this.messageManager)
|
|
return null;
|
|
|
|
let jsm = "resource://gre/modules/RemoteWebProgress.jsm";
|
|
let { RemoteWebProgressManager } = Cu.import(jsm, {});
|
|
this._remoteWebProgressManager = new RemoteWebProgressManager(this);
|
|
this._remoteWebProgress = this._remoteWebProgressManager.topLevelWebProgress;
|
|
}
|
|
return this._remoteWebProgress;
|
|
]]>
|
|
</getter>
|
|
</property>
|
|
|
|
<field name="_remoteFinder">null</field>
|
|
|
|
<property name="finder" readonly="true">
|
|
<getter><![CDATA[
|
|
if (!this._remoteFinder) {
|
|
// Don't attempt to create the remote web progress if the
|
|
// messageManager has already gone away
|
|
if (!this.messageManager)
|
|
return null;
|
|
|
|
let jsm = "resource://gre/modules/RemoteFinder.jsm";
|
|
let { RemoteFinder } = Cu.import(jsm, {});
|
|
this._remoteFinder = new RemoteFinder(this);
|
|
}
|
|
return this._remoteFinder;
|
|
]]></getter>
|
|
</property>
|
|
|
|
<field name="_documentURI">null</field>
|
|
|
|
<field name="_documentContentType">null</field>
|
|
|
|
<!--
|
|
Used by session restore to ensure that currentURI is set so
|
|
that switch-to-tab works before the tab is fully
|
|
restored. This function also invokes onLocationChanged
|
|
listeners in tabbrowser.xml.
|
|
-->
|
|
<method name="_setCurrentURI">
|
|
<parameter name="aURI"/>
|
|
<body><![CDATA[
|
|
this._remoteWebProgressManager.setCurrentURI(aURI);
|
|
]]></body>
|
|
</method>
|
|
|
|
<property name="documentURI"
|
|
onget="return this._documentURI;"
|
|
readonly="true"/>
|
|
|
|
<property name="documentContentType"
|
|
onget="return this._documentContentType;"
|
|
readonly="true"/>
|
|
|
|
<field name="_contentTitle">""</field>
|
|
|
|
<property name="contentTitle"
|
|
onget="return this._contentTitle"
|
|
readonly="true"/>
|
|
|
|
<field name="_characterSet">""</field>
|
|
|
|
<property name="characterSet"
|
|
onget="return this._characterSet">
|
|
<setter><![CDATA[
|
|
this.messageManager.sendAsyncMessage("UpdateCharacterSet", {value: val});
|
|
this._characterSet = val;
|
|
]]></setter>
|
|
</property>
|
|
|
|
<field name="_mayEnableCharacterEncodingMenu">null</field>
|
|
|
|
<property name="mayEnableCharacterEncodingMenu"
|
|
onget="return this._mayEnableCharacterEncodingMenu;"
|
|
readonly="true"/>
|
|
|
|
<field name="_contentWindow">null</field>
|
|
|
|
<property name="contentWindow"
|
|
onget="return null"
|
|
readonly="true"/>
|
|
|
|
<property name="contentWindowAsCPOW"
|
|
onget="return this._contentWindow"
|
|
readonly="true"/>
|
|
|
|
<property name="contentDocument"
|
|
onget="return null"
|
|
readonly="true"/>
|
|
|
|
<field name="_contentPrincipal">null</field>
|
|
|
|
<property name="contentPrincipal"
|
|
onget="return this._contentPrincipal"
|
|
readonly="true"/>
|
|
|
|
<property name="contentDocumentAsCPOW"
|
|
onget="return this.contentWindowAsCPOW ? this.contentWindowAsCPOW.document : null"
|
|
readonly="true"/>
|
|
|
|
<field name="_syncHandler">null</field>
|
|
|
|
<property name="syncHandler"
|
|
onget="return this._syncHandler"
|
|
readonly="true"/>
|
|
|
|
<field name="_imageDocument">null</field>
|
|
|
|
<property name="imageDocument"
|
|
onget="return this._imageDocument"
|
|
readonly="true"/>
|
|
|
|
<field name="_fullZoom">1</field>
|
|
<property name="fullZoom">
|
|
<getter><![CDATA[
|
|
return this._fullZoom;
|
|
]]></getter>
|
|
<setter><![CDATA[
|
|
this._fullZoom = val;
|
|
this.messageManager.sendAsyncMessage("FullZoom", {value: val});
|
|
]]></setter>
|
|
</property>
|
|
|
|
<field name="_textZoom">1</field>
|
|
<property name="textZoom">
|
|
<getter><![CDATA[
|
|
return this._textZoom;
|
|
]]></getter>
|
|
<setter><![CDATA[
|
|
this._textZoom = val;
|
|
this.messageManager.sendAsyncMessage("TextZoom", {value: val});
|
|
]]></setter>
|
|
</property>
|
|
|
|
<field name="_isSyntheticDocument">false</field>
|
|
<property name="isSyntheticDocument">
|
|
<getter><![CDATA[
|
|
return this._isSyntheticDocument;
|
|
]]></getter>
|
|
</property>
|
|
|
|
<field name="_outerWindowID">null</field>
|
|
<property name="outerWindowID"
|
|
onget="return this._outerWindowID"
|
|
readonly="true"/>
|
|
|
|
<field name="_innerWindowID">null</field>
|
|
<property name="innerWindowID">
|
|
<getter><![CDATA[
|
|
return this._innerWindowID;
|
|
]]></getter>
|
|
</property>
|
|
|
|
<property name="autoCompletePopup"
|
|
onget="return document.getElementById(this.getAttribute('autocompletepopup'))"
|
|
readonly="true"/>
|
|
|
|
<property name="docShellIsActive">
|
|
<getter>
|
|
<![CDATA[
|
|
throw new Error("not supported");
|
|
]]>
|
|
</getter>
|
|
<setter>
|
|
<![CDATA[
|
|
let {frameLoader} = this.QueryInterface(Ci.nsIFrameLoaderOwner);
|
|
frameLoader.tabParent.setIsDocShellActive(val);
|
|
return val;
|
|
]]>
|
|
</setter>
|
|
</property>
|
|
|
|
<field name="mDestroyed">false</field>
|
|
|
|
<constructor>
|
|
<![CDATA[
|
|
/*
|
|
* Don't try to send messages from this function. The message manager for
|
|
* the <browser> element may not be initialized yet.
|
|
*/
|
|
|
|
let jsm = "resource://gre/modules/RemoteWebNavigation.jsm";
|
|
let RemoteWebNavigation = Cu.import(jsm, {}).RemoteWebNavigation;
|
|
this._remoteWebNavigation = new RemoteWebNavigation(this);
|
|
|
|
this.messageManager.addMessageListener("Browser:Init", this);
|
|
this.messageManager.addMessageListener("DOMTitleChanged", this);
|
|
this.messageManager.addMessageListener("ImageDocumentLoaded", this);
|
|
this.messageManager.addMessageListener("SetSyncHandler", this);
|
|
this.messageManager.addMessageListener("DocumentInserted", this);
|
|
this.messageManager.addMessageListener("FullZoomChange", this);
|
|
this.messageManager.addMessageListener("TextZoomChange", this);
|
|
this.messageManager.addMessageListener("ZoomChangeUsingMouseWheel", this);
|
|
this.messageManager.addMessageListener("DOMFullscreen:RequestExit", this);
|
|
this.messageManager.addMessageListener("DOMFullscreen:RequestRollback", this);
|
|
this.messageManager.loadFrameScript("chrome://global/content/browser-child.js", true);
|
|
|
|
if (this.hasAttribute("selectmenulist")) {
|
|
this.messageManager.addMessageListener("Forms:ShowDropDown", this);
|
|
this.messageManager.addMessageListener("Forms:HideDropDown", this);
|
|
this.messageManager.loadFrameScript("chrome://global/content/select-child.js", true);
|
|
}
|
|
|
|
jsm = "resource://gre/modules/RemoteController.jsm";
|
|
let RemoteController = Components.utils.import(jsm, {}).RemoteController;
|
|
this._controller = new RemoteController(this);
|
|
this.controllers.appendController(this._controller);
|
|
|
|
Services.obs.addObserver(this, "ask-children-to-exit-fullscreen", false);
|
|
]]>
|
|
</constructor>
|
|
|
|
<destructor>
|
|
<![CDATA[
|
|
this.destroy();
|
|
]]>
|
|
</destructor>
|
|
|
|
<!-- This is necessary because the destructor doesn't always get called when
|
|
we are removed from a tabbrowser. This will be explicitly called by tabbrowser -->
|
|
<method name="destroy">
|
|
<body><![CDATA[
|
|
if (this.mDestroyed)
|
|
return;
|
|
this.mDestroyed = true;
|
|
|
|
this.controllers.removeController(this._controller);
|
|
|
|
Services.obs.removeObserver(this, "ask-children-to-exit-fullscreen");
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="receiveMessage">
|
|
<parameter name="aMessage"/>
|
|
<body><![CDATA[
|
|
let data = aMessage.data;
|
|
switch (aMessage.name) {
|
|
case "Browser:Init":
|
|
this._outerWindowID = data.outerWindowID;
|
|
let result = {};
|
|
result.useGlobalHistory = !this.hasAttribute("disableglobalhistory");
|
|
result.initPopup = this.autoCompletePopup != null;
|
|
return result;
|
|
break;
|
|
case "DOMTitleChanged":
|
|
this._contentTitle = data.title;
|
|
break;
|
|
case "ImageDocumentLoaded":
|
|
this._imageDocument = {
|
|
width: data.width,
|
|
height: data.height
|
|
};
|
|
break;
|
|
|
|
case "SetSyncHandler":
|
|
this._syncHandler = aMessage.objects.handler;
|
|
break;
|
|
|
|
case "Forms:ShowDropDown": {
|
|
Cu.import("resource://gre/modules/SelectParentHelper.jsm");
|
|
let menulist = document.getElementById(this.getAttribute("selectmenulist"));
|
|
SelectParentHelper.populate(menulist, data.options, data.selectedIndex);
|
|
SelectParentHelper.open(this, menulist, data.rect);
|
|
break;
|
|
}
|
|
|
|
case "DocumentInserted":
|
|
this._isSyntheticDocument = data.synthetic;
|
|
break;
|
|
|
|
case "FullZoomChange": {
|
|
this._fullZoom = data.value;
|
|
let event = document.createEvent("Events");
|
|
event.initEvent("FullZoomChange", true, false);
|
|
this.dispatchEvent(event);
|
|
break;
|
|
}
|
|
|
|
case "TextZoomChange": {
|
|
this._textZoom = data.value;
|
|
let event = document.createEvent("Events");
|
|
event.initEvent("TextZoomChange", true, false);
|
|
this.dispatchEvent(event);
|
|
break;
|
|
}
|
|
|
|
case "ZoomChangeUsingMouseWheel": {
|
|
let event = document.createEvent("Events");
|
|
event.initEvent("ZoomChangeUsingMouseWheel", true, false);
|
|
this.dispatchEvent(event);
|
|
break;
|
|
}
|
|
|
|
case "Forms:HideDropDown": {
|
|
Cu.import("resource://gre/modules/SelectParentHelper.jsm");
|
|
let menulist = document.getElementById(this.getAttribute("selectmenulist"));
|
|
SelectParentHelper.hide(menulist);
|
|
break;
|
|
}
|
|
|
|
case "DOMFullscreen:RequestExit": {
|
|
let windowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIDOMWindowUtils);
|
|
windowUtils.exitFullscreen();
|
|
break;
|
|
}
|
|
|
|
case "DOMFullscreen:RequestRollback": {
|
|
let windowUtils = window.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIDOMWindowUtils);
|
|
windowUtils.remoteFrameFullscreenReverted();
|
|
break;
|
|
}
|
|
|
|
default:
|
|
// Delegate to browser.xml.
|
|
return this._receiveMessage(aMessage);
|
|
break;
|
|
}
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="observe">
|
|
<parameter name="aSubject"/>
|
|
<parameter name="aTopic"/>
|
|
<parameter name="aData"/>
|
|
<body><![CDATA[
|
|
if (aTopic == "ask-children-to-exit-fullscreen") {
|
|
if (aSubject == window.document) {
|
|
this.messageManager.sendAsyncMessage("DOMFullscreen:ChildrenMustExit");
|
|
}
|
|
}
|
|
]]></body>
|
|
</method>
|
|
|
|
<method name="enableDisableCommands">
|
|
<parameter name="aAction"/>
|
|
<parameter name="aEnabledLength"/>
|
|
<parameter name="aEnabledCommands"/>
|
|
<parameter name="aDisabledLength"/>
|
|
<parameter name="aDisabledCommands"/>
|
|
<body>
|
|
if (this._controller) {
|
|
this._controller.enableDisableCommands(aAction,
|
|
aEnabledLength, aEnabledCommands,
|
|
aDisabledLength, aDisabledCommands);
|
|
}
|
|
</body>
|
|
</method>
|
|
|
|
</implementation>
|
|
|
|
</binding>
|
|
|
|
</bindings>
|