mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
3151ea13e6
--HG-- rename : content/base/src/Attr.cpp => dom/base/Attr.cpp rename : content/base/src/Attr.h => dom/base/Attr.h rename : content/base/src/AutocompleteFieldList.h => dom/base/AutocompleteFieldList.h rename : content/base/public/BlobSet.h => dom/base/BlobSet.h rename : content/base/public/CORSMode.h => dom/base/CORSMode.h rename : content/base/src/ChildIterator.cpp => dom/base/ChildIterator.cpp rename : content/base/src/ChildIterator.h => dom/base/ChildIterator.h rename : content/base/src/Comment.cpp => dom/base/Comment.cpp rename : content/base/src/Comment.h => dom/base/Comment.h rename : content/base/src/DOMImplementation.cpp => dom/base/DOMImplementation.cpp rename : content/base/src/DOMImplementation.h => dom/base/DOMImplementation.h rename : content/base/src/DOMMatrix.cpp => dom/base/DOMMatrix.cpp rename : content/base/src/DOMMatrix.h => dom/base/DOMMatrix.h rename : content/base/src/DOMParser.cpp => dom/base/DOMParser.cpp rename : content/base/src/DOMParser.h => dom/base/DOMParser.h rename : content/base/src/DOMPoint.cpp => dom/base/DOMPoint.cpp rename : content/base/src/DOMPoint.h => dom/base/DOMPoint.h rename : content/base/src/DOMQuad.cpp => dom/base/DOMQuad.cpp rename : content/base/src/DOMQuad.h => dom/base/DOMQuad.h rename : content/base/src/DOMRect.cpp => dom/base/DOMRect.cpp rename : content/base/src/DOMRect.h => dom/base/DOMRect.h rename : content/base/src/DOMStringList.cpp => dom/base/DOMStringList.cpp rename : content/base/src/DOMStringList.h => dom/base/DOMStringList.h rename : content/base/src/DirectionalityUtils.cpp => dom/base/DirectionalityUtils.cpp rename : content/base/public/DirectionalityUtils.h => dom/base/DirectionalityUtils.h rename : content/base/src/DocumentFragment.cpp => dom/base/DocumentFragment.cpp rename : content/base/src/DocumentFragment.h => dom/base/DocumentFragment.h rename : content/base/src/DocumentType.cpp => dom/base/DocumentType.cpp rename : content/base/src/DocumentType.h => dom/base/DocumentType.h rename : content/base/src/Element.cpp => dom/base/Element.cpp rename : content/base/public/Element.h => dom/base/Element.h rename : content/base/public/ElementInlines.h => dom/base/ElementInlines.h rename : content/base/src/EventSource.cpp => dom/base/EventSource.cpp rename : content/base/src/EventSource.h => dom/base/EventSource.h rename : content/base/src/FeedWriterEnabled.h => dom/base/FeedWriterEnabled.h rename : content/base/src/File.cpp => dom/base/File.cpp rename : content/base/public/File.h => dom/base/File.h rename : content/base/src/FileIOObject.cpp => dom/base/FileIOObject.cpp rename : content/base/src/FileIOObject.h => dom/base/FileIOObject.h rename : content/base/src/FragmentOrElement.cpp => dom/base/FragmentOrElement.cpp rename : content/base/public/FragmentOrElement.h => dom/base/FragmentOrElement.h rename : content/base/public/FromParser.h => dom/base/FromParser.h rename : content/base/public/HTMLSplitOnSpacesTokenizer.h => dom/base/HTMLSplitOnSpacesTokenizer.h rename : content/base/src/ImportManager.cpp => dom/base/ImportManager.cpp rename : content/base/src/ImportManager.h => dom/base/ImportManager.h rename : content/base/src/Link.cpp => dom/base/Link.cpp rename : content/base/src/Link.h => dom/base/Link.h rename : content/base/src/MultipartFileImpl.cpp => dom/base/MultipartFileImpl.cpp rename : content/base/src/MultipartFileImpl.h => dom/base/MultipartFileImpl.h rename : content/base/src/NodeIterator.cpp => dom/base/NodeIterator.cpp rename : content/base/src/NodeIterator.h => dom/base/NodeIterator.h rename : content/base/src/ResponsiveImageSelector.cpp => dom/base/ResponsiveImageSelector.cpp rename : content/base/src/ResponsiveImageSelector.h => dom/base/ResponsiveImageSelector.h rename : content/base/src/ShadowRoot.cpp => dom/base/ShadowRoot.cpp rename : content/base/src/ShadowRoot.h => dom/base/ShadowRoot.h rename : content/base/src/StyleSheetList.cpp => dom/base/StyleSheetList.cpp rename : content/base/src/StyleSheetList.h => dom/base/StyleSheetList.h rename : content/base/src/Text.cpp => dom/base/Text.cpp rename : content/base/src/Text.h => dom/base/Text.h rename : content/base/src/ThirdPartyUtil.cpp => dom/base/ThirdPartyUtil.cpp rename : content/base/src/ThirdPartyUtil.h => dom/base/ThirdPartyUtil.h rename : content/base/src/TreeWalker.cpp => dom/base/TreeWalker.cpp rename : content/base/src/TreeWalker.h => dom/base/TreeWalker.h rename : content/base/src/WebSocket.cpp => dom/base/WebSocket.cpp rename : content/base/src/WebSocket.h => dom/base/WebSocket.h rename : content/base/src/contentAreaDropListener.js => dom/base/contentAreaDropListener.js rename : content/base/src/contentAreaDropListener.manifest => dom/base/contentAreaDropListener.manifest rename : content/base/crashtests/1024428-1.html => dom/base/crashtests/1024428-1.html rename : content/base/crashtests/1026714.html => dom/base/crashtests/1026714.html rename : content/base/crashtests/1027461-1.html => dom/base/crashtests/1027461-1.html rename : content/base/crashtests/1027461-inner.xul => dom/base/crashtests/1027461-inner.xul rename : content/base/crashtests/116848-1.html => dom/base/crashtests/116848-1.html rename : content/base/crashtests/149320-1.html => dom/base/crashtests/149320-1.html rename : content/base/crashtests/205225-1.html => dom/base/crashtests/205225-1.html rename : content/base/crashtests/231475-1.html => dom/base/crashtests/231475-1.html rename : content/base/crashtests/293388-1.html => dom/base/crashtests/293388-1.html rename : content/base/crashtests/308120-1.xul => dom/base/crashtests/308120-1.xul rename : content/base/crashtests/324871-1.html => dom/base/crashtests/324871-1.html rename : content/base/crashtests/325730-1.html => dom/base/crashtests/325730-1.html rename : content/base/crashtests/326618-1.html => dom/base/crashtests/326618-1.html rename : content/base/crashtests/326646-1.html => dom/base/crashtests/326646-1.html rename : content/base/crashtests/326778-1.xul => dom/base/crashtests/326778-1.xul rename : content/base/crashtests/326865-1.html => dom/base/crashtests/326865-1.html rename : content/base/crashtests/327694.html => dom/base/crashtests/327694.html rename : content/base/crashtests/330925-1.xhtml => dom/base/crashtests/330925-1.xhtml rename : content/base/crashtests/336381-1.xhtml => dom/base/crashtests/336381-1.xhtml rename : content/base/crashtests/336715-1.xhtml => dom/base/crashtests/336715-1.xhtml rename : content/base/crashtests/338391-1.xhtml => dom/base/crashtests/338391-1.xhtml rename : content/base/crashtests/340733-1.html => dom/base/crashtests/340733-1.html rename : content/base/crashtests/343730-1.xhtml => dom/base/crashtests/343730-1.xhtml rename : content/base/crashtests/343850-1.xhtml => dom/base/crashtests/343850-1.xhtml rename : content/base/crashtests/343889-1.html => dom/base/crashtests/343889-1.html rename : content/base/crashtests/344434-1.xhtml => dom/base/crashtests/344434-1.xhtml rename : content/base/crashtests/344882-1.html => dom/base/crashtests/344882-1.html rename : content/base/crashtests/345837-1.xhtml => dom/base/crashtests/345837-1.xhtml rename : content/base/crashtests/348049-1.xhtml => dom/base/crashtests/348049-1.xhtml rename : content/base/crashtests/349355-1.html => dom/base/crashtests/349355-1.html rename : content/base/crashtests/354645-1.xul => dom/base/crashtests/354645-1.xul rename : content/base/crashtests/360599-1.html => dom/base/crashtests/360599-1.html rename : content/base/crashtests/366200-1.xhtml => dom/base/crashtests/366200-1.xhtml rename : content/base/crashtests/371466-1.xhtml => dom/base/crashtests/371466-1.xhtml rename : content/base/crashtests/377360-1.xhtml => dom/base/crashtests/377360-1.xhtml rename : content/base/crashtests/377960-1.html => dom/base/crashtests/377960-1.html rename : content/base/crashtests/377960-2.html => dom/base/crashtests/377960-2.html rename : content/base/crashtests/384663-1-inner.xul => dom/base/crashtests/384663-1-inner.xul rename : content/base/crashtests/384663-1.html => dom/base/crashtests/384663-1.html rename : content/base/crashtests/386000-1.html => dom/base/crashtests/386000-1.html rename : content/base/crashtests/386794-1.html => dom/base/crashtests/386794-1.html rename : content/base/crashtests/387460-1-inner.xhtml => dom/base/crashtests/387460-1-inner.xhtml rename : content/base/crashtests/387460-1.html => dom/base/crashtests/387460-1.html rename : content/base/crashtests/395469-1.xhtml => dom/base/crashtests/395469-1.xhtml rename : content/base/crashtests/395469-2.xhtml => dom/base/crashtests/395469-2.xhtml rename : content/base/crashtests/398088-1.xul => dom/base/crashtests/398088-1.xul rename : content/base/crashtests/399712-1.html => dom/base/crashtests/399712-1.html rename : content/base/crashtests/400763-1.html => dom/base/crashtests/400763-1.html rename : content/base/crashtests/401993-1.html => dom/base/crashtests/401993-1.html rename : content/base/crashtests/401993-1.xml => dom/base/crashtests/401993-1.xml rename : content/base/crashtests/407818.html => dom/base/crashtests/407818.html rename : content/base/crashtests/410860-1.xml => dom/base/crashtests/410860-1.xml rename : content/base/crashtests/411882-1.xhtml => dom/base/crashtests/411882-1.xhtml rename : content/base/crashtests/416734-1.html => dom/base/crashtests/416734-1.html rename : content/base/crashtests/418928-1.html => dom/base/crashtests/418928-1.html rename : content/base/crashtests/420620-1.html => dom/base/crashtests/420620-1.html rename : content/base/crashtests/424276-1.html => dom/base/crashtests/424276-1.html rename : content/base/crashtests/426987-1.html => dom/base/crashtests/426987-1.html rename : content/base/crashtests/43040-1.html => dom/base/crashtests/43040-1.html rename : content/base/crashtests/443538-1.svg => dom/base/crashtests/443538-1.svg rename : content/base/crashtests/448615-1.html => dom/base/crashtests/448615-1.html rename : content/base/crashtests/450383-1.html => dom/base/crashtests/450383-1.html rename : content/base/crashtests/450385-1.html => dom/base/crashtests/450385-1.html rename : content/base/crashtests/458637-1-inner.xhtml => dom/base/crashtests/458637-1-inner.xhtml rename : content/base/crashtests/458637-1.html => dom/base/crashtests/458637-1.html rename : content/base/crashtests/467392.html => dom/base/crashtests/467392.html rename : content/base/crashtests/472593-1.html => dom/base/crashtests/472593-1.html rename : content/base/crashtests/474041-1.svg => dom/base/crashtests/474041-1.svg rename : content/base/crashtests/483818-1.html => dom/base/crashtests/483818-1.html rename : content/base/crashtests/490760-1.xhtml => dom/base/crashtests/490760-1.xhtml rename : content/base/crashtests/493281-1.html => dom/base/crashtests/493281-1.html rename : content/base/crashtests/493281-2.html => dom/base/crashtests/493281-2.html rename : content/base/crashtests/494810-1.html => dom/base/crashtests/494810-1.html rename : content/base/crashtests/509536-1.html => dom/base/crashtests/509536-1.html rename : content/base/crashtests/522516-1.html => dom/base/crashtests/522516-1.html rename : content/base/crashtests/529670.html => dom/base/crashtests/529670.html rename : content/base/crashtests/535926-1.html => dom/base/crashtests/535926-1.html rename : content/base/crashtests/543645.html => dom/base/crashtests/543645.html rename : content/base/crashtests/551631-1.html => dom/base/crashtests/551631-1.html rename : content/base/crashtests/552651.html => dom/base/crashtests/552651.html rename : content/base/crashtests/552651.xml => dom/base/crashtests/552651.xml rename : content/base/crashtests/554230-1.xhtml => dom/base/crashtests/554230-1.xhtml rename : content/base/crashtests/558973.html => dom/base/crashtests/558973.html rename : content/base/crashtests/561981-1-iframe.xhtml => dom/base/crashtests/561981-1-iframe.xhtml rename : content/base/crashtests/561981-1.html => dom/base/crashtests/561981-1.html rename : content/base/crashtests/561981-2-iframe.xhtml => dom/base/crashtests/561981-2-iframe.xhtml rename : content/base/crashtests/561981-2.html => dom/base/crashtests/561981-2.html rename : content/base/crashtests/564079-1.html => dom/base/crashtests/564079-1.html rename : content/base/crashtests/564114.html => dom/base/crashtests/564114.html rename : content/base/crashtests/565125-1.html => dom/base/crashtests/565125-1.html rename : content/base/crashtests/575462.svg => dom/base/crashtests/575462.svg rename : content/base/crashtests/582601.html => dom/base/crashtests/582601.html rename : content/base/crashtests/590395-1.html => dom/base/crashtests/590395-1.html rename : content/base/crashtests/593302-1.html => dom/base/crashtests/593302-1.html rename : content/base/crashtests/593302-2.html => dom/base/crashtests/593302-2.html rename : content/base/crashtests/595606-1.html => dom/base/crashtests/595606-1.html rename : content/base/crashtests/595606-2.html => dom/base/crashtests/595606-2.html rename : content/base/crashtests/604262-1.html => dom/base/crashtests/604262-1.html rename : content/base/crashtests/605672-1.svg => dom/base/crashtests/605672-1.svg rename : content/base/crashtests/606729-1.html => dom/base/crashtests/606729-1.html rename : content/base/crashtests/610571-1.html => dom/base/crashtests/610571-1.html rename : content/base/crashtests/628599-1.html => dom/base/crashtests/628599-1.html rename : content/base/crashtests/637214-1.svg => dom/base/crashtests/637214-1.svg rename : content/base/crashtests/637214-2.svg => dom/base/crashtests/637214-2.svg rename : content/base/crashtests/642022-1.html => dom/base/crashtests/642022-1.html rename : content/base/crashtests/646184.html => dom/base/crashtests/646184.html rename : content/base/crashtests/658845-1.svg => dom/base/crashtests/658845-1.svg rename : content/base/crashtests/667336-1.html => dom/base/crashtests/667336-1.html rename : content/base/crashtests/679459.html => dom/base/crashtests/679459.html rename : content/base/crashtests/679689-1.html => dom/base/crashtests/679689-1.html rename : content/base/crashtests/682463.html => dom/base/crashtests/682463.html rename : content/base/crashtests/693212.xhtml => dom/base/crashtests/693212.xhtml rename : content/base/crashtests/698974-1.html => dom/base/crashtests/698974-1.html rename : content/base/crashtests/700090-1.html => dom/base/crashtests/700090-1.html rename : content/base/crashtests/700090-2.html => dom/base/crashtests/700090-2.html rename : content/base/crashtests/700512-worker.js => dom/base/crashtests/700512-worker.js rename : content/base/crashtests/700512.html => dom/base/crashtests/700512.html rename : content/base/crashtests/709384.html => dom/base/crashtests/709384.html rename : content/base/crashtests/709954.html => dom/base/crashtests/709954.html rename : content/base/crashtests/713417-2.html => dom/base/crashtests/713417-2.html rename : content/base/crashtests/713417.html => dom/base/crashtests/713417.html rename : content/base/crashtests/715056.html => dom/base/crashtests/715056.html rename : content/base/crashtests/741163-1.html => dom/base/crashtests/741163-1.html rename : content/base/crashtests/752226-1.html => dom/base/crashtests/752226-1.html rename : content/base/crashtests/752226-2.html => dom/base/crashtests/752226-2.html rename : content/base/crashtests/766426.html => dom/base/crashtests/766426.html rename : content/base/crashtests/771639.html => dom/base/crashtests/771639.html rename : content/base/crashtests/786854.html => dom/base/crashtests/786854.html rename : content/base/crashtests/815043.html => dom/base/crashtests/815043.html rename : content/base/crashtests/815276.html => dom/base/crashtests/815276.html rename : content/base/crashtests/815477.html => dom/base/crashtests/815477.html rename : content/base/crashtests/815500.html => dom/base/crashtests/815500.html rename : content/base/crashtests/816253.html => dom/base/crashtests/816253.html rename : content/base/crashtests/819014.html => dom/base/crashtests/819014.html rename : content/base/crashtests/822691.html => dom/base/crashtests/822691.html rename : content/base/crashtests/822723.html => dom/base/crashtests/822723.html rename : content/base/crashtests/824719.html => dom/base/crashtests/824719.html rename : content/base/crashtests/827190.html => dom/base/crashtests/827190.html rename : content/base/crashtests/828054.html => dom/base/crashtests/828054.html rename : content/base/crashtests/828903-iframe.html => dom/base/crashtests/828903-iframe.html rename : content/base/crashtests/828903.html => dom/base/crashtests/828903.html rename : content/base/crashtests/829428.html => dom/base/crashtests/829428.html rename : content/base/crashtests/830098.html => dom/base/crashtests/830098.html rename : content/base/crashtests/831287.html => dom/base/crashtests/831287.html rename : content/base/crashtests/832644.html => dom/base/crashtests/832644.html rename : content/base/crashtests/836890.html => dom/base/crashtests/836890.html rename : content/base/crashtests/838489-1.html => dom/base/crashtests/838489-1.html rename : content/base/crashtests/838489-2.html => dom/base/crashtests/838489-2.html rename : content/base/crashtests/841205.html => dom/base/crashtests/841205.html rename : content/base/crashtests/844404.html => dom/base/crashtests/844404.html rename : content/base/crashtests/845093-1.html => dom/base/crashtests/845093-1.html rename : content/base/crashtests/845093-2.html => dom/base/crashtests/845093-2.html rename : content/base/crashtests/847127.html => dom/base/crashtests/847127.html rename : content/base/crashtests/849601.html => dom/base/crashtests/849601.html rename : content/base/crashtests/849727.html => dom/base/crashtests/849727.html rename : content/base/crashtests/849732.html => dom/base/crashtests/849732.html rename : content/base/crashtests/851353-1.html => dom/base/crashtests/851353-1.html rename : content/base/crashtests/863950.html => dom/base/crashtests/863950.html rename : content/base/crashtests/864448.html => dom/base/crashtests/864448.html rename : content/base/crashtests/930250.html => dom/base/crashtests/930250.html rename : content/base/crashtests/942979.html => dom/base/crashtests/942979.html rename : content/base/crashtests/978646.html => dom/base/crashtests/978646.html rename : content/base/crashtests/xhr_abortinprogress.html => dom/base/crashtests/xhr_abortinprogress.html rename : content/base/crashtests/xhr_empty_datauri.html => dom/base/crashtests/xhr_empty_datauri.html rename : content/base/crashtests/xhr_html_nullresponse.html => dom/base/crashtests/xhr_html_nullresponse.html rename : content/base/src/messageWakeupService.js => dom/base/messageWakeupService.js rename : content/base/src/messageWakeupService.manifest => dom/base/messageWakeupService.manifest rename : content/base/src/mozAutoDocUpdate.h => dom/base/mozAutoDocUpdate.h rename : content/base/public/mozFlushType.h => dom/base/mozFlushType.h rename : content/base/src/nsAtomListUtils.cpp => dom/base/nsAtomListUtils.cpp rename : content/base/src/nsAtomListUtils.h => dom/base/nsAtomListUtils.h rename : content/base/src/nsAttrAndChildArray.cpp => dom/base/nsAttrAndChildArray.cpp rename : content/base/src/nsAttrAndChildArray.h => dom/base/nsAttrAndChildArray.h rename : content/base/src/nsAttrName.h => dom/base/nsAttrName.h rename : content/base/src/nsAttrValue.cpp => dom/base/nsAttrValue.cpp rename : content/base/src/nsAttrValue.h => dom/base/nsAttrValue.h rename : content/base/src/nsAttrValueInlines.h => dom/base/nsAttrValueInlines.h rename : content/base/src/nsAttrValueOrString.cpp => dom/base/nsAttrValueOrString.cpp rename : content/base/src/nsAttrValueOrString.h => dom/base/nsAttrValueOrString.h rename : content/base/src/nsCCUncollectableMarker.cpp => dom/base/nsCCUncollectableMarker.cpp rename : content/base/src/nsCCUncollectableMarker.h => dom/base/nsCCUncollectableMarker.h rename : content/base/src/nsCSPContext.cpp => dom/base/nsCSPContext.cpp rename : content/base/src/nsCSPContext.h => dom/base/nsCSPContext.h rename : content/base/src/nsCSPParser.cpp => dom/base/nsCSPParser.cpp rename : content/base/src/nsCSPParser.h => dom/base/nsCSPParser.h rename : content/base/src/nsCSPService.cpp => dom/base/nsCSPService.cpp rename : content/base/src/nsCSPService.h => dom/base/nsCSPService.h rename : content/base/src/nsCSPUtils.cpp => dom/base/nsCSPUtils.cpp rename : content/base/src/nsCSPUtils.h => dom/base/nsCSPUtils.h rename : content/base/public/nsCaseTreatment.h => dom/base/nsCaseTreatment.h rename : content/base/src/nsContentAreaDragDrop.cpp => dom/base/nsContentAreaDragDrop.cpp rename : content/base/src/nsContentAreaDragDrop.h => dom/base/nsContentAreaDragDrop.h rename : content/base/public/nsContentCID.h => dom/base/nsContentCID.h rename : content/base/public/nsContentCreatorFunctions.h => dom/base/nsContentCreatorFunctions.h rename : content/base/src/nsContentIterator.cpp => dom/base/nsContentIterator.cpp rename : content/base/src/nsContentList.cpp => dom/base/nsContentList.cpp rename : content/base/src/nsContentList.h => dom/base/nsContentList.h rename : content/base/src/nsContentListDeclarations.h => dom/base/nsContentListDeclarations.h rename : content/base/src/nsContentPolicy.cpp => dom/base/nsContentPolicy.cpp rename : content/base/src/nsContentPolicy.h => dom/base/nsContentPolicy.h rename : content/base/public/nsContentPolicyUtils.h => dom/base/nsContentPolicyUtils.h rename : content/base/src/nsContentSink.cpp => dom/base/nsContentSink.cpp rename : content/base/src/nsContentSink.h => dom/base/nsContentSink.h rename : content/base/public/nsContentTypeParser.h => dom/base/nsContentTypeParser.h rename : content/base/src/nsContentUtils.cpp => dom/base/nsContentUtils.cpp rename : content/base/public/nsContentUtils.h => dom/base/nsContentUtils.h rename : content/base/src/nsCopySupport.cpp => dom/base/nsCopySupport.cpp rename : content/base/public/nsCopySupport.h => dom/base/nsCopySupport.h rename : content/base/src/nsCrossSiteListenerProxy.cpp => dom/base/nsCrossSiteListenerProxy.cpp rename : content/base/src/nsCrossSiteListenerProxy.h => dom/base/nsCrossSiteListenerProxy.h rename : content/base/src/nsDOMAttributeMap.cpp => dom/base/nsDOMAttributeMap.cpp rename : content/base/src/nsDOMAttributeMap.h => dom/base/nsDOMAttributeMap.h rename : content/base/src/nsDOMCaretPosition.cpp => dom/base/nsDOMCaretPosition.cpp rename : content/base/src/nsDOMCaretPosition.h => dom/base/nsDOMCaretPosition.h rename : content/base/src/nsDOMDataChannel.cpp => dom/base/nsDOMDataChannel.cpp rename : content/base/src/nsDOMDataChannel.h => dom/base/nsDOMDataChannel.h rename : content/base/src/nsDOMDataChannelDeclarations.h => dom/base/nsDOMDataChannelDeclarations.h rename : content/base/src/nsDOMFileReader.cpp => dom/base/nsDOMFileReader.cpp rename : content/base/src/nsDOMFileReader.h => dom/base/nsDOMFileReader.h rename : content/base/src/nsDOMMutationObserver.cpp => dom/base/nsDOMMutationObserver.cpp rename : content/base/src/nsDOMMutationObserver.h => dom/base/nsDOMMutationObserver.h rename : content/base/src/nsDOMSerializer.cpp => dom/base/nsDOMSerializer.cpp rename : content/base/src/nsDOMSerializer.h => dom/base/nsDOMSerializer.h rename : content/base/src/nsDOMSettableTokenList.cpp => dom/base/nsDOMSettableTokenList.cpp rename : content/base/src/nsDOMSettableTokenList.h => dom/base/nsDOMSettableTokenList.h rename : content/base/src/nsDOMTokenList.cpp => dom/base/nsDOMTokenList.cpp rename : content/base/src/nsDOMTokenList.h => dom/base/nsDOMTokenList.h rename : content/base/src/nsDataDocumentContentPolicy.cpp => dom/base/nsDataDocumentContentPolicy.cpp rename : content/base/src/nsDataDocumentContentPolicy.h => dom/base/nsDataDocumentContentPolicy.h rename : content/base/public/nsDeprecatedOperationList.h => dom/base/nsDeprecatedOperationList.h rename : content/base/public/nsDocElementCreatedNotificationRunner.h => dom/base/nsDocElementCreatedNotificationRunner.h rename : content/base/src/nsDocument.cpp => dom/base/nsDocument.cpp rename : content/base/src/nsDocument.h => dom/base/nsDocument.h rename : content/base/src/nsDocumentEncoder.cpp => dom/base/nsDocumentEncoder.cpp rename : content/base/src/nsElementFrameLoaderOwner.cpp => dom/base/nsElementFrameLoaderOwner.cpp rename : content/base/src/nsElementFrameLoaderOwner.h => dom/base/nsElementFrameLoaderOwner.h rename : content/base/src/nsFormData.cpp => dom/base/nsFormData.cpp rename : content/base/src/nsFormData.h => dom/base/nsFormData.h rename : content/base/src/nsFrameLoader.cpp => dom/base/nsFrameLoader.cpp rename : content/base/src/nsFrameLoader.h => dom/base/nsFrameLoader.h rename : content/base/src/nsFrameMessageManager.cpp => dom/base/nsFrameMessageManager.cpp rename : content/base/src/nsFrameMessageManager.h => dom/base/nsFrameMessageManager.h rename : content/base/src/nsGenConImageContent.cpp => dom/base/nsGenConImageContent.cpp rename : content/base/src/nsGenericDOMDataNode.cpp => dom/base/nsGenericDOMDataNode.cpp rename : content/base/src/nsGenericDOMDataNode.h => dom/base/nsGenericDOMDataNode.h rename : content/base/src/nsGkAtomList.h => dom/base/nsGkAtomList.h rename : content/base/src/nsGkAtoms.cpp => dom/base/nsGkAtoms.cpp rename : content/base/src/nsGkAtoms.h => dom/base/nsGkAtoms.h rename : content/base/src/nsHTMLContentSerializer.cpp => dom/base/nsHTMLContentSerializer.cpp rename : content/base/src/nsHTMLContentSerializer.h => dom/base/nsHTMLContentSerializer.h rename : content/base/src/nsHostObjectProtocolHandler.cpp => dom/base/nsHostObjectProtocolHandler.cpp rename : content/base/public/nsHostObjectProtocolHandler.h => dom/base/nsHostObjectProtocolHandler.h rename : content/base/src/nsHostObjectURI.cpp => dom/base/nsHostObjectURI.cpp rename : content/base/src/nsHostObjectURI.h => dom/base/nsHostObjectURI.h rename : content/base/public/nsIAttribute.h => dom/base/nsIAttribute.h rename : content/base/public/nsIContent.h => dom/base/nsIContent.h rename : content/base/public/nsIContentInlines.h => dom/base/nsIContentInlines.h rename : content/base/public/nsIContentIterator.h => dom/base/nsIContentIterator.h rename : content/base/public/nsIContentPolicy.idl => dom/base/nsIContentPolicy.idl rename : content/base/public/nsIContentSecurityPolicy.idl => dom/base/nsIContentSecurityPolicy.idl rename : content/base/public/nsIContentSerializer.h => dom/base/nsIContentSerializer.h rename : content/base/public/nsIDOMDataChannel.idl => dom/base/nsIDOMDataChannel.idl rename : content/base/public/nsIDOMFile.idl => dom/base/nsIDOMFile.idl rename : content/base/public/nsIDOMFileList.idl => dom/base/nsIDOMFileList.idl rename : content/base/public/nsIDOMFileReader.idl => dom/base/nsIDOMFileReader.idl rename : content/base/public/nsIDOMFormData.idl => dom/base/nsIDOMFormData.idl rename : content/base/public/nsIDOMParser.idl => dom/base/nsIDOMParser.idl rename : content/base/public/nsIDOMSerializer.idl => dom/base/nsIDOMSerializer.idl rename : content/base/public/nsIDocument.h => dom/base/nsIDocument.h rename : content/base/public/nsIDocumentEncoder.idl => dom/base/nsIDocumentEncoder.idl rename : content/base/public/nsIDocumentInlines.h => dom/base/nsIDocumentInlines.h rename : content/base/public/nsIDocumentObserver.h => dom/base/nsIDocumentObserver.h rename : content/base/public/nsIDroppedLinkHandler.idl => dom/base/nsIDroppedLinkHandler.idl rename : content/base/public/nsIFrameLoader.idl => dom/base/nsIFrameLoader.idl rename : content/base/public/nsIImageLoadingContent.idl => dom/base/nsIImageLoadingContent.idl rename : content/base/public/nsIMessageManager.idl => dom/base/nsIMessageManager.idl rename : content/base/public/nsIMutationObserver.h => dom/base/nsIMutationObserver.h rename : content/base/src/nsINode.cpp => dom/base/nsINode.cpp rename : content/base/public/nsINode.h => dom/base/nsINode.h rename : content/base/public/nsINodeList.h => dom/base/nsINodeList.h rename : content/base/public/nsIObjectLoadingContent.idl => dom/base/nsIObjectLoadingContent.idl rename : content/base/public/nsIScriptElement.h => dom/base/nsIScriptElement.h rename : content/base/public/nsIScriptLoaderObserver.idl => dom/base/nsIScriptLoaderObserver.idl rename : content/base/public/nsISelection.idl => dom/base/nsISelection.idl rename : content/base/public/nsISelectionController.idl => dom/base/nsISelectionController.idl rename : content/base/public/nsISelectionDisplay.idl => dom/base/nsISelectionDisplay.idl rename : content/base/public/nsISelectionListener.idl => dom/base/nsISelectionListener.idl rename : content/base/public/nsISelectionPrivate.idl => dom/base/nsISelectionPrivate.idl rename : content/base/public/nsIStyleSheetLinkingElement.h => dom/base/nsIStyleSheetLinkingElement.h rename : content/base/public/nsIXMLHttpRequest.idl => dom/base/nsIXMLHttpRequest.idl rename : content/base/src/nsImageLoadingContent.cpp => dom/base/nsImageLoadingContent.cpp rename : content/base/src/nsImageLoadingContent.h => dom/base/nsImageLoadingContent.h rename : content/base/src/nsInProcessTabChildGlobal.cpp => dom/base/nsInProcessTabChildGlobal.cpp rename : content/base/src/nsInProcessTabChildGlobal.h => dom/base/nsInProcessTabChildGlobal.h rename : content/base/src/nsLineBreaker.cpp => dom/base/nsLineBreaker.cpp rename : content/base/public/nsLineBreaker.h => dom/base/nsLineBreaker.h rename : content/base/src/nsMappedAttributeElement.cpp => dom/base/nsMappedAttributeElement.cpp rename : content/base/src/nsMappedAttributeElement.h => dom/base/nsMappedAttributeElement.h rename : content/base/src/nsMappedAttributes.cpp => dom/base/nsMappedAttributes.cpp rename : content/base/src/nsMappedAttributes.h => dom/base/nsMappedAttributes.h rename : content/base/src/nsMixedContentBlocker.cpp => dom/base/nsMixedContentBlocker.cpp rename : content/base/src/nsMixedContentBlocker.h => dom/base/nsMixedContentBlocker.h rename : content/base/src/nsNameSpaceManager.cpp => dom/base/nsNameSpaceManager.cpp rename : content/base/public/nsNameSpaceManager.h => dom/base/nsNameSpaceManager.h rename : content/base/src/nsNoDataProtocolContentPolicy.cpp => dom/base/nsNoDataProtocolContentPolicy.cpp rename : content/base/src/nsNoDataProtocolContentPolicy.h => dom/base/nsNoDataProtocolContentPolicy.h rename : content/base/src/nsNodeInfoManager.cpp => dom/base/nsNodeInfoManager.cpp rename : content/base/src/nsNodeInfoManager.h => dom/base/nsNodeInfoManager.h rename : content/base/src/nsNodeUtils.cpp => dom/base/nsNodeUtils.cpp rename : content/base/src/nsNodeUtils.h => dom/base/nsNodeUtils.h rename : content/base/src/nsObjectLoadingContent.cpp => dom/base/nsObjectLoadingContent.cpp rename : content/base/src/nsObjectLoadingContent.h => dom/base/nsObjectLoadingContent.h rename : content/base/src/nsPlainTextSerializer.cpp => dom/base/nsPlainTextSerializer.cpp rename : content/base/src/nsPlainTextSerializer.h => dom/base/nsPlainTextSerializer.h rename : content/base/src/nsPropertyTable.cpp => dom/base/nsPropertyTable.cpp rename : content/base/src/nsPropertyTable.h => dom/base/nsPropertyTable.h rename : content/base/src/nsRange.cpp => dom/base/nsRange.cpp rename : content/base/src/nsRange.h => dom/base/nsRange.h rename : content/base/src/nsReferencedElement.cpp => dom/base/nsReferencedElement.cpp rename : content/base/public/nsReferencedElement.h => dom/base/nsReferencedElement.h rename : content/base/src/nsSandboxFlags.h => dom/base/nsSandboxFlags.h rename : content/base/src/nsScriptElement.cpp => dom/base/nsScriptElement.cpp rename : content/base/src/nsScriptElement.h => dom/base/nsScriptElement.h rename : content/base/src/nsScriptLoader.cpp => dom/base/nsScriptLoader.cpp rename : content/base/src/nsScriptLoader.h => dom/base/nsScriptLoader.h rename : content/base/src/nsStubDocumentObserver.cpp => dom/base/nsStubDocumentObserver.cpp rename : content/base/src/nsStubDocumentObserver.h => dom/base/nsStubDocumentObserver.h rename : content/base/src/nsStubMutationObserver.cpp => dom/base/nsStubMutationObserver.cpp rename : content/base/src/nsStubMutationObserver.h => dom/base/nsStubMutationObserver.h rename : content/base/src/nsStyleLinkElement.cpp => dom/base/nsStyleLinkElement.cpp rename : content/base/src/nsStyleLinkElement.h => dom/base/nsStyleLinkElement.h rename : content/base/src/nsStyledElement.cpp => dom/base/nsStyledElement.cpp rename : content/base/src/nsStyledElement.h => dom/base/nsStyledElement.h rename : content/base/src/nsSyncLoadService.cpp => dom/base/nsSyncLoadService.cpp rename : content/base/src/nsSyncLoadService.h => dom/base/nsSyncLoadService.h rename : content/base/src/nsTextFragment.cpp => dom/base/nsTextFragment.cpp rename : content/base/src/nsTextFragment.h => dom/base/nsTextFragment.h rename : content/base/src/nsTextFragmentImpl.h => dom/base/nsTextFragmentImpl.h rename : content/base/src/nsTextFragmentSSE2.cpp => dom/base/nsTextFragmentSSE2.cpp rename : content/base/src/nsTextNode.cpp => dom/base/nsTextNode.cpp rename : content/base/src/nsTextNode.h => dom/base/nsTextNode.h rename : content/base/src/nsTraversal.cpp => dom/base/nsTraversal.cpp rename : content/base/src/nsTraversal.h => dom/base/nsTraversal.h rename : content/base/src/nsTreeSanitizer.cpp => dom/base/nsTreeSanitizer.cpp rename : content/base/public/nsTreeSanitizer.h => dom/base/nsTreeSanitizer.h rename : content/base/src/nsViewportInfo.cpp => dom/base/nsViewportInfo.cpp rename : content/base/public/nsViewportInfo.h => dom/base/nsViewportInfo.h rename : content/base/src/nsXHTMLContentSerializer.cpp => dom/base/nsXHTMLContentSerializer.cpp rename : content/base/src/nsXHTMLContentSerializer.h => dom/base/nsXHTMLContentSerializer.h rename : content/base/src/nsXMLContentSerializer.cpp => dom/base/nsXMLContentSerializer.cpp rename : content/base/src/nsXMLContentSerializer.h => dom/base/nsXMLContentSerializer.h rename : content/base/src/nsXMLHttpRequest.cpp => dom/base/nsXMLHttpRequest.cpp rename : content/base/src/nsXMLHttpRequest.h => dom/base/nsXMLHttpRequest.h rename : content/base/src/nsXMLNameSpaceMap.cpp => dom/base/nsXMLNameSpaceMap.cpp rename : content/base/public/nsXMLNameSpaceMap.h => dom/base/nsXMLNameSpaceMap.h rename : content/base/test/345339_iframe.html => dom/base/test/345339_iframe.html rename : content/base/test/Ahem.ttf => dom/base/test/Ahem.ttf rename : content/base/test/TestCSPParser.cpp => dom/base/test/TestCSPParser.cpp rename : content/base/test/TestGetURL.cpp => dom/base/test/TestGetURL.cpp rename : content/base/test/TestNativeXMLHttpRequest.cpp => dom/base/test/TestNativeXMLHttpRequest.cpp rename : content/base/test/TestPlainTextSerializer.cpp => dom/base/test/TestPlainTextSerializer.cpp rename : content/base/test/accesscontrol.resource => dom/base/test/accesscontrol.resource rename : content/base/test/accesscontrol.resource^headers^ => dom/base/test/accesscontrol.resource^headers^ rename : content/base/test/badContentType.eventsource => dom/base/test/badContentType.eventsource rename : content/base/test/badContentType.eventsource^headers^ => dom/base/test/badContentType.eventsource^headers^ rename : content/base/test/badHTTPResponseCode.eventsource => dom/base/test/badHTTPResponseCode.eventsource rename : content/base/test/badHTTPResponseCode.eventsource^headers^ => dom/base/test/badHTTPResponseCode.eventsource^headers^ rename : content/base/test/badMessageEvent.eventsource => dom/base/test/badMessageEvent.eventsource rename : content/base/test/badMessageEvent.eventsource^headers^ => dom/base/test/badMessageEvent.eventsource^headers^ rename : content/base/test/badMessageEvent2.eventsource => dom/base/test/badMessageEvent2.eventsource rename : content/base/test/badMessageEvent2.eventsource^headers^ => dom/base/test/badMessageEvent2.eventsource^headers^ rename : content/base/test/browser.ini => dom/base/test/browser.ini rename : content/base/test/browser_bug1058164.js => dom/base/test/browser_bug1058164.js rename : content/base/test/browser_bug593387.js => dom/base/test/browser_bug593387.js rename : content/base/test/browser_bug902350.js => dom/base/test/browser_bug902350.js rename : content/base/test/browser_state_notifications.js => dom/base/test/browser_state_notifications.js rename : content/base/test/bug282547.sjs => dom/base/test/bug282547.sjs rename : content/base/test/bug298064-subframe.html => dom/base/test/bug298064-subframe.html rename : content/base/test/bug313646.txt => dom/base/test/bug313646.txt rename : content/base/test/bug382113_object.html => dom/base/test/bug382113_object.html rename : content/base/test/bug419132.html => dom/base/test/bug419132.html rename : content/base/test/bug426308-redirect.sjs => dom/base/test/bug426308-redirect.sjs rename : content/base/test/bug435425.sjs => dom/base/test/bug435425.sjs rename : content/base/test/bug435425_redirect.sjs => dom/base/test/bug435425_redirect.sjs rename : content/base/test/bug444322.js => dom/base/test/bug444322.js rename : content/base/test/bug444322.txt => dom/base/test/bug444322.txt rename : content/base/test/bug444546.sjs => dom/base/test/bug444546.sjs rename : content/base/test/bug455629-helper.svg => dom/base/test/bug455629-helper.svg rename : content/base/test/bug457746.sjs => dom/base/test/bug457746.sjs rename : content/base/test/bug461735-post-redirect.js => dom/base/test/bug461735-post-redirect.js rename : content/base/test/bug461735-redirect1.sjs => dom/base/test/bug461735-redirect1.sjs rename : content/base/test/bug461735-redirect2.sjs => dom/base/test/bug461735-redirect2.sjs rename : content/base/test/bug466080.sjs => dom/base/test/bug466080.sjs rename : content/base/test/bug466409-empty.css => dom/base/test/bug466409-empty.css rename : content/base/test/bug466409-page.html => dom/base/test/bug466409-page.html rename : content/base/test/bug475156.sjs => dom/base/test/bug475156.sjs rename : content/base/test/bug482935.sjs => dom/base/test/bug482935.sjs rename : content/base/test/bug540854.sjs => dom/base/test/bug540854.sjs rename : content/base/test/bug578096LoadChromeScript.js => dom/base/test/bug578096LoadChromeScript.js rename : content/base/test/bug638112-response.txt => dom/base/test/bug638112-response.txt rename : content/base/test/bug638112.sjs => dom/base/test/bug638112.sjs rename : content/base/test/bug682592-subframe-ref.html => dom/base/test/bug682592-subframe-ref.html rename : content/base/test/bug682592-subframe.html => dom/base/test/bug682592-subframe.html rename : content/base/test/bug696301-script-1.js => dom/base/test/bug696301-script-1.js rename : content/base/test/bug696301-script-1.js^headers^ => dom/base/test/bug696301-script-1.js^headers^ rename : content/base/test/bug696301-script-2.js => dom/base/test/bug696301-script-2.js rename : content/base/test/bug803225_test_mailto.html => dom/base/test/bug803225_test_mailto.html rename : content/base/test/bug819051.sjs => dom/base/test/bug819051.sjs rename : content/base/test/chrome/blockNoPlugins.xml => dom/base/test/chrome/blockNoPlugins.xml rename : content/base/test/chrome/blockPluginHard.xml => dom/base/test/chrome/blockPluginHard.xml rename : content/base/test/chrome/bug421622-referer.sjs => dom/base/test/chrome/bug421622-referer.sjs rename : content/base/test/chrome/chrome.ini => dom/base/test/chrome/chrome.ini rename : content/base/test/chrome/cpows_child.js => dom/base/test/chrome/cpows_child.js rename : content/base/test/chrome/cpows_parent.xul => dom/base/test/chrome/cpows_parent.xul rename : content/base/test/chrome/file_bug391728.html => dom/base/test/chrome/file_bug391728.html rename : content/base/test/chrome/file_bug391728_2.html => dom/base/test/chrome/file_bug391728_2.html rename : content/base/test/chrome/file_bug549682.xul => dom/base/test/chrome/file_bug549682.xul rename : content/base/test/chrome/file_bug616841.xul => dom/base/test/chrome/file_bug616841.xul rename : content/base/test/chrome/file_bug816340.xul => dom/base/test/chrome/file_bug816340.xul rename : content/base/test/chrome/file_bug990812-1.xul => dom/base/test/chrome/file_bug990812-1.xul rename : content/base/test/chrome/file_bug990812-2.xul => dom/base/test/chrome/file_bug990812-2.xul rename : content/base/test/chrome/file_bug990812-3.xul => dom/base/test/chrome/file_bug990812-3.xul rename : content/base/test/chrome/file_bug990812-4.xul => dom/base/test/chrome/file_bug990812-4.xul rename : content/base/test/chrome/file_bug990812-5.xul => dom/base/test/chrome/file_bug990812-5.xul rename : content/base/test/chrome/file_bug990812.xul => dom/base/test/chrome/file_bug990812.xul rename : content/base/test/chrome/fileconstructor_file.png => dom/base/test/chrome/fileconstructor_file.png rename : content/base/test/chrome/frame_bug814638.xul => dom/base/test/chrome/frame_bug814638.xul rename : content/base/test/chrome/host_bug814638.xul => dom/base/test/chrome/host_bug814638.xul rename : content/base/test/chrome/mochitest.ini => dom/base/test/chrome/mochitest.ini rename : content/base/test/chrome/nochrome_bug765993.html => dom/base/test/chrome/nochrome_bug765993.html rename : content/base/test/chrome/nochrome_bug765993.js => dom/base/test/chrome/nochrome_bug765993.js rename : content/base/test/chrome/nochrome_bug765993.js^headers^ => dom/base/test/chrome/nochrome_bug765993.js^headers^ rename : content/base/test/chrome/test_bug1063837.xul => dom/base/test/chrome/test_bug1063837.xul rename : content/base/test/chrome/test_bug206691.xul => dom/base/test/chrome/test_bug206691.xul rename : content/base/test/chrome/test_bug339494.xul => dom/base/test/chrome/test_bug339494.xul rename : content/base/test/chrome/test_bug357450.xul => dom/base/test/chrome/test_bug357450.xul rename : content/base/test/chrome/test_bug380418.html => dom/base/test/chrome/test_bug380418.html rename : content/base/test/chrome/test_bug380418.html^headers^ => dom/base/test/chrome/test_bug380418.html^headers^ rename : content/base/test/chrome/test_bug383430.html => dom/base/test/chrome/test_bug383430.html rename : content/base/test/chrome/test_bug391728.html => dom/base/test/chrome/test_bug391728.html rename : content/base/test/chrome/test_bug421622.xul => dom/base/test/chrome/test_bug421622.xul rename : content/base/test/chrome/test_bug429785.xul => dom/base/test/chrome/test_bug429785.xul rename : content/base/test/chrome/test_bug430050.xul => dom/base/test/chrome/test_bug430050.xul rename : content/base/test/chrome/test_bug467123.xul => dom/base/test/chrome/test_bug467123.xul rename : content/base/test/chrome/test_bug549682.xul => dom/base/test/chrome/test_bug549682.xul rename : content/base/test/chrome/test_bug571390.xul => dom/base/test/chrome/test_bug571390.xul rename : content/base/test/chrome/test_bug574596.html => dom/base/test/chrome/test_bug574596.html rename : content/base/test/chrome/test_bug599295.html => dom/base/test/chrome/test_bug599295.html rename : content/base/test/chrome/test_bug616841.xul => dom/base/test/chrome/test_bug616841.xul rename : content/base/test/chrome/test_bug635835.xul => dom/base/test/chrome/test_bug635835.xul rename : content/base/test/chrome/test_bug650776.html => dom/base/test/chrome/test_bug650776.html rename : content/base/test/chrome/test_bug650784.html => dom/base/test/chrome/test_bug650784.html rename : content/base/test/chrome/test_bug682305.html => dom/base/test/chrome/test_bug682305.html rename : content/base/test/chrome/test_bug683852.xul => dom/base/test/chrome/test_bug683852.xul rename : content/base/test/chrome/test_bug750096.html => dom/base/test/chrome/test_bug750096.html rename : content/base/test/chrome/test_bug752226-3.xul => dom/base/test/chrome/test_bug752226-3.xul rename : content/base/test/chrome/test_bug752226-4.xul => dom/base/test/chrome/test_bug752226-4.xul rename : content/base/test/chrome/test_bug765993.html => dom/base/test/chrome/test_bug765993.html rename : content/base/test/chrome/test_bug780199.xul => dom/base/test/chrome/test_bug780199.xul rename : content/base/test/chrome/test_bug780529.xul => dom/base/test/chrome/test_bug780529.xul rename : content/base/test/chrome/test_bug800386.xul => dom/base/test/chrome/test_bug800386.xul rename : content/base/test/chrome/test_bug814638.xul => dom/base/test/chrome/test_bug814638.xul rename : content/base/test/chrome/test_bug816340.xul => dom/base/test/chrome/test_bug816340.xul rename : content/base/test/chrome/test_bug914381.html => dom/base/test/chrome/test_bug914381.html rename : content/base/test/chrome/test_bug990812.xul => dom/base/test/chrome/test_bug990812.xul rename : content/base/test/chrome/test_cpows.xul => dom/base/test/chrome/test_cpows.xul rename : content/base/test/chrome/test_document_register.xul => dom/base/test/chrome/test_document_register.xul rename : content/base/test/chrome/test_domparsing.xul => dom/base/test/chrome/test_domparsing.xul rename : content/base/test/chrome/test_fileconstructor.xul => dom/base/test/chrome/test_fileconstructor.xul rename : content/base/test/chrome/test_fileconstructor_tempfile.xul => dom/base/test/chrome/test_fileconstructor_tempfile.xul rename : content/base/test/chrome/test_title.xul => dom/base/test/chrome/test_title.xul rename : content/base/test/chrome/title_window.xul => dom/base/test/chrome/title_window.xul rename : content/base/test/copypaste.js => dom/base/test/copypaste.js rename : content/base/test/csp/chrome.ini => dom/base/test/csp/chrome.ini rename : content/base/test/csp/file_CSP.css => dom/base/test/csp/file_CSP.css rename : content/base/test/csp/file_CSP.sjs => dom/base/test/csp/file_CSP.sjs rename : content/base/test/csp/file_CSP_bug663567.xsl => dom/base/test/csp/file_CSP_bug663567.xsl rename : content/base/test/csp/file_CSP_bug663567_allows.xml => dom/base/test/csp/file_CSP_bug663567_allows.xml rename : content/base/test/csp/file_CSP_bug663567_allows.xml^headers^ => dom/base/test/csp/file_CSP_bug663567_allows.xml^headers^ rename : content/base/test/csp/file_CSP_bug663567_blocks.xml => dom/base/test/csp/file_CSP_bug663567_blocks.xml rename : content/base/test/csp/file_CSP_bug663567_blocks.xml^headers^ => dom/base/test/csp/file_CSP_bug663567_blocks.xml^headers^ rename : content/base/test/csp/file_CSP_bug802872.html => dom/base/test/csp/file_CSP_bug802872.html rename : content/base/test/csp/file_CSP_bug802872.html^headers^ => dom/base/test/csp/file_CSP_bug802872.html^headers^ rename : content/base/test/csp/file_CSP_bug802872.js => dom/base/test/csp/file_CSP_bug802872.js rename : content/base/test/csp/file_CSP_bug802872.sjs => dom/base/test/csp/file_CSP_bug802872.sjs rename : content/base/test/csp/file_CSP_bug885433_allows.html => dom/base/test/csp/file_CSP_bug885433_allows.html rename : content/base/test/csp/file_CSP_bug885433_allows.html^headers^ => dom/base/test/csp/file_CSP_bug885433_allows.html^headers^ rename : content/base/test/csp/file_CSP_bug885433_blocks.html => dom/base/test/csp/file_CSP_bug885433_blocks.html rename : content/base/test/csp/file_CSP_bug885433_blocks.html^headers^ => dom/base/test/csp/file_CSP_bug885433_blocks.html^headers^ rename : content/base/test/csp/file_CSP_bug888172.html => dom/base/test/csp/file_CSP_bug888172.html rename : content/base/test/csp/file_CSP_bug888172.sjs => dom/base/test/csp/file_CSP_bug888172.sjs rename : content/base/test/csp/file_CSP_bug909029_none.html => dom/base/test/csp/file_CSP_bug909029_none.html rename : content/base/test/csp/file_CSP_bug909029_none.html^headers^ => dom/base/test/csp/file_CSP_bug909029_none.html^headers^ rename : content/base/test/csp/file_CSP_bug909029_star.html => dom/base/test/csp/file_CSP_bug909029_star.html rename : content/base/test/csp/file_CSP_bug909029_star.html^headers^ => dom/base/test/csp/file_CSP_bug909029_star.html^headers^ rename : content/base/test/csp/file_CSP_bug910139.sjs => dom/base/test/csp/file_CSP_bug910139.sjs rename : content/base/test/csp/file_CSP_bug910139.xml => dom/base/test/csp/file_CSP_bug910139.xml rename : content/base/test/csp/file_CSP_bug910139.xsl => dom/base/test/csp/file_CSP_bug910139.xsl rename : content/base/test/csp/file_CSP_bug941404.html => dom/base/test/csp/file_CSP_bug941404.html rename : content/base/test/csp/file_CSP_bug941404_xhr.html => dom/base/test/csp/file_CSP_bug941404_xhr.html rename : content/base/test/csp/file_CSP_bug941404_xhr.html^headers^ => dom/base/test/csp/file_CSP_bug941404_xhr.html^headers^ rename : content/base/test/csp/file_CSP_evalscript_main.html => dom/base/test/csp/file_CSP_evalscript_main.html rename : content/base/test/csp/file_CSP_evalscript_main.html^headers^ => dom/base/test/csp/file_CSP_evalscript_main.html^headers^ rename : content/base/test/csp/file_CSP_evalscript_main.js => dom/base/test/csp/file_CSP_evalscript_main.js rename : content/base/test/csp/file_CSP_evalscript_main_allowed.html => dom/base/test/csp/file_CSP_evalscript_main_allowed.html rename : content/base/test/csp/file_CSP_evalscript_main_allowed.html^headers^ => dom/base/test/csp/file_CSP_evalscript_main_allowed.html^headers^ rename : content/base/test/csp/file_CSP_evalscript_main_allowed.js => dom/base/test/csp/file_CSP_evalscript_main_allowed.js rename : content/base/test/csp/file_CSP_frameancestors.sjs => dom/base/test/csp/file_CSP_frameancestors.sjs rename : content/base/test/csp/file_CSP_frameancestors_main.html => dom/base/test/csp/file_CSP_frameancestors_main.html rename : content/base/test/csp/file_CSP_frameancestors_main.js => dom/base/test/csp/file_CSP_frameancestors_main.js rename : content/base/test/csp/file_CSP_inlinescript_main.html => dom/base/test/csp/file_CSP_inlinescript_main.html rename : content/base/test/csp/file_CSP_inlinescript_main.html^headers^ => dom/base/test/csp/file_CSP_inlinescript_main.html^headers^ rename : content/base/test/csp/file_CSP_inlinescript_main_allowed.html => dom/base/test/csp/file_CSP_inlinescript_main_allowed.html rename : content/base/test/csp/file_CSP_inlinescript_main_allowed.html^headers^ => dom/base/test/csp/file_CSP_inlinescript_main_allowed.html^headers^ rename : content/base/test/csp/file_CSP_inlinestyle_main.html => dom/base/test/csp/file_CSP_inlinestyle_main.html rename : content/base/test/csp/file_CSP_inlinestyle_main.html^headers^ => dom/base/test/csp/file_CSP_inlinestyle_main.html^headers^ rename : content/base/test/csp/file_CSP_inlinestyle_main_allowed.html => dom/base/test/csp/file_CSP_inlinestyle_main_allowed.html rename : content/base/test/csp/file_CSP_inlinestyle_main_allowed.html^headers^ => dom/base/test/csp/file_CSP_inlinestyle_main_allowed.html^headers^ rename : content/base/test/csp/file_CSP_main.html => dom/base/test/csp/file_CSP_main.html rename : content/base/test/csp/file_CSP_main.html^headers^ => dom/base/test/csp/file_CSP_main.html^headers^ rename : content/base/test/csp/file_CSP_main.js => dom/base/test/csp/file_CSP_main.js rename : content/base/test/csp/file_base-uri.html => dom/base/test/csp/file_base-uri.html rename : content/base/test/csp/file_bug836922_npolicies.html => dom/base/test/csp/file_bug836922_npolicies.html rename : content/base/test/csp/file_bug836922_npolicies.html^headers^ => dom/base/test/csp/file_bug836922_npolicies.html^headers^ rename : content/base/test/csp/file_bug836922_npolicies_ro_violation.sjs => dom/base/test/csp/file_bug836922_npolicies_ro_violation.sjs rename : content/base/test/csp/file_bug836922_npolicies_violation.sjs => dom/base/test/csp/file_bug836922_npolicies_violation.sjs rename : content/base/test/csp/file_bug886164.html => dom/base/test/csp/file_bug886164.html rename : content/base/test/csp/file_bug886164.html^headers^ => dom/base/test/csp/file_bug886164.html^headers^ rename : content/base/test/csp/file_bug886164_2.html => dom/base/test/csp/file_bug886164_2.html rename : content/base/test/csp/file_bug886164_2.html^headers^ => dom/base/test/csp/file_bug886164_2.html^headers^ rename : content/base/test/csp/file_bug886164_3.html => dom/base/test/csp/file_bug886164_3.html rename : content/base/test/csp/file_bug886164_3.html^headers^ => dom/base/test/csp/file_bug886164_3.html^headers^ rename : content/base/test/csp/file_bug886164_4.html => dom/base/test/csp/file_bug886164_4.html rename : content/base/test/csp/file_bug886164_4.html^headers^ => dom/base/test/csp/file_bug886164_4.html^headers^ rename : content/base/test/csp/file_bug886164_5.html => dom/base/test/csp/file_bug886164_5.html rename : content/base/test/csp/file_bug886164_5.html^headers^ => dom/base/test/csp/file_bug886164_5.html^headers^ rename : content/base/test/csp/file_bug886164_6.html => dom/base/test/csp/file_bug886164_6.html rename : content/base/test/csp/file_bug886164_6.html^headers^ => dom/base/test/csp/file_bug886164_6.html^headers^ rename : content/base/test/csp/file_connect-src.html => dom/base/test/csp/file_connect-src.html rename : content/base/test/csp/file_csp_bug768029.html => dom/base/test/csp/file_csp_bug768029.html rename : content/base/test/csp/file_csp_bug768029.sjs => dom/base/test/csp/file_csp_bug768029.sjs rename : content/base/test/csp/file_csp_bug773891.html => dom/base/test/csp/file_csp_bug773891.html rename : content/base/test/csp/file_csp_bug773891.sjs => dom/base/test/csp/file_csp_bug773891.sjs rename : content/base/test/csp/file_csp_invalid_source_expression.html => dom/base/test/csp/file_csp_invalid_source_expression.html rename : content/base/test/csp/file_csp_path_matching.html => dom/base/test/csp/file_csp_path_matching.html rename : content/base/test/csp/file_csp_path_matching.js => dom/base/test/csp/file_csp_path_matching.js rename : content/base/test/csp/file_csp_path_matching_redirect.html => dom/base/test/csp/file_csp_path_matching_redirect.html rename : content/base/test/csp/file_csp_path_matching_redirect_server.sjs => dom/base/test/csp/file_csp_path_matching_redirect_server.sjs rename : content/base/test/csp/file_csp_redirects_main.html => dom/base/test/csp/file_csp_redirects_main.html rename : content/base/test/csp/file_csp_redirects_page.sjs => dom/base/test/csp/file_csp_redirects_page.sjs rename : content/base/test/csp/file_csp_redirects_resource.sjs => dom/base/test/csp/file_csp_redirects_resource.sjs rename : content/base/test/csp/file_csp_report.html => dom/base/test/csp/file_csp_report.html rename : content/base/test/csp/file_csp_testserver.sjs => dom/base/test/csp/file_csp_testserver.sjs rename : content/base/test/csp/file_hash_source.html => dom/base/test/csp/file_hash_source.html rename : content/base/test/csp/file_hash_source.html^headers^ => dom/base/test/csp/file_hash_source.html^headers^ rename : content/base/test/csp/file_leading_wildcard.html => dom/base/test/csp/file_leading_wildcard.html rename : content/base/test/csp/file_multi_policy_injection_bypass.html => dom/base/test/csp/file_multi_policy_injection_bypass.html rename : content/base/test/csp/file_multi_policy_injection_bypass.html^headers^ => dom/base/test/csp/file_multi_policy_injection_bypass.html^headers^ rename : content/base/test/csp/file_multi_policy_injection_bypass_2.html => dom/base/test/csp/file_multi_policy_injection_bypass_2.html rename : content/base/test/csp/file_multi_policy_injection_bypass_2.html^headers^ => dom/base/test/csp/file_multi_policy_injection_bypass_2.html^headers^ rename : content/base/test/csp/file_nonce_source.html => dom/base/test/csp/file_nonce_source.html rename : content/base/test/csp/file_nonce_source.html^headers^ => dom/base/test/csp/file_nonce_source.html^headers^ rename : content/base/test/csp/file_policyuri_regression_from_multipolicy.html => dom/base/test/csp/file_policyuri_regression_from_multipolicy.html rename : content/base/test/csp/file_policyuri_regression_from_multipolicy.html^headers^ => dom/base/test/csp/file_policyuri_regression_from_multipolicy.html^headers^ rename : content/base/test/csp/file_policyuri_regression_from_multipolicy_policy => dom/base/test/csp/file_policyuri_regression_from_multipolicy_policy rename : content/base/test/csp/file_redirect_content.sjs => dom/base/test/csp/file_redirect_content.sjs rename : content/base/test/csp/file_redirect_report.sjs => dom/base/test/csp/file_redirect_report.sjs rename : content/base/test/csp/file_report_uri_missing_in_report_only_header.html => dom/base/test/csp/file_report_uri_missing_in_report_only_header.html rename : content/base/test/csp/file_report_uri_missing_in_report_only_header.html^headers^ => dom/base/test/csp/file_report_uri_missing_in_report_only_header.html^headers^ rename : content/base/test/csp/file_self_none_as_hostname_confusion.html => dom/base/test/csp/file_self_none_as_hostname_confusion.html rename : content/base/test/csp/file_self_none_as_hostname_confusion.html^headers^ => dom/base/test/csp/file_self_none_as_hostname_confusion.html^headers^ rename : content/base/test/csp/file_subframe_run_js_if_allowed.html => dom/base/test/csp/file_subframe_run_js_if_allowed.html rename : content/base/test/csp/file_subframe_run_js_if_allowed.html^headers^ => dom/base/test/csp/file_subframe_run_js_if_allowed.html^headers^ rename : content/base/test/csp/mochitest.ini => dom/base/test/csp/mochitest.ini rename : content/base/test/csp/test_301_redirect.html => dom/base/test/csp/test_301_redirect.html rename : content/base/test/csp/test_302_redirect.html => dom/base/test/csp/test_302_redirect.html rename : content/base/test/csp/test_303_redirect.html => dom/base/test/csp/test_303_redirect.html rename : content/base/test/csp/test_307_redirect.html => dom/base/test/csp/test_307_redirect.html rename : content/base/test/csp/test_CSP.html => dom/base/test/csp/test_CSP.html rename : content/base/test/csp/test_CSP_bug663567.html => dom/base/test/csp/test_CSP_bug663567.html rename : content/base/test/csp/test_CSP_bug802872.html => dom/base/test/csp/test_CSP_bug802872.html rename : content/base/test/csp/test_CSP_bug885433.html => dom/base/test/csp/test_CSP_bug885433.html rename : content/base/test/csp/test_CSP_bug888172.html => dom/base/test/csp/test_CSP_bug888172.html rename : content/base/test/csp/test_CSP_bug909029.html => dom/base/test/csp/test_CSP_bug909029.html rename : content/base/test/csp/test_CSP_bug910139.html => dom/base/test/csp/test_CSP_bug910139.html rename : content/base/test/csp/test_CSP_bug941404.html => dom/base/test/csp/test_CSP_bug941404.html rename : content/base/test/csp/test_CSP_evalscript.html => dom/base/test/csp/test_CSP_evalscript.html rename : content/base/test/csp/test_CSP_frameancestors.html => dom/base/test/csp/test_CSP_frameancestors.html rename : content/base/test/csp/test_CSP_inlinescript.html => dom/base/test/csp/test_CSP_inlinescript.html rename : content/base/test/csp/test_CSP_inlinestyle.html => dom/base/test/csp/test_CSP_inlinestyle.html rename : content/base/test/csp/test_base-uri.html => dom/base/test/csp/test_base-uri.html rename : content/base/test/csp/test_bug836922_npolicies.html => dom/base/test/csp/test_bug836922_npolicies.html rename : content/base/test/csp/test_bug886164.html => dom/base/test/csp/test_bug886164.html rename : content/base/test/csp/test_bug949549.html => dom/base/test/csp/test_bug949549.html rename : content/base/test/csp/test_connect-src.html => dom/base/test/csp/test_connect-src.html rename : content/base/test/csp/test_csp_bug768029.html => dom/base/test/csp/test_csp_bug768029.html rename : content/base/test/csp/test_csp_bug773891.html => dom/base/test/csp/test_csp_bug773891.html rename : content/base/test/csp/test_csp_invalid_source_expression.html => dom/base/test/csp/test_csp_invalid_source_expression.html rename : content/base/test/csp/test_csp_path_matching.html => dom/base/test/csp/test_csp_path_matching.html rename : content/base/test/csp/test_csp_path_matching_redirect.html => dom/base/test/csp/test_csp_path_matching_redirect.html rename : content/base/test/csp/test_csp_redirects.html => dom/base/test/csp/test_csp_redirects.html rename : content/base/test/csp/test_csp_report.html => dom/base/test/csp/test_csp_report.html rename : content/base/test/csp/test_hash_source.html => dom/base/test/csp/test_hash_source.html rename : content/base/test/csp/test_leading_wildcard.html => dom/base/test/csp/test_leading_wildcard.html rename : content/base/test/csp/test_multi_policy_injection_bypass.html => dom/base/test/csp/test_multi_policy_injection_bypass.html rename : content/base/test/csp/test_nonce_source.html => dom/base/test/csp/test_nonce_source.html rename : content/base/test/csp/test_policyuri_regression_from_multipolicy.html => dom/base/test/csp/test_policyuri_regression_from_multipolicy.html rename : content/base/test/csp/test_report_uri_missing_in_report_only_header.html => dom/base/test/csp/test_report_uri_missing_in_report_only_header.html rename : content/base/test/csp/test_self_none_as_hostname_confusion.html => dom/base/test/csp/test_self_none_as_hostname_confusion.html rename : content/base/test/csp/test_subframe_run_js_if_allowed.html => dom/base/test/csp/test_subframe_run_js_if_allowed.html rename : content/base/test/delayedServerEvents.sjs => dom/base/test/delayedServerEvents.sjs rename : content/base/test/eventsource.resource => dom/base/test/eventsource.resource rename : content/base/test/eventsource.resource^headers^ => dom/base/test/eventsource.resource^headers^ rename : content/base/test/eventsource_redirect.resource => dom/base/test/eventsource_redirect.resource rename : content/base/test/eventsource_redirect.resource^headers^ => dom/base/test/eventsource_redirect.resource^headers^ rename : content/base/test/eventsource_redirect_to.resource => dom/base/test/eventsource_redirect_to.resource rename : content/base/test/eventsource_redirect_to.resource^headers^ => dom/base/test/eventsource_redirect_to.resource^headers^ rename : content/base/test/fake_plugin.tst => dom/base/test/fake_plugin.tst rename : content/base/test/file_CrossSiteXHR_cache_server.sjs => dom/base/test/file_CrossSiteXHR_cache_server.sjs rename : content/base/test/file_CrossSiteXHR_inner.html => dom/base/test/file_CrossSiteXHR_inner.html rename : content/base/test/file_CrossSiteXHR_inner.jar => dom/base/test/file_CrossSiteXHR_inner.jar rename : content/base/test/file_CrossSiteXHR_inner_data.sjs => dom/base/test/file_CrossSiteXHR_inner_data.sjs rename : content/base/test/file_CrossSiteXHR_server.sjs => dom/base/test/file_CrossSiteXHR_server.sjs rename : content/base/test/file_XHRDocURI.html => dom/base/test/file_XHRDocURI.html rename : content/base/test/file_XHRDocURI.html^headers^ => dom/base/test/file_XHRDocURI.html^headers^ rename : content/base/test/file_XHRDocURI.sjs => dom/base/test/file_XHRDocURI.sjs rename : content/base/test/file_XHRDocURI.text => dom/base/test/file_XHRDocURI.text rename : content/base/test/file_XHRDocURI.text^headers^ => dom/base/test/file_XHRDocURI.text^headers^ rename : content/base/test/file_XHRDocURI.xml => dom/base/test/file_XHRDocURI.xml rename : content/base/test/file_XHRDocURI.xml^headers^ => dom/base/test/file_XHRDocURI.xml^headers^ rename : content/base/test/file_XHRResponseURL.js => dom/base/test/file_XHRResponseURL.js rename : content/base/test/file_XHRResponseURL.sjs => dom/base/test/file_XHRResponseURL.sjs rename : content/base/test/file_XHRResponseURL.text => dom/base/test/file_XHRResponseURL.text rename : content/base/test/file_XHRResponseURL.text^headers^ => dom/base/test/file_XHRResponseURL.text^headers^ rename : content/base/test/file_XHRResponseURL_nocors.text => dom/base/test/file_XHRResponseURL_nocors.text rename : content/base/test/file_XHRSendData.sjs => dom/base/test/file_XHRSendData.sjs rename : content/base/test/file_XHRSendData_doc.xml => dom/base/test/file_XHRSendData_doc.xml rename : content/base/test/file_XHRSendData_doc.xml^headers^ => dom/base/test/file_XHRSendData_doc.xml^headers^ rename : content/base/test/file_XHR_anon.sjs => dom/base/test/file_XHR_anon.sjs rename : content/base/test/file_XHR_binary1.bin => dom/base/test/file_XHR_binary1.bin rename : content/base/test/file_XHR_binary1.bin^headers^ => dom/base/test/file_XHR_binary1.bin^headers^ rename : content/base/test/file_XHR_binary2.bin => dom/base/test/file_XHR_binary2.bin rename : content/base/test/file_XHR_fail1.txt => dom/base/test/file_XHR_fail1.txt rename : content/base/test/file_XHR_fail1.txt^headers^ => dom/base/test/file_XHR_fail1.txt^headers^ rename : content/base/test/file_XHR_fail1b.txt => dom/base/test/file_XHR_fail1b.txt rename : content/base/test/file_XHR_header.sjs => dom/base/test/file_XHR_header.sjs rename : content/base/test/file_XHR_pass1.xml => dom/base/test/file_XHR_pass1.xml rename : content/base/test/file_XHR_pass2.txt => dom/base/test/file_XHR_pass2.txt rename : content/base/test/file_XHR_pass3.txt => dom/base/test/file_XHR_pass3.txt rename : content/base/test/file_XHR_pass3.txt^headers^ => dom/base/test/file_XHR_pass3.txt^headers^ rename : content/base/test/file_XHR_system_redirect.html => dom/base/test/file_XHR_system_redirect.html rename : content/base/test/file_XHR_system_redirect.html^headers^ => dom/base/test/file_XHR_system_redirect.html^headers^ rename : content/base/test/file_XHR_timeout.sjs => dom/base/test/file_XHR_timeout.sjs rename : content/base/test/file_base_xbl.xml => dom/base/test/file_base_xbl.xml rename : content/base/test/file_bug1008126_worker.js => dom/base/test/file_bug1008126_worker.js rename : content/base/test/file_bug1011748_OK.sjs => dom/base/test/file_bug1011748_OK.sjs rename : content/base/test/file_bug1011748_redirect.sjs => dom/base/test/file_bug1011748_redirect.sjs rename : content/base/test/file_bug28293.sjs => dom/base/test/file_bug28293.sjs rename : content/base/test/file_bug326337.xml => dom/base/test/file_bug326337.xml rename : content/base/test/file_bug326337_inner.html => dom/base/test/file_bug326337_inner.html rename : content/base/test/file_bug326337_outer.html => dom/base/test/file_bug326337_outer.html rename : content/base/test/file_bug416317.xhtml => dom/base/test/file_bug416317.xhtml rename : content/base/test/file_bug426646-1.html => dom/base/test/file_bug426646-1.html rename : content/base/test/file_bug426646-2.html => dom/base/test/file_bug426646-2.html rename : content/base/test/file_bug428847-1.xhtml => dom/base/test/file_bug428847-1.xhtml rename : content/base/test/file_bug428847-2.xhtml => dom/base/test/file_bug428847-2.xhtml rename : content/base/test/file_bug498897.css => dom/base/test/file_bug498897.css rename : content/base/test/file_bug498897.html => dom/base/test/file_bug498897.html rename : content/base/test/file_bug498897.html^headers^ => dom/base/test/file_bug498897.html^headers^ rename : content/base/test/file_bug503473-frame.sjs => dom/base/test/file_bug503473-frame.sjs rename : content/base/test/file_bug503481.sjs => dom/base/test/file_bug503481.sjs rename : content/base/test/file_bug503481b_inner.html => dom/base/test/file_bug503481b_inner.html rename : content/base/test/file_bug541937.html => dom/base/test/file_bug541937.html rename : content/base/test/file_bug541937.xhtml => dom/base/test/file_bug541937.xhtml rename : content/base/test/file_bug557892.html => dom/base/test/file_bug557892.html rename : content/base/test/file_bug562137.txt => dom/base/test/file_bug562137.txt rename : content/base/test/file_bug590812-ref.xhtml => dom/base/test/file_bug590812-ref.xhtml rename : content/base/test/file_bug590812.xml => dom/base/test/file_bug590812.xml rename : content/base/test/file_bug590870.html => dom/base/test/file_bug590870.html rename : content/base/test/file_bug601803a.html => dom/base/test/file_bug601803a.html rename : content/base/test/file_bug601803b.html => dom/base/test/file_bug601803b.html rename : content/base/test/file_bug604660-1.xml => dom/base/test/file_bug604660-1.xml rename : content/base/test/file_bug604660-2.xsl => dom/base/test/file_bug604660-2.xsl rename : content/base/test/file_bug604660-3.js => dom/base/test/file_bug604660-3.js rename : content/base/test/file_bug604660-4.js => dom/base/test/file_bug604660-4.js rename : content/base/test/file_bug604660-5.xml => dom/base/test/file_bug604660-5.xml rename : content/base/test/file_bug604660-6.xsl => dom/base/test/file_bug604660-6.xsl rename : content/base/test/file_bug622088.sjs => dom/base/test/file_bug622088.sjs rename : content/base/test/file_bug622088_inner.html => dom/base/test/file_bug622088_inner.html rename : content/base/test/file_bug675121.sjs => dom/base/test/file_bug675121.sjs rename : content/base/test/file_bug687859-16.js => dom/base/test/file_bug687859-16.js rename : content/base/test/file_bug687859-16.js^headers^ => dom/base/test/file_bug687859-16.js^headers^ rename : content/base/test/file_bug687859-bom.js => dom/base/test/file_bug687859-bom.js rename : content/base/test/file_bug687859-bom.js^headers^ => dom/base/test/file_bug687859-bom.js^headers^ rename : content/base/test/file_bug687859-charset.js => dom/base/test/file_bug687859-charset.js rename : content/base/test/file_bug687859-http.js => dom/base/test/file_bug687859-http.js rename : content/base/test/file_bug687859-http.js^headers^ => dom/base/test/file_bug687859-http.js^headers^ rename : content/base/test/file_bug687859-inherit.js => dom/base/test/file_bug687859-inherit.js rename : content/base/test/file_bug692434.xml => dom/base/test/file_bug692434.xml rename : content/base/test/file_bug707142_baseline.json => dom/base/test/file_bug707142_baseline.json rename : content/base/test/file_bug707142_bom.json => dom/base/test/file_bug707142_bom.json rename : content/base/test/file_bug707142_utf-16.json => dom/base/test/file_bug707142_utf-16.json rename : content/base/test/file_bug708620-2.html => dom/base/test/file_bug708620-2.html rename : content/base/test/file_bug708620.html => dom/base/test/file_bug708620.html rename : content/base/test/file_bug782342.txt => dom/base/test/file_bug782342.txt rename : content/base/test/file_bug787778.sjs => dom/base/test/file_bug787778.sjs rename : content/base/test/file_bug804395.jar => dom/base/test/file_bug804395.jar rename : content/base/test/file_bug869432.eventsource => dom/base/test/file_bug869432.eventsource rename : content/base/test/file_bug869432.eventsource^headers^ => dom/base/test/file_bug869432.eventsource^headers^ rename : content/base/test/file_bug902350.html => dom/base/test/file_bug902350.html rename : content/base/test/file_bug902350_frame.html => dom/base/test/file_bug902350_frame.html rename : content/base/test/file_bug907892.html => dom/base/test/file_bug907892.html rename : content/base/test/file_bug945152.jar => dom/base/test/file_bug945152.jar rename : content/base/test/file_bug945152_worker.js => dom/base/test/file_bug945152_worker.js rename : content/base/test/file_general_document.html => dom/base/test/file_general_document.html rename : content/base/test/file_html_in_xhr.html => dom/base/test/file_html_in_xhr.html rename : content/base/test/file_html_in_xhr.sjs => dom/base/test/file_html_in_xhr.sjs rename : content/base/test/file_html_in_xhr2.html => dom/base/test/file_html_in_xhr2.html rename : content/base/test/file_html_in_xhr3.html => dom/base/test/file_html_in_xhr3.html rename : content/base/test/file_htmlserializer_1.html => dom/base/test/file_htmlserializer_1.html rename : content/base/test/file_htmlserializer_1_bodyonly.html => dom/base/test/file_htmlserializer_1_bodyonly.html rename : content/base/test/file_htmlserializer_1_format.html => dom/base/test/file_htmlserializer_1_format.html rename : content/base/test/file_htmlserializer_1_linebreak.html => dom/base/test/file_htmlserializer_1_linebreak.html rename : content/base/test/file_htmlserializer_1_links.html => dom/base/test/file_htmlserializer_1_links.html rename : content/base/test/file_htmlserializer_1_nested_body.html => dom/base/test/file_htmlserializer_1_nested_body.html rename : content/base/test/file_htmlserializer_1_no_body.html => dom/base/test/file_htmlserializer_1_no_body.html rename : content/base/test/file_htmlserializer_1_noflag.html => dom/base/test/file_htmlserializer_1_noflag.html rename : content/base/test/file_htmlserializer_1_noformatpre.html => dom/base/test/file_htmlserializer_1_noformatpre.html rename : content/base/test/file_htmlserializer_1_raw.html => dom/base/test/file_htmlserializer_1_raw.html rename : content/base/test/file_htmlserializer_1_sibling_body.html => dom/base/test/file_htmlserializer_1_sibling_body.html rename : content/base/test/file_htmlserializer_1_sibling_body_only_body.html => dom/base/test/file_htmlserializer_1_sibling_body_only_body.html rename : content/base/test/file_htmlserializer_1_wrap.html => dom/base/test/file_htmlserializer_1_wrap.html rename : content/base/test/file_htmlserializer_2.html => dom/base/test/file_htmlserializer_2.html rename : content/base/test/file_htmlserializer_2_basic.html => dom/base/test/file_htmlserializer_2_basic.html rename : content/base/test/file_htmlserializer_2_enthtml.html => dom/base/test/file_htmlserializer_2_enthtml.html rename : content/base/test/file_htmlserializer_2_entw3c.html => dom/base/test/file_htmlserializer_2_entw3c.html rename : content/base/test/file_htmlserializer_2_latin1.html => dom/base/test/file_htmlserializer_2_latin1.html rename : content/base/test/file_htmlserializer_ipv6.html => dom/base/test/file_htmlserializer_ipv6.html rename : content/base/test/file_htmlserializer_ipv6_out.html => dom/base/test/file_htmlserializer_ipv6_out.html rename : content/base/test/file_mixed_content_frameNavigation.html => dom/base/test/file_mixed_content_frameNavigation.html rename : content/base/test/file_mixed_content_frameNavigation_blankTarget.html => dom/base/test/file_mixed_content_frameNavigation_blankTarget.html rename : content/base/test/file_mixed_content_frameNavigation_grandchild.html => dom/base/test/file_mixed_content_frameNavigation_grandchild.html rename : content/base/test/file_mixed_content_frameNavigation_innermost.html => dom/base/test/file_mixed_content_frameNavigation_innermost.html rename : content/base/test/file_mixed_content_frameNavigation_secure.html => dom/base/test/file_mixed_content_frameNavigation_secure.html rename : content/base/test/file_mixed_content_frameNavigation_secure_grandchild.html => dom/base/test/file_mixed_content_frameNavigation_secure_grandchild.html rename : content/base/test/file_mixed_content_main.html => dom/base/test/file_mixed_content_main.html rename : content/base/test/file_mixed_content_main_bug803225.html => dom/base/test/file_mixed_content_main_bug803225.html rename : content/base/test/file_mixed_content_main_bug803225_websocket_wsh.py => dom/base/test/file_mixed_content_main_bug803225_websocket_wsh.py rename : content/base/test/file_mixed_content_server.sjs => dom/base/test/file_mixed_content_server.sjs rename : content/base/test/file_mozfiledataurl_audio.ogg => dom/base/test/file_mozfiledataurl_audio.ogg rename : content/base/test/file_mozfiledataurl_doc.html => dom/base/test/file_mozfiledataurl_doc.html rename : content/base/test/file_mozfiledataurl_img.jpg => dom/base/test/file_mozfiledataurl_img.jpg rename : content/base/test/file_mozfiledataurl_inner.html => dom/base/test/file_mozfiledataurl_inner.html rename : content/base/test/file_mozfiledataurl_text.txt => dom/base/test/file_mozfiledataurl_text.txt rename : content/base/test/file_restrictedEventSource.sjs => dom/base/test/file_restrictedEventSource.sjs rename : content/base/test/file_websocket_basic_wsh.py => dom/base/test/file_websocket_basic_wsh.py rename : content/base/test/file_websocket_hello_wsh.py => dom/base/test/file_websocket_hello_wsh.py rename : content/base/test/file_websocket_http_resource.txt => dom/base/test/file_websocket_http_resource.txt rename : content/base/test/file_websocket_wsh.py => dom/base/test/file_websocket_wsh.py rename : content/base/test/file_x-frame-options_main.html => dom/base/test/file_x-frame-options_main.html rename : content/base/test/file_x-frame-options_page.sjs => dom/base/test/file_x-frame-options_page.sjs rename : content/base/test/file_xhtmlserializer_1.xhtml => dom/base/test/file_xhtmlserializer_1.xhtml rename : content/base/test/file_xhtmlserializer_1_bodyonly.xhtml => dom/base/test/file_xhtmlserializer_1_bodyonly.xhtml rename : content/base/test/file_xhtmlserializer_1_format.xhtml => dom/base/test/file_xhtmlserializer_1_format.xhtml rename : content/base/test/file_xhtmlserializer_1_linebreak.xhtml => dom/base/test/file_xhtmlserializer_1_linebreak.xhtml rename : content/base/test/file_xhtmlserializer_1_links.xhtml => dom/base/test/file_xhtmlserializer_1_links.xhtml rename : content/base/test/file_xhtmlserializer_1_nested_body.xhtml => dom/base/test/file_xhtmlserializer_1_nested_body.xhtml rename : content/base/test/file_xhtmlserializer_1_no_body.xhtml => dom/base/test/file_xhtmlserializer_1_no_body.xhtml rename : content/base/test/file_xhtmlserializer_1_noflag.xhtml => dom/base/test/file_xhtmlserializer_1_noflag.xhtml rename : content/base/test/file_xhtmlserializer_1_noformatpre.xhtml => dom/base/test/file_xhtmlserializer_1_noformatpre.xhtml rename : content/base/test/file_xhtmlserializer_1_raw.xhtml => dom/base/test/file_xhtmlserializer_1_raw.xhtml rename : content/base/test/file_xhtmlserializer_1_sibling_body.xhtml => dom/base/test/file_xhtmlserializer_1_sibling_body.xhtml rename : content/base/test/file_xhtmlserializer_1_sibling_body_only_body.xhtml => dom/base/test/file_xhtmlserializer_1_sibling_body_only_body.xhtml rename : content/base/test/file_xhtmlserializer_1_wrap.xhtml => dom/base/test/file_xhtmlserializer_1_wrap.xhtml rename : content/base/test/file_xhtmlserializer_2.xhtml => dom/base/test/file_xhtmlserializer_2.xhtml rename : content/base/test/file_xhtmlserializer_2_basic.xhtml => dom/base/test/file_xhtmlserializer_2_basic.xhtml rename : content/base/test/file_xhtmlserializer_2_enthtml.xhtml => dom/base/test/file_xhtmlserializer_2_enthtml.xhtml rename : content/base/test/file_xhtmlserializer_2_entw3c.xhtml => dom/base/test/file_xhtmlserializer_2_entw3c.xhtml rename : content/base/test/file_xhtmlserializer_2_latin1.xhtml => dom/base/test/file_xhtmlserializer_2_latin1.xhtml rename : content/base/test/fileutils.js => dom/base/test/fileutils.js rename : content/base/test/forRemoval.resource => dom/base/test/forRemoval.resource rename : content/base/test/forRemoval.resource^headers^ => dom/base/test/forRemoval.resource^headers^ rename : content/base/test/formReset.html => dom/base/test/formReset.html rename : content/base/test/invalid_accesscontrol.resource => dom/base/test/invalid_accesscontrol.resource rename : content/base/test/invalid_accesscontrol.resource^headers^ => dom/base/test/invalid_accesscontrol.resource^headers^ rename : content/base/test/mochitest-child-permissions.ini => dom/base/test/mochitest-child-permissions.ini rename : content/base/test/moz.build => dom/base/test/moz.build rename : content/base/test/mutationobserver_dialog.html => dom/base/test/mutationobserver_dialog.html rename : content/base/test/progressserver.sjs => dom/base/test/progressserver.sjs rename : content/base/test/reftest/mixed-bmp-png.ico => dom/base/test/reftest/mixed-bmp-png.ico rename : content/base/test/reftest/reftest.list => dom/base/test/reftest/reftest.list rename : content/base/test/reftest/test_bug920877-ref.html => dom/base/test/reftest/test_bug920877-ref.html rename : content/base/test/reftest/test_bug920877.html => dom/base/test/reftest/test_bug920877.html rename : content/base/test/responseIdentical.sjs => dom/base/test/responseIdentical.sjs rename : content/base/test/script-1_bug597345.sjs => dom/base/test/script-1_bug597345.sjs rename : content/base/test/script-2_bug597345.js => dom/base/test/script-2_bug597345.js rename : content/base/test/script_bug602838.sjs => dom/base/test/script_bug602838.sjs rename : content/base/test/send_gzip_content.sjs => dom/base/test/send_gzip_content.sjs rename : content/base/test/somedatas.resource => dom/base/test/somedatas.resource rename : content/base/test/somedatas.resource^headers^ => dom/base/test/somedatas.resource^headers^ rename : content/base/test/test_CrossSiteXHR.html => dom/base/test/test_CrossSiteXHR.html rename : content/base/test/test_CrossSiteXHR_cache.html => dom/base/test/test_CrossSiteXHR_cache.html rename : content/base/test/test_CrossSiteXHR_origin.html => dom/base/test/test_CrossSiteXHR_origin.html rename : content/base/test/test_DOMException.html => dom/base/test/test_DOMException.html rename : content/base/test/test_EventSource_redirects.html => dom/base/test/test_EventSource_redirects.html rename : content/base/test/test_NodeIterator_basics_filters.xhtml => dom/base/test/test_NodeIterator_basics_filters.xhtml rename : content/base/test/test_NodeIterator_mutations_1.xhtml => dom/base/test/test_NodeIterator_mutations_1.xhtml rename : content/base/test/test_NodeIterator_mutations_2.html => dom/base/test/test_NodeIterator_mutations_2.html rename : content/base/test/test_NodeIterator_mutations_3.html => dom/base/test/test_NodeIterator_mutations_3.html rename : content/base/test/test_XHR.html => dom/base/test/test_XHR.html rename : content/base/test/test_XHRDocURI.html => dom/base/test/test_XHRDocURI.html rename : content/base/test/test_XHRResponseURL.html => dom/base/test/test_XHRResponseURL.html rename : content/base/test/test_XHRSendData.html => dom/base/test/test_XHRSendData.html rename : content/base/test/test_XHR_anon.html => dom/base/test/test_XHR_anon.html rename : content/base/test/test_XHR_header.html => dom/base/test/test_XHR_header.html rename : content/base/test/test_XHR_onuploadprogress.html => dom/base/test/test_XHR_onuploadprogress.html rename : content/base/test/test_XHR_parameters.html => dom/base/test/test_XHR_parameters.html rename : content/base/test/test_XHR_system.html => dom/base/test/test_XHR_system.html rename : content/base/test/test_XHR_timeout.html => dom/base/test/test_XHR_timeout.html rename : content/base/test/test_XHR_timeout.js => dom/base/test/test_XHR_timeout.js rename : content/base/test/test_base.xhtml => dom/base/test/test_base.xhtml rename : content/base/test/test_blobconstructor.html => dom/base/test/test_blobconstructor.html rename : content/base/test/test_bug1008126.html => dom/base/test/test_bug1008126.html rename : content/base/test/test_bug1011748.html => dom/base/test/test_bug1011748.html rename : content/base/test/test_bug1025933.html => dom/base/test/test_bug1025933.html rename : content/base/test/test_bug1057176.html => dom/base/test/test_bug1057176.html rename : content/base/test/test_bug1081686.html => dom/base/test/test_bug1081686.html rename : content/base/test/test_bug166235.html => dom/base/test/test_bug166235.html rename : content/base/test/test_bug199959.html => dom/base/test/test_bug199959.html rename : content/base/test/test_bug218236.html => dom/base/test/test_bug218236.html rename : content/base/test/test_bug218277.html => dom/base/test/test_bug218277.html rename : content/base/test/test_bug238409.html => dom/base/test/test_bug238409.html rename : content/base/test/test_bug254337.html => dom/base/test/test_bug254337.html rename : content/base/test/test_bug270145.xhtml => dom/base/test/test_bug270145.xhtml rename : content/base/test/test_bug276037-1.html => dom/base/test/test_bug276037-1.html rename : content/base/test/test_bug276037-2.xhtml => dom/base/test/test_bug276037-2.xhtml rename : content/base/test/test_bug282547.html => dom/base/test/test_bug282547.html rename : content/base/test/test_bug28293.html => dom/base/test/test_bug28293.html rename : content/base/test/test_bug28293.xhtml => dom/base/test/test_bug28293.xhtml rename : content/base/test/test_bug298064.html => dom/base/test/test_bug298064.html rename : content/base/test/test_bug300992.html => dom/base/test/test_bug300992.html rename : content/base/test/test_bug311681.xml => dom/base/test/test_bug311681.xml rename : content/base/test/test_bug313646.html => dom/base/test/test_bug313646.html rename : content/base/test/test_bug320799.html => dom/base/test/test_bug320799.html rename : content/base/test/test_bug322317.html => dom/base/test/test_bug322317.html rename : content/base/test/test_bug326337.html => dom/base/test/test_bug326337.html rename : content/base/test/test_bug330925.xhtml => dom/base/test/test_bug330925.xhtml rename : content/base/test/test_bug331959.html => dom/base/test/test_bug331959.html rename : content/base/test/test_bug333198.html => dom/base/test/test_bug333198.html rename : content/base/test/test_bug333673.html => dom/base/test/test_bug333673.html rename : content/base/test/test_bug337631.html => dom/base/test/test_bug337631.html rename : content/base/test/test_bug338541.xhtml => dom/base/test/test_bug338541.xhtml rename : content/base/test/test_bug338583.html => dom/base/test/test_bug338583.html rename : content/base/test/test_bug338679.html => dom/base/test/test_bug338679.html rename : content/base/test/test_bug339494.html => dom/base/test/test_bug339494.html rename : content/base/test/test_bug339494.xhtml => dom/base/test/test_bug339494.xhtml rename : content/base/test/test_bug340571.html => dom/base/test/test_bug340571.html rename : content/base/test/test_bug343596.html => dom/base/test/test_bug343596.html rename : content/base/test/test_bug345339.html => dom/base/test/test_bug345339.html rename : content/base/test/test_bug346485.html => dom/base/test/test_bug346485.html rename : content/base/test/test_bug352728.html => dom/base/test/test_bug352728.html rename : content/base/test/test_bug352728.xhtml => dom/base/test/test_bug352728.xhtml rename : content/base/test/test_bug353334.html => dom/base/test/test_bug353334.html rename : content/base/test/test_bug355026.html => dom/base/test/test_bug355026.html rename : content/base/test/test_bug357450.html => dom/base/test/test_bug357450.html rename : content/base/test/test_bug357450.js => dom/base/test/test_bug357450.js rename : content/base/test/test_bug357450.xhtml => dom/base/test/test_bug357450.xhtml rename : content/base/test/test_bug357450_svg.xhtml => dom/base/test/test_bug357450_svg.xhtml rename : content/base/test/test_bug357509.html => dom/base/test/test_bug357509.html rename : content/base/test/test_bug358660.html => dom/base/test/test_bug358660.html rename : content/base/test/test_bug362391.xhtml => dom/base/test/test_bug362391.xhtml rename : content/base/test/test_bug364092.xhtml => dom/base/test/test_bug364092.xhtml rename : content/base/test/test_bug364413.xhtml => dom/base/test/test_bug364413.xhtml rename : content/base/test/test_bug366944.html => dom/base/test/test_bug366944.html rename : content/base/test/test_bug366946.html => dom/base/test/test_bug366946.html rename : content/base/test/test_bug367164.html => dom/base/test/test_bug367164.html rename : content/base/test/test_bug368972.html => dom/base/test/test_bug368972.html rename : content/base/test/test_bug371576-2.html => dom/base/test/test_bug371576-2.html rename : content/base/test/test_bug371576-3.html => dom/base/test/test_bug371576-3.html rename : content/base/test/test_bug371576-4.html => dom/base/test/test_bug371576-4.html rename : content/base/test/test_bug371576-5.html => dom/base/test/test_bug371576-5.html rename : content/base/test/test_bug372086.html => dom/base/test/test_bug372086.html rename : content/base/test/test_bug372964-2.html => dom/base/test/test_bug372964-2.html rename : content/base/test/test_bug372964.html => dom/base/test/test_bug372964.html rename : content/base/test/test_bug373181.xhtml => dom/base/test/test_bug373181.xhtml rename : content/base/test/test_bug375314.html => dom/base/test/test_bug375314.html rename : content/base/test/test_bug378969.html => dom/base/test/test_bug378969.html rename : content/base/test/test_bug380418.html => dom/base/test/test_bug380418.html rename : content/base/test/test_bug380418.html^headers^ => dom/base/test/test_bug380418.html^headers^ rename : content/base/test/test_bug382113.html => dom/base/test/test_bug382113.html rename : content/base/test/test_bug382871.html => dom/base/test/test_bug382871.html rename : content/base/test/test_bug384003.xhtml => dom/base/test/test_bug384003.xhtml rename : content/base/test/test_bug390219.html => dom/base/test/test_bug390219.html rename : content/base/test/test_bug390735.html => dom/base/test/test_bug390735.html rename : content/base/test/test_bug392318.html => dom/base/test/test_bug392318.html rename : content/base/test/test_bug392511.html => dom/base/test/test_bug392511.html rename : content/base/test/test_bug393968.html => dom/base/test/test_bug393968.html rename : content/base/test/test_bug395915.html => dom/base/test/test_bug395915.html rename : content/base/test/test_bug397234.html => dom/base/test/test_bug397234.html rename : content/base/test/test_bug398243.html => dom/base/test/test_bug398243.html rename : content/base/test/test_bug401662.html => dom/base/test/test_bug401662.html rename : content/base/test/test_bug402150.html => dom/base/test/test_bug402150.html rename : content/base/test/test_bug402150.html^headers^ => dom/base/test/test_bug402150.html^headers^ rename : content/base/test/test_bug403841.html => dom/base/test/test_bug403841.html rename : content/base/test/test_bug403852.html => dom/base/test/test_bug403852.html rename : content/base/test/test_bug403868.xml => dom/base/test/test_bug403868.xml rename : content/base/test/test_bug405182.html => dom/base/test/test_bug405182.html rename : content/base/test/test_bug409380.html => dom/base/test/test_bug409380.html rename : content/base/test/test_bug410229.html => dom/base/test/test_bug410229.html rename : content/base/test/test_bug413974.html => dom/base/test/test_bug413974.html rename : content/base/test/test_bug414190.html => dom/base/test/test_bug414190.html rename : content/base/test/test_bug415860.html => dom/base/test/test_bug415860.html rename : content/base/test/test_bug416317-1.html => dom/base/test/test_bug416317-1.html rename : content/base/test/test_bug416317-2.html => dom/base/test/test_bug416317-2.html rename : content/base/test/test_bug416383.html => dom/base/test/test_bug416383.html rename : content/base/test/test_bug417255.html => dom/base/test/test_bug417255.html rename : content/base/test/test_bug417384.html => dom/base/test/test_bug417384.html rename : content/base/test/test_bug418214.html => dom/base/test/test_bug418214.html rename : content/base/test/test_bug419132.html => dom/base/test/test_bug419132.html rename : content/base/test/test_bug419527.xhtml => dom/base/test/test_bug419527.xhtml rename : content/base/test/test_bug420609.xhtml => dom/base/test/test_bug420609.xhtml rename : content/base/test/test_bug420700.html => dom/base/test/test_bug420700.html rename : content/base/test/test_bug421602.html => dom/base/test/test_bug421602.html rename : content/base/test/test_bug422403-1.html => dom/base/test/test_bug422403-1.html rename : content/base/test/test_bug422403-2.xhtml => dom/base/test/test_bug422403-2.xhtml rename : content/base/test/test_bug422537.html => dom/base/test/test_bug422537.html rename : content/base/test/test_bug424212.html => dom/base/test/test_bug424212.html rename : content/base/test/test_bug424359-1.html => dom/base/test/test_bug424359-1.html rename : content/base/test/test_bug424359-2.html => dom/base/test/test_bug424359-2.html rename : content/base/test/test_bug425013.html => dom/base/test/test_bug425013.html rename : content/base/test/test_bug426308.html => dom/base/test/test_bug426308.html rename : content/base/test/test_bug426646.html => dom/base/test/test_bug426646.html rename : content/base/test/test_bug428847.html => dom/base/test/test_bug428847.html rename : content/base/test/test_bug429157.html => dom/base/test/test_bug429157.html rename : content/base/test/test_bug431082.html => dom/base/test/test_bug431082.html rename : content/base/test/test_bug431701.html => dom/base/test/test_bug431701.html rename : content/base/test/test_bug431833.html => dom/base/test/test_bug431833.html rename : content/base/test/test_bug433533.html => dom/base/test/test_bug433533.html rename : content/base/test/test_bug433662.html => dom/base/test/test_bug433662.html rename : content/base/test/test_bug435425.html => dom/base/test/test_bug435425.html rename : content/base/test/test_bug438519.html => dom/base/test/test_bug438519.html rename : content/base/test/test_bug444030.xhtml => dom/base/test/test_bug444030.xhtml rename : content/base/test/test_bug444322.html => dom/base/test/test_bug444322.html rename : content/base/test/test_bug444546.html => dom/base/test/test_bug444546.html rename : content/base/test/test_bug444722.html => dom/base/test/test_bug444722.html rename : content/base/test/test_bug448993.html => dom/base/test/test_bug448993.html rename : content/base/test/test_bug450160.html => dom/base/test/test_bug450160.html rename : content/base/test/test_bug451376.html => dom/base/test/test_bug451376.html rename : content/base/test/test_bug453521.html => dom/base/test/test_bug453521.html rename : content/base/test/test_bug453736.html => dom/base/test/test_bug453736.html rename : content/base/test/test_bug454325.html => dom/base/test/test_bug454325.html rename : content/base/test/test_bug454326.html => dom/base/test/test_bug454326.html rename : content/base/test/test_bug455472.html => dom/base/test/test_bug455472.html rename : content/base/test/test_bug455629.html => dom/base/test/test_bug455629.html rename : content/base/test/test_bug456262.html => dom/base/test/test_bug456262.html rename : content/base/test/test_bug457746.html => dom/base/test/test_bug457746.html rename : content/base/test/test_bug459424.html => dom/base/test/test_bug459424.html rename : content/base/test/test_bug461555.html => dom/base/test/test_bug461555.html rename : content/base/test/test_bug461735.html => dom/base/test/test_bug461735.html rename : content/base/test/test_bug465767.html => dom/base/test/test_bug465767.html rename : content/base/test/test_bug466080.html => dom/base/test/test_bug466080.html rename : content/base/test/test_bug466409.html => dom/base/test/test_bug466409.html rename : content/base/test/test_bug466751.xhtml => dom/base/test/test_bug466751.xhtml rename : content/base/test/test_bug469020.html => dom/base/test/test_bug469020.html rename : content/base/test/test_bug469304.html => dom/base/test/test_bug469304.html rename : content/base/test/test_bug473162-1.html => dom/base/test/test_bug473162-1.html rename : content/base/test/test_bug473162-2.html => dom/base/test/test_bug473162-2.html rename : content/base/test/test_bug475156.html => dom/base/test/test_bug475156.html rename : content/base/test/test_bug482935.html => dom/base/test/test_bug482935.html rename : content/base/test/test_bug484396.html => dom/base/test/test_bug484396.html rename : content/base/test/test_bug493881.html => dom/base/test/test_bug493881.html rename : content/base/test/test_bug493881.js => dom/base/test/test_bug493881.js rename : content/base/test/test_bug498240.html => dom/base/test/test_bug498240.html rename : content/base/test/test_bug498433.html => dom/base/test/test_bug498433.html rename : content/base/test/test_bug498897.html => dom/base/test/test_bug498897.html rename : content/base/test/test_bug499656.html => dom/base/test/test_bug499656.html rename : content/base/test/test_bug499656.xhtml => dom/base/test/test_bug499656.xhtml rename : content/base/test/test_bug500937.html => dom/base/test/test_bug500937.html rename : content/base/test/test_bug503473.html => dom/base/test/test_bug503473.html rename : content/base/test/test_bug503481.html => dom/base/test/test_bug503481.html rename : content/base/test/test_bug503481b.html => dom/base/test/test_bug503481b.html rename : content/base/test/test_bug505783.html => dom/base/test/test_bug505783.html rename : content/base/test/test_bug51034.html => dom/base/test/test_bug51034.html rename : content/base/test/test_bug513194.html => dom/base/test/test_bug513194.html rename : content/base/test/test_bug5141.html => dom/base/test/test_bug5141.html rename : content/base/test/test_bug514487.html => dom/base/test/test_bug514487.html rename : content/base/test/test_bug515401.html => dom/base/test/test_bug515401.html rename : content/base/test/test_bug518104.html => dom/base/test/test_bug518104.html rename : content/base/test/test_bug527896.html => dom/base/test/test_bug527896.html rename : content/base/test/test_bug540854.html => dom/base/test/test_bug540854.html rename : content/base/test/test_bug541937.html => dom/base/test/test_bug541937.html rename : content/base/test/test_bug544642.html => dom/base/test/test_bug544642.html rename : content/base/test/test_bug545644.html => dom/base/test/test_bug545644.html rename : content/base/test/test_bug545644.xhtml => dom/base/test/test_bug545644.xhtml rename : content/base/test/test_bug548463.html => dom/base/test/test_bug548463.html rename : content/base/test/test_bug553896.xhtml => dom/base/test/test_bug553896.xhtml rename : content/base/test/test_bug557892.html => dom/base/test/test_bug557892.html rename : content/base/test/test_bug558726.html => dom/base/test/test_bug558726.html rename : content/base/test/test_bug559526.html => dom/base/test/test_bug559526.html rename : content/base/test/test_bug560780.html => dom/base/test/test_bug560780.html rename : content/base/test/test_bug562137.html => dom/base/test/test_bug562137.html rename : content/base/test/test_bug562169-1.html => dom/base/test/test_bug562169-1.html rename : content/base/test/test_bug562169-2.html => dom/base/test/test_bug562169-2.html rename : content/base/test/test_bug562652.html => dom/base/test/test_bug562652.html rename : content/base/test/test_bug564047.html => dom/base/test/test_bug564047.html rename : content/base/test/test_bug564863.xhtml => dom/base/test/test_bug564863.xhtml rename : content/base/test/test_bug567350.html => dom/base/test/test_bug567350.html rename : content/base/test/test_bug578096.html => dom/base/test/test_bug578096.html rename : content/base/test/test_bug585978.html => dom/base/test/test_bug585978.html rename : content/base/test/test_bug587931.html => dom/base/test/test_bug587931.html rename : content/base/test/test_bug588990.html => dom/base/test/test_bug588990.html rename : content/base/test/test_bug590812.html => dom/base/test/test_bug590812.html rename : content/base/test/test_bug590870.html => dom/base/test/test_bug590870.html rename : content/base/test/test_bug592366.html => dom/base/test/test_bug592366.html rename : content/base/test/test_bug592829.html => dom/base/test/test_bug592829.html rename : content/base/test/test_bug597345.html => dom/base/test/test_bug597345.html rename : content/base/test/test_bug599588.html => dom/base/test/test_bug599588.html rename : content/base/test/test_bug601803.html => dom/base/test/test_bug601803.html rename : content/base/test/test_bug602838.html => dom/base/test/test_bug602838.html rename : content/base/test/test_bug604592.html => dom/base/test/test_bug604592.html rename : content/base/test/test_bug604660.html => dom/base/test/test_bug604660.html rename : content/base/test/test_bug605982.html => dom/base/test/test_bug605982.html rename : content/base/test/test_bug606729.html => dom/base/test/test_bug606729.html rename : content/base/test/test_bug614058.html => dom/base/test/test_bug614058.html rename : content/base/test/test_bug614583.html => dom/base/test/test_bug614583.html rename : content/base/test/test_bug622088.html => dom/base/test/test_bug622088.html rename : content/base/test/test_bug622117.html => dom/base/test/test_bug622117.html rename : content/base/test/test_bug622246.html => dom/base/test/test_bug622246.html rename : content/base/test/test_bug625722.html => dom/base/test/test_bug625722.html rename : content/base/test/test_bug626262.html => dom/base/test/test_bug626262.html rename : content/base/test/test_bug628938.html => dom/base/test/test_bug628938.html rename : content/base/test/test_bug631615.html => dom/base/test/test_bug631615.html rename : content/base/test/test_bug638112.html => dom/base/test/test_bug638112.html rename : content/base/test/test_bug647518.html => dom/base/test/test_bug647518.html rename : content/base/test/test_bug650001.html => dom/base/test/test_bug650001.html rename : content/base/test/test_bug656283.html => dom/base/test/test_bug656283.html rename : content/base/test/test_bug664916.html => dom/base/test/test_bug664916.html rename : content/base/test/test_bug666604.html => dom/base/test/test_bug666604.html rename : content/base/test/test_bug675121.html => dom/base/test/test_bug675121.html rename : content/base/test/test_bug675166.html => dom/base/test/test_bug675166.html rename : content/base/test/test_bug682463.html => dom/base/test/test_bug682463.html rename : content/base/test/test_bug682554.html => dom/base/test/test_bug682554.html rename : content/base/test/test_bug682592.html => dom/base/test/test_bug682592.html rename : content/base/test/test_bug684671.html => dom/base/test/test_bug684671.html rename : content/base/test/test_bug685798.html => dom/base/test/test_bug685798.html rename : content/base/test/test_bug686449.xhtml => dom/base/test/test_bug686449.xhtml rename : content/base/test/test_bug687859.html => dom/base/test/test_bug687859.html rename : content/base/test/test_bug690056.html => dom/base/test/test_bug690056.html rename : content/base/test/test_bug692434.html => dom/base/test/test_bug692434.html rename : content/base/test/test_bug693615.html => dom/base/test/test_bug693615.html rename : content/base/test/test_bug693875.html => dom/base/test/test_bug693875.html rename : content/base/test/test_bug694754.xhtml => dom/base/test/test_bug694754.xhtml rename : content/base/test/test_bug696301-1.html => dom/base/test/test_bug696301-1.html rename : content/base/test/test_bug696301-2.html => dom/base/test/test_bug696301-2.html rename : content/base/test/test_bug698381.html => dom/base/test/test_bug698381.html rename : content/base/test/test_bug698384.html => dom/base/test/test_bug698384.html rename : content/base/test/test_bug704063.html => dom/base/test/test_bug704063.html rename : content/base/test/test_bug707142.html => dom/base/test/test_bug707142.html rename : content/base/test/test_bug708620.html => dom/base/test/test_bug708620.html rename : content/base/test/test_bug711047.html => dom/base/test/test_bug711047.html rename : content/base/test/test_bug711180.html => dom/base/test/test_bug711180.html rename : content/base/test/test_bug719533.html => dom/base/test/test_bug719533.html rename : content/base/test/test_bug726364.html => dom/base/test/test_bug726364.html rename : content/base/test/test_bug737087.html => dom/base/test/test_bug737087.html rename : content/base/test/test_bug737565.html => dom/base/test/test_bug737565.html rename : content/base/test/test_bug737612.html => dom/base/test/test_bug737612.html rename : content/base/test/test_bug738108.html => dom/base/test/test_bug738108.html rename : content/base/test/test_bug744830.html => dom/base/test/test_bug744830.html rename : content/base/test/test_bug749367.html => dom/base/test/test_bug749367.html rename : content/base/test/test_bug753278.html => dom/base/test/test_bug753278.html rename : content/base/test/test_bug761120.html => dom/base/test/test_bug761120.html rename : content/base/test/test_bug782342.html => dom/base/test/test_bug782342.html rename : content/base/test/test_bug787778.html => dom/base/test/test_bug787778.html rename : content/base/test/test_bug789856.html => dom/base/test/test_bug789856.html rename : content/base/test/test_bug804395.html => dom/base/test/test_bug804395.html rename : content/base/test/test_bug809003.html => dom/base/test/test_bug809003.html rename : content/base/test/test_bug810494.html => dom/base/test/test_bug810494.html rename : content/base/test/test_bug811701.html => dom/base/test/test_bug811701.html rename : content/base/test/test_bug811701.xhtml => dom/base/test/test_bug811701.xhtml rename : content/base/test/test_bug813919.html => dom/base/test/test_bug813919.html rename : content/base/test/test_bug814576.html => dom/base/test/test_bug814576.html rename : content/base/test/test_bug819051.html => dom/base/test/test_bug819051.html rename : content/base/test/test_bug820909.html => dom/base/test/test_bug820909.html rename : content/base/test/test_bug827160.html => dom/base/test/test_bug827160.html rename : content/base/test/test_bug840098.html => dom/base/test/test_bug840098.html rename : content/base/test/test_bug864595.html => dom/base/test/test_bug864595.html rename : content/base/test/test_bug868999.html => dom/base/test/test_bug868999.html rename : content/base/test/test_bug869000.html => dom/base/test/test_bug869000.html rename : content/base/test/test_bug869002.html => dom/base/test/test_bug869002.html rename : content/base/test/test_bug869006.html => dom/base/test/test_bug869006.html rename : content/base/test/test_bug876282.html => dom/base/test/test_bug876282.html rename : content/base/test/test_bug890580.html => dom/base/test/test_bug890580.html rename : content/base/test/test_bug891952.html => dom/base/test/test_bug891952.html rename : content/base/test/test_bug894874.html => dom/base/test/test_bug894874.html rename : content/base/test/test_bug895239.html => dom/base/test/test_bug895239.html rename : content/base/test/test_bug895974.html => dom/base/test/test_bug895974.html rename : content/base/test/test_bug902847.html => dom/base/test/test_bug902847.html rename : content/base/test/test_bug907892.html => dom/base/test/test_bug907892.html rename : content/base/test/test_bug922681.html => dom/base/test/test_bug922681.html rename : content/base/test/test_bug927196.html => dom/base/test/test_bug927196.html rename : content/base/test/test_bug945152.html => dom/base/test/test_bug945152.html rename : content/base/test/test_bug982153.html => dom/base/test/test_bug982153.html rename : content/base/test/test_caretPositionFromPoint.html => dom/base/test/test_caretPositionFromPoint.html rename : content/base/test/test_child_process_shutdown_message.html => dom/base/test/test_child_process_shutdown_message.html rename : content/base/test/test_classList.html => dom/base/test/test_classList.html rename : content/base/test/test_copyimage.html => dom/base/test/test_copyimage.html rename : content/base/test/test_copypaste.html => dom/base/test/test_copypaste.html rename : content/base/test/test_copypaste.xhtml => dom/base/test/test_copypaste.xhtml rename : content/base/test/test_copypaste.xul => dom/base/test/test_copypaste.xul rename : content/base/test/test_createHTMLDocument.html => dom/base/test/test_createHTMLDocument.html rename : content/base/test/test_declare_stylesheet_obsolete.html => dom/base/test/test_declare_stylesheet_obsolete.html rename : content/base/test/test_document_constructor.html => dom/base/test/test_document_constructor.html rename : content/base/test/test_domparser_null_char.html => dom/base/test/test_domparser_null_char.html rename : content/base/test/test_domparsing.html => dom/base/test/test_domparsing.html rename : content/base/test/test_element.matches.html => dom/base/test/test_element.matches.html rename : content/base/test/test_elementTraversal.html => dom/base/test/test_elementTraversal.html rename : content/base/test/test_element_closest.html => dom/base/test/test_element_closest.html rename : content/base/test/test_encodeToStringWithMaxLength.html => dom/base/test/test_encodeToStringWithMaxLength.html rename : content/base/test/test_file_from_blob.html => dom/base/test/test_file_from_blob.html rename : content/base/test/test_fileapi.html => dom/base/test/test_fileapi.html rename : content/base/test/test_fileapi_slice.html => dom/base/test/test_fileapi_slice.html rename : content/base/test/test_getElementById.html => dom/base/test/test_getElementById.html rename : content/base/test/test_html_colors_quirks.html => dom/base/test/test_html_colors_quirks.html rename : content/base/test/test_html_colors_standards.html => dom/base/test/test_html_colors_standards.html rename : content/base/test/test_html_in_xhr.html => dom/base/test/test_html_in_xhr.html rename : content/base/test/test_htmlcopyencoder.html => dom/base/test/test_htmlcopyencoder.html rename : content/base/test/test_htmlcopyencoder.xhtml => dom/base/test/test_htmlcopyencoder.xhtml rename : content/base/test/test_ipc_messagemanager_blob.html => dom/base/test/test_ipc_messagemanager_blob.html rename : content/base/test/test_messagemanager_assertpermission.html => dom/base/test/test_messagemanager_assertpermission.html rename : content/base/test/test_messagemanager_principal.html => dom/base/test/test_messagemanager_principal.html rename : content/base/test/test_messagemanager_send_principal.html => dom/base/test/test_messagemanager_send_principal.html rename : content/base/test/test_meta_viewport0.html => dom/base/test/test_meta_viewport0.html rename : content/base/test/test_meta_viewport1.html => dom/base/test/test_meta_viewport1.html rename : content/base/test/test_meta_viewport2.html => dom/base/test/test_meta_viewport2.html rename : content/base/test/test_meta_viewport3.html => dom/base/test/test_meta_viewport3.html rename : content/base/test/test_meta_viewport4.html => dom/base/test/test_meta_viewport4.html rename : content/base/test/test_meta_viewport5.html => dom/base/test/test_meta_viewport5.html rename : content/base/test/test_meta_viewport6.html => dom/base/test/test_meta_viewport6.html rename : content/base/test/test_mixed_content_blocker.html => dom/base/test/test_mixed_content_blocker.html rename : content/base/test/test_mixed_content_blocker_bug803225.html => dom/base/test/test_mixed_content_blocker_bug803225.html rename : content/base/test/test_mixed_content_blocker_frameNavigation.html => dom/base/test/test_mixed_content_blocker_frameNavigation.html rename : content/base/test/test_mozMatchesSelector.html => dom/base/test/test_mozMatchesSelector.html rename : content/base/test/test_mozfiledataurl.html => dom/base/test/test_mozfiledataurl.html rename : content/base/test/test_mutationobservers.html => dom/base/test/test_mutationobservers.html rename : content/base/test/test_nodelist_holes.html => dom/base/test/test_nodelist_holes.html rename : content/base/test/test_object.html => dom/base/test/test_object.html rename : content/base/test/test_plugin_freezing.html => dom/base/test/test_plugin_freezing.html rename : content/base/test/test_processing_instruction_update_stylesheet.xhtml => dom/base/test/test_processing_instruction_update_stylesheet.xhtml rename : content/base/test/test_progress_events_for_gzip_data.html => dom/base/test/test_progress_events_for_gzip_data.html rename : content/base/test/test_range_bounds.html => dom/base/test/test_range_bounds.html rename : content/base/test/test_reentrant_flush.html => dom/base/test/test_reentrant_flush.html rename : content/base/test/test_sync_xhr_timer.xhtml => dom/base/test/test_sync_xhr_timer.xhtml rename : content/base/test/test_text_wholeText.html => dom/base/test/test_text_wholeText.html rename : content/base/test/test_textnode_normalize_in_selection.html => dom/base/test/test_textnode_normalize_in_selection.html rename : content/base/test/test_textnode_split_in_selection.html => dom/base/test/test_textnode_split_in_selection.html rename : content/base/test/test_title.html => dom/base/test/test_title.html rename : content/base/test/test_treewalker_nextsibling.xml => dom/base/test/test_treewalker_nextsibling.xml rename : content/base/test/test_user_select.html => dom/base/test/test_user_select.html rename : content/base/test/test_viewport_scroll.html => dom/base/test/test_viewport_scroll.html rename : content/base/test/test_viewsource_forbidden_in_object.html => dom/base/test/test_viewsource_forbidden_in_object.html rename : content/base/test/test_w3element_traversal.html => dom/base/test/test_w3element_traversal.html rename : content/base/test/test_w3element_traversal.xhtml => dom/base/test/test_w3element_traversal.xhtml rename : content/base/test/test_w3element_traversal_svg.html => dom/base/test/test_w3element_traversal_svg.html rename : content/base/test/test_warning_for_blocked_cross_site_request.html => dom/base/test/test_warning_for_blocked_cross_site_request.html rename : content/base/test/test_websocket.html => dom/base/test/test_websocket.html rename : content/base/test/test_websocket_basic.html => dom/base/test/test_websocket_basic.html rename : content/base/test/test_websocket_hello.html => dom/base/test/test_websocket_hello.html rename : content/base/test/test_x-frame-options.html => dom/base/test/test_x-frame-options.html rename : content/base/test/test_xbl_userdata.xhtml => dom/base/test/test_xbl_userdata.xhtml rename : content/base/test/test_xhr_abort_after_load.html => dom/base/test/test_xhr_abort_after_load.html rename : content/base/test/test_xhr_forbidden_headers.html => dom/base/test/test_xhr_forbidden_headers.html rename : content/base/test/test_xhr_progressevents.html => dom/base/test/test_xhr_progressevents.html rename : content/base/test/test_xhr_send_readystate.html => dom/base/test/test_xhr_send_readystate.html rename : content/base/test/test_xhr_withCredentials.html => dom/base/test/test_xhr_withCredentials.html rename : content/base/test/unit/1_original.xml => dom/base/test/unit/1_original.xml rename : content/base/test/unit/1_result.xml => dom/base/test/unit/1_result.xml rename : content/base/test/unit/2_original.xml => dom/base/test/unit/2_original.xml rename : content/base/test/unit/2_result_1.xml => dom/base/test/unit/2_result_1.xml rename : content/base/test/unit/2_result_2.xml => dom/base/test/unit/2_result_2.xml rename : content/base/test/unit/2_result_3.xml => dom/base/test/unit/2_result_3.xml rename : content/base/test/unit/2_result_4.xml => dom/base/test/unit/2_result_4.xml rename : content/base/test/unit/3_original.xml => dom/base/test/unit/3_original.xml rename : content/base/test/unit/3_result.xml => dom/base/test/unit/3_result.xml rename : content/base/test/unit/3_result_2.xml => dom/base/test/unit/3_result_2.xml rename : content/base/test/unit/4_original.xml => dom/base/test/unit/4_original.xml rename : content/base/test/unit/4_result_1.xml => dom/base/test/unit/4_result_1.xml rename : content/base/test/unit/4_result_2.xml => dom/base/test/unit/4_result_2.xml rename : content/base/test/unit/4_result_3.xml => dom/base/test/unit/4_result_3.xml rename : content/base/test/unit/4_result_4.xml => dom/base/test/unit/4_result_4.xml rename : content/base/test/unit/4_result_5.xml => dom/base/test/unit/4_result_5.xml rename : content/base/test/unit/4_result_6.xml => dom/base/test/unit/4_result_6.xml rename : content/base/test/unit/head_utilities.js => dom/base/test/unit/head_utilities.js rename : content/base/test/unit/test_bug553888.js => dom/base/test/unit/test_bug553888.js rename : content/base/test/unit/test_bug737966.js => dom/base/test/unit/test_bug737966.js rename : content/base/test/unit/test_cspreports.js => dom/base/test/unit/test_cspreports.js rename : content/base/test/unit/test_error_codes.js => dom/base/test/unit/test_error_codes.js rename : content/base/test/unit/test_thirdpartyutil.js => dom/base/test/unit/test_thirdpartyutil.js rename : content/base/test/unit/test_xhr_document.js => dom/base/test/unit/test_xhr_document.js rename : content/base/test/unit/test_xhr_standalone.js => dom/base/test/unit/test_xhr_standalone.js rename : content/base/test/unit/test_xmlserializer.js => dom/base/test/unit/test_xmlserializer.js rename : content/base/test/unit/xpcshell.ini => dom/base/test/unit/xpcshell.ini rename : content/base/test/unit_ipc/test_bug553888_wrap.js => dom/base/test/unit_ipc/test_bug553888_wrap.js rename : content/base/test/unit_ipc/test_xhr_document_ipc.js => dom/base/test/unit_ipc/test_xhr_document_ipc.js rename : content/base/test/unit_ipc/xpcshell.ini => dom/base/test/unit_ipc/xpcshell.ini rename : content/base/test/variable_style_sheet.sjs => dom/base/test/variable_style_sheet.sjs rename : content/base/test/viewport_helpers.js => dom/base/test/viewport_helpers.js rename : content/base/test/w3element_traversal.svg => dom/base/test/w3element_traversal.svg rename : content/base/test/websocket_hybi/file_binary-frames_wsh.py => dom/base/test/websocket_hybi/file_binary-frames_wsh.py rename : content/base/test/websocket_hybi/file_check-binary-messages_wsh.py => dom/base/test/websocket_hybi/file_check-binary-messages_wsh.py rename : content/base/test/websocket_hybi/mochitest.ini => dom/base/test/websocket_hybi/mochitest.ini rename : content/base/test/websocket_hybi/test_receive-arraybuffer.html => dom/base/test/websocket_hybi/test_receive-arraybuffer.html rename : content/base/test/websocket_hybi/test_receive-blob.html => dom/base/test/websocket_hybi/test_receive-blob.html rename : content/base/test/websocket_hybi/test_send-arraybuffer.html => dom/base/test/websocket_hybi/test_send-arraybuffer.html rename : content/base/test/websocket_hybi/test_send-blob.html => dom/base/test/websocket_hybi/test_send-blob.html rename : content/base/test/wholeTexty-helper.xml => dom/base/test/wholeTexty-helper.xml
1891 lines
64 KiB
JavaScript
1891 lines
64 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/. */
|
|
/* This code is loaded in every child process that is started by mochitest in
|
|
* order to be used as a replacement for UniversalXPConnect
|
|
*/
|
|
|
|
"use strict";
|
|
|
|
var Ci = Components.interfaces;
|
|
var Cc = Components.classes;
|
|
var Cu = Components.utils;
|
|
|
|
Cu.import("resource://specialpowers/MockFilePicker.jsm");
|
|
Cu.import("resource://specialpowers/MockColorPicker.jsm");
|
|
Cu.import("resource://specialpowers/MockPermissionPrompt.jsm");
|
|
Cu.import("resource://gre/modules/Services.jsm");
|
|
Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
|
|
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
|
|
|
|
Cu.importGlobalProperties(["File"]);
|
|
|
|
// Allow stuff from this scope to be accessed from non-privileged scopes. This
|
|
// would crash if used outside of automation.
|
|
Cu.forcePermissiveCOWs();
|
|
|
|
function SpecialPowersAPI() {
|
|
this._consoleListeners = [];
|
|
this._encounteredCrashDumpFiles = [];
|
|
this._unexpectedCrashDumpFiles = { };
|
|
this._crashDumpDir = null;
|
|
this._mfl = null;
|
|
this._prefEnvUndoStack = [];
|
|
this._pendingPrefs = [];
|
|
this._applyingPrefs = false;
|
|
this._permissionsUndoStack = [];
|
|
this._pendingPermissions = [];
|
|
this._applyingPermissions = false;
|
|
this._fm = null;
|
|
this._cb = null;
|
|
this._quotaManagerCallbackInfos = null;
|
|
}
|
|
|
|
function bindDOMWindowUtils(aWindow) {
|
|
if (!aWindow)
|
|
return
|
|
|
|
var util = aWindow.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIDOMWindowUtils);
|
|
return wrapPrivileged(util);
|
|
}
|
|
|
|
function getRawComponents(aWindow) {
|
|
// If we're running in automation that supports enablePrivilege, then we also
|
|
// provided access to the privileged Components.
|
|
try {
|
|
let win = Cu.waiveXrays(aWindow);
|
|
if (typeof win.netscape.security.PrivilegeManager == 'object')
|
|
Cu.forcePrivilegedComponentsForScope(aWindow);
|
|
} catch (e) {}
|
|
return Cu.getComponentsForScope(aWindow);
|
|
}
|
|
|
|
function isWrappable(x) {
|
|
if (typeof x === "object")
|
|
return x !== null;
|
|
return typeof x === "function";
|
|
};
|
|
|
|
function isWrapper(x) {
|
|
return isWrappable(x) && (typeof x.SpecialPowers_wrappedObject !== "undefined");
|
|
};
|
|
|
|
function unwrapIfWrapped(x) {
|
|
return isWrapper(x) ? unwrapPrivileged(x) : x;
|
|
};
|
|
|
|
function wrapIfUnwrapped(x) {
|
|
return isWrapper(x) ? x : wrapPrivileged(x);
|
|
}
|
|
|
|
function isObjectOrArray(obj) {
|
|
if (Object(obj) !== obj)
|
|
return false;
|
|
let arrayClasses = ['Object', 'Array', 'Int8Array', 'Uint8Array',
|
|
'Int16Array', 'Uint16Array', 'Int32Array',
|
|
'Uint32Array', 'Float32Array', 'Float64Array',
|
|
'Uint8ClampedArray'];
|
|
let className = Cu.getClassName(obj, true);
|
|
return arrayClasses.indexOf(className) != -1;
|
|
}
|
|
|
|
// In general, we want Xray wrappers for content DOM objects, because waiving
|
|
// Xray gives us Xray waiver wrappers that clamp the principal when we cross
|
|
// compartment boundaries. However, there are some exceptions where we want
|
|
// to use a waiver:
|
|
//
|
|
// * Xray adds some gunk to toString(), which has the potential to confuse
|
|
// consumers that aren't expecting Xray wrappers. Since toString() is a
|
|
// non-privileged method that returns only strings, we can just waive Xray
|
|
// for that case.
|
|
//
|
|
// * We implement Xrays to pure JS [[Object]] and [[Array]] instances that
|
|
// filter out tricky things like callables. This is the right thing for
|
|
// security in general, but tends to break tests that try to pass object
|
|
// literals into SpecialPowers. So we waive [[Object]] and [[Array]]
|
|
// instances before inspecting properties.
|
|
//
|
|
// * When we don't have meaningful Xray semantics, we create an Opaque
|
|
// XrayWrapper for security reasons. For test code, we generally want to see
|
|
// through that sort of thing.
|
|
function waiveXraysIfAppropriate(obj, propName) {
|
|
if (propName == 'toString' || isObjectOrArray(obj) ||
|
|
/Opaque/.test(Object.prototype.toString.call(obj)))
|
|
{
|
|
return XPCNativeWrapper.unwrap(obj);
|
|
}
|
|
return obj;
|
|
}
|
|
|
|
function callGetOwnPropertyDescriptor(obj, name) {
|
|
obj = waiveXraysIfAppropriate(obj, name);
|
|
|
|
// Quickstubbed getters and setters are propertyOps, and don't get reified
|
|
// until someone calls __lookupGetter__ or __lookupSetter__ on them (note
|
|
// that there are special version of those functions for quickstubs, so
|
|
// apply()ing Object.prototype.__lookupGetter__ isn't good enough). Try to
|
|
// trigger reification before calling Object.getOwnPropertyDescriptor.
|
|
//
|
|
// See bug 764315.
|
|
try {
|
|
obj.__lookupGetter__(name);
|
|
obj.__lookupSetter__(name);
|
|
} catch(e) { }
|
|
return Object.getOwnPropertyDescriptor(obj, name);
|
|
}
|
|
|
|
// We can't call apply() directy on Xray-wrapped functions, so we have to be
|
|
// clever.
|
|
function doApply(fun, invocant, args) {
|
|
// We implement Xrays to pure JS [[Object]] instances that filter out tricky
|
|
// things like callables. This is the right thing for security in general,
|
|
// but tends to break tests that try to pass object literals into
|
|
// SpecialPowers. So we waive [[Object]] instances when they're passed to a
|
|
// SpecialPowers-wrapped callable.
|
|
//
|
|
// Note that the transitive nature of Xray waivers means that any property
|
|
// pulled off such an object will also be waived, and so we'll get principal
|
|
// clamping for Xrayed DOM objects reached from literals, so passing things
|
|
// like {l : xoWin.location} won't work. Hopefully the rabbit hole doesn't
|
|
// go that deep.
|
|
args = args.map(x => isObjectOrArray(x) ? Cu.waiveXrays(x) : x);
|
|
return Function.prototype.apply.call(fun, invocant, args);
|
|
}
|
|
|
|
function wrapPrivileged(obj) {
|
|
|
|
// Primitives pass straight through.
|
|
if (!isWrappable(obj))
|
|
return obj;
|
|
|
|
// No double wrapping.
|
|
if (isWrapper(obj))
|
|
throw "Trying to double-wrap object!";
|
|
|
|
// Make our core wrapper object.
|
|
var handler = new SpecialPowersHandler(obj);
|
|
|
|
// If the object is callable, make a function proxy.
|
|
if (typeof obj === "function") {
|
|
var callTrap = function() {
|
|
// The invocant and arguments may or may not be wrappers. Unwrap them if necessary.
|
|
var invocant = unwrapIfWrapped(this);
|
|
var unwrappedArgs = Array.prototype.slice.call(arguments).map(unwrapIfWrapped);
|
|
|
|
try {
|
|
return wrapPrivileged(doApply(obj, invocant, unwrappedArgs));
|
|
} catch (e) {
|
|
// Wrap exceptions and re-throw them.
|
|
throw wrapIfUnwrapped(e);
|
|
}
|
|
};
|
|
var constructTrap = function() {
|
|
// The arguments may or may not be wrappers. Unwrap them if necessary.
|
|
var unwrappedArgs = Array.prototype.slice.call(arguments).map(unwrapIfWrapped);
|
|
|
|
// We want to invoke "obj" as a constructor, but using unwrappedArgs as
|
|
// the arguments. Make sure to wrap and re-throw exceptions!
|
|
try {
|
|
return wrapPrivileged(new obj(...unwrappedArgs));
|
|
} catch (e) {
|
|
throw wrapIfUnwrapped(e);
|
|
}
|
|
};
|
|
|
|
return Proxy.createFunction(handler, callTrap, constructTrap);
|
|
}
|
|
|
|
// Otherwise, just make a regular object proxy.
|
|
return Proxy.create(handler);
|
|
};
|
|
|
|
function unwrapPrivileged(x) {
|
|
|
|
// We don't wrap primitives, so sometimes we have a primitive where we'd
|
|
// expect to have a wrapper. The proxy pretends to be the type that it's
|
|
// emulating, so we can just as easily check isWrappable() on a proxy as
|
|
// we can on an unwrapped object.
|
|
if (!isWrappable(x))
|
|
return x;
|
|
|
|
// If we have a wrappable type, make sure it's wrapped.
|
|
if (!isWrapper(x))
|
|
throw "Trying to unwrap a non-wrapped object!";
|
|
|
|
// Unwrap.
|
|
return x.SpecialPowers_wrappedObject;
|
|
};
|
|
|
|
function crawlProtoChain(obj, fn) {
|
|
var rv = fn(obj);
|
|
if (rv !== undefined)
|
|
return rv;
|
|
// Follow the prototype chain of the underlying object in cases where it differs
|
|
// from the Xray prototype chain. This is important for things like Opaque Xray
|
|
// Wrappers, which always get Object.prototype as their proto.
|
|
let proto = Cu.unwaiveXrays(Object.getPrototypeOf(Cu.waiveXrays(obj)));
|
|
if (proto)
|
|
return crawlProtoChain(proto, fn);
|
|
return undefined;
|
|
};
|
|
|
|
function SpecialPowersHandler(obj) {
|
|
this.wrappedObject = obj;
|
|
};
|
|
|
|
// Allow us to transitively maintain the membrane by wrapping descriptors
|
|
// we return.
|
|
SpecialPowersHandler.prototype.doGetPropertyDescriptor = function(name, own) {
|
|
|
|
// Handle our special API.
|
|
if (name == "SpecialPowers_wrappedObject")
|
|
return { value: this.wrappedObject, writeable: false, configurable: false, enumerable: false };
|
|
|
|
//
|
|
// Call through to the wrapped object.
|
|
//
|
|
// Note that we have several cases here, each of which requires special handling.
|
|
//
|
|
var desc;
|
|
var obj = this.wrappedObject;
|
|
function isWrappedNativeXray(o) {
|
|
if (!Cu.isXrayWrapper(o))
|
|
return false;
|
|
var proto = Object.getPrototypeOf(o);
|
|
return /XPC_WN/.test(Cu.getClassName(o, /* unwrap = */ true)) ||
|
|
(proto && /XPC_WN/.test(Cu.getClassName(proto, /* unwrap = */ true)));
|
|
}
|
|
|
|
// Case 1: Own Properties.
|
|
//
|
|
// This one is easy, thanks to Object.getOwnPropertyDescriptor().
|
|
if (own)
|
|
desc = callGetOwnPropertyDescriptor(obj, name);
|
|
|
|
// Case 2: Not own, meaningful prototype.
|
|
//
|
|
// Here, we can just crawl the prototype chain, calling
|
|
// Object.getOwnPropertyDescriptor until we find what we want.
|
|
//
|
|
// NB: Make sure to check this.wrappedObject here, rather than obj, because
|
|
// we may have waived Xray on obj above.
|
|
else if (!isWrappedNativeXray(this.wrappedObject))
|
|
desc = crawlProtoChain(obj, function(o) {return callGetOwnPropertyDescriptor(o, name);});
|
|
|
|
// Case 3: Not own, no meaningful prototype. This corresponds to old-style
|
|
// XPCWrappedNative XrayWrappers.
|
|
//
|
|
// This one is harder, because we these XrayWrappers are flattened and don't have
|
|
// a prototype.
|
|
//
|
|
// So we first try with a call to getOwnPropertyDescriptor(). If that fails,
|
|
// we make up a descriptor, using some assumptions about what kinds of things
|
|
// tend to live on the prototypes of Xray-wrapped objects.
|
|
else {
|
|
obj = waiveXraysIfAppropriate(obj, name);
|
|
desc = Object.getOwnPropertyDescriptor(obj, name);
|
|
if (!desc) {
|
|
var getter = Object.prototype.__lookupGetter__.call(obj, name);
|
|
var setter = Object.prototype.__lookupSetter__.call(obj, name);
|
|
if (getter || setter)
|
|
desc = {get: getter, set: setter, configurable: true, enumerable: true};
|
|
else if (name in obj)
|
|
desc = {value: obj[name], writable: false, configurable: true, enumerable: true};
|
|
}
|
|
}
|
|
|
|
// Bail if we've got nothing.
|
|
if (typeof desc === 'undefined')
|
|
return undefined;
|
|
|
|
// When accessors are implemented as JSPropertyOps rather than JSNatives (ie,
|
|
// QuickStubs), the js engine does the wrong thing and treats it as a value
|
|
// descriptor rather than an accessor descriptor. Jorendorff suggested this
|
|
// little hack to work around it. See bug 520882.
|
|
if (desc && 'value' in desc && desc.value === undefined)
|
|
desc.value = obj[name];
|
|
|
|
// A trapping proxy's properties must always be configurable, but sometimes
|
|
// this we get non-configurable properties from Object.getOwnPropertyDescriptor().
|
|
// Tell a white lie.
|
|
desc.configurable = true;
|
|
|
|
// Transitively maintain the wrapper membrane.
|
|
function wrapIfExists(key) { if (key in desc) desc[key] = wrapPrivileged(desc[key]); };
|
|
wrapIfExists('value');
|
|
wrapIfExists('get');
|
|
wrapIfExists('set');
|
|
|
|
return desc;
|
|
};
|
|
|
|
SpecialPowersHandler.prototype.getOwnPropertyDescriptor = function(name) {
|
|
return this.doGetPropertyDescriptor(name, true);
|
|
};
|
|
|
|
SpecialPowersHandler.prototype.getPropertyDescriptor = function(name) {
|
|
return this.doGetPropertyDescriptor(name, false);
|
|
};
|
|
|
|
function doGetOwnPropertyNames(obj, props) {
|
|
|
|
// Insert our special API. It's not enumerable, but getPropertyNames()
|
|
// includes non-enumerable properties.
|
|
var specialAPI = 'SpecialPowers_wrappedObject';
|
|
if (props.indexOf(specialAPI) == -1)
|
|
props.push(specialAPI);
|
|
|
|
// Do the normal thing.
|
|
var flt = function(a) { return props.indexOf(a) == -1; };
|
|
props = props.concat(Object.getOwnPropertyNames(obj).filter(flt));
|
|
|
|
// If we've got an Xray wrapper, include the expandos as well.
|
|
if ('wrappedJSObject' in obj)
|
|
props = props.concat(Object.getOwnPropertyNames(obj.wrappedJSObject)
|
|
.filter(flt));
|
|
|
|
return props;
|
|
}
|
|
|
|
SpecialPowersHandler.prototype.getOwnPropertyNames = function() {
|
|
return doGetOwnPropertyNames(this.wrappedObject, []);
|
|
};
|
|
|
|
SpecialPowersHandler.prototype.getPropertyNames = function() {
|
|
|
|
// Manually walk the prototype chain, making sure to add only property names
|
|
// that haven't been overridden.
|
|
//
|
|
// There's some trickiness here with Xray wrappers. Xray wrappers don't have
|
|
// a prototype, so we need to unwrap them if we want to get all of the names
|
|
// with Object.getOwnPropertyNames(). But we don't really want to unwrap the
|
|
// base object, because that will include expandos that are inaccessible via
|
|
// our implementation of get{,Own}PropertyDescriptor(). So we unwrap just
|
|
// before accessing the prototype. This ensures that we get Xray vision on
|
|
// the base object, and no Xray vision for the rest of the way up.
|
|
var obj = this.wrappedObject;
|
|
var props = [];
|
|
while (obj) {
|
|
props = doGetOwnPropertyNames(obj, props);
|
|
obj = Object.getPrototypeOf(XPCNativeWrapper.unwrap(obj));
|
|
}
|
|
return props;
|
|
};
|
|
|
|
SpecialPowersHandler.prototype.defineProperty = function(name, desc) {
|
|
return Object.defineProperty(this.wrappedObject, name, desc);
|
|
};
|
|
|
|
SpecialPowersHandler.prototype.delete = function(name) {
|
|
return delete this.wrappedObject[name];
|
|
};
|
|
|
|
SpecialPowersHandler.prototype.fix = function() { return undefined; /* Throws a TypeError. */ };
|
|
|
|
// Per the ES5 spec this is a derived trap, but it's fundamental in spidermonkey
|
|
// for some reason. See bug 665198.
|
|
SpecialPowersHandler.prototype.enumerate = function() {
|
|
var t = this;
|
|
var filt = function(name) { return t.getPropertyDescriptor(name).enumerable; };
|
|
return this.getPropertyNames().filter(filt);
|
|
};
|
|
|
|
// SPConsoleListener reflects nsIConsoleMessage objects into JS in a
|
|
// tidy, XPCOM-hiding way. Messages that are nsIScriptError objects
|
|
// have their properties exposed in detail. It also auto-unregisters
|
|
// itself when it receives a "sentinel" message.
|
|
function SPConsoleListener(callback) {
|
|
this.callback = callback;
|
|
}
|
|
|
|
SPConsoleListener.prototype = {
|
|
observe: function(msg) {
|
|
let m = { message: msg.message,
|
|
errorMessage: null,
|
|
sourceName: null,
|
|
sourceLine: null,
|
|
lineNumber: null,
|
|
columnNumber: null,
|
|
category: null,
|
|
windowID: null,
|
|
isScriptError: false,
|
|
isWarning: false,
|
|
isException: false,
|
|
isStrict: false };
|
|
if (msg instanceof Ci.nsIScriptError) {
|
|
m.errorMessage = msg.errorMessage;
|
|
m.sourceName = msg.sourceName;
|
|
m.sourceLine = msg.sourceLine;
|
|
m.lineNumber = msg.lineNumber;
|
|
m.columnNumber = msg.columnNumber;
|
|
m.category = msg.category;
|
|
m.windowID = msg.outerWindowID;
|
|
m.isScriptError = true;
|
|
m.isWarning = ((msg.flags & Ci.nsIScriptError.warningFlag) === 1);
|
|
m.isException = ((msg.flags & Ci.nsIScriptError.exceptionFlag) === 1);
|
|
m.isStrict = ((msg.flags & Ci.nsIScriptError.strictFlag) === 1);
|
|
}
|
|
|
|
Object.freeze(m);
|
|
|
|
this.callback.call(undefined, m);
|
|
|
|
if (!m.isScriptError && m.message === "SENTINEL")
|
|
Services.console.unregisterListener(this);
|
|
},
|
|
|
|
QueryInterface: XPCOMUtils.generateQI([Ci.nsIConsoleListener])
|
|
};
|
|
|
|
function wrapCallback(cb) {
|
|
return function SpecialPowersCallbackWrapper() {
|
|
var args = Array.prototype.map.call(arguments, wrapIfUnwrapped);
|
|
return cb.apply(this, args);
|
|
}
|
|
}
|
|
|
|
function wrapCallbackObject(obj) {
|
|
obj = Cu.waiveXrays(obj);
|
|
var wrapper = {};
|
|
for (var i in obj) {
|
|
if (typeof obj[i] == 'function')
|
|
wrapper[i] = wrapCallback(obj[i]);
|
|
else
|
|
wrapper[i] = obj[i];
|
|
}
|
|
return wrapper;
|
|
}
|
|
|
|
SpecialPowersAPI.prototype = {
|
|
|
|
/*
|
|
* Privileged object wrapping API
|
|
*
|
|
* Usage:
|
|
* var wrapper = SpecialPowers.wrap(obj);
|
|
* wrapper.privilegedMethod(); wrapper.privilegedProperty;
|
|
* obj === SpecialPowers.unwrap(wrapper);
|
|
*
|
|
* These functions provide transparent access to privileged objects using
|
|
* various pieces of deep SpiderMagic. Conceptually, a wrapper is just an
|
|
* object containing a reference to the underlying object, where all method
|
|
* calls and property accesses are transparently performed with the System
|
|
* Principal. Moreover, objects obtained from the wrapper (including properties
|
|
* and method return values) are wrapped automatically. Thus, after a single
|
|
* call to SpecialPowers.wrap(), the wrapper layer is transitively maintained.
|
|
*
|
|
* Known Issues:
|
|
*
|
|
* - The wrapping function does not preserve identity, so
|
|
* SpecialPowers.wrap(foo) !== SpecialPowers.wrap(foo). See bug 718543.
|
|
*
|
|
* - The wrapper cannot see expando properties on unprivileged DOM objects.
|
|
* That is to say, the wrapper uses Xray delegation.
|
|
*
|
|
* - The wrapper sometimes guesses certain ES5 attributes for returned
|
|
* properties. This is explained in a comment in the wrapper code above,
|
|
* and shouldn't be a problem.
|
|
*/
|
|
wrap: wrapIfUnwrapped,
|
|
unwrap: unwrapIfWrapped,
|
|
isWrapper: isWrapper,
|
|
|
|
/*
|
|
* When content needs to pass a callback or a callback object to an API
|
|
* accessed over SpecialPowers, that API may sometimes receive arguments for
|
|
* whom it is forbidden to create a wrapper in content scopes. As such, we
|
|
* need a layer to wrap the values in SpecialPowers wrappers before they ever
|
|
* reach content.
|
|
*/
|
|
wrapCallback: wrapCallback,
|
|
wrapCallbackObject: wrapCallbackObject,
|
|
|
|
/*
|
|
* Create blank privileged objects to use as out-params for privileged functions.
|
|
*/
|
|
createBlankObject: function () {
|
|
return new Object;
|
|
},
|
|
|
|
/*
|
|
* Because SpecialPowers wrappers don't preserve identity, comparing with ==
|
|
* can be hazardous. Sometimes we can just unwrap to compare, but sometimes
|
|
* wrapping the underlying object into a content scope is forbidden. This
|
|
* function strips any wrappers if they exist and compare the underlying
|
|
* values.
|
|
*/
|
|
compare: function(a, b) {
|
|
return unwrapIfWrapped(a) === unwrapIfWrapped(b);
|
|
},
|
|
|
|
get MockFilePicker() {
|
|
return MockFilePicker
|
|
},
|
|
|
|
get MockColorPicker() {
|
|
return MockColorPicker
|
|
},
|
|
|
|
get MockPermissionPrompt() {
|
|
return MockPermissionPrompt
|
|
},
|
|
|
|
loadChromeScript: function (url) {
|
|
// Create a unique id for this chrome script
|
|
let uuidGenerator = Cc["@mozilla.org/uuid-generator;1"]
|
|
.getService(Ci.nsIUUIDGenerator);
|
|
let id = uuidGenerator.generateUUID().toString();
|
|
|
|
// Tells chrome code to evaluate this chrome script
|
|
this._sendSyncMessage("SPLoadChromeScript",
|
|
{ url: url, id: id });
|
|
|
|
// Returns a MessageManager like API in order to be
|
|
// able to communicate with this chrome script
|
|
let listeners = [];
|
|
let chromeScript = {
|
|
addMessageListener: (name, listener) => {
|
|
listeners.push({ name: name, listener: listener });
|
|
},
|
|
|
|
removeMessageListener: (name, listener) => {
|
|
listeners = listeners.filter(
|
|
o => (o.name != name || o.listener != listener)
|
|
);
|
|
},
|
|
|
|
sendAsyncMessage: (name, message) => {
|
|
this._sendSyncMessage("SPChromeScriptMessage",
|
|
{ id: id, name: name, message: message });
|
|
},
|
|
|
|
destroy: () => {
|
|
listeners = [];
|
|
this._removeMessageListener("SPChromeScriptMessage", chromeScript);
|
|
this._removeMessageListener("SPChromeScriptAssert", chromeScript);
|
|
},
|
|
|
|
receiveMessage: (aMessage) => {
|
|
let messageId = aMessage.json.id;
|
|
let name = aMessage.json.name;
|
|
let message = aMessage.json.message;
|
|
// Ignore message from other chrome script
|
|
if (messageId != id)
|
|
return;
|
|
|
|
if (aMessage.name == "SPChromeScriptMessage") {
|
|
listeners.filter(o => (o.name == name))
|
|
.forEach(o => o.listener(this.wrap(message)));
|
|
} else if (aMessage.name == "SPChromeScriptAssert") {
|
|
assert(aMessage.json);
|
|
}
|
|
}
|
|
};
|
|
this._addMessageListener("SPChromeScriptMessage", chromeScript);
|
|
this._addMessageListener("SPChromeScriptAssert", chromeScript);
|
|
|
|
let assert = json => {
|
|
// An assertion has been done in a mochitest chrome script
|
|
let {url, err, message, stack} = json;
|
|
|
|
// Try to fetch a test runner from the mochitest
|
|
// in order to properly log these assertions and notify
|
|
// all usefull log observers
|
|
let window = this.window.get();
|
|
let parentRunner, repr = function (o) o;
|
|
if (window) {
|
|
window = window.wrappedJSObject;
|
|
parentRunner = window.TestRunner;
|
|
if (window.repr) {
|
|
repr = window.repr;
|
|
}
|
|
}
|
|
|
|
// Craft a mochitest-like report string
|
|
var resultString = err ? "TEST-UNEXPECTED-FAIL" : "TEST-PASS";
|
|
var diagnostic =
|
|
message ? message :
|
|
("assertion @ " + stack.filename + ":" + stack.lineNumber);
|
|
if (err) {
|
|
diagnostic +=
|
|
" - got " + repr(err.actual) +
|
|
", expected " + repr(err.expected) +
|
|
" (operator " + err.operator + ")";
|
|
}
|
|
var msg = [resultString, url, diagnostic].join(" | ");
|
|
if (parentRunner) {
|
|
if (err) {
|
|
parentRunner.addFailedTest(url);
|
|
parentRunner.error(msg);
|
|
} else {
|
|
parentRunner.log(msg);
|
|
}
|
|
} else {
|
|
// When we are running only a single mochitest, there is no test runner
|
|
dump(msg + "\n");
|
|
}
|
|
};
|
|
|
|
return this.wrap(chromeScript);
|
|
},
|
|
|
|
get Services() {
|
|
return wrapPrivileged(Services);
|
|
},
|
|
|
|
/*
|
|
* In general, any Components object created for unprivileged scopes is
|
|
* neutered (it implements nsIXPCComponentsBase, but not nsIXPCComponents).
|
|
* We override this in certain legacy automation configurations (see the
|
|
* implementation of getRawComponents() above), but don't want to support
|
|
* it in cases where it isn't already required.
|
|
*
|
|
* In scopes with neutered Components, we don't have a natural referent for
|
|
* things like SpecialPowers.Cc. So in those cases, we fall back to the
|
|
* Components object from the SpecialPowers scope. This doesn't quite behave
|
|
* the same way (in particular, SpecialPowers.Cc[foo].createInstance() will
|
|
* create an instance in the SpecialPowers scope), but SpecialPowers wrapping
|
|
* is already a YMMV / Whatever-It-Takes-To-Get-TBPL-Green sort of thing.
|
|
*
|
|
* It probably wouldn't be too much work to just make SpecialPowers.Components
|
|
* unconditionally point to the Components object in the SpecialPowers scope.
|
|
* Try will tell what needs to be fixed up.
|
|
*/
|
|
getFullComponents: function() {
|
|
return typeof this.Components.classes == 'object' ? this.Components
|
|
: Components;
|
|
},
|
|
|
|
/*
|
|
* Convenient shortcuts to the standard Components abbreviations. Note that
|
|
* we don't SpecialPowers-wrap Components.interfaces, because it's available
|
|
* to untrusted content, and wrapping it confuses QI and identity checks.
|
|
*/
|
|
get Cc() { return wrapPrivileged(this.getFullComponents()).classes; },
|
|
get Ci() { return this.Components.interfaces; },
|
|
get Cu() { return wrapPrivileged(this.getFullComponents()).utils; },
|
|
get Cr() { return wrapPrivileged(this.Components).results; },
|
|
|
|
/*
|
|
* SpecialPowers.getRawComponents() allows content to get a reference to a
|
|
* naked (and, in certain automation configurations, privileged) Components
|
|
* object for its scope.
|
|
*
|
|
* SpecialPowers.getRawComponents(window) is defined as the global property
|
|
* window.SpecialPowers.Components for convenience.
|
|
*/
|
|
getRawComponents: getRawComponents,
|
|
|
|
getDOMWindowUtils: function(aWindow) {
|
|
if (aWindow == this.window.get() && this.DOMWindowUtils != null)
|
|
return this.DOMWindowUtils;
|
|
|
|
return bindDOMWindowUtils(aWindow);
|
|
},
|
|
|
|
removeExpectedCrashDumpFiles: function(aExpectingProcessCrash) {
|
|
var success = true;
|
|
if (aExpectingProcessCrash) {
|
|
var message = {
|
|
op: "delete-crash-dump-files",
|
|
filenames: this._encounteredCrashDumpFiles
|
|
};
|
|
if (!this._sendSyncMessage("SPProcessCrashService", message)[0]) {
|
|
success = false;
|
|
}
|
|
}
|
|
this._encounteredCrashDumpFiles.length = 0;
|
|
return success;
|
|
},
|
|
|
|
findUnexpectedCrashDumpFiles: function() {
|
|
var self = this;
|
|
var message = {
|
|
op: "find-crash-dump-files",
|
|
crashDumpFilesToIgnore: this._unexpectedCrashDumpFiles
|
|
};
|
|
var crashDumpFiles = this._sendSyncMessage("SPProcessCrashService", message)[0];
|
|
crashDumpFiles.forEach(function(aFilename) {
|
|
self._unexpectedCrashDumpFiles[aFilename] = true;
|
|
});
|
|
return crashDumpFiles;
|
|
},
|
|
|
|
_setTimeout: function(callback) {
|
|
// for mochitest-browser
|
|
if (typeof window != 'undefined')
|
|
setTimeout(callback, 0);
|
|
// for mochitest-plain
|
|
else
|
|
content.window.setTimeout(callback, 0);
|
|
},
|
|
|
|
_delayCallbackTwice: function(callback) {
|
|
function delayedCallback() {
|
|
function delayAgain(aCallback) {
|
|
// Using this._setTimeout doesn't work here
|
|
// It causes failures in mochtests that use
|
|
// multiple pushPrefEnv calls
|
|
// For chrome/browser-chrome mochitests
|
|
if (typeof window != 'undefined')
|
|
setTimeout(aCallback, 0);
|
|
// For mochitest-plain
|
|
else
|
|
content.window.setTimeout(aCallback, 0);
|
|
}
|
|
delayAgain(delayAgain(callback));
|
|
}
|
|
return delayedCallback;
|
|
},
|
|
|
|
/* apply permissions to the system and when the test case is finished (SimpleTest.finish())
|
|
we will revert the permission back to the original.
|
|
|
|
inPermissions is an array of objects where each object has a type, action, context, ex:
|
|
[{'type': 'SystemXHR', 'allow': 1, 'context': document},
|
|
{'type': 'SystemXHR', 'allow': Ci.nsIPermissionManager.PROMPT_ACTION, 'context': document}]
|
|
|
|
Allow can be a boolean value of true/false or ALLOW_ACTION/DENY_ACTION/PROMPT_ACTION/UNKNOWN_ACTION
|
|
*/
|
|
pushPermissions: function(inPermissions, callback) {
|
|
inPermissions = Cu.waiveXrays(inPermissions);
|
|
var pendingPermissions = [];
|
|
var cleanupPermissions = [];
|
|
|
|
for (var p in inPermissions) {
|
|
var permission = inPermissions[p];
|
|
var originalValue = Ci.nsIPermissionManager.UNKNOWN_ACTION;
|
|
var context = Cu.unwaiveXrays(permission.context); // Sometimes |context| is a DOM object on which we expect
|
|
// to be able to access .nodePrincipal, so we need to unwaive.
|
|
if (this.testPermission(permission.type, Ci.nsIPermissionManager.ALLOW_ACTION, context)) {
|
|
originalValue = Ci.nsIPermissionManager.ALLOW_ACTION;
|
|
} else if (this.testPermission(permission.type, Ci.nsIPermissionManager.DENY_ACTION, context)) {
|
|
originalValue = Ci.nsIPermissionManager.DENY_ACTION;
|
|
} else if (this.testPermission(permission.type, Ci.nsIPermissionManager.PROMPT_ACTION, context)) {
|
|
originalValue = Ci.nsIPermissionManager.PROMPT_ACTION;
|
|
} else if (this.testPermission(permission.type, Ci.nsICookiePermission.ACCESS_SESSION, context)) {
|
|
originalValue = Ci.nsICookiePermission.ACCESS_SESSION;
|
|
} else if (this.testPermission(permission.type, Ci.nsICookiePermission.ACCESS_ALLOW_FIRST_PARTY_ONLY, context)) {
|
|
originalValue = Ci.nsICookiePermission.ACCESS_ALLOW_FIRST_PARTY_ONLY;
|
|
} else if (this.testPermission(permission.type, Ci.nsICookiePermission.ACCESS_LIMIT_THIRD_PARTY, context)) {
|
|
originalValue = Ci.nsICookiePermission.ACCESS_LIMIT_THIRD_PARTY;
|
|
}
|
|
|
|
let [url, appId, isInBrowserElement, isSystem] = this._getInfoFromPermissionArg(context);
|
|
if (isSystem) {
|
|
continue;
|
|
}
|
|
|
|
let perm;
|
|
if (typeof permission.allow !== 'boolean') {
|
|
perm = permission.allow;
|
|
} else {
|
|
perm = permission.allow ? Ci.nsIPermissionManager.ALLOW_ACTION
|
|
: Ci.nsIPermissionManager.DENY_ACTION;
|
|
}
|
|
|
|
if (permission.remove == true)
|
|
perm = Ci.nsIPermissionManager.UNKNOWN_ACTION;
|
|
|
|
if (originalValue == perm) {
|
|
continue;
|
|
}
|
|
|
|
var todo = {'op': 'add', 'type': permission.type, 'permission': perm, 'value': perm, 'url': url, 'appId': appId, 'isInBrowserElement': isInBrowserElement};
|
|
if (permission.remove == true)
|
|
todo.op = 'remove';
|
|
|
|
pendingPermissions.push(todo);
|
|
|
|
/* Push original permissions value or clear into cleanup array */
|
|
var cleanupTodo = {'op': 'add', 'type': permission.type, 'permission': perm, 'value': perm, 'url': url, 'appId': appId, 'isInBrowserElement': isInBrowserElement};
|
|
if (originalValue == Ci.nsIPermissionManager.UNKNOWN_ACTION) {
|
|
cleanupTodo.op = 'remove';
|
|
} else {
|
|
cleanupTodo.value = originalValue;
|
|
cleanupTodo.permission = originalValue;
|
|
}
|
|
cleanupPermissions.push(cleanupTodo);
|
|
}
|
|
|
|
if (pendingPermissions.length > 0) {
|
|
// The callback needs to be delayed twice. One delay is because the pref
|
|
// service doesn't guarantee the order it calls its observers in, so it
|
|
// may notify the observer holding the callback before the other
|
|
// observers have been notified and given a chance to make the changes
|
|
// that the callback checks for. The second delay is because pref
|
|
// observers often defer making their changes by posting an event to the
|
|
// event loop.
|
|
this._permissionsUndoStack.push(cleanupPermissions);
|
|
this._pendingPermissions.push([pendingPermissions,
|
|
this._delayCallbackTwice(callback)]);
|
|
this._applyPermissions();
|
|
} else {
|
|
this._setTimeout(callback);
|
|
}
|
|
},
|
|
|
|
popPermissions: function(callback) {
|
|
if (this._permissionsUndoStack.length > 0) {
|
|
// See pushPermissions comment regarding delay.
|
|
let cb = callback ? this._delayCallbackTwice(callback) : null;
|
|
/* Each pop from the stack will yield an object {op/type/permission/value/url/appid/isInBrowserElement} or null */
|
|
this._pendingPermissions.push([this._permissionsUndoStack.pop(), cb]);
|
|
this._applyPermissions();
|
|
} else {
|
|
this._setTimeout(callback);
|
|
}
|
|
},
|
|
|
|
flushPermissions: function(callback) {
|
|
while (this._permissionsUndoStack.length > 1)
|
|
this.popPermissions(null);
|
|
|
|
this.popPermissions(callback);
|
|
},
|
|
|
|
|
|
_permissionObserver: {
|
|
_self: null,
|
|
_lastPermission: {},
|
|
_callBack: null,
|
|
_nextCallback: null,
|
|
|
|
observe: function (aSubject, aTopic, aData)
|
|
{
|
|
if (aTopic == "perm-changed") {
|
|
var permission = aSubject.QueryInterface(Ci.nsIPermission);
|
|
if (permission.type == this._lastPermission.type) {
|
|
Services.obs.removeObserver(this, "perm-changed");
|
|
this._self._setTimeout(this._callback);
|
|
this._self._setTimeout(this._nextCallback);
|
|
}
|
|
}
|
|
}
|
|
},
|
|
|
|
/*
|
|
Iterate through one atomic set of permissions actions and perform allow/deny as appropriate.
|
|
All actions performed must modify the relevant permission.
|
|
*/
|
|
_applyPermissions: function() {
|
|
if (this._applyingPermissions || this._pendingPermissions.length <= 0) {
|
|
return;
|
|
}
|
|
|
|
/* Set lock and get prefs from the _pendingPrefs queue */
|
|
this._applyingPermissions = true;
|
|
var transaction = this._pendingPermissions.shift();
|
|
var pendingActions = transaction[0];
|
|
var callback = transaction[1];
|
|
var lastPermission = pendingActions[pendingActions.length-1];
|
|
|
|
var self = this;
|
|
this._permissionObserver._self = self;
|
|
this._permissionObserver._lastPermission = lastPermission;
|
|
this._permissionObserver._callback = callback;
|
|
this._permissionObserver._nextCallback = function () {
|
|
self._applyingPermissions = false;
|
|
// Now apply any permissions that may have been queued while we were applying
|
|
self._applyPermissions();
|
|
}
|
|
|
|
Services.obs.addObserver(this._permissionObserver, "perm-changed", false);
|
|
|
|
for (var idx in pendingActions) {
|
|
var perm = pendingActions[idx];
|
|
this._sendSyncMessage('SPPermissionManager', perm)[0];
|
|
}
|
|
},
|
|
|
|
/*
|
|
* Take in a list of pref changes to make, and invoke |callback| once those
|
|
* changes have taken effect. When the test finishes, these changes are
|
|
* reverted.
|
|
*
|
|
* |inPrefs| must be an object with up to two properties: "set" and "clear".
|
|
* pushPrefEnv will set prefs as indicated in |inPrefs.set| and will unset
|
|
* the prefs indicated in |inPrefs.clear|.
|
|
*
|
|
* For example, you might pass |inPrefs| as:
|
|
*
|
|
* inPrefs = {'set': [['foo.bar', 2], ['magic.pref', 'baz']],
|
|
* 'clear': [['clear.this'], ['also.this']] };
|
|
*
|
|
* Notice that |set| and |clear| are both an array of arrays. In |set|, each
|
|
* of the inner arrays must have the form [pref_name, value] or [pref_name,
|
|
* value, iid]. (The latter form is used for prefs with "complex" values.)
|
|
*
|
|
* In |clear|, each inner array should have the form [pref_name].
|
|
*
|
|
* If you set the same pref more than once (or both set and clear a pref),
|
|
* the behavior of this method is undefined.
|
|
*
|
|
* (Implementation note: _prefEnvUndoStack is a stack of values to revert to,
|
|
* not values which have been set!)
|
|
*
|
|
* TODO: complex values for original cleanup?
|
|
*
|
|
*/
|
|
pushPrefEnv: function(inPrefs, callback) {
|
|
var prefs = Services.prefs;
|
|
|
|
var pref_string = [];
|
|
pref_string[prefs.PREF_INT] = "INT";
|
|
pref_string[prefs.PREF_BOOL] = "BOOL";
|
|
pref_string[prefs.PREF_STRING] = "CHAR";
|
|
|
|
var pendingActions = [];
|
|
var cleanupActions = [];
|
|
|
|
for (var action in inPrefs) { /* set|clear */
|
|
for (var idx in inPrefs[action]) {
|
|
var aPref = inPrefs[action][idx];
|
|
var prefName = aPref[0];
|
|
var prefValue = null;
|
|
var prefIid = null;
|
|
var prefType = prefs.PREF_INVALID;
|
|
var originalValue = null;
|
|
|
|
if (aPref.length == 3) {
|
|
prefValue = aPref[1];
|
|
prefIid = aPref[2];
|
|
} else if (aPref.length == 2) {
|
|
prefValue = aPref[1];
|
|
}
|
|
|
|
/* If pref is not found or invalid it doesn't exist. */
|
|
if (prefs.getPrefType(prefName) != prefs.PREF_INVALID) {
|
|
prefType = pref_string[prefs.getPrefType(prefName)];
|
|
if ((prefs.prefHasUserValue(prefName) && action == 'clear') ||
|
|
(action == 'set'))
|
|
originalValue = this._getPref(prefName, prefType);
|
|
} else if (action == 'set') {
|
|
/* prefName doesn't exist, so 'clear' is pointless */
|
|
if (aPref.length == 3) {
|
|
prefType = "COMPLEX";
|
|
} else if (aPref.length == 2) {
|
|
if (typeof(prefValue) == "boolean")
|
|
prefType = "BOOL";
|
|
else if (typeof(prefValue) == "number")
|
|
prefType = "INT";
|
|
else if (typeof(prefValue) == "string")
|
|
prefType = "CHAR";
|
|
}
|
|
}
|
|
|
|
/* PREF_INVALID: A non existing pref which we are clearing or invalid values for a set */
|
|
if (prefType == prefs.PREF_INVALID)
|
|
continue;
|
|
|
|
/* We are not going to set a pref if the value is the same */
|
|
if (originalValue == prefValue)
|
|
continue;
|
|
|
|
pendingActions.push({'action': action, 'type': prefType, 'name': prefName, 'value': prefValue, 'Iid': prefIid});
|
|
|
|
/* Push original preference value or clear into cleanup array */
|
|
var cleanupTodo = {'action': action, 'type': prefType, 'name': prefName, 'value': originalValue, 'Iid': prefIid};
|
|
if (originalValue == null) {
|
|
cleanupTodo.action = 'clear';
|
|
} else {
|
|
cleanupTodo.action = 'set';
|
|
}
|
|
cleanupActions.push(cleanupTodo);
|
|
}
|
|
}
|
|
|
|
if (pendingActions.length > 0) {
|
|
// The callback needs to be delayed twice. One delay is because the pref
|
|
// service doesn't guarantee the order it calls its observers in, so it
|
|
// may notify the observer holding the callback before the other
|
|
// observers have been notified and given a chance to make the changes
|
|
// that the callback checks for. The second delay is because pref
|
|
// observers often defer making their changes by posting an event to the
|
|
// event loop.
|
|
this._prefEnvUndoStack.push(cleanupActions);
|
|
this._pendingPrefs.push([pendingActions,
|
|
this._delayCallbackTwice(callback)]);
|
|
this._applyPrefs();
|
|
} else {
|
|
this._setTimeout(callback);
|
|
}
|
|
},
|
|
|
|
popPrefEnv: function(callback) {
|
|
if (this._prefEnvUndoStack.length > 0) {
|
|
// See pushPrefEnv comment regarding delay.
|
|
let cb = callback ? this._delayCallbackTwice(callback) : null;
|
|
/* Each pop will have a valid block of preferences */
|
|
this._pendingPrefs.push([this._prefEnvUndoStack.pop(), cb]);
|
|
this._applyPrefs();
|
|
} else {
|
|
this._setTimeout(callback);
|
|
}
|
|
},
|
|
|
|
flushPrefEnv: function(callback) {
|
|
while (this._prefEnvUndoStack.length > 1)
|
|
this.popPrefEnv(null);
|
|
|
|
this.popPrefEnv(callback);
|
|
},
|
|
|
|
/*
|
|
Iterate through one atomic set of pref actions and perform sets/clears as appropriate.
|
|
All actions performed must modify the relevant pref.
|
|
*/
|
|
_applyPrefs: function() {
|
|
if (this._applyingPrefs || this._pendingPrefs.length <= 0) {
|
|
return;
|
|
}
|
|
|
|
/* Set lock and get prefs from the _pendingPrefs queue */
|
|
this._applyingPrefs = true;
|
|
var transaction = this._pendingPrefs.shift();
|
|
var pendingActions = transaction[0];
|
|
var callback = transaction[1];
|
|
|
|
var lastPref = pendingActions[pendingActions.length-1];
|
|
|
|
var pb = Services.prefs;
|
|
var self = this;
|
|
pb.addObserver(lastPref.name, function prefObs(subject, topic, data) {
|
|
pb.removeObserver(lastPref.name, prefObs);
|
|
|
|
self._setTimeout(callback);
|
|
self._setTimeout(function () {
|
|
self._applyingPrefs = false;
|
|
// Now apply any prefs that may have been queued while we were applying
|
|
self._applyPrefs();
|
|
});
|
|
}, false);
|
|
|
|
for (var idx in pendingActions) {
|
|
var pref = pendingActions[idx];
|
|
if (pref.action == 'set') {
|
|
this._setPref(pref.name, pref.type, pref.value, pref.Iid);
|
|
} else if (pref.action == 'clear') {
|
|
this.clearUserPref(pref.name);
|
|
}
|
|
}
|
|
},
|
|
|
|
// Disables the app install prompt for the duration of this test. There is
|
|
// no need to re-enable the prompt at the end of the test.
|
|
//
|
|
// The provided callback is invoked once the prompt is disabled.
|
|
autoConfirmAppInstall: function(cb) {
|
|
this.pushPrefEnv({set: [['dom.mozApps.auto_confirm_install', true]]}, cb);
|
|
},
|
|
|
|
autoConfirmAppUninstall: function(cb) {
|
|
this.pushPrefEnv({set: [['dom.mozApps.auto_confirm_uninstall', true]]}, cb);
|
|
},
|
|
|
|
// Allow tests to disable the per platform app validity checks so we can
|
|
// test higher level WebApp functionality without full platform support.
|
|
setAllAppsLaunchable: function(launchable) {
|
|
this._sendSyncMessage("SPWebAppService", {
|
|
op: "set-launchable",
|
|
launchable: launchable
|
|
});
|
|
},
|
|
|
|
// Restore the launchable property to its default value.
|
|
flushAllAppsLaunchable: function() {
|
|
this._sendSyncMessage("SPWebAppService", {
|
|
op: "set-launchable",
|
|
launchable: false
|
|
});
|
|
},
|
|
|
|
_proxiedObservers: {
|
|
"specialpowers-http-notify-request": function(aMessage) {
|
|
let uri = aMessage.json.uri;
|
|
Services.obs.notifyObservers(null, "specialpowers-http-notify-request", uri);
|
|
},
|
|
},
|
|
|
|
_addObserverProxy: function(notification) {
|
|
if (notification in this._proxiedObservers) {
|
|
this._addMessageListener(notification, this._proxiedObservers[notification]);
|
|
}
|
|
},
|
|
|
|
_removeObserverProxy: function(notification) {
|
|
if (notification in this._proxiedObservers) {
|
|
this._removeMessageListener(notification, this._proxiedObservers[notification]);
|
|
}
|
|
},
|
|
|
|
addObserver: function(obs, notification, weak) {
|
|
this._addObserverProxy(notification);
|
|
obs = Cu.waiveXrays(obs);
|
|
if (typeof obs == 'object' && obs.observe.name != 'SpecialPowersCallbackWrapper')
|
|
obs.observe = wrapCallback(obs.observe);
|
|
Services.obs.addObserver(obs, notification, weak);
|
|
},
|
|
removeObserver: function(obs, notification) {
|
|
this._removeObserverProxy(notification);
|
|
Services.obs.removeObserver(Cu.waiveXrays(obs), notification);
|
|
},
|
|
notifyObservers: function(subject, topic, data) {
|
|
Services.obs.notifyObservers(subject, topic, data);
|
|
},
|
|
|
|
can_QI: function(obj) {
|
|
return obj.QueryInterface !== undefined;
|
|
},
|
|
do_QueryInterface: function(obj, iface) {
|
|
return obj.QueryInterface(Ci[iface]);
|
|
},
|
|
|
|
call_Instanceof: function (obj1, obj2) {
|
|
obj1=unwrapIfWrapped(obj1);
|
|
obj2=unwrapIfWrapped(obj2);
|
|
return obj1 instanceof obj2;
|
|
},
|
|
|
|
// Returns a privileged getter from an object. GetOwnPropertyDescriptor does
|
|
// not work here because xray wrappers don't properly implement it.
|
|
//
|
|
// This terribleness is used by dom/base/test/test_object.html because
|
|
// <object> and <embed> tags will spawn plugins if their prototype is touched,
|
|
// so we need to get and cache the getter of |hasRunningPlugin| if we want to
|
|
// call it without paradoxically spawning the plugin.
|
|
do_lookupGetter: function(obj, name) {
|
|
return Object.prototype.__lookupGetter__.call(obj, name);
|
|
},
|
|
|
|
// Mimic the get*Pref API
|
|
getBoolPref: function(aPrefName) {
|
|
return (this._getPref(aPrefName, 'BOOL'));
|
|
},
|
|
getIntPref: function(aPrefName) {
|
|
return (this._getPref(aPrefName, 'INT'));
|
|
},
|
|
getCharPref: function(aPrefName) {
|
|
return (this._getPref(aPrefName, 'CHAR'));
|
|
},
|
|
getComplexValue: function(aPrefName, aIid) {
|
|
return (this._getPref(aPrefName, 'COMPLEX', aIid));
|
|
},
|
|
|
|
// Mimic the set*Pref API
|
|
setBoolPref: function(aPrefName, aValue) {
|
|
return (this._setPref(aPrefName, 'BOOL', aValue));
|
|
},
|
|
setIntPref: function(aPrefName, aValue) {
|
|
return (this._setPref(aPrefName, 'INT', aValue));
|
|
},
|
|
setCharPref: function(aPrefName, aValue) {
|
|
return (this._setPref(aPrefName, 'CHAR', aValue));
|
|
},
|
|
setComplexValue: function(aPrefName, aIid, aValue) {
|
|
return (this._setPref(aPrefName, 'COMPLEX', aValue, aIid));
|
|
},
|
|
|
|
// Mimic the clearUserPref API
|
|
clearUserPref: function(aPrefName) {
|
|
var msg = {'op':'clear', 'prefName': aPrefName, 'prefType': ""};
|
|
this._sendSyncMessage('SPPrefService', msg);
|
|
},
|
|
|
|
// Private pref functions to communicate to chrome
|
|
_getPref: function(aPrefName, aPrefType, aIid) {
|
|
var msg = {};
|
|
if (aIid) {
|
|
// Overloading prefValue to handle complex prefs
|
|
msg = {'op':'get', 'prefName': aPrefName, 'prefType':aPrefType, 'prefValue':[aIid]};
|
|
} else {
|
|
msg = {'op':'get', 'prefName': aPrefName,'prefType': aPrefType};
|
|
}
|
|
var val = this._sendSyncMessage('SPPrefService', msg);
|
|
|
|
if (val == null || val[0] == null)
|
|
throw "Error getting pref";
|
|
return val[0];
|
|
},
|
|
_setPref: function(aPrefName, aPrefType, aValue, aIid) {
|
|
var msg = {};
|
|
if (aIid) {
|
|
msg = {'op':'set','prefName':aPrefName, 'prefType': aPrefType, 'prefValue': [aIid,aValue]};
|
|
} else {
|
|
msg = {'op':'set', 'prefName': aPrefName, 'prefType': aPrefType, 'prefValue': aValue};
|
|
}
|
|
return(this._sendSyncMessage('SPPrefService', msg)[0]);
|
|
},
|
|
|
|
_getDocShell: function(window) {
|
|
return window.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIWebNavigation)
|
|
.QueryInterface(Ci.nsIDocShell);
|
|
},
|
|
_getMUDV: function(window) {
|
|
return this._getDocShell(window).contentViewer;
|
|
},
|
|
//XXX: these APIs really ought to be removed, they're not e10s-safe.
|
|
// (also they're pretty Firefox-specific)
|
|
_getTopChromeWindow: function(window) {
|
|
return window.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIWebNavigation)
|
|
.QueryInterface(Ci.nsIDocShellTreeItem)
|
|
.rootTreeItem
|
|
.QueryInterface(Ci.nsIInterfaceRequestor)
|
|
.getInterface(Ci.nsIDOMWindow)
|
|
.QueryInterface(Ci.nsIDOMChromeWindow);
|
|
},
|
|
_getAutoCompletePopup: function(window) {
|
|
return this._getTopChromeWindow(window).document
|
|
.getElementById("PopupAutoComplete");
|
|
},
|
|
addAutoCompletePopupEventListener: function(window, eventname, listener) {
|
|
this._getAutoCompletePopup(window).addEventListener(eventname,
|
|
listener,
|
|
false);
|
|
},
|
|
removeAutoCompletePopupEventListener: function(window, eventname, listener) {
|
|
this._getAutoCompletePopup(window).removeEventListener(eventname,
|
|
listener,
|
|
false);
|
|
},
|
|
get formHistory() {
|
|
let tmp = {};
|
|
Cu.import("resource://gre/modules/FormHistory.jsm", tmp);
|
|
return wrapPrivileged(tmp.FormHistory);
|
|
},
|
|
getFormFillController: function(window) {
|
|
return Components.classes["@mozilla.org/satchel/form-fill-controller;1"]
|
|
.getService(Components.interfaces.nsIFormFillController);
|
|
},
|
|
attachFormFillControllerTo: function(window) {
|
|
this.getFormFillController()
|
|
.attachToBrowser(this._getDocShell(window),
|
|
this._getAutoCompletePopup(window));
|
|
},
|
|
detachFormFillControllerFrom: function(window) {
|
|
this.getFormFillController().detachFromBrowser(this._getDocShell(window));
|
|
},
|
|
isBackButtonEnabled: function(window) {
|
|
return !this._getTopChromeWindow(window).document
|
|
.getElementById("Browser:Back")
|
|
.hasAttribute("disabled");
|
|
},
|
|
//XXX end of problematic APIs
|
|
|
|
addChromeEventListener: function(type, listener, capture, allowUntrusted) {
|
|
addEventListener(type, listener, capture, allowUntrusted);
|
|
},
|
|
removeChromeEventListener: function(type, listener, capture) {
|
|
removeEventListener(type, listener, capture);
|
|
},
|
|
|
|
// Note: each call to registerConsoleListener MUST be paired with a
|
|
// call to postConsoleSentinel; when the callback receives the
|
|
// sentinel it will unregister itself (_after_ calling the
|
|
// callback). SimpleTest.expectConsoleMessages does this for you.
|
|
// If you register more than one console listener, a call to
|
|
// postConsoleSentinel will zap all of them.
|
|
registerConsoleListener: function(callback) {
|
|
let listener = new SPConsoleListener(callback);
|
|
Services.console.registerListener(listener);
|
|
},
|
|
postConsoleSentinel: function() {
|
|
Services.console.logStringMessage("SENTINEL");
|
|
},
|
|
resetConsole: function() {
|
|
Services.console.reset();
|
|
},
|
|
|
|
getMaxLineBoxWidth: function(window) {
|
|
return this._getMUDV(window).maxLineBoxWidth;
|
|
},
|
|
|
|
setMaxLineBoxWidth: function(window, width) {
|
|
this._getMUDV(window).changeMaxLineBoxWidth(width);
|
|
},
|
|
|
|
getFullZoom: function(window) {
|
|
return this._getMUDV(window).fullZoom;
|
|
},
|
|
setFullZoom: function(window, zoom) {
|
|
this._getMUDV(window).fullZoom = zoom;
|
|
},
|
|
getTextZoom: function(window) {
|
|
return this._getMUDV(window).textZoom;
|
|
},
|
|
setTextZoom: function(window, zoom) {
|
|
this._getMUDV(window).textZoom = zoom;
|
|
},
|
|
|
|
emulateMedium: function(window, mediaType) {
|
|
this._getMUDV(window).emulateMedium(mediaType);
|
|
},
|
|
stopEmulatingMedium: function(window) {
|
|
this._getMUDV(window).stopEmulatingMedium();
|
|
},
|
|
|
|
snapshotWindowWithOptions: function (win, rect, bgcolor, options) {
|
|
var el = this.window.get().document.createElementNS("http://www.w3.org/1999/xhtml", "canvas");
|
|
if (rect === undefined) {
|
|
rect = { top: win.scrollY, left: win.scrollX,
|
|
width: win.innerWidth, height: win.innerHeight };
|
|
}
|
|
if (bgcolor === undefined) {
|
|
bgcolor = "rgb(255,255,255)";
|
|
}
|
|
if (options === undefined) {
|
|
options = { };
|
|
}
|
|
|
|
el.width = rect.width;
|
|
el.height = rect.height;
|
|
var ctx = el.getContext("2d");
|
|
var flags = 0;
|
|
|
|
for (var option in options) {
|
|
flags |= options[option] && ctx[option];
|
|
}
|
|
|
|
ctx.drawWindow(win,
|
|
rect.left, rect.top, rect.width, rect.height,
|
|
bgcolor,
|
|
flags);
|
|
return el;
|
|
},
|
|
|
|
snapshotWindow: function (win, withCaret, rect, bgcolor) {
|
|
return this.snapshotWindowWithOptions(win, rect, bgcolor,
|
|
{ DRAWWINDOW_DRAW_CARET: withCaret });
|
|
},
|
|
|
|
snapshotRect: function (win, rect, bgcolor) {
|
|
return this.snapshotWindowWithOptions(win, rect, bgcolor);
|
|
},
|
|
|
|
gc: function() {
|
|
this.DOMWindowUtils.garbageCollect();
|
|
},
|
|
|
|
forceGC: function() {
|
|
Cu.forceGC();
|
|
},
|
|
|
|
forceCC: function() {
|
|
Cu.forceCC();
|
|
},
|
|
|
|
finishCC: function() {
|
|
Cu.finishCC();
|
|
},
|
|
|
|
ccSlice: function(budget) {
|
|
Cu.ccSlice(budget);
|
|
},
|
|
|
|
// Due to various dependencies between JS objects and C++ objects, an ordinary
|
|
// forceGC doesn't necessarily clear all unused objects, thus the GC and CC
|
|
// needs to run several times and when no other JS is running.
|
|
// The current number of iterations has been determined according to massive
|
|
// cross platform testing.
|
|
exactGC: function(win, callback) {
|
|
var self = this;
|
|
let count = 0;
|
|
|
|
function doPreciseGCandCC() {
|
|
function scheduledGCCallback() {
|
|
self.getDOMWindowUtils(win).cycleCollect();
|
|
|
|
if (++count < 2) {
|
|
doPreciseGCandCC();
|
|
} else {
|
|
callback();
|
|
}
|
|
}
|
|
|
|
Cu.schedulePreciseGC(scheduledGCCallback);
|
|
}
|
|
|
|
doPreciseGCandCC();
|
|
},
|
|
|
|
setGCZeal: function(zeal) {
|
|
Cu.setGCZeal(zeal);
|
|
},
|
|
|
|
isMainProcess: function() {
|
|
try {
|
|
return Cc["@mozilla.org/xre/app-info;1"].
|
|
getService(Ci.nsIXULRuntime).
|
|
processType == Ci.nsIXULRuntime.PROCESS_TYPE_DEFAULT;
|
|
} catch (e) { }
|
|
return true;
|
|
},
|
|
|
|
_xpcomabi: null,
|
|
|
|
get XPCOMABI() {
|
|
if (this._xpcomabi != null)
|
|
return this._xpcomabi;
|
|
|
|
var xulRuntime = Cc["@mozilla.org/xre/app-info;1"]
|
|
.getService(Components.interfaces.nsIXULAppInfo)
|
|
.QueryInterface(Components.interfaces.nsIXULRuntime);
|
|
|
|
this._xpcomabi = xulRuntime.XPCOMABI;
|
|
return this._xpcomabi;
|
|
},
|
|
|
|
// The optional aWin parameter allows the caller to specify a given window in
|
|
// whose scope the runnable should be dispatched. If aFun throws, the
|
|
// exception will be reported to aWin.
|
|
executeSoon: function(aFun, aWin) {
|
|
// Create the runnable in the scope of aWin to avoid running into COWs.
|
|
var runnable = {};
|
|
if (aWin)
|
|
runnable = Cu.createObjectIn(aWin);
|
|
runnable.run = aFun;
|
|
Cu.dispatch(runnable, aWin);
|
|
},
|
|
|
|
_os: null,
|
|
|
|
get OS() {
|
|
if (this._os != null)
|
|
return this._os;
|
|
|
|
var xulRuntime = Cc["@mozilla.org/xre/app-info;1"]
|
|
.getService(Components.interfaces.nsIXULAppInfo)
|
|
.QueryInterface(Components.interfaces.nsIXULRuntime);
|
|
|
|
this._os = xulRuntime.OS;
|
|
return this._os;
|
|
},
|
|
|
|
addSystemEventListener: function(target, type, listener, useCapture) {
|
|
Cc["@mozilla.org/eventlistenerservice;1"].
|
|
getService(Ci.nsIEventListenerService).
|
|
addSystemEventListener(target, type, listener, useCapture);
|
|
},
|
|
removeSystemEventListener: function(target, type, listener, useCapture) {
|
|
Cc["@mozilla.org/eventlistenerservice;1"].
|
|
getService(Ci.nsIEventListenerService).
|
|
removeSystemEventListener(target, type, listener, useCapture);
|
|
},
|
|
|
|
getDOMRequestService: function() {
|
|
var serv = Services.DOMRequest;
|
|
var res = {};
|
|
var props = ["createRequest", "createCursor", "fireError", "fireSuccess",
|
|
"fireDone", "fireDetailedError"];
|
|
for (var i in props) {
|
|
let prop = props[i];
|
|
res[prop] = function() { return serv[prop].apply(serv, arguments) };
|
|
}
|
|
return res;
|
|
},
|
|
|
|
setLogFile: function(path) {
|
|
this._mfl = new MozillaFileLogger(path);
|
|
},
|
|
|
|
log: function(data) {
|
|
this._mfl.log(data);
|
|
},
|
|
|
|
closeLogFile: function() {
|
|
this._mfl.close();
|
|
},
|
|
|
|
addCategoryEntry: function(category, entry, value, persists, replace) {
|
|
Components.classes["@mozilla.org/categorymanager;1"].
|
|
getService(Components.interfaces.nsICategoryManager).
|
|
addCategoryEntry(category, entry, value, persists, replace);
|
|
},
|
|
|
|
deleteCategoryEntry: function(category, entry, persists) {
|
|
Components.classes["@mozilla.org/categorymanager;1"].
|
|
getService(Components.interfaces.nsICategoryManager).
|
|
deleteCategoryEntry(category, entry, persists);
|
|
},
|
|
|
|
copyString: function(str, doc) {
|
|
Components.classes["@mozilla.org/widget/clipboardhelper;1"].
|
|
getService(Components.interfaces.nsIClipboardHelper).
|
|
copyString(str, doc);
|
|
},
|
|
|
|
openDialog: function(win, args) {
|
|
return win.openDialog.apply(win, args);
|
|
},
|
|
|
|
// :jdm gets credit for this. ex: getPrivilegedProps(window, 'location.href');
|
|
getPrivilegedProps: function(obj, props) {
|
|
var parts = props.split('.');
|
|
|
|
for (var i = 0; i < parts.length; i++) {
|
|
var p = parts[i];
|
|
if (obj[p]) {
|
|
obj = obj[p];
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
return obj;
|
|
},
|
|
|
|
get focusManager() {
|
|
if (this._fm != null)
|
|
return this._fm;
|
|
|
|
this._fm = Components.classes["@mozilla.org/focus-manager;1"].
|
|
getService(Components.interfaces.nsIFocusManager);
|
|
|
|
return this._fm;
|
|
},
|
|
|
|
getFocusedElementForWindow: function(targetWindow, aDeep) {
|
|
var outParam = {};
|
|
this.focusManager.getFocusedElementForWindow(targetWindow, aDeep, outParam);
|
|
return outParam.value;
|
|
},
|
|
|
|
activeWindow: function() {
|
|
return this.focusManager.activeWindow;
|
|
},
|
|
|
|
focusedWindow: function() {
|
|
return this.focusManager.focusedWindow;
|
|
},
|
|
|
|
focus: function(aWindow) {
|
|
// This is called inside TestRunner._makeIframe without aWindow, because of assertions in oop mochitests
|
|
// With aWindow, it is called in SimpleTest.waitForFocus to allow popup window opener focus switching
|
|
if (aWindow)
|
|
aWindow.focus();
|
|
sendAsyncMessage("SpecialPowers.Focus", {});
|
|
},
|
|
|
|
getClipboardData: function(flavor, whichClipboard) {
|
|
if (this._cb == null)
|
|
this._cb = Components.classes["@mozilla.org/widget/clipboard;1"].
|
|
getService(Components.interfaces.nsIClipboard);
|
|
if (whichClipboard === undefined)
|
|
whichClipboard = this._cb.kGlobalClipboard;
|
|
|
|
var xferable = Components.classes["@mozilla.org/widget/transferable;1"].
|
|
createInstance(Components.interfaces.nsITransferable);
|
|
// in e10s b-c tests |content.window| is null whereas |window| works fine.
|
|
// for some non-e10s mochi tests, |window| is null whereas |content.window|
|
|
// works fine. So we take whatever is non-null!
|
|
xferable.init(this._getDocShell(content.window || window)
|
|
.QueryInterface(Components.interfaces.nsILoadContext));
|
|
xferable.addDataFlavor(flavor);
|
|
this._cb.getData(xferable, whichClipboard);
|
|
var data = {};
|
|
try {
|
|
xferable.getTransferData(flavor, data, {});
|
|
} catch (e) {}
|
|
data = data.value || null;
|
|
if (data == null)
|
|
return "";
|
|
|
|
return data.QueryInterface(Components.interfaces.nsISupportsString).data;
|
|
},
|
|
|
|
clipboardCopyString: function(preExpectedVal, doc) {
|
|
var cbHelperSvc = Components.classes["@mozilla.org/widget/clipboardhelper;1"].
|
|
getService(Components.interfaces.nsIClipboardHelper);
|
|
cbHelperSvc.copyString(preExpectedVal, doc);
|
|
},
|
|
|
|
supportsSelectionClipboard: function() {
|
|
if (this._cb == null) {
|
|
this._cb = Components.classes["@mozilla.org/widget/clipboard;1"].
|
|
getService(Components.interfaces.nsIClipboard);
|
|
}
|
|
return this._cb.supportsSelectionClipboard();
|
|
},
|
|
|
|
swapFactoryRegistration: function(cid, contractID, newFactory, oldFactory) {
|
|
newFactory = Cu.waiveXrays(newFactory);
|
|
oldFactory = Cu.waiveXrays(oldFactory);
|
|
|
|
var componentRegistrar = Components.manager.QueryInterface(Components.interfaces.nsIComponentRegistrar);
|
|
|
|
var unregisterFactory = newFactory;
|
|
var registerFactory = oldFactory;
|
|
|
|
if (cid == null) {
|
|
if (contractID != null) {
|
|
cid = componentRegistrar.contractIDToCID(contractID);
|
|
oldFactory = Components.manager.getClassObject(Components.classes[contractID],
|
|
Components.interfaces.nsIFactory);
|
|
} else {
|
|
return {'error': "trying to register a new contract ID: Missing contractID"};
|
|
}
|
|
|
|
unregisterFactory = oldFactory;
|
|
registerFactory = newFactory;
|
|
}
|
|
componentRegistrar.unregisterFactory(cid,
|
|
unregisterFactory);
|
|
|
|
// Restore the original factory.
|
|
componentRegistrar.registerFactory(cid,
|
|
"",
|
|
contractID,
|
|
registerFactory);
|
|
return {'cid':cid, 'originalFactory':oldFactory};
|
|
},
|
|
|
|
_getElement: function(aWindow, id) {
|
|
return ((typeof(id) == "string") ?
|
|
aWindow.document.getElementById(id) : id);
|
|
},
|
|
|
|
dispatchEvent: function(aWindow, target, event) {
|
|
var el = this._getElement(aWindow, target);
|
|
return el.dispatchEvent(event);
|
|
},
|
|
|
|
get isDebugBuild() {
|
|
delete SpecialPowersAPI.prototype.isDebugBuild;
|
|
|
|
var debug = Cc["@mozilla.org/xpcom/debug;1"].getService(Ci.nsIDebug2);
|
|
return SpecialPowersAPI.prototype.isDebugBuild = debug.isDebugBuild;
|
|
},
|
|
assertionCount: function() {
|
|
var debugsvc = Cc['@mozilla.org/xpcom/debug;1'].getService(Ci.nsIDebug2);
|
|
return debugsvc.assertionCount;
|
|
},
|
|
|
|
/**
|
|
* Get the message manager associated with an <iframe mozbrowser>.
|
|
*/
|
|
getBrowserFrameMessageManager: function(aFrameElement) {
|
|
return this.wrap(aFrameElement.QueryInterface(Ci.nsIFrameLoaderOwner)
|
|
.frameLoader
|
|
.messageManager);
|
|
},
|
|
|
|
setFullscreenAllowed: function(document) {
|
|
Services.perms.addFromPrincipal(document.nodePrincipal, "fullscreen",
|
|
Ci.nsIPermissionManager.ALLOW_ACTION);
|
|
Services.obs.notifyObservers(document, "fullscreen-approved", null);
|
|
},
|
|
|
|
removeFullscreenAllowed: function(document) {
|
|
Services.perms.removeFromPrincipal(document.nodePrincipal, "fullscreen");
|
|
},
|
|
|
|
_getInfoFromPermissionArg: function(arg) {
|
|
let url = "";
|
|
let appId = Ci.nsIScriptSecurityManager.NO_APP_ID;
|
|
let isInBrowserElement = false;
|
|
let isSystem = false;
|
|
|
|
if (typeof(arg) == "string") {
|
|
// It's an URL.
|
|
url = Cc["@mozilla.org/network/io-service;1"]
|
|
.getService(Ci.nsIIOService)
|
|
.newURI(arg, null, null)
|
|
.spec;
|
|
} else if (arg.manifestURL) {
|
|
// It's a thing representing an app.
|
|
let appsSvc = Cc["@mozilla.org/AppsService;1"]
|
|
.getService(Ci.nsIAppsService)
|
|
let app = appsSvc.getAppByManifestURL(arg.manifestURL);
|
|
|
|
if (!app) {
|
|
throw "No app for this manifest!";
|
|
}
|
|
|
|
appId = appsSvc.getAppLocalIdByManifestURL(arg.manifestURL);
|
|
url = app.origin;
|
|
isInBrowserElement = arg.isInBrowserElement || false;
|
|
} else if (arg.nodePrincipal) {
|
|
// It's a document.
|
|
isSystem = (arg.nodePrincipal instanceof Ci.nsIPrincipal) &&
|
|
Cc["@mozilla.org/scriptsecuritymanager;1"].
|
|
getService(Ci.nsIScriptSecurityManager).
|
|
isSystemPrincipal(arg.nodePrincipal);
|
|
if (!isSystem) {
|
|
// System principals don't have a URL associated with them, and they
|
|
// don't really need any permissions to be registered with the
|
|
// permission manager anyway.
|
|
url = arg.nodePrincipal.URI.spec;
|
|
appId = arg.nodePrincipal.appId;
|
|
isInBrowserElement = arg.nodePrincipal.isInBrowserElement;
|
|
}
|
|
} else {
|
|
url = arg.url;
|
|
appId = arg.appId;
|
|
isInBrowserElement = arg.isInBrowserElement;
|
|
}
|
|
|
|
return [ url, appId, isInBrowserElement, isSystem ];
|
|
},
|
|
|
|
addPermission: function(type, allow, arg) {
|
|
let [url, appId, isInBrowserElement, isSystem] = this._getInfoFromPermissionArg(arg);
|
|
if (isSystem) {
|
|
return; // nothing to do
|
|
}
|
|
|
|
let permission;
|
|
if (typeof allow !== 'boolean') {
|
|
permission = allow;
|
|
} else {
|
|
permission = allow ? Ci.nsIPermissionManager.ALLOW_ACTION
|
|
: Ci.nsIPermissionManager.DENY_ACTION;
|
|
}
|
|
|
|
var msg = {
|
|
'op': 'add',
|
|
'type': type,
|
|
'permission': permission,
|
|
'url': url,
|
|
'appId': appId,
|
|
'isInBrowserElement': isInBrowserElement
|
|
};
|
|
|
|
this._sendSyncMessage('SPPermissionManager', msg);
|
|
},
|
|
|
|
removePermission: function(type, arg) {
|
|
let [url, appId, isInBrowserElement, isSystem] = this._getInfoFromPermissionArg(arg);
|
|
if (isSystem) {
|
|
return; // nothing to do
|
|
}
|
|
|
|
var msg = {
|
|
'op': 'remove',
|
|
'type': type,
|
|
'url': url,
|
|
'appId': appId,
|
|
'isInBrowserElement': isInBrowserElement
|
|
};
|
|
|
|
this._sendSyncMessage('SPPermissionManager', msg);
|
|
},
|
|
|
|
hasPermission: function (type, arg) {
|
|
let [url, appId, isInBrowserElement, isSystem] = this._getInfoFromPermissionArg(arg);
|
|
if (isSystem) {
|
|
return true; // system principals have all permissions
|
|
}
|
|
|
|
var msg = {
|
|
'op': 'has',
|
|
'type': type,
|
|
'url': url,
|
|
'appId': appId,
|
|
'isInBrowserElement': isInBrowserElement
|
|
};
|
|
|
|
return this._sendSyncMessage('SPPermissionManager', msg)[0];
|
|
},
|
|
testPermission: function (type, value, arg) {
|
|
let [url, appId, isInBrowserElement, isSystem] = this._getInfoFromPermissionArg(arg);
|
|
if (isSystem) {
|
|
return true; // system principals have all permissions
|
|
}
|
|
|
|
var msg = {
|
|
'op': 'test',
|
|
'type': type,
|
|
'value': value,
|
|
'url': url,
|
|
'appId': appId,
|
|
'isInBrowserElement': isInBrowserElement
|
|
};
|
|
return this._sendSyncMessage('SPPermissionManager', msg)[0];
|
|
},
|
|
|
|
isContentWindowPrivate: function(win) {
|
|
return PrivateBrowsingUtils.isContentWindowPrivate(win);
|
|
},
|
|
|
|
notifyObserversInParentProcess: function(subject, topic, data) {
|
|
if (subject) {
|
|
throw new Error("Can't send subject to another process!");
|
|
}
|
|
if (this.isMainProcess()) {
|
|
this.notifyObservers(subject, topic, data);
|
|
return;
|
|
}
|
|
var msg = {
|
|
'op': 'notify',
|
|
'observerTopic': topic,
|
|
'observerData': data
|
|
};
|
|
this._sendSyncMessage('SPObserverService', msg);
|
|
},
|
|
|
|
clearStorageForURI: function(uri, callback, appId, inBrowser) {
|
|
this._quotaManagerRequest('clear', uri, appId, inBrowser, callback);
|
|
},
|
|
|
|
getStorageUsageForURI: function(uri, callback, appId, inBrowser) {
|
|
this._quotaManagerRequest('getUsage', uri, appId, inBrowser, callback);
|
|
},
|
|
|
|
_quotaManagerRequest: function(op, uri, appId, inBrowser, callback) {
|
|
const messageTopic = "SPQuotaManager";
|
|
|
|
if (uri instanceof Ci.nsIURI) {
|
|
uri = uri.spec;
|
|
}
|
|
|
|
const id = Cc["@mozilla.org/uuid-generator;1"]
|
|
.getService(Ci.nsIUUIDGenerator)
|
|
.generateUUID()
|
|
.toString();
|
|
|
|
let callbackInfo = { id: id, callback: callback };
|
|
|
|
if (this._quotaManagerCallbackInfos) {
|
|
callbackInfo.listener = this._quotaManagerCallbackInfos[0].listener;
|
|
this._quotaManagerCallbackInfos.push(callbackInfo)
|
|
} else {
|
|
callbackInfo.listener = function(msg) {
|
|
msg = msg.data;
|
|
for (let index in this._quotaManagerCallbackInfos) {
|
|
let callbackInfo = this._quotaManagerCallbackInfos[index];
|
|
if (callbackInfo.id == msg.id) {
|
|
if (this._quotaManagerCallbackInfos.length > 1) {
|
|
this._quotaManagerCallbackInfos.splice(index, 1);
|
|
} else {
|
|
this._quotaManagerCallbackInfos = null;
|
|
this._removeMessageListener(messageTopic, callbackInfo.listener);
|
|
}
|
|
|
|
if ('usage' in msg) {
|
|
callbackInfo.callback(msg.usage, msg.fileUsage);
|
|
} else {
|
|
callbackInfo.callback();
|
|
}
|
|
}
|
|
}
|
|
}.bind(this);
|
|
|
|
this._addMessageListener(messageTopic, callbackInfo.listener);
|
|
this._quotaManagerCallbackInfos = [ callbackInfo ];
|
|
}
|
|
|
|
let msg = { op: op, uri: uri, appId: appId, inBrowser: inBrowser, id: id };
|
|
this._sendAsyncMessage(messageTopic, msg);
|
|
},
|
|
|
|
createDOMFile: function(path, options) {
|
|
return new File(path, options);
|
|
},
|
|
};
|
|
|
|
this.SpecialPowersAPI = SpecialPowersAPI;
|
|
this.bindDOMWindowUtils = bindDOMWindowUtils;
|
|
this.getRawComponents = getRawComponents;
|