gecko-dev/dom/base/nsFrameMessageManager.cpp
Birunthan Mohanathas 554eff3a21 Bug 946065 - Part 12: Move content/base/ to dom/ and flatten subdirectories. r=peterv
--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
2014-10-25 20:25:22 +03:00

1981 lines
64 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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/. */
#include "base/basictypes.h"
#include "nsFrameMessageManager.h"
#include "AppProcessChecker.h"
#include "ContentChild.h"
#include "nsContentUtils.h"
#include "nsError.h"
#include "nsIXPConnect.h"
#include "jsapi.h"
#include "jsfriendapi.h"
#include "nsJSUtils.h"
#include "nsJSPrincipals.h"
#include "nsNetUtil.h"
#include "nsScriptLoader.h"
#include "nsFrameLoader.h"
#include "nsIXULRuntime.h"
#include "nsIScriptError.h"
#include "nsIConsoleService.h"
#include "nsIMemoryReporter.h"
#include "nsIProtocolHandler.h"
#include "nsIScriptSecurityManager.h"
#include "nsIJSRuntimeService.h"
#include "nsIDOMClassInfo.h"
#include "xpcpublic.h"
#include "mozilla/CycleCollectedJSRuntime.h"
#include "mozilla/Preferences.h"
#include "mozilla/dom/File.h"
#include "mozilla/dom/nsIContentParent.h"
#include "mozilla/dom/PermissionMessageUtils.h"
#include "mozilla/dom/ScriptSettings.h"
#include "mozilla/dom/StructuredCloneUtils.h"
#include "mozilla/dom/ipc/BlobChild.h"
#include "mozilla/dom/ipc/BlobParent.h"
#include "JavaScriptChild.h"
#include "JavaScriptParent.h"
#include "mozilla/dom/DOMStringList.h"
#include "nsPrintfCString.h"
#include "nsXULAppAPI.h"
#include <algorithm>
#ifdef ANDROID
#include <android/log.h>
#endif
#ifdef XP_WIN
#include <windows.h>
# if defined(SendMessage)
# undef SendMessage
# endif
#endif
using namespace mozilla;
using namespace mozilla::dom;
using namespace mozilla::dom::ipc;
static PLDHashOperator
CycleCollectorTraverseListeners(const nsAString& aKey,
nsAutoTObserverArray<nsMessageListenerInfo, 1>* aListeners,
void* aCb)
{
nsCycleCollectionTraversalCallback* cb =
static_cast<nsCycleCollectionTraversalCallback*> (aCb);
uint32_t count = aListeners->Length();
for (uint32_t i = 0; i < count; ++i) {
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(*cb, "listeners[i] mStrongListener");
cb->NoteXPCOMChild(aListeners->ElementAt(i).mStrongListener.get());
}
return PL_DHASH_NEXT;
}
NS_IMPL_CYCLE_COLLECTION_CLASS(nsFrameMessageManager)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(nsFrameMessageManager)
tmp->mListeners.EnumerateRead(CycleCollectorTraverseListeners,
static_cast<void*>(&cb));
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mChildManagers)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(nsFrameMessageManager)
tmp->mListeners.Clear();
for (int32_t i = tmp->mChildManagers.Count(); i > 0; --i) {
static_cast<nsFrameMessageManager*>(tmp->mChildManagers[i - 1])->
Disconnect(false);
}
NS_IMPL_CYCLE_COLLECTION_UNLINK(mChildManagers)
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(nsFrameMessageManager)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIContentFrameMessageManager)
/* nsFrameMessageManager implements nsIMessageSender and nsIMessageBroadcaster,
* both of which descend from nsIMessageListenerManager. QI'ing to
* nsIMessageListenerManager is therefore ambiguous and needs explicit casts
* depending on which child interface applies. */
NS_INTERFACE_MAP_ENTRY_AGGREGATED(nsIMessageListenerManager,
(mIsBroadcaster ?
static_cast<nsIMessageListenerManager*>(
static_cast<nsIMessageBroadcaster*>(this)) :
static_cast<nsIMessageListenerManager*>(
static_cast<nsIMessageSender*>(this))))
/* Message managers in child process implement nsIMessageSender and
nsISyncMessageSender. Message managers in the chrome process are
either broadcasters (if they have subordinate/child message
managers) or they're simple message senders. */
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsISyncMessageSender, !mChrome)
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIMessageSender, !mChrome || !mIsBroadcaster)
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIMessageBroadcaster, mChrome && mIsBroadcaster)
/* nsIContentFrameMessageManager is accessible only in TabChildGlobal. */
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIContentFrameMessageManager,
!mChrome && !mIsProcessManager)
/* Frame message managers (non-process message managers) support nsIFrameScriptLoader. */
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIFrameScriptLoader,
mChrome && !mIsProcessManager)
/* Message senders in the chrome process support nsIProcessChecker. */
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(nsIProcessChecker,
mChrome && !mIsBroadcaster)
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO_CONDITIONAL(ChromeMessageBroadcaster,
mChrome && mIsBroadcaster)
NS_DOM_INTERFACE_MAP_ENTRY_CLASSINFO_CONDITIONAL(ChromeMessageSender,
mChrome && !mIsBroadcaster)
NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(nsFrameMessageManager)
NS_IMPL_CYCLE_COLLECTING_RELEASE(nsFrameMessageManager)
enum ActorFlavorEnum {
Parent = 0,
Child
};
template <ActorFlavorEnum>
struct BlobTraits
{ };
template <>
struct BlobTraits<Parent>
{
typedef mozilla::dom::BlobParent BlobType;
typedef mozilla::dom::PBlobParent ProtocolType;
typedef mozilla::dom::nsIContentParent ConcreteContentManagerType;
};
template <>
struct BlobTraits<Child>
{
typedef mozilla::dom::BlobChild BlobType;
typedef mozilla::dom::PBlobChild ProtocolType;
typedef mozilla::dom::nsIContentChild ConcreteContentManagerType;
};
template<ActorFlavorEnum>
struct DataBlobs
{ };
template<>
struct DataBlobs<Parent>
{
typedef BlobTraits<Parent>::ProtocolType ProtocolType;
static InfallibleTArray<ProtocolType*>& Blobs(ClonedMessageData& aData)
{
return aData.blobsParent();
}
static const InfallibleTArray<ProtocolType*>& Blobs(const ClonedMessageData& aData)
{
return aData.blobsParent();
}
};
template<>
struct DataBlobs<Child>
{
typedef BlobTraits<Child>::ProtocolType ProtocolType;
static InfallibleTArray<ProtocolType*>& Blobs(ClonedMessageData& aData)
{
return aData.blobsChild();
}
static const InfallibleTArray<ProtocolType*>& Blobs(const ClonedMessageData& aData)
{
return aData.blobsChild();
}
};
template<ActorFlavorEnum Flavor>
static bool
BuildClonedMessageData(typename BlobTraits<Flavor>::ConcreteContentManagerType* aManager,
const StructuredCloneData& aData,
ClonedMessageData& aClonedData)
{
SerializedStructuredCloneBuffer& buffer = aClonedData.data();
buffer.data = aData.mData;
buffer.dataLength = aData.mDataLength;
const nsTArray<nsRefPtr<File>>& blobs = aData.mClosure.mBlobs;
if (!blobs.IsEmpty()) {
typedef typename BlobTraits<Flavor>::ProtocolType ProtocolType;
InfallibleTArray<ProtocolType*>& blobList = DataBlobs<Flavor>::Blobs(aClonedData);
uint32_t length = blobs.Length();
blobList.SetCapacity(length);
for (uint32_t i = 0; i < length; ++i) {
typename BlobTraits<Flavor>::BlobType* protocolActor =
aManager->GetOrCreateActorForBlob(blobs[i]);
if (!protocolActor) {
return false;
}
blobList.AppendElement(protocolActor);
}
}
return true;
}
bool
MessageManagerCallback::BuildClonedMessageDataForParent(nsIContentParent* aParent,
const StructuredCloneData& aData,
ClonedMessageData& aClonedData)
{
return BuildClonedMessageData<Parent>(aParent, aData, aClonedData);
}
bool
MessageManagerCallback::BuildClonedMessageDataForChild(nsIContentChild* aChild,
const StructuredCloneData& aData,
ClonedMessageData& aClonedData)
{
return BuildClonedMessageData<Child>(aChild, aData, aClonedData);
}
template<ActorFlavorEnum Flavor>
static StructuredCloneData
UnpackClonedMessageData(const ClonedMessageData& aData)
{
const SerializedStructuredCloneBuffer& buffer = aData.data();
typedef typename BlobTraits<Flavor>::ProtocolType ProtocolType;
const InfallibleTArray<ProtocolType*>& blobs = DataBlobs<Flavor>::Blobs(aData);
StructuredCloneData cloneData;
cloneData.mData = buffer.data;
cloneData.mDataLength = buffer.dataLength;
if (!blobs.IsEmpty()) {
uint32_t length = blobs.Length();
cloneData.mClosure.mBlobs.SetCapacity(length);
for (uint32_t i = 0; i < length; ++i) {
auto* blob =
static_cast<typename BlobTraits<Flavor>::BlobType*>(blobs[i]);
MOZ_ASSERT(blob);
nsRefPtr<FileImpl> blobImpl = blob->GetBlobImpl();
MOZ_ASSERT(blobImpl);
// This object will be duplicated with a correct parent before being
// exposed to JS.
nsRefPtr<File> domBlob = new File(nullptr, blobImpl);
cloneData.mClosure.mBlobs.AppendElement(domBlob);
}
}
return cloneData;
}
StructuredCloneData
mozilla::dom::ipc::UnpackClonedMessageDataForParent(const ClonedMessageData& aData)
{
return UnpackClonedMessageData<Parent>(aData);
}
StructuredCloneData
mozilla::dom::ipc::UnpackClonedMessageDataForChild(const ClonedMessageData& aData)
{
return UnpackClonedMessageData<Child>(aData);
}
bool
SameProcessCpowHolder::ToObject(JSContext* aCx,
JS::MutableHandle<JSObject*> aObjp)
{
if (!mObj) {
return true;
}
aObjp.set(mObj);
return JS_WrapObject(aCx, aObjp);
}
// nsIMessageListenerManager
NS_IMETHODIMP
nsFrameMessageManager::AddMessageListener(const nsAString& aMessage,
nsIMessageListener* aListener)
{
nsAutoTObserverArray<nsMessageListenerInfo, 1>* listeners =
mListeners.Get(aMessage);
if (!listeners) {
listeners = new nsAutoTObserverArray<nsMessageListenerInfo, 1>();
mListeners.Put(aMessage, listeners);
} else {
uint32_t len = listeners->Length();
for (uint32_t i = 0; i < len; ++i) {
if (listeners->ElementAt(i).mStrongListener == aListener) {
return NS_OK;
}
}
}
nsMessageListenerInfo* entry = listeners->AppendElement();
NS_ENSURE_TRUE(entry, NS_ERROR_OUT_OF_MEMORY);
entry->mStrongListener = aListener;
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::RemoveMessageListener(const nsAString& aMessage,
nsIMessageListener* aListener)
{
nsAutoTObserverArray<nsMessageListenerInfo, 1>* listeners =
mListeners.Get(aMessage);
if (!listeners) {
return NS_OK;
}
uint32_t len = listeners->Length();
for (uint32_t i = 0; i < len; ++i) {
if (listeners->ElementAt(i).mStrongListener == aListener) {
listeners->RemoveElementAt(i);
return NS_OK;
}
}
return NS_OK;
}
#ifdef DEBUG
typedef struct
{
nsCOMPtr<nsISupports> mCanonical;
nsWeakPtr mWeak;
} CanonicalCheckerParams;
static PLDHashOperator
CanonicalChecker(const nsAString& aKey,
nsAutoTObserverArray<nsMessageListenerInfo, 1>* aListeners,
void* aParams)
{
CanonicalCheckerParams* params =
static_cast<CanonicalCheckerParams*> (aParams);
uint32_t count = aListeners->Length();
for (uint32_t i = 0; i < count; i++) {
if (!aListeners->ElementAt(i).mWeakListener) {
continue;
}
nsCOMPtr<nsISupports> otherCanonical =
do_QueryReferent(aListeners->ElementAt(i).mWeakListener);
MOZ_ASSERT((params->mCanonical == otherCanonical) ==
(params->mWeak == aListeners->ElementAt(i).mWeakListener));
}
return PL_DHASH_NEXT;
}
#endif
NS_IMETHODIMP
nsFrameMessageManager::AddWeakMessageListener(const nsAString& aMessage,
nsIMessageListener* aListener)
{
nsWeakPtr weak = do_GetWeakReference(aListener);
NS_ENSURE_TRUE(weak, NS_ERROR_NO_INTERFACE);
#ifdef DEBUG
// It's technically possible that one object X could give two different
// nsIWeakReference*'s when you do_GetWeakReference(X). We really don't want
// this to happen; it will break e.g. RemoveWeakMessageListener. So let's
// check that we're not getting ourselves into that situation.
nsCOMPtr<nsISupports> canonical = do_QueryInterface(aListener);
CanonicalCheckerParams params;
params.mCanonical = canonical;
params.mWeak = weak;
mListeners.EnumerateRead(CanonicalChecker, (void*)&params);
#endif
nsAutoTObserverArray<nsMessageListenerInfo, 1>* listeners =
mListeners.Get(aMessage);
if (!listeners) {
listeners = new nsAutoTObserverArray<nsMessageListenerInfo, 1>();
mListeners.Put(aMessage, listeners);
} else {
uint32_t len = listeners->Length();
for (uint32_t i = 0; i < len; ++i) {
if (listeners->ElementAt(i).mWeakListener == weak) {
return NS_OK;
}
}
}
nsMessageListenerInfo* entry = listeners->AppendElement();
entry->mWeakListener = weak;
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::RemoveWeakMessageListener(const nsAString& aMessage,
nsIMessageListener* aListener)
{
nsWeakPtr weak = do_GetWeakReference(aListener);
NS_ENSURE_TRUE(weak, NS_OK);
nsAutoTObserverArray<nsMessageListenerInfo, 1>* listeners =
mListeners.Get(aMessage);
if (!listeners) {
return NS_OK;
}
uint32_t len = listeners->Length();
for (uint32_t i = 0; i < len; ++i) {
if (listeners->ElementAt(i).mWeakListener == weak) {
listeners->RemoveElementAt(i);
return NS_OK;
}
}
return NS_OK;
}
// nsIFrameScriptLoader
NS_IMETHODIMP
nsFrameMessageManager::LoadFrameScript(const nsAString& aURL,
bool aAllowDelayedLoad,
bool aRunInGlobalScope)
{
if (aAllowDelayedLoad) {
if (IsGlobal() || IsBroadcaster()) {
// Cache for future windows or frames
mPendingScripts.AppendElement(aURL);
mPendingScriptsGlobalStates.AppendElement(aRunInGlobalScope);
} else if (!mCallback) {
// We're frame message manager, which isn't connected yet.
mPendingScripts.AppendElement(aURL);
mPendingScriptsGlobalStates.AppendElement(aRunInGlobalScope);
return NS_OK;
}
}
if (mCallback) {
#ifdef DEBUG_smaug
printf("Will load %s \n", NS_ConvertUTF16toUTF8(aURL).get());
#endif
NS_ENSURE_TRUE(mCallback->DoLoadFrameScript(aURL, aRunInGlobalScope),
NS_ERROR_FAILURE);
}
for (int32_t i = 0; i < mChildManagers.Count(); ++i) {
nsRefPtr<nsFrameMessageManager> mm =
static_cast<nsFrameMessageManager*>(mChildManagers[i]);
if (mm) {
// Use false here, so that child managers don't cache the script, which
// is already cached in the parent.
mm->LoadFrameScript(aURL, false, aRunInGlobalScope);
}
}
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::RemoveDelayedFrameScript(const nsAString& aURL)
{
for (uint32_t i = 0; i < mPendingScripts.Length(); ++i) {
if (mPendingScripts[i] == aURL) {
mPendingScripts.RemoveElementAt(i);
mPendingScriptsGlobalStates.RemoveElementAt(i);
break;
}
}
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::GetDelayedFrameScripts(JSContext* aCx, JS::MutableHandle<JS::Value> aList)
{
// Frame message managers may return an incomplete list because scripts
// that were loaded after it was connected are not added to the list.
if (!IsGlobal() && !IsBroadcaster()) {
NS_WARNING("Cannot retrieve list of pending frame scripts for frame"
"message managers as it may be incomplete");
return NS_ERROR_NOT_IMPLEMENTED;
}
JS::Rooted<JSObject*> array(aCx, JS_NewArrayObject(aCx, mPendingScripts.Length()));
NS_ENSURE_TRUE(array, NS_ERROR_OUT_OF_MEMORY);
JS::Rooted<JSString*> url(aCx);
JS::Rooted<JSObject*> pair(aCx);
for (uint32_t i = 0; i < mPendingScripts.Length(); ++i) {
url = JS_NewUCStringCopyN(aCx, mPendingScripts[i].get(), mPendingScripts[i].Length());
NS_ENSURE_TRUE(url, NS_ERROR_OUT_OF_MEMORY);
JS::AutoValueArray<2> pairElts(aCx);
pairElts[0].setString(url);
pairElts[1].setBoolean(mPendingScriptsGlobalStates[i]);
pair = JS_NewArrayObject(aCx, pairElts);
NS_ENSURE_TRUE(pair, NS_ERROR_OUT_OF_MEMORY);
NS_ENSURE_TRUE(JS_SetElement(aCx, array, i, pair),
NS_ERROR_OUT_OF_MEMORY);
}
aList.setObject(*array);
return NS_OK;
}
static bool
JSONCreator(const char16_t* aBuf, uint32_t aLen, void* aData)
{
nsAString* result = static_cast<nsAString*>(aData);
result->Append(static_cast<const char16_t*>(aBuf),
static_cast<uint32_t>(aLen));
return true;
}
static bool
GetParamsForMessage(JSContext* aCx,
const JS::Value& aJSON,
JSAutoStructuredCloneBuffer& aBuffer,
StructuredCloneClosure& aClosure)
{
JS::Rooted<JS::Value> v(aCx, aJSON);
if (WriteStructuredClone(aCx, v, aBuffer, aClosure)) {
return true;
}
JS_ClearPendingException(aCx);
// Not clonable, try JSON
//XXX This is ugly but currently structured cloning doesn't handle
// properly cases when interface is implemented in JS and used
// as a dictionary.
nsAutoString json;
NS_ENSURE_TRUE(JS_Stringify(aCx, &v, JS::NullPtr(), JS::NullHandleValue,
JSONCreator, &json), false);
NS_ENSURE_TRUE(!json.IsEmpty(), false);
JS::Rooted<JS::Value> val(aCx, JS::NullValue());
NS_ENSURE_TRUE(JS_ParseJSON(aCx, static_cast<const char16_t*>(json.get()),
json.Length(), &val), false);
return WriteStructuredClone(aCx, val, aBuffer, aClosure);
}
// nsISyncMessageSender
static bool sSendingSyncMessage = false;
NS_IMETHODIMP
nsFrameMessageManager::SendSyncMessage(const nsAString& aMessageName,
JS::Handle<JS::Value> aJSON,
JS::Handle<JS::Value> aObjects,
nsIPrincipal* aPrincipal,
JSContext* aCx,
uint8_t aArgc,
JS::MutableHandle<JS::Value> aRetval)
{
return SendMessage(aMessageName, aJSON, aObjects, aPrincipal, aCx, aArgc,
aRetval, true);
}
NS_IMETHODIMP
nsFrameMessageManager::SendRpcMessage(const nsAString& aMessageName,
JS::Handle<JS::Value> aJSON,
JS::Handle<JS::Value> aObjects,
nsIPrincipal* aPrincipal,
JSContext* aCx,
uint8_t aArgc,
JS::MutableHandle<JS::Value> aRetval)
{
return SendMessage(aMessageName, aJSON, aObjects, aPrincipal, aCx, aArgc,
aRetval, false);
}
nsresult
nsFrameMessageManager::SendMessage(const nsAString& aMessageName,
JS::Handle<JS::Value> aJSON,
JS::Handle<JS::Value> aObjects,
nsIPrincipal* aPrincipal,
JSContext* aCx,
uint8_t aArgc,
JS::MutableHandle<JS::Value> aRetval,
bool aIsSync)
{
NS_ASSERTION(!IsGlobal(), "Should not call SendSyncMessage in chrome");
NS_ASSERTION(!IsBroadcaster(), "Should not call SendSyncMessage in chrome");
NS_ASSERTION(!mParentManager, "Should not have parent manager in content!");
aRetval.setUndefined();
NS_ENSURE_TRUE(mCallback, NS_ERROR_NOT_INITIALIZED);
if (sSendingSyncMessage && aIsSync) {
// No kind of blocking send should be issued on top of a sync message.
return NS_ERROR_UNEXPECTED;
}
StructuredCloneData data;
JSAutoStructuredCloneBuffer buffer;
if (aArgc >= 2 &&
!GetParamsForMessage(aCx, aJSON, buffer, data.mClosure)) {
return NS_ERROR_DOM_DATA_CLONE_ERR;
}
data.mData = buffer.data();
data.mDataLength = buffer.nbytes();
JS::Rooted<JSObject*> objects(aCx);
if (aArgc >= 3 && aObjects.isObject()) {
objects = &aObjects.toObject();
}
InfallibleTArray<nsString> retval;
sSendingSyncMessage |= aIsSync;
bool rv = mCallback->DoSendBlockingMessage(aCx, aMessageName, data, objects,
aPrincipal, &retval, aIsSync);
if (aIsSync) {
sSendingSyncMessage = false;
}
if (!rv) {
return NS_OK;
}
uint32_t len = retval.Length();
JS::Rooted<JSObject*> dataArray(aCx, JS_NewArrayObject(aCx, len));
NS_ENSURE_TRUE(dataArray, NS_ERROR_OUT_OF_MEMORY);
for (uint32_t i = 0; i < len; ++i) {
if (retval[i].IsEmpty()) {
continue;
}
JS::Rooted<JS::Value> ret(aCx);
if (!JS_ParseJSON(aCx, static_cast<const char16_t*>(retval[i].get()),
retval[i].Length(), &ret)) {
return NS_ERROR_UNEXPECTED;
}
NS_ENSURE_TRUE(JS_SetElement(aCx, dataArray, i, ret),
NS_ERROR_OUT_OF_MEMORY);
}
aRetval.setObject(*dataArray);
return NS_OK;
}
nsresult
nsFrameMessageManager::DispatchAsyncMessageInternal(JSContext* aCx,
const nsAString& aMessage,
const StructuredCloneData& aData,
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal)
{
if (mIsBroadcaster) {
int32_t len = mChildManagers.Count();
for (int32_t i = 0; i < len; ++i) {
static_cast<nsFrameMessageManager*>(mChildManagers[i])->
DispatchAsyncMessageInternal(aCx, aMessage, aData, aCpows, aPrincipal);
}
return NS_OK;
}
NS_ENSURE_TRUE(mCallback, NS_ERROR_NOT_INITIALIZED);
if (!mCallback->DoSendAsyncMessage(aCx, aMessage, aData, aCpows, aPrincipal)) {
return NS_ERROR_FAILURE;
}
return NS_OK;
}
nsresult
nsFrameMessageManager::DispatchAsyncMessage(const nsAString& aMessageName,
const JS::Value& aJSON,
const JS::Value& aObjects,
nsIPrincipal* aPrincipal,
JSContext* aCx,
uint8_t aArgc)
{
StructuredCloneData data;
JSAutoStructuredCloneBuffer buffer;
if (aArgc >= 2 &&
!GetParamsForMessage(aCx, aJSON, buffer, data.mClosure)) {
return NS_ERROR_DOM_DATA_CLONE_ERR;
}
JS::Rooted<JSObject*> objects(aCx);
if (aArgc >= 3 && aObjects.isObject()) {
objects = &aObjects.toObject();
}
data.mData = buffer.data();
data.mDataLength = buffer.nbytes();
return DispatchAsyncMessageInternal(aCx, aMessageName, data, objects,
aPrincipal);
}
// nsIMessageSender
NS_IMETHODIMP
nsFrameMessageManager::SendAsyncMessage(const nsAString& aMessageName,
JS::Handle<JS::Value> aJSON,
JS::Handle<JS::Value> aObjects,
nsIPrincipal* aPrincipal,
JSContext* aCx,
uint8_t aArgc)
{
return DispatchAsyncMessage(aMessageName, aJSON, aObjects, aPrincipal, aCx,
aArgc);
}
// nsIMessageBroadcaster
NS_IMETHODIMP
nsFrameMessageManager::BroadcastAsyncMessage(const nsAString& aMessageName,
JS::Handle<JS::Value> aJSON,
JS::Handle<JS::Value> aObjects,
JSContext* aCx,
uint8_t aArgc)
{
return DispatchAsyncMessage(aMessageName, aJSON, aObjects, nullptr, aCx,
aArgc);
}
NS_IMETHODIMP
nsFrameMessageManager::GetChildCount(uint32_t* aChildCount)
{
*aChildCount = static_cast<uint32_t>(mChildManagers.Count());
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::GetChildAt(uint32_t aIndex,
nsIMessageListenerManager** aMM)
{
*aMM = nullptr;
nsCOMPtr<nsIMessageListenerManager> mm =
do_QueryInterface(mChildManagers.SafeObjectAt(static_cast<uint32_t>(aIndex)));
mm.swap(*aMM);
return NS_OK;
}
// nsIContentFrameMessageManager
NS_IMETHODIMP
nsFrameMessageManager::Dump(const nsAString& aStr)
{
#ifdef ANDROID
__android_log_print(ANDROID_LOG_INFO, "Gecko", "%s", NS_ConvertUTF16toUTF8(aStr).get());
#endif
#ifdef XP_WIN
if (IsDebuggerPresent()) {
OutputDebugStringW(PromiseFlatString(aStr).get());
}
#endif
fputs(NS_ConvertUTF16toUTF8(aStr).get(), stdout);
fflush(stdout);
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::PrivateNoteIntentionalCrash()
{
return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP
nsFrameMessageManager::GetContent(nsIDOMWindow** aContent)
{
*aContent = nullptr;
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::GetDocShell(nsIDocShell** aDocShell)
{
*aDocShell = nullptr;
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::Btoa(const nsAString& aBinaryData,
nsAString& aAsciiBase64String)
{
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::Atob(const nsAString& aAsciiString,
nsAString& aBinaryData)
{
return NS_OK;
}
// nsIProcessChecker
NS_IMETHODIMP
nsFrameMessageManager::KillChild(bool *aValid)
{
if (!mCallback) {
*aValid = false;
return NS_ERROR_NOT_AVAILABLE;
}
*aValid = mCallback->KillChild();
return NS_OK;
}
nsresult
nsFrameMessageManager::AssertProcessInternal(ProcessCheckerType aType,
const nsAString& aCapability,
bool* aValid)
{
*aValid = false;
// This API is only supported for message senders in the chrome process.
if (!mChrome || mIsBroadcaster) {
return NS_ERROR_NOT_IMPLEMENTED;
}
if (!mCallback) {
return NS_ERROR_NOT_AVAILABLE;
}
switch (aType) {
case PROCESS_CHECKER_PERMISSION:
*aValid = mCallback->CheckPermission(aCapability);
break;
case PROCESS_CHECKER_MANIFEST_URL:
*aValid = mCallback->CheckManifestURL(aCapability);
break;
case ASSERT_APP_HAS_PERMISSION:
*aValid = mCallback->CheckAppHasPermission(aCapability);
break;
default:
break;
}
return NS_OK;
}
NS_IMETHODIMP
nsFrameMessageManager::AssertPermission(const nsAString& aPermission,
bool* aHasPermission)
{
return AssertProcessInternal(PROCESS_CHECKER_PERMISSION,
aPermission,
aHasPermission);
}
NS_IMETHODIMP
nsFrameMessageManager::AssertContainApp(const nsAString& aManifestURL,
bool* aHasManifestURL)
{
return AssertProcessInternal(PROCESS_CHECKER_MANIFEST_URL,
aManifestURL,
aHasManifestURL);
}
NS_IMETHODIMP
nsFrameMessageManager::AssertAppHasPermission(const nsAString& aPermission,
bool* aHasPermission)
{
return AssertProcessInternal(ASSERT_APP_HAS_PERMISSION,
aPermission,
aHasPermission);
}
NS_IMETHODIMP
nsFrameMessageManager::AssertAppHasStatus(unsigned short aStatus,
bool* aHasStatus)
{
*aHasStatus = false;
// This API is only supported for message senders in the chrome process.
if (!mChrome || mIsBroadcaster) {
return NS_ERROR_NOT_IMPLEMENTED;
}
if (!mCallback) {
return NS_ERROR_NOT_AVAILABLE;
}
*aHasStatus = mCallback->CheckAppHasStatus(aStatus);
return NS_OK;
}
class MMListenerRemover
{
public:
explicit MMListenerRemover(nsFrameMessageManager* aMM)
: mWasHandlingMessage(aMM->mHandlingMessage)
, mMM(aMM)
{
mMM->mHandlingMessage = true;
}
~MMListenerRemover()
{
if (!mWasHandlingMessage) {
mMM->mHandlingMessage = false;
if (mMM->mDisconnected) {
mMM->mListeners.Clear();
}
}
}
bool mWasHandlingMessage;
nsRefPtr<nsFrameMessageManager> mMM;
};
// nsIMessageListener
nsresult
nsFrameMessageManager::ReceiveMessage(nsISupports* aTarget,
const nsAString& aMessage,
bool aIsSync,
const StructuredCloneData* aCloneData,
CpowHolder* aCpows,
nsIPrincipal* aPrincipal,
InfallibleTArray<nsString>* aJSONRetVal)
{
nsAutoTObserverArray<nsMessageListenerInfo, 1>* listeners =
mListeners.Get(aMessage);
if (listeners) {
MMListenerRemover lr(this);
nsAutoTObserverArray<nsMessageListenerInfo, 1>::EndLimitedIterator
iter(*listeners);
while(iter.HasMore()) {
nsMessageListenerInfo& listener = iter.GetNext();
// Remove mListeners[i] if it's an expired weak listener.
nsCOMPtr<nsISupports> weakListener;
if (listener.mWeakListener) {
weakListener = do_QueryReferent(listener.mWeakListener);
if (!weakListener) {
listeners->RemoveElement(listener);
continue;
}
}
nsCOMPtr<nsIXPConnectWrappedJS> wrappedJS;
if (weakListener) {
wrappedJS = do_QueryInterface(weakListener);
} else {
wrappedJS = do_QueryInterface(listener.mStrongListener);
}
if (!wrappedJS) {
continue;
}
if (!wrappedJS->GetJSObject()) {
continue;
}
// Note - The ergonomics here will get a lot better with bug 971673:
//
// AutoEntryScript aes;
// if (!aes.Init(wrappedJS->GetJSObject())) {
// continue;
// }
// JSContext* cx = aes.cx();
nsIGlobalObject* nativeGlobal =
xpc::NativeGlobal(js::GetGlobalForObjectCrossCompartment(wrappedJS->GetJSObject()));
AutoEntryScript aes(nativeGlobal);
JSContext* cx = aes.cx();
JS::Rooted<JSObject*> object(cx, wrappedJS->GetJSObject());
// The parameter for the listener function.
JS::Rooted<JSObject*> param(cx,
JS_NewObject(cx, nullptr, JS::NullPtr(), JS::NullPtr()));
NS_ENSURE_TRUE(param, NS_ERROR_OUT_OF_MEMORY);
JS::Rooted<JS::Value> targetv(cx);
js::AssertSameCompartment(cx, object);
nsresult rv = nsContentUtils::WrapNative(cx, aTarget, &targetv);
NS_ENSURE_SUCCESS(rv, rv);
JS::Rooted<JSObject*> cpows(cx);
if (aCpows) {
if (!aCpows->ToObject(cx, &cpows)) {
return NS_ERROR_UNEXPECTED;
}
}
if (!cpows) {
cpows = JS_NewObject(cx, nullptr, JS::NullPtr(), JS::NullPtr());
if (!cpows) {
return NS_ERROR_UNEXPECTED;
}
}
JS::Rooted<JS::Value> cpowsv(cx, JS::ObjectValue(*cpows));
JS::Rooted<JS::Value> json(cx, JS::NullValue());
if (aCloneData && aCloneData->mDataLength &&
!ReadStructuredClone(cx, *aCloneData, &json)) {
JS_ClearPendingException(cx);
return NS_OK;
}
JS::Rooted<JSString*> jsMessage(cx,
JS_NewUCStringCopyN(cx,
static_cast<const char16_t*>(aMessage.BeginReading()),
aMessage.Length()));
NS_ENSURE_TRUE(jsMessage, NS_ERROR_OUT_OF_MEMORY);
JS::Rooted<JS::Value> syncv(cx, JS::BooleanValue(aIsSync));
JS_DefineProperty(cx, param, "target", targetv, JSPROP_ENUMERATE);
JS_DefineProperty(cx, param, "name", jsMessage, JSPROP_ENUMERATE);
JS_DefineProperty(cx, param, "sync", syncv, JSPROP_ENUMERATE);
JS_DefineProperty(cx, param, "json", json, JSPROP_ENUMERATE); // deprecated
JS_DefineProperty(cx, param, "data", json, JSPROP_ENUMERATE);
JS_DefineProperty(cx, param, "objects", cpowsv, JSPROP_ENUMERATE);
// message.principal == null
if (!aPrincipal) {
JS_DefineProperty(cx, param, "principal", JS::UndefinedHandleValue, JSPROP_ENUMERATE);
}
// message.principal = the principal
else {
JS::Rooted<JS::Value> principalValue(cx);
rv = nsContentUtils::WrapNative(cx, aPrincipal, &NS_GET_IID(nsIPrincipal), &principalValue);
JS_DefineProperty(cx, param, "principal", principalValue, JSPROP_ENUMERATE);
}
JS::Rooted<JS::Value> thisValue(cx, JS::UndefinedValue());
JS::Rooted<JS::Value> funval(cx);
if (JS::IsCallable(object)) {
// If the listener is a JS function:
funval.setObject(*object);
// A small hack to get 'this' value right on content side where
// messageManager is wrapped in TabChildGlobal.
nsCOMPtr<nsISupports> defaultThisValue;
if (mChrome) {
defaultThisValue = do_QueryObject(this);
} else {
defaultThisValue = aTarget;
}
js::AssertSameCompartment(cx, object);
nsresult rv = nsContentUtils::WrapNative(cx, defaultThisValue, &thisValue);
NS_ENSURE_SUCCESS(rv, rv);
} else {
// If the listener is a JS object which has receiveMessage function:
if (!JS_GetProperty(cx, object, "receiveMessage", &funval) ||
!funval.isObject())
return NS_ERROR_UNEXPECTED;
// Check if the object is even callable.
NS_ENSURE_STATE(JS::IsCallable(&funval.toObject()));
thisValue.setObject(*object);
}
JS::Rooted<JS::Value> rval(cx, JSVAL_VOID);
JS::Rooted<JS::Value> argv(cx, JS::ObjectValue(*param));
{
JS::Rooted<JSObject*> thisObject(cx, thisValue.toObjectOrNull());
JSAutoCompartment tac(cx, thisObject);
if (!JS_WrapValue(cx, &argv)) {
return NS_ERROR_UNEXPECTED;
}
if (!JS_CallFunctionValue(cx, thisObject, funval, JS::HandleValueArray(argv), &rval)) {
nsJSUtils::ReportPendingException(cx);
continue;
}
if (aJSONRetVal) {
nsString json;
if (!JS_Stringify(cx, &rval, JS::NullPtr(), JS::NullHandleValue,
JSONCreator, &json)) {
nsJSUtils::ReportPendingException(cx);
continue;
}
aJSONRetVal->AppendElement(json);
}
}
}
}
nsRefPtr<nsFrameMessageManager> kungfuDeathGrip = mParentManager;
return mParentManager ? mParentManager->ReceiveMessage(aTarget, aMessage,
aIsSync, aCloneData,
aCpows, aPrincipal,
aJSONRetVal) : NS_OK;
}
void
nsFrameMessageManager::AddChildManager(nsFrameMessageManager* aManager)
{
mChildManagers.AppendObject(aManager);
nsRefPtr<nsFrameMessageManager> kungfuDeathGrip = this;
nsRefPtr<nsFrameMessageManager> kungfuDeathGrip2 = aManager;
LoadPendingScripts(this, aManager);
}
void
nsFrameMessageManager::LoadPendingScripts(nsFrameMessageManager* aManager,
nsFrameMessageManager* aChildMM)
{
// We have parent manager if we're a message broadcaster.
// In that case we want to load the pending scripts from all parent
// message managers in the hierarchy. Process the parent first so
// that pending scripts higher up in the hierarchy are loaded before others.
if (aManager->mParentManager) {
LoadPendingScripts(aManager->mParentManager, aChildMM);
}
for (uint32_t i = 0; i < aManager->mPendingScripts.Length(); ++i) {
aChildMM->LoadFrameScript(aManager->mPendingScripts[i],
false,
aManager->mPendingScriptsGlobalStates[i]);
}
}
void
nsFrameMessageManager::SetCallback(MessageManagerCallback* aCallback)
{
MOZ_ASSERT(!mIsBroadcaster || !mCallback,
"Broadcasters cannot have callbacks!");
if (aCallback && mCallback != aCallback) {
mCallback = aCallback;
if (mOwnsCallback) {
mOwnedCallback = aCallback;
}
}
}
void
nsFrameMessageManager::InitWithCallback(MessageManagerCallback* aCallback)
{
if (mCallback) {
// Initialization should only happen once.
return;
}
SetCallback(aCallback);
// First load parent scripts by adding this to parent manager.
if (mParentManager) {
mParentManager->AddChildManager(this);
}
for (uint32_t i = 0; i < mPendingScripts.Length(); ++i) {
LoadFrameScript(mPendingScripts[i], false, mPendingScriptsGlobalStates[i]);
}
}
void
nsFrameMessageManager::RemoveFromParent()
{
if (mParentManager) {
mParentManager->RemoveChildManager(this);
}
mParentManager = nullptr;
mCallback = nullptr;
mOwnedCallback = nullptr;
}
void
nsFrameMessageManager::Disconnect(bool aRemoveFromParent)
{
if (!mDisconnected) {
nsCOMPtr<nsIObserverService> obs = mozilla::services::GetObserverService();
if (obs) {
obs->NotifyObservers(NS_ISUPPORTS_CAST(nsIContentFrameMessageManager*, this),
"message-manager-disconnect", nullptr);
}
}
if (mParentManager && aRemoveFromParent) {
mParentManager->RemoveChildManager(this);
}
mDisconnected = true;
mParentManager = nullptr;
mCallback = nullptr;
mOwnedCallback = nullptr;
if (!mHandlingMessage) {
mListeners.Clear();
}
}
namespace {
struct MessageManagerReferentCount
{
MessageManagerReferentCount() : mStrong(0), mWeakAlive(0), mWeakDead(0) {}
size_t mStrong;
size_t mWeakAlive;
size_t mWeakDead;
nsTArray<nsString> mSuspectMessages;
nsDataHashtable<nsStringHashKey, uint32_t> mMessageCounter;
};
} // anonymous namespace
namespace mozilla {
namespace dom {
class MessageManagerReporter MOZ_FINAL : public nsIMemoryReporter
{
~MessageManagerReporter() {}
public:
NS_DECL_ISUPPORTS
NS_DECL_NSIMEMORYREPORTER
static const size_t kSuspectReferentCount = 300;
protected:
void CountReferents(nsFrameMessageManager* aMessageManager,
MessageManagerReferentCount* aReferentCount);
};
NS_IMPL_ISUPPORTS(MessageManagerReporter, nsIMemoryReporter)
static PLDHashOperator
CollectMessageListenerData(const nsAString& aKey,
nsAutoTObserverArray<nsMessageListenerInfo, 1>* aListeners,
void* aData)
{
MessageManagerReferentCount* referentCount =
static_cast<MessageManagerReferentCount*>(aData);
uint32_t listenerCount = aListeners->Length();
if (!listenerCount) {
return PL_DHASH_NEXT;
}
nsString key(aKey);
uint32_t oldCount = 0;
referentCount->mMessageCounter.Get(key, &oldCount);
uint32_t currentCount = oldCount + listenerCount;
referentCount->mMessageCounter.Put(key, currentCount);
// Keep track of messages that have a suspiciously large
// number of referents (symptom of leak).
if (currentCount == MessageManagerReporter::kSuspectReferentCount) {
referentCount->mSuspectMessages.AppendElement(key);
}
for (uint32_t i = 0; i < listenerCount; ++i) {
const nsMessageListenerInfo& listenerInfo =
aListeners->ElementAt(i);
if (listenerInfo.mWeakListener) {
nsCOMPtr<nsISupports> referent =
do_QueryReferent(listenerInfo.mWeakListener);
if (referent) {
referentCount->mWeakAlive++;
} else {
referentCount->mWeakDead++;
}
} else {
referentCount->mStrong++;
}
}
return PL_DHASH_NEXT;
}
void
MessageManagerReporter::CountReferents(nsFrameMessageManager* aMessageManager,
MessageManagerReferentCount* aReferentCount)
{
aMessageManager->mListeners.EnumerateRead(CollectMessageListenerData,
aReferentCount);
// Add referent count in child managers because the listeners
// participate in messages dispatched from parent message manager.
for (uint32_t i = 0; i < aMessageManager->mChildManagers.Length(); ++i) {
nsRefPtr<nsFrameMessageManager> mm =
static_cast<nsFrameMessageManager*>(aMessageManager->mChildManagers[i]);
CountReferents(mm, aReferentCount);
}
}
static nsresult
ReportReferentCount(const char* aManagerType,
const MessageManagerReferentCount& aReferentCount,
nsIMemoryReporterCallback* aCb,
nsISupports* aClosure)
{
#define REPORT(_path, _amount, _desc) \
do { \
nsresult rv; \
rv = aCb->Callback(EmptyCString(), _path, \
nsIMemoryReporter::KIND_OTHER, \
nsIMemoryReporter::UNITS_COUNT, _amount, \
_desc, aClosure); \
NS_ENSURE_SUCCESS(rv, rv); \
} while (0)
REPORT(nsPrintfCString("message-manager/referent/%s/strong", aManagerType),
aReferentCount.mStrong,
nsPrintfCString("The number of strong referents held by the message "
"manager in the %s manager.", aManagerType));
REPORT(nsPrintfCString("message-manager/referent/%s/weak/alive", aManagerType),
aReferentCount.mWeakAlive,
nsPrintfCString("The number of weak referents that are still alive "
"held by the message manager in the %s manager.",
aManagerType));
REPORT(nsPrintfCString("message-manager/referent/%s/weak/dead", aManagerType),
aReferentCount.mWeakDead,
nsPrintfCString("The number of weak referents that are dead "
"held by the message manager in the %s manager.",
aManagerType));
for (uint32_t i = 0; i < aReferentCount.mSuspectMessages.Length(); i++) {
uint32_t totalReferentCount = 0;
aReferentCount.mMessageCounter.Get(aReferentCount.mSuspectMessages[i],
&totalReferentCount);
NS_ConvertUTF16toUTF8 suspect(aReferentCount.mSuspectMessages[i]);
REPORT(nsPrintfCString("message-manager-suspect/%s/referent(message=%s)",
aManagerType, suspect.get()), totalReferentCount,
nsPrintfCString("A message in the %s message manager with a "
"suspiciously large number of referents (symptom "
"of a leak).", aManagerType));
}
#undef REPORT
return NS_OK;
}
NS_IMETHODIMP
MessageManagerReporter::CollectReports(nsIMemoryReporterCallback* aCb,
nsISupports* aClosure, bool aAnonymize)
{
nsresult rv;
if (XRE_GetProcessType() == GeckoProcessType_Default) {
nsCOMPtr<nsIMessageBroadcaster> globalmm =
do_GetService("@mozilla.org/globalmessagemanager;1");
if (globalmm) {
nsRefPtr<nsFrameMessageManager> mm =
static_cast<nsFrameMessageManager*>(globalmm.get());
MessageManagerReferentCount count;
CountReferents(mm, &count);
rv = ReportReferentCount("global-manager", count, aCb, aClosure);
NS_ENSURE_SUCCESS(rv, rv);
}
}
if (nsFrameMessageManager::sParentProcessManager) {
MessageManagerReferentCount count;
CountReferents(nsFrameMessageManager::sParentProcessManager, &count);
rv = ReportReferentCount("parent-process-manager", count, aCb, aClosure);
NS_ENSURE_SUCCESS(rv, rv);
}
if (nsFrameMessageManager::sChildProcessManager) {
MessageManagerReferentCount count;
CountReferents(nsFrameMessageManager::sChildProcessManager, &count);
rv = ReportReferentCount("child-process-manager", count, aCb, aClosure);
NS_ENSURE_SUCCESS(rv, rv);
}
return NS_OK;
}
} // namespace dom
} // namespace mozilla
nsresult
NS_NewGlobalMessageManager(nsIMessageBroadcaster** aResult)
{
NS_ENSURE_TRUE(XRE_GetProcessType() == GeckoProcessType_Default,
NS_ERROR_NOT_AVAILABLE);
nsFrameMessageManager* mm = new nsFrameMessageManager(nullptr,
nullptr,
MM_CHROME | MM_GLOBAL | MM_BROADCASTER);
RegisterStrongMemoryReporter(new MessageManagerReporter());
return CallQueryInterface(mm, aResult);
}
nsDataHashtable<nsStringHashKey, nsFrameScriptObjectExecutorHolder*>*
nsFrameScriptExecutor::sCachedScripts = nullptr;
nsScriptCacheCleaner* nsFrameScriptExecutor::sScriptCacheCleaner = nullptr;
void
nsFrameScriptExecutor::DidCreateGlobal()
{
NS_ASSERTION(mGlobal, "Should have mGlobal!");
if (!sCachedScripts) {
sCachedScripts =
new nsDataHashtable<nsStringHashKey, nsFrameScriptObjectExecutorHolder*>;
nsRefPtr<nsScriptCacheCleaner> scriptCacheCleaner =
new nsScriptCacheCleaner();
scriptCacheCleaner.forget(&sScriptCacheCleaner);
}
}
static PLDHashOperator
RemoveCachedScriptEntry(const nsAString& aKey,
nsFrameScriptObjectExecutorHolder*& aData,
void* aUserArg)
{
delete aData;
return PL_DHASH_REMOVE;
}
// static
void
nsFrameScriptExecutor::Shutdown()
{
if (sCachedScripts) {
AutoSafeJSContext cx;
NS_ASSERTION(sCachedScripts != nullptr, "Need cached scripts");
sCachedScripts->Enumerate(RemoveCachedScriptEntry, nullptr);
delete sCachedScripts;
sCachedScripts = nullptr;
nsRefPtr<nsScriptCacheCleaner> scriptCacheCleaner;
scriptCacheCleaner.swap(sScriptCacheCleaner);
}
}
void
nsFrameScriptExecutor::LoadFrameScriptInternal(const nsAString& aURL,
bool aRunInGlobalScope)
{
if (!mGlobal || !sCachedScripts) {
return;
}
JSRuntime* rt = CycleCollectedJSRuntime::Get()->Runtime();
JS::Rooted<JSScript*> script(rt);
nsFrameScriptObjectExecutorHolder* holder = sCachedScripts->Get(aURL);
if (holder && holder->WillRunInGlobalScope() == aRunInGlobalScope) {
script = holder->mScript;
} else {
// Don't put anything in the cache if we already have an entry
// with a different WillRunInGlobalScope() value.
bool shouldCache = !holder;
TryCacheLoadAndCompileScript(aURL, aRunInGlobalScope,
shouldCache, &script);
}
JS::Rooted<JSObject*> global(rt, mGlobal->GetJSObject());
if (global) {
AutoEntryScript aes(xpc::NativeGlobal(global));
aes.TakeOwnershipOfErrorReporting();
JSContext* cx = aes.cx();
if (script) {
if (aRunInGlobalScope) {
JS::CloneAndExecuteScript(cx, global, script);
} else {
JS::Rooted<JSObject*> scope(cx);
bool ok = js::ExecuteInGlobalAndReturnScope(cx, global, script, &scope);
if (ok) {
// Force the scope to stay alive.
mAnonymousGlobalScopes.AppendElement(scope);
}
}
}
}
}
void
nsFrameScriptExecutor::TryCacheLoadAndCompileScript(const nsAString& aURL,
bool aRunInGlobalScope,
bool aShouldCache,
JS::MutableHandle<JSScript*> aScriptp)
{
nsCString url = NS_ConvertUTF16toUTF8(aURL);
nsCOMPtr<nsIURI> uri;
nsresult rv = NS_NewURI(getter_AddRefs(uri), url);
if (NS_FAILED(rv)) {
return;
}
bool hasFlags;
rv = NS_URIChainHasFlags(uri,
nsIProtocolHandler::URI_IS_LOCAL_RESOURCE,
&hasFlags);
if (NS_FAILED(rv) || !hasFlags) {
NS_WARNING("Will not load a frame script!");
return;
}
nsCOMPtr<nsIChannel> channel;
NS_NewChannel(getter_AddRefs(channel),
uri,
nsContentUtils::GetSystemPrincipal(),
nsILoadInfo::SEC_NORMAL,
nsIContentPolicy::TYPE_OTHER);
if (!channel) {
return;
}
nsCOMPtr<nsIInputStream> input;
channel->Open(getter_AddRefs(input));
nsString dataString;
char16_t* dataStringBuf = nullptr;
size_t dataStringLength = 0;
uint64_t avail64 = 0;
if (input && NS_SUCCEEDED(input->Available(&avail64)) && avail64) {
if (avail64 > UINT32_MAX) {
return;
}
nsCString buffer;
uint32_t avail = (uint32_t)std::min(avail64, (uint64_t)UINT32_MAX);
if (NS_FAILED(NS_ReadInputStreamToString(input, buffer, avail))) {
return;
}
nsScriptLoader::ConvertToUTF16(channel, (uint8_t*)buffer.get(), avail,
EmptyString(), nullptr,
dataStringBuf, dataStringLength);
}
JS::SourceBufferHolder srcBuf(dataStringBuf, dataStringLength,
JS::SourceBufferHolder::GiveOwnership);
if (dataStringBuf && dataStringLength > 0) {
AutoSafeJSContext cx;
JS::Rooted<JSObject*> global(cx, mGlobal->GetJSObject());
if (global) {
JSAutoCompartment ac(cx, global);
JS::CompileOptions options(cx);
options.setFileAndLine(url.get(), 1);
options.setNoScriptRval(true);
JS::Rooted<JSScript*> script(cx);
if (aRunInGlobalScope) {
if (!JS::Compile(cx, JS::NullPtr(), options, srcBuf, &script)) {
return;
}
} else {
// We can't clone compile-and-go scripts.
options.setCompileAndGo(false);
if (!JS::Compile(cx, JS::NullPtr(), options, srcBuf, &script)) {
return;
}
}
aScriptp.set(script);
nsAutoCString scheme;
uri->GetScheme(scheme);
// We don't cache data: scripts!
if (aShouldCache && !scheme.EqualsLiteral("data")) {
nsFrameScriptObjectExecutorHolder* holder;
// Root the object also for caching.
if (script) {
holder = new nsFrameScriptObjectExecutorHolder(cx, script, aRunInGlobalScope);
}
sCachedScripts->Put(aURL, holder);
}
}
}
}
void
nsFrameScriptExecutor::TryCacheLoadAndCompileScript(const nsAString& aURL,
bool aRunInGlobalScope)
{
AutoSafeJSContext cx;
JS::Rooted<JSScript*> script(cx);
TryCacheLoadAndCompileScript(aURL, aRunInGlobalScope, true, &script);
}
bool
nsFrameScriptExecutor::InitTabChildGlobalInternal(nsISupports* aScope,
const nsACString& aID)
{
nsCOMPtr<nsIJSRuntimeService> runtimeSvc =
do_GetService("@mozilla.org/js/xpc/RuntimeService;1");
NS_ENSURE_TRUE(runtimeSvc, false);
JSRuntime* rt = nullptr;
runtimeSvc->GetRuntime(&rt);
NS_ENSURE_TRUE(rt, false);
AutoSafeJSContext cx;
nsContentUtils::GetSecurityManager()->GetSystemPrincipal(getter_AddRefs(mPrincipal));
nsIXPConnect* xpc = nsContentUtils::XPConnect();
const uint32_t flags = nsIXPConnect::INIT_JS_STANDARD_CLASSES;
JS::CompartmentOptions options;
options.setZone(JS::SystemZone)
.setVersion(JSVERSION_LATEST);
nsresult rv =
xpc->InitClassesWithNewWrappedGlobal(cx, aScope, mPrincipal,
flags, options, getter_AddRefs(mGlobal));
NS_ENSURE_SUCCESS(rv, false);
JS::Rooted<JSObject*> global(cx, mGlobal->GetJSObject());
NS_ENSURE_TRUE(global, false);
// Set the location information for the new global, so that tools like
// about:memory may use that information.
xpc::SetLocationForGlobal(global, aID);
DidCreateGlobal();
return true;
}
NS_IMPL_ISUPPORTS(nsScriptCacheCleaner, nsIObserver)
nsFrameMessageManager* nsFrameMessageManager::sChildProcessManager = nullptr;
nsFrameMessageManager* nsFrameMessageManager::sParentProcessManager = nullptr;
nsFrameMessageManager* nsFrameMessageManager::sSameProcessParentManager = nullptr;
nsTArray<nsCOMPtr<nsIRunnable> >* nsFrameMessageManager::sPendingSameProcessAsyncMessages = nullptr;
class nsAsyncMessageToSameProcessChild : public nsSameProcessAsyncMessageBase,
public nsRunnable
{
public:
nsAsyncMessageToSameProcessChild(JSContext* aCx,
const nsAString& aMessage,
const StructuredCloneData& aData,
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal)
: nsSameProcessAsyncMessageBase(aCx, aMessage, aData, aCpows, aPrincipal)
{
}
NS_IMETHOD Run()
{
nsFrameMessageManager* ppm = nsFrameMessageManager::sChildProcessManager;
ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(ppm), ppm);
return NS_OK;
}
};
/**
* Send messages to an imaginary child process in a single-process scenario.
*/
class SameParentProcessMessageManagerCallback : public MessageManagerCallback
{
public:
SameParentProcessMessageManagerCallback()
{
MOZ_COUNT_CTOR(SameParentProcessMessageManagerCallback);
}
virtual ~SameParentProcessMessageManagerCallback()
{
MOZ_COUNT_DTOR(SameParentProcessMessageManagerCallback);
}
virtual bool DoSendAsyncMessage(JSContext* aCx,
const nsAString& aMessage,
const StructuredCloneData& aData,
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal)
{
nsRefPtr<nsIRunnable> ev =
new nsAsyncMessageToSameProcessChild(aCx, aMessage, aData, aCpows,
aPrincipal);
NS_DispatchToCurrentThread(ev);
return true;
}
bool CheckPermission(const nsAString& aPermission)
{
// In a single-process scenario, the child always has all capabilities.
return true;
}
bool CheckManifestURL(const nsAString& aManifestURL)
{
// In a single-process scenario, the child always has all capabilities.
return true;
}
bool CheckAppHasPermission(const nsAString& aPermission)
{
// In a single-process scenario, the child always has all capabilities.
return true;
}
virtual bool CheckAppHasStatus(unsigned short aStatus)
{
// In a single-process scenario, the child always has all capabilities.
return true;
}
};
/**
* Send messages to the parent process.
*/
class ChildProcessMessageManagerCallback : public MessageManagerCallback
{
public:
ChildProcessMessageManagerCallback()
{
MOZ_COUNT_CTOR(ChildProcessMessageManagerCallback);
}
virtual ~ChildProcessMessageManagerCallback()
{
MOZ_COUNT_DTOR(ChildProcessMessageManagerCallback);
}
virtual bool DoSendBlockingMessage(JSContext* aCx,
const nsAString& aMessage,
const mozilla::dom::StructuredCloneData& aData,
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal,
InfallibleTArray<nsString>* aJSONRetVal,
bool aIsSync) MOZ_OVERRIDE
{
mozilla::dom::ContentChild* cc =
mozilla::dom::ContentChild::GetSingleton();
if (!cc) {
return true;
}
ClonedMessageData data;
if (!BuildClonedMessageDataForChild(cc, aData, data)) {
return false;
}
InfallibleTArray<mozilla::jsipc::CpowEntry> cpows;
if (aCpows && !cc->GetCPOWManager()->Wrap(aCx, aCpows, &cpows)) {
return false;
}
if (aIsSync) {
return cc->SendSyncMessage(PromiseFlatString(aMessage), data, cpows,
IPC::Principal(aPrincipal), aJSONRetVal);
}
return cc->SendRpcMessage(PromiseFlatString(aMessage), data, cpows,
IPC::Principal(aPrincipal), aJSONRetVal);
}
virtual bool DoSendAsyncMessage(JSContext* aCx,
const nsAString& aMessage,
const mozilla::dom::StructuredCloneData& aData,
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal) MOZ_OVERRIDE
{
mozilla::dom::ContentChild* cc =
mozilla::dom::ContentChild::GetSingleton();
if (!cc) {
return true;
}
ClonedMessageData data;
if (!BuildClonedMessageDataForChild(cc, aData, data)) {
return false;
}
InfallibleTArray<mozilla::jsipc::CpowEntry> cpows;
if (aCpows && !cc->GetCPOWManager()->Wrap(aCx, aCpows, &cpows)) {
return false;
}
return cc->SendAsyncMessage(PromiseFlatString(aMessage), data, cpows,
IPC::Principal(aPrincipal));
}
};
class nsAsyncMessageToSameProcessParent : public nsSameProcessAsyncMessageBase,
public nsRunnable
{
public:
nsAsyncMessageToSameProcessParent(JSContext* aCx,
const nsAString& aMessage,
const StructuredCloneData& aData,
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal)
: nsSameProcessAsyncMessageBase(aCx, aMessage, aData, aCpows, aPrincipal)
, mDelivered(false)
{
}
NS_IMETHOD Run()
{
if (nsFrameMessageManager::sPendingSameProcessAsyncMessages) {
nsFrameMessageManager::sPendingSameProcessAsyncMessages->RemoveElement(this);
}
if (!mDelivered) {
mDelivered = true;
nsFrameMessageManager* ppm = nsFrameMessageManager::sSameProcessParentManager;
ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(ppm), ppm);
}
return NS_OK;
}
private:
bool mDelivered;
};
/**
* Send messages to the imaginary parent process in a single-process scenario.
*/
class SameChildProcessMessageManagerCallback : public MessageManagerCallback
{
public:
SameChildProcessMessageManagerCallback()
{
MOZ_COUNT_CTOR(SameChildProcessMessageManagerCallback);
}
virtual ~SameChildProcessMessageManagerCallback()
{
MOZ_COUNT_DTOR(SameChildProcessMessageManagerCallback);
}
virtual bool DoSendBlockingMessage(JSContext* aCx,
const nsAString& aMessage,
const mozilla::dom::StructuredCloneData& aData,
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal,
InfallibleTArray<nsString>* aJSONRetVal,
bool aIsSync) MOZ_OVERRIDE
{
nsTArray<nsCOMPtr<nsIRunnable> > asyncMessages;
if (nsFrameMessageManager::sPendingSameProcessAsyncMessages) {
asyncMessages.SwapElements(*nsFrameMessageManager::sPendingSameProcessAsyncMessages);
uint32_t len = asyncMessages.Length();
for (uint32_t i = 0; i < len; ++i) {
nsCOMPtr<nsIRunnable> async = asyncMessages[i];
async->Run();
}
}
if (nsFrameMessageManager::sSameProcessParentManager) {
SameProcessCpowHolder cpows(js::GetRuntime(aCx), aCpows);
nsRefPtr<nsFrameMessageManager> ppm = nsFrameMessageManager::sSameProcessParentManager;
ppm->ReceiveMessage(static_cast<nsIContentFrameMessageManager*>(ppm.get()), aMessage,
true, &aData, &cpows, aPrincipal, aJSONRetVal);
}
return true;
}
virtual bool DoSendAsyncMessage(JSContext* aCx,
const nsAString& aMessage,
const mozilla::dom::StructuredCloneData& aData,
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal)
{
if (!nsFrameMessageManager::sPendingSameProcessAsyncMessages) {
nsFrameMessageManager::sPendingSameProcessAsyncMessages = new nsTArray<nsCOMPtr<nsIRunnable> >;
}
nsCOMPtr<nsIRunnable> ev =
new nsAsyncMessageToSameProcessParent(aCx, aMessage, aData, aCpows, aPrincipal);
nsFrameMessageManager::sPendingSameProcessAsyncMessages->AppendElement(ev);
NS_DispatchToCurrentThread(ev);
return true;
}
};
// This creates the global parent process message manager.
nsresult
NS_NewParentProcessMessageManager(nsIMessageBroadcaster** aResult)
{
NS_ASSERTION(!nsFrameMessageManager::sParentProcessManager,
"Re-creating sParentProcessManager");
nsRefPtr<nsFrameMessageManager> mm = new nsFrameMessageManager(nullptr,
nullptr,
MM_CHROME | MM_PROCESSMANAGER | MM_BROADCASTER);
nsFrameMessageManager::sParentProcessManager = mm;
nsFrameMessageManager::NewProcessMessageManager(nullptr); // Create same process message manager.
return CallQueryInterface(mm, aResult);
}
nsFrameMessageManager*
nsFrameMessageManager::NewProcessMessageManager(mozilla::dom::nsIContentParent* aProcess)
{
if (!nsFrameMessageManager::sParentProcessManager) {
nsCOMPtr<nsIMessageBroadcaster> dummy =
do_GetService("@mozilla.org/parentprocessmessagemanager;1");
}
MOZ_ASSERT(nsFrameMessageManager::sParentProcessManager,
"parent process manager not created");
nsFrameMessageManager* mm;
if (aProcess) {
mm = new nsFrameMessageManager(aProcess,
nsFrameMessageManager::sParentProcessManager,
MM_CHROME | MM_PROCESSMANAGER);
} else {
mm = new nsFrameMessageManager(new SameParentProcessMessageManagerCallback(),
nsFrameMessageManager::sParentProcessManager,
MM_CHROME | MM_PROCESSMANAGER | MM_OWNSCALLBACK);
sSameProcessParentManager = mm;
}
return mm;
}
nsresult
NS_NewChildProcessMessageManager(nsISyncMessageSender** aResult)
{
NS_ASSERTION(!nsFrameMessageManager::sChildProcessManager,
"Re-creating sChildProcessManager");
MessageManagerCallback* cb;
if (XRE_GetProcessType() == GeckoProcessType_Default) {
cb = new SameChildProcessMessageManagerCallback();
} else {
cb = new ChildProcessMessageManagerCallback();
RegisterStrongMemoryReporter(new MessageManagerReporter());
}
nsFrameMessageManager* mm = new nsFrameMessageManager(cb,
nullptr,
MM_PROCESSMANAGER | MM_OWNSCALLBACK);
nsFrameMessageManager::sChildProcessManager = mm;
return CallQueryInterface(mm, aResult);
}
static PLDHashOperator
CycleCollectorMarkListeners(const nsAString& aKey,
nsAutoTObserverArray<nsMessageListenerInfo, 1>* aListeners,
void* aData)
{
uint32_t count = aListeners->Length();
for (uint32_t i = 0; i < count; i++) {
if (aListeners->ElementAt(i).mStrongListener) {
xpc_TryUnmarkWrappedGrayObject(aListeners->ElementAt(i).mStrongListener);
}
}
return PL_DHASH_NEXT;
}
bool
nsFrameMessageManager::MarkForCC()
{
mListeners.EnumerateRead(CycleCollectorMarkListeners, nullptr);
if (mRefCnt.IsPurple()) {
mRefCnt.RemovePurple();
}
return true;
}
nsSameProcessAsyncMessageBase::nsSameProcessAsyncMessageBase(JSContext* aCx,
const nsAString& aMessage,
const StructuredCloneData& aData,
JS::Handle<JSObject*> aCpows,
nsIPrincipal* aPrincipal)
: mRuntime(js::GetRuntime(aCx)),
mMessage(aMessage),
mCpows(aCx, aCpows),
mPrincipal(aPrincipal)
{
if (aData.mDataLength && !mData.copy(aData.mData, aData.mDataLength)) {
NS_RUNTIMEABORT("OOM");
}
mClosure = aData.mClosure;
}
void
nsSameProcessAsyncMessageBase::ReceiveMessage(nsISupports* aTarget,
nsFrameMessageManager* aManager)
{
if (aManager) {
StructuredCloneData data;
data.mData = mData.data();
data.mDataLength = mData.nbytes();
data.mClosure = mClosure;
SameProcessCpowHolder cpows(mRuntime, mCpows);
nsRefPtr<nsFrameMessageManager> mm = aManager;
mm->ReceiveMessage(aTarget, mMessage, false, &data, &cpows,
mPrincipal, nullptr);
}
}