summaryrefslogtreecommitdiffstats
path: root/dom
diff options
context:
space:
mode:
Diffstat (limited to 'dom')
-rw-r--r--dom/abort/AbortController.cpp1
-rw-r--r--dom/abort/AbortController.h1
-rw-r--r--dom/abort/AbortSignal.cpp1
-rw-r--r--dom/abort/AbortSignal.h1
-rw-r--r--dom/abort/moz.build1
-rw-r--r--dom/abort/tests/moz.build1
-rw-r--r--dom/animation/AnimValuesStyleRule.cpp1
-rw-r--r--dom/animation/AnimValuesStyleRule.h1
-rw-r--r--dom/animation/Animation.cpp1
-rw-r--r--dom/animation/Animation.h1
-rw-r--r--dom/animation/AnimationComparator.h1
-rw-r--r--dom/animation/AnimationEffectReadOnly.cpp1
-rw-r--r--dom/animation/AnimationEffectReadOnly.h1
-rw-r--r--dom/animation/AnimationPerformanceWarning.cpp1
-rw-r--r--dom/animation/AnimationPerformanceWarning.h1
-rw-r--r--dom/animation/AnimationTarget.h1
-rw-r--r--dom/animation/AnimationTimeline.cpp1
-rw-r--r--dom/animation/AnimationTimeline.h1
-rw-r--r--dom/animation/AnimationUtils.cpp1
-rw-r--r--dom/animation/AnimationUtils.h1
-rw-r--r--dom/animation/ComputedTiming.h1
-rw-r--r--dom/animation/ComputedTimingFunction.cpp1
-rw-r--r--dom/animation/ComputedTimingFunction.h1
-rw-r--r--dom/animation/DocumentTimeline.cpp1
-rw-r--r--dom/animation/DocumentTimeline.h1
-rw-r--r--dom/animation/EffectCompositor.cpp23
-rw-r--r--dom/animation/EffectCompositor.h1
-rw-r--r--dom/animation/EffectSet.cpp1
-rw-r--r--dom/animation/EffectSet.h1
-rw-r--r--dom/animation/KeyframeEffect.cpp6
-rw-r--r--dom/animation/KeyframeEffect.h1
-rw-r--r--dom/animation/KeyframeEffectParams.cpp1
-rw-r--r--dom/animation/KeyframeEffectParams.h1
-rw-r--r--dom/animation/KeyframeEffectReadOnly.cpp15
-rw-r--r--dom/animation/KeyframeEffectReadOnly.h1
-rw-r--r--dom/animation/KeyframeUtils.cpp31
-rw-r--r--dom/animation/KeyframeUtils.h1
-rw-r--r--dom/animation/PendingAnimationTracker.cpp1
-rw-r--r--dom/animation/PendingAnimationTracker.h1
-rw-r--r--dom/animation/PseudoElementHashEntry.h1
-rw-r--r--dom/animation/TimingParams.cpp1
-rw-r--r--dom/animation/TimingParams.h1
-rw-r--r--dom/animation/moz.build1
-rw-r--r--dom/animation/test/crashtests/crashtests.list14
-rw-r--r--dom/animation/test/mochitest.ini6
-rw-r--r--dom/apps/moz.build1
-rw-r--r--dom/archivereader/ArchiveEvent.cpp1
-rw-r--r--dom/archivereader/ArchiveEvent.h1
-rw-r--r--dom/archivereader/ArchiveReader.cpp1
-rw-r--r--dom/archivereader/ArchiveReader.h1
-rw-r--r--dom/archivereader/ArchiveReaderCommon.h1
-rw-r--r--dom/archivereader/ArchiveRequest.cpp5
-rw-r--r--dom/archivereader/ArchiveRequest.h4
-rw-r--r--dom/archivereader/ArchiveZipEvent.cpp1
-rw-r--r--dom/archivereader/ArchiveZipEvent.h1
-rw-r--r--dom/archivereader/ArchiveZipFile.cpp1
-rw-r--r--dom/archivereader/ArchiveZipFile.h1
-rw-r--r--dom/archivereader/moz.build1
-rw-r--r--dom/asmjscache/AsmJSCache.cpp1
-rw-r--r--dom/asmjscache/AsmJSCache.h1
-rw-r--r--dom/asmjscache/moz.build1
-rw-r--r--dom/audiochannel/AudioChannelAgent.cpp1
-rw-r--r--dom/audiochannel/AudioChannelAgent.h1
-rw-r--r--dom/audiochannel/AudioChannelService.cpp1
-rw-r--r--dom/audiochannel/AudioChannelService.h1
-rw-r--r--dom/audiochannel/moz.build1
-rw-r--r--dom/base/AnonymousContent.cpp28
-rw-r--r--dom/base/AnonymousContent.h6
-rw-r--r--dom/base/Attr.cpp3
-rw-r--r--dom/base/Attr.h3
-rw-r--r--dom/base/AutocompleteFieldList.h1
-rw-r--r--dom/base/BarProps.cpp1
-rw-r--r--dom/base/BarProps.h1
-rw-r--r--dom/base/BlobSet.cpp1
-rw-r--r--dom/base/BlobSet.h1
-rw-r--r--dom/base/BorrowedAttrInfo.cpp1
-rw-r--r--dom/base/BorrowedAttrInfo.h1
-rw-r--r--dom/base/CORSMode.h5
-rw-r--r--dom/base/ChildIterator.cpp302
-rw-r--r--dom/base/ChildIterator.h78
-rw-r--r--dom/base/ChromeNodeList.cpp2
-rw-r--r--dom/base/ChromeNodeList.h2
-rw-r--r--dom/base/Comment.cpp1
-rw-r--r--dom/base/Comment.h1
-rw-r--r--dom/base/Crypto.cpp1
-rw-r--r--dom/base/Crypto.h1
-rw-r--r--dom/base/CustomElementRegistry.cpp1026
-rw-r--r--dom/base/CustomElementRegistry.h438
-rw-r--r--dom/base/DOMCursor.cpp1
-rw-r--r--dom/base/DOMCursor.h1
-rw-r--r--dom/base/DOMError.cpp1
-rw-r--r--dom/base/DOMError.h1
-rw-r--r--dom/base/DOMException.cpp1
-rw-r--r--dom/base/DOMException.h1
-rw-r--r--dom/base/DOMImplementation.cpp1
-rw-r--r--dom/base/DOMImplementation.h1
-rw-r--r--dom/base/DOMIntersectionObserver.cpp1
-rw-r--r--dom/base/DOMIntersectionObserver.h1
-rw-r--r--dom/base/DOMMatrix.cpp1
-rw-r--r--dom/base/DOMMatrix.h1
-rw-r--r--dom/base/DOMParser.cpp1
-rw-r--r--dom/base/DOMParser.h1
-rw-r--r--dom/base/DOMPoint.cpp1
-rw-r--r--dom/base/DOMPoint.h1
-rw-r--r--dom/base/DOMQuad.cpp1
-rw-r--r--dom/base/DOMQuad.h1
-rw-r--r--dom/base/DOMRect.cpp1
-rw-r--r--dom/base/DOMRect.h1
-rw-r--r--dom/base/DOMRequest.cpp1
-rw-r--r--dom/base/DOMRequest.h1
-rw-r--r--dom/base/DOMStringList.cpp1
-rw-r--r--dom/base/DOMStringList.h1
-rw-r--r--dom/base/DOMTokenListSupportedTokens.h1
-rw-r--r--dom/base/DirectionalityUtils.cpp5
-rw-r--r--dom/base/DirectionalityUtils.h1
-rw-r--r--dom/base/DocGroup.cpp28
-rw-r--r--dom/base/DocGroup.h31
-rw-r--r--dom/base/DocumentFragment.cpp3
-rw-r--r--dom/base/DocumentFragment.h14
-rw-r--r--dom/base/DocumentOrShadowRoot.cpp148
-rw-r--r--dom/base/DocumentOrShadowRoot.h159
-rw-r--r--dom/base/DocumentType.cpp1
-rw-r--r--dom/base/DocumentType.h1
-rw-r--r--dom/base/Element.cpp719
-rw-r--r--dom/base/Element.h293
-rw-r--r--dom/base/ElementInlines.h12
-rw-r--r--dom/base/EventSource.cpp1
-rw-r--r--dom/base/EventSource.h1
-rw-r--r--dom/base/FeedWriterEnabled.h1
-rwxr-xr-xdom/base/File.cpp1
-rw-r--r--dom/base/File.h1
-rw-r--r--dom/base/FileList.cpp1
-rw-r--r--dom/base/FileList.h1
-rw-r--r--dom/base/FileReader.cpp1
-rw-r--r--dom/base/FileReader.h1
-rw-r--r--dom/base/FormData.cpp1
-rw-r--r--dom/base/FormData.h1
-rw-r--r--dom/base/FragmentOrElement.cpp374
-rw-r--r--dom/base/FragmentOrElement.h143
-rw-r--r--dom/base/FromParser.h1
-rw-r--r--dom/base/GroupedSHistory.cpp1
-rw-r--r--dom/base/GroupedSHistory.h1
-rw-r--r--dom/base/HTMLSplitOnSpacesTokenizer.h1
-rw-r--r--dom/base/IdleRequest.cpp1
-rw-r--r--dom/base/IdleRequest.h1
-rw-r--r--dom/base/IframeSandboxKeywordList.h1
-rw-r--r--dom/base/ImageEncoder.cpp1
-rw-r--r--dom/base/ImageEncoder.h1
-rw-r--r--dom/base/ImageTracker.cpp1
-rw-r--r--dom/base/ImageTracker.h1
-rw-r--r--dom/base/ImportManager.cpp1
-rw-r--r--dom/base/ImportManager.h1
-rw-r--r--dom/base/Link.cpp1
-rw-r--r--dom/base/Link.h1
-rw-r--r--dom/base/Location.cpp1
-rw-r--r--dom/base/Location.h1
-rwxr-xr-xdom/base/MultipartBlobImpl.cpp1
-rw-r--r--dom/base/MultipartBlobImpl.h1
-rw-r--r--dom/base/MutableBlobStorage.cpp1
-rw-r--r--dom/base/MutableBlobStorage.h1
-rw-r--r--dom/base/MutableBlobStreamListener.h1
-rw-r--r--dom/base/NameSpaceConstants.h1
-rw-r--r--dom/base/Navigator.cpp1
-rw-r--r--dom/base/Navigator.h1
-rw-r--r--dom/base/NodeInfo.cpp1
-rw-r--r--dom/base/NodeInfo.h1
-rw-r--r--dom/base/NodeInfoInlines.h1
-rw-r--r--dom/base/PartialSHistory.cpp1
-rw-r--r--dom/base/PartialSHistory.h1
-rw-r--r--dom/base/Pose.cpp1
-rw-r--r--dom/base/Pose.h1
-rw-r--r--dom/base/PostMessageEvent.cpp1
-rw-r--r--dom/base/PostMessageEvent.h1
-rw-r--r--dom/base/ProcessGlobal.cpp1
-rw-r--r--dom/base/ProcessGlobal.h1
-rw-r--r--dom/base/ResizeObserverController.cpp1
-rw-r--r--dom/base/ResizeObserverController.h1
-rw-r--r--dom/base/ResponsiveImageSelector.cpp1
-rw-r--r--dom/base/ResponsiveImageSelector.h1
-rw-r--r--dom/base/SameProcessMessageQueue.cpp1
-rw-r--r--dom/base/SameProcessMessageQueue.h1
-rw-r--r--dom/base/ScreenOrientation.h3
-rw-r--r--dom/base/ShadowRoot.cpp802
-rw-r--r--dom/base/ShadowRoot.h168
-rw-r--r--dom/base/SimpleTreeIterator.h1
-rw-r--r--dom/base/StructuredCloneHolder.cpp1
-rw-r--r--dom/base/StructuredCloneTags.h1
-rw-r--r--dom/base/StyleSheetList.cpp24
-rw-r--r--dom/base/StyleSheetList.h45
-rw-r--r--dom/base/SubtleCrypto.cpp1
-rw-r--r--dom/base/SubtleCrypto.h1
-rw-r--r--dom/base/TabGroup.cpp1
-rw-r--r--dom/base/TabGroup.h1
-rw-r--r--dom/base/Text.cpp1
-rw-r--r--dom/base/Text.h1
-rw-r--r--dom/base/TextInputProcessor.cpp1
-rw-r--r--dom/base/TextInputProcessor.h1
-rw-r--r--dom/base/ThirdPartyUtil.cpp1
-rw-r--r--dom/base/ThirdPartyUtil.h1
-rw-r--r--dom/base/TimeoutHandler.cpp1
-rwxr-xr-xdom/base/TimerClamping.cpp1
-rwxr-xr-xdom/base/TimerClamping.h1
-rw-r--r--dom/base/TreeWalker.cpp1
-rw-r--r--dom/base/TreeWalker.h1
-rw-r--r--dom/base/WebKitCSSMatrix.cpp1
-rw-r--r--dom/base/WebKitCSSMatrix.h1
-rw-r--r--dom/base/WebSocket.cpp1
-rw-r--r--dom/base/WebSocket.h1
-rw-r--r--dom/base/WindowNamedPropertiesHandler.cpp1
-rw-r--r--dom/base/WindowNamedPropertiesHandler.h1
-rw-r--r--dom/base/WindowOrientationObserver.cpp1
-rw-r--r--dom/base/WindowOrientationObserver.h1
-rw-r--r--dom/base/crashtests/1341693.html13
-rw-r--r--dom/base/crashtests/1419799.html17
-rw-r--r--dom/base/crashtests/1422931.html6
-rw-r--r--dom/base/crashtests/crashtests.list5
-rwxr-xr-xdom/base/moz.build4
-rw-r--r--dom/base/mozAutoDocUpdate.h1
-rw-r--r--dom/base/mozFlushType.h1
-rw-r--r--dom/base/nsAtomListUtils.cpp1
-rw-r--r--dom/base/nsAtomListUtils.h1
-rw-r--r--dom/base/nsAttrAndChildArray.cpp35
-rw-r--r--dom/base/nsAttrAndChildArray.h25
-rw-r--r--dom/base/nsAttrName.h1
-rw-r--r--dom/base/nsAttrValue.cpp1
-rw-r--r--dom/base/nsAttrValue.h1
-rw-r--r--dom/base/nsAttrValueInlines.h1
-rw-r--r--dom/base/nsAttrValueOrString.cpp1
-rw-r--r--dom/base/nsAttrValueOrString.h31
-rw-r--r--dom/base/nsCCUncollectableMarker.cpp1
-rw-r--r--dom/base/nsCCUncollectableMarker.h1
-rw-r--r--dom/base/nsCaseTreatment.h1
-rw-r--r--dom/base/nsChildContentList.h1
-rw-r--r--dom/base/nsContentAreaDragDrop.cpp1
-rw-r--r--dom/base/nsContentAreaDragDrop.h1
-rw-r--r--dom/base/nsContentCID.h1
-rw-r--r--dom/base/nsContentCreatorFunctions.h5
-rw-r--r--dom/base/nsContentIterator.cpp1
-rw-r--r--dom/base/nsContentList.cpp1
-rw-r--r--dom/base/nsContentList.h1
-rw-r--r--dom/base/nsContentListDeclarations.h1
-rw-r--r--dom/base/nsContentPermissionHelper.cpp1
-rw-r--r--dom/base/nsContentPermissionHelper.h1
-rw-r--r--dom/base/nsContentSink.cpp1
-rw-r--r--dom/base/nsContentSink.h1
-rw-r--r--dom/base/nsContentTypeParser.h1
-rw-r--r--dom/base/nsContentUtils.cpp294
-rw-r--r--dom/base/nsContentUtils.h105
-rw-r--r--dom/base/nsCopySupport.cpp1
-rw-r--r--dom/base/nsDOMAttributeMap.cpp7
-rw-r--r--dom/base/nsDOMAttributeMap.h8
-rw-r--r--dom/base/nsDOMCID.h1
-rw-r--r--dom/base/nsDOMCaretPosition.cpp1
-rw-r--r--dom/base/nsDOMCaretPosition.h1
-rw-r--r--dom/base/nsDOMClassInfo.cpp1
-rw-r--r--dom/base/nsDOMClassInfo.h1
-rw-r--r--dom/base/nsDOMClassInfoClasses.h1
-rw-r--r--dom/base/nsDOMClassInfoID.h1
-rw-r--r--dom/base/nsDOMDataChannel.cpp1
-rw-r--r--dom/base/nsDOMDataChannel.h1
-rw-r--r--dom/base/nsDOMDataChannelDeclarations.h1
-rw-r--r--dom/base/nsDOMJSUtils.h1
-rw-r--r--dom/base/nsDOMMutationObserver.cpp114
-rw-r--r--dom/base/nsDOMMutationObserver.h21
-rw-r--r--dom/base/nsDOMNavigationTiming.cpp1
-rw-r--r--dom/base/nsDOMNavigationTiming.h1
-rw-r--r--dom/base/nsDOMSerializer.cpp1
-rw-r--r--dom/base/nsDOMSerializer.h1
-rw-r--r--dom/base/nsDOMString.h1
-rw-r--r--dom/base/nsDOMTokenList.cpp7
-rw-r--r--dom/base/nsDOMTokenList.h8
-rw-r--r--dom/base/nsDOMWindowList.cpp1
-rw-r--r--dom/base/nsDOMWindowList.h1
-rw-r--r--dom/base/nsDOMWindowUtils.cpp9
-rw-r--r--dom/base/nsDOMWindowUtils.h1
-rw-r--r--dom/base/nsDataDocumentContentPolicy.cpp1
-rw-r--r--dom/base/nsDataDocumentContentPolicy.h1
-rw-r--r--dom/base/nsDeprecatedOperationList.h1
-rw-r--r--dom/base/nsDocElementCreatedNotificationRunner.h1
-rw-r--r--dom/base/nsDocument.cpp721
-rw-r--r--dom/base/nsDocument.h255
-rw-r--r--dom/base/nsDocumentEncoder.cpp40
-rw-r--r--dom/base/nsDocumentWarningList.h1
-rw-r--r--dom/base/nsFocusManager.cpp16
-rw-r--r--dom/base/nsFocusManager.h1
-rw-r--r--dom/base/nsFrameLoader.cpp4
-rw-r--r--dom/base/nsFrameLoader.h1
-rw-r--r--dom/base/nsFrameMessageManager.cpp1
-rw-r--r--dom/base/nsFrameMessageManager.h1
-rw-r--r--dom/base/nsGenConImageContent.cpp5
-rw-r--r--dom/base/nsGenericDOMDataNode.cpp36
-rw-r--r--dom/base/nsGenericDOMDataNode.h18
-rw-r--r--dom/base/nsGkAtomList.h6
-rw-r--r--dom/base/nsGkAtoms.cpp1
-rw-r--r--dom/base/nsGkAtoms.h1
-rw-r--r--dom/base/nsGlobalWindow.cpp19
-rw-r--r--dom/base/nsGlobalWindow.h1
-rw-r--r--dom/base/nsGlobalWindowCommands.cpp1
-rw-r--r--dom/base/nsGlobalWindowCommands.h1
-rw-r--r--dom/base/nsHTMLContentSerializer.cpp23
-rw-r--r--dom/base/nsHTMLContentSerializer.h1
-rw-r--r--dom/base/nsHistory.cpp1
-rw-r--r--dom/base/nsHistory.h1
-rw-r--r--dom/base/nsHostObjectProtocolHandler.cpp1
-rw-r--r--dom/base/nsHostObjectProtocolHandler.h1
-rw-r--r--dom/base/nsHostObjectURI.cpp1
-rw-r--r--dom/base/nsHostObjectURI.h1
-rw-r--r--dom/base/nsIAnimationObserver.h1
-rw-r--r--dom/base/nsIAttribute.h1
-rw-r--r--dom/base/nsIContent.h94
-rw-r--r--dom/base/nsIContentInlines.h48
-rw-r--r--dom/base/nsIContentIterator.h1
-rw-r--r--dom/base/nsIContentPolicy.idl1
-rw-r--r--dom/base/nsIContentPolicyBase.idl1
-rw-r--r--dom/base/nsIContentSerializer.h1
-rw-r--r--dom/base/nsIDOMClassInfo.h1
-rw-r--r--dom/base/nsIDOMDOMCursor.idl1
-rw-r--r--dom/base/nsIDOMDOMRequest.idl1
-rw-r--r--dom/base/nsIDocument.h143
-rw-r--r--dom/base/nsIDocumentInlines.h26
-rw-r--r--dom/base/nsIDocumentObserver.h1
-rw-r--r--dom/base/nsIGlobalObject.cpp1
-rw-r--r--dom/base/nsIGlobalObject.h1
-rw-r--r--dom/base/nsIMutationObserver.h1
-rw-r--r--dom/base/nsINode.cpp10
-rw-r--r--dom/base/nsINode.h99
-rw-r--r--dom/base/nsINodeList.h1
-rw-r--r--dom/base/nsIRemoteWindowContext.idl1
-rw-r--r--dom/base/nsIScriptContext.h1
-rw-r--r--dom/base/nsIScriptGlobalObject.h1
-rw-r--r--dom/base/nsIScriptNameSpaceManager.h1
-rw-r--r--dom/base/nsIScriptObjectPrincipal.h1
-rw-r--r--dom/base/nsIScriptTimeoutHandler.h1
-rw-r--r--dom/base/nsISimpleContentPolicy.idl1
-rw-r--r--dom/base/nsISizeOfEventTarget.h1
-rw-r--r--dom/base/nsIStyleSheetLinkingElement.h1
-rw-r--r--dom/base/nsITimeoutHandler.h1
-rw-r--r--dom/base/nsIdentifierMapEntry.h235
-rw-r--r--dom/base/nsImageLoadingContent.cpp1
-rw-r--r--dom/base/nsImageLoadingContent.h1
-rw-r--r--dom/base/nsInProcessTabChildGlobal.cpp13
-rw-r--r--dom/base/nsInProcessTabChildGlobal.h5
-rw-r--r--dom/base/nsJSEnvironment.cpp1
-rw-r--r--dom/base/nsJSEnvironment.h1
-rw-r--r--dom/base/nsJSTimeoutHandler.cpp1
-rw-r--r--dom/base/nsJSUtils.cpp12
-rw-r--r--dom/base/nsJSUtils.h1
-rw-r--r--dom/base/nsLineBreaker.cpp1
-rw-r--r--dom/base/nsLineBreaker.h1
-rw-r--r--dom/base/nsMappedAttributeElement.cpp15
-rw-r--r--dom/base/nsMappedAttributeElement.h10
-rw-r--r--dom/base/nsMappedAttributes.cpp20
-rw-r--r--dom/base/nsMappedAttributes.h4
-rw-r--r--dom/base/nsMimeTypeArray.cpp1
-rw-r--r--dom/base/nsMimeTypeArray.h1
-rw-r--r--dom/base/nsNameSpaceManager.cpp1
-rw-r--r--dom/base/nsNameSpaceManager.h3
-rw-r--r--dom/base/nsNoDataProtocolContentPolicy.cpp1
-rw-r--r--dom/base/nsNoDataProtocolContentPolicy.h1
-rw-r--r--dom/base/nsNodeInfoManager.cpp1
-rw-r--r--dom/base/nsNodeInfoManager.h1
-rw-r--r--dom/base/nsNodeUtils.cpp69
-rw-r--r--dom/base/nsNodeUtils.h1
-rw-r--r--dom/base/nsObjectLoadingContent.cpp1
-rw-r--r--dom/base/nsObjectLoadingContent.h1
-rw-r--r--dom/base/nsOpenURIInFrameParams.cpp1
-rw-r--r--dom/base/nsOpenURIInFrameParams.h1
-rw-r--r--dom/base/nsPIDOMWindow.h1
-rw-r--r--dom/base/nsPIWindowRoot.h1
-rw-r--r--dom/base/nsPlainTextSerializer.cpp1
-rw-r--r--dom/base/nsPlainTextSerializer.h1
-rw-r--r--dom/base/nsPluginArray.cpp1
-rw-r--r--dom/base/nsPluginArray.h1
-rw-r--r--dom/base/nsPropertyTable.cpp1
-rw-r--r--dom/base/nsPropertyTable.h1
-rw-r--r--dom/base/nsQueryContentEventResult.cpp1
-rw-r--r--dom/base/nsQueryContentEventResult.h1
-rw-r--r--dom/base/nsRange.cpp439
-rw-r--r--dom/base/nsRange.h117
-rw-r--r--dom/base/nsReferencedElement.cpp1
-rw-r--r--dom/base/nsReferencedElement.h1
-rw-r--r--dom/base/nsSandboxFlags.h1
-rw-r--r--dom/base/nsScreen.cpp1
-rw-r--r--dom/base/nsScreen.h1
-rw-r--r--dom/base/nsScriptNameSpaceManager.cpp1
-rw-r--r--dom/base/nsScriptNameSpaceManager.h1
-rw-r--r--dom/base/nsStructuredCloneContainer.cpp1
-rw-r--r--dom/base/nsStructuredCloneContainer.h1
-rw-r--r--dom/base/nsStubAnimationObserver.cpp1
-rw-r--r--dom/base/nsStubAnimationObserver.h1
-rw-r--r--dom/base/nsStubDocumentObserver.cpp1
-rw-r--r--dom/base/nsStubDocumentObserver.h1
-rw-r--r--dom/base/nsStubMutationObserver.cpp1
-rw-r--r--dom/base/nsStubMutationObserver.h1
-rw-r--r--dom/base/nsStyleLinkElement.cpp1
-rw-r--r--dom/base/nsStyleLinkElement.h1
-rw-r--r--dom/base/nsStyledElement.cpp32
-rw-r--r--dom/base/nsStyledElement.h5
-rw-r--r--dom/base/nsSyncLoadService.h1
-rw-r--r--dom/base/nsTextFragment.cpp1
-rw-r--r--dom/base/nsTextFragment.h1
-rw-r--r--dom/base/nsTextFragmentImpl.h1
-rw-r--r--dom/base/nsTextFragmentSSE2.cpp1
-rw-r--r--dom/base/nsTextNode.cpp8
-rw-r--r--dom/base/nsTextNode.h5
-rw-r--r--dom/base/nsTraversal.h1
-rw-r--r--dom/base/nsTreeSanitizer.cpp1
-rw-r--r--dom/base/nsViewportInfo.cpp1
-rw-r--r--dom/base/nsWindowMemoryReporter.cpp1
-rw-r--r--dom/base/nsWindowMemoryReporter.h1
-rw-r--r--dom/base/nsWindowRoot.cpp5
-rw-r--r--dom/base/nsWindowRoot.h1
-rw-r--r--dom/base/nsWrapperCache.cpp1
-rw-r--r--dom/base/nsWrapperCache.h1
-rw-r--r--dom/base/nsWrapperCacheInlines.h1
-rwxr-xr-xdom/base/nsXHTMLContentSerializer.cpp36
-rw-r--r--dom/base/nsXHTMLContentSerializer.h1
-rw-r--r--dom/base/nsXMLContentSerializer.cpp14
-rw-r--r--dom/base/nsXMLContentSerializer.h1
-rw-r--r--dom/base/nsXMLNameSpaceMap.cpp1
-rw-r--r--dom/base/nsXMLNameSpaceMap.h1
-rw-r--r--dom/base/test/chrome/chrome.ini6
-rw-r--r--dom/base/test/chrome/registerElement_ep.js8
-rw-r--r--dom/base/test/chrome/test_registerElement_content.xul55
-rw-r--r--dom/base/test/chrome/test_registerElement_ep.xul44
-rw-r--r--dom/base/test/gtest/TestNativeXMLHttpRequest.cpp1
-rw-r--r--dom/base/test/gtest/TestParserDialogOptions.cpp1
-rw-r--r--dom/base/test/gtest/TestPlainTextSerializer.cpp1
-rw-r--r--dom/base/test/gtest/moz.build1
-rw-r--r--dom/base/test/jsmodules/moz.build1
-rw-r--r--dom/base/test/mochitest.ini2
-rw-r--r--dom/base/test/moz.build1
-rw-r--r--dom/base/test/test_document_register.html6
-rw-r--r--dom/bindings/AtomList.h1
-rw-r--r--dom/bindings/BindingDeclarations.h1
-rw-r--r--dom/bindings/BindingUtils.cpp185
-rw-r--r--dom/bindings/BindingUtils.h10
-rw-r--r--dom/bindings/Bindings.conf10
-rw-r--r--dom/bindings/CallbackFunction.h1
-rw-r--r--dom/bindings/CallbackInterface.cpp1
-rw-r--r--dom/bindings/CallbackInterface.h1
-rw-r--r--dom/bindings/CallbackObject.cpp12
-rw-r--r--dom/bindings/CallbackObject.h1
-rw-r--r--dom/bindings/Codegen.py176
-rw-r--r--dom/bindings/Configuration.py3
-rw-r--r--dom/bindings/DOMJSClass.h1
-rw-r--r--dom/bindings/DOMJSProxyHandler.cpp1
-rw-r--r--dom/bindings/DOMJSProxyHandler.h1
-rw-r--r--dom/bindings/DOMString.h1
-rw-r--r--dom/bindings/Date.cpp1
-rw-r--r--dom/bindings/Date.h1
-rw-r--r--dom/bindings/ErrorIPCUtils.h1
-rw-r--r--dom/bindings/ErrorResult.h1
-rw-r--r--dom/bindings/Exceptions.cpp1
-rw-r--r--dom/bindings/Exceptions.h1
-rw-r--r--dom/bindings/FakeString.h1
-rw-r--r--dom/bindings/JSSlots.h1
-rw-r--r--dom/bindings/NonRefcountedDOMObject.h1
-rw-r--r--dom/bindings/Nullable.h1
-rw-r--r--dom/bindings/PrimitiveConversions.h1
-rw-r--r--dom/bindings/Record.h1
-rw-r--r--dom/bindings/RootedDictionary.h1
-rw-r--r--dom/bindings/RootedOwningNonNull.h1
-rw-r--r--dom/bindings/RootedRefPtr.h1
-rw-r--r--dom/bindings/SimpleGlobalObject.cpp2
-rw-r--r--dom/bindings/SimpleGlobalObject.h1
-rw-r--r--dom/bindings/StructuredClone.cpp1
-rw-r--r--dom/bindings/StructuredClone.h1
-rw-r--r--dom/bindings/ToJSValue.cpp1
-rw-r--r--dom/bindings/ToJSValue.h1
-rw-r--r--dom/bindings/TypedArray.h1
-rw-r--r--dom/bindings/UnionMember.h1
-rw-r--r--dom/bindings/WebIDLGlobalNameHash.cpp1
-rw-r--r--dom/bindings/WebIDLGlobalNameHash.h1
-rw-r--r--dom/bindings/XrayExpandoClass.h1
-rw-r--r--dom/bindings/moz.build30
-rw-r--r--dom/bindings/nsScriptError.cpp1
-rw-r--r--dom/bindings/nsScriptError.h1
-rw-r--r--dom/bindings/nsScriptErrorWithStack.cpp1
-rw-r--r--dom/bindings/parser/WebIDL.py47
-rw-r--r--dom/bindings/parser/tests/test_cereactions.py162
-rw-r--r--dom/bindings/parser/tests/test_constructor.py166
-rw-r--r--dom/bindings/parser/tests/test_constructor_no_interface_object.py33
-rw-r--r--dom/bindings/test/Makefile.in21
-rw-r--r--dom/bindings/test/TestBindingHeader.h1431
-rw-r--r--dom/bindings/test/TestCImplementedInterface.h43
-rw-r--r--dom/bindings/test/TestCodeGen.webidl1264
-rw-r--r--dom/bindings/test/TestDictionary.webidl9
-rw-r--r--dom/bindings/test/TestExampleGen.webidl811
-rw-r--r--dom/bindings/test/TestFunctions.cpp94
-rw-r--r--dom/bindings/test/TestFunctions.h52
-rw-r--r--dom/bindings/test/TestInterfaceIterableDouble.cpp82
-rw-r--r--dom/bindings/test/TestInterfaceIterableDouble.h51
-rw-r--r--dom/bindings/test/TestInterfaceIterableDoubleUnion.cpp83
-rw-r--r--dom/bindings/test/TestInterfaceIterableDoubleUnion.h51
-rw-r--r--dom/bindings/test/TestInterfaceIterableSingle.cpp77
-rw-r--r--dom/bindings/test/TestInterfaceIterableSingle.h51
-rw-r--r--dom/bindings/test/TestInterfaceJS.js166
-rw-r--r--dom/bindings/test/TestInterfaceJS.manifest4
-rw-r--r--dom/bindings/test/TestInterfaceJSMaplike.js38
-rw-r--r--dom/bindings/test/TestInterfaceMaplike.cpp84
-rw-r--r--dom/bindings/test/TestInterfaceMaplike.h52
-rw-r--r--dom/bindings/test/TestInterfaceMaplikeObject.cpp88
-rw-r--r--dom/bindings/test/TestInterfaceMaplikeObject.h52
-rw-r--r--dom/bindings/test/TestInterfaceSetlike.cpp58
-rw-r--r--dom/bindings/test/TestInterfaceSetlike.h46
-rw-r--r--dom/bindings/test/TestInterfaceSetlikeNode.cpp58
-rw-r--r--dom/bindings/test/TestInterfaceSetlikeNode.h46
-rw-r--r--dom/bindings/test/TestJSImplGen.webidl836
-rw-r--r--dom/bindings/test/TestJSImplInheritanceGen.webidl29
-rw-r--r--dom/bindings/test/TestTypedef.webidl7
-rw-r--r--dom/bindings/test/chrome.ini22
-rw-r--r--dom/bindings/test/file_InstanceOf.html12
-rw-r--r--dom/bindings/test/file_bug775543.html5
-rw-r--r--dom/bindings/test/file_document_location_set_via_xray.html5
-rw-r--r--dom/bindings/test/file_dom_xrays.html24
-rw-r--r--dom/bindings/test/file_focuser.html24
-rw-r--r--dom/bindings/test/file_fullScreenPropertyAccessor.html24
-rw-r--r--dom/bindings/test/file_proxies_via_xray.html8
-rw-r--r--dom/bindings/test/forOf_iframe.html13
-rw-r--r--dom/bindings/test/mochitest.ini79
-rw-r--r--dom/bindings/test/moz.build58
-rw-r--r--dom/bindings/test/test_ByteString.html32
-rw-r--r--dom/bindings/test/test_InstanceOf.html54
-rw-r--r--dom/bindings/test/test_Object.prototype_props.html20
-rw-r--r--dom/bindings/test/test_async_stacks.html108
-rw-r--r--dom/bindings/test/test_barewordGetsWindow.html60
-rw-r--r--dom/bindings/test/test_blacklisted_prerendering_function.xul124
-rw-r--r--dom/bindings/test/test_bug1036214.html123
-rw-r--r--dom/bindings/test/test_bug1041646.html49
-rw-r--r--dom/bindings/test/test_bug1123516_maplikesetlike.html271
-rw-r--r--dom/bindings/test/test_bug1123516_maplikesetlikechrome.xul68
-rw-r--r--dom/bindings/test/test_bug1123875.html14
-rw-r--r--dom/bindings/test/test_bug1287912.html37
-rw-r--r--dom/bindings/test/test_bug560072.html33
-rw-r--r--dom/bindings/test/test_bug742191.html36
-rw-r--r--dom/bindings/test/test_bug759621.html29
-rw-r--r--dom/bindings/test/test_bug773326.html11
-rw-r--r--dom/bindings/test/test_bug775543.html37
-rw-r--r--dom/bindings/test/test_bug788369.html30
-rw-r--r--dom/bindings/test/test_bug852846.html34
-rw-r--r--dom/bindings/test/test_bug862092.html37
-rw-r--r--dom/bindings/test/test_bug963382.html43
-rw-r--r--dom/bindings/test/test_callback_across_document_open.html21
-rw-r--r--dom/bindings/test/test_callback_default_thisval.html36
-rw-r--r--dom/bindings/test/test_callback_exceptions.html17
-rw-r--r--dom/bindings/test/test_cloneAndImportNode.html48
-rw-r--r--dom/bindings/test/test_crossOriginWindowSymbolAccess.html23
-rw-r--r--dom/bindings/test/test_defineProperty.html157
-rw-r--r--dom/bindings/test/test_document_location_set_via_xray.html49
-rw-r--r--dom/bindings/test/test_document_location_via_xray_cached.html36
-rw-r--r--dom/bindings/test/test_domProxyArrayLengthGetter.html28
-rw-r--r--dom/bindings/test/test_dom_xrays.html231
-rw-r--r--dom/bindings/test/test_enums.html15
-rw-r--r--dom/bindings/test/test_exceptionSanitization.html45
-rw-r--r--dom/bindings/test/test_exceptionThrowing.html56
-rw-r--r--dom/bindings/test/test_exception_messages.html82
-rw-r--r--dom/bindings/test/test_exception_options_from_jsimplemented.html166
-rw-r--r--dom/bindings/test/test_exceptions_from_jsimplemented.html56
-rw-r--r--dom/bindings/test/test_forOf.html86
-rw-r--r--dom/bindings/test/test_integers.html50
-rw-r--r--dom/bindings/test/test_interfaceName.html28
-rw-r--r--dom/bindings/test/test_interfaceToString.html47
-rw-r--r--dom/bindings/test/test_iterable.html241
-rw-r--r--dom/bindings/test/test_jsimplemented_eventhandler.html47
-rw-r--r--dom/bindings/test/test_kill_longrunning_prerendered_content.xul85
-rw-r--r--dom/bindings/test/test_lenientThis.html27
-rw-r--r--dom/bindings/test/test_lookupGetter.html49
-rw-r--r--dom/bindings/test/test_namedNoIndexed.html36
-rw-r--r--dom/bindings/test/test_named_getter_enumerability.html40
-rw-r--r--dom/bindings/test/test_oom_reporting.html42
-rw-r--r--dom/bindings/test/test_primitive_this.html45
-rw-r--r--dom/bindings/test/test_promise_rejections_from_jsimplemented.html143
-rw-r--r--dom/bindings/test/test_proxies_via_xray.html99
-rw-r--r--dom/bindings/test/test_queryInterface.html41
-rw-r--r--dom/bindings/test/test_returnUnion.html59
-rw-r--r--dom/bindings/test/test_sequence_detection.html53
-rw-r--r--dom/bindings/test/test_sequence_wrapping.html59
-rw-r--r--dom/bindings/test/test_setWithNamedGetterNoNamedSetter.html40
-rw-r--r--dom/bindings/test/test_stringBindings.html59
-rw-r--r--dom/bindings/test/test_throwing_method_noDCE.html27
-rw-r--r--dom/bindings/test/test_traceProtos.html37
-rw-r--r--dom/bindings/test/test_treat_non_object_as_null.html39
-rw-r--r--dom/bindings/test/test_unforgeablesonexpando.html18
-rw-r--r--dom/bindings/test/test_usvstring.html41
-rw-r--r--dom/bindings/test/test_worker_UnwrapArg.html58
-rw-r--r--dom/broadcastchannel/BroadcastChannel.cpp1
-rw-r--r--dom/broadcastchannel/BroadcastChannel.h1
-rw-r--r--dom/broadcastchannel/BroadcastChannelChild.cpp1
-rw-r--r--dom/broadcastchannel/BroadcastChannelChild.h1
-rw-r--r--dom/broadcastchannel/BroadcastChannelParent.cpp1
-rw-r--r--dom/broadcastchannel/BroadcastChannelParent.h1
-rw-r--r--dom/broadcastchannel/BroadcastChannelService.cpp1
-rw-r--r--dom/broadcastchannel/BroadcastChannelService.h1
-rw-r--r--dom/broadcastchannel/moz.build1
-rw-r--r--dom/browser-element/BrowserElementCopyPaste.js1
-rw-r--r--dom/browser-element/BrowserElementParent.cpp1
-rw-r--r--dom/browser-element/BrowserElementParent.h1
-rw-r--r--dom/browser-element/BrowserElementPromptService.jsm1
-rw-r--r--dom/browser-element/moz.build1
-rw-r--r--dom/browser-element/nsIBrowserElementAPI.idl1
-rw-r--r--dom/cache/Action.cpp1
-rw-r--r--dom/cache/Action.h1
-rw-r--r--dom/cache/ActorChild.cpp1
-rw-r--r--dom/cache/ActorChild.h1
-rw-r--r--dom/cache/ActorUtils.h1
-rw-r--r--dom/cache/AutoUtils.cpp1
-rw-r--r--dom/cache/AutoUtils.h1
-rw-r--r--dom/cache/Cache.cpp1
-rw-r--r--dom/cache/Cache.h1
-rw-r--r--dom/cache/CacheChild.cpp1
-rw-r--r--dom/cache/CacheChild.h1
-rw-r--r--dom/cache/CacheOpChild.cpp1
-rw-r--r--dom/cache/CacheOpChild.h1
-rw-r--r--dom/cache/CacheOpParent.cpp1
-rw-r--r--dom/cache/CacheOpParent.h1
-rw-r--r--dom/cache/CacheParent.cpp1
-rw-r--r--dom/cache/CacheParent.h1
-rw-r--r--dom/cache/CacheStorage.cpp1
-rw-r--r--dom/cache/CacheStorage.h1
-rw-r--r--dom/cache/CacheStorageChild.cpp1
-rw-r--r--dom/cache/CacheStorageChild.h1
-rw-r--r--dom/cache/CacheStorageParent.cpp1
-rw-r--r--dom/cache/CacheStorageParent.h1
-rw-r--r--dom/cache/CacheStreamControlChild.cpp1
-rw-r--r--dom/cache/CacheStreamControlChild.h1
-rw-r--r--dom/cache/CacheStreamControlParent.cpp1
-rw-r--r--dom/cache/CacheStreamControlParent.h1
-rw-r--r--dom/cache/CacheWorkerHolder.cpp1
-rw-r--r--dom/cache/CacheWorkerHolder.h1
-rw-r--r--dom/cache/Connection.cpp1
-rw-r--r--dom/cache/Connection.h1
-rw-r--r--dom/cache/Context.cpp1
-rw-r--r--dom/cache/Context.h1
-rw-r--r--dom/cache/DBAction.cpp1
-rw-r--r--dom/cache/DBAction.h1
-rw-r--r--dom/cache/DBSchema.cpp1
-rw-r--r--dom/cache/DBSchema.h1
-rw-r--r--dom/cache/FileUtils.cpp1
-rw-r--r--dom/cache/FileUtils.h1
-rw-r--r--dom/cache/IPCUtils.h1
-rw-r--r--dom/cache/Manager.cpp1
-rw-r--r--dom/cache/Manager.h1
-rw-r--r--dom/cache/ManagerId.cpp1
-rw-r--r--dom/cache/ManagerId.h1
-rw-r--r--dom/cache/PrincipalVerifier.cpp1
-rw-r--r--dom/cache/PrincipalVerifier.h1
-rw-r--r--dom/cache/QuotaClient.cpp1
-rw-r--r--dom/cache/QuotaClient.h1
-rw-r--r--dom/cache/ReadStream.cpp1
-rw-r--r--dom/cache/ReadStream.h1
-rw-r--r--dom/cache/SavedTypes.h1
-rw-r--r--dom/cache/StreamControl.cpp1
-rw-r--r--dom/cache/StreamControl.h1
-rw-r--r--dom/cache/StreamList.cpp1
-rw-r--r--dom/cache/StreamList.h1
-rw-r--r--dom/cache/TypeUtils.cpp1
-rw-r--r--dom/cache/TypeUtils.h1
-rw-r--r--dom/cache/Types.h1
-rw-r--r--dom/cache/moz.build1
-rw-r--r--dom/canvas/WebGL2ContextRenderbuffers.cpp1
-rw-r--r--dom/canvas/WebGL2ContextState.cpp1
-rw-r--r--dom/canvas/WebGL2ContextVertices.cpp1
-rw-r--r--dom/canvas/WebGLContextUnchecked.cpp1
-rw-r--r--dom/canvas/WebGLContextUnchecked.h1
-rw-r--r--dom/canvas/WebGLExtensionDisjointTimerQuery.cpp1
-rw-r--r--dom/canvas/WebGLVertexArrayObject.cpp1
-rw-r--r--dom/canvas/WebGLVertexArrayObject.h1
-rw-r--r--dom/canvas/gtest/TestWebGLElementArrayCache.cpp1
-rw-r--r--dom/canvas/gtest/moz.build1
-rw-r--r--dom/canvas/moz.build1
-rwxr-xr-xdom/console/Console.cpp1
-rw-r--r--dom/console/Console.h1
-rw-r--r--dom/console/ConsoleReportCollector.cpp1
-rw-r--r--dom/console/ConsoleReportCollector.h1
-rw-r--r--dom/console/moz.build1
-rw-r--r--dom/console/nsIConsoleReportCollector.h1
-rw-r--r--dom/crypto/CryptoBuffer.cpp1
-rw-r--r--dom/crypto/CryptoBuffer.h1
-rw-r--r--dom/crypto/CryptoKey.cpp1
-rw-r--r--dom/crypto/CryptoKey.h1
-rw-r--r--dom/crypto/KeyAlgorithmProxy.cpp1
-rw-r--r--dom/crypto/KeyAlgorithmProxy.h1
-rw-r--r--dom/crypto/WebCryptoCommon.h1
-rw-r--r--dom/crypto/WebCryptoTask.cpp1
-rw-r--r--dom/crypto/WebCryptoTask.h1
-rw-r--r--dom/crypto/moz.build1
-rw-r--r--dom/encoding/EncodingUtils.cpp1
-rw-r--r--dom/encoding/EncodingUtils.h1
-rw-r--r--dom/encoding/FallbackEncoding.cpp1
-rw-r--r--dom/encoding/FallbackEncoding.h1
-rw-r--r--dom/encoding/TextDecoder.cpp1
-rw-r--r--dom/encoding/TextDecoder.h1
-rw-r--r--dom/encoding/TextEncoder.cpp1
-rw-r--r--dom/encoding/TextEncoder.h1
-rw-r--r--dom/encoding/moz.build1
-rw-r--r--dom/events/AnimationEvent.cpp1
-rw-r--r--dom/events/AnimationEvent.h1
-rw-r--r--dom/events/AsyncEventDispatcher.cpp1
-rw-r--r--dom/events/AsyncEventDispatcher.h1
-rw-r--r--dom/events/BeforeAfterKeyboardEvent.cpp1
-rw-r--r--dom/events/BeforeAfterKeyboardEvent.h1
-rw-r--r--dom/events/BeforeUnloadEvent.cpp1
-rw-r--r--dom/events/BeforeUnloadEvent.h1
-rw-r--r--dom/events/ClipboardEvent.cpp1
-rw-r--r--dom/events/ClipboardEvent.h1
-rw-r--r--dom/events/CommandEvent.cpp1
-rw-r--r--dom/events/CommandEvent.h1
-rw-r--r--dom/events/CompositionEvent.cpp1
-rw-r--r--dom/events/CompositionEvent.h1
-rw-r--r--dom/events/ContentEventHandler.cpp10
-rw-r--r--dom/events/ContentEventHandler.h1
-rw-r--r--dom/events/CustomEvent.cpp1
-rw-r--r--dom/events/CustomEvent.h1
-rw-r--r--dom/events/DOMEventTargetHelper.cpp5
-rw-r--r--dom/events/DOMEventTargetHelper.h5
-rw-r--r--dom/events/DataContainerEvent.cpp1
-rw-r--r--dom/events/DataContainerEvent.h1
-rw-r--r--dom/events/DataTransfer.cpp1
-rw-r--r--dom/events/DataTransfer.h1
-rw-r--r--dom/events/DeviceMotionEvent.cpp1
-rw-r--r--dom/events/DeviceMotionEvent.h1
-rw-r--r--dom/events/DragEvent.cpp1
-rw-r--r--dom/events/DragEvent.h1
-rwxr-xr-xdom/events/Event.cpp35
-rwxr-xr-xdom/events/Event.h3
-rw-r--r--dom/events/EventDispatcher.cpp364
-rw-r--r--dom/events/EventDispatcher.h73
-rw-r--r--dom/events/EventListenerManager.cpp11
-rw-r--r--dom/events/EventListenerManager.h1
-rw-r--r--dom/events/EventListenerService.cpp1
-rw-r--r--dom/events/EventListenerService.h1
-rw-r--r--dom/events/EventNameList.h1
-rw-r--r--dom/events/EventStateManager.cpp42
-rw-r--r--dom/events/EventStateManager.h1
-rw-r--r--dom/events/EventStates.h41
-rw-r--r--dom/events/EventTarget.cpp1
-rw-r--r--dom/events/EventTarget.h1
-rw-r--r--dom/events/FocusEvent.cpp1
-rw-r--r--dom/events/FocusEvent.h1
-rw-r--r--dom/events/IMEContentObserver.cpp1
-rw-r--r--dom/events/IMEContentObserver.h1
-rw-r--r--dom/events/IMEStateManager.cpp1
-rw-r--r--dom/events/IMEStateManager.h1
-rw-r--r--dom/events/ImageCaptureError.cpp1
-rw-r--r--dom/events/ImageCaptureError.h1
-rw-r--r--dom/events/InputEvent.cpp1
-rw-r--r--dom/events/InputEvent.h1
-rw-r--r--dom/events/InternalMutationEvent.h1
-rw-r--r--dom/events/JSEventHandler.cpp1
-rw-r--r--dom/events/JSEventHandler.h1
-rw-r--r--dom/events/KeyNameList.h1
-rw-r--r--dom/events/KeyboardEvent.cpp1
-rw-r--r--dom/events/KeyboardEvent.h1
-rw-r--r--dom/events/MessageEvent.cpp1
-rw-r--r--dom/events/MessageEvent.h1
-rw-r--r--dom/events/MouseEvent.cpp6
-rw-r--r--dom/events/MouseEvent.h1
-rw-r--r--dom/events/MouseScrollEvent.cpp1
-rw-r--r--dom/events/MouseScrollEvent.h1
-rw-r--r--dom/events/MutationEvent.cpp1
-rw-r--r--dom/events/MutationEvent.h1
-rw-r--r--dom/events/NotifyPaintEvent.cpp1
-rw-r--r--dom/events/NotifyPaintEvent.h1
-rw-r--r--dom/events/PaintRequest.cpp1
-rw-r--r--dom/events/PaintRequest.h1
-rw-r--r--dom/events/PhysicalKeyCodeNameList.h1
-rw-r--r--dom/events/PointerEvent.cpp1
-rw-r--r--dom/events/PointerEvent.h1
-rw-r--r--dom/events/ScrollAreaEvent.cpp1
-rw-r--r--dom/events/ScrollAreaEvent.h1
-rw-r--r--dom/events/SimpleGestureEvent.cpp1
-rw-r--r--dom/events/SimpleGestureEvent.h1
-rw-r--r--dom/events/StorageEvent.cpp1
-rw-r--r--dom/events/StorageEvent.h1
-rw-r--r--dom/events/TextComposition.cpp1
-rw-r--r--dom/events/TextComposition.h1
-rw-r--r--dom/events/Touch.cpp1
-rw-r--r--dom/events/Touch.h1
-rw-r--r--dom/events/TouchEvent.cpp1
-rw-r--r--dom/events/TouchEvent.h1
-rw-r--r--dom/events/TransitionEvent.cpp1
-rw-r--r--dom/events/TransitionEvent.h1
-rw-r--r--dom/events/UIEvent.cpp1
-rw-r--r--dom/events/UIEvent.h1
-rw-r--r--dom/events/VirtualKeyCodeList.h1
-rw-r--r--dom/events/WheelEvent.cpp1
-rw-r--r--dom/events/WheelEvent.h1
-rw-r--r--dom/events/WheelHandlingHelper.cpp1
-rw-r--r--dom/events/WheelHandlingHelper.h1
-rw-r--r--dom/events/XULCommandEvent.cpp1
-rw-r--r--dom/events/XULCommandEvent.h1
-rw-r--r--dom/events/moz.build1
-rw-r--r--dom/events/test/mochitest.ini1
-rw-r--r--dom/events/test/test_bug1305458.html50
-rw-r--r--dom/fetch/ChannelInfo.cpp1
-rw-r--r--dom/fetch/ChannelInfo.h1
-rw-r--r--dom/fetch/Fetch.cpp1
-rw-r--r--dom/fetch/Fetch.h1
-rw-r--r--dom/fetch/FetchConsumer.cpp1
-rw-r--r--dom/fetch/FetchConsumer.h1
-rw-r--r--dom/fetch/FetchDriver.cpp1
-rw-r--r--dom/fetch/FetchDriver.h1
-rw-r--r--dom/fetch/FetchIPCTypes.h1
-rw-r--r--dom/fetch/FetchObserver.cpp1
-rw-r--r--dom/fetch/FetchObserver.h1
-rw-r--r--dom/fetch/Headers.cpp1
-rw-r--r--dom/fetch/Headers.h1
-rw-r--r--dom/fetch/InternalHeaders.cpp1
-rw-r--r--dom/fetch/InternalHeaders.h1
-rw-r--r--dom/fetch/InternalRequest.cpp1
-rw-r--r--dom/fetch/InternalRequest.h1
-rw-r--r--dom/fetch/InternalResponse.cpp1
-rw-r--r--dom/fetch/InternalResponse.h1
-rw-r--r--dom/fetch/Request.cpp1
-rw-r--r--dom/fetch/Request.h1
-rw-r--r--dom/fetch/Response.cpp1
-rw-r--r--dom/fetch/Response.h1
-rw-r--r--dom/fetch/moz.build1
-rw-r--r--dom/filehandle/FileHandleBase.cpp1
-rw-r--r--dom/filehandle/FileHandleBase.h1
-rw-r--r--dom/filehandle/FileHandleCommon.cpp1
-rw-r--r--dom/filehandle/FileHandleStorage.h1
-rw-r--r--dom/filehandle/FileRequestBase.h1
-rw-r--r--dom/filehandle/MutableFileBase.cpp1
-rw-r--r--dom/filehandle/MutableFileBase.h1
-rw-r--r--dom/filehandle/moz.build1
-rw-r--r--dom/filesystem/Directory.cpp1
-rw-r--r--dom/filesystem/Directory.h1
-rw-r--r--dom/filesystem/FileSystemBase.cpp1
-rw-r--r--dom/filesystem/FileSystemBase.h1
-rw-r--r--dom/filesystem/FileSystemRequestParent.cpp1
-rw-r--r--dom/filesystem/FileSystemRequestParent.h1
-rw-r--r--dom/filesystem/FileSystemSecurity.cpp1
-rw-r--r--dom/filesystem/FileSystemSecurity.h1
-rw-r--r--dom/filesystem/FileSystemTaskBase.cpp1
-rw-r--r--dom/filesystem/FileSystemTaskBase.h1
-rw-r--r--dom/filesystem/FileSystemUtils.cpp1
-rw-r--r--dom/filesystem/FileSystemUtils.h1
-rw-r--r--dom/filesystem/GetDirectoryListingTask.cpp1
-rw-r--r--dom/filesystem/GetDirectoryListingTask.h1
-rw-r--r--dom/filesystem/GetFileOrDirectoryTask.cpp1
-rw-r--r--dom/filesystem/GetFileOrDirectoryTask.h1
-rw-r--r--dom/filesystem/GetFilesHelper.cpp1
-rw-r--r--dom/filesystem/GetFilesHelper.h1
-rw-r--r--dom/filesystem/GetFilesTask.cpp1
-rw-r--r--dom/filesystem/GetFilesTask.h1
-rw-r--r--dom/filesystem/OSFileSystem.cpp1
-rw-r--r--dom/filesystem/OSFileSystem.h1
-rw-r--r--dom/filesystem/PFileSystemRequest.ipdl1
-rw-r--r--dom/filesystem/compat/CallbackRunnables.cpp1
-rw-r--r--dom/filesystem/compat/CallbackRunnables.h1
-rw-r--r--dom/filesystem/compat/FileSystem.cpp1
-rw-r--r--dom/filesystem/compat/FileSystem.h1
-rw-r--r--dom/filesystem/compat/FileSystemDirectoryEntry.cpp1
-rw-r--r--dom/filesystem/compat/FileSystemDirectoryEntry.h1
-rw-r--r--dom/filesystem/compat/FileSystemDirectoryReader.cpp1
-rw-r--r--dom/filesystem/compat/FileSystemDirectoryReader.h1
-rw-r--r--dom/filesystem/compat/FileSystemEntry.cpp1
-rw-r--r--dom/filesystem/compat/FileSystemEntry.h1
-rw-r--r--dom/filesystem/compat/FileSystemFileEntry.cpp1
-rw-r--r--dom/filesystem/compat/FileSystemFileEntry.h1
-rw-r--r--dom/filesystem/compat/FileSystemRootDirectoryEntry.cpp1
-rw-r--r--dom/filesystem/compat/FileSystemRootDirectoryEntry.h1
-rw-r--r--dom/filesystem/compat/FileSystemRootDirectoryReader.cpp1
-rw-r--r--dom/filesystem/compat/FileSystemRootDirectoryReader.h1
-rw-r--r--dom/filesystem/compat/moz.build1
-rw-r--r--dom/filesystem/compat/tests/moz.build1
-rw-r--r--dom/filesystem/moz.build1
-rw-r--r--dom/filesystem/tests/moz.build1
-rw-r--r--dom/gamepad/Gamepad.cpp1
-rw-r--r--dom/gamepad/Gamepad.h1
-rw-r--r--dom/gamepad/GamepadButton.cpp1
-rw-r--r--dom/gamepad/GamepadButton.h1
-rw-r--r--dom/gamepad/GamepadManager.cpp1
-rw-r--r--dom/gamepad/GamepadManager.h1
-rw-r--r--dom/gamepad/GamepadMonitoring.cpp1
-rw-r--r--dom/gamepad/GamepadMonitoring.h1
-rw-r--r--dom/gamepad/GamepadPlatformService.cpp1
-rw-r--r--dom/gamepad/GamepadPlatformService.h1
-rw-r--r--dom/gamepad/GamepadPose.cpp1
-rw-r--r--dom/gamepad/GamepadPose.h1
-rw-r--r--dom/gamepad/GamepadServiceTest.cpp1
-rw-r--r--dom/gamepad/GamepadServiceTest.h1
-rw-r--r--dom/gamepad/android/AndroidGamepad.cpp1
-rw-r--r--dom/gamepad/cocoa/CocoaGamepad.cpp1
-rw-r--r--dom/gamepad/fallback/FallbackGamepad.cpp1
-rw-r--r--dom/gamepad/linux/LinuxGamepad.cpp1
-rw-r--r--dom/gamepad/linux/udev.h1
-rw-r--r--dom/gamepad/moz.build1
-rw-r--r--dom/gamepad/windows/WindowsGamepad.cpp1
-rw-r--r--dom/geolocation/MLSFallback.cpp1
-rw-r--r--dom/geolocation/MLSFallback.h1
-rw-r--r--dom/geolocation/moz.build1
-rw-r--r--dom/geolocation/nsGeoPosition.cpp1
-rw-r--r--dom/geolocation/nsGeoPosition.h1
-rw-r--r--dom/geolocation/nsGeoPositionIPCSerialiser.h1
-rw-r--r--dom/geolocation/nsGeolocation.cpp1
-rw-r--r--dom/geolocation/nsGeolocation.h1
-rw-r--r--dom/grid/Grid.cpp1
-rw-r--r--dom/grid/Grid.h1
-rw-r--r--dom/grid/GridArea.cpp1
-rw-r--r--dom/grid/GridArea.h1
-rw-r--r--dom/grid/GridDimension.cpp1
-rw-r--r--dom/grid/GridDimension.h1
-rw-r--r--dom/grid/GridLine.cpp1
-rw-r--r--dom/grid/GridLine.h1
-rw-r--r--dom/grid/GridLines.cpp1
-rw-r--r--dom/grid/GridLines.h1
-rw-r--r--dom/grid/GridTrack.cpp1
-rw-r--r--dom/grid/GridTrack.h1
-rw-r--r--dom/grid/GridTracks.cpp1
-rw-r--r--dom/grid/GridTracks.h1
-rw-r--r--dom/grid/moz.build1
-rw-r--r--dom/heapsnapshot/AutoMemMap.cpp1
-rw-r--r--dom/heapsnapshot/AutoMemMap.h1
-rw-r--r--dom/heapsnapshot/CoreDump.proto1
-rw-r--r--dom/heapsnapshot/HeapSnapshotTempFileHelperChild.h1
-rw-r--r--dom/heapsnapshot/HeapSnapshotTempFileHelperParent.cpp1
-rw-r--r--dom/heapsnapshot/HeapSnapshotTempFileHelperParent.h1
-rw-r--r--dom/heapsnapshot/PHeapSnapshotTempFileHelper.ipdl1
-rw-r--r--dom/heapsnapshot/moz.build1
-rw-r--r--dom/heapsnapshot/tests/gtest/moz.build1
-rw-r--r--dom/html/HTMLAllCollection.cpp1
-rw-r--r--dom/html/HTMLAllCollection.h1
-rw-r--r--dom/html/HTMLAnchorElement.cpp91
-rw-r--r--dom/html/HTMLAnchorElement.h25
-rw-r--r--dom/html/HTMLAreaElement.cpp53
-rw-r--r--dom/html/HTMLAreaElement.h19
-rw-r--r--dom/html/HTMLAudioElement.cpp1
-rw-r--r--dom/html/HTMLAudioElement.h1
-rw-r--r--dom/html/HTMLBRElement.cpp1
-rw-r--r--dom/html/HTMLBRElement.h1
-rw-r--r--dom/html/HTMLBodyElement.cpp239
-rw-r--r--dom/html/HTMLBodyElement.h39
-rw-r--r--dom/html/HTMLButtonElement.cpp14
-rw-r--r--dom/html/HTMLButtonElement.h12
-rw-r--r--dom/html/HTMLCanvasElement.cpp54
-rw-r--r--dom/html/HTMLCanvasElement.h38
-rw-r--r--dom/html/HTMLContentElement.cpp393
-rw-r--r--dom/html/HTMLContentElement.h135
-rw-r--r--dom/html/HTMLDataElement.cpp1
-rw-r--r--dom/html/HTMLDataElement.h1
-rw-r--r--dom/html/HTMLDataListElement.cpp1
-rw-r--r--dom/html/HTMLDataListElement.h1
-rw-r--r--dom/html/HTMLDetailsElement.cpp32
-rw-r--r--dom/html/HTMLDetailsElement.h5
-rw-r--r--dom/html/HTMLDialogElement.cpp1
-rw-r--r--dom/html/HTMLDialogElement.h1
-rw-r--r--dom/html/HTMLDivElement.cpp1
-rw-r--r--dom/html/HTMLDivElement.h1
-rw-r--r--dom/html/HTMLElement.cpp10
-rw-r--r--dom/html/HTMLFieldSetElement.cpp10
-rw-r--r--dom/html/HTMLFieldSetElement.h8
-rw-r--r--dom/html/HTMLFontElement.cpp1
-rw-r--r--dom/html/HTMLFontElement.h1
-rw-r--r--dom/html/HTMLFormControlsCollection.cpp1
-rw-r--r--dom/html/HTMLFormControlsCollection.h1
-rw-r--r--dom/html/HTMLFormElement.cpp53
-rw-r--r--dom/html/HTMLFormElement.h19
-rw-r--r--dom/html/HTMLFormSubmission.cpp1
-rw-r--r--dom/html/HTMLFormSubmission.h1
-rw-r--r--dom/html/HTMLFormSubmissionConstants.h1
-rw-r--r--dom/html/HTMLFrameElement.cpp1
-rw-r--r--dom/html/HTMLFrameElement.h1
-rw-r--r--dom/html/HTMLFrameSetElement.cpp62
-rw-r--r--dom/html/HTMLFrameSetElement.h16
-rw-r--r--dom/html/HTMLHRElement.cpp1
-rw-r--r--dom/html/HTMLHRElement.h1
-rw-r--r--dom/html/HTMLHeadingElement.cpp1
-rw-r--r--dom/html/HTMLHeadingElement.h1
-rw-r--r--dom/html/HTMLIFrameElement.cpp72
-rw-r--r--dom/html/HTMLIFrameElement.h34
-rw-r--r--dom/html/HTMLImageElement.cpp170
-rw-r--r--dom/html/HTMLImageElement.h55
-rw-r--r--dom/html/HTMLInputElement.cpp263
-rw-r--r--dom/html/HTMLInputElement.h15
-rw-r--r--dom/html/HTMLLIElement.cpp1
-rw-r--r--dom/html/HTMLLIElement.h1
-rw-r--r--dom/html/HTMLLabelElement.cpp1
-rw-r--r--dom/html/HTMLLabelElement.h1
-rw-r--r--dom/html/HTMLLegendElement.cpp16
-rw-r--r--dom/html/HTMLLegendElement.h11
-rw-r--r--dom/html/HTMLLinkElement.cpp12
-rw-r--r--dom/html/HTMLLinkElement.h7
-rw-r--r--dom/html/HTMLMapElement.cpp1
-rw-r--r--dom/html/HTMLMapElement.h1
-rw-r--r--dom/html/HTMLMediaElement.cpp116
-rw-r--r--dom/html/HTMLMediaElement.h35
-rw-r--r--dom/html/HTMLMenuElement.cpp1
-rw-r--r--dom/html/HTMLMenuElement.h1
-rw-r--r--dom/html/HTMLMenuItemElement.cpp10
-rw-r--r--dom/html/HTMLMenuItemElement.h8
-rw-r--r--dom/html/HTMLMetaElement.cpp6
-rw-r--r--dom/html/HTMLMetaElement.h5
-rw-r--r--dom/html/HTMLMeterElement.cpp1
-rw-r--r--dom/html/HTMLMeterElement.h1
-rw-r--r--dom/html/HTMLModElement.cpp1
-rw-r--r--dom/html/HTMLModElement.h1
-rw-r--r--dom/html/HTMLObjectElement.cpp57
-rw-r--r--dom/html/HTMLObjectElement.h27
-rw-r--r--dom/html/HTMLOptGroupElement.cpp10
-rw-r--r--dom/html/HTMLOptGroupElement.h8
-rw-r--r--dom/html/HTMLOptionElement.cpp8
-rw-r--r--dom/html/HTMLOptionElement.h7
-rw-r--r--dom/html/HTMLOptionsCollection.cpp7
-rw-r--r--dom/html/HTMLOptionsCollection.h3
-rw-r--r--dom/html/HTMLOutputElement.cpp1
-rw-r--r--dom/html/HTMLOutputElement.h1
-rw-r--r--dom/html/HTMLParagraphElement.cpp1
-rw-r--r--dom/html/HTMLParagraphElement.h1
-rw-r--r--dom/html/HTMLPictureElement.cpp1
-rw-r--r--dom/html/HTMLPictureElement.h1
-rw-r--r--dom/html/HTMLPreElement.cpp1
-rw-r--r--dom/html/HTMLPreElement.h1
-rw-r--r--dom/html/HTMLProgressElement.cpp1
-rw-r--r--dom/html/HTMLProgressElement.h1
-rw-r--r--dom/html/HTMLScriptElement.cpp6
-rw-r--r--dom/html/HTMLScriptElement.h5
-rw-r--r--dom/html/HTMLSelectElement.cpp71
-rw-r--r--dom/html/HTMLSelectElement.h12
-rw-r--r--dom/html/HTMLShadowElement.cpp373
-rw-r--r--dom/html/HTMLShadowElement.h96
-rw-r--r--dom/html/HTMLSharedElement.cpp63
-rw-r--r--dom/html/HTMLSharedElement.h17
-rw-r--r--dom/html/HTMLSharedListElement.cpp1
-rw-r--r--dom/html/HTMLSharedListElement.h1
-rw-r--r--dom/html/HTMLSharedObjectElement.cpp59
-rw-r--r--dom/html/HTMLSharedObjectElement.h25
-rw-r--r--dom/html/HTMLSlotElement.cpp245
-rw-r--r--dom/html/HTMLSlotElement.h81
-rw-r--r--dom/html/HTMLSourceElement.cpp6
-rw-r--r--dom/html/HTMLSourceElement.h2
-rw-r--r--dom/html/HTMLSpanElement.cpp1
-rw-r--r--dom/html/HTMLSpanElement.h1
-rw-r--r--dom/html/HTMLStyleElement.cpp6
-rw-r--r--dom/html/HTMLStyleElement.h2
-rw-r--r--dom/html/HTMLSummaryElement.cpp12
-rw-r--r--dom/html/HTMLTableCaptionElement.cpp1
-rw-r--r--dom/html/HTMLTableCaptionElement.h1
-rw-r--r--dom/html/HTMLTableCellElement.cpp15
-rw-r--r--dom/html/HTMLTableCellElement.h3
-rw-r--r--dom/html/HTMLTableColElement.cpp1
-rw-r--r--dom/html/HTMLTableColElement.h1
-rw-r--r--dom/html/HTMLTableElement.cpp38
-rw-r--r--dom/html/HTMLTableElement.h11
-rw-r--r--dom/html/HTMLTableRowElement.cpp1
-rw-r--r--dom/html/HTMLTableRowElement.h1
-rw-r--r--dom/html/HTMLTableSectionElement.cpp1
-rw-r--r--dom/html/HTMLTableSectionElement.h1
-rw-r--r--dom/html/HTMLTemplateElement.cpp1
-rw-r--r--dom/html/HTMLTemplateElement.h1
-rw-r--r--dom/html/HTMLTextAreaElement.cpp27
-rw-r--r--dom/html/HTMLTextAreaElement.h11
-rw-r--r--dom/html/HTMLTimeElement.cpp1
-rw-r--r--dom/html/HTMLTimeElement.h1
-rw-r--r--dom/html/HTMLTitleElement.cpp1
-rw-r--r--dom/html/HTMLTitleElement.h1
-rw-r--r--dom/html/HTMLTrackElement.cpp1
-rw-r--r--dom/html/HTMLTrackElement.h1
-rw-r--r--dom/html/HTMLUnknownElement.cpp1
-rw-r--r--dom/html/HTMLUnknownElement.h4
-rw-r--r--dom/html/HTMLVideoElement.cpp1
-rw-r--r--dom/html/HTMLVideoElement.h1
-rw-r--r--dom/html/ImageDocument.cpp1
-rw-r--r--dom/html/ImageDocument.h1
-rw-r--r--dom/html/MediaDocument.cpp1
-rw-r--r--dom/html/MediaDocument.h1
-rw-r--r--dom/html/MediaError.cpp1
-rw-r--r--dom/html/MediaError.h1
-rw-r--r--dom/html/PluginDocument.cpp1
-rw-r--r--dom/html/RadioNodeList.cpp1
-rw-r--r--dom/html/RadioNodeList.h1
-rw-r--r--dom/html/TextTrackManager.cpp1
-rw-r--r--dom/html/TextTrackManager.h1
-rw-r--r--dom/html/TimeRanges.cpp1
-rw-r--r--dom/html/TimeRanges.h1
-rw-r--r--dom/html/ValidityState.cpp1
-rw-r--r--dom/html/ValidityState.h1
-rw-r--r--dom/html/VideoDocument.cpp1
-rw-r--r--dom/html/moz.build7
-rw-r--r--dom/html/nsBrowserElement.cpp1
-rw-r--r--dom/html/nsBrowserElement.h1
-rw-r--r--dom/html/nsDOMStringMap.cpp7
-rw-r--r--dom/html/nsDOMStringMap.h6
-rw-r--r--dom/html/nsGenericHTMLElement.cpp244
-rw-r--r--dom/html/nsGenericHTMLElement.h52
-rw-r--r--dom/html/nsGenericHTMLFrameElement.cpp181
-rw-r--r--dom/html/nsGenericHTMLFrameElement.h37
-rw-r--r--dom/html/nsHTMLContentSink.cpp152
-rw-r--r--dom/html/nsHTMLDNSPrefetch.cpp1
-rw-r--r--dom/html/nsHTMLDNSPrefetch.h1
-rw-r--r--dom/html/nsHTMLDocument.cpp62
-rw-r--r--dom/html/nsHTMLDocument.h10
-rw-r--r--dom/html/nsIConstraintValidation.cpp1
-rw-r--r--dom/html/nsIConstraintValidation.h1
-rw-r--r--dom/html/nsIForm.h1
-rw-r--r--dom/html/nsIFormControl.h1
-rw-r--r--dom/html/nsIFormProcessor.h1
-rw-r--r--dom/html/nsIHTMLCollection.h1
-rw-r--r--dom/html/nsIHTMLDocument.h1
-rw-r--r--dom/html/nsIRadioGroupContainer.h1
-rw-r--r--dom/html/nsIRadioVisitor.h1
-rw-r--r--dom/html/nsITextControlElement.h1
-rw-r--r--dom/html/nsRadioVisitor.cpp1
-rw-r--r--dom/html/nsRadioVisitor.h1
-rw-r--r--dom/html/nsTextEditorState.cpp18
-rw-r--r--dom/html/nsTextEditorState.h6
-rw-r--r--dom/html/reftests/body-frame-margin-remove-other-pres-hint-ref.html14
-rw-r--r--dom/html/reftests/body-frame-margin-remove-other-pres-hint.html16
-rw-r--r--dom/html/reftests/body-topmargin-dynamic.html12
-rw-r--r--dom/html/reftests/body-topmargin-ref.html7
-rw-r--r--dom/html/reftests/reftest-stylo.list7
-rw-r--r--dom/html/reftests/reftest.list7
-rw-r--r--dom/html/test/mochitest.ini1
-rw-r--r--dom/html/test/test_bug1081037.html133
-rw-r--r--dom/imptests/idlharness.js1
-rw-r--r--dom/imptests/moz.build1
-rw-r--r--dom/imptests/testharness.js1
-rw-r--r--dom/indexedDB/ActorsChild.cpp1
-rw-r--r--dom/indexedDB/ActorsChild.h1
-rw-r--r--dom/indexedDB/ActorsParent.cpp1
-rw-r--r--dom/indexedDB/ActorsParent.h1
-rw-r--r--dom/indexedDB/FileInfo.cpp1
-rw-r--r--dom/indexedDB/FileInfo.h1
-rw-r--r--dom/indexedDB/FileManager.h1
-rw-r--r--dom/indexedDB/FileSnapshot.cpp1
-rw-r--r--dom/indexedDB/FileSnapshot.h1
-rw-r--r--dom/indexedDB/IDBCursor.cpp1
-rw-r--r--dom/indexedDB/IDBCursor.h1
-rw-r--r--dom/indexedDB/IDBDatabase.cpp1
-rw-r--r--dom/indexedDB/IDBDatabase.h1
-rw-r--r--dom/indexedDB/IDBEvents.cpp1
-rw-r--r--dom/indexedDB/IDBEvents.h1
-rw-r--r--dom/indexedDB/IDBFactory.cpp1
-rw-r--r--dom/indexedDB/IDBFactory.h1
-rw-r--r--dom/indexedDB/IDBFileHandle.cpp5
-rw-r--r--dom/indexedDB/IDBFileHandle.h3
-rw-r--r--dom/indexedDB/IDBFileRequest.cpp5
-rw-r--r--dom/indexedDB/IDBFileRequest.h3
-rw-r--r--dom/indexedDB/IDBIndex.cpp1
-rw-r--r--dom/indexedDB/IDBIndex.h1
-rw-r--r--dom/indexedDB/IDBKeyRange.cpp1
-rw-r--r--dom/indexedDB/IDBKeyRange.h1
-rw-r--r--dom/indexedDB/IDBMutableFile.cpp1
-rw-r--r--dom/indexedDB/IDBMutableFile.h1
-rw-r--r--dom/indexedDB/IDBObjectStore.cpp1
-rw-r--r--dom/indexedDB/IDBObjectStore.h1
-rw-r--r--dom/indexedDB/IDBRequest.cpp5
-rw-r--r--dom/indexedDB/IDBRequest.h3
-rw-r--r--dom/indexedDB/IDBTransaction.cpp5
-rw-r--r--dom/indexedDB/IDBTransaction.h3
-rw-r--r--dom/indexedDB/IDBWrapperCache.cpp1
-rw-r--r--dom/indexedDB/IDBWrapperCache.h1
-rw-r--r--dom/indexedDB/IndexedDatabase.h1
-rw-r--r--dom/indexedDB/IndexedDatabaseInlines.h1
-rw-r--r--dom/indexedDB/IndexedDatabaseManager.cpp1
-rw-r--r--dom/indexedDB/IndexedDatabaseManager.h1
-rw-r--r--dom/indexedDB/Key.cpp1
-rw-r--r--dom/indexedDB/Key.h1
-rw-r--r--dom/indexedDB/KeyPath.cpp1
-rw-r--r--dom/indexedDB/KeyPath.h1
-rw-r--r--dom/indexedDB/PermissionRequestBase.cpp1
-rw-r--r--dom/indexedDB/PermissionRequestBase.h1
-rw-r--r--dom/indexedDB/ProfilerHelpers.h1
-rw-r--r--dom/indexedDB/ReportInternalError.cpp1
-rw-r--r--dom/indexedDB/ReportInternalError.h1
-rw-r--r--dom/indexedDB/ScriptErrorHelper.cpp1
-rw-r--r--dom/indexedDB/ScriptErrorHelper.h1
-rw-r--r--dom/indexedDB/SerializationHelpers.h1
-rw-r--r--dom/indexedDB/moz.build1
-rw-r--r--dom/indexedDB/test/extensions/moz.build1
-rw-r--r--dom/inputmethod/forms.js1
-rw-r--r--dom/inputmethod/moz.build1
-rw-r--r--dom/interfaces/apps/moz.build1
-rw-r--r--dom/interfaces/base/moz.build1
-rw-r--r--dom/interfaces/base/nsIDOMConstructor.idl1
-rw-r--r--dom/interfaces/base/nsIStructuredCloneContainer.idl1
-rw-r--r--dom/interfaces/canvas/moz.build1
-rw-r--r--dom/interfaces/core/moz.build1
-rw-r--r--dom/interfaces/css/moz.build1
-rw-r--r--dom/interfaces/css/nsIDOMCSSCounterStyleRule.idl1
-rw-r--r--dom/interfaces/events/moz.build1
-rw-r--r--dom/interfaces/events/nsIDOMAnimationEvent.idl1
-rw-r--r--dom/interfaces/events/nsIDOMCustomEvent.idl1
-rw-r--r--dom/interfaces/events/nsIDOMEventTarget.idl15
-rw-r--r--dom/interfaces/events/nsIDOMTransitionEvent.idl1
-rw-r--r--dom/interfaces/events/nsIDOMWheelEvent.idl1
-rw-r--r--dom/interfaces/geolocation/moz.build1
-rw-r--r--dom/interfaces/html/moz.build1
-rw-r--r--dom/interfaces/json/moz.build1
-rw-r--r--dom/interfaces/notification/moz.build1
-rw-r--r--dom/interfaces/offline/moz.build1
-rw-r--r--dom/interfaces/permission/moz.build1
-rw-r--r--dom/interfaces/push/moz.build1
-rw-r--r--dom/interfaces/range/moz.build1
-rw-r--r--dom/interfaces/range/nsIDOMRange.idl12
-rw-r--r--dom/interfaces/security/moz.build1
-rw-r--r--dom/interfaces/settings/moz.build1
-rw-r--r--dom/interfaces/sidebar/moz.build1
-rw-r--r--dom/interfaces/smil/moz.build1
-rw-r--r--dom/interfaces/storage/moz.build1
-rw-r--r--dom/interfaces/stylesheets/moz.build1
-rw-r--r--dom/interfaces/svg/moz.build1
-rw-r--r--dom/interfaces/traversal/moz.build1
-rw-r--r--dom/interfaces/xbl/moz.build1
-rw-r--r--dom/interfaces/xpath/moz.build1
-rw-r--r--dom/interfaces/xul/moz.build1
-rw-r--r--dom/ipc/AppProcessChecker.cpp1
-rw-r--r--dom/ipc/AppProcessChecker.h1
-rw-r--r--dom/ipc/Blob.cpp1
-rw-r--r--dom/ipc/BlobChild.h1
-rw-r--r--dom/ipc/BlobParent.h1
-rw-r--r--dom/ipc/CPOWManagerGetter.h1
-rw-r--r--dom/ipc/ColorPickerParent.cpp1
-rw-r--r--dom/ipc/ColorPickerParent.h1
-rw-r--r--dom/ipc/ContentBridgeChild.cpp1
-rw-r--r--dom/ipc/ContentBridgeChild.h1
-rw-r--r--dom/ipc/ContentBridgeParent.cpp1
-rw-r--r--dom/ipc/ContentBridgeParent.h1
-rw-r--r--dom/ipc/ContentChild.cpp2
-rw-r--r--dom/ipc/ContentChild.h1
-rw-r--r--dom/ipc/ContentParent.cpp1
-rw-r--r--dom/ipc/ContentParent.h1
-rw-r--r--dom/ipc/ContentProcess.cpp1
-rw-r--r--dom/ipc/ContentProcess.h1
-rw-r--r--dom/ipc/ContentProcessManager.cpp1
-rw-r--r--dom/ipc/ContentProcessManager.h1
-rw-r--r--dom/ipc/DOMTypes.ipdlh1
-rw-r--r--dom/ipc/FilePickerParent.cpp1
-rw-r--r--dom/ipc/FilePickerParent.h1
-rw-r--r--dom/ipc/IdType.h1
-rw-r--r--dom/ipc/PBrowser.ipdl1
-rw-r--r--dom/ipc/PBrowserOrId.ipdlh1
-rw-r--r--dom/ipc/PColorPicker.ipdl1
-rw-r--r--dom/ipc/PContent.ipdl1
-rw-r--r--dom/ipc/PContentBridge.ipdl1
-rw-r--r--dom/ipc/PFilePicker.ipdl1
-rw-r--r--dom/ipc/PTabContext.ipdlh1
-rw-r--r--dom/ipc/PermissionMessageUtils.cpp1
-rw-r--r--dom/ipc/PermissionMessageUtils.h1
-rw-r--r--dom/ipc/PreallocatedProcessManager.cpp1
-rw-r--r--dom/ipc/PreallocatedProcessManager.h1
-rw-r--r--dom/ipc/ProcessHangMonitor.cpp1
-rw-r--r--dom/ipc/ProcessHangMonitor.h1
-rw-r--r--dom/ipc/ProcessHangMonitorIPC.h1
-rw-r--r--dom/ipc/ProcessPriorityManager.cpp1
-rw-r--r--dom/ipc/ProcessPriorityManager.h1
-rw-r--r--dom/ipc/ScreenManagerParent.cpp1
-rw-r--r--dom/ipc/ScreenManagerParent.h1
-rw-r--r--dom/ipc/ServiceWorkerConfiguration.ipdlh1
-rw-r--r--dom/ipc/StructuredCloneData.cpp1
-rw-r--r--dom/ipc/StructuredCloneData.h1
-rw-r--r--dom/ipc/TabChild.cpp1
-rw-r--r--dom/ipc/TabChild.h3
-rw-r--r--dom/ipc/TabContext.cpp1
-rw-r--r--dom/ipc/TabContext.h1
-rw-r--r--dom/ipc/TabMessageUtils.cpp1
-rw-r--r--dom/ipc/TabMessageUtils.h1
-rw-r--r--dom/ipc/TabParent.cpp1
-rw-r--r--dom/ipc/TabParent.h1
-rw-r--r--dom/ipc/moz.build1
-rw-r--r--dom/ipc/nsIContentChild.cpp1
-rw-r--r--dom/ipc/nsIContentChild.h1
-rw-r--r--dom/ipc/nsIContentParent.cpp1
-rw-r--r--dom/ipc/nsIContentParent.h1
-rw-r--r--dom/ipc/nsIRemoteBlob.h1
-rw-r--r--dom/json/moz.build1
-rw-r--r--dom/json/nsJSON.cpp1
-rw-r--r--dom/json/nsJSON.h1
-rw-r--r--dom/jsurl/moz.build1
-rw-r--r--dom/jsurl/nsJSProtocolHandler.cpp4
-rw-r--r--dom/locales/moz.build1
-rw-r--r--dom/manifest/moz.build1
-rw-r--r--dom/mathml/moz.build1
-rw-r--r--dom/mathml/nsMathMLElement.cpp52
-rw-r--r--dom/mathml/nsMathMLElement.h18
-rw-r--r--dom/mathml/nsMathMLElementFactory.cpp1
-rw-r--r--dom/media/ADTSDecoder.cpp1
-rw-r--r--dom/media/ADTSDecoder.h1
-rw-r--r--dom/media/ADTSDemuxer.cpp1
-rw-r--r--dom/media/ADTSDemuxer.h1
-rw-r--r--dom/media/AccurateSeekTask.h1
-rw-r--r--dom/media/AudioCompactor.cpp1
-rw-r--r--dom/media/AudioCompactor.h1
-rw-r--r--dom/media/AudioConverter.cpp1
-rw-r--r--dom/media/AudioConverter.h1
-rw-r--r--dom/media/FrameStatistics.h1
-rw-r--r--dom/media/Intervals.h1
-rw-r--r--dom/media/MediaContentType.cpp1
-rw-r--r--dom/media/MediaData.cpp1
-rw-r--r--dom/media/MediaData.h1
-rw-r--r--dom/media/MediaDataDemuxer.h1
-rw-r--r--dom/media/MediaDecoder.cpp1
-rw-r--r--dom/media/MediaDecoderReader.cpp1
-rw-r--r--dom/media/MediaDecoderReader.h1
-rw-r--r--dom/media/MediaDecoderReaderWrapper.cpp1
-rw-r--r--dom/media/MediaDecoderReaderWrapper.h1
-rw-r--r--dom/media/MediaInfo.cpp1
-rw-r--r--dom/media/MediaInfo.h1
-rw-r--r--dom/media/MediaManager.cpp1
-rw-r--r--dom/media/MediaResourceCallback.h1
-rw-r--r--dom/media/MediaStatistics.h1
-rw-r--r--dom/media/MediaStreamListener.h1
-rw-r--r--dom/media/NextFrameSeekTask.h1
-rw-r--r--dom/media/PrincipalChangeObserver.h1
-rw-r--r--dom/media/QueueObject.cpp1
-rw-r--r--dom/media/SeekTarget.h1
-rw-r--r--dom/media/SeekTask.h1
-rw-r--r--dom/media/SelfRef.h1
-rw-r--r--dom/media/TimeUnits.h1
-rw-r--r--dom/media/VideoPlaybackQuality.cpp1
-rw-r--r--dom/media/VideoPlaybackQuality.h1
-rw-r--r--dom/media/XiphExtradata.cpp1
-rw-r--r--dom/media/XiphExtradata.h1
-rw-r--r--dom/media/bridge/moz.build1
-rw-r--r--dom/media/eme/CDMCaps.cpp1
-rw-r--r--dom/media/eme/CDMCaps.h1
-rw-r--r--dom/media/eme/CDMProxy.h1
-rw-r--r--dom/media/eme/DetailedPromise.cpp1
-rw-r--r--dom/media/eme/DetailedPromise.h1
-rw-r--r--dom/media/eme/EMEUtils.cpp1
-rw-r--r--dom/media/eme/EMEUtils.h1
-rw-r--r--dom/media/eme/MediaEncryptedEvent.cpp1
-rw-r--r--dom/media/eme/MediaEncryptedEvent.h1
-rw-r--r--dom/media/eme/MediaKeyMessageEvent.cpp1
-rw-r--r--dom/media/eme/MediaKeyMessageEvent.h1
-rw-r--r--dom/media/eme/MediaKeySession.cpp1
-rw-r--r--dom/media/eme/MediaKeySession.h1
-rw-r--r--dom/media/eme/MediaKeyStatusMap.cpp1
-rw-r--r--dom/media/eme/MediaKeyStatusMap.h1
-rw-r--r--dom/media/eme/MediaKeys.cpp1
-rw-r--r--dom/media/eme/MediaKeys.h1
-rw-r--r--dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp1
-rw-r--r--dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h1
-rw-r--r--dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp1
-rw-r--r--dom/media/eme/mediadrm/MediaDrmCDMProxy.h1
-rw-r--r--dom/media/eme/mediadrm/MediaDrmProxySupport.cpp1
-rw-r--r--dom/media/eme/mediadrm/MediaDrmProxySupport.h1
-rw-r--r--dom/media/eme/mediadrm/moz.build1
-rw-r--r--dom/media/eme/moz.build1
-rw-r--r--dom/media/encoder/moz.build1
-rw-r--r--dom/media/flac/FlacDecoder.cpp1
-rw-r--r--dom/media/flac/FlacDecoder.h1
-rw-r--r--dom/media/flac/FlacDemuxer.cpp1
-rw-r--r--dom/media/flac/FlacDemuxer.h1
-rw-r--r--dom/media/flac/FlacFrameParser.cpp1
-rw-r--r--dom/media/flac/FlacFrameParser.h1
-rw-r--r--dom/media/flac/moz.build1
-rw-r--r--dom/media/fmp4/moz.build1
-rw-r--r--dom/media/gmp-plugin-openh264/moz.build1
-rw-r--r--dom/media/gmp-plugin/gmp-test-output-protection.h1
-rw-r--r--dom/media/gmp-plugin/moz.build1
-rw-r--r--dom/media/gmp/GMPCDMCallbackProxy.cpp1
-rw-r--r--dom/media/gmp/GMPCDMCallbackProxy.h1
-rw-r--r--dom/media/gmp/GMPCDMProxy.cpp1
-rw-r--r--dom/media/gmp/GMPCDMProxy.h1
-rw-r--r--dom/media/gmp/GMPUtils.cpp1
-rw-r--r--dom/media/gmp/moz.build4
-rw-r--r--dom/media/gmp/rlz/GMPDeviceBinding.cpp1
-rw-r--r--dom/media/gmp/rlz/GMPDeviceBinding.h1
-rw-r--r--dom/media/gmp/rlz/moz.build1
-rw-r--r--dom/media/gmp/widevine-adapter/moz.build1
-rw-r--r--dom/media/gtest/GMPTestMonitor.h1
-rw-r--r--dom/media/gtest/TestAudioCompactor.cpp1
-rw-r--r--dom/media/gtest/TestGMPCrossOrigin.cpp1
-rw-r--r--dom/media/gtest/TestGMPRemoveAndDelete.cpp1
-rw-r--r--dom/media/gtest/TestGMPUtils.cpp1
-rw-r--r--dom/media/gtest/moz.build6
-rw-r--r--dom/media/imagecapture/moz.build1
-rw-r--r--dom/media/ipc/MediaIPCUtils.h1
-rw-r--r--dom/media/ipc/RemoteVideoDecoder.cpp1
-rw-r--r--dom/media/ipc/RemoteVideoDecoder.h1
-rw-r--r--dom/media/ipc/VideoDecoderChild.cpp1
-rw-r--r--dom/media/ipc/VideoDecoderChild.h1
-rw-r--r--dom/media/ipc/VideoDecoderManagerChild.cpp1
-rw-r--r--dom/media/ipc/VideoDecoderManagerChild.h1
-rw-r--r--dom/media/ipc/VideoDecoderManagerParent.cpp1
-rw-r--r--dom/media/ipc/VideoDecoderManagerParent.h1
-rw-r--r--dom/media/ipc/VideoDecoderParent.cpp1
-rw-r--r--dom/media/ipc/VideoDecoderParent.h1
-rw-r--r--dom/media/ipc/moz.build1
-rw-r--r--dom/media/mediasink/AudioSinkWrapper.cpp1
-rw-r--r--dom/media/mediasink/AudioSinkWrapper.h1
-rw-r--r--dom/media/mediasink/DecodedStream.cpp1
-rw-r--r--dom/media/mediasink/DecodedStream.h1
-rw-r--r--dom/media/mediasink/MediaSink.h1
-rw-r--r--dom/media/mediasink/OutputStreamManager.cpp1
-rw-r--r--dom/media/mediasink/OutputStreamManager.h1
-rw-r--r--dom/media/mediasink/VideoSink.cpp1
-rw-r--r--dom/media/mediasink/VideoSink.h1
-rw-r--r--dom/media/mediasink/moz.build1
-rw-r--r--dom/media/mediasource/AsyncEventRunner.h1
-rw-r--r--dom/media/mediasource/AutoTaskQueue.h1
-rw-r--r--dom/media/mediasource/ContainerParser.cpp1
-rw-r--r--dom/media/mediasource/ContainerParser.h1
-rw-r--r--dom/media/mediasource/MediaSource.cpp1
-rw-r--r--dom/media/mediasource/MediaSource.h1
-rw-r--r--dom/media/mediasource/MediaSourceDecoder.cpp1
-rw-r--r--dom/media/mediasource/MediaSourceDecoder.h1
-rw-r--r--dom/media/mediasource/MediaSourceResource.h1
-rw-r--r--dom/media/mediasource/MediaSourceUtils.cpp1
-rw-r--r--dom/media/mediasource/MediaSourceUtils.h1
-rw-r--r--dom/media/mediasource/ResourceQueue.cpp1
-rw-r--r--dom/media/mediasource/ResourceQueue.h1
-rw-r--r--dom/media/mediasource/SourceBuffer.cpp1
-rw-r--r--dom/media/mediasource/SourceBuffer.h1
-rw-r--r--dom/media/mediasource/SourceBufferAttributes.h1
-rw-r--r--dom/media/mediasource/SourceBufferList.cpp1
-rw-r--r--dom/media/mediasource/SourceBufferList.h1
-rw-r--r--dom/media/mediasource/SourceBufferResource.cpp1
-rw-r--r--dom/media/mediasource/SourceBufferResource.h1
-rw-r--r--dom/media/mediasource/SourceBufferTask.h1
-rw-r--r--dom/media/mediasource/TrackBuffersManager.cpp1
-rw-r--r--dom/media/mediasource/TrackBuffersManager.h1
-rw-r--r--dom/media/mediasource/gtest/moz.build1
-rw-r--r--dom/media/mediasource/moz.build1
-rw-r--r--dom/media/moz.build1
-rw-r--r--dom/media/mp3/moz.build1
-rw-r--r--dom/media/ogg/moz.build1
-rw-r--r--dom/media/platforms/PlatformDecoderModule.h2
-rw-r--r--dom/media/platforms/agnostic/eme/SamplesWaitingForKey.cpp1
-rw-r--r--dom/media/platforms/agnostic/eme/moz.build1
-rw-r--r--dom/media/platforms/agnostic/gmp/moz.build1
-rw-r--r--dom/media/platforms/android/AndroidDecoderModule.cpp227
-rw-r--r--dom/media/platforms/android/AndroidDecoderModule.h34
-rw-r--r--dom/media/platforms/android/MediaCodecDataDecoder.cpp698
-rw-r--r--dom/media/platforms/android/MediaCodecDataDecoder.h126
-rw-r--r--dom/media/platforms/android/RemoteDataDecoder.cpp489
-rw-r--r--dom/media/platforms/android/RemoteDataDecoder.h62
-rw-r--r--dom/media/platforms/ffmpeg/ffmpeg57/moz.build1
-rw-r--r--dom/media/platforms/ffmpeg/ffmpeg58/moz.build1
-rw-r--r--dom/media/platforms/ffmpeg/ffvpx/moz.build1
-rw-r--r--dom/media/platforms/ffmpeg/libav53/moz.build1
-rw-r--r--dom/media/platforms/ffmpeg/libav54/moz.build1
-rw-r--r--dom/media/platforms/ffmpeg/libav55/moz.build1
-rw-r--r--dom/media/platforms/ffmpeg/moz.build1
-rw-r--r--dom/media/platforms/moz.build11
-rw-r--r--dom/media/platforms/omx/moz.build1
-rw-r--r--dom/media/platforms/wmf/moz.build1
-rw-r--r--dom/media/standalone/moz.build1
-rw-r--r--dom/media/systemservices/CamerasChild.cpp1
-rw-r--r--dom/media/systemservices/CamerasChild.h1
-rw-r--r--dom/media/systemservices/CamerasParent.cpp1
-rw-r--r--dom/media/systemservices/CamerasParent.h1
-rw-r--r--dom/media/systemservices/CamerasTypes.h1
-rw-r--r--dom/media/systemservices/DeviceChangeCallback.h1
-rw-r--r--dom/media/systemservices/MediaChild.cpp1
-rw-r--r--dom/media/systemservices/MediaChild.h1
-rw-r--r--dom/media/systemservices/MediaParent.cpp1
-rw-r--r--dom/media/systemservices/MediaParent.h1
-rw-r--r--dom/media/systemservices/MediaTaskUtils.h1
-rw-r--r--dom/media/systemservices/MediaUtils.cpp1
-rw-r--r--dom/media/systemservices/MediaUtils.h1
-rw-r--r--dom/media/systemservices/ShmemPool.cpp1
-rw-r--r--dom/media/systemservices/ShmemPool.h1
-rw-r--r--dom/media/systemservices/moz.build1
-rw-r--r--dom/media/test/dash_detect_stream_switch.sjs1
-rw-r--r--dom/media/wave/moz.build1
-rw-r--r--dom/media/webaudio/BufferDecoder.cpp1
-rw-r--r--dom/media/webaudio/BufferDecoder.h1
-rw-r--r--dom/media/webaudio/blink/moz.build1
-rw-r--r--dom/media/webaudio/gtest/TestAudioEventTimeline.cpp11
-rw-r--r--dom/media/webaudio/gtest/moz.build1
-rw-r--r--dom/media/webaudio/moz.build1
-rw-r--r--dom/media/webm/moz.build1
-rw-r--r--dom/media/webrtc/MediaEngineRemoteVideoSource.h1
-rw-r--r--dom/media/webrtc/MediaEngineWebRTC.cpp1
-rw-r--r--dom/media/webrtc/RTCCertificate.cpp1
-rw-r--r--dom/media/webrtc/RTCCertificate.h1
-rw-r--r--dom/media/webrtc/moz.build1
-rw-r--r--dom/media/webspeech/moz.build1
-rw-r--r--dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerModule.cpp1
-rw-r--r--dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.h1
-rw-r--r--dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm1
-rw-r--r--dom/media/webspeech/synth/cocoa/moz.build1
-rw-r--r--dom/media/webspeech/synth/ipc/PSpeechSynthesis.ipdl1
-rw-r--r--dom/media/webspeech/synth/ipc/PSpeechSynthesisRequest.ipdl1
-rw-r--r--dom/media/webspeech/synth/moz.build1
-rw-r--r--dom/media/webspeech/synth/pico/moz.build1
-rw-r--r--dom/media/webspeech/synth/speechd/SpeechDispatcherModule.cpp1
-rw-r--r--dom/media/webspeech/synth/speechd/SpeechDispatcherService.cpp1
-rw-r--r--dom/media/webspeech/synth/speechd/SpeechDispatcherService.h1
-rw-r--r--dom/media/webspeech/synth/speechd/moz.build1
-rw-r--r--dom/media/webspeech/synth/windows/SapiModule.cpp1
-rw-r--r--dom/media/webspeech/synth/windows/SapiService.cpp1
-rw-r--r--dom/media/webspeech/synth/windows/SapiService.h1
-rw-r--r--dom/media/webspeech/synth/windows/moz.build1
-rw-r--r--dom/media/webvtt/moz.build1
-rw-r--r--dom/messagechannel/MessageChannel.cpp1
-rw-r--r--dom/messagechannel/MessageChannel.h1
-rw-r--r--dom/messagechannel/MessagePort.cpp1
-rw-r--r--dom/messagechannel/MessagePort.h1
-rw-r--r--dom/messagechannel/MessagePortService.cpp1
-rw-r--r--dom/messagechannel/moz.build1
-rw-r--r--dom/messagechannel/tests/moz.build1
-rw-r--r--dom/moz.build1
-rw-r--r--dom/network/Connection.cpp1
-rw-r--r--dom/network/Connection.h1
-rw-r--r--dom/network/Constants.h1
-rw-r--r--dom/network/PTCPServerSocket.ipdl1
-rw-r--r--dom/network/PTCPSocket.ipdl1
-rw-r--r--dom/network/PUDPSocket.ipdl1
-rw-r--r--dom/network/TCPServerSocketChild.cpp1
-rw-r--r--dom/network/TCPServerSocketChild.h1
-rw-r--r--dom/network/TCPServerSocketParent.cpp1
-rw-r--r--dom/network/TCPServerSocketParent.h1
-rw-r--r--dom/network/TCPSocketChild.cpp1
-rw-r--r--dom/network/TCPSocketChild.h1
-rw-r--r--dom/network/TCPSocketParent.cpp1
-rw-r--r--dom/network/TCPSocketParent.h1
-rw-r--r--dom/network/Types.h1
-rw-r--r--dom/network/UDPSocket.cpp1
-rw-r--r--dom/network/UDPSocket.h1
-rw-r--r--dom/network/UDPSocketChild.cpp1
-rw-r--r--dom/network/UDPSocketChild.h1
-rw-r--r--dom/network/UDPSocketParent.cpp1
-rw-r--r--dom/network/UDPSocketParent.h1
-rw-r--r--dom/network/interfaces/moz.build1
-rw-r--r--dom/network/moz.build1
-rw-r--r--dom/notification/DesktopNotification.cpp1
-rw-r--r--dom/notification/DesktopNotification.h1
-rw-r--r--dom/notification/Notification.cpp1
-rw-r--r--dom/notification/Notification.h2
-rw-r--r--dom/notification/NotificationEvent.cpp1
-rw-r--r--dom/notification/moz.build1
-rw-r--r--dom/offline/moz.build1
-rw-r--r--dom/offline/nsDOMOfflineResourceList.cpp1
-rw-r--r--dom/offline/nsDOMOfflineResourceList.h1
-rwxr-xr-xdom/performance/Performance.cpp1
-rw-r--r--dom/performance/Performance.h1
-rw-r--r--dom/performance/PerformanceEntry.cpp1
-rw-r--r--dom/performance/PerformanceEntry.h1
-rw-r--r--dom/performance/PerformanceMainThread.cpp1
-rw-r--r--dom/performance/PerformanceMainThread.h1
-rw-r--r--dom/performance/PerformanceMark.cpp1
-rw-r--r--dom/performance/PerformanceMark.h1
-rw-r--r--dom/performance/PerformanceMeasure.cpp1
-rw-r--r--dom/performance/PerformanceMeasure.h1
-rw-r--r--dom/performance/PerformanceNavigation.cpp1
-rw-r--r--dom/performance/PerformanceNavigation.h1
-rw-r--r--dom/performance/PerformanceNavigationTiming.cpp1
-rw-r--r--dom/performance/PerformanceNavigationTiming.h1
-rw-r--r--dom/performance/PerformanceObserver.cpp1
-rw-r--r--dom/performance/PerformanceObserver.h1
-rw-r--r--dom/performance/PerformanceObserverEntryList.cpp1
-rw-r--r--dom/performance/PerformanceObserverEntryList.h1
-rw-r--r--dom/performance/PerformanceResourceTiming.cpp1
-rw-r--r--dom/performance/PerformanceResourceTiming.h1
-rw-r--r--dom/performance/PerformanceService.cpp1
-rw-r--r--dom/performance/PerformanceService.h1
-rwxr-xr-xdom/performance/PerformanceTiming.cpp1
-rwxr-xr-xdom/performance/PerformanceTiming.h1
-rw-r--r--dom/performance/PerformanceWorker.cpp1
-rw-r--r--dom/performance/PerformanceWorker.h1
-rw-r--r--dom/performance/moz.build1
-rw-r--r--dom/permission/PermissionObserver.cpp1
-rw-r--r--dom/permission/PermissionObserver.h1
-rw-r--r--dom/permission/PermissionStatus.cpp1
-rw-r--r--dom/permission/PermissionStatus.h1
-rw-r--r--dom/permission/PermissionUtils.cpp1
-rw-r--r--dom/permission/PermissionUtils.h1
-rw-r--r--dom/permission/Permissions.cpp1
-rw-r--r--dom/permission/Permissions.h1
-rw-r--r--dom/permission/moz.build1
-rw-r--r--dom/plugins/base/moz.build1
-rw-r--r--dom/plugins/ipc/MiniShmParent.cpp1
-rw-r--r--dom/plugins/ipc/MiniShmParent.h1
-rw-r--r--dom/plugins/ipc/NPEventOSX.h1
-rw-r--r--dom/plugins/ipc/NPEventUnix.h1
-rw-r--r--dom/plugins/ipc/NPEventWindows.h1
-rw-r--r--dom/plugins/ipc/PluginAsyncSurrogate.cpp1
-rw-r--r--dom/plugins/ipc/PluginAsyncSurrogate.h1
-rw-r--r--dom/plugins/ipc/PluginDataResolver.h1
-rw-r--r--dom/plugins/ipc/PluginHangUIParent.cpp1
-rw-r--r--dom/plugins/ipc/PluginHangUIParent.h1
-rw-r--r--dom/plugins/ipc/PluginMessageUtils.cpp1
-rw-r--r--dom/plugins/ipc/PluginModuleChild.cpp1
-rw-r--r--dom/plugins/ipc/StreamNotifyChild.h1
-rw-r--r--dom/plugins/ipc/StreamNotifyParent.h1
-rw-r--r--dom/plugins/ipc/hangui/HangUIDlg.h1
-rw-r--r--dom/plugins/ipc/hangui/MiniShmBase.h1
-rw-r--r--dom/plugins/ipc/hangui/MiniShmChild.cpp1
-rw-r--r--dom/plugins/ipc/hangui/MiniShmChild.h1
-rw-r--r--dom/plugins/ipc/hangui/PluginHangUI.h1
-rw-r--r--dom/plugins/ipc/hangui/PluginHangUIChild.cpp1
-rw-r--r--dom/plugins/ipc/hangui/PluginHangUIChild.h1
-rw-r--r--dom/plugins/ipc/hangui/moz.build1
-rw-r--r--dom/plugins/ipc/interpose/moz.build1
-rw-r--r--dom/plugins/ipc/moz.build1
-rw-r--r--dom/plugins/test/mochitest/mochitest.ini1
-rw-r--r--dom/plugins/test/moz.build1
-rw-r--r--dom/plugins/test/testaddon/moz.build1
-rw-r--r--dom/plugins/test/testplugin/flashplugin/moz.build1
-rw-r--r--dom/plugins/test/testplugin/javaplugin/moz.build1
-rw-r--r--dom/plugins/test/testplugin/moz.build1
-rw-r--r--dom/plugins/test/testplugin/secondplugin/moz.build1
-rw-r--r--dom/plugins/test/testplugin/silverlightplugin/moz.build1
-rw-r--r--dom/plugins/test/testplugin/testplugin.mozbuild1
-rw-r--r--dom/plugins/test/testplugin/thirdplugin/moz.build1
-rw-r--r--dom/power/PowerManager.cpp1
-rw-r--r--dom/power/PowerManager.h1
-rw-r--r--dom/power/PowerManagerService.cpp1
-rw-r--r--dom/power/PowerManagerService.h1
-rw-r--r--dom/power/Types.h1
-rw-r--r--dom/power/WakeLock.cpp1
-rw-r--r--dom/power/WakeLock.h1
-rw-r--r--dom/power/moz.build1
-rw-r--r--dom/promise/Promise.cpp1
-rw-r--r--dom/promise/Promise.h1
-rw-r--r--dom/promise/PromiseDebugging.cpp1
-rw-r--r--dom/promise/PromiseDebugging.h1
-rw-r--r--dom/promise/PromiseNativeHandler.h1
-rw-r--r--dom/promise/PromiseWorkerProxy.h1
-rw-r--r--dom/promise/moz.build1
-rw-r--r--dom/push/PushManager.cpp1
-rw-r--r--dom/push/PushManager.h1
-rw-r--r--dom/push/moz.build1
-rw-r--r--dom/quota/ActorsChild.cpp1
-rw-r--r--dom/quota/ActorsChild.h1
-rw-r--r--dom/quota/ActorsParent.cpp1
-rw-r--r--dom/quota/ActorsParent.h1
-rw-r--r--dom/quota/Client.h1
-rw-r--r--dom/quota/FileStreams.cpp1
-rw-r--r--dom/quota/FileStreams.h1
-rw-r--r--dom/quota/OriginScope.h1
-rw-r--r--dom/quota/PersistenceType.h1
-rw-r--r--dom/quota/QuotaCommon.h1
-rw-r--r--dom/quota/QuotaManager.h1
-rw-r--r--dom/quota/QuotaManagerService.cpp1
-rw-r--r--dom/quota/QuotaManagerService.h1
-rw-r--r--dom/quota/QuotaObject.h1
-rw-r--r--dom/quota/QuotaRequests.cpp1
-rw-r--r--dom/quota/QuotaRequests.h1
-rw-r--r--dom/quota/QuotaResults.cpp1
-rw-r--r--dom/quota/QuotaResults.h1
-rw-r--r--dom/quota/SerializationHelpers.h1
-rw-r--r--dom/quota/StorageManager.cpp1
-rw-r--r--dom/quota/StorageManager.h1
-rw-r--r--dom/quota/UsageInfo.h1
-rw-r--r--dom/quota/moz.build1
-rw-r--r--dom/quota/nsIQuotaCallbacks.idl1
-rw-r--r--dom/quota/nsIQuotaManagerService.idl1
-rw-r--r--dom/quota/nsIQuotaRequests.idl1
-rw-r--r--dom/quota/nsIQuotaResults.idl1
-rw-r--r--dom/script/ModuleLoadRequest.cpp1
-rw-r--r--dom/script/ModuleLoadRequest.h1
-rw-r--r--dom/script/ModuleScript.cpp1
-rw-r--r--dom/script/ModuleScript.h1
-rw-r--r--dom/script/ScriptElement.cpp1
-rw-r--r--dom/script/ScriptElement.h1
-rw-r--r--dom/script/ScriptLoadHandler.cpp1
-rw-r--r--dom/script/ScriptLoadHandler.h1
-rw-r--r--dom/script/ScriptLoader.cpp1
-rw-r--r--dom/script/ScriptLoader.h1
-rw-r--r--dom/script/ScriptSettings.cpp1
-rw-r--r--dom/script/ScriptSettings.h1
-rw-r--r--dom/script/nsIScriptElement.h1
-rw-r--r--dom/secureelement/moz.build1
-rw-r--r--dom/security/SRICheck.cpp1
-rw-r--r--dom/security/SRICheck.h1
-rw-r--r--dom/security/SRILogHelper.h1
-rw-r--r--dom/security/SRIMetadata.cpp1
-rw-r--r--dom/security/SRIMetadata.h1
-rw-r--r--dom/security/moz.build1
-rw-r--r--dom/security/nsCSPContext.cpp1
-rw-r--r--dom/security/nsCSPContext.h1
-rw-r--r--dom/security/nsCSPParser.cpp1
-rw-r--r--dom/security/nsCSPParser.h1
-rw-r--r--dom/security/nsCSPService.cpp1
-rw-r--r--dom/security/nsCSPService.h1
-rw-r--r--dom/security/nsCSPUtils.cpp1
-rw-r--r--dom/security/nsCSPUtils.h1
-rw-r--r--dom/security/nsContentSecurityManager.cpp8
-rw-r--r--dom/security/nsContentSecurityManager.h1
-rw-r--r--dom/security/nsMixedContentBlocker.cpp1
-rw-r--r--dom/security/nsMixedContentBlocker.h1
-rw-r--r--dom/security/test/gtest/TestCSPParser.cpp1
-rw-r--r--dom/security/test/gtest/moz.build1
-rw-r--r--dom/security/test/moz.build1
-rw-r--r--dom/settings/moz.build1
-rw-r--r--dom/smil/SMILBoolType.cpp1
-rw-r--r--dom/smil/SMILBoolType.h1
-rw-r--r--dom/smil/SMILEnumType.cpp1
-rw-r--r--dom/smil/SMILEnumType.h1
-rw-r--r--dom/smil/SMILIntegerType.cpp1
-rw-r--r--dom/smil/SMILIntegerType.h1
-rw-r--r--dom/smil/SMILStringType.cpp1
-rw-r--r--dom/smil/SMILStringType.h1
-rw-r--r--dom/smil/TimeEvent.cpp1
-rw-r--r--dom/smil/TimeEvent.h1
-rw-r--r--dom/smil/moz.build1
-rw-r--r--dom/smil/nsISMILAttr.h1
-rw-r--r--dom/smil/nsISMILType.h1
-rw-r--r--dom/smil/nsSMILAnimationController.cpp1
-rw-r--r--dom/smil/nsSMILAnimationController.h1
-rw-r--r--dom/smil/nsSMILAnimationFunction.cpp1
-rw-r--r--dom/smil/nsSMILAnimationFunction.h1
-rw-r--r--dom/smil/nsSMILCSSProperty.cpp1
-rw-r--r--dom/smil/nsSMILCSSProperty.h1
-rw-r--r--dom/smil/nsSMILCSSValueType.cpp1
-rw-r--r--dom/smil/nsSMILCSSValueType.h1
-rw-r--r--dom/smil/nsSMILCompositor.cpp1
-rw-r--r--dom/smil/nsSMILCompositor.h1
-rw-r--r--dom/smil/nsSMILCompositorTable.h1
-rw-r--r--dom/smil/nsSMILFloatType.cpp1
-rw-r--r--dom/smil/nsSMILFloatType.h1
-rw-r--r--dom/smil/nsSMILInstanceTime.cpp1
-rw-r--r--dom/smil/nsSMILInstanceTime.h1
-rw-r--r--dom/smil/nsSMILInterval.cpp1
-rw-r--r--dom/smil/nsSMILInterval.h1
-rw-r--r--dom/smil/nsSMILKeySpline.cpp1
-rw-r--r--dom/smil/nsSMILKeySpline.h1
-rw-r--r--dom/smil/nsSMILMappedAttribute.cpp1
-rw-r--r--dom/smil/nsSMILMappedAttribute.h1
-rw-r--r--dom/smil/nsSMILMilestone.h1
-rw-r--r--dom/smil/nsSMILNullType.cpp1
-rw-r--r--dom/smil/nsSMILNullType.h1
-rw-r--r--dom/smil/nsSMILParserUtils.cpp1
-rw-r--r--dom/smil/nsSMILParserUtils.h1
-rw-r--r--dom/smil/nsSMILRepeatCount.cpp1
-rw-r--r--dom/smil/nsSMILRepeatCount.h1
-rw-r--r--dom/smil/nsSMILSetAnimationFunction.cpp1
-rw-r--r--dom/smil/nsSMILSetAnimationFunction.h1
-rw-r--r--dom/smil/nsSMILTargetIdentifier.h1
-rw-r--r--dom/smil/nsSMILTimeContainer.cpp1
-rw-r--r--dom/smil/nsSMILTimeContainer.h1
-rw-r--r--dom/smil/nsSMILTimeValue.cpp1
-rw-r--r--dom/smil/nsSMILTimeValue.h1
-rw-r--r--dom/smil/nsSMILTimeValueSpec.cpp1
-rw-r--r--dom/smil/nsSMILTimeValueSpec.h1
-rw-r--r--dom/smil/nsSMILTimeValueSpecParams.h1
-rw-r--r--dom/smil/nsSMILTimedElement.cpp1
-rw-r--r--dom/smil/nsSMILTimedElement.h1
-rw-r--r--dom/smil/nsSMILTypes.h1
-rw-r--r--dom/smil/nsSMILValue.cpp1
-rw-r--r--dom/smil/nsSMILValue.h1
-rw-r--r--dom/smil/test/db_smilAnimateMotion.js1
-rw-r--r--dom/smil/test/db_smilCSSFromBy.js1
-rw-r--r--dom/smil/test/db_smilCSSFromTo.js1
-rw-r--r--dom/smil/test/db_smilCSSPaced.js1
-rw-r--r--dom/smil/test/db_smilCSSPropertyList.js1
-rw-r--r--dom/smil/test/db_smilMappedAttrList.js1
-rw-r--r--dom/smil/test/smilAnimateMotionValueLists.js1
-rw-r--r--dom/smil/test/smilTestUtils.js1
-rw-r--r--dom/storage/DOMStorage.cpp1
-rw-r--r--dom/storage/DOMStorage.h1
-rw-r--r--dom/storage/DOMStorageCache.cpp1
-rw-r--r--dom/storage/DOMStorageCache.h1
-rw-r--r--dom/storage/DOMStorageDBThread.cpp1
-rw-r--r--dom/storage/DOMStorageDBThread.h1
-rw-r--r--dom/storage/DOMStorageDBUpdater.cpp1
-rw-r--r--dom/storage/DOMStorageDBUpdater.h1
-rw-r--r--dom/storage/DOMStorageIPC.cpp1
-rw-r--r--dom/storage/DOMStorageIPC.h1
-rw-r--r--dom/storage/DOMStorageManager.cpp1
-rw-r--r--dom/storage/DOMStorageManager.h1
-rw-r--r--dom/storage/DOMStorageObserver.cpp1
-rw-r--r--dom/storage/DOMStorageObserver.h1
-rw-r--r--dom/storage/PStorage.ipdl1
-rw-r--r--dom/storage/moz.build1
-rw-r--r--dom/svg/DOMSVGAnimatedLengthList.cpp1
-rw-r--r--dom/svg/DOMSVGAnimatedLengthList.h1
-rw-r--r--dom/svg/DOMSVGAnimatedNumberList.cpp1
-rw-r--r--dom/svg/DOMSVGAnimatedNumberList.h1
-rw-r--r--dom/svg/DOMSVGLength.cpp1
-rw-r--r--dom/svg/DOMSVGLength.h1
-rw-r--r--dom/svg/DOMSVGLengthList.cpp1
-rw-r--r--dom/svg/DOMSVGLengthList.h1
-rw-r--r--dom/svg/DOMSVGNumber.cpp1
-rw-r--r--dom/svg/DOMSVGNumber.h1
-rw-r--r--dom/svg/DOMSVGNumberList.cpp1
-rw-r--r--dom/svg/DOMSVGNumberList.h1
-rw-r--r--dom/svg/DOMSVGPathSeg.cpp1
-rw-r--r--dom/svg/DOMSVGPathSeg.h1
-rw-r--r--dom/svg/DOMSVGPathSegList.cpp1
-rw-r--r--dom/svg/DOMSVGPathSegList.h1
-rw-r--r--dom/svg/DOMSVGPoint.cpp1
-rw-r--r--dom/svg/DOMSVGPoint.h1
-rw-r--r--dom/svg/DOMSVGPointList.cpp1
-rw-r--r--dom/svg/DOMSVGPointList.h1
-rw-r--r--dom/svg/DOMSVGStringList.cpp1
-rw-r--r--dom/svg/DOMSVGStringList.h1
-rw-r--r--dom/svg/DOMSVGTransformList.cpp1
-rw-r--r--dom/svg/DOMSVGTransformList.h1
-rw-r--r--dom/svg/SVGAElement.cpp7
-rw-r--r--dom/svg/SVGAElement.h4
-rw-r--r--dom/svg/SVGAngle.cpp1
-rw-r--r--dom/svg/SVGAngle.h1
-rw-r--r--dom/svg/SVGAnimateElement.cpp1
-rw-r--r--dom/svg/SVGAnimateElement.h1
-rw-r--r--dom/svg/SVGAnimateMotionElement.cpp1
-rw-r--r--dom/svg/SVGAnimateMotionElement.h1
-rw-r--r--dom/svg/SVGAnimateTransformElement.cpp1
-rw-r--r--dom/svg/SVGAnimateTransformElement.h1
-rw-r--r--dom/svg/SVGAnimatedAngle.cpp1
-rw-r--r--dom/svg/SVGAnimatedAngle.h1
-rw-r--r--dom/svg/SVGAnimatedBoolean.cpp1
-rw-r--r--dom/svg/SVGAnimatedBoolean.h1
-rw-r--r--dom/svg/SVGAnimatedEnumeration.cpp1
-rw-r--r--dom/svg/SVGAnimatedEnumeration.h1
-rw-r--r--dom/svg/SVGAnimatedInteger.cpp1
-rw-r--r--dom/svg/SVGAnimatedInteger.h1
-rw-r--r--dom/svg/SVGAnimatedLength.cpp1
-rw-r--r--dom/svg/SVGAnimatedLength.h1
-rw-r--r--dom/svg/SVGAnimatedLengthList.cpp1
-rw-r--r--dom/svg/SVGAnimatedLengthList.h1
-rw-r--r--dom/svg/SVGAnimatedNumber.cpp1
-rw-r--r--dom/svg/SVGAnimatedNumber.h1
-rw-r--r--dom/svg/SVGAnimatedNumberList.cpp1
-rw-r--r--dom/svg/SVGAnimatedNumberList.h1
-rw-r--r--dom/svg/SVGAnimatedPathSegList.cpp1
-rw-r--r--dom/svg/SVGAnimatedPathSegList.h1
-rw-r--r--dom/svg/SVGAnimatedPointList.cpp1
-rw-r--r--dom/svg/SVGAnimatedPointList.h1
-rw-r--r--dom/svg/SVGAnimatedPreserveAspectRatio.cpp1
-rw-r--r--dom/svg/SVGAnimatedPreserveAspectRatio.h1
-rw-r--r--dom/svg/SVGAnimatedRect.cpp1
-rw-r--r--dom/svg/SVGAnimatedRect.h1
-rw-r--r--dom/svg/SVGAnimatedString.cpp1
-rw-r--r--dom/svg/SVGAnimatedString.h1
-rw-r--r--dom/svg/SVGAnimatedTransformList.cpp1
-rw-r--r--dom/svg/SVGAnimatedTransformList.h1
-rw-r--r--dom/svg/SVGAnimationElement.cpp6
-rw-r--r--dom/svg/SVGAnimationElement.h5
-rw-r--r--dom/svg/SVGAttrValueWrapper.cpp1
-rw-r--r--dom/svg/SVGAttrValueWrapper.h1
-rw-r--r--dom/svg/SVGCircleElement.cpp1
-rw-r--r--dom/svg/SVGCircleElement.h1
-rw-r--r--dom/svg/SVGClipPathElement.cpp1
-rw-r--r--dom/svg/SVGClipPathElement.h1
-rw-r--r--dom/svg/SVGComponentTransferFunctionElement.h1
-rw-r--r--dom/svg/SVGContentUtils.cpp1
-rw-r--r--dom/svg/SVGContentUtils.h1
-rw-r--r--dom/svg/SVGDefsElement.cpp1
-rw-r--r--dom/svg/SVGDefsElement.h1
-rw-r--r--dom/svg/SVGDescElement.cpp1
-rw-r--r--dom/svg/SVGDescElement.h1
-rw-r--r--dom/svg/SVGDocument.cpp1
-rw-r--r--dom/svg/SVGDocument.h1
-rw-r--r--dom/svg/SVGElementFactory.cpp57
-rw-r--r--dom/svg/SVGElementFactory.h26
-rw-r--r--dom/svg/SVGEllipseElement.cpp1
-rw-r--r--dom/svg/SVGEllipseElement.h1
-rw-r--r--dom/svg/SVGFEBlendElement.cpp1
-rw-r--r--dom/svg/SVGFEBlendElement.h1
-rw-r--r--dom/svg/SVGFEColorMatrixElement.cpp1
-rw-r--r--dom/svg/SVGFEColorMatrixElement.h1
-rw-r--r--dom/svg/SVGFEComponentTransferElement.cpp1
-rw-r--r--dom/svg/SVGFEComponentTransferElement.h1
-rw-r--r--dom/svg/SVGFECompositeElement.cpp1
-rw-r--r--dom/svg/SVGFECompositeElement.h1
-rw-r--r--dom/svg/SVGFEConvolveMatrixElement.cpp1
-rw-r--r--dom/svg/SVGFEConvolveMatrixElement.h1
-rw-r--r--dom/svg/SVGFEDiffuseLightingElement.cpp1
-rw-r--r--dom/svg/SVGFEDiffuseLightingElement.h1
-rw-r--r--dom/svg/SVGFEDisplacementMapElement.cpp1
-rw-r--r--dom/svg/SVGFEDisplacementMapElement.h1
-rw-r--r--dom/svg/SVGFEDistantLightElement.cpp1
-rw-r--r--dom/svg/SVGFEDistantLightElement.h1
-rw-r--r--dom/svg/SVGFEDropShadowElement.cpp1
-rw-r--r--dom/svg/SVGFEDropShadowElement.h1
-rw-r--r--dom/svg/SVGFEFloodElement.cpp1
-rw-r--r--dom/svg/SVGFEFloodElement.h1
-rw-r--r--dom/svg/SVGFEGaussianBlurElement.cpp1
-rw-r--r--dom/svg/SVGFEGaussianBlurElement.h1
-rw-r--r--dom/svg/SVGFEImageElement.cpp6
-rw-r--r--dom/svg/SVGFEImageElement.h5
-rw-r--r--dom/svg/SVGFEMergeElement.cpp1
-rw-r--r--dom/svg/SVGFEMergeElement.h1
-rw-r--r--dom/svg/SVGFEMergeNodeElement.cpp1
-rw-r--r--dom/svg/SVGFEMergeNodeElement.h1
-rw-r--r--dom/svg/SVGFEMorphologyElement.cpp1
-rw-r--r--dom/svg/SVGFEMorphologyElement.h1
-rw-r--r--dom/svg/SVGFEOffsetElement.cpp1
-rw-r--r--dom/svg/SVGFEOffsetElement.h1
-rw-r--r--dom/svg/SVGFEPointLightElement.cpp1
-rw-r--r--dom/svg/SVGFEPointLightElement.h1
-rw-r--r--dom/svg/SVGFESpecularLightingElement.cpp1
-rw-r--r--dom/svg/SVGFESpecularLightingElement.h1
-rw-r--r--dom/svg/SVGFESpotLightElement.cpp1
-rw-r--r--dom/svg/SVGFESpotLightElement.h1
-rw-r--r--dom/svg/SVGFETileElement.cpp1
-rw-r--r--dom/svg/SVGFETileElement.h1
-rw-r--r--dom/svg/SVGFETurbulenceElement.cpp1
-rw-r--r--dom/svg/SVGFETurbulenceElement.h1
-rw-r--r--dom/svg/SVGFilterElement.cpp1
-rw-r--r--dom/svg/SVGFilterElement.h1
-rw-r--r--dom/svg/SVGForeignObjectElement.cpp1
-rw-r--r--dom/svg/SVGForeignObjectElement.h1
-rw-r--r--dom/svg/SVGFragmentIdentifier.cpp1
-rw-r--r--dom/svg/SVGFragmentIdentifier.h1
-rw-r--r--dom/svg/SVGGElement.cpp1
-rw-r--r--dom/svg/SVGGElement.h1
-rw-r--r--dom/svg/SVGGradientElement.cpp1
-rw-r--r--dom/svg/SVGGradientElement.h1
-rw-r--r--dom/svg/SVGGraphicsElement.cpp1
-rw-r--r--dom/svg/SVGGraphicsElement.h1
-rw-r--r--dom/svg/SVGIRect.h1
-rw-r--r--dom/svg/SVGImageElement.cpp6
-rw-r--r--dom/svg/SVGImageElement.h5
-rw-r--r--dom/svg/SVGIntegerPairSMILType.cpp1
-rw-r--r--dom/svg/SVGIntegerPairSMILType.h1
-rw-r--r--dom/svg/SVGLength.cpp1
-rw-r--r--dom/svg/SVGLength.h1
-rw-r--r--dom/svg/SVGLengthList.cpp1
-rw-r--r--dom/svg/SVGLengthList.h1
-rw-r--r--dom/svg/SVGLengthListSMILType.cpp1
-rw-r--r--dom/svg/SVGLengthListSMILType.h1
-rw-r--r--dom/svg/SVGLineElement.cpp1
-rw-r--r--dom/svg/SVGLineElement.h1
-rw-r--r--dom/svg/SVGMPathElement.cpp1
-rw-r--r--dom/svg/SVGMPathElement.h1
-rw-r--r--dom/svg/SVGMarkerElement.cpp1
-rw-r--r--dom/svg/SVGMarkerElement.h1
-rw-r--r--dom/svg/SVGMaskElement.cpp1
-rw-r--r--dom/svg/SVGMaskElement.h1
-rw-r--r--dom/svg/SVGMatrix.cpp1
-rw-r--r--dom/svg/SVGMatrix.h1
-rw-r--r--dom/svg/SVGMetadataElement.cpp1
-rw-r--r--dom/svg/SVGMetadataElement.h1
-rw-r--r--dom/svg/SVGMotionSMILAnimationFunction.cpp1
-rw-r--r--dom/svg/SVGMotionSMILAnimationFunction.h1
-rw-r--r--dom/svg/SVGMotionSMILAttr.cpp1
-rw-r--r--dom/svg/SVGMotionSMILAttr.h1
-rw-r--r--dom/svg/SVGMotionSMILPathUtils.cpp1
-rw-r--r--dom/svg/SVGMotionSMILPathUtils.h1
-rw-r--r--dom/svg/SVGMotionSMILType.cpp1
-rw-r--r--dom/svg/SVGMotionSMILType.h1
-rw-r--r--dom/svg/SVGNumberList.cpp1
-rw-r--r--dom/svg/SVGNumberList.h1
-rw-r--r--dom/svg/SVGNumberListSMILType.cpp1
-rw-r--r--dom/svg/SVGNumberListSMILType.h1
-rw-r--r--dom/svg/SVGNumberPairSMILType.cpp1
-rw-r--r--dom/svg/SVGNumberPairSMILType.h1
-rw-r--r--dom/svg/SVGOrientSMILType.cpp1
-rw-r--r--dom/svg/SVGOrientSMILType.h1
-rw-r--r--dom/svg/SVGPathData.cpp1
-rw-r--r--dom/svg/SVGPathData.h1
-rw-r--r--dom/svg/SVGPathElement.cpp1
-rw-r--r--dom/svg/SVGPathElement.h1
-rw-r--r--dom/svg/SVGPathSegListSMILType.cpp1
-rw-r--r--dom/svg/SVGPathSegListSMILType.h1
-rw-r--r--dom/svg/SVGPathSegUtils.cpp1
-rw-r--r--dom/svg/SVGPathSegUtils.h1
-rw-r--r--dom/svg/SVGPatternElement.cpp1
-rw-r--r--dom/svg/SVGPatternElement.h1
-rw-r--r--dom/svg/SVGPoint.h1
-rw-r--r--dom/svg/SVGPointList.cpp1
-rw-r--r--dom/svg/SVGPointList.h1
-rw-r--r--dom/svg/SVGPointListSMILType.cpp1
-rw-r--r--dom/svg/SVGPointListSMILType.h1
-rw-r--r--dom/svg/SVGPolygonElement.cpp1
-rw-r--r--dom/svg/SVGPolygonElement.h1
-rw-r--r--dom/svg/SVGPolylineElement.cpp1
-rw-r--r--dom/svg/SVGPolylineElement.h1
-rw-r--r--dom/svg/SVGPreserveAspectRatio.cpp1
-rw-r--r--dom/svg/SVGPreserveAspectRatio.h1
-rw-r--r--dom/svg/SVGRect.cpp1
-rw-r--r--dom/svg/SVGRect.h1
-rw-r--r--dom/svg/SVGRectElement.cpp1
-rw-r--r--dom/svg/SVGRectElement.h1
-rw-r--r--dom/svg/SVGSVGElement.cpp5
-rw-r--r--dom/svg/SVGSVGElement.h4
-rw-r--r--dom/svg/SVGScriptElement.cpp6
-rw-r--r--dom/svg/SVGScriptElement.h5
-rw-r--r--dom/svg/SVGSetElement.cpp1
-rw-r--r--dom/svg/SVGSetElement.h1
-rw-r--r--dom/svg/SVGStopElement.cpp1
-rw-r--r--dom/svg/SVGStopElement.h1
-rw-r--r--dom/svg/SVGStringList.cpp1
-rw-r--r--dom/svg/SVGStringList.h1
-rw-r--r--dom/svg/SVGStyleElement.cpp1
-rw-r--r--dom/svg/SVGStyleElement.h1
-rw-r--r--dom/svg/SVGSwitchElement.cpp1
-rw-r--r--dom/svg/SVGSwitchElement.h1
-rw-r--r--dom/svg/SVGSymbolElement.cpp1
-rw-r--r--dom/svg/SVGSymbolElement.h1
-rw-r--r--dom/svg/SVGTSpanElement.cpp1
-rw-r--r--dom/svg/SVGTSpanElement.h1
-rw-r--r--dom/svg/SVGTagList.h10
-rw-r--r--dom/svg/SVGTests.cpp1
-rw-r--r--dom/svg/SVGTests.h1
-rw-r--r--dom/svg/SVGTextContentElement.cpp1
-rw-r--r--dom/svg/SVGTextContentElement.h1
-rw-r--r--dom/svg/SVGTextElement.cpp1
-rw-r--r--dom/svg/SVGTextElement.h1
-rw-r--r--dom/svg/SVGTextPathElement.cpp1
-rw-r--r--dom/svg/SVGTextPathElement.h1
-rw-r--r--dom/svg/SVGTextPositioningElement.cpp1
-rw-r--r--dom/svg/SVGTextPositioningElement.h1
-rw-r--r--dom/svg/SVGTitleElement.cpp1
-rw-r--r--dom/svg/SVGTitleElement.h1
-rw-r--r--dom/svg/SVGTransform.cpp1
-rw-r--r--dom/svg/SVGTransform.h1
-rw-r--r--dom/svg/SVGTransformList.cpp1
-rw-r--r--dom/svg/SVGTransformList.h1
-rw-r--r--dom/svg/SVGTransformListParser.cpp1
-rw-r--r--dom/svg/SVGTransformListParser.h1
-rw-r--r--dom/svg/SVGTransformListSMILType.cpp1
-rw-r--r--dom/svg/SVGTransformListSMILType.h1
-rw-r--r--dom/svg/SVGTransformableElement.cpp1
-rw-r--r--dom/svg/SVGTransformableElement.h1
-rw-r--r--dom/svg/SVGUseElement.cpp1
-rw-r--r--dom/svg/SVGUseElement.h1
-rw-r--r--dom/svg/SVGViewBoxSMILType.cpp1
-rw-r--r--dom/svg/SVGViewBoxSMILType.h1
-rw-r--r--dom/svg/SVGViewElement.cpp1
-rw-r--r--dom/svg/SVGViewElement.h1
-rw-r--r--dom/svg/SVGZoomEvent.cpp1
-rw-r--r--dom/svg/SVGZoomEvent.h1
-rw-r--r--dom/svg/moz.build3
-rw-r--r--dom/svg/nsISVGPoint.cpp1
-rw-r--r--dom/svg/nsISVGPoint.h1
-rw-r--r--dom/svg/nsSVGAngle.cpp1
-rw-r--r--dom/svg/nsSVGAngle.h1
-rw-r--r--dom/svg/nsSVGAnimatedTransformList.cpp1
-rw-r--r--dom/svg/nsSVGAnimatedTransformList.h1
-rw-r--r--dom/svg/nsSVGAttrTearoffTable.h1
-rw-r--r--dom/svg/nsSVGBoolean.cpp1
-rw-r--r--dom/svg/nsSVGBoolean.h1
-rw-r--r--dom/svg/nsSVGClass.cpp5
-rw-r--r--dom/svg/nsSVGClass.h1
-rw-r--r--dom/svg/nsSVGDataParser.cpp1
-rw-r--r--dom/svg/nsSVGDataParser.h1
-rw-r--r--dom/svg/nsSVGElement.cpp63
-rw-r--r--dom/svg/nsSVGElement.h7
-rw-r--r--dom/svg/nsSVGEnum.cpp1
-rw-r--r--dom/svg/nsSVGEnum.h1
-rw-r--r--dom/svg/nsSVGFeatures.cpp1
-rw-r--r--dom/svg/nsSVGFeatures.h1
-rw-r--r--dom/svg/nsSVGFilters.cpp1
-rw-r--r--dom/svg/nsSVGFilters.h1
-rw-r--r--dom/svg/nsSVGInteger.cpp1
-rw-r--r--dom/svg/nsSVGInteger.h1
-rw-r--r--dom/svg/nsSVGIntegerPair.cpp1
-rw-r--r--dom/svg/nsSVGIntegerPair.h1
-rw-r--r--dom/svg/nsSVGLength2.cpp1
-rw-r--r--dom/svg/nsSVGLength2.h1
-rw-r--r--dom/svg/nsSVGNumber2.cpp1
-rw-r--r--dom/svg/nsSVGNumber2.h1
-rw-r--r--dom/svg/nsSVGNumberPair.cpp1
-rw-r--r--dom/svg/nsSVGNumberPair.h1
-rw-r--r--dom/svg/nsSVGPathDataParser.cpp1
-rw-r--r--dom/svg/nsSVGPathDataParser.h1
-rw-r--r--dom/svg/nsSVGPathGeometryElement.cpp6
-rw-r--r--dom/svg/nsSVGPathGeometryElement.h5
-rw-r--r--dom/svg/nsSVGPolyElement.cpp1
-rw-r--r--dom/svg/nsSVGPolyElement.h1
-rw-r--r--dom/svg/nsSVGString.cpp1
-rw-r--r--dom/svg/nsSVGString.h1
-rw-r--r--dom/svg/nsSVGTransform.cpp1
-rw-r--r--dom/svg/nsSVGTransform.h1
-rw-r--r--dom/svg/nsSVGViewBox.cpp1
-rw-r--r--dom/svg/nsSVGViewBox.h1
-rw-r--r--dom/system/OSFileConstants.cpp1
-rw-r--r--dom/system/OSFileConstants.h1
-rw-r--r--dom/system/android/AndroidLocationProvider.cpp1
-rw-r--r--dom/system/android/AndroidLocationProvider.h1
-rw-r--r--dom/system/android/moz.build1
-rw-r--r--dom/system/android/nsHapticFeedback.cpp1
-rw-r--r--dom/system/android/nsHapticFeedback.h1
-rw-r--r--dom/system/linux/GpsdLocationProvider.cpp1
-rw-r--r--dom/system/linux/GpsdLocationProvider.h1
-rw-r--r--dom/system/linux/moz.build1
-rw-r--r--dom/system/mac/CoreLocationLocationProvider.h1
-rw-r--r--dom/system/mac/moz.build1
-rw-r--r--dom/system/moz.build1
-rw-r--r--dom/system/nsDeviceSensors.cpp1
-rw-r--r--dom/system/nsDeviceSensors.h1
-rw-r--r--dom/system/nsIOSFileConstantsService.idl1
-rw-r--r--dom/system/windows/WindowsLocationProvider.cpp1
-rw-r--r--dom/system/windows/WindowsLocationProvider.h1
-rw-r--r--dom/system/windows/moz.build1
-rw-r--r--dom/system/windows/nsHapticFeedback.cpp1
-rw-r--r--dom/system/windows/nsHapticFeedback.h1
-rw-r--r--dom/tests/browser/browser_frame_elements.js1
-rw-r--r--dom/tests/mochitest/beacon/beacon-handler.sjs1
-rw-r--r--dom/tests/mochitest/bugs/file_redirector.sjs1
-rw-r--r--dom/tests/mochitest/notification/desktop-notification/moz.build1
-rw-r--r--dom/tests/mochitest/webcomponents/chrome.ini9
-rw-r--r--dom/tests/mochitest/webcomponents/dummy_page.html10
-rw-r--r--dom/tests/mochitest/webcomponents/htmlconstructor_autonomous_tests.js81
-rw-r--r--dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js246
-rw-r--r--dom/tests/mochitest/webcomponents/mochitest.ini32
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_adopt_callbacks.html29
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html30
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks.html54
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks_extended.html40
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor.html42
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor_chrome.html41
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_import_node_created_callback.html34
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_register_invalid_callbacks.html72
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_throw_on_dynamic_markup_insertion.html66
-rw-r--r--dom/tests/mochitest/webcomponents/test_custom_element_uncatchable_exception.html37
-rw-r--r--dom/tests/mochitest/webcomponents/test_dest_insertion_points.html73
-rw-r--r--dom/tests/mochitest/webcomponents/test_dest_insertion_points_shadow.html68
-rw-r--r--dom/tests/mochitest/webcomponents/test_document_register.html40
-rw-r--r--dom/tests/mochitest/webcomponents/test_document_register_base_queue.html48
-rw-r--r--dom/tests/mochitest/webcomponents/test_document_register_parser.html47
-rw-r--r--dom/tests/mochitest/webcomponents/test_document_register_stack.html4
-rw-r--r--dom/tests/mochitest/webcomponents/test_document_shared_registry.html79
-rw-r--r--dom/tests/mochitest/webcomponents/test_dynamic_content_element_matching.html50
-rw-r--r--dom/tests/mochitest/webcomponents/test_event_dispatch.html458
-rw-r--r--dom/tests/mochitest/webcomponents/test_fallback_dest_insertion_points.html71
-rw-r--r--dom/tests/mochitest/webcomponents/test_nested_content_element.html127
-rw-r--r--dom/tests/mochitest/webcomponents/test_shadowroot_host.html41
-rw-r--r--dom/tests/mochitest/webcomponents/test_shadowroot_style_multiple_shadow.html57
-rw-r--r--dom/tests/mochitest/webcomponents/test_shadowroot_youngershadowroot.html41
-rw-r--r--dom/tests/mochitest/webcomponents/test_template_custom_elements.html32
-rw-r--r--dom/tests/mochitest/webcomponents/test_unresolved_pseudo_class.html99
-rw-r--r--dom/tests/moz.build2
-rw-r--r--dom/time/DateCacheCleaner.cpp1
-rw-r--r--dom/time/DateCacheCleaner.h1
-rw-r--r--dom/time/TimeChangeObserver.cpp1
-rw-r--r--dom/time/TimeChangeObserver.h1
-rw-r--r--dom/time/TimeManager.cpp1
-rw-r--r--dom/time/TimeManager.h1
-rw-r--r--dom/time/TimeService.cpp1
-rw-r--r--dom/time/TimeService.h1
-rw-r--r--dom/time/moz.build1
-rw-r--r--dom/u2f/NSSU2FTokenRemote.cpp1
-rw-r--r--dom/u2f/NSSU2FTokenRemote.h1
-rw-r--r--dom/u2f/moz.build1
-rw-r--r--dom/url/URL.cpp1
-rw-r--r--dom/url/URL.h1
-rw-r--r--dom/url/URLSearchParams.cpp1
-rw-r--r--dom/url/URLSearchParams.h1
-rw-r--r--dom/url/moz.build1
-rw-r--r--dom/webidl/Animatable.webidl2
-rw-r--r--dom/webidl/Animation.webidl2
-rw-r--r--dom/webidl/AnimationTimeline.webidl2
-rw-r--r--dom/webidl/AnonymousContent.webidl8
-rw-r--r--dom/webidl/ArchiveRequest.webidl1
-rw-r--r--dom/webidl/Attr.webidl2
-rw-r--r--dom/webidl/CSSPseudoElement.webidl2
-rw-r--r--dom/webidl/CSSStyleDeclaration.webidl6
-rw-r--r--dom/webidl/ChildNode.webidl8
-rw-r--r--dom/webidl/Console.webidl1
-rw-r--r--dom/webidl/CustomElementRegistry.webidl2
-rw-r--r--dom/webidl/DOMStringMap.webidl3
-rw-r--r--dom/webidl/DOMTokenList.webidl12
-rw-r--r--dom/webidl/Document.webidl26
-rw-r--r--dom/webidl/DocumentOrShadowRoot.webidl29
-rw-r--r--dom/webidl/DocumentTimeline.webidl2
-rw-r--r--dom/webidl/Element.webidl52
-rw-r--r--dom/webidl/Event.webidl2
-rw-r--r--dom/webidl/EventHandler.webidl1
-rw-r--r--dom/webidl/HTMLAnchorElement.webidl27
-rw-r--r--dom/webidl/HTMLAreaElement.webidl17
-rw-r--r--dom/webidl/HTMLAudioElement.webidl2
-rw-r--r--dom/webidl/HTMLBRElement.webidl3
-rw-r--r--dom/webidl/HTMLBaseElement.webidl5
-rw-r--r--dom/webidl/HTMLBodyElement.webidl19
-rw-r--r--dom/webidl/HTMLButtonElement.webidl21
-rw-r--r--dom/webidl/HTMLCanvasElement.webidl5
-rw-r--r--dom/webidl/HTMLDListElement.webidl3
-rw-r--r--dom/webidl/HTMLDataElement.webidl3
-rw-r--r--dom/webidl/HTMLDataListElement.webidl1
-rw-r--r--dom/webidl/HTMLDetailsElement.webidl4
-rw-r--r--dom/webidl/HTMLDialogElement.webidl10
-rw-r--r--dom/webidl/HTMLDirectoryElement.webidl3
-rw-r--r--dom/webidl/HTMLDivElement.webidl3
-rw-r--r--dom/webidl/HTMLDocument.webidl26
-rw-r--r--dom/webidl/HTMLElement.webidl17
-rw-r--r--dom/webidl/HTMLEmbedElement.webidl14
-rw-r--r--dom/webidl/HTMLFieldSetElement.webidl5
-rw-r--r--dom/webidl/HTMLFontElement.webidl7
-rw-r--r--dom/webidl/HTMLFormElement.webidl21
-rw-r--r--dom/webidl/HTMLFrameElement.webidl19
-rw-r--r--dom/webidl/HTMLFrameSetElement.webidl5
-rw-r--r--dom/webidl/HTMLHRElement.webidl11
-rw-r--r--dom/webidl/HTMLHeadElement.webidl1
-rw-r--r--dom/webidl/HTMLHeadingElement.webidl3
-rw-r--r--dom/webidl/HTMLHtmlElement.webidl3
-rw-r--r--dom/webidl/HTMLHyperlinkElementUtils.webidl11
-rw-r--r--dom/webidl/HTMLIFrameElement.webidl29
-rw-r--r--dom/webidl/HTMLImageElement.webidl36
-rw-r--r--dom/webidl/HTMLInputElement.webidl64
-rw-r--r--dom/webidl/HTMLLIElement.webidl5
-rw-r--r--dom/webidl/HTMLLabelElement.webidl2
-rw-r--r--dom/webidl/HTMLLegendElement.webidl3
-rw-r--r--dom/webidl/HTMLLinkElement.webidl25
-rw-r--r--dom/webidl/HTMLMapElement.webidl3
-rw-r--r--dom/webidl/HTMLMediaElement.webidl14
-rw-r--r--dom/webidl/HTMLMenuElement.webidl7
-rw-r--r--dom/webidl/HTMLMenuItemElement.webidl15
-rw-r--r--dom/webidl/HTMLMetaElement.webidl9
-rw-r--r--dom/webidl/HTMLMeterElement.webidl13
-rw-r--r--dom/webidl/HTMLModElement.webidl5
-rw-r--r--dom/webidl/HTMLOListElement.webidl9
-rw-r--r--dom/webidl/HTMLObjectElement.webidl36
-rw-r--r--dom/webidl/HTMLOptGroupElement.webidl5
-rw-r--r--dom/webidl/HTMLOptionElement.webidl14
-rw-r--r--dom/webidl/HTMLOptionsCollection.webidl9
-rw-r--r--dom/webidl/HTMLOutputElement.webidl7
-rw-r--r--dom/webidl/HTMLParagraphElement.webidl3
-rw-r--r--dom/webidl/HTMLParamElement.webidl9
-rw-r--r--dom/webidl/HTMLPictureElement.webidl1
-rw-r--r--dom/webidl/HTMLPreElement.webidl3
-rw-r--r--dom/webidl/HTMLProgressElement.webidl5
-rw-r--r--dom/webidl/HTMLQuoteElement.webidl3
-rw-r--r--dom/webidl/HTMLScriptElement.webidl23
-rw-r--r--dom/webidl/HTMLSelectElement.webidl23
-rw-r--r--dom/webidl/HTMLShadowElement.webidl19
-rw-r--r--dom/webidl/HTMLSlotElement.webidl (renamed from dom/webidl/HTMLContentElement.webidl)15
-rw-r--r--dom/webidl/HTMLSourceElement.webidl11
-rw-r--r--dom/webidl/HTMLSpanElement.webidl1
-rw-r--r--dom/webidl/HTMLStyleElement.webidl5
-rw-r--r--dom/webidl/HTMLTableCaptionElement.webidl3
-rw-r--r--dom/webidl/HTMLTableCellElement.webidl30
-rw-r--r--dom/webidl/HTMLTableColElement.webidl13
-rw-r--r--dom/webidl/HTMLTableElement.webidl33
-rw-r--r--dom/webidl/HTMLTableRowElement.webidl14
-rw-r--r--dom/webidl/HTMLTableSectionElement.webidl11
-rw-r--r--dom/webidl/HTMLTemplateElement.webidl1
-rw-r--r--dom/webidl/HTMLTextAreaElement.webidl27
-rw-r--r--dom/webidl/HTMLTimeElement.webidl3
-rw-r--r--dom/webidl/HTMLTitleElement.webidl3
-rw-r--r--dom/webidl/HTMLTrackElement.webidl11
-rw-r--r--dom/webidl/HTMLUListElement.webidl5
-rw-r--r--dom/webidl/HTMLVideoElement.webidl7
-rw-r--r--dom/webidl/Headers.webidl1
-rw-r--r--dom/webidl/IDBFileRequest.webidl1
-rw-r--r--dom/webidl/MozWakeLock.webidl1
-rw-r--r--dom/webidl/NamedNodeMap.webidl8
-rw-r--r--dom/webidl/Node.webidl14
-rw-r--r--dom/webidl/ParentNode.webidl4
-rw-r--r--dom/webidl/Range.webidl12
-rw-r--r--dom/webidl/ShadowRoot.webidl17
-rw-r--r--dom/webidl/Text.webidl5
-rw-r--r--dom/webidl/WebComponents.webidl23
-rw-r--r--dom/webidl/XSLTProcessor.webidl4
-rw-r--r--dom/webidl/moz.build13
-rw-r--r--dom/workers/ChromeWorkerScope.cpp1
-rw-r--r--dom/workers/ChromeWorkerScope.h1
-rw-r--r--dom/workers/FileReaderSync.cpp1
-rw-r--r--dom/workers/FileReaderSync.h1
-rw-r--r--dom/workers/Principal.cpp1
-rw-r--r--dom/workers/Principal.h1
-rw-r--r--dom/workers/Queue.h1
-rw-r--r--dom/workers/RegisterBindings.cpp1
-rw-r--r--dom/workers/RuntimeService.cpp1
-rw-r--r--dom/workers/RuntimeService.h1
-rw-r--r--dom/workers/ScriptLoader.cpp1
-rw-r--r--dom/workers/ScriptLoader.h1
-rw-r--r--dom/workers/ServiceWorker.cpp1
-rw-r--r--dom/workers/ServiceWorker.h1
-rw-r--r--dom/workers/ServiceWorkerClient.cpp1
-rw-r--r--dom/workers/ServiceWorkerClient.h1
-rw-r--r--dom/workers/ServiceWorkerClients.cpp1
-rw-r--r--dom/workers/ServiceWorkerClients.h1
-rw-r--r--dom/workers/ServiceWorkerCommon.h1
-rw-r--r--dom/workers/ServiceWorkerContainer.cpp1
-rw-r--r--dom/workers/ServiceWorkerContainer.h1
-rw-r--r--dom/workers/ServiceWorkerEvents.cpp1
-rw-r--r--dom/workers/ServiceWorkerEvents.h1
-rw-r--r--dom/workers/ServiceWorkerInfo.cpp1
-rw-r--r--dom/workers/ServiceWorkerInfo.h1
-rw-r--r--dom/workers/ServiceWorkerJob.cpp1
-rw-r--r--dom/workers/ServiceWorkerJob.h1
-rw-r--r--dom/workers/ServiceWorkerJobQueue.cpp1
-rw-r--r--dom/workers/ServiceWorkerJobQueue.h1
-rw-r--r--dom/workers/ServiceWorkerManager.cpp1
-rw-r--r--dom/workers/ServiceWorkerManager.h1
-rw-r--r--dom/workers/ServiceWorkerManagerChild.cpp1
-rw-r--r--dom/workers/ServiceWorkerManagerChild.h1
-rw-r--r--dom/workers/ServiceWorkerManagerParent.cpp1
-rw-r--r--dom/workers/ServiceWorkerManagerParent.h1
-rw-r--r--dom/workers/ServiceWorkerManagerService.cpp1
-rw-r--r--dom/workers/ServiceWorkerManagerService.h1
-rw-r--r--dom/workers/ServiceWorkerPrivate.cpp1
-rw-r--r--dom/workers/ServiceWorkerPrivate.h1
-rw-r--r--dom/workers/ServiceWorkerRegisterJob.cpp1
-rw-r--r--dom/workers/ServiceWorkerRegisterJob.h1
-rw-r--r--dom/workers/ServiceWorkerRegistrar.cpp1
-rw-r--r--dom/workers/ServiceWorkerRegistrar.h1
-rw-r--r--dom/workers/ServiceWorkerRegistrarTypes.ipdlh1
-rw-r--r--dom/workers/ServiceWorkerRegistration.cpp1
-rw-r--r--dom/workers/ServiceWorkerRegistration.h1
-rw-r--r--dom/workers/ServiceWorkerRegistrationInfo.cpp1
-rw-r--r--dom/workers/ServiceWorkerRegistrationInfo.h1
-rw-r--r--dom/workers/ServiceWorkerScriptCache.cpp1
-rw-r--r--dom/workers/ServiceWorkerScriptCache.h1
-rw-r--r--dom/workers/ServiceWorkerUnregisterJob.cpp1
-rw-r--r--dom/workers/ServiceWorkerUnregisterJob.h1
-rw-r--r--dom/workers/ServiceWorkerUpdateJob.cpp1
-rw-r--r--dom/workers/ServiceWorkerUpdateJob.h1
-rw-r--r--dom/workers/ServiceWorkerWindowClient.cpp1
-rw-r--r--dom/workers/ServiceWorkerWindowClient.h1
-rw-r--r--dom/workers/SharedWorker.cpp7
-rw-r--r--dom/workers/SharedWorker.h3
-rw-r--r--dom/workers/WorkerDebuggerManager.cpp1
-rw-r--r--dom/workers/WorkerDebuggerManager.h1
-rw-r--r--dom/workers/WorkerHolder.cpp1
-rw-r--r--dom/workers/WorkerHolder.h1
-rw-r--r--dom/workers/WorkerInlines.h1
-rw-r--r--dom/workers/WorkerLocation.cpp1
-rw-r--r--dom/workers/WorkerLocation.h1
-rw-r--r--dom/workers/WorkerNavigator.cpp1
-rw-r--r--dom/workers/WorkerNavigator.h1
-rw-r--r--dom/workers/WorkerPrefs.h1
-rw-r--r--dom/workers/WorkerPrivate.cpp1
-rw-r--r--dom/workers/WorkerPrivate.h1
-rw-r--r--dom/workers/WorkerRunnable.cpp1
-rw-r--r--dom/workers/WorkerRunnable.h1
-rw-r--r--dom/workers/WorkerScope.cpp1
-rw-r--r--dom/workers/WorkerScope.h1
-rw-r--r--dom/workers/WorkerThread.cpp1
-rw-r--r--dom/workers/WorkerThread.h1
-rw-r--r--dom/workers/Workers.h1
-rw-r--r--dom/workers/moz.build1
-rw-r--r--dom/workers/test/extensions/bootstrap/moz.build1
-rw-r--r--dom/workers/test/extensions/moz.build1
-rw-r--r--dom/workers/test/extensions/traditional/moz.build1
-rw-r--r--dom/workers/test/extensions/traditional/nsIWorkerTest.idl1
-rw-r--r--dom/workers/test/gtest/TestReadWrite.cpp1
-rw-r--r--dom/workers/test/gtest/moz.build1
-rw-r--r--dom/worklet/Worklet.cpp1
-rw-r--r--dom/worklet/Worklet.h1
-rw-r--r--dom/worklet/WorkletGlobalScope.cpp2
-rw-r--r--dom/worklet/WorkletGlobalScope.h1
-rw-r--r--dom/worklet/moz.build1
-rw-r--r--dom/xbl/XBLChildrenElement.cpp40
-rw-r--r--dom/xbl/XBLChildrenElement.h13
-rw-r--r--dom/xbl/builtin/android/moz.build1
-rw-r--r--dom/xbl/builtin/emacs/moz.build1
-rw-r--r--dom/xbl/builtin/mac/moz.build1
-rw-r--r--dom/xbl/builtin/moz.build1
-rw-r--r--dom/xbl/builtin/unix/moz.build1
-rw-r--r--dom/xbl/builtin/win/moz.build1
-rw-r--r--dom/xbl/moz.build1
-rw-r--r--dom/xbl/nsBindingManager.cpp1
-rw-r--r--dom/xbl/nsBindingManager.h1
-rw-r--r--dom/xbl/nsXBLBinding.cpp1
-rw-r--r--dom/xbl/nsXBLBinding.h1
-rw-r--r--dom/xbl/nsXBLContentSink.cpp1
-rw-r--r--dom/xbl/nsXBLContentSink.h1
-rw-r--r--dom/xbl/nsXBLDocumentInfo.cpp1
-rw-r--r--dom/xbl/nsXBLDocumentInfo.h1
-rw-r--r--dom/xbl/nsXBLEventHandler.cpp1
-rw-r--r--dom/xbl/nsXBLEventHandler.h1
-rw-r--r--dom/xbl/nsXBLMaybeCompiled.h1
-rw-r--r--dom/xbl/nsXBLProtoImpl.cpp1
-rw-r--r--dom/xbl/nsXBLProtoImpl.h1
-rw-r--r--dom/xbl/nsXBLProtoImplField.cpp1
-rw-r--r--dom/xbl/nsXBLProtoImplField.h1
-rw-r--r--dom/xbl/nsXBLProtoImplMember.h1
-rw-r--r--dom/xbl/nsXBLProtoImplMethod.cpp1
-rw-r--r--dom/xbl/nsXBLProtoImplMethod.h1
-rw-r--r--dom/xbl/nsXBLProtoImplProperty.cpp1
-rw-r--r--dom/xbl/nsXBLProtoImplProperty.h1
-rw-r--r--dom/xbl/nsXBLPrototypeBinding.cpp1
-rw-r--r--dom/xbl/nsXBLPrototypeBinding.h1
-rw-r--r--dom/xbl/nsXBLPrototypeHandler.cpp1
-rw-r--r--dom/xbl/nsXBLPrototypeHandler.h1
-rw-r--r--dom/xbl/nsXBLPrototypeResources.cpp1
-rw-r--r--dom/xbl/nsXBLPrototypeResources.h1
-rw-r--r--dom/xbl/nsXBLResourceLoader.cpp1
-rw-r--r--dom/xbl/nsXBLResourceLoader.h1
-rw-r--r--dom/xbl/nsXBLSerialize.cpp1
-rw-r--r--dom/xbl/nsXBLSerialize.h1
-rw-r--r--dom/xbl/nsXBLService.cpp39
-rw-r--r--dom/xbl/nsXBLService.h1
-rw-r--r--dom/xbl/nsXBLWindowKeyHandler.cpp1
-rw-r--r--dom/xbl/nsXBLWindowKeyHandler.h1
-rw-r--r--dom/xhr/XMLHttpRequest.cpp1
-rw-r--r--dom/xhr/XMLHttpRequest.h1
-rw-r--r--dom/xhr/XMLHttpRequestEventTarget.cpp1
-rw-r--r--dom/xhr/XMLHttpRequestEventTarget.h1
-rw-r--r--dom/xhr/XMLHttpRequestMainThread.cpp1
-rw-r--r--dom/xhr/XMLHttpRequestMainThread.h1
-rw-r--r--dom/xhr/XMLHttpRequestString.cpp1
-rw-r--r--dom/xhr/XMLHttpRequestString.h1
-rw-r--r--dom/xhr/XMLHttpRequestUpload.cpp1
-rw-r--r--dom/xhr/XMLHttpRequestUpload.h1
-rw-r--r--dom/xhr/XMLHttpRequestWorker.cpp1
-rw-r--r--dom/xhr/XMLHttpRequestWorker.h1
-rw-r--r--dom/xhr/moz.build1
-rw-r--r--dom/xml/CDATASection.cpp1
-rw-r--r--dom/xml/CDATASection.h1
-rw-r--r--dom/xml/ProcessingInstruction.cpp1
-rw-r--r--dom/xml/ProcessingInstruction.h1
-rw-r--r--dom/xml/XMLDocument.cpp1
-rw-r--r--dom/xml/XMLDocument.h1
-rw-r--r--dom/xml/XMLStylesheetProcessingInstruction.cpp1
-rw-r--r--dom/xml/XMLStylesheetProcessingInstruction.h1
-rw-r--r--dom/xml/moz.build1
-rw-r--r--dom/xml/nsIXMLContentSink.h1
-rw-r--r--dom/xml/nsXMLContentSink.cpp1
-rw-r--r--dom/xml/nsXMLContentSink.h1
-rw-r--r--dom/xml/nsXMLElement.cpp24
-rw-r--r--dom/xml/nsXMLElement.h4
-rw-r--r--dom/xml/nsXMLFragmentContentSink.cpp1
-rw-r--r--dom/xml/resources/moz.build1
-rw-r--r--dom/xslt/base/moz.build1
-rw-r--r--dom/xslt/moz.build1
-rw-r--r--dom/xslt/tests/mochitest/test_bug1135764.html2
-rw-r--r--dom/xslt/xml/moz.build1
-rw-r--r--dom/xslt/xpath/moz.build1
-rw-r--r--dom/xslt/xslt/moz.build1
-rw-r--r--dom/xslt/xslt/txMozillaXSLTProcessor.cpp5
-rw-r--r--dom/xslt/xslt/txMozillaXSLTProcessor.h3
-rw-r--r--dom/xul/XULDocument.cpp21
-rw-r--r--dom/xul/XULDocument.h5
-rw-r--r--dom/xul/moz.build1
-rw-r--r--dom/xul/nsXULCommandDispatcher.cpp1
-rw-r--r--dom/xul/nsXULContentSink.cpp1
-rw-r--r--dom/xul/nsXULElement.cpp202
-rw-r--r--dom/xul/nsXULElement.h33
-rw-r--r--dom/xul/nsXULPrototypeCache.cpp1
-rw-r--r--dom/xul/templates/moz.build1
2412 files changed, 9523 insertions, 22352 deletions
diff --git a/dom/abort/AbortController.cpp b/dom/abort/AbortController.cpp
index bd8159e7b..af35bbd0a 100644
--- a/dom/abort/AbortController.cpp
+++ b/dom/abort/AbortController.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/abort/AbortController.h b/dom/abort/AbortController.h
index 0b99dc49c..9b124ef85 100644
--- a/dom/abort/AbortController.h
+++ b/dom/abort/AbortController.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/abort/AbortSignal.cpp b/dom/abort/AbortSignal.cpp
index 7ee6c49a9..50ed89c93 100644
--- a/dom/abort/AbortSignal.cpp
+++ b/dom/abort/AbortSignal.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/abort/AbortSignal.h b/dom/abort/AbortSignal.h
index 35e582942..cf95e687a 100644
--- a/dom/abort/AbortSignal.h
+++ b/dom/abort/AbortSignal.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/abort/moz.build b/dom/abort/moz.build
index eacc9ddc7..7c6331016 100644
--- a/dom/abort/moz.build
+++ b/dom/abort/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/abort/tests/moz.build b/dom/abort/tests/moz.build
index 8e5cb5d71..034ba3628 100644
--- a/dom/abort/tests/moz.build
+++ b/dom/abort/tests/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/animation/AnimValuesStyleRule.cpp b/dom/animation/AnimValuesStyleRule.cpp
index dbdffd5b5..f60892deb 100644
--- a/dom/animation/AnimValuesStyleRule.cpp
+++ b/dom/animation/AnimValuesStyleRule.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimValuesStyleRule.h b/dom/animation/AnimValuesStyleRule.h
index 3562014b9..4a24bbd81 100644
--- a/dom/animation/AnimValuesStyleRule.h
+++ b/dom/animation/AnimValuesStyleRule.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/Animation.cpp b/dom/animation/Animation.cpp
index f4d29376c..dc33c6749 100644
--- a/dom/animation/Animation.cpp
+++ b/dom/animation/Animation.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/Animation.h b/dom/animation/Animation.h
index 3263b30c4..a63579c70 100644
--- a/dom/animation/Animation.h
+++ b/dom/animation/Animation.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationComparator.h b/dom/animation/AnimationComparator.h
index 730d62f48..ce5606882 100644
--- a/dom/animation/AnimationComparator.h
+++ b/dom/animation/AnimationComparator.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationEffectReadOnly.cpp b/dom/animation/AnimationEffectReadOnly.cpp
index 7eb0880c7..4f3e3c497 100644
--- a/dom/animation/AnimationEffectReadOnly.cpp
+++ b/dom/animation/AnimationEffectReadOnly.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationEffectReadOnly.h b/dom/animation/AnimationEffectReadOnly.h
index fdea49314..4f68d85be 100644
--- a/dom/animation/AnimationEffectReadOnly.h
+++ b/dom/animation/AnimationEffectReadOnly.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationPerformanceWarning.cpp b/dom/animation/AnimationPerformanceWarning.cpp
index 80ece3198..42fdd14c9 100644
--- a/dom/animation/AnimationPerformanceWarning.cpp
+++ b/dom/animation/AnimationPerformanceWarning.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationPerformanceWarning.h b/dom/animation/AnimationPerformanceWarning.h
index 582c48cc3..dd383a761 100644
--- a/dom/animation/AnimationPerformanceWarning.h
+++ b/dom/animation/AnimationPerformanceWarning.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationTarget.h b/dom/animation/AnimationTarget.h
index dbfef2e10..e339ca59b 100644
--- a/dom/animation/AnimationTarget.h
+++ b/dom/animation/AnimationTarget.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationTimeline.cpp b/dom/animation/AnimationTimeline.cpp
index f4a1ecc9a..61b5aea8a 100644
--- a/dom/animation/AnimationTimeline.cpp
+++ b/dom/animation/AnimationTimeline.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationTimeline.h b/dom/animation/AnimationTimeline.h
index d36cc4027..293958d30 100644
--- a/dom/animation/AnimationTimeline.h
+++ b/dom/animation/AnimationTimeline.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationUtils.cpp b/dom/animation/AnimationUtils.cpp
index 476652f77..c6395058e 100644
--- a/dom/animation/AnimationUtils.cpp
+++ b/dom/animation/AnimationUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/AnimationUtils.h b/dom/animation/AnimationUtils.h
index 82ae69bc8..91fcc8228 100644
--- a/dom/animation/AnimationUtils.h
+++ b/dom/animation/AnimationUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/ComputedTiming.h b/dom/animation/ComputedTiming.h
index b1c6674a5..f55058d69 100644
--- a/dom/animation/ComputedTiming.h
+++ b/dom/animation/ComputedTiming.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/ComputedTimingFunction.cpp b/dom/animation/ComputedTimingFunction.cpp
index 95b7fa785..594a50985 100644
--- a/dom/animation/ComputedTimingFunction.cpp
+++ b/dom/animation/ComputedTimingFunction.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/ComputedTimingFunction.h b/dom/animation/ComputedTimingFunction.h
index 998097265..ed2ad7f2b 100644
--- a/dom/animation/ComputedTimingFunction.h
+++ b/dom/animation/ComputedTimingFunction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/DocumentTimeline.cpp b/dom/animation/DocumentTimeline.cpp
index 78a4877d2..f6609b526 100644
--- a/dom/animation/DocumentTimeline.cpp
+++ b/dom/animation/DocumentTimeline.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/DocumentTimeline.h b/dom/animation/DocumentTimeline.h
index 888a1d33d..7d804fb4f 100644
--- a/dom/animation/DocumentTimeline.h
+++ b/dom/animation/DocumentTimeline.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/EffectCompositor.cpp b/dom/animation/EffectCompositor.cpp
index c88cabe90..30df27a01 100644
--- a/dom/animation/EffectCompositor.cpp
+++ b/dom/animation/EffectCompositor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -356,24 +355,16 @@ EffectCompositor::GetElementToRestyle(dom::Element* aElement,
return aElement;
}
- nsIFrame* primaryFrame = aElement->GetPrimaryFrame();
- if (!primaryFrame) {
- return nullptr;
- }
- nsIFrame* pseudoFrame;
if (aPseudoType == CSSPseudoElementType::before) {
- pseudoFrame = nsLayoutUtils::GetBeforeFrame(primaryFrame);
- } else if (aPseudoType == CSSPseudoElementType::after) {
- pseudoFrame = nsLayoutUtils::GetAfterFrame(primaryFrame);
- } else {
- NS_NOTREACHED("Should not try to get the element to restyle for a pseudo "
- "other that :before or :after");
- return nullptr;
+ return nsLayoutUtils::GetBeforePseudo(aElement);
}
- if (!pseudoFrame) {
- return nullptr;
+ if (aPseudoType == CSSPseudoElementType::after) {
+ return nsLayoutUtils::GetAfterPseudo(aElement);
}
- return pseudoFrame->GetContent()->AsElement();
+
+ NS_NOTREACHED("Should not try to get the element to restyle for a pseudo "
+ "other that :before or :after");
+ return nullptr;
}
bool
diff --git a/dom/animation/EffectCompositor.h b/dom/animation/EffectCompositor.h
index 732fbb333..941026476 100644
--- a/dom/animation/EffectCompositor.h
+++ b/dom/animation/EffectCompositor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/EffectSet.cpp b/dom/animation/EffectSet.cpp
index ffd3bb523..55dbe353b 100644
--- a/dom/animation/EffectSet.cpp
+++ b/dom/animation/EffectSet.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/EffectSet.h b/dom/animation/EffectSet.h
index 9ba31ef91..2e0f01f1a 100644
--- a/dom/animation/EffectSet.h
+++ b/dom/animation/EffectSet.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/KeyframeEffect.cpp b/dom/animation/KeyframeEffect.cpp
index 32f6bd1a1..090c7019d 100644
--- a/dom/animation/KeyframeEffect.cpp
+++ b/dom/animation/KeyframeEffect.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -11,6 +10,7 @@
#include "mozilla/dom/AnimationEffectTiming.h"
#include "mozilla/dom/KeyframeEffectBinding.h"
#include "mozilla/KeyframeUtils.h"
+#include "mozilla/Preferences.h"
#include "nsContentUtils.h"
#include "nsDOMMutationObserver.h" // For nsAutoAnimationMutationBatch
#include "nsIScriptError.h"
@@ -136,9 +136,9 @@ void
KeyframeEffect::SetIterationComposite(
const IterationCompositeOperation& aIterationComposite)
{
- // Ignore iterationComposite if the Web Animations API is not enabled,
+ // Ignore iterationComposite if the API is not enabled,
// then the default value 'Replace' will be used.
- if (!AnimationUtils::IsCoreAPIEnabledForCaller()) {
+ if (!Preferences::GetBool("dom.animations-api.compositing.enabled")) {
return;
}
diff --git a/dom/animation/KeyframeEffect.h b/dom/animation/KeyframeEffect.h
index 3c704a820..6484d356c 100644
--- a/dom/animation/KeyframeEffect.h
+++ b/dom/animation/KeyframeEffect.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/KeyframeEffectParams.cpp b/dom/animation/KeyframeEffectParams.cpp
index 257640691..015ab18b4 100644
--- a/dom/animation/KeyframeEffectParams.cpp
+++ b/dom/animation/KeyframeEffectParams.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/KeyframeEffectParams.h b/dom/animation/KeyframeEffectParams.h
index 92a284eae..3d026c8e8 100644
--- a/dom/animation/KeyframeEffectParams.h
+++ b/dom/animation/KeyframeEffectParams.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/KeyframeEffectReadOnly.cpp b/dom/animation/KeyframeEffectReadOnly.cpp
index 95f657449..2efc747f0 100644
--- a/dom/animation/KeyframeEffectReadOnly.cpp
+++ b/dom/animation/KeyframeEffectReadOnly.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -1090,7 +1089,7 @@ KeyframeEffectReadOnly::CanThrottleTransformChanges(nsIFrame& aFrame) const
return true;
}
- ScrollbarStyles ss = scrollable->GetScrollbarStyles();
+ ScrollStyles ss = scrollable->GetScrollStyles();
if (ss.mVertical == NS_STYLE_OVERFLOW_HIDDEN &&
ss.mHorizontal == NS_STYLE_OVERFLOW_HIDDEN &&
scrollable->GetLogicalScrollPosition() == nsPoint(0, 0)) {
@@ -1107,19 +1106,17 @@ KeyframeEffectReadOnly::GetAnimationFrame() const
return nullptr;
}
- nsIFrame* frame = mTarget->mElement->GetPrimaryFrame();
- if (!frame) {
- return nullptr;
- }
-
+ nsIFrame* frame;
if (mTarget->mPseudoType == CSSPseudoElementType::before) {
- frame = nsLayoutUtils::GetBeforeFrame(frame);
+ frame = nsLayoutUtils::GetBeforeFrame(mTarget->mElement);
} else if (mTarget->mPseudoType == CSSPseudoElementType::after) {
- frame = nsLayoutUtils::GetAfterFrame(frame);
+ frame = nsLayoutUtils::GetAfterFrame(mTarget->mElement);
} else {
+ frame = mTarget->mElement->GetPrimaryFrame();
MOZ_ASSERT(mTarget->mPseudoType == CSSPseudoElementType::NotPseudo,
"unknown mTarget->mPseudoType");
}
+
if (!frame) {
return nullptr;
}
diff --git a/dom/animation/KeyframeEffectReadOnly.h b/dom/animation/KeyframeEffectReadOnly.h
index 889159b38..5d8d12d86 100644
--- a/dom/animation/KeyframeEffectReadOnly.h
+++ b/dom/animation/KeyframeEffectReadOnly.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/KeyframeUtils.cpp b/dom/animation/KeyframeUtils.cpp
index 8e396f84c..540f892d5 100644
--- a/dom/animation/KeyframeUtils.cpp
+++ b/dom/animation/KeyframeUtils.cpp
@@ -1,4 +1,3 @@
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -8,6 +7,7 @@
#include "mozilla/AnimationUtils.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/Move.h"
+#include "mozilla/Preferences.h"
#include "mozilla/RangedArray.h"
#include "mozilla/ServoBindings.h"
#include "mozilla/StyleAnimationValue.h"
@@ -22,6 +22,7 @@
#include "nsCSSPropertyIDSet.h"
#include "nsCSSProps.h"
#include "nsCSSPseudoElements.h" // For CSSPseudoElementType
+#include "nsDocument.h"
#include "nsTArray.h"
#include <algorithm> // For std::stable_sort
@@ -401,7 +402,7 @@ GetKeyframeListFromPropertyIndexedKeyframe(JSContext* aCx,
ErrorResult& aRv);
static bool
-RequiresAdditiveAnimation(const nsTArray<Keyframe>& aKeyframes,
+HasImplicitKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
nsIDocument* aDocument);
static void
@@ -468,11 +469,13 @@ KeyframeUtils::GetKeyframesFromObject(JSContext* aCx,
// says that if you don't have a keyframe at offset 0 or 1, then you should
// synthesize one using an additive zero value when you go to compose style.
// Until we implement additive animations we just throw if we encounter any
- // set of keyframes that would put us in that situation.
+ // set of keyframes that would put us in that situation and keyframes aren't
+ // explicitly force-enabled.
- if (RequiresAdditiveAnimation(keyframes, aDocument)) {
- aRv.Throw(NS_ERROR_DOM_ANIM_MISSING_PROPS_ERR);
+ if (!nsDocument::AreWebAnimationsImplicitKeyframesEnabled(aCx, nullptr) &&
+ HasImplicitKeyframeValues(keyframes, aDocument)) {
keyframes.Clear();
+ aRv.Throw(NS_ERROR_DOM_ANIM_MISSING_PROPS_ERR);
}
return keyframes;
@@ -1331,10 +1334,16 @@ GetKeyframeListFromPropertyIndexedKeyframe(JSContext* aCx,
// No animation values for this property.
continue;
}
- if (count == 1) {
- // We don't support additive values and so can't support an
- // animation that goes from the underlying value to this
- // specified value. Throw an exception until we do support this.
+ if (!Preferences::GetBool("dom.animations-api.implicit-keyframes.enabled") &&
+ count == 1) {
+ // We don't support implicit keyframes by preference.
+ aRv.Throw(NS_ERROR_DOM_ANIM_MISSING_PROPS_ERR);
+ return;
+ } else if (count == 1) {
+ // Implicit keyframes isn't implemented yet and so we can't
+ // support an animation that goes from the underlying value
+ // to this specified value.
+ // Throw an exception until we do support this.
aRv.Throw(NS_ERROR_DOM_ANIM_MISSING_PROPS_ERR);
return;
}
@@ -1375,7 +1384,7 @@ GetKeyframeListFromPropertyIndexedKeyframe(JSContext* aCx,
* try to detect where we have an invalid value at 0%/100%.
*/
static bool
-RequiresAdditiveAnimation(const nsTArray<Keyframe>& aKeyframes,
+HasImplicitKeyframeValues(const nsTArray<Keyframe>& aKeyframes,
nsIDocument* aDocument)
{
// We are looking to see if that every property referenced in |aKeyframes|
@@ -1386,7 +1395,7 @@ RequiresAdditiveAnimation(const nsTArray<Keyframe>& aKeyframes,
// a document which we might not always have at the point where we want to
// perform this check.
//
- // This is only a temporary measure until we implement additive animation.
+ // This is only a temporary measure until we implement implicit keyframes.
// So as long as this check catches most cases, and we don't do anything
// horrible in one of the cases we can't detect, it should be sufficient.
diff --git a/dom/animation/KeyframeUtils.h b/dom/animation/KeyframeUtils.h
index dbaed97f5..6ff1250c0 100644
--- a/dom/animation/KeyframeUtils.h
+++ b/dom/animation/KeyframeUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/PendingAnimationTracker.cpp b/dom/animation/PendingAnimationTracker.cpp
index a97814a7c..174655564 100644
--- a/dom/animation/PendingAnimationTracker.cpp
+++ b/dom/animation/PendingAnimationTracker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/PendingAnimationTracker.h b/dom/animation/PendingAnimationTracker.h
index 8d638c73f..0a7272fa8 100644
--- a/dom/animation/PendingAnimationTracker.h
+++ b/dom/animation/PendingAnimationTracker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/PseudoElementHashEntry.h b/dom/animation/PseudoElementHashEntry.h
index 63f9c60c8..759c5ff30 100644
--- a/dom/animation/PseudoElementHashEntry.h
+++ b/dom/animation/PseudoElementHashEntry.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/TimingParams.cpp b/dom/animation/TimingParams.cpp
index db61c8447..f387f460f 100644
--- a/dom/animation/TimingParams.cpp
+++ b/dom/animation/TimingParams.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/TimingParams.h b/dom/animation/TimingParams.h
index bfecee90c..78277a703 100644
--- a/dom/animation/TimingParams.h
+++ b/dom/animation/TimingParams.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/animation/moz.build b/dom/animation/moz.build
index 356980f00..f09314fb4 100644
--- a/dom/animation/moz.build
+++ b/dom/animation/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/animation/test/crashtests/crashtests.list b/dom/animation/test/crashtests/crashtests.list
index f61d7f876..29b18769a 100644
--- a/dom/animation/test/crashtests/crashtests.list
+++ b/dom/animation/test/crashtests/crashtests.list
@@ -1,13 +1,13 @@
pref(dom.animations-api.core.enabled,true) load 1239889-1.html
pref(dom.animations-api.core.enabled,true) load 1244595-1.html
-pref(dom.animations-api.core.enabled,true) load 1216842-1.html
-pref(dom.animations-api.core.enabled,true) load 1216842-2.html
-pref(dom.animations-api.core.enabled,true) load 1216842-3.html
-pref(dom.animations-api.core.enabled,true) load 1216842-4.html
-pref(dom.animations-api.core.enabled,true) load 1216842-5.html
-pref(dom.animations-api.core.enabled,true) load 1216842-6.html
+pref(dom.animations-api.core.enabled,true) pref(dom.animations-api.timelines.enabled,true) load 1216842-1.html
+pref(dom.animations-api.core.enabled,true) pref(dom.animations-api.timelines.enabled,true) load 1216842-2.html
+pref(dom.animations-api.core.enabled,true) pref(dom.animations-api.timelines.enabled,true) load 1216842-3.html
+pref(dom.animations-api.core.enabled,true) pref(dom.animations-api.timelines.enabled,true) load 1216842-4.html
+pref(dom.animations-api.core.enabled,true) pref(dom.animations-api.timelines.enabled,true) load 1216842-5.html
+pref(dom.animations-api.core.enabled,true) pref(dom.animations-api.timelines.enabled,true) load 1216842-6.html
pref(dom.animations-api.core.enabled,true) load 1272475-1.html
pref(dom.animations-api.core.enabled,true) load 1272475-2.html
pref(dom.animations-api.core.enabled,true) load 1278485-1.html
-pref(dom.animations-api.core.enabled,true) load 1277272-1.html
+pref(dom.animations-api.core.enabled,true) pref(dom.animations-api.timelines.enabled,true) load 1277272-1.html
pref(dom.animations-api.core.enabled,true) load 1290535-1.html
diff --git a/dom/animation/test/mochitest.ini b/dom/animation/test/mochitest.ini
index db6dffada..ecdb674fe 100644
--- a/dom/animation/test/mochitest.ini
+++ b/dom/animation/test/mochitest.ini
@@ -1,4 +1,10 @@
[DEFAULT]
+prefs =
+ dom.animations-api.compositing.enabled=true
+ dom.animations-api.core.enabled=true
+ dom.animations-api.getAnimations.enabled=true
+ dom.animations-api.implicit-keyframes.enabled=true
+ dom.animations-api.timelines.enabled=true
# Support files for chrome tests that we want to load over HTTP need
# to go in here, not chrome.ini.
support-files =
diff --git a/dom/apps/moz.build b/dom/apps/moz.build
index c8dc90335..f3b34a024 100644
--- a/dom/apps/moz.build
+++ b/dom/apps/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/archivereader/ArchiveEvent.cpp b/dom/archivereader/ArchiveEvent.cpp
index b1b3dcd82..b0b3f56e4 100644
--- a/dom/archivereader/ArchiveEvent.cpp
+++ b/dom/archivereader/ArchiveEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/ArchiveEvent.h b/dom/archivereader/ArchiveEvent.h
index 92ac2774d..3d1dfbbdc 100644
--- a/dom/archivereader/ArchiveEvent.h
+++ b/dom/archivereader/ArchiveEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/ArchiveReader.cpp b/dom/archivereader/ArchiveReader.cpp
index f6985d989..ea9447551 100644
--- a/dom/archivereader/ArchiveReader.cpp
+++ b/dom/archivereader/ArchiveReader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/ArchiveReader.h b/dom/archivereader/ArchiveReader.h
index 687392e56..f85102f15 100644
--- a/dom/archivereader/ArchiveReader.h
+++ b/dom/archivereader/ArchiveReader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/ArchiveReaderCommon.h b/dom/archivereader/ArchiveReaderCommon.h
index ab40c3bef..6b3d0d763 100644
--- a/dom/archivereader/ArchiveReaderCommon.h
+++ b/dom/archivereader/ArchiveReaderCommon.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/ArchiveRequest.cpp b/dom/archivereader/ArchiveRequest.cpp
index 8505f0e1f..36183155a 100644
--- a/dom/archivereader/ArchiveRequest.cpp
+++ b/dom/archivereader/ArchiveRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -71,10 +70,10 @@ ArchiveRequest::~ArchiveRequest()
}
nsresult
-ArchiveRequest::PreHandleEvent(EventChainPreVisitor& aVisitor)
+ArchiveRequest::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
- aVisitor.mParentTarget = nullptr;
+ aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
}
diff --git a/dom/archivereader/ArchiveRequest.h b/dom/archivereader/ArchiveRequest.h
index 3988f1aa1..a064dbb60 100644
--- a/dom/archivereader/ArchiveRequest.h
+++ b/dom/archivereader/ArchiveRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -38,7 +37,8 @@ public:
ArchiveReader* aReader);
// nsIDOMEventTarget
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
public:
// This is called by the DOMArchiveRequestEvent
diff --git a/dom/archivereader/ArchiveZipEvent.cpp b/dom/archivereader/ArchiveZipEvent.cpp
index 56251eef6..f0b5b2721 100644
--- a/dom/archivereader/ArchiveZipEvent.cpp
+++ b/dom/archivereader/ArchiveZipEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/ArchiveZipEvent.h b/dom/archivereader/ArchiveZipEvent.h
index 2c25740f3..0f469e926 100644
--- a/dom/archivereader/ArchiveZipEvent.h
+++ b/dom/archivereader/ArchiveZipEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/ArchiveZipFile.cpp b/dom/archivereader/ArchiveZipFile.cpp
index e1716f348..871393c6a 100644
--- a/dom/archivereader/ArchiveZipFile.cpp
+++ b/dom/archivereader/ArchiveZipFile.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/ArchiveZipFile.h b/dom/archivereader/ArchiveZipFile.h
index d1196486c..55bede552 100644
--- a/dom/archivereader/ArchiveZipFile.h
+++ b/dom/archivereader/ArchiveZipFile.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/archivereader/moz.build b/dom/archivereader/moz.build
index a5d853c91..16eeeadbf 100644
--- a/dom/archivereader/moz.build
+++ b/dom/archivereader/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/asmjscache/AsmJSCache.cpp b/dom/asmjscache/AsmJSCache.cpp
index be54987a1..16faebc1d 100644
--- a/dom/asmjscache/AsmJSCache.cpp
+++ b/dom/asmjscache/AsmJSCache.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/asmjscache/AsmJSCache.h b/dom/asmjscache/AsmJSCache.h
index 92bb7780a..45ef1f2b5 100644
--- a/dom/asmjscache/AsmJSCache.h
+++ b/dom/asmjscache/AsmJSCache.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/asmjscache/moz.build b/dom/asmjscache/moz.build
index abb0b82fb..7f035ea2c 100644
--- a/dom/asmjscache/moz.build
+++ b/dom/asmjscache/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/audiochannel/AudioChannelAgent.cpp b/dom/audiochannel/AudioChannelAgent.cpp
index 700ecc378..f7ba8fa29 100644
--- a/dom/audiochannel/AudioChannelAgent.cpp
+++ b/dom/audiochannel/AudioChannelAgent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/audiochannel/AudioChannelAgent.h b/dom/audiochannel/AudioChannelAgent.h
index f7e776d85..8bd612c67 100644
--- a/dom/audiochannel/AudioChannelAgent.h
+++ b/dom/audiochannel/AudioChannelAgent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/audiochannel/AudioChannelService.cpp b/dom/audiochannel/AudioChannelService.cpp
index db6f2037b..ca06fa1e3 100644
--- a/dom/audiochannel/AudioChannelService.cpp
+++ b/dom/audiochannel/AudioChannelService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/audiochannel/AudioChannelService.h b/dom/audiochannel/AudioChannelService.h
index 7d3de8a46..d948ee0cd 100644
--- a/dom/audiochannel/AudioChannelService.h
+++ b/dom/audiochannel/AudioChannelService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/audiochannel/moz.build b/dom/audiochannel/moz.build
index 547cce24a..9b3d85b02 100644
--- a/dom/audiochannel/moz.build
+++ b/dom/audiochannel/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/base/AnonymousContent.cpp b/dom/base/AnonymousContent.cpp
index 1df36b048..ffb759797 100644
--- a/dom/base/AnonymousContent.cpp
+++ b/dom/base/AnonymousContent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -7,6 +6,7 @@
#include "AnonymousContent.h"
#include "mozilla/dom/Element.h"
#include "mozilla/dom/AnonymousContentBinding.h"
+#include "nsComputedDOMStyle.h"
#include "nsCycleCollectionParticipant.h"
#include "nsIDocument.h"
#include "nsIDOMHTMLCollection.h"
@@ -208,5 +208,31 @@ AnonymousContent::WrapObject(JSContext* aCx,
return AnonymousContentBinding::Wrap(aCx, this, aGivenProto, aReflector);
}
+void
+AnonymousContent::GetComputedStylePropertyValue(const nsAString& aElementId,
+ const nsAString& aPropertyName,
+ DOMString& aResult,
+ ErrorResult& aRv)
+{
+ Element* element = GetElementById(aElementId);
+ if (!element) {
+ aRv.Throw(NS_ERROR_NOT_AVAILABLE);
+ return;
+ }
+
+ nsIPresShell* shell = element->OwnerDoc()->GetShell();
+ if (!shell) {
+ aRv.Throw(NS_ERROR_NOT_AVAILABLE);
+ return;
+ }
+
+ RefPtr<nsComputedDOMStyle> cs =
+ new nsComputedDOMStyle(element,
+ NS_LITERAL_STRING(""),
+ element->OwnerDoc(),
+ nsComputedDOMStyle::eAll);
+ aRv = cs->GetPropertyValue(aPropertyName, aResult);
+}
+
} // namespace dom
} // namespace mozilla
diff --git a/dom/base/AnonymousContent.h b/dom/base/AnonymousContent.h
index fd3b59c44..c1c2b189b 100644
--- a/dom/base/AnonymousContent.h
+++ b/dom/base/AnonymousContent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -68,6 +67,11 @@ public:
const Sequence<OwningNonNull<DOMRect>>& aRects,
ErrorResult& aError);
+ void GetComputedStylePropertyValue(const nsAString& aElementId,
+ const nsAString& aPropertyName,
+ DOMString& aResult,
+ ErrorResult& aRv);
+
private:
~AnonymousContent();
nsCOMPtr<Element> mContentNode;
diff --git a/dom/base/Attr.cpp b/dom/base/Attr.cpp
index 71b559392..91e9c1db2 100644
--- a/dom/base/Attr.cpp
+++ b/dom/base/Attr.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -344,7 +343,7 @@ Attr::RemoveChildAt(uint32_t aIndex, bool aNotify)
}
nsresult
-Attr::PreHandleEvent(EventChainPreVisitor& aVisitor)
+Attr::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
return NS_OK;
diff --git a/dom/base/Attr.h b/dom/base/Attr.h
index 3f80030d2..154a83102 100644
--- a/dom/base/Attr.h
+++ b/dom/base/Attr.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -54,7 +53,7 @@ public:
// nsIDOMAttr interface
NS_DECL_NSIDOMATTR
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// nsIAttribute interface
void SetMap(nsDOMAttributeMap *aMap) override;
diff --git a/dom/base/AutocompleteFieldList.h b/dom/base/AutocompleteFieldList.h
index a258d2213..9b99608c9 100644
--- a/dom/base/AutocompleteFieldList.h
+++ b/dom/base/AutocompleteFieldList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/BarProps.cpp b/dom/base/BarProps.cpp
index 891257d5d..61dfd8d0b 100644
--- a/dom/base/BarProps.cpp
+++ b/dom/base/BarProps.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/BarProps.h b/dom/base/BarProps.h
index bc75775a4..5d2c08700 100644
--- a/dom/base/BarProps.h
+++ b/dom/base/BarProps.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/BlobSet.cpp b/dom/base/BlobSet.cpp
index f13d412fc..1a3453312 100644
--- a/dom/base/BlobSet.cpp
+++ b/dom/base/BlobSet.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/BlobSet.h b/dom/base/BlobSet.h
index bf98cb023..1fe299279 100644
--- a/dom/base/BlobSet.h
+++ b/dom/base/BlobSet.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/BorrowedAttrInfo.cpp b/dom/base/BorrowedAttrInfo.cpp
index ab6a3543b..11aa07508 100644
--- a/dom/base/BorrowedAttrInfo.cpp
+++ b/dom/base/BorrowedAttrInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/BorrowedAttrInfo.h b/dom/base/BorrowedAttrInfo.h
index 8efb02d25..f7341f073 100644
--- a/dom/base/BorrowedAttrInfo.h
+++ b/dom/base/BorrowedAttrInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/CORSMode.h b/dom/base/CORSMode.h
index 577e78725..e62b2cf81 100644
--- a/dom/base/CORSMode.h
+++ b/dom/base/CORSMode.h
@@ -1,14 +1,13 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 <stdint.h>
+
#ifndef CORSMode_h_
#define CORSMode_h_
-#include <stdint.h>
-
namespace mozilla {
enum CORSMode : uint8_t {
diff --git a/dom/base/ChildIterator.cpp b/dom/base/ChildIterator.cpp
index d8c454ae8..829077c83 100644
--- a/dom/base/ChildIterator.cpp
+++ b/dom/base/ChildIterator.cpp
@@ -1,66 +1,31 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 "ChildIterator.h"
#include "nsContentUtils.h"
+#include "mozilla/dom/HTMLSlotElement.h"
#include "mozilla/dom/XBLChildrenElement.h"
-#include "mozilla/dom/HTMLContentElement.h"
-#include "mozilla/dom/HTMLShadowElement.h"
#include "mozilla/dom/ShadowRoot.h"
#include "nsIAnonymousContentCreator.h"
#include "nsIFrame.h"
#include "nsCSSAnonBoxes.h"
+#include "nsDocument.h"
namespace mozilla {
namespace dom {
-class MatchedNodes {
-public:
- explicit MatchedNodes(HTMLContentElement* aInsertionPoint)
- : mIsContentElement(true), mContentElement(aInsertionPoint) {}
-
- explicit MatchedNodes(XBLChildrenElement* aInsertionPoint)
- : mIsContentElement(false), mChildrenElement(aInsertionPoint) {}
-
- uint32_t Length() const
- {
- return mIsContentElement ? mContentElement->MatchedNodes().Length()
- : mChildrenElement->InsertedChildrenLength();
- }
-
- nsIContent* operator[](int32_t aIndex) const
- {
- return mIsContentElement ? mContentElement->MatchedNodes()[aIndex]
- : mChildrenElement->InsertedChild(aIndex);
- }
-
- bool IsEmpty() const
- {
- return mIsContentElement ? mContentElement->MatchedNodes().IsEmpty()
- : !mChildrenElement->HasInsertedChildren();
- }
-protected:
- bool mIsContentElement;
- union {
- HTMLContentElement* mContentElement;
- XBLChildrenElement* mChildrenElement;
- };
-};
-
-static inline MatchedNodes
-GetMatchedNodesForPoint(nsIContent* aContent)
+ExplicitChildIterator::ExplicitChildIterator(const nsIContent* aParent,
+ bool aStartAtBeginning)
+ : mParent(aParent),
+ mChild(nullptr),
+ mDefaultChild(nullptr),
+ mIsFirst(aStartAtBeginning),
+ mIndexInInserted(0)
{
- if (aContent->NodeInfo()->Equals(nsGkAtoms::children, kNameSpaceID_XBL)) {
- // XBL case
- return MatchedNodes(static_cast<XBLChildrenElement*>(aContent));
- }
-
- // Web components case
- MOZ_ASSERT(aContent->IsHTMLElement(nsGkAtoms::content));
- return MatchedNodes(HTMLContentElement::FromContent(aContent));
+ mParentAsSlot = nsDocument::IsWebComponentsEnabled(mParent) ?
+ HTMLSlotElement::FromContent(mParent) : nullptr;
}
nsIContent*
@@ -69,30 +34,29 @@ ExplicitChildIterator::GetNextChild()
// If we're already in the inserted-children array, look there first
if (mIndexInInserted) {
MOZ_ASSERT(mChild);
- MOZ_ASSERT(nsContentUtils::IsContentInsertionPoint(mChild));
MOZ_ASSERT(!mDefaultChild);
- MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild);
- if (mIndexInInserted < assignedChildren.Length()) {
- return assignedChildren[mIndexInInserted++];
- }
- mIndexInInserted = 0;
- mChild = mChild->GetNextSibling();
- } else if (mShadowIterator) {
- // If we're inside of a <shadow> element, look through the
- // explicit children of the projected ShadowRoot via
- // the mShadowIterator.
- nsIContent* nextChild = mShadowIterator->GetNextChild();
- if (nextChild) {
- return nextChild;
+ if (mParentAsSlot) {
+ const nsTArray<RefPtr<nsINode>>& assignedNodes =
+ mParentAsSlot->AssignedNodes();
+
+ mChild = (mIndexInInserted < assignedNodes.Length()) ?
+ assignedNodes[mIndexInInserted++]->AsContent() : nullptr;
+ return mChild;
}
- mShadowIterator = nullptr;
+ MOZ_ASSERT(mChild->IsActiveChildrenElement());
+ auto* childrenElement =
+ static_cast<XBLChildrenElement*>(mChild);
+ if (mIndexInInserted < childrenElement->InsertedChildrenLength()) {
+ return childrenElement->InsertedChild(mIndexInInserted++);
+ }
+ mIndexInInserted = 0;
mChild = mChild->GetNextSibling();
} else if (mDefaultChild) {
// If we're already in default content, check if there are more nodes there
MOZ_ASSERT(mChild);
- MOZ_ASSERT(nsContentUtils::IsContentInsertionPoint(mChild));
+ MOZ_ASSERT(mChild->IsActiveChildrenElement());
mDefaultChild = mDefaultChild->GetNextSibling();
if (mDefaultChild) {
@@ -101,6 +65,19 @@ ExplicitChildIterator::GetNextChild()
mChild = mChild->GetNextSibling();
} else if (mIsFirst) { // at the beginning of the child list
+ // For slot parent, iterate over assigned nodes if not empty, otherwise
+ // fall through and iterate over direct children (fallback content).
+ if (mParentAsSlot) {
+ const nsTArray<RefPtr<nsINode>>& assignedNodes =
+ mParentAsSlot->AssignedNodes();
+ if (!assignedNodes.IsEmpty()) {
+ mIndexInInserted = 1;
+ mChild = assignedNodes[0]->AsContent();
+ mIsFirst = false;
+ return mChild;
+ }
+ }
+
mChild = mParent->GetFirstChild();
mIsFirst = false;
} else if (mChild) { // in the middle of the child list
@@ -110,31 +87,16 @@ ExplicitChildIterator::GetNextChild()
// Iterate until we find a non-insertion point, or an insertion point with
// content.
while (mChild) {
- // If the current child being iterated is a shadow insertion point then
- // the iterator needs to go into the projected ShadowRoot.
- if (ShadowRoot::IsShadowInsertionPoint(mChild)) {
- // Look for the next child in the projected ShadowRoot for the <shadow>
- // element.
- HTMLShadowElement* shadowElem = HTMLShadowElement::FromContent(mChild);
- ShadowRoot* projectedShadow = shadowElem->GetOlderShadowRoot();
- if (projectedShadow) {
- mShadowIterator = new ExplicitChildIterator(projectedShadow);
- nsIContent* nextChild = mShadowIterator->GetNextChild();
- if (nextChild) {
- return nextChild;
- }
- mShadowIterator = nullptr;
- }
- mChild = mChild->GetNextSibling();
- } else if (nsContentUtils::IsContentInsertionPoint(mChild)) {
+ if (mChild->IsActiveChildrenElement()) {
// If the current child being iterated is a content insertion point
// then the iterator needs to return the nodes distributed into
// the content insertion point.
- MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild);
- if (!assignedChildren.IsEmpty()) {
+ auto* childrenElement =
+ static_cast<XBLChildrenElement*>(mChild);
+ if (childrenElement->HasInsertedChildren()) {
// Iterate through elements projected on insertion point.
mIndexInInserted = 1;
- return assignedChildren[0];
+ return childrenElement->InsertedChild(0);
}
// Insertion points inside fallback/default content
@@ -192,19 +154,17 @@ FlattenedChildIterator::Init(bool aIgnoreXBL)
}
bool
-ExplicitChildIterator::Seek(nsIContent* aChildToFind)
+ExplicitChildIterator::Seek(const nsIContent* aChildToFind)
{
if (aChildToFind->GetParent() == mParent &&
!aChildToFind->IsRootOfAnonymousSubtree()) {
// Fast path: just point ourselves to aChildToFind, which is a
// normal DOM child of ours.
- MOZ_ASSERT(!ShadowRoot::IsShadowInsertionPoint(aChildToFind));
- MOZ_ASSERT(!nsContentUtils::IsContentInsertionPoint(aChildToFind));
- mChild = aChildToFind;
+ mChild = const_cast<nsIContent*>(aChildToFind);
mIndexInInserted = 0;
- mShadowIterator = nullptr;
mDefaultChild = nullptr;
mIsFirst = false;
+ MOZ_ASSERT(!mChild->IsActiveChildrenElement());
return true;
}
@@ -220,12 +180,18 @@ ExplicitChildIterator::Get() const
{
MOZ_ASSERT(!mIsFirst);
+ // When mParentAsSlot is set, mChild is always set to the current child. It
+ // does not matter whether mChild is an assigned node or a fallback content.
+ if (mParentAsSlot) {
+ return mChild;
+ }
+
if (mIndexInInserted) {
- MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild);
- return assignedChildren[mIndexInInserted - 1];
- } else if (mShadowIterator) {
- return mShadowIterator->Get();
+ MOZ_ASSERT(mChild->IsActiveChildrenElement());
+ auto* childrenElement = static_cast<XBLChildrenElement*>(mChild);
+ return childrenElement->InsertedChild(mIndexInInserted - 1);
}
+
return mDefaultChild ? mDefaultChild : mChild;
}
@@ -234,20 +200,28 @@ ExplicitChildIterator::GetPreviousChild()
{
// If we're already in the inserted-children array, look there first
if (mIndexInInserted) {
+
+ if (mParentAsSlot) {
+ const nsTArray<RefPtr<nsINode>>& assignedNodes =
+ mParentAsSlot->AssignedNodes();
+
+ mChild = (--mIndexInInserted) ?
+ assignedNodes[mIndexInInserted - 1]->AsContent() : nullptr;
+
+ if (!mChild) {
+ mIsFirst = true;
+ }
+ return mChild;
+ }
+
// NB: mIndexInInserted points one past the last returned child so we need
// to look *two* indices back in order to return the previous child.
- MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild);
+ MOZ_ASSERT(mChild->IsActiveChildrenElement());
+ auto* childrenElement = static_cast<XBLChildrenElement*>(mChild);
if (--mIndexInInserted) {
- return assignedChildren[mIndexInInserted - 1];
+ return childrenElement->InsertedChild(mIndexInInserted - 1);
}
mChild = mChild->GetPreviousSibling();
- } else if (mShadowIterator) {
- nsIContent* previousChild = mShadowIterator->GetPreviousChild();
- if (previousChild) {
- return previousChild;
- }
- mShadowIterator = nullptr;
- mChild = mChild->GetPreviousSibling();
} else if (mDefaultChild) {
// If we're already in default content, check if there are more nodes there
mDefaultChild = mDefaultChild->GetPreviousSibling();
@@ -261,35 +235,32 @@ ExplicitChildIterator::GetPreviousChild()
} else if (mChild) { // in the middle of the child list
mChild = mChild->GetPreviousSibling();
} else { // at the end of the child list
+ // For slot parent, iterate over assigned nodes if not empty, otherwise
+ // fall through and iterate over direct children (fallback content).
+ if (mParentAsSlot) {
+ const nsTArray<RefPtr<nsINode>>& assignedNodes =
+ mParentAsSlot->AssignedNodes();
+ if (!assignedNodes.IsEmpty()) {
+ mIndexInInserted = assignedNodes.Length();
+ mChild = assignedNodes[mIndexInInserted - 1]->AsContent();
+ return mChild;
+ }
+ }
+
mChild = mParent->GetLastChild();
}
// Iterate until we find a non-insertion point, or an insertion point with
// content.
while (mChild) {
- if (ShadowRoot::IsShadowInsertionPoint(mChild)) {
- // If the current child being iterated is a shadow insertion point then
- // the iterator needs to go into the projected ShadowRoot.
- HTMLShadowElement* shadowElem = HTMLShadowElement::FromContent(mChild);
- ShadowRoot* projectedShadow = shadowElem->GetOlderShadowRoot();
- if (projectedShadow) {
- // Create a ExplicitChildIterator that begins iterating from the end.
- mShadowIterator = new ExplicitChildIterator(projectedShadow, false);
- nsIContent* previousChild = mShadowIterator->GetPreviousChild();
- if (previousChild) {
- return previousChild;
- }
- mShadowIterator = nullptr;
- }
- mChild = mChild->GetPreviousSibling();
- } else if (nsContentUtils::IsContentInsertionPoint(mChild)) {
+ if (mChild->IsActiveChildrenElement()) {
// If the current child being iterated is a content insertion point
// then the iterator needs to return the nodes distributed into
// the content insertion point.
- MatchedNodes assignedChildren = GetMatchedNodesForPoint(mChild);
- if (!assignedChildren.IsEmpty()) {
- mIndexInInserted = assignedChildren.Length();
- return assignedChildren[mIndexInInserted - 1];
+ auto* childrenElement = static_cast<XBLChildrenElement*>(mChild);
+ if (childrenElement->HasInsertedChildren()) {
+ mIndexInInserted = childrenElement->InsertedChildrenLength();
+ return childrenElement->InsertedChild(mIndexInInserted - 1);
}
mDefaultChild = mChild->GetLastChild();
@@ -317,11 +288,9 @@ AllChildrenIterator::Get() const
{
switch (mPhase) {
case eAtBeforeKid: {
- nsIFrame* frame = mOriginalContent->GetPrimaryFrame();
- MOZ_ASSERT(frame, "No frame at eAtBeforeKid phase");
- nsIFrame* beforeFrame = nsLayoutUtils::GetBeforeFrame(frame);
- MOZ_ASSERT(beforeFrame, "No content before frame at eAtBeforeKid phase");
- return beforeFrame->GetContent();
+ Element* before = nsLayoutUtils::GetBeforePseudo(mOriginalContent);
+ MOZ_ASSERT(before, "No content before frame at eAtBeforeKid phase");
+ return before;
}
case eAtExplicitKids:
@@ -331,11 +300,9 @@ AllChildrenIterator::Get() const
return mAnonKids[mAnonKidsIdx];
case eAtAfterKid: {
- nsIFrame* frame = mOriginalContent->GetPrimaryFrame();
- MOZ_ASSERT(frame, "No frame at eAtAfterKid phase");
- nsIFrame* afterFrame = nsLayoutUtils::GetAfterFrame(frame);
- MOZ_ASSERT(afterFrame, "No content before frame at eAtBeforeKid phase");
- return afterFrame->GetContent();
+ Element* after = nsLayoutUtils::GetAfterPseudo(mOriginalContent);
+ MOZ_ASSERT(after, "No content after frame at eAtAfterKid phase");
+ return after;
}
default:
@@ -345,19 +312,14 @@ AllChildrenIterator::Get() const
bool
-AllChildrenIterator::Seek(nsIContent* aChildToFind)
+AllChildrenIterator::Seek(const nsIContent* aChildToFind)
{
if (mPhase == eAtBegin || mPhase == eAtBeforeKid) {
mPhase = eAtExplicitKids;
- nsIFrame* frame = mOriginalContent->GetPrimaryFrame();
- if (frame) {
- nsIFrame* beforeFrame = nsLayoutUtils::GetBeforeFrame(frame);
- if (beforeFrame) {
- if (beforeFrame->GetContent() == aChildToFind) {
- mPhase = eAtBeforeKid;
- return true;
- }
- }
+ Element* beforePseudo = nsLayoutUtils::GetBeforePseudo(mOriginalContent);
+ if (beforePseudo && beforePseudo == aChildToFind) {
+ mPhase = eAtBeforeKid;
+ return true;
}
}
@@ -383,12 +345,10 @@ AllChildrenIterator::AppendNativeAnonymousChildren()
// The root scroll frame is not the primary frame of the root element.
// Detect and handle this case.
- if (mOriginalContent == mOriginalContent->OwnerDoc()->GetRootElement()) {
- nsIPresShell* presShell = mOriginalContent->OwnerDoc()->GetShell();
- nsIFrame* scrollFrame = presShell ? presShell->GetRootScrollFrame() : nullptr;
- if (scrollFrame) {
- AppendNativeAnonymousChildrenFromFrame(scrollFrame);
- }
+ if (!(mFlags & nsIContent::eSkipDocumentLevelNativeAnonymousContent) &&
+ mOriginalContent == mOriginalContent->OwnerDoc()->GetRootElement()) {
+ nsContentUtils::AppendDocumentLevelNativeAnonymousContentTo(
+ mOriginalContent->OwnerDoc(), mAnonKids);
}
}
@@ -406,13 +366,10 @@ AllChildrenIterator::GetNextChild()
{
if (mPhase == eAtBegin) {
mPhase = eAtExplicitKids;
- nsIFrame* frame = mOriginalContent->GetPrimaryFrame();
- if (frame) {
- nsIFrame* beforeFrame = nsLayoutUtils::GetBeforeFrame(frame);
- if (beforeFrame) {
- mPhase = eAtBeforeKid;
- return beforeFrame->GetContent();
- }
+ Element* beforeContent = nsLayoutUtils::GetBeforePseudo(mOriginalContent);
+ if (beforeContent) {
+ mPhase = eAtBeforeKid;
+ return beforeContent;
}
}
@@ -448,13 +405,10 @@ AllChildrenIterator::GetNextChild()
return mAnonKids[mAnonKidsIdx];
}
- nsIFrame* frame = mOriginalContent->GetPrimaryFrame();
- if (frame) {
- nsIFrame* afterFrame = nsLayoutUtils::GetAfterFrame(frame);
- if (afterFrame) {
- mPhase = eAtAfterKid;
- return afterFrame->GetContent();
- }
+ Element* afterContent = nsLayoutUtils::GetAfterPseudo(mOriginalContent);
+ if (afterContent) {
+ mPhase = eAtAfterKid;
+ return afterContent;
}
}
@@ -468,13 +422,10 @@ AllChildrenIterator::GetPreviousChild()
if (mPhase == eAtEnd) {
MOZ_ASSERT(mAnonKidsIdx == mAnonKids.Length());
mPhase = eAtAnonKids;
- nsIFrame* frame = mOriginalContent->GetPrimaryFrame();
- if (frame) {
- nsIFrame* afterFrame = nsLayoutUtils::GetAfterFrame(frame);
- if (afterFrame) {
- mPhase = eAtAfterKid;
- return afterFrame->GetContent();
- }
+ Element* afterContent = nsLayoutUtils::GetAfterPseudo(mOriginalContent);
+ if (afterContent) {
+ mPhase = eAtAfterKid;
+ return afterContent;
}
}
@@ -503,13 +454,10 @@ AllChildrenIterator::GetPreviousChild()
return kid;
}
- nsIFrame* frame = mOriginalContent->GetPrimaryFrame();
- if (frame) {
- nsIFrame* beforeFrame = nsLayoutUtils::GetBeforeFrame(frame);
- if (beforeFrame) {
- mPhase = eAtBeforeKid;
- return beforeFrame->GetContent();
- }
+ Element* beforeContent = nsLayoutUtils::GetBeforePseudo(mOriginalContent);
+ if (beforeContent) {
+ mPhase = eAtBeforeKid;
+ return beforeContent;
}
}
@@ -585,12 +533,6 @@ StyleChildrenIterator::IsNeeded(const Element* aElement)
return true;
}
- // The root element has a scroll frame that is not the primary frame, so we
- // need to do special checking for that case.
- if (aElement == aElement->OwnerDoc()->GetRootElement()) {
- return true;
- }
-
return false;
}
diff --git a/dom/base/ChildIterator.h b/dom/base/ChildIterator.h
index ffff8dce5..86a5754d0 100644
--- a/dom/base/ChildIterator.h
+++ b/dom/base/ChildIterator.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -36,27 +35,20 @@ class ExplicitChildIterator
{
public:
explicit ExplicitChildIterator(const nsIContent* aParent,
- bool aStartAtBeginning = true)
- : mParent(aParent),
- mChild(nullptr),
- mDefaultChild(nullptr),
- mIndexInInserted(0),
- mIsFirst(aStartAtBeginning)
- {
- }
+ bool aStartAtBeginning = true);
ExplicitChildIterator(const ExplicitChildIterator& aOther)
- : mParent(aOther.mParent), mChild(aOther.mChild),
+ : mParent(aOther.mParent),
+ mParentAsSlot(aOther.mParentAsSlot),
+ mChild(aOther.mChild),
mDefaultChild(aOther.mDefaultChild),
- mShadowIterator(aOther.mShadowIterator ?
- new ExplicitChildIterator(*aOther.mShadowIterator) :
- nullptr),
mIndexInInserted(aOther.mIndexInInserted), mIsFirst(aOther.mIsFirst) {}
ExplicitChildIterator(ExplicitChildIterator&& aOther)
- : mParent(aOther.mParent), mChild(aOther.mChild),
+ : mParent(aOther.mParent),
+ mParentAsSlot(aOther.mParentAsSlot),
+ mChild(aOther.mChild),
mDefaultChild(aOther.mDefaultChild),
- mShadowIterator(Move(aOther.mShadowIterator)),
mIndexInInserted(aOther.mIndexInInserted), mIsFirst(aOther.mIsFirst) {}
nsIContent* GetNextChild();
@@ -65,13 +57,13 @@ public:
// found. This version can take shortcuts that the two-argument version
// can't, so can be faster (and in fact can be O(1) instead of O(N) in many
// cases).
- bool Seek(nsIContent* aChildToFind);
+ bool Seek(const nsIContent* aChildToFind);
// Looks for aChildToFind respecting insertion points until aChildToFind is found.
// or aBound is found. If aBound is nullptr then the seek is unbounded. Returns
// whether aChildToFind was found as an explicit child prior to encountering
// aBound.
- bool Seek(nsIContent* aChildToFind, nsIContent* aBound)
+ bool Seek(const nsIContent* aChildToFind, nsIContent* aBound)
{
// It would be nice to assert that we find aChildToFind, but bz thinks that
// we might not find aChildToFind when called from ContentInserted
@@ -102,6 +94,10 @@ protected:
// the <xbl:content> element for the binding.
const nsIContent* mParent;
+ // If parent is a slot element, this points to the parent as HTMLSlotElement,
+ // otherwise, it's null.
+ const HTMLSlotElement* mParentAsSlot;
+
// The current child. When we encounter an insertion point,
// mChild remains as the insertion point whose content we're iterating (and
// our state is controled by mDefaultChild or mIndexInInserted depending on
@@ -114,11 +110,6 @@ protected:
// to null, we continue iterating at mChild's next sibling.
nsIContent* mDefaultChild;
- // If non-null, this points to an iterator of the explicit children of
- // the ShadowRoot projected by the current shadow element that we're
- // iterating.
- nsAutoPtr<ExplicitChildIterator> mShadowIterator;
-
// If not zero, we're iterating inserted children for an insertion point. This
// is an index into mChild's inserted children array (mChild must be an
// nsXBLChildrenElement). The index is one past the "current" child (as
@@ -139,19 +130,29 @@ class FlattenedChildIterator : public ExplicitChildIterator
public:
explicit FlattenedChildIterator(const nsIContent* aParent,
bool aStartAtBeginning = true)
- : ExplicitChildIterator(aParent, aStartAtBeginning), mXBLInvolved(false)
+ : ExplicitChildIterator(aParent, aStartAtBeginning)
+ , mXBLInvolved(false)
+ , mOriginalContent(aParent)
{
Init(false);
}
FlattenedChildIterator(FlattenedChildIterator&& aOther)
- : ExplicitChildIterator(Move(aOther)), mXBLInvolved(aOther.mXBLInvolved) {}
+ : ExplicitChildIterator(Move(aOther))
+ , mXBLInvolved(aOther.mXBLInvolved)
+ , mOriginalContent(aOther.mOriginalContent)
+ {}
FlattenedChildIterator(const FlattenedChildIterator& aOther)
- : ExplicitChildIterator(aOther), mXBLInvolved(aOther.mXBLInvolved) {}
+ : ExplicitChildIterator(aOther)
+ , mXBLInvolved(aOther.mXBLInvolved)
+ , mOriginalContent(aOther.mOriginalContent)
+ {}
bool XBLInvolved() { return mXBLInvolved; }
+ const nsIContent* Parent() const { return mOriginalContent; }
+
protected:
/**
* This constructor is a hack to help AllChildrenIterator which sometimes
@@ -159,7 +160,9 @@ protected:
*/
FlattenedChildIterator(const nsIContent* aParent, uint32_t aFlags,
bool aStartAtBeginning = true)
- : ExplicitChildIterator(aParent, aStartAtBeginning), mXBLInvolved(false)
+ : ExplicitChildIterator(aParent, aStartAtBeginning)
+ , mXBLInvolved(false)
+ , mOriginalContent(aParent)
{
bool ignoreXBL = aFlags & nsIContent::eAllButXBL;
Init(ignoreXBL);
@@ -170,6 +173,8 @@ protected:
// For certain optimizations, nsCSSFrameConstructor needs to know if the
// child list of the element that we're iterating matches its .childNodes.
bool mXBLInvolved;
+
+ const nsIContent* mOriginalContent;
};
/**
@@ -187,12 +192,11 @@ public:
AllChildrenIterator(const nsIContent* aNode, uint32_t aFlags,
bool aStartAtBeginning = true) :
FlattenedChildIterator(aNode, aFlags, aStartAtBeginning),
- mOriginalContent(aNode), mAnonKidsIdx(aStartAtBeginning ? UINT32_MAX : 0),
+ mAnonKidsIdx(aStartAtBeginning ? UINT32_MAX : 0),
mFlags(aFlags), mPhase(aStartAtBeginning ? eAtBegin : eAtEnd) { }
AllChildrenIterator(AllChildrenIterator&& aOther)
: FlattenedChildIterator(Move(aOther)),
- mOriginalContent(aOther.mOriginalContent),
mAnonKids(Move(aOther.mAnonKids)), mAnonKidsIdx(aOther.mAnonKidsIdx),
mFlags(aOther.mFlags), mPhase(aOther.mPhase)
#ifdef DEBUG
@@ -211,11 +215,10 @@ public:
// Seeks the given node in children of a parent element, starting from
// the current iterator's position, and sets the iterator at the given child
// node if it was found.
- bool Seek(nsIContent* aChildToFind);
+ bool Seek(const nsIContent* aChildToFind);
nsIContent* GetNextChild();
nsIContent* GetPreviousChild();
- const nsIContent* Parent() const { return mOriginalContent; }
enum IteratorPhase
{
@@ -233,8 +236,6 @@ private:
void AppendNativeAnonymousChildren();
void AppendNativeAnonymousChildrenFromFrame(nsIFrame* aFrame);
- const nsIContent* mOriginalContent;
-
// mAnonKids is an array of native anonymous children, mAnonKidsIdx is index
// in the array. If mAnonKidsIdx < mAnonKids.Length() and mPhase is
// eAtAnonKids then the iterator points at a child at mAnonKidsIdx index. If
@@ -256,10 +257,11 @@ private:
/**
* StyleChildrenIterator traverses the children of the element from the
* perspective of the style system, particularly the children we need to traverse
- * during restyle. This is identical to AllChildrenIterator with eAllChildren,
- * _except_ that we detect and skip any native anonymous children that are used
- * to implement pseudo-elements (since the style system needs to cascade those
- * using different algorithms).
+ * during restyle. This is identical to AllChildrenIterator with
+ * (eAllChildren | eSkipDocumentLevelNativeAnonymousContent), _except_ that we
+ * detect and skip any native anonymous children that are used to implement
+ * pseudo-elements (since the style system needs to cascade those using
+ * different algorithms).
*
* Note: it assumes that no mutation of the DOM or frame tree takes place during
* iteration, and will break horribly if that is not true.
@@ -267,7 +269,9 @@ private:
class StyleChildrenIterator : private AllChildrenIterator {
public:
explicit StyleChildrenIterator(const nsIContent* aContent)
- : AllChildrenIterator(aContent, nsIContent::eAllChildren)
+ : AllChildrenIterator(aContent,
+ nsIContent::eAllChildren |
+ nsIContent::eSkipDocumentLevelNativeAnonymousContent)
{
MOZ_COUNT_CTOR(StyleChildrenIterator);
}
diff --git a/dom/base/ChromeNodeList.cpp b/dom/base/ChromeNodeList.cpp
index ffa101971..d1e6010bf 100644
--- a/dom/base/ChromeNodeList.cpp
+++ b/dom/base/ChromeNodeList.cpp
@@ -1,11 +1,11 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 "mozilla/dom/ChromeNodeList.h"
#include "mozilla/dom/ChromeNodeListBinding.h"
+#include "nsPIDOMWindow.h"
using namespace mozilla;
using namespace mozilla::dom;
diff --git a/dom/base/ChromeNodeList.h b/dom/base/ChromeNodeList.h
index 9908808ac..f7173d161 100644
--- a/dom/base/ChromeNodeList.h
+++ b/dom/base/ChromeNodeList.h
@@ -1,11 +1,11 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 "nsCOMArray.h"
#include "nsContentList.h"
+#include "nsIDocument.h"
namespace mozilla {
class ErrorResult;
diff --git a/dom/base/Comment.cpp b/dom/base/Comment.cpp
index 0a9305349..c9c011905 100644
--- a/dom/base/Comment.cpp
+++ b/dom/base/Comment.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Comment.h b/dom/base/Comment.h
index 0ee1c498a..2719a6b5f 100644
--- a/dom/base/Comment.h
+++ b/dom/base/Comment.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Crypto.cpp b/dom/base/Crypto.cpp
index 4de6409ac..4226832f4 100644
--- a/dom/base/Crypto.cpp
+++ b/dom/base/Crypto.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Crypto.h b/dom/base/Crypto.h
index e6f8969d7..318eba559 100644
--- a/dom/base/Crypto.h
+++ b/dom/base/Crypto.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/CustomElementRegistry.cpp b/dom/base/CustomElementRegistry.cpp
index 3f8322199..2bf969d38 100644
--- a/dom/base/CustomElementRegistry.cpp
+++ b/dom/base/CustomElementRegistry.cpp
@@ -6,13 +6,14 @@
#include "mozilla/dom/CustomElementRegistry.h"
+#include "mozilla/CycleCollectedJSContext.h"
#include "mozilla/dom/CustomElementRegistryBinding.h"
-#include "mozilla/dom/Element.h"
#include "mozilla/dom/HTMLElementBinding.h"
#include "mozilla/dom/WebComponentsBinding.h"
+#include "mozilla/dom/DocGroup.h"
#include "mozilla/dom/Promise.h"
#include "nsContentUtils.h"
-#include "nsIParserService.h"
+#include "nsHTMLTags.h"
#include "jsapi.h"
namespace mozilla {
@@ -21,40 +22,21 @@ namespace dom {
void
CustomElementCallback::Call()
{
- ErrorResult rv;
+ IgnoredErrorResult rv;
switch (mType) {
- case nsIDocument::eCreated:
- {
- // For the duration of this callback invocation, the element is being created
- // flag must be set to true.
- mOwnerData->mElementIsBeingCreated = true;
-
- // The callback hasn't actually been invoked yet, but we need to flip
- // this now in order to enqueue the attached callback. This is a spec
- // bug (w3c bug 27437).
- mOwnerData->mCreatedCallbackInvoked = true;
-
- // If ELEMENT is in a document and this document has a browsing context,
- // enqueue attached callback for ELEMENT.
- nsIDocument* document = mThisObject->GetComposedDoc();
- if (document && document->GetDocShell()) {
- nsContentUtils::EnqueueLifecycleCallback(
- document, nsIDocument::eAttached, mThisObject);
- }
-
- static_cast<LifecycleCreatedCallback *>(mCallback.get())->Call(mThisObject, rv);
- mOwnerData->mElementIsBeingCreated = false;
+ case nsIDocument::eConnected:
+ static_cast<LifecycleConnectedCallback *>(mCallback.get())->Call(mThisObject, rv);
break;
- }
- case nsIDocument::eAttached:
- static_cast<LifecycleAttachedCallback *>(mCallback.get())->Call(mThisObject, rv);
+ case nsIDocument::eDisconnected:
+ static_cast<LifecycleDisconnectedCallback *>(mCallback.get())->Call(mThisObject, rv);
break;
- case nsIDocument::eDetached:
- static_cast<LifecycleDetachedCallback *>(mCallback.get())->Call(mThisObject, rv);
+ case nsIDocument::eAdopted:
+ static_cast<LifecycleAdoptedCallback *>(mCallback.get())->Call(mThisObject,
+ mAdoptedCallbackArgs.mOldDocument, mAdoptedCallbackArgs.mNewDocument, rv);
break;
case nsIDocument::eAttributeChanged:
static_cast<LifecycleAttributeChangedCallback *>(mCallback.get())->Call(mThisObject,
- mArgs.name, mArgs.oldValue, mArgs.newValue, rv);
+ mArgs.name, mArgs.oldValue, mArgs.newValue, mArgs.namespaceURI, rv);
break;
}
}
@@ -71,87 +53,164 @@ CustomElementCallback::Traverse(nsCycleCollectionTraversalCallback& aCb) const
CustomElementCallback::CustomElementCallback(Element* aThisObject,
nsIDocument::ElementCallbackType aCallbackType,
- mozilla::dom::CallbackFunction* aCallback,
- CustomElementData* aOwnerData)
+ mozilla::dom::CallbackFunction* aCallback)
: mThisObject(aThisObject),
mCallback(aCallback),
- mType(aCallbackType),
- mOwnerData(aOwnerData)
+ mType(aCallbackType)
{
}
+//-----------------------------------------------------
+// CustomElementConstructor
+
+already_AddRefed<Element>
+CustomElementConstructor::Construct(const char* aExecutionReason,
+ ErrorResult& aRv)
+{
+ CallSetup s(this, aRv, aExecutionReason,
+ CallbackFunction::eRethrowExceptions);
+
+ JSContext* cx = s.GetContext();
+ if (!cx) {
+ MOZ_ASSERT(aRv.Failed());
+ return nullptr;
+ }
+
+ JS::Rooted<JSObject*> result(cx);
+ JS::Rooted<JS::Value> constructor(cx, JS::ObjectValue(*mCallback));
+ if (!JS::Construct(cx, constructor, JS::HandleValueArray::empty(), &result)) {
+ aRv.NoteJSContextException(cx);
+ return nullptr;
+ }
+
+ RefPtr<Element> element;
+ if (NS_FAILED(UNWRAP_OBJECT(Element, &result, element))) {
+ return nullptr;
+ }
+
+ return element.forget();
+}
+
+//-----------------------------------------------------
+// CustomElementData
+
CustomElementData::CustomElementData(nsIAtom* aType)
- : mType(aType),
- mCurrentCallback(-1),
- mElementIsBeingCreated(false),
- mCreatedCallbackInvoked(true),
- mAssociatedMicroTask(-1)
+ : CustomElementData(aType, CustomElementData::State::eUndefined)
+{
+}
+
+CustomElementData::CustomElementData(nsIAtom* aType, State aState)
+ : mState(aState)
+ , mType(aType)
{
}
void
-CustomElementData::RunCallbackQueue()
+CustomElementData::SetCustomElementDefinition(CustomElementDefinition* aDefinition)
{
- // Note: It's possible to re-enter this method.
- while (static_cast<uint32_t>(++mCurrentCallback) < mCallbackQueue.Length()) {
- mCallbackQueue[mCurrentCallback]->Call();
+ MOZ_ASSERT(mState == State::eCustom);
+ MOZ_ASSERT(!mCustomElementDefinition);
+ MOZ_ASSERT(aDefinition->mType == mType);
+
+ mCustomElementDefinition = aDefinition;
+}
+
+CustomElementDefinition*
+CustomElementData::GetCustomElementDefinition()
+{
+ MOZ_ASSERT(mCustomElementDefinition ? mState == State::eCustom
+ : mState != State::eCustom);
+
+ return mCustomElementDefinition;
+}
+
+nsIAtom*
+CustomElementData::GetCustomElementType()
+{
+ return mType;
+}
+
+void
+CustomElementData::Traverse(nsCycleCollectionTraversalCallback& aCb) const
+{
+ for (uint32_t i = 0; i < mReactionQueue.Length(); i++) {
+ if (mReactionQueue[i]) {
+ mReactionQueue[i]->Traverse(aCb);
+ }
}
- mCallbackQueue.Clear();
- mCurrentCallback = -1;
+ if (mCustomElementDefinition) {
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(aCb, "mCustomElementDefinition");
+ aCb.NoteNativeChild(mCustomElementDefinition,
+ NS_CYCLE_COLLECTION_PARTICIPANT(CustomElementDefinition));
+ }
}
+void
+CustomElementData::Unlink()
+{
+ mReactionQueue.Clear();
+ mCustomElementDefinition = nullptr;
+}
+
+//-----------------------------------------------------
+// CustomElementRegistry
+
+namespace {
+
+class MOZ_RAII AutoConstructionStackEntry final
+{
+public:
+ AutoConstructionStackEntry(nsTArray<RefPtr<nsGenericHTMLElement>>& aStack,
+ nsGenericHTMLElement* aElement)
+ : mStack(aStack)
+ {
+ mIndex = mStack.Length();
+ mStack.AppendElement(aElement);
+ }
+
+ ~AutoConstructionStackEntry()
+ {
+ MOZ_ASSERT(mIndex == mStack.Length() - 1,
+ "Removed element should be the last element");
+ mStack.RemoveElementAt(mIndex);
+ }
+
+private:
+ nsTArray<RefPtr<nsGenericHTMLElement>>& mStack;
+ uint32_t mIndex;
+};
+
+} // namespace anonymous
+
// Only needed for refcounted objects.
NS_IMPL_CYCLE_COLLECTION_CLASS(CustomElementRegistry)
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(CustomElementRegistry)
- tmp->mCustomDefinitions.Clear();
+ tmp->mConstructors.clear();
+ NS_IMPL_CYCLE_COLLECTION_UNLINK(mCustomDefinitions)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mWhenDefinedPromiseMap)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mWindow)
NS_IMPL_CYCLE_COLLECTION_UNLINK_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_UNLINK_END
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(CustomElementRegistry)
- for (auto iter = tmp->mCustomDefinitions.Iter(); !iter.Done(); iter.Next()) {
- nsAutoPtr<LifecycleCallbacks>& callbacks = iter.UserData()->mCallbacks;
-
- if (callbacks->mAttributeChangedCallback.WasPassed()) {
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb,
- "mCustomDefinitions->mCallbacks->mAttributeChangedCallback");
- cb.NoteXPCOMChild(callbacks->mAttributeChangedCallback.Value());
- }
-
- if (callbacks->mCreatedCallback.WasPassed()) {
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb,
- "mCustomDefinitions->mCallbacks->mCreatedCallback");
- cb.NoteXPCOMChild(callbacks->mCreatedCallback.Value());
- }
-
- if (callbacks->mAttachedCallback.WasPassed()) {
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb,
- "mCustomDefinitions->mCallbacks->mAttachedCallback");
- cb.NoteXPCOMChild(callbacks->mAttachedCallback.Value());
- }
-
- if (callbacks->mDetachedCallback.WasPassed()) {
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb,
- "mCustomDefinitions->mCallbacks->mDetachedCallback");
- cb.NoteXPCOMChild(callbacks->mDetachedCallback.Value());
- }
- }
+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mCustomDefinitions)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWhenDefinedPromiseMap)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mWindow)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(CustomElementRegistry)
for (auto iter = tmp->mCustomDefinitions.Iter(); !iter.Done(); iter.Next()) {
- aCallbacks.Trace(&iter.UserData()->mConstructor,
- "mCustomDefinitions constructor",
- aClosure);
aCallbacks.Trace(&iter.UserData()->mPrototype,
"mCustomDefinitions prototype",
aClosure);
}
+ for (ConstructorMap::Enum iter(tmp->mConstructors); !iter.empty(); iter.popFront()) {
+ aCallbacks.Trace(&iter.front().mutableKey(),
+ "mConstructors key",
+ aClosure);
+ }
NS_IMPL_CYCLE_COLLECTION_TRACE_PRESERVED_WRAPPER
NS_IMPL_CYCLE_COLLECTION_TRACE_END
@@ -166,100 +225,52 @@ NS_INTERFACE_MAP_END
/* static */ bool
CustomElementRegistry::IsCustomElementEnabled(JSContext* aCx, JSObject* aObject)
{
- return false;
-/*
- return Preferences::GetBool("dom.webcomponents.customelements.enabled") ||
- Preferences::GetBool("dom.webcomponents.enabled");
-*/
+ return nsContentUtils::IsCustomElementsEnabled();
}
-/* static */ already_AddRefed<CustomElementRegistry>
-CustomElementRegistry::Create(nsPIDOMWindowInner* aWindow)
+CustomElementRegistry::CustomElementRegistry(nsPIDOMWindowInner* aWindow)
+ : mWindow(aWindow)
+ , mIsCustomDefinitionRunning(false)
{
MOZ_ASSERT(aWindow);
MOZ_ASSERT(aWindow->IsInnerWindow());
+ MOZ_ALWAYS_TRUE(mConstructors.init());
- if (!aWindow->GetDocShell()) {
- return nullptr;
- }
-
- if (!IsCustomElementEnabled()) {
- return nullptr;
- }
-
- RefPtr<CustomElementRegistry> customElementRegistry =
- new CustomElementRegistry(aWindow);
- return customElementRegistry.forget();
-}
-
-/* static */ void
-CustomElementRegistry::ProcessTopElementQueue()
-{
- MOZ_ASSERT(nsContentUtils::IsSafeToRunScript());
-
- nsTArray<RefPtr<CustomElementData>>& stack = *sProcessingStack;
- uint32_t firstQueue = stack.LastIndexOf((CustomElementData*) nullptr);
-
- for (uint32_t i = firstQueue + 1; i < stack.Length(); ++i) {
- // Callback queue may have already been processed in an earlier
- // element queue or in an element queue that was popped
- // off more recently.
- if (stack[i]->mAssociatedMicroTask != -1) {
- stack[i]->RunCallbackQueue();
- stack[i]->mAssociatedMicroTask = -1;
- }
- }
-
- // If this was actually the base element queue, don't bother trying to pop
- // the first "queue" marker (sentinel).
- if (firstQueue != 0) {
- stack.SetLength(firstQueue);
- } else {
- // Don't pop sentinel for base element queue.
- stack.SetLength(1);
- }
+ mozilla::HoldJSObjects(this);
}
-/* static */ void
-CustomElementRegistry::XPCOMShutdown()
+CustomElementRegistry::~CustomElementRegistry()
{
- sProcessingStack.reset();
+ mozilla::DropJSObjects(this);
}
-/* static */ Maybe<nsTArray<RefPtr<CustomElementData>>>
-CustomElementRegistry::sProcessingStack;
-
-CustomElementRegistry::CustomElementRegistry(nsPIDOMWindowInner* aWindow)
- : mWindow(aWindow)
- , mIsCustomDefinitionRunning(false)
+CustomElementDefinition*
+CustomElementRegistry::LookupCustomElementDefinition(nsIAtom* aNameAtom,
+ nsIAtom* aTypeAtom) const
{
- mozilla::HoldJSObjects(this);
-
- if (!sProcessingStack) {
- sProcessingStack.emplace();
- // Add the base queue sentinel to the processing stack.
- sProcessingStack->AppendElement((CustomElementData*) nullptr);
+ CustomElementDefinition* data = mCustomDefinitions.GetWeak(aTypeAtom);
+ if (data && data->mLocalName == aNameAtom) {
+ return data;
}
-}
-CustomElementRegistry::~CustomElementRegistry()
-{
- mozilla::DropJSObjects(this);
+ return nullptr;
}
CustomElementDefinition*
-CustomElementRegistry::LookupCustomElementDefinition(const nsAString& aLocalName,
- const nsAString* aIs) const
+CustomElementRegistry::LookupCustomElementDefinition(JSContext* aCx,
+ JSObject* aConstructor) const
{
- nsCOMPtr<nsIAtom> localNameAtom = NS_Atomize(aLocalName);
- nsCOMPtr<nsIAtom> typeAtom = aIs ? NS_Atomize(*aIs) : localNameAtom;
+ JS::Rooted<JSObject*> constructor(aCx, js::CheckedUnwrap(aConstructor));
- CustomElementDefinition* data = mCustomDefinitions.Get(typeAtom);
- if (data && data->mLocalName == localNameAtom) {
- return data;
+ const auto& ptr = mConstructors.lookup(constructor);
+ if (!ptr) {
+ return nullptr;
}
- return nullptr;
+ CustomElementDefinition* definition = mCustomDefinitions.GetWeak(ptr->value());
+ MOZ_ASSERT(definition, "Definition must be found in mCustomDefinitions");
+
+ return definition;
}
void
@@ -275,234 +286,159 @@ CustomElementRegistry::RegisterUnresolvedElement(Element* aElement, nsIAtom* aTy
typeName = info->NameAtom();
}
- if (mCustomDefinitions.Get(typeName)) {
+ if (mCustomDefinitions.GetWeak(typeName)) {
return;
}
nsTArray<nsWeakPtr>* unresolved = mCandidatesMap.LookupOrAdd(typeName);
nsWeakPtr* elem = unresolved->AppendElement();
*elem = do_GetWeakReference(aElement);
- aElement->AddStates(NS_EVENT_STATE_UNRESOLVED);
return;
}
void
-CustomElementRegistry::SetupCustomElement(Element* aElement,
- const nsAString* aTypeExtension)
+CustomElementRegistry::UnregisterUnresolvedElement(Element* aElement,
+ nsIAtom* aTypeName)
{
- nsCOMPtr<nsIAtom> tagAtom = aElement->NodeInfo()->NameAtom();
- nsCOMPtr<nsIAtom> typeAtom = aTypeExtension ?
- NS_Atomize(*aTypeExtension) : tagAtom;
-
- if (aTypeExtension && !aElement->HasAttr(kNameSpaceID_None, nsGkAtoms::is)) {
- // Custom element setup in the parser happens after the "is"
- // attribute is added.
- aElement->SetAttr(kNameSpaceID_None, nsGkAtoms::is, *aTypeExtension, true);
- }
-
- CustomElementDefinition* data = LookupCustomElementDefinition(
- aElement->NodeInfo()->LocalName(), aTypeExtension);
-
- if (!data) {
- // The type extension doesn't exist in the registry,
- // thus we don't need to enqueue callback or adjust
- // the "is" attribute, but it is possibly an upgrade candidate.
- RegisterUnresolvedElement(aElement, typeAtom);
- return;
- }
-
- if (data->mLocalName != tagAtom) {
- // The element doesn't match the local name for the
- // definition, thus the element isn't a custom element
- // and we don't need to do anything more.
- return;
+ nsTArray<nsWeakPtr>* candidates;
+ if (mCandidatesMap.Get(aTypeName, &candidates)) {
+ MOZ_ASSERT(candidates);
+ // We don't need to iterate the candidates array and remove the element from
+ // the array for performance reason. It'll be handled by bug 1396620.
+ for (size_t i = 0; i < candidates->Length(); ++i) {
+ nsCOMPtr<Element> elem = do_QueryReferent(candidates->ElementAt(i));
+ if (elem && elem.get() == aElement) {
+ candidates->RemoveElementAt(i);
+ }
+ }
}
-
- // Enqueuing the created callback will set the CustomElementData on the
- // element, causing prototype swizzling to occur in Element::WrapObject.
- EnqueueLifecycleCallback(nsIDocument::eCreated, aElement, nullptr, data);
}
-void
-CustomElementRegistry::EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType,
- Element* aCustomElement,
- LifecycleCallbackArgs* aArgs,
- CustomElementDefinition* aDefinition)
+/* static */ UniquePtr<CustomElementCallback>
+CustomElementRegistry::CreateCustomElementCallback(
+ nsIDocument::ElementCallbackType aType, Element* aCustomElement,
+ LifecycleCallbackArgs* aArgs,
+ LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs,
+ CustomElementDefinition* aDefinition)
{
- CustomElementData* elementData = aCustomElement->GetCustomElementData();
-
- // Let DEFINITION be ELEMENT's definition
- CustomElementDefinition* definition = aDefinition;
- if (!definition) {
- mozilla::dom::NodeInfo* info = aCustomElement->NodeInfo();
-
- // Make sure we get the correct definition in case the element
- // is a extended custom element e.g. <button is="x-button">.
- nsCOMPtr<nsIAtom> typeAtom = elementData ?
- elementData->mType.get() : info->NameAtom();
-
- definition = mCustomDefinitions.Get(typeAtom);
- if (!definition || definition->mLocalName != info->NameAtom()) {
- // Trying to enqueue a callback for an element that is not
- // a custom element. We are done, nothing to do.
- return;
- }
- }
+ MOZ_ASSERT(aDefinition, "CustomElementDefinition should not be null");
- if (!elementData) {
- // Create the custom element data the first time
- // that we try to enqueue a callback.
- elementData = new CustomElementData(definition->mType);
- // aCustomElement takes ownership of elementData
- aCustomElement->SetCustomElementData(elementData);
- MOZ_ASSERT(aType == nsIDocument::eCreated,
- "First callback should be the created callback");
- }
+ MOZ_ASSERT(aCustomElement->GetCustomElementData(),
+ "CustomElementData should exist");
// Let CALLBACK be the callback associated with the key NAME in CALLBACKS.
CallbackFunction* func = nullptr;
switch (aType) {
- case nsIDocument::eCreated:
- if (definition->mCallbacks->mCreatedCallback.WasPassed()) {
- func = definition->mCallbacks->mCreatedCallback.Value();
+ case nsIDocument::eConnected:
+ if (aDefinition->mCallbacks->mConnectedCallback.WasPassed()) {
+ func = aDefinition->mCallbacks->mConnectedCallback.Value();
}
break;
- case nsIDocument::eAttached:
- if (definition->mCallbacks->mAttachedCallback.WasPassed()) {
- func = definition->mCallbacks->mAttachedCallback.Value();
+ case nsIDocument::eDisconnected:
+ if (aDefinition->mCallbacks->mDisconnectedCallback.WasPassed()) {
+ func = aDefinition->mCallbacks->mDisconnectedCallback.Value();
}
break;
- case nsIDocument::eDetached:
- if (definition->mCallbacks->mDetachedCallback.WasPassed()) {
- func = definition->mCallbacks->mDetachedCallback.Value();
+ case nsIDocument::eAdopted:
+ if (aDefinition->mCallbacks->mAdoptedCallback.WasPassed()) {
+ func = aDefinition->mCallbacks->mAdoptedCallback.Value();
}
break;
case nsIDocument::eAttributeChanged:
- if (definition->mCallbacks->mAttributeChangedCallback.WasPassed()) {
- func = definition->mCallbacks->mAttributeChangedCallback.Value();
+ if (aDefinition->mCallbacks->mAttributeChangedCallback.WasPassed()) {
+ func = aDefinition->mCallbacks->mAttributeChangedCallback.Value();
}
break;
}
// If there is no such callback, stop.
if (!func) {
- return;
- }
-
- if (aType == nsIDocument::eCreated) {
- elementData->mCreatedCallbackInvoked = false;
- } else if (!elementData->mCreatedCallbackInvoked) {
- // Callbacks other than created callback must not be enqueued
- // until after the created callback has been invoked.
- return;
+ return nullptr;
}
// Add CALLBACK to ELEMENT's callback queue.
- CustomElementCallback* callback = new CustomElementCallback(aCustomElement,
- aType,
- func,
- elementData);
- // Ownership of callback is taken by mCallbackQueue.
- elementData->mCallbackQueue.AppendElement(callback);
+ auto callback =
+ MakeUnique<CustomElementCallback>(aCustomElement, aType, func);
+
if (aArgs) {
callback->SetArgs(*aArgs);
}
- if (!elementData->mElementIsBeingCreated) {
- CustomElementData* lastData =
- sProcessingStack->SafeLastElement(nullptr);
-
- // A new element queue needs to be pushed if the queue at the
- // top of the stack is associated with another microtask level.
- bool shouldPushElementQueue =
- (!lastData || lastData->mAssociatedMicroTask <
- static_cast<int32_t>(nsContentUtils::MicroTaskLevel()));
+ if (aAdoptedCallbackArgs) {
+ callback->SetAdoptedCallbackArgs(*aAdoptedCallbackArgs);
+ }
+ return Move(callback);
+}
- // Push a new element queue onto the processing stack when appropriate
- // (when we enter a new microtask).
- if (shouldPushElementQueue) {
- // Push a sentinel value on the processing stack to mark the
- // boundary between the element queues.
- sProcessingStack->AppendElement((CustomElementData*) nullptr);
+/* static */ void
+CustomElementRegistry::EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType,
+ Element* aCustomElement,
+ LifecycleCallbackArgs* aArgs,
+ LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs,
+ CustomElementDefinition* aDefinition)
+{
+ CustomElementDefinition* definition = aDefinition;
+ if (!definition) {
+ definition = aCustomElement->GetCustomElementDefinition();
+ if (!definition ||
+ definition->mLocalName != aCustomElement->NodeInfo()->NameAtom()) {
+ return;
}
+ }
+
+ auto callback =
+ CreateCustomElementCallback(aType, aCustomElement, aArgs,
+ aAdoptedCallbackArgs, definition);
+ if (!callback) {
+ return;
+ }
- sProcessingStack->AppendElement(elementData);
- elementData->mAssociatedMicroTask =
- static_cast<int32_t>(nsContentUtils::MicroTaskLevel());
-
- // Add a script runner to pop and process the element queue at
- // the top of the processing stack.
- if (shouldPushElementQueue) {
- // Lifecycle callbacks enqueued by user agent implementation
- // should be invoked prior to returning control back to script.
- // Create a script runner to process the top of the processing
- // stack as soon as it is safe to run script.
- nsCOMPtr<nsIRunnable> runnable =
- NS_NewRunnableFunction(&CustomElementRegistry::ProcessTopElementQueue);
- nsContentUtils::AddScriptRunner(runnable);
+ DocGroup* docGroup = aCustomElement->OwnerDoc()->GetDocGroup();
+ if (!docGroup) {
+ return;
+ }
+
+ if (aType == nsIDocument::eAttributeChanged) {
+ nsCOMPtr<nsIAtom> attrName = NS_Atomize(aArgs->name);
+ if (definition->mObservedAttributes.IsEmpty() ||
+ !definition->mObservedAttributes.Contains(attrName)) {
+ return;
}
}
+
+ CustomElementReactionsStack* reactionsStack =
+ docGroup->CustomElementReactionsStack();
+ reactionsStack->EnqueueCallbackReaction(aCustomElement, Move(callback));
}
void
-CustomElementRegistry::GetCustomPrototype(nsIAtom* aAtom,
- JS::MutableHandle<JSObject*> aPrototype)
+CustomElementRegistry::UpgradeCandidates(nsIAtom* aKey,
+ CustomElementDefinition* aDefinition,
+ ErrorResult& aRv)
{
- mozilla::dom::CustomElementDefinition* definition = mCustomDefinitions.Get(aAtom);
- if (definition) {
- aPrototype.set(definition->mPrototype);
- } else {
- aPrototype.set(nullptr);
+ DocGroup* docGroup = mWindow->GetDocGroup();
+ if (!docGroup) {
+ aRv.Throw(NS_ERROR_UNEXPECTED);
+ return;
}
-}
-void
-CustomElementRegistry::UpgradeCandidates(JSContext* aCx,
- nsIAtom* aKey,
- CustomElementDefinition* aDefinition)
-{
+ // TODO: Bug 1326028 - Upgrade custom element in shadow-including tree order
nsAutoPtr<nsTArray<nsWeakPtr>> candidates;
mCandidatesMap.RemoveAndForget(aKey, candidates);
if (candidates) {
+ CustomElementReactionsStack* reactionsStack =
+ docGroup->CustomElementReactionsStack();
for (size_t i = 0; i < candidates->Length(); ++i) {
nsCOMPtr<Element> elem = do_QueryReferent(candidates->ElementAt(i));
if (!elem) {
continue;
}
- elem->RemoveStates(NS_EVENT_STATE_UNRESOLVED);
-
- // Make sure that the element name matches the name in the definition.
- // (e.g. a definition for x-button extending button should match
- // <button is="x-button"> but not <x-button>.
- if (elem->NodeInfo()->NameAtom() != aDefinition->mLocalName) {
- //Skip over this element because definition does not apply.
- continue;
- }
-
- MOZ_ASSERT(elem->IsHTMLElement(aDefinition->mLocalName));
- nsWrapperCache* cache;
- CallQueryInterface(elem, &cache);
- MOZ_ASSERT(cache, "Element doesn't support wrapper cache?");
-
- // We want to set the custom prototype in the caller's comparment.
- // In the case that element is in a different compartment,
- // this will set the prototype on the element's wrapper and
- // thus only visible in the wrapper's compartment.
- JS::RootedObject wrapper(aCx);
- JS::Rooted<JSObject*> prototype(aCx, aDefinition->mPrototype);
- if ((wrapper = cache->GetWrapper()) && JS_WrapObject(aCx, &wrapper)) {
- if (!JS_SetPrototype(aCx, wrapper, prototype)) {
- continue;
- }
- }
-
- nsContentUtils::EnqueueLifecycleCallback(
- elem->OwnerDoc(), nsIDocument::eCreated, elem, nullptr, aDefinition);
+ reactionsStack->EnqueueUpgradeReaction(elem, aDefinition);
}
}
}
@@ -518,15 +454,17 @@ nsISupports* CustomElementRegistry::GetParentObject() const
return mWindow;
}
+DocGroup*
+CustomElementRegistry::GetDocGroup() const
+{
+ return mWindow ? mWindow->GetDocGroup() : nullptr;
+}
+
static const char* kLifeCycleCallbackNames[] = {
"connectedCallback",
"disconnectedCallback",
"adoptedCallback",
- "attributeChangedCallback",
- // The life cycle callbacks from v0 spec.
- "createdCallback",
- "attachedCallback",
- "detachedCallback"
+ "attributeChangedCallback"
};
static void
@@ -606,7 +544,7 @@ CustomElementRegistry::Define(const nsAString& aName,
* 3. If this CustomElementRegistry contains an entry with name name, then
* throw a "NotSupportedError" DOMException and abort these steps.
*/
- if (mCustomDefinitions.Get(nameAtom)) {
+ if (mCustomDefinitions.GetWeak(nameAtom)) {
aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
return;
}
@@ -615,9 +553,13 @@ CustomElementRegistry::Define(const nsAString& aName,
* 4. If this CustomElementRegistry contains an entry with constructor constructor,
* then throw a "NotSupportedError" DOMException and abort these steps.
*/
- // TODO: Step 3 of HTMLConstructor also needs a way to look up definition by
- // using constructor. So I plans to figure out a solution to support both of
- // them in bug 1274159.
+ const auto& ptr = mConstructors.lookup(constructorUnwrapped);
+ if (ptr) {
+ MOZ_ASSERT(mCustomDefinitions.GetWeak(ptr->value()),
+ "Definition must be found in mCustomDefinitions");
+ aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
+ return;
+ }
/**
* 5. Let localName be name.
@@ -640,14 +582,8 @@ CustomElementRegistry::Define(const nsAString& aName,
return;
}
- nsIParserService* ps = nsContentUtils::GetParserService();
- if (!ps) {
- aRv.Throw(NS_ERROR_UNEXPECTED);
- return;
- }
-
// bgsound and multicol are unknown html element.
- int32_t tag = ps->HTMLCaseSensitiveAtomTagToId(extendsAtom);
+ int32_t tag = nsHTMLTags::CaseSensitiveAtomTagToId(extendsAtom);
if (tag == eHTMLTag_userdefined ||
tag == eHTMLTag_bgsound ||
tag == eHTMLTag_multicol) {
@@ -669,6 +605,7 @@ CustomElementRegistry::Define(const nsAString& aName,
JS::Rooted<JSObject*> constructorPrototype(cx);
nsAutoPtr<LifecycleCallbacks> callbacksHolder(new LifecycleCallbacks());
+ nsCOMArray<nsIAtom> observedAttributes;
{ // Set mIsCustomDefinitionRunning.
/**
* 9. Set this CustomElementRegistry's element definition is running flag.
@@ -681,9 +618,9 @@ CustomElementRegistry::Define(const nsAString& aName,
*/
JSAutoCompartment ac(cx, constructor);
JS::Rooted<JS::Value> prototypev(cx);
- // The .prototype on the constructor passed from document.registerElement
- // is the "expando" of a wrapper. So we should get it from wrapper instead
- // instead of underlying object.
+ // The .prototype on the constructor passed could be an "expando" of a
+ // wrapper. So we should get it from wrapper instead of the underlying
+ // object.
if (!JS_GetProperty(cx, constructor, "prototype", &prototypev)) {
aRv.StealExceptionFromJSContext(cx);
return;
@@ -730,6 +667,14 @@ CustomElementRegistry::Define(const nsAString& aName,
return;
}
+ // Note: We call the init from the constructorProtoUnwrapped's compartment
+ // here.
+ JS::RootedValue rootedv(cx, JS::ObjectValue(*constructorProtoUnwrapped));
+ if (!JS_WrapValue(cx, &rootedv) || !callbacksHolder->Init(cx, rootedv)) {
+ aRv.StealExceptionFromJSContext(cx);
+ return;
+ }
+
/**
* 10.5. Let observedAttributes be an empty sequence<DOMString>.
* 10.6. If the value of the entry in lifecycleCallbacks with key
@@ -741,15 +686,54 @@ CustomElementRegistry::Define(const nsAString& aName,
* observedAttributesIterable to a sequence<DOMString>. Rethrow
* any exceptions from the conversion.
*/
- // TODO: Bug 1293921 - Implement connected/disconnected/adopted/attributeChanged lifecycle callbacks for custom elements
+ if (callbacksHolder->mAttributeChangedCallback.WasPassed()) {
+ // Enter constructor's compartment.
+ JSAutoCompartment ac(cx, constructor);
+ JS::Rooted<JS::Value> observedAttributesIterable(cx);
+
+ if (!JS_GetProperty(cx, constructor, "observedAttributes",
+ &observedAttributesIterable)) {
+ aRv.StealExceptionFromJSContext(cx);
+ return;
+ }
- // Note: We call the init from the constructorProtoUnwrapped's compartment
- // here.
- JS::RootedValue rootedv(cx, JS::ObjectValue(*constructorProtoUnwrapped));
- if (!JS_WrapValue(cx, &rootedv) || !callbacksHolder->Init(cx, rootedv)) {
- aRv.Throw(NS_ERROR_FAILURE);
- return;
- }
+ if (!observedAttributesIterable.isUndefined()) {
+ if (!observedAttributesIterable.isObject()) {
+ aRv.ThrowTypeError<MSG_NOT_SEQUENCE>(NS_LITERAL_STRING("observedAttributes"));
+ return;
+ }
+
+ JS::ForOfIterator iter(cx);
+ if (!iter.init(observedAttributesIterable, JS::ForOfIterator::AllowNonIterable)) {
+ aRv.StealExceptionFromJSContext(cx);
+ return;
+ }
+
+ if (!iter.valueIsIterable()) {
+ aRv.ThrowTypeError<MSG_NOT_SEQUENCE>(NS_LITERAL_STRING("observedAttributes"));
+ return;
+ }
+
+ JS::Rooted<JS::Value> attribute(cx);
+ while (true) {
+ bool done;
+ if (!iter.next(&attribute, &done)) {
+ aRv.StealExceptionFromJSContext(cx);
+ return;
+ }
+ if (done) {
+ break;
+ }
+
+ nsAutoString attrStr;
+ if (!ConvertJSValueToString(cx, attribute, eStringify, eStringify, attrStr)) {
+ aRv.StealExceptionFromJSContext(cx);
+ return;
+ }
+ observedAttributes.AppendElement(NS_Atomize(attrStr));
+ }
+ }
+ } // Leave constructor's compartment.
} // Leave constructorProtoUnwrapped's compartment.
} // Unset mIsCustomDefinitionRunning
@@ -762,24 +746,34 @@ CustomElementRegistry::Define(const nsAString& aName,
// Associate the definition with the custom element.
nsCOMPtr<nsIAtom> localNameAtom(NS_Atomize(localName));
LifecycleCallbacks* callbacks = callbacksHolder.forget();
- CustomElementDefinition* definition =
+
+ /**
+ * 12. Add definition to this CustomElementRegistry.
+ */
+ if (!mConstructors.put(constructorUnwrapped, nameAtom)) {
+ aRv.Throw(NS_ERROR_FAILURE);
+ return;
+ }
+
+ RefPtr<CustomElementDefinition> definition =
new CustomElementDefinition(nameAtom,
localNameAtom,
- constructor,
+ &aFunctionConstructor,
+ Move(observedAttributes),
constructorPrototype,
callbacks,
0 /* TODO dependent on HTML imports. Bug 877072 */);
- /**
- * 12. Add definition to this CustomElementRegistry.
- */
- mCustomDefinitions.Put(nameAtom, definition);
+ CustomElementDefinition* def = definition.get();
+ mCustomDefinitions.Put(nameAtom, definition.forget());
+
+ MOZ_ASSERT(mCustomDefinitions.Count() == mConstructors.count(),
+ "Number of entries should be the same");
/**
* 13. 14. 15. Upgrade candidates
*/
- // TODO: Bug 1299363 - Implement custom element v1 upgrade algorithm
- UpgradeCandidates(cx, nameAtom, definition);
+ UpgradeCandidates(nameAtom, def, aRv);
/**
* 16. If this CustomElementRegistry's when-defined promise map contains an
@@ -802,14 +796,14 @@ CustomElementRegistry::Get(JSContext* aCx, const nsAString& aName,
JS::MutableHandle<JS::Value> aRetVal)
{
nsCOMPtr<nsIAtom> nameAtom(NS_Atomize(aName));
- CustomElementDefinition* data = mCustomDefinitions.Get(nameAtom);
+ CustomElementDefinition* data = mCustomDefinitions.GetWeak(nameAtom);
if (!data) {
aRetVal.setUndefined();
return;
}
- aRetVal.setObject(*data->mConstructor);
+ aRetVal.setObjectOrNull(data->mConstructor->Callable());
return;
}
@@ -829,7 +823,7 @@ CustomElementRegistry::WhenDefined(const nsAString& aName, ErrorResult& aRv)
return promise.forget();
}
- if (mCustomDefinitions.Get(nameAtom)) {
+ if (mCustomDefinitions.GetWeak(nameAtom)) {
promise->MaybeResolve(JS::UndefinedHandleValue);
return promise.forget();
}
@@ -843,20 +837,344 @@ CustomElementRegistry::WhenDefined(const nsAString& aName, ErrorResult& aRv)
return promise.forget();
}
+namespace {
+
+static void
+DoUpgrade(Element* aElement,
+ CustomElementConstructor* aConstructor,
+ ErrorResult& aRv)
+{
+ // Rethrow the exception since it might actually throw the exception from the
+ // upgrade steps back out to the caller of document.createElement.
+ RefPtr<Element> constructResult =
+ aConstructor->Construct("Custom Element Upgrade", aRv);
+ if (aRv.Failed()) {
+ return;
+ }
+
+ if (!constructResult || constructResult.get() != aElement) {
+ aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
+ return;
+ }
+}
+
+} // anonymous namespace
+
+// https://html.spec.whatwg.org/multipage/scripting.html#upgrades
+/* static */ void
+CustomElementRegistry::Upgrade(Element* aElement,
+ CustomElementDefinition* aDefinition,
+ ErrorResult& aRv)
+{
+ RefPtr<CustomElementData> data = aElement->GetCustomElementData();
+ MOZ_ASSERT(data, "CustomElementData should exist");
+
+ // Step 1 and step 2.
+ if (data->mState == CustomElementData::State::eCustom ||
+ data->mState == CustomElementData::State::eFailed) {
+ return;
+ }
+
+ // Step 3.
+ if (!aDefinition->mObservedAttributes.IsEmpty()) {
+ uint32_t count = aElement->GetAttrCount();
+ for (uint32_t i = 0; i < count; i++) {
+ mozilla::dom::BorrowedAttrInfo info = aElement->GetAttrInfoAt(i);
+
+ const nsAttrName* name = info.mName;
+ nsIAtom* attrName = name->LocalName();
+
+ if (aDefinition->IsInObservedAttributeList(attrName)) {
+ int32_t namespaceID = name->NamespaceID();
+ nsAutoString attrValue, namespaceURI;
+ info.mValue->ToString(attrValue);
+ nsContentUtils::NameSpaceManager()->GetNameSpaceURI(namespaceID,
+ namespaceURI);
+
+ LifecycleCallbackArgs args = {
+ nsDependentAtomString(attrName),
+ NullString(),
+ attrValue,
+ (namespaceURI.IsEmpty() ? NullString() : namespaceURI)
+ };
+ nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eAttributeChanged,
+ aElement,
+ &args, nullptr, aDefinition);
+ }
+ }
+ }
+
+ // Step 4.
+ if (aElement->IsInComposedDoc()) {
+ nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eConnected, aElement,
+ nullptr, nullptr, aDefinition);
+ }
+
+ // Step 5.
+ AutoConstructionStackEntry acs(aDefinition->mConstructionStack,
+ nsGenericHTMLElement::FromContent(aElement));
+
+ // Step 6 and step 7.
+ DoUpgrade(aElement, aDefinition->mConstructor, aRv);
+ if (aRv.Failed()) {
+ data->mState = CustomElementData::State::eFailed;
+ // Empty element's custom element reaction queue.
+ data->mReactionQueue.Clear();
+ return;
+ }
+
+ // Step 8.
+ data->mState = CustomElementData::State::eCustom;
+
+ // Step 9.
+ aElement->SetCustomElementDefinition(aDefinition);
+}
+
+//-----------------------------------------------------
+// CustomElementReactionsStack
+
+void
+CustomElementReactionsStack::CreateAndPushElementQueue()
+{
+ MOZ_ASSERT(mRecursionDepth);
+ MOZ_ASSERT(!mIsElementQueuePushedForCurrentRecursionDepth);
+
+ // Push a new element queue onto the custom element reactions stack.
+ mReactionsStack.AppendElement(MakeUnique<ElementQueue>());
+ mIsElementQueuePushedForCurrentRecursionDepth = true;
+}
+
+void
+CustomElementReactionsStack::PopAndInvokeElementQueue()
+{
+ MOZ_ASSERT(mRecursionDepth);
+ MOZ_ASSERT(mIsElementQueuePushedForCurrentRecursionDepth);
+ MOZ_ASSERT(!mReactionsStack.IsEmpty(),
+ "Reaction stack shouldn't be empty");
+
+ // Pop the element queue from the custom element reactions stack,
+ // and invoke custom element reactions in that queue.
+ const uint32_t lastIndex = mReactionsStack.Length() - 1;
+ ElementQueue* elementQueue = mReactionsStack.ElementAt(lastIndex).get();
+ // Check element queue size in order to reduce function call overhead.
+ if (!elementQueue->IsEmpty()) {
+ // It is still not clear what error reporting will look like in custom
+ // element, see https://github.com/w3c/webcomponents/issues/635.
+ // We usually report the error to entry global in gecko, so just follow the
+ // same behavior here.
+ // This may be null if it's called from parser, see the case of
+ // attributeChangedCallback in
+ // https://html.spec.whatwg.org/multipage/parsing.html#create-an-element-for-the-token
+ // In that case, the exception of callback reactions will be automatically
+ // reported in CallSetup.
+ nsIGlobalObject* global = GetEntryGlobal();
+ InvokeReactions(elementQueue, global);
+ }
+
+ // InvokeReactions() might create other custom element reactions, but those
+ // new reactions should be already consumed and removed at this point.
+ MOZ_ASSERT(lastIndex == mReactionsStack.Length() - 1,
+ "reactions created by InvokeReactions() should be consumed and removed");
+
+ mReactionsStack.RemoveElementAt(lastIndex);
+ mIsElementQueuePushedForCurrentRecursionDepth = false;
+}
+
+void
+CustomElementReactionsStack::EnqueueUpgradeReaction(Element* aElement,
+ CustomElementDefinition* aDefinition)
+{
+ Enqueue(aElement, new CustomElementUpgradeReaction(aDefinition));
+}
+
+void
+CustomElementReactionsStack::EnqueueCallbackReaction(Element* aElement,
+ UniquePtr<CustomElementCallback> aCustomElementCallback)
+{
+ Enqueue(aElement, new CustomElementCallbackReaction(Move(aCustomElementCallback)));
+}
+
+void
+CustomElementReactionsStack::Enqueue(Element* aElement,
+ CustomElementReaction* aReaction)
+{
+ RefPtr<CustomElementData> elementData = aElement->GetCustomElementData();
+ MOZ_ASSERT(elementData, "CustomElementData should exist");
+
+ if (mRecursionDepth) {
+ // If the element queue is not created for current recursion depth, create
+ // and push an element queue to reactions stack first.
+ if (!mIsElementQueuePushedForCurrentRecursionDepth) {
+ CreateAndPushElementQueue();
+ }
+
+ MOZ_ASSERT(!mReactionsStack.IsEmpty());
+ // Add element to the current element queue.
+ mReactionsStack.LastElement()->AppendElement(aElement);
+ elementData->mReactionQueue.AppendElement(aReaction);
+ return;
+ }
+
+ // If the custom element reactions stack is empty, then:
+ // Add element to the backup element queue.
+ MOZ_ASSERT(mReactionsStack.IsEmpty(),
+ "custom element reactions stack should be empty");
+ MOZ_ASSERT(!aReaction->IsUpgradeReaction(),
+ "Upgrade reaction should not be scheduled to backup queue");
+ mBackupQueue.AppendElement(aElement);
+ elementData->mReactionQueue.AppendElement(aReaction);
+
+ if (mIsBackupQueueProcessing) {
+ return;
+ }
+
+ CycleCollectedJSContext* context = CycleCollectedJSContext::Get();
+ RefPtr<BackupQueueMicroTask> bqmt = new BackupQueueMicroTask(this);
+ context->DispatchMicroTaskRunnable(bqmt.forget());
+}
+
+void
+CustomElementReactionsStack::InvokeBackupQueue()
+{
+ // Check backup queue size in order to reduce function call overhead.
+ if (!mBackupQueue.IsEmpty()) {
+ // Upgrade reactions won't be scheduled in backup queue and the exception of
+ // callback reactions will be automatically reported in CallSetup.
+ // If the reactions are invoked from backup queue (in microtask check point),
+ // we don't need to pass global object for error reporting.
+ InvokeReactions(&mBackupQueue, nullptr);
+ }
+ MOZ_ASSERT(mBackupQueue.IsEmpty(),
+ "There are still some reactions in BackupQueue not being consumed!?!");
+}
+
+void
+CustomElementReactionsStack::InvokeReactions(ElementQueue* aElementQueue,
+ nsIGlobalObject* aGlobal)
+{
+ // This is used for error reporting.
+ Maybe<AutoEntryScript> aes;
+ if (aGlobal) {
+ aes.emplace(aGlobal, "custom elements reaction invocation");
+ }
+
+ // Note: It's possible to re-enter this method.
+ for (uint32_t i = 0; i < aElementQueue->Length(); ++i) {
+ Element* element = aElementQueue->ElementAt(i);
+
+ // ElementQueue hold a element's strong reference, it should not be a nullptr.
+ MOZ_ASSERT(element);
+
+ RefPtr<CustomElementData> elementData = element->GetCustomElementData();
+ if (!elementData) {
+ // This happens when the document is destroyed and the element is already
+ // unlinked, no need to fire the callbacks in this case.
+ continue;
+ }
+
+ auto& reactions = elementData->mReactionQueue;
+ for (uint32_t j = 0; j < reactions.Length(); ++j) {
+ // Transfer the ownership of the entry due to reentrant invocation of
+ // this funciton. The entry will be removed when bug 1379573 is landed.
+ auto reaction(Move(reactions.ElementAt(j)));
+ if (reaction) {
+ ErrorResult rv;
+ reaction->Invoke(element, rv);
+ if (aes) {
+ JSContext* cx = aes->cx();
+ if (rv.MaybeSetPendingException(cx)) {
+ aes->ReportException();
+ }
+ MOZ_ASSERT(!JS_IsExceptionPending(cx));
+ }
+ MOZ_ASSERT(!rv.Failed());
+ }
+ }
+ reactions.Clear();
+ }
+ aElementQueue->Clear();
+}
+
+//-----------------------------------------------------
+// CustomElementDefinition
+
+NS_IMPL_CYCLE_COLLECTION_CLASS(CustomElementDefinition)
+
+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(CustomElementDefinition)
+ NS_IMPL_CYCLE_COLLECTION_UNLINK(mConstructor)
+ tmp->mPrototype = nullptr;
+ tmp->mCallbacks = nullptr;
+NS_IMPL_CYCLE_COLLECTION_UNLINK_END
+
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(CustomElementDefinition)
+ mozilla::dom::LifecycleCallbacks* callbacks = tmp->mCallbacks.get();
+
+ if (callbacks->mAttributeChangedCallback.WasPassed()) {
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb,
+ "mCallbacks->mAttributeChangedCallback");
+ cb.NoteXPCOMChild(callbacks->mAttributeChangedCallback.Value());
+ }
+
+ if (callbacks->mConnectedCallback.WasPassed()) {
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mCallbacks->mConnectedCallback");
+ cb.NoteXPCOMChild(callbacks->mConnectedCallback.Value());
+ }
+
+ if (callbacks->mDisconnectedCallback.WasPassed()) {
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mCallbacks->mDisconnectedCallback");
+ cb.NoteXPCOMChild(callbacks->mDisconnectedCallback.Value());
+ }
+
+ if (callbacks->mAdoptedCallback.WasPassed()) {
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mCallbacks->mAdoptedCallback");
+ cb.NoteXPCOMChild(callbacks->mAdoptedCallback.Value());
+ }
+
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mConstructor");
+ cb.NoteXPCOMChild(tmp->mConstructor);
+NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
+
+NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN(CustomElementDefinition)
+ NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mPrototype)
+NS_IMPL_CYCLE_COLLECTION_TRACE_END
+
+NS_IMPL_CYCLE_COLLECTION_ROOT_NATIVE(CustomElementDefinition, AddRef)
+NS_IMPL_CYCLE_COLLECTION_UNROOT_NATIVE(CustomElementDefinition, Release)
+
CustomElementDefinition::CustomElementDefinition(nsIAtom* aType,
nsIAtom* aLocalName,
- JSObject* aConstructor,
+ Function* aConstructor,
+ nsCOMArray<nsIAtom>&& aObservedAttributes,
JSObject* aPrototype,
LifecycleCallbacks* aCallbacks,
uint32_t aDocOrder)
: mType(aType),
mLocalName(aLocalName),
- mConstructor(aConstructor),
+ mConstructor(new CustomElementConstructor(aConstructor)),
+ mObservedAttributes(Move(aObservedAttributes)),
mPrototype(aPrototype),
mCallbacks(aCallbacks),
mDocOrder(aDocOrder)
{
}
+//-----------------------------------------------------
+// CustomElementUpgradeReaction
+
+/* virtual */ void
+CustomElementUpgradeReaction::Invoke(Element* aElement, ErrorResult& aRv)
+{
+ CustomElementRegistry::Upgrade(aElement, mDefinition, aRv);
+}
+
+//-----------------------------------------------------
+// CustomElementCallbackReaction
+
+/* virtual */ void
+CustomElementCallbackReaction::Invoke(Element* aElement, ErrorResult& aRv)
+{
+ mCustomElementCallback->Call();
+}
+
} // namespace dom
-} // namespace mozilla \ No newline at end of file
+} // namespace mozilla
diff --git a/dom/base/CustomElementRegistry.h b/dom/base/CustomElementRegistry.h
index ff803a054..eacf568c9 100644
--- a/dom/base/CustomElementRegistry.h
+++ b/dom/base/CustomElementRegistry.h
@@ -7,13 +7,16 @@
#ifndef mozilla_dom_CustomElementRegistry_h
#define mozilla_dom_CustomElementRegistry_h
+#include "js/GCHashTable.h"
#include "js/TypeDecls.h"
#include "mozilla/Attributes.h"
#include "mozilla/ErrorResult.h"
#include "mozilla/dom/BindingDeclarations.h"
+#include "mozilla/dom/FunctionBinding.h"
+#include "mozilla/dom/WebComponentsBinding.h"
#include "nsCycleCollectionParticipant.h"
+#include "nsGenericHTMLElement.h"
#include "nsWrapperCache.h"
-#include "mozilla/dom/FunctionBinding.h"
class nsDocument;
@@ -22,8 +25,9 @@ namespace dom {
struct CustomElementData;
struct ElementDefinitionOptions;
-struct LifecycleCallbacks;
class CallbackFunction;
+class CustomElementReaction;
+class DocGroup;
class Function;
class Promise;
@@ -32,6 +36,13 @@ struct LifecycleCallbackArgs
nsString name;
nsString oldValue;
nsString newValue;
+ nsString namespaceURI;
+};
+
+struct LifecycleAdoptedCallbackArgs
+{
+ nsCOMPtr<nsIDocument> mOldDocument;
+ nsCOMPtr<nsIDocument> mNewDocument;
};
class CustomElementCallback
@@ -39,8 +50,7 @@ class CustomElementCallback
public:
CustomElementCallback(Element* aThisObject,
nsIDocument::ElementCallbackType aCallbackType,
- CallbackFunction* aCallback,
- CustomElementData* aOwnerData);
+ CallbackFunction* aCallback);
void Traverse(nsCycleCollectionTraversalCallback& aCb) const;
void Call();
void SetArgs(LifecycleCallbackArgs& aArgs)
@@ -50,6 +60,13 @@ public:
mArgs = aArgs;
}
+ void SetAdoptedCallbackArgs(LifecycleAdoptedCallbackArgs& aAdoptedCallbackArgs)
+ {
+ MOZ_ASSERT(mType == nsIDocument::eAdopted,
+ "Arguments are only used by adopted callback.");
+ mAdoptedCallbackArgs = aAdoptedCallbackArgs;
+ }
+
private:
// The this value to use for invocation of the callback.
RefPtr<Element> mThisObject;
@@ -59,9 +76,19 @@ private:
// Arguments to be passed to the callback,
// used by the attribute changed callback.
LifecycleCallbackArgs mArgs;
- // CustomElementData that contains this callback in the
- // callback queue.
- CustomElementData* mOwnerData;
+ LifecycleAdoptedCallbackArgs mAdoptedCallbackArgs;
+};
+
+class CustomElementConstructor final : public CallbackFunction
+{
+public:
+ explicit CustomElementConstructor(CallbackFunction* aOther)
+ : CallbackFunction(aOther)
+ {
+ MOZ_ASSERT(JS::IsConstructor(mCallback));
+ }
+
+ already_AddRefed<Element> Construct(const char* aExecutionReason, ErrorResult& aRv);
};
// Each custom element has an associated callback queue and an element is
@@ -70,63 +97,299 @@ struct CustomElementData
{
NS_INLINE_DECL_REFCOUNTING(CustomElementData)
+ // https://dom.spec.whatwg.org/#concept-element-custom-element-state
+ // CustomElementData is only created on the element which is a custom element
+ // or an upgrade candidate, so the state of an element without
+ // CustomElementData is "uncustomized".
+ enum class State {
+ eUndefined,
+ eFailed,
+ eCustom
+ };
+
explicit CustomElementData(nsIAtom* aType);
- // Objects in this array are transient and empty after each microtask
- // checkpoint.
- nsTArray<nsAutoPtr<CustomElementCallback>> mCallbackQueue;
- // Custom element type, for <button is="x-button"> or <x-button>
- // this would be x-button.
- nsCOMPtr<nsIAtom> mType;
- // The callback that is next to be processed upon calling RunCallbackQueue.
- int32_t mCurrentCallback;
- // Element is being created flag as described in the custom elements spec.
- bool mElementIsBeingCreated;
- // Flag to determine if the created callback has been invoked, thus it
- // determines if other callbacks can be enqueued.
- bool mCreatedCallbackInvoked;
- // The microtask level associated with the callbacks in the callback queue,
- // it is used to determine if a new queue needs to be pushed onto the
- // processing stack.
- int32_t mAssociatedMicroTask;
-
- // Empties the callback queue.
- void RunCallbackQueue();
+ CustomElementData(nsIAtom* aType, State aState);
+
+ // Custom element state as described in the custom element spec.
+ State mState;
+ // custom element reaction queue as described in the custom element spec.
+ // There is 1 reaction in reaction queue, when 1) it becomes disconnected,
+ // 2) it’s adopted into a new document, 3) its attributes are changed,
+ // appended, removed, or replaced.
+ // There are 3 reactions in reaction queue when doing upgrade operation,
+ // e.g., create an element, insert a node.
+ AutoTArray<UniquePtr<CustomElementReaction>, 3> mReactionQueue;
+
+ void SetCustomElementDefinition(CustomElementDefinition* aDefinition);
+ CustomElementDefinition* GetCustomElementDefinition();
+ nsIAtom* GetCustomElementType();
+
+ void Traverse(nsCycleCollectionTraversalCallback& aCb) const;
+ void Unlink();
private:
virtual ~CustomElementData() {}
+
+ // Custom element type, for <button is="x-button"> or <x-button>
+ // this would be x-button.
+ RefPtr<nsIAtom> mType;
+ RefPtr<CustomElementDefinition> mCustomElementDefinition;
};
+#define ALEADY_CONSTRUCTED_MARKER nullptr
+
// The required information for a custom element as defined in:
// https://html.spec.whatwg.org/multipage/scripting.html#custom-element-definition
struct CustomElementDefinition
{
+ NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_NATIVE_CLASS(CustomElementDefinition)
+ NS_INLINE_DECL_CYCLE_COLLECTING_NATIVE_REFCOUNTING(CustomElementDefinition)
+
CustomElementDefinition(nsIAtom* aType,
nsIAtom* aLocalName,
- JSObject* aConstructor,
+ Function* aConstructor,
+ nsCOMArray<nsIAtom>&& aObservedAttributes,
JSObject* aPrototype,
mozilla::dom::LifecycleCallbacks* aCallbacks,
uint32_t aDocOrder);
- // The type (name) for this custom element.
+ // The type (name) for this custom element, for <button is="x-foo"> or <x-foo>
+ // this would be x-foo.
nsCOMPtr<nsIAtom> mType;
// The localname to (e.g. <button is=type> -- this would be button).
nsCOMPtr<nsIAtom> mLocalName;
// The custom element constructor.
- JS::Heap<JSObject *> mConstructor;
+ RefPtr<CustomElementConstructor> mConstructor;
+
+ // The list of attributes that this custom element observes.
+ nsCOMArray<nsIAtom> mObservedAttributes;
// The prototype to use for new custom elements of this type.
JS::Heap<JSObject *> mPrototype;
// The lifecycle callbacks to call for this custom element.
- nsAutoPtr<mozilla::dom::LifecycleCallbacks> mCallbacks;
+ UniquePtr<mozilla::dom::LifecycleCallbacks> mCallbacks;
- // A construction stack.
- // TODO: Bug 1287348 - Implement construction stack for upgrading an element
+ // A construction stack. Use nullptr to represent an "already constructed marker".
+ nsTArray<RefPtr<nsGenericHTMLElement>> mConstructionStack;
// The document custom element order.
uint32_t mDocOrder;
+
+ bool IsCustomBuiltIn()
+ {
+ return mType != mLocalName;
+ }
+
+ bool IsInObservedAttributeList(nsIAtom* aName)
+ {
+ if (mObservedAttributes.IsEmpty()) {
+ return false;
+ }
+
+ return mObservedAttributes.Contains(aName);
+ }
+
+private:
+ ~CustomElementDefinition() {}
+};
+
+class CustomElementReaction
+{
+public:
+ virtual ~CustomElementReaction() = default;
+ virtual void Invoke(Element* aElement, ErrorResult& aRv) = 0;
+ virtual void Traverse(nsCycleCollectionTraversalCallback& aCb) const
+ {
+ }
+
+#if DEBUG
+ bool IsUpgradeReaction()
+ {
+ return mIsUpgradeReaction;
+ }
+
+protected:
+ bool mIsUpgradeReaction = false;
+#endif
+};
+
+class CustomElementUpgradeReaction final : public CustomElementReaction
+{
+public:
+ explicit CustomElementUpgradeReaction(CustomElementDefinition* aDefinition)
+ : mDefinition(aDefinition)
+ {
+#if DEBUG
+ mIsUpgradeReaction = true;
+#endif
+ }
+
+private:
+ virtual void Invoke(Element* aElement, ErrorResult& aRv) override;
+
+ CustomElementDefinition* mDefinition;
+};
+
+class CustomElementCallbackReaction final : public CustomElementReaction
+{
+ public:
+ explicit CustomElementCallbackReaction(UniquePtr<CustomElementCallback> aCustomElementCallback)
+ : mCustomElementCallback(Move(aCustomElementCallback))
+ {
+ }
+
+ virtual void Traverse(nsCycleCollectionTraversalCallback& aCb) const override
+ {
+ mCustomElementCallback->Traverse(aCb);
+ }
+
+ private:
+ virtual void Invoke(Element* aElement, ErrorResult& aRv) override;
+ UniquePtr<CustomElementCallback> mCustomElementCallback;
+};
+
+// https://html.spec.whatwg.org/multipage/scripting.html#custom-element-reactions-stack
+class CustomElementReactionsStack
+{
+public:
+ NS_INLINE_DECL_REFCOUNTING(CustomElementReactionsStack)
+
+ CustomElementReactionsStack()
+ : mIsBackupQueueProcessing(false)
+ , mRecursionDepth(0)
+ , mIsElementQueuePushedForCurrentRecursionDepth(false)
+ {
+ }
+
+ // Hold a strong reference of Element so that it does not get cycle collected
+ // before the reactions in its reaction queue are invoked.
+ // The element reaction queues are stored in CustomElementData.
+ // We need to lookup ElementReactionQueueMap again to get relevant reaction queue.
+ // The choice of 1 for the auto size here is based on gut feeling.
+ typedef AutoTArray<RefPtr<Element>, 1> ElementQueue;
+
+ /**
+ * Enqueue a custom element upgrade reaction
+ * https://html.spec.whatwg.org/multipage/scripting.html#enqueue-a-custom-element-upgrade-reaction
+ */
+ void EnqueueUpgradeReaction(Element* aElement,
+ CustomElementDefinition* aDefinition);
+
+ /**
+ * Enqueue a custom element callback reaction
+ * https://html.spec.whatwg.org/multipage/scripting.html#enqueue-a-custom-element-callback-reaction
+ */
+ void EnqueueCallbackReaction(Element* aElement,
+ UniquePtr<CustomElementCallback> aCustomElementCallback);
+
+ /**
+ * [CEReactions] Before executing the algorithm's steps.
+ * Increase the current recursion depth, and the element queue is pushed
+ * lazily when we really enqueue reactions.
+ *
+ * @return true if the element queue is pushed for "previous" recursion depth.
+ */
+ bool EnterCEReactions()
+ {
+ bool temp = mIsElementQueuePushedForCurrentRecursionDepth;
+ mRecursionDepth++;
+ // The is-element-queue-pushed flag is initially false when entering a new
+ // recursion level. The original value will be cached in AutoCEReaction
+ // and restored after leaving this recursion level.
+ mIsElementQueuePushedForCurrentRecursionDepth = false;
+ return temp;
+ }
+
+ /**
+ * [CEReactions] After executing the algorithm's steps.
+ * Pop and invoke the element queue if it is created and pushed for current
+ * recursion depth, then decrease the current recursion depth.
+ *
+ * @param aCx JSContext used for handling exception thrown by algorithm's
+ * steps, this could be a nullptr.
+ * aWasElementQueuePushed used for restoring status after leaving
+ * current recursion.
+ */
+ void LeaveCEReactions(JSContext* aCx, bool aWasElementQueuePushed)
+ {
+ MOZ_ASSERT(mRecursionDepth);
+
+ if (mIsElementQueuePushedForCurrentRecursionDepth) {
+ Maybe<JS::AutoSaveExceptionState> ases;
+ if (aCx) {
+ ases.emplace(aCx);
+ }
+ PopAndInvokeElementQueue();
+ }
+ mRecursionDepth--;
+ // Restore the is-element-queue-pushed flag cached in AutoCEReaction when
+ // leaving the recursion level.
+ mIsElementQueuePushedForCurrentRecursionDepth = aWasElementQueuePushed;
+
+ MOZ_ASSERT_IF(!mRecursionDepth, mReactionsStack.IsEmpty());
+ }
+
+private:
+ ~CustomElementReactionsStack() {};
+
+ /**
+ * Push a new element queue onto the custom element reactions stack.
+ */
+ void CreateAndPushElementQueue();
+
+ /**
+ * Pop the element queue from the custom element reactions stack, and invoke
+ * custom element reactions in that queue.
+ */
+ void PopAndInvokeElementQueue();
+
+ // The choice of 8 for the auto size here is based on gut feeling.
+ AutoTArray<UniquePtr<ElementQueue>, 8> mReactionsStack;
+ ElementQueue mBackupQueue;
+ // https://html.spec.whatwg.org/#enqueue-an-element-on-the-appropriate-element-queue
+ bool mIsBackupQueueProcessing;
+
+ void InvokeBackupQueue();
+
+ /**
+ * Invoke custom element reactions
+ * https://html.spec.whatwg.org/multipage/scripting.html#invoke-custom-element-reactions
+ */
+ void InvokeReactions(ElementQueue* aElementQueue, nsIGlobalObject* aGlobal);
+
+ void Enqueue(Element* aElement, CustomElementReaction* aReaction);
+
+ // Current [CEReactions] recursion depth.
+ uint32_t mRecursionDepth;
+ // True if the element queue is pushed into reaction stack for current
+ // recursion depth. This will be cached in AutoCEReaction when entering a new
+ // CEReaction recursion and restored after leaving the recursion.
+ bool mIsElementQueuePushedForCurrentRecursionDepth;
+
+private:
+ class BackupQueueMicroTask final : public mozilla::MicroTaskRunnable {
+ public:
+ explicit BackupQueueMicroTask(CustomElementReactionsStack* aReactionStack)
+ : MicroTaskRunnable()
+ , mReactionStack(aReactionStack)
+ {
+ MOZ_ASSERT(!mReactionStack->mIsBackupQueueProcessing,
+ "mIsBackupQueueProcessing should be initially false");
+ mReactionStack->mIsBackupQueueProcessing = true;
+ }
+
+ virtual void Run(AutoSlowOperation& aAso) override
+ {
+ mReactionStack->InvokeBackupQueue();
+ mReactionStack->mIsBackupQueueProcessing = false;
+ }
+
+ private:
+ RefPtr<CustomElementReactionsStack> mReactionStack;
+ };
};
class CustomElementRegistry final : public nsISupports,
@@ -142,41 +405,34 @@ public:
public:
static bool IsCustomElementEnabled(JSContext* aCx = nullptr,
JSObject* aObject = nullptr);
- static already_AddRefed<CustomElementRegistry> Create(nsPIDOMWindowInner* aWindow);
- static void ProcessTopElementQueue();
- static void XPCOMShutdown();
+ explicit CustomElementRegistry(nsPIDOMWindowInner* aWindow);
/**
* Looking up a custom element definition.
* https://html.spec.whatwg.org/#look-up-a-custom-element-definition
*/
CustomElementDefinition* LookupCustomElementDefinition(
- const nsAString& aLocalName, const nsAString* aIs = nullptr) const;
-
- /**
- * Enqueue created callback or register upgrade candidate for
- * newly created custom elements, possibly extending an existing type.
- * ex. <x-button>, <button is="x-button> (type extension)
- */
- void SetupCustomElement(Element* aElement, const nsAString* aTypeExtension);
+ nsIAtom* aNameAtom, nsIAtom* aTypeAtom) const;
- void EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType,
- Element* aCustomElement,
- LifecycleCallbackArgs* aArgs,
- CustomElementDefinition* aDefinition);
+ CustomElementDefinition* LookupCustomElementDefinition(
+ JSContext* aCx, JSObject *aConstructor) const;
- void GetCustomPrototype(nsIAtom* aAtom,
- JS::MutableHandle<JSObject*> aPrototype);
+ static void EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType,
+ Element* aCustomElement,
+ LifecycleCallbackArgs* aArgs,
+ LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs,
+ CustomElementDefinition* aDefinition);
-private:
- explicit CustomElementRegistry(nsPIDOMWindowInner* aWindow);
- ~CustomElementRegistry();
+ /**
+ * Upgrade an element.
+ * https://html.spec.whatwg.org/multipage/scripting.html#upgrades
+ */
+ static void Upgrade(Element* aElement, CustomElementDefinition* aDefinition, ErrorResult& aRv);
/**
* Registers an unresolved custom element that is a candidate for
- * upgrade when the definition is registered via registerElement.
- * |aTypeName| is the name of the custom element type, if it is not
+ * upgrade. |aTypeName| is the name of the custom element type, if it is not
* provided, then element name is used. |aTypeName| should be provided
* when registering a custom element that extends an existing
* element. e.g. <button is="x-button">.
@@ -184,23 +440,48 @@ private:
void RegisterUnresolvedElement(Element* aElement,
nsIAtom* aTypeName = nullptr);
- void UpgradeCandidates(JSContext* aCx,
- nsIAtom* aKey,
- CustomElementDefinition* aDefinition);
+ /**
+ * Unregister an unresolved custom element that is a candidate for
+ * upgrade when a custom element is removed from tree.
+ */
+ void UnregisterUnresolvedElement(Element* aElement,
+ nsIAtom* aTypeName = nullptr);
+private:
+ ~CustomElementRegistry();
+
+ static UniquePtr<CustomElementCallback> CreateCustomElementCallback(
+ nsIDocument::ElementCallbackType aType, Element* aCustomElement,
+ LifecycleCallbackArgs* aArgs,
+ LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs,
+ CustomElementDefinition* aDefinition);
+
+ void UpgradeCandidates(nsIAtom* aKey,
+ CustomElementDefinition* aDefinition,
+ ErrorResult& aRv);
- typedef nsClassHashtable<nsISupportsHashKey, CustomElementDefinition>
+ typedef nsRefPtrHashtable<nsISupportsHashKey, CustomElementDefinition>
DefinitionMap;
typedef nsClassHashtable<nsISupportsHashKey, nsTArray<nsWeakPtr>>
CandidateMap;
+ typedef JS::GCHashMap<JS::Heap<JSObject*>,
+ nsCOMPtr<nsIAtom>,
+ js::MovableCellHasher<JS::Heap<JSObject*>>,
+ js::SystemAllocPolicy> ConstructorMap;
// Hashtable for custom element definitions in web components.
- // Custom prototypes are stored in the compartment where
- // registerElement was called.
+ // Custom prototypes are stored in the compartment where definition was
+ // defined.
DefinitionMap mCustomDefinitions;
+ // Hashtable for looking up definitions by using constructor as key.
+ // Custom elements' name are stored here and we need to lookup
+ // mCustomDefinitions again to get definitions.
+ ConstructorMap mConstructors;
+
typedef nsRefPtrHashtable<nsISupportsHashKey, Promise>
WhenDefinedPromiseMap;
WhenDefinedPromiseMap mWhenDefinedPromiseMap;
+
// The "upgrade candidates map" from the web components spec. Maps from a
// namespace id and local name to a list of elements to upgrade if that
// element is registered as a custom element.
@@ -208,14 +489,6 @@ private:
nsCOMPtr<nsPIDOMWindowInner> mWindow;
- // Array representing the processing stack in the custom elements
- // specification. The processing stack is conceptually a stack of
- // element queues. Each queue is represented by a sequence of
- // CustomElementData in this array, separated by nullptr that
- // represent the boundaries of the items in the stack. The first
- // queue in the stack is the base element queue.
- static mozilla::Maybe<nsTArray<RefPtr<CustomElementData>>> sProcessingStack;
-
// It is used to prevent reentrant invocations of element definition.
bool mIsCustomDefinitionRunning;
@@ -241,6 +514,8 @@ private:
public:
nsISupports* GetParentObject() const;
+ DocGroup* GetDocGroup() const;
+
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
void Define(const nsAString& aName, Function& aFunctionConstructor,
@@ -252,6 +527,31 @@ public:
already_AddRefed<Promise> WhenDefined(const nsAString& aName, ErrorResult& aRv);
};
+class MOZ_RAII AutoCEReaction final {
+ public:
+ // JSContext is allowed to be a nullptr if we are guaranteeing that we're
+ // not doing something that might throw but not finish reporting a JS
+ // exception during the lifetime of the AutoCEReaction.
+ AutoCEReaction(CustomElementReactionsStack* aReactionsStack, JSContext* aCx)
+ : mReactionsStack(aReactionsStack)
+ , mCx(aCx)
+ {
+ mIsElementQueuePushedForPreviousRecursionDepth =
+ mReactionsStack->EnterCEReactions();
+ }
+
+ ~AutoCEReaction()
+ {
+ mReactionsStack->LeaveCEReactions(
+ mCx, mIsElementQueuePushedForPreviousRecursionDepth);
+ }
+
+ private:
+ RefPtr<CustomElementReactionsStack> mReactionsStack;
+ JSContext* mCx;
+ bool mIsElementQueuePushedForPreviousRecursionDepth;
+};
+
} // namespace dom
} // namespace mozilla
diff --git a/dom/base/DOMCursor.cpp b/dom/base/DOMCursor.cpp
index 1f92ac9cc..28cb5e578 100644
--- a/dom/base/DOMCursor.cpp
+++ b/dom/base/DOMCursor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMCursor.h b/dom/base/DOMCursor.h
index 715cde021..0ad1c9c40 100644
--- a/dom/base/DOMCursor.h
+++ b/dom/base/DOMCursor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMError.cpp b/dom/base/DOMError.cpp
index 1566a03c8..93914939b 100644
--- a/dom/base/DOMError.cpp
+++ b/dom/base/DOMError.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMError.h b/dom/base/DOMError.h
index d8ffdbf0d..eb2318757 100644
--- a/dom/base/DOMError.h
+++ b/dom/base/DOMError.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMException.cpp b/dom/base/DOMException.cpp
index 9fbb2f242..b19bf1e78 100644
--- a/dom/base/DOMException.cpp
+++ b/dom/base/DOMException.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMException.h b/dom/base/DOMException.h
index 0f0bf1dbd..8039f1952 100644
--- a/dom/base/DOMException.h
+++ b/dom/base/DOMException.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMImplementation.cpp b/dom/base/DOMImplementation.cpp
index 10e8ec9b4..b23f7b7b4 100644
--- a/dom/base/DOMImplementation.cpp
+++ b/dom/base/DOMImplementation.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMImplementation.h b/dom/base/DOMImplementation.h
index 9ecd91290..404572707 100644
--- a/dom/base/DOMImplementation.h
+++ b/dom/base/DOMImplementation.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMIntersectionObserver.cpp b/dom/base/DOMIntersectionObserver.cpp
index 70b5534ba..bc8f030d0 100644
--- a/dom/base/DOMIntersectionObserver.cpp
+++ b/dom/base/DOMIntersectionObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMIntersectionObserver.h b/dom/base/DOMIntersectionObserver.h
index 8674fe25d..a72454007 100644
--- a/dom/base/DOMIntersectionObserver.h
+++ b/dom/base/DOMIntersectionObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMMatrix.cpp b/dom/base/DOMMatrix.cpp
index 0a8b25526..72c8d9b76 100644
--- a/dom/base/DOMMatrix.cpp
+++ b/dom/base/DOMMatrix.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMMatrix.h b/dom/base/DOMMatrix.h
index db5d03f8a..a9c52fa8c 100644
--- a/dom/base/DOMMatrix.h
+++ b/dom/base/DOMMatrix.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMParser.cpp b/dom/base/DOMParser.cpp
index 55911d477..9dc9d8488 100644
--- a/dom/base/DOMParser.cpp
+++ b/dom/base/DOMParser.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMParser.h b/dom/base/DOMParser.h
index 77c14bc7c..c91b565ca 100644
--- a/dom/base/DOMParser.h
+++ b/dom/base/DOMParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMPoint.cpp b/dom/base/DOMPoint.cpp
index 0ea5d05ae..97eec9e76 100644
--- a/dom/base/DOMPoint.cpp
+++ b/dom/base/DOMPoint.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMPoint.h b/dom/base/DOMPoint.h
index d9a429be5..1a85982cc 100644
--- a/dom/base/DOMPoint.h
+++ b/dom/base/DOMPoint.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMQuad.cpp b/dom/base/DOMQuad.cpp
index 3e10f05e5..9da70c043 100644
--- a/dom/base/DOMQuad.cpp
+++ b/dom/base/DOMQuad.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMQuad.h b/dom/base/DOMQuad.h
index b42df6d2d..89d258a10 100644
--- a/dom/base/DOMQuad.h
+++ b/dom/base/DOMQuad.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMRect.cpp b/dom/base/DOMRect.cpp
index 2c44c6a07..3728ea7a7 100644
--- a/dom/base/DOMRect.cpp
+++ b/dom/base/DOMRect.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMRect.h b/dom/base/DOMRect.h
index d3d103000..da3162be0 100644
--- a/dom/base/DOMRect.h
+++ b/dom/base/DOMRect.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMRequest.cpp b/dom/base/DOMRequest.cpp
index ce6cd1dcd..b58c3cdf1 100644
--- a/dom/base/DOMRequest.cpp
+++ b/dom/base/DOMRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMRequest.h b/dom/base/DOMRequest.h
index 5009452b0..da0ad805e 100644
--- a/dom/base/DOMRequest.h
+++ b/dom/base/DOMRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMStringList.cpp b/dom/base/DOMStringList.cpp
index cae00338e..503b2ecae 100644
--- a/dom/base/DOMStringList.cpp
+++ b/dom/base/DOMStringList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMStringList.h b/dom/base/DOMStringList.h
index d4bc2632d..0061c8b8b 100644
--- a/dom/base/DOMStringList.h
+++ b/dom/base/DOMStringList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DOMTokenListSupportedTokens.h b/dom/base/DOMTokenListSupportedTokens.h
index f68f48554..4b5319838 100644
--- a/dom/base/DOMTokenListSupportedTokens.h
+++ b/dom/base/DOMTokenListSupportedTokens.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DirectionalityUtils.cpp b/dom/base/DirectionalityUtils.cpp
index d9a6c4524..510df817d 100644
--- a/dom/base/DirectionalityUtils.cpp
+++ b/dom/base/DirectionalityUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -728,7 +727,7 @@ WalkDescendantsResetAutoDirection(Element* aElement)
{
nsIContent* child = aElement->GetFirstChild();
while (child) {
- if (child->HasDirAuto()) {
+ if (child->IsElement() && child->AsElement()->HasDirAuto()) {
child = child->GetNextNonChildNode(aElement);
continue;
}
@@ -791,7 +790,7 @@ WalkDescendantsClearAncestorDirAuto(Element* aElement)
{
nsIContent* child = aElement->GetFirstChild();
while (child) {
- if (child->HasDirAuto()) {
+ if (child->IsElement() && child->AsElement()->HasDirAuto()) {
child = child->GetNextNonChildNode(aElement);
continue;
}
diff --git a/dom/base/DirectionalityUtils.h b/dom/base/DirectionalityUtils.h
index ed22792ab..3948d8198 100644
--- a/dom/base/DirectionalityUtils.h
+++ b/dom/base/DirectionalityUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DocGroup.cpp b/dom/base/DocGroup.cpp
index ba9189168..5d7db1fb6 100644
--- a/dom/base/DocGroup.cpp
+++ b/dom/base/DocGroup.cpp
@@ -1,3 +1,7 @@
+/* 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 "mozilla/dom/DocGroup.h"
#include "mozilla/dom/TabGroup.h"
#include "mozilla/Telemetry.h"
@@ -6,11 +10,14 @@
#include "mozilla/StaticPtr.h"
#include "mozilla/ClearOnShutdown.h"
#include "nsIDocShell.h"
+#include "nsDOMMutationObserver.h"
#include "nsNetCID.h"
namespace mozilla {
namespace dom {
+AutoTArray<RefPtr<DocGroup>, 2>* DocGroup::sPendingDocGroups = nullptr;
+
/* static */ void
DocGroup::GetKey(nsIPrincipal* aPrincipal, nsACString& aKey)
{
@@ -47,10 +54,31 @@ DocGroup::DocGroup(TabGroup* aTabGroup, const nsACString& aKey)
DocGroup::~DocGroup()
{
MOZ_ASSERT(mDocuments.IsEmpty());
+ if (!NS_IsMainThread()) {
+ NS_ReleaseOnMainThread(mReactionsStack.forget());
+ }
mTabGroup->mDocGroups.RemoveEntry(mKey);
}
NS_IMPL_ISUPPORTS(DocGroup, nsISupports)
+void
+DocGroup::SignalSlotChange(const HTMLSlotElement* aSlot)
+{
+ if (mSignalSlotList.Contains(aSlot)) {
+ return;
+ }
+
+ mSignalSlotList.AppendElement(const_cast<HTMLSlotElement*>(aSlot));
+
+ if (!sPendingDocGroups) {
+ // Queue a mutation observer compound microtask.
+ nsDOMMutationObserver::QueueMutationObserverMicroTask();
+ sPendingDocGroups = new AutoTArray<RefPtr<DocGroup>, 2>;
+ }
+
+ sPendingDocGroups->AppendElement(this);
+}
+
}
}
diff --git a/dom/base/DocGroup.h b/dom/base/DocGroup.h
index 6ecd284c1..aa5b0f8bf 100644
--- a/dom/base/DocGroup.h
+++ b/dom/base/DocGroup.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -7,7 +6,6 @@
#ifndef DocGroup_h
#define DocGroup_h
-#include "nsIDocument.h"
#include "nsISupports.h"
#include "nsISupportsImpl.h"
#include "nsIPrincipal.h"
@@ -15,6 +13,8 @@
#include "nsString.h"
#include "mozilla/RefPtr.h"
+#include "mozilla/dom/CustomElementRegistry.h"
+#include "mozilla/dom/HTMLSlotElement.h"
namespace mozilla {
namespace dom {
@@ -53,6 +53,14 @@ public:
{
return mTabGroup;
}
+ mozilla::dom::CustomElementReactionsStack* CustomElementReactionsStack()
+ {
+ if (!mReactionsStack) {
+ mReactionsStack = new mozilla::dom::CustomElementReactionsStack();
+ }
+
+ return mReactionsStack;
+ }
void RemoveDocument(nsIDocument* aWindow);
// Iterators for iterating over every document within the DocGroup
@@ -65,6 +73,23 @@ public:
return mDocuments.end();
}
+ // Append aSlot to the list of signal slot list, if it's not in it already
+ // list, and queue a mutation observer microtask.
+ void SignalSlotChange(const mozilla::dom::HTMLSlotElement* aSlot);
+
+ const nsTArray<RefPtr<HTMLSlotElement>>& SignalSlotList() const
+ {
+ return mSignalSlotList;
+ }
+
+ void ClearSignalSlotList()
+ {
+ mSignalSlotList.Clear();
+ }
+
+ // List of DocGroups that has non-empty signal slot list.
+ static AutoTArray<RefPtr<DocGroup>, 2>* sPendingDocGroups;
+
private:
DocGroup(TabGroup* aTabGroup, const nsACString& aKey);
~DocGroup();
@@ -72,6 +97,8 @@ private:
nsCString mKey;
RefPtr<TabGroup> mTabGroup;
nsTArray<nsIDocument*> mDocuments;
+ RefPtr<mozilla::dom::CustomElementReactionsStack> mReactionsStack;
+ nsTArray<RefPtr<HTMLSlotElement>> mSignalSlotList;
};
} // namespace dom
diff --git a/dom/base/DocumentFragment.cpp b/dom/base/DocumentFragment.cpp
index 3eb2a0790..a6d46a25a 100644
--- a/dom/base/DocumentFragment.cpp
+++ b/dom/base/DocumentFragment.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -125,6 +124,8 @@ DocumentFragment::Constructor(const GlobalObject& aGlobal,
return window->GetDoc()->CreateDocumentFragment();
}
+NS_IMPL_CYCLE_COLLECTION_INHERITED(DocumentFragment, FragmentOrElement, mHost)
+
// QueryInterface implementation for DocumentFragment
NS_INTERFACE_MAP_BEGIN(DocumentFragment)
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
diff --git a/dom/base/DocumentFragment.h b/dom/base/DocumentFragment.h
index 68a7f0ff4..3ffc8ac0b 100644
--- a/dom/base/DocumentFragment.h
+++ b/dom/base/DocumentFragment.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -43,6 +42,7 @@ public:
// nsISupports
NS_DECL_ISUPPORTS_INHERITED
+ NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(DocumentFragment, FragmentOrElement)
// interface nsIDOMNode
NS_FORWARD_NSIDOMNODE_TO_NSINODE
@@ -121,15 +121,9 @@ public:
return nullptr;
}
- nsIContent* GetHost() const
- {
- return mHost;
- }
+ Element* GetHost() const { return mHost; }
- void SetHost(nsIContent* aHost)
- {
- mHost = aHost;
- }
+ void SetHost(Element* aHost) { mHost = aHost; }
static already_AddRefed<DocumentFragment>
Constructor(const GlobalObject& aGlobal, ErrorResult& aRv);
@@ -145,7 +139,7 @@ protected:
}
nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
- nsIContent* mHost; // Weak
+ nsCOMPtr<Element> mHost;
};
} // namespace dom
diff --git a/dom/base/DocumentOrShadowRoot.cpp b/dom/base/DocumentOrShadowRoot.cpp
new file mode 100644
index 000000000..621394607
--- /dev/null
+++ b/dom/base/DocumentOrShadowRoot.cpp
@@ -0,0 +1,148 @@
+/* -*- Mode: C++; tab-width: 8; 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 "DocumentOrShadowRoot.h"
+#include "mozilla/dom/StyleSheetList.h"
+#include "nsDocument.h"
+#include "nsFocusManager.h"
+#include "ShadowRoot.h"
+#include "XULDocument.h"
+
+class nsINode;
+class nsIDocument;
+class ShadowRoot;
+
+namespace mozilla {
+namespace dom {
+
+DocumentOrShadowRoot::DocumentOrShadowRoot(mozilla::dom::ShadowRoot* aShadowRoot)
+ : mAsNode(aShadowRoot)
+ , mKind(Kind::ShadowRoot)
+{
+ MOZ_ASSERT(mAsNode);
+}
+
+DocumentOrShadowRoot::DocumentOrShadowRoot(nsIDocument* aDoc)
+ : mAsNode(aDoc)
+ , mKind(Kind::Document)
+{
+ MOZ_ASSERT(mAsNode);
+}
+
+StyleSheetList&
+DocumentOrShadowRoot::EnsureDOMStyleSheets()
+{
+ if (!mDOMStyleSheets) {
+ mDOMStyleSheets = new StyleSheetList(*this);
+ }
+ return *mDOMStyleSheets;
+}
+
+Element*
+DocumentOrShadowRoot::GetElementById(const nsAString& aElementId)
+{
+ if (MOZ_UNLIKELY(aElementId.IsEmpty())) {
+ nsContentUtils::ReportEmptyGetElementByIdArg(AsNode().OwnerDoc());
+ return nullptr;
+ }
+
+ if (nsIdentifierMapEntry* entry = mIdentifierMap.GetEntry(aElementId)) {
+ if (Element* el = entry->GetIdElement()) {
+ return el;
+ }
+ }
+
+ if (MOZ_UNLIKELY(mKind == Kind::Document &&
+ static_cast<nsIDocument&>(AsNode()).IsXULDocument())) {
+ return static_cast<XULDocument&>(AsNode()).GetRefById(aElementId);
+ }
+
+ return nullptr;
+}
+
+already_AddRefed<nsContentList>
+DocumentOrShadowRoot::GetElementsByTagNameNS(const nsAString& aNamespaceURI,
+ const nsAString& aLocalName)
+{
+ ErrorResult rv;
+ RefPtr<nsContentList> list =
+ GetElementsByTagNameNS(aNamespaceURI, aLocalName, rv);
+ if (rv.Failed()) {
+ return nullptr;
+ }
+ return list.forget();
+}
+
+already_AddRefed<nsContentList>
+DocumentOrShadowRoot::GetElementsByTagNameNS(const nsAString& aNamespaceURI,
+ const nsAString& aLocalName,
+ mozilla::ErrorResult& aResult)
+{
+ int32_t nameSpaceId = kNameSpaceID_Wildcard;
+
+ if (!aNamespaceURI.EqualsLiteral("*")) {
+ aResult =
+ nsContentUtils::NameSpaceManager()->RegisterNameSpace(aNamespaceURI,
+ nameSpaceId);
+ if (aResult.Failed()) {
+ return nullptr;
+ }
+ }
+
+ NS_ASSERTION(nameSpaceId != kNameSpaceID_Unknown, "Unexpected namespace ID!");
+ return NS_GetContentList(&AsNode(), nameSpaceId, aLocalName);
+}
+
+already_AddRefed<nsContentList>
+DocumentOrShadowRoot::GetElementsByClassName(const nsAString& aClasses)
+{
+ return nsContentUtils::GetElementsByClassName(&AsNode(), aClasses);
+}
+
+nsIContent*
+DocumentOrShadowRoot::Retarget(nsIContent* aContent) const
+{
+ for (nsIContent* cur = aContent;
+ cur;
+ cur = cur->GetContainingShadowHost()) {
+ if (cur->SubtreeRoot() == &AsNode()) {
+ return cur;
+ }
+ }
+ return nullptr;
+}
+
+Element*
+DocumentOrShadowRoot::GetRetargetedFocusedElement()
+{
+ if (nsCOMPtr<nsPIDOMWindowOuter> window = AsNode().OwnerDoc()->GetWindow()) {
+ nsCOMPtr<nsPIDOMWindowOuter> focusedWindow;
+ nsIContent* focusedContent =
+ nsFocusManager::GetFocusedDescendant(window,
+ false,
+ getter_AddRefs(focusedWindow));
+ // be safe and make sure the element is from this document
+ if (focusedContent && focusedContent->OwnerDoc() == AsNode().OwnerDoc()) {
+ if (focusedContent->ChromeOnlyAccess()) {
+ focusedContent = focusedContent->FindFirstNonChromeOnlyAccessContent();
+ }
+
+ if (focusedContent) {
+ if (!nsDocument::IsWebComponentsEnabled(focusedContent)) {
+ return focusedContent->AsElement();
+ }
+
+ if (nsIContent* retarget = Retarget(focusedContent)) {
+ return retarget->AsElement();
+ }
+ }
+ }
+ }
+
+ return nullptr;
+}
+
+}
+}
diff --git a/dom/base/DocumentOrShadowRoot.h b/dom/base/DocumentOrShadowRoot.h
new file mode 100644
index 000000000..89117f331
--- /dev/null
+++ b/dom/base/DocumentOrShadowRoot.h
@@ -0,0 +1,159 @@
+/* -*- Mode: C++; tab-width: 8; 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/. */
+
+#ifndef mozilla_dom_DocumentOrShadowRoot_h__
+#define mozilla_dom_DocumentOrShadowRoot_h__
+
+#include "nsTArray.h"
+#include "nsIdentifierMapEntry.h"
+#include "nsContentListDeclarations.h"
+#include "nsNameSpaceManager.h"
+#include "mozilla/dom/NameSpaceConstants.h"
+
+class nsContentList;
+class nsINode;
+
+namespace mozilla {
+class StyleSheet;
+
+namespace dom {
+
+class StyleSheetList;
+class ShadowRoot;
+
+/**
+ * A class meant to be shared by ShadowRoot and Document, that holds a list of
+ * stylesheets.
+ *
+ * TODO(emilio, bug 1418159): In the future this should hold most of the
+ * relevant style state, this should allow us to fix bug 548397.
+ */
+class DocumentOrShadowRoot
+{
+ enum class Kind {
+ Document,
+ ShadowRoot,
+ };
+
+public:
+ explicit DocumentOrShadowRoot(nsIDocument*);
+ explicit DocumentOrShadowRoot(mozilla::dom::ShadowRoot*);
+
+ nsINode& AsNode()
+ {
+ return *mAsNode;
+ }
+
+ const nsINode& AsNode() const
+ {
+ return *mAsNode;
+ }
+
+ StyleSheet* SheetAt(size_t aIndex) const
+ {
+ return mStyleSheets.SafeElementAt(aIndex);
+ }
+
+ size_t SheetCount() const
+ {
+ return mStyleSheets.Length();
+ }
+
+ int32_t IndexOfSheet(const StyleSheet& aSheet) const
+ {
+ return mStyleSheets.IndexOf(&aSheet);
+ }
+
+ void InsertSheetAt(size_t aIndex, StyleSheet& aSheet)
+ {
+ mStyleSheets.InsertElementAt(aIndex, &aSheet);
+ }
+
+ void RemoveSheet(StyleSheet& aSheet)
+ {
+ mStyleSheets.RemoveElement(&aSheet);
+ }
+
+ void AppendStyleSheet(StyleSheet& aSheet)
+ {
+ mStyleSheets.AppendElement(&aSheet);
+ }
+
+ StyleSheetList& EnsureDOMStyleSheets();
+
+ Element* GetElementById(const nsAString& aElementId);
+
+ /**
+ * This method returns _all_ the elements in this scope which have id
+ * aElementId, if there are any. Otherwise it returns null.
+ *
+ * This is useful for stuff like QuerySelector optimization and such.
+ */
+ inline const nsTArray<Element*>*
+ GetAllElementsForId(const nsAString& aElementId) const;
+
+ already_AddRefed<nsContentList>
+ GetElementsByTagName(const nsAString& aTagName)
+ {
+ return NS_GetContentList(&AsNode(), kNameSpaceID_Unknown, aTagName);
+ }
+
+ already_AddRefed<nsContentList>
+ GetElementsByTagNameNS(const nsAString& aNamespaceURI,
+ const nsAString& aLocalName);
+
+ already_AddRefed<nsContentList>
+ GetElementsByTagNameNS(const nsAString& aNamespaceURI,
+ const nsAString& aLocalName,
+ mozilla::ErrorResult&);
+
+ already_AddRefed<nsContentList>
+ GetElementsByClassName(const nsAString& aClasses);
+
+ ~DocumentOrShadowRoot() = default;
+
+protected:
+ nsIContent* Retarget(nsIContent* aContent) const;
+
+ /**
+ * If focused element's subtree root is this document or shadow root, return
+ * focused element, otherwise, get the shadow host recursively until the
+ * shadow host's subtree root is this document or shadow root.
+ */
+ Element* GetRetargetedFocusedElement();
+
+ nsTArray<RefPtr<mozilla::StyleSheet>> mStyleSheets;
+ RefPtr<mozilla::dom::StyleSheetList> mDOMStyleSheets;
+
+ /*
+ * mIdentifierMap works as follows for IDs:
+ * 1) Attribute changes affect the table immediately (removing and adding
+ * entries as needed).
+ * 2) Removals from the DOM affect the table immediately
+ * 3) Additions to the DOM always update existing entries for names, and add
+ * new ones for IDs.
+ */
+ nsTHashtable<nsIdentifierMapEntry> mIdentifierMap;
+
+ nsINode* mAsNode;
+ const Kind mKind;
+};
+
+inline const nsTArray<Element*>*
+DocumentOrShadowRoot::GetAllElementsForId(const nsAString& aElementId) const
+{
+ if (aElementId.IsEmpty()) {
+ return nullptr;
+ }
+
+ nsIdentifierMapEntry* entry = mIdentifierMap.GetEntry(aElementId);
+ return entry ? &entry->GetIdElements() : nullptr;
+}
+
+}
+
+}
+
+#endif
diff --git a/dom/base/DocumentType.cpp b/dom/base/DocumentType.cpp
index d6a5cce85..13cbc45a3 100644
--- a/dom/base/DocumentType.cpp
+++ b/dom/base/DocumentType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/DocumentType.h b/dom/base/DocumentType.h
index 50493541f..2c4ca9d9e 100644
--- a/dom/base/DocumentType.h
+++ b/dom/base/DocumentType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Element.cpp b/dom/base/Element.cpp
index 0054f4800..9ba065238 100644
--- a/dom/base/Element.cpp
+++ b/dom/base/Element.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -166,8 +165,7 @@ nsIContent::DoGetID() const
const nsAttrValue*
Element::DoGetClasses() const
{
- MOZ_ASSERT(HasFlag(NODE_MAY_HAVE_CLASS), "Unexpected call");
-
+ MOZ_ASSERT(MayHaveClass(), "Unexpected call");
if (IsSVGElement()) {
const nsAttrValue* animClass =
static_cast<const nsSVGElement*>(this)->GetAnimatedClassName();
@@ -470,46 +468,11 @@ Element::GetBindingURL(nsIDocument *aDocument, css::URLValue **aResult)
JSObject*
Element::WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
{
- JS::Rooted<JSObject*> givenProto(aCx, aGivenProto);
- JS::Rooted<JSObject*> customProto(aCx);
-
- if (!givenProto) {
- // Custom element prototype swizzling.
- CustomElementData* data = GetCustomElementData();
- if (data) {
- // If this is a registered custom element then fix the prototype.
- nsContentUtils::GetCustomPrototype(OwnerDoc(), NodeInfo()->NamespaceID(),
- data->mType, &customProto);
- if (customProto &&
- NodePrincipal()->SubsumesConsideringDomain(nsContentUtils::ObjectPrincipal(customProto))) {
- // Just go ahead and create with the right proto up front. Set
- // customProto to null to flag that we don't need to do any post-facto
- // proto fixups here.
- givenProto = customProto;
- customProto = nullptr;
- }
- }
- }
-
- JS::Rooted<JSObject*> obj(aCx, nsINode::WrapObject(aCx, givenProto));
+ JS::Rooted<JSObject*> obj(aCx, nsINode::WrapObject(aCx, aGivenProto));
if (!obj) {
return nullptr;
}
- if (customProto) {
- // We want to set the custom prototype in the compartment where it was
- // registered. In the case that |obj| and |prototype| are in different
- // compartments, this will set the prototype on the |obj|'s wrapper and
- // thus only visible in the wrapper's compartment, since we know obj's
- // principal does not subsume customProto's in this case.
- JSAutoCompartment ac(aCx, customProto);
- JS::Rooted<JSObject*> wrappedObj(aCx, obj);
- if (!JS_WrapObject(aCx, &wrappedObj) ||
- !JS_SetPrototype(aCx, wrappedObj, customProto)) {
- return nullptr;
- }
- }
-
nsIDocument* doc;
if (HasFlag(NODE_FORCE_XBL_BINDINGS)) {
doc = OwnerDoc();
@@ -782,7 +745,7 @@ Element::Scroll(const CSSIntPoint& aScroll, const ScrollOptions& aOptions)
if (aOptions.mBehavior == ScrollBehavior::Smooth) {
scrollMode = nsIScrollableFrame::SMOOTH_MSD;
} else if (aOptions.mBehavior == ScrollBehavior::Auto) {
- ScrollbarStyles styles = sf->GetScrollbarStyles();
+ ScrollStyles styles = sf->GetScrollStyles();
if (styles.mScrollBehavior == NS_STYLE_SCROLL_BEHAVIOR_SMOOTH) {
scrollMode = nsIScrollableFrame::SMOOTH_MSD;
}
@@ -871,7 +834,7 @@ Element::SetScrollTop(int32_t aScrollTop)
nsIScrollableFrame* sf = GetScrollFrame();
if (sf) {
nsIScrollableFrame::ScrollMode scrollMode = nsIScrollableFrame::INSTANT;
- if (sf->GetScrollbarStyles().mScrollBehavior == NS_STYLE_SCROLL_BEHAVIOR_SMOOTH) {
+ if (sf->GetScrollStyles().mScrollBehavior == NS_STYLE_SCROLL_BEHAVIOR_SMOOTH) {
scrollMode = nsIScrollableFrame::SMOOTH_MSD;
}
sf->ScrollToCSSPixels(CSSIntPoint(sf->GetScrollPositionCSSPixels().x,
@@ -893,7 +856,7 @@ Element::SetScrollLeft(int32_t aScrollLeft)
nsIScrollableFrame* sf = GetScrollFrame();
if (sf) {
nsIScrollableFrame::ScrollMode scrollMode = nsIScrollableFrame::INSTANT;
- if (sf->GetScrollbarStyles().mScrollBehavior == NS_STYLE_SCROLL_BEHAVIOR_SMOOTH) {
+ if (sf->GetScrollStyles().mScrollBehavior == NS_STYLE_SCROLL_BEHAVIOR_SMOOTH) {
scrollMode = nsIScrollableFrame::SMOOTH_MSD;
}
@@ -1089,9 +1052,102 @@ Element::RemoveFromIdTable()
}
}
+void
+Element::SetSlot(const nsAString& aName, ErrorResult& aError)
+{
+ aError = SetAttr(kNameSpaceID_None, nsGkAtoms::slot, aName, true);
+}
+
+void
+Element::GetSlot(nsAString& aName)
+{
+ GetAttr(kNameSpaceID_None, nsGkAtoms::slot, aName);
+}
+
+// https://dom.spec.whatwg.org/#dom-element-shadowroot
+ShadowRoot*
+Element::GetShadowRootByMode() const
+{
+ /**
+ * 1. Let shadow be context object???s shadow root.
+ * 2. If shadow is null or its mode is "closed", then return null.
+ */
+ ShadowRoot* shadowRoot = GetShadowRoot();
+ if (!shadowRoot || shadowRoot->IsClosed()) {
+ return nullptr;
+ }
+
+ /**
+ * 3. Return shadow.
+ */
+ return shadowRoot;
+}
+
+// https://dom.spec.whatwg.org/#dom-element-attachshadow
+already_AddRefed<ShadowRoot>
+Element::AttachShadow(const ShadowRootInit& aInit, ErrorResult& aError)
+{
+ /**
+ * 1. If context object???s namespace is not the HTML namespace,
+ * then throw a "NotSupportedError" DOMException.
+ */
+ if (!IsHTMLElement()) {
+ aError.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
+ return nullptr;
+ }
+
+ /**
+ * 2. If context object???s local name is not
+ * a valid custom element name, "article", "aside", "blockquote",
+ * "body", "div", "footer", "h1", "h2", "h3", "h4", "h5", "h6",
+ * "header", "main" "nav", "p", "section", or "span",
+ * then throw a "NotSupportedError" DOMException.
+ */
+ nsIAtom* nameAtom = NodeInfo()->NameAtom();
+ if (!(nsContentUtils::IsCustomElementName(nameAtom) ||
+ nameAtom == nsGkAtoms::article ||
+ nameAtom == nsGkAtoms::aside ||
+ nameAtom == nsGkAtoms::blockquote ||
+ nameAtom == nsGkAtoms::body ||
+ nameAtom == nsGkAtoms::div ||
+ nameAtom == nsGkAtoms::footer ||
+ nameAtom == nsGkAtoms::h1 ||
+ nameAtom == nsGkAtoms::h2 ||
+ nameAtom == nsGkAtoms::h3 ||
+ nameAtom == nsGkAtoms::h4 ||
+ nameAtom == nsGkAtoms::h5 ||
+ nameAtom == nsGkAtoms::h6 ||
+ nameAtom == nsGkAtoms::header ||
+ nameAtom == nsGkAtoms::main ||
+ nameAtom == nsGkAtoms::nav ||
+ nameAtom == nsGkAtoms::p ||
+ nameAtom == nsGkAtoms::section ||
+ nameAtom == nsGkAtoms::span)) {
+ aError.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
+ return nullptr;
+ }
+
+ return AttachShadowInternal(aInit.mMode == ShadowRootMode::Closed, aError);
+}
+
already_AddRefed<ShadowRoot>
Element::CreateShadowRoot(ErrorResult& aError)
{
+ return AttachShadowInternal(false, aError);
+}
+
+already_AddRefed<ShadowRoot>
+Element::AttachShadowInternal(bool aClosed, ErrorResult& aError)
+{
+ /**
+ * 3. If context object is a shadow host, then throw
+ * an "InvalidStateError" DOMException.
+ */
+ if (GetShadowRoot()) {
+ aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
+ return nullptr;
+ }
+
nsAutoScriptBlocker scriptBlocker;
RefPtr<mozilla::dom::NodeInfo> nodeInfo;
@@ -1109,12 +1165,9 @@ Element::CreateShadowRoot(ErrorResult& aError)
return nullptr;
}
- nsIDocument* doc = GetComposedDoc();
- nsIContent* destroyedFramesFor = nullptr;
- if (doc) {
- nsIPresShell* shell = doc->GetShell();
- if (shell) {
- shell->DestroyFramesFor(this, &destroyedFramesFor);
+ if (nsIDocument* doc = GetComposedDoc()) {
+ if (nsIPresShell* shell = doc->GetShell()) {
+ shell->DestroyFramesForAndRestyle(this);
MOZ_ASSERT(!shell->FrameManager()->GetDisplayContentsStyleFor(this));
}
}
@@ -1126,29 +1179,20 @@ Element::CreateShadowRoot(ErrorResult& aError)
// Calling SetPrototypeBinding takes ownership of protoBinding.
docInfo->SetPrototypeBinding(NS_LITERAL_CSTRING("shadowroot"), protoBinding);
- RefPtr<ShadowRoot> shadowRoot = new ShadowRoot(this, nodeInfo.forget(),
- protoBinding);
+ /**
+ * 4. Let shadow be a new shadow root whose node document is
+ * context object???s node document, host is context object,
+ * and mode is init???s mode.
+ */
+ RefPtr<ShadowRoot> shadowRoot =
+ new ShadowRoot(this, aClosed, nodeInfo.forget(), protoBinding);
shadowRoot->SetIsComposedDocParticipant(IsInComposedDoc());
- // Replace the old ShadowRoot with the new one and let the old
- // ShadowRoot know about the younger ShadowRoot because the old
- // ShadowRoot is projected into the younger ShadowRoot's shadow
- // insertion point (if it exists).
- ShadowRoot* olderShadow = GetShadowRoot();
+ /**
+ * 5. Set context object???s shadow root to shadow.
+ */
SetShadowRoot(shadowRoot);
- if (olderShadow) {
- olderShadow->SetYoungerShadow(shadowRoot);
-
- // Unbind children of older shadow root because they
- // are no longer in the composed tree.
- for (nsIContent* child = olderShadow->GetFirstChild(); child;
- child = child->GetNextSibling()) {
- child->UnbindFromTree(true, false);
- }
-
- olderShadow->SetIsComposedDocParticipant(false);
- }
// xblBinding takes ownership of docInfo.
RefPtr<nsXBLBinding> xblBinding = new nsXBLBinding(shadowRoot, protoBinding);
@@ -1157,96 +1201,12 @@ Element::CreateShadowRoot(ErrorResult& aError)
SetXBLBinding(xblBinding);
- // Recreate the frame for the bound content because binding a ShadowRoot
- // changes how things are rendered.
- if (doc) {
- MOZ_ASSERT(doc == GetComposedDoc());
- nsIPresShell* shell = doc->GetShell();
- if (shell) {
- shell->CreateFramesFor(destroyedFramesFor);
- }
- }
-
+ /**
+ * 6. Return shadow.
+ */
return shadowRoot.forget();
}
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(DestinationInsertionPointList, mParent,
- mDestinationPoints)
-
-NS_INTERFACE_TABLE_HEAD(DestinationInsertionPointList)
- NS_WRAPPERCACHE_INTERFACE_TABLE_ENTRY
- NS_INTERFACE_TABLE(DestinationInsertionPointList, nsINodeList, nsIDOMNodeList)
- NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(DestinationInsertionPointList)
-NS_INTERFACE_MAP_END
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(DestinationInsertionPointList)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(DestinationInsertionPointList)
-
-DestinationInsertionPointList::DestinationInsertionPointList(Element* aElement)
- : mParent(aElement)
-{
- nsTArray<nsIContent*>* destPoints = aElement->GetExistingDestInsertionPoints();
- if (destPoints) {
- for (uint32_t i = 0; i < destPoints->Length(); i++) {
- mDestinationPoints.AppendElement(destPoints->ElementAt(i));
- }
- }
-}
-
-DestinationInsertionPointList::~DestinationInsertionPointList()
-{
-}
-
-nsIContent*
-DestinationInsertionPointList::Item(uint32_t aIndex)
-{
- return mDestinationPoints.SafeElementAt(aIndex);
-}
-
-NS_IMETHODIMP
-DestinationInsertionPointList::Item(uint32_t aIndex, nsIDOMNode** aReturn)
-{
- nsIContent* item = Item(aIndex);
- if (!item) {
- return NS_ERROR_FAILURE;
- }
-
- return CallQueryInterface(item, aReturn);
-}
-
-uint32_t
-DestinationInsertionPointList::Length() const
-{
- return mDestinationPoints.Length();
-}
-
-NS_IMETHODIMP
-DestinationInsertionPointList::GetLength(uint32_t* aLength)
-{
- *aLength = Length();
- return NS_OK;
-}
-
-int32_t
-DestinationInsertionPointList::IndexOf(nsIContent* aContent)
-{
- return mDestinationPoints.IndexOf(aContent);
-}
-
-JSObject*
-DestinationInsertionPointList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
-{
- return NodeListBinding::Wrap(aCx, this, aGivenProto);
-}
-
-already_AddRefed<DestinationInsertionPointList>
-Element::GetDestinationInsertionPoints()
-{
- RefPtr<DestinationInsertionPointList> list =
- new DestinationInsertionPointList(this);
- return list.forget();
-}
-
void
Element::GetAttribute(const nsAString& aName, DOMString& aReturn)
{
@@ -1595,7 +1555,7 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
#endif
{
if (aBindingParent) {
- nsDOMSlots *slots = DOMSlots();
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
slots->mBindingParent = aBindingParent; // Weak, so no addref happens.
}
@@ -1618,7 +1578,7 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
}
ShadowRoot* parentContainingShadow = aParent->GetContainingShadow();
if (parentContainingShadow) {
- DOMSlots()->mContainingShadow = parentContainingShadow;
+ ExtendedDOMSlots()->mContainingShadow = parentContainingShadow;
}
}
@@ -1684,14 +1644,17 @@ Element::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
SetSubtreeRootPointer(aParent->SubtreeRoot());
}
- nsIDocument* composedDoc = GetComposedDoc();
- if (composedDoc) {
- // Attached callback must be enqueued whenever custom element is inserted into a
- // document and this document has a browsing context.
- if (GetCustomElementData() && composedDoc->GetDocShell()) {
- // Enqueue an attached callback for the custom element.
- nsContentUtils::EnqueueLifecycleCallback(
- composedDoc, nsIDocument::eAttached, this);
+ if (CustomElementRegistry::IsCustomElementEnabled() && IsInComposedDoc()) {
+ // Connected callback must be enqueued whenever a custom element becomes
+ // connected.
+ CustomElementData* data = GetCustomElementData();
+ if (data) {
+ if (data->mState == CustomElementData::State::eCustom) {
+ nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eConnected, this);
+ } else {
+ // Step 7.7.2.2 https://dom.spec.whatwg.org/#concept-node-insert
+ nsContentUtils::TryToUpgradeElement(this);
+ }
}
}
@@ -1927,7 +1890,7 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent)
nsPresContext* presContext = presShell->GetPresContext();
if (presContext) {
MOZ_ASSERT(this !=
- presContext->GetViewportScrollbarStylesOverrideNode(),
+ presContext->GetViewportScrollStylesOverrideNode(),
"Leaving behind a raw pointer to this node (as having "
"propagated scrollbar styles) - that's dangerous...");
}
@@ -1986,12 +1949,21 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent)
document->ClearBoxObjectFor(this);
- // Detached must be enqueued whenever custom element is removed from
- // the document and this document has a browsing context.
- if (GetCustomElementData() && document->GetDocShell()) {
- // Enqueue a detached callback for the custom element.
- nsContentUtils::EnqueueLifecycleCallback(
- document, nsIDocument::eDetached, this);
+ // Disconnected must be enqueued whenever a connected custom element becomes
+ // disconnected.
+ if (CustomElementRegistry::IsCustomElementEnabled()) {
+ CustomElementData* data = GetCustomElementData();
+ if (data) {
+ if (data->mState == CustomElementData::State::eCustom) {
+ nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eDisconnected,
+ this);
+ } else {
+ // Remove an unresolved custom element that is a candidate for
+ // upgrade when a custom element is disconnected.
+ // We will make sure it's shadow-including tree order in bug 1326028.
+ nsContentUtils::UnregisterUnresolvedElement(this);
+ }
+ }
}
}
@@ -2007,7 +1979,7 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent)
}
#endif
- nsDOMSlots* slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
if (clearBindingParent) {
slots->mBindingParent = nullptr;
@@ -2055,7 +2027,7 @@ Element::UnbindFromTree(bool aDeep, bool aNullParent)
nsICSSDeclaration*
Element::GetSMILOverrideStyle()
{
- Element::nsDOMSlots *slots = DOMSlots();
+ Element::nsExtendedDOMSlots* slots = ExtendedDOMSlots();
if (!slots->mSMILOverrideStyle) {
slots->mSMILOverrideStyle = new nsDOMCSSAttributeDeclaration(this, true);
@@ -2067,7 +2039,7 @@ Element::GetSMILOverrideStyle()
DeclarationBlock*
Element::GetSMILOverrideStyleDeclaration()
{
- Element::nsDOMSlots *slots = GetExistingDOMSlots();
+ Element::nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
return slots ? slots->mSMILOverrideStyleDeclaration.get() : nullptr;
}
@@ -2075,7 +2047,7 @@ nsresult
Element::SetSMILOverrideStyleDeclaration(DeclarationBlock* aDeclaration,
bool aNotify)
{
- Element::nsDOMSlots *slots = DOMSlots();
+ Element::nsExtendedDOMSlots* slots = ExtendedDOMSlots();
slots->mSMILOverrideStyleDeclaration = aDeclaration;
@@ -2367,7 +2339,8 @@ Element::MaybeCheckSameAttrVal(int32_t aNamespaceID,
bool aNotify,
nsAttrValue& aOldValue,
uint8_t* aModType,
- bool* aHasListeners)
+ bool* aHasListeners,
+ bool* aOldValueSet)
{
bool modification = false;
*aHasListeners = aNotify &&
@@ -2375,6 +2348,8 @@ Element::MaybeCheckSameAttrVal(int32_t aNamespaceID,
NS_EVENT_BITS_MUTATION_ATTRMODIFIED,
this);
+ *aOldValueSet = false;
+
// If we have no listeners and aNotify is false, we are almost certainly
// coming from the content sink and will almost certainly have no previous
// value. Even if we do, setting the value is cheap when we have no
@@ -2398,6 +2373,7 @@ Element::MaybeCheckSameAttrVal(int32_t aNamespaceID,
// We have to serialize the value anyway in order to create the
// mutation event so there's no cost in doing it now.
aOldValue.SetToSerialized(*info.mValue);
+ *aOldValueSet = true;
}
bool valueMatches = aValue.EqualsAsStrings(*info.mValue);
if (valueMatches && aPrefix == info.mName->GetPrefix()) {
@@ -2417,10 +2393,12 @@ Element::OnlyNotifySameValueSet(int32_t aNamespaceID, nsIAtom* aName,
nsIAtom* aPrefix,
const nsAttrValueOrString& aValue,
bool aNotify, nsAttrValue& aOldValue,
- uint8_t* aModType, bool* aHasListeners)
+ uint8_t* aModType, bool* aHasListeners,
+ bool* aOldValueSet)
{
if (!MaybeCheckSameAttrVal(aNamespaceID, aName, aPrefix, aValue, aNotify,
- aOldValue, aModType, aHasListeners)) {
+ aOldValue, aModType, aHasListeners,
+ aOldValueSet)) {
return false;
}
@@ -2430,11 +2408,44 @@ Element::OnlyNotifySameValueSet(int32_t aNamespaceID, nsIAtom* aName,
}
nsresult
+Element::SetSingleClassFromParser(nsIAtom* aSingleClassName)
+{
+ // Keep this in sync with SetAttr and SetParsedAttr below.
+
+ if (!mAttrsAndChildren.CanFitMoreAttrs()) {
+ return NS_ERROR_FAILURE;
+ }
+
+ nsAttrValue value(aSingleClassName);
+
+ nsIDocument* document = GetComposedDoc();
+ mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL, false);
+
+ // In principle, BeforeSetAttr should be called here if a node type
+ // existed that wanted to do something special for class, but there
+ // is no such node type, so calling SetMayHaveClass() directly.
+ SetMayHaveClass();
+
+ return SetAttrAndNotify(kNameSpaceID_None,
+ nsGkAtoms::_class,
+ nullptr, // prefix
+ nullptr, // old value
+ value,
+ static_cast<uint8_t>(nsIDOMMutationEvent::ADDITION),
+ false, // hasListeners
+ false, // notify
+ kCallAfterSetAttr,
+ document,
+ updateBatch);
+}
+
+nsresult
Element::SetAttr(int32_t aNamespaceID, nsIAtom* aName,
nsIAtom* aPrefix, const nsAString& aValue,
bool aNotify)
{
- // Keep this in sync with SetParsedAttr below
+ // Keep this in sync with SetParsedAttr below and SetSingleClassFromParser
+ // above.
NS_ENSURE_ARG_POINTER(aName);
NS_ASSERTION(aNamespaceID != kNameSpaceID_Unknown,
@@ -2446,17 +2457,27 @@ Element::SetAttr(int32_t aNamespaceID, nsIAtom* aName,
uint8_t modType;
bool hasListeners;
+ // We don't want to spend time preparsing class attributes if the value is not
+ // changing, so just init our nsAttrValueOrString with aValue for the
+ // OnlyNotifySameValueSet call.
nsAttrValueOrString value(aValue);
nsAttrValue oldValue;
+ bool oldValueSet;
if (OnlyNotifySameValueSet(aNamespaceID, aName, aPrefix, value, aNotify,
- oldValue, &modType, &hasListeners)) {
- return NS_OK;
+ oldValue, &modType, &hasListeners, &oldValueSet)) {
+ return OnAttrSetButNotChanged(aNamespaceID, aName, value, aNotify);
}
- nsresult rv = BeforeSetAttr(aNamespaceID, aName, &value, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
- nsAttrValue* preparsedAttrValue = value.GetStoredAttrValue();
+ nsAttrValue attrValue;
+ nsAttrValue* preparsedAttrValue;
+ if (aNamespaceID == kNameSpaceID_None && aName == nsGkAtoms::_class) {
+ attrValue.ParseAtomArray(aValue);
+ value.ResetToAttrValue(attrValue);
+ preparsedAttrValue = &attrValue;
+ } else {
+ preparsedAttrValue = nullptr;
+ }
if (aNotify) {
nsNodeUtils::AttributeWillChange(this, aNamespaceID, aName, modType,
@@ -2465,21 +2486,23 @@ Element::SetAttr(int32_t aNamespaceID, nsIAtom* aName,
// Hold a script blocker while calling ParseAttribute since that can call
// out to id-observers
- nsAutoScriptBlocker scriptBlocker;
+ nsIDocument* document = GetComposedDoc();
+ mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL, aNotify);
- nsAttrValue attrValue;
- if (preparsedAttrValue) {
- attrValue.SwapValueWith(*preparsedAttrValue);
- }
- // Even the value was pre-parsed in BeforeSetAttr, we still need to call
- // ParseAttribute because it can have side effects.
- if (!ParseAttribute(aNamespaceID, aName, aValue, attrValue)) {
+ nsresult rv = BeforeSetAttr(aNamespaceID, aName, &value, aNotify);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ if (!preparsedAttrValue &&
+ !ParseAttribute(aNamespaceID, aName, aValue, attrValue)) {
attrValue.SetTo(aValue);
}
- return SetAttrAndNotify(aNamespaceID, aName, aPrefix, oldValue,
+ PreIdMaybeChange(aNamespaceID, aName, &value);
+
+ return SetAttrAndNotify(aNamespaceID, aName, aPrefix,
+ oldValueSet ? &oldValue : nullptr,
attrValue, modType, hasListeners, aNotify,
- kCallAfterSetAttr);
+ kCallAfterSetAttr, document, updateBatch);
}
nsresult
@@ -2487,7 +2510,7 @@ Element::SetParsedAttr(int32_t aNamespaceID, nsIAtom* aName,
nsIAtom* aPrefix, nsAttrValue& aParsedValue,
bool aNotify)
{
- // Keep this in sync with SetAttr above
+ // Keep this in sync with SetAttr and SetSingleClassFromParser above
NS_ENSURE_ARG_POINTER(aName);
NS_ASSERTION(aNamespaceID != kNameSpaceID_Unknown,
@@ -2502,41 +2525,46 @@ Element::SetParsedAttr(int32_t aNamespaceID, nsIAtom* aName,
bool hasListeners;
nsAttrValueOrString value(aParsedValue);
nsAttrValue oldValue;
+ bool oldValueSet;
if (OnlyNotifySameValueSet(aNamespaceID, aName, aPrefix, value, aNotify,
- oldValue, &modType, &hasListeners)) {
- return NS_OK;
+ oldValue, &modType, &hasListeners, &oldValueSet)) {
+ return OnAttrSetButNotChanged(aNamespaceID, aName, value, aNotify);
}
- nsresult rv = BeforeSetAttr(aNamespaceID, aName, &value, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
if (aNotify) {
nsNodeUtils::AttributeWillChange(this, aNamespaceID, aName, modType,
&aParsedValue);
}
- return SetAttrAndNotify(aNamespaceID, aName, aPrefix, oldValue,
+ nsresult rv = BeforeSetAttr(aNamespaceID, aName, &value, aNotify);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ PreIdMaybeChange(aNamespaceID, aName, &value);
+
+ nsIDocument* document = GetComposedDoc();
+ mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL, aNotify);
+ return SetAttrAndNotify(aNamespaceID, aName, aPrefix,
+ oldValueSet ? &oldValue : nullptr,
aParsedValue, modType, hasListeners, aNotify,
- kCallAfterSetAttr);
+ kCallAfterSetAttr, document, updateBatch);
}
nsresult
Element::SetAttrAndNotify(int32_t aNamespaceID,
nsIAtom* aName,
nsIAtom* aPrefix,
- const nsAttrValue& aOldValue,
+ const nsAttrValue* aOldValue,
nsAttrValue& aParsedValue,
uint8_t aModType,
bool aFireMutation,
bool aNotify,
- bool aCallAfterSetAttr)
+ bool aCallAfterSetAttr,
+ nsIDocument* aComposedDocument,
+ const mozAutoDocUpdate&)
{
nsresult rv;
- nsIDocument* document = GetComposedDoc();
- mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL, aNotify);
-
nsMutationGuard::DidMutate();
// Copy aParsedValue for later use since it will be lost when we call
@@ -2548,6 +2576,7 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
bool hadValidDir = false;
bool hadDirAuto = false;
+ bool oldValueSet;
if (aNamespaceID == kNameSpaceID_None) {
if (aName == nsGkAtoms::dir) {
@@ -2558,8 +2587,8 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
// XXXbz Perhaps we should push up the attribute mapping function
// stuff to Element?
if (!IsAttributeMapped(aName) ||
- !SetMappedAttribute(document, aName, aParsedValue, &rv)) {
- rv = mAttrsAndChildren.SetAndSwapAttr(aName, aParsedValue);
+ !SetAndSwapMappedAttribute(aComposedDocument, aName, aParsedValue, &oldValueSet, &rv)) {
+ rv = mAttrsAndChildren.SetAndSwapAttr(aName, aParsedValue, &oldValueSet);
}
}
else {
@@ -2568,41 +2597,72 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
aNamespaceID,
nsIDOMNode::ATTRIBUTE_NODE);
- rv = mAttrsAndChildren.SetAndSwapAttr(ni, aParsedValue);
+ rv = mAttrsAndChildren.SetAndSwapAttr(ni, aParsedValue, &oldValueSet);
}
+ NS_ENSURE_SUCCESS(rv, rv);
- // If the old value owns its own data, we know it is OK to keep using it.
- const nsAttrValue* oldValue =
- aParsedValue.StoresOwnData() ? &aParsedValue : &aOldValue;
+ PostIdMaybeChange(aNamespaceID, aName, &valueForAfterSetAttr);
- NS_ENSURE_SUCCESS(rv, rv);
+ // If the old value owns its own data, we know it is OK to keep using it.
+ // oldValue will be null if there was no previously set value
+ const nsAttrValue* oldValue;
+ if (aParsedValue.StoresOwnData()) {
+ if (oldValueSet) {
+ oldValue = &aParsedValue;
+ } else {
+ oldValue = nullptr;
+ }
+ } else {
+ // No need to conditionally assign null here. If there was no previously
+ // set value for the attribute, aOldValue will already be null.
+ oldValue = aOldValue;
+ }
- if (document || HasFlag(NODE_FORCE_XBL_BINDINGS)) {
+ if (aComposedDocument || HasFlag(NODE_FORCE_XBL_BINDINGS)) {
RefPtr<nsXBLBinding> binding = GetXBLBinding();
if (binding) {
binding->AttributeChanged(aName, aNamespaceID, false, aNotify);
}
}
- UpdateState(aNotify);
-
- nsIDocument* ownerDoc = OwnerDoc();
- if (ownerDoc && GetCustomElementData()) {
- nsCOMPtr<nsIAtom> oldValueAtom = oldValue->GetAsAtom();
- nsCOMPtr<nsIAtom> newValueAtom = valueForAfterSetAttr.GetAsAtom();
- LifecycleCallbackArgs args = {
- nsDependentAtomString(aName),
- aModType == nsIDOMMutationEvent::ADDITION ?
- NullString() : nsDependentAtomString(oldValueAtom),
- nsDependentAtomString(newValueAtom)
- };
-
- nsContentUtils::EnqueueLifecycleCallback(
- ownerDoc, nsIDocument::eAttributeChanged, this, &args);
+ if (CustomElementRegistry::IsCustomElementEnabled()) {
+ if (CustomElementData* data = GetCustomElementData()) {
+ if (CustomElementDefinition* definition =
+ nsContentUtils::GetElementDefinitionIfObservingAttr(this,
+ data->GetCustomElementType(),
+ aName)) {
+ MOZ_ASSERT(data->mState == CustomElementData::State::eCustom,
+ "AttributeChanged callback should fire only if "
+ "custom element state is custom");
+ nsCOMPtr<nsIAtom> oldValueAtom;
+ if (oldValue) {
+ oldValueAtom = oldValue->GetAsAtom();
+ } else {
+ // If there is no old value, get the value of the uninitialized attribute
+ // that was swapped with aParsedValue.
+ oldValueAtom = aParsedValue.GetAsAtom();
+ }
+ nsCOMPtr<nsIAtom> newValueAtom = valueForAfterSetAttr.GetAsAtom();
+ nsAutoString ns;
+ nsContentUtils::NameSpaceManager()->GetNameSpaceURI(aNamespaceID, ns);
+
+ LifecycleCallbackArgs args = {
+ nsDependentAtomString(aName),
+ aModType == nsIDOMMutationEvent::ADDITION ?
+ NullString() : nsDependentAtomString(oldValueAtom),
+ nsDependentAtomString(newValueAtom),
+ (ns.IsEmpty() ? NullString() : ns)
+ };
+
+ nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eAttributeChanged,
+ this, &args, nullptr, definition);
+ }
+ }
}
if (aCallAfterSetAttr) {
- rv = AfterSetAttr(aNamespaceID, aName, &valueForAfterSetAttr, aNotify);
+ rv = AfterSetAttr(aNamespaceID, aName, &valueForAfterSetAttr, oldValue,
+ aNotify);
NS_ENSURE_SUCCESS(rv, rv);
if (aNamespaceID == kNameSpaceID_None && aName == nsGkAtoms::dir) {
@@ -2611,12 +2671,14 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
}
}
+ UpdateState(aNotify);
+
if (aNotify) {
// Don't pass aOldValue to AttributeChanged since it may not be reliable.
// Callers only compute aOldValue under certain conditions which may not
// be triggered by all nsIMutationObservers.
nsNodeUtils::AttributeChanged(this, aNamespaceID, aName, aModType,
- oldValue == &aParsedValue ? &aParsedValue : nullptr);
+ aParsedValue.StoresOwnData() ? &aParsedValue : nullptr);
}
if (aFireMutation) {
@@ -2634,7 +2696,7 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
if (!newValue.IsEmpty()) {
mutation.mNewAttrValue = NS_Atomize(newValue);
}
- if (!oldValue->IsEmptyString()) {
+ if (oldValue && !oldValue->IsEmptyString()) {
mutation.mPrevAttrValue = oldValue->GetAsAtom();
}
mutation.mAttrChange = aModType;
@@ -2646,25 +2708,6 @@ Element::SetAttrAndNotify(int32_t aNamespaceID,
return NS_OK;
}
-nsresult
-Element::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue, bool aNotify)
-{
- if (aNamespaceID == kNameSpaceID_None) {
- if (aName == nsGkAtoms::_class) {
- // aValue->GetAttrValue will only be non-null here when this is called
- // via Element::SetParsedAttr. This shouldn't happen for "class", but
- // this will handle it.
- if (aValue && !aValue->GetAttrValue()) {
- nsAttrValue attr;
- attr.ParseAtomArray(aValue->String());
- aValue->TakeParsedValue(attr);
- }
- }
- }
- return NS_OK;
-}
-
bool
Element::ParseAttribute(int32_t aNamespaceID,
nsIAtom* aAttribute,
@@ -2672,22 +2715,16 @@ Element::ParseAttribute(int32_t aNamespaceID,
nsAttrValue& aResult)
{
if (aNamespaceID == kNameSpaceID_None) {
- if (aAttribute == nsGkAtoms::_class) {
- SetFlags(NODE_MAY_HAVE_CLASS);
- // Result should have been preparsed above.
- return true;
- }
+ MOZ_ASSERT(aAttribute != nsGkAtoms::_class,
+ "The class attribute should be preparsed and therefore should "
+ "never be passed to Element::ParseAttribute");
if (aAttribute == nsGkAtoms::id) {
// Store id as an atom. id="" means that the element has no id,
// not that it has an emptystring as the id.
- RemoveFromIdTable();
if (aValue.IsEmpty()) {
- ClearHasID();
return false;
}
aResult.ParseAtom(aValue);
- SetHasID();
- AddToIdTable(aResult.GetAtomValue());
return true;
}
}
@@ -2696,15 +2733,71 @@ Element::ParseAttribute(int32_t aNamespaceID,
}
bool
-Element::SetMappedAttribute(nsIDocument* aDocument,
- nsIAtom* aName,
- nsAttrValue& aValue,
- nsresult* aRetval)
+Element::SetAndSwapMappedAttribute(nsIDocument* aDocument,
+ nsIAtom* aName,
+ nsAttrValue& aValue,
+ bool* aValueWasSet,
+ nsresult* aRetval)
{
*aRetval = NS_OK;
return false;
}
+nsresult
+Element::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue, bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::_class) {
+ if (aValue) {
+ // Note: This flag is asymmetrical. It is never unset and isn't exact.
+ // If it is ever made to be exact, we probably need to handle this
+ // similarly to how ids are handled in PreIdMaybeChange and
+ // PostIdMaybeChange.
+ // Note that SetSingleClassFromParser inlines BeforeSetAttr and
+ // calls SetMayHaveClass directly. Making a subclass take action
+ // on the class attribute in a BeforeSetAttr override would
+ // require revising SetSingleClassFromParser.
+ SetMayHaveClass();
+ }
+ }
+ }
+
+ return NS_OK;
+}
+
+void
+Element::PreIdMaybeChange(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue)
+{
+ if (aNamespaceID != kNameSpaceID_None || aName != nsGkAtoms::id) {
+ return;
+ }
+ RemoveFromIdTable();
+
+ return;
+}
+
+void
+Element::PostIdMaybeChange(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue)
+{
+ if (aNamespaceID != kNameSpaceID_None || aName != nsGkAtoms::id) {
+ return;
+ }
+
+ // id="" means that the element has no id, not that it has an empty
+ // string as the id.
+ if (aValue && !aValue->IsEmptyString()) {
+ SetHasID();
+ AddToIdTable(aValue->GetAtomValue());
+ } else {
+ ClearHasID();
+ }
+
+ return;
+}
+
EventListenerManager*
Element::GetEventListenerManagerForAttr(nsIAtom* aAttrName,
bool* aDefer)
@@ -2781,9 +2874,6 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
return NS_OK;
}
- nsresult rv = BeforeSetAttr(aNameSpaceID, aName, nullptr, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
nsIDocument *document = GetComposedDoc();
mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL, aNotify);
@@ -2793,11 +2883,16 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nullptr);
}
+ nsresult rv = BeforeSetAttr(aNameSpaceID, aName, nullptr, aNotify);
+ NS_ENSURE_SUCCESS(rv, rv);
+
bool hasMutationListeners = aNotify &&
nsContentUtils::HasMutationListeners(this,
NS_EVENT_BITS_MUTATION_ATTRMODIFIED,
this);
+ PreIdMaybeChange(aNameSpaceID, aName, nullptr);
+
// Grab the attr node if needed before we remove it from the attr map
RefPtr<Attr> attrNode;
if (hasMutationListeners) {
@@ -2816,12 +2911,6 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
// react to unexpected attribute changes.
nsMutationGuard::DidMutate();
- if (aName == nsGkAtoms::id && aNameSpaceID == kNameSpaceID_None) {
- // Have to do this before clearing flag. See RemoveFromIdTable
- RemoveFromIdTable();
- ClearHasID();
- }
-
bool hadValidDir = false;
bool hadDirAuto = false;
@@ -2834,6 +2923,8 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
rv = mAttrsAndChildren.RemoveAttrAt(index, oldValue);
NS_ENSURE_SUCCESS(rv, rv);
+ PostIdMaybeChange(aNameSpaceID, aName, nullptr);
+
if (document || HasFlag(NODE_FORCE_XBL_BINDINGS)) {
RefPtr<nsXBLBinding> binding = GetXBLBinding();
if (binding) {
@@ -2841,20 +2932,36 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
}
- UpdateState(aNotify);
+ if (CustomElementRegistry::IsCustomElementEnabled()) {
+ if (CustomElementData* data = GetCustomElementData()) {
+ if (CustomElementDefinition* definition =
+ nsContentUtils::GetElementDefinitionIfObservingAttr(this,
+ data->GetCustomElementType(),
+ aName)) {
+ MOZ_ASSERT(data->mState == CustomElementData::State::eCustom,
+ "AttributeChanged callback should fire only if "
+ "custom element state is custom");
+ nsAutoString ns;
+ nsContentUtils::NameSpaceManager()->GetNameSpaceURI(aNameSpaceID, ns);
+
+ nsCOMPtr<nsIAtom> oldValueAtom = oldValue.GetAsAtom();
+ LifecycleCallbackArgs args = {
+ nsDependentAtomString(aName),
+ nsDependentAtomString(oldValueAtom),
+ NullString(),
+ (ns.IsEmpty() ? NullString() : ns)
+ };
+
+ nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eAttributeChanged,
+ this, &args, nullptr, definition);
+ }
+ }
+ }
- nsIDocument* ownerDoc = OwnerDoc();
- if (ownerDoc && GetCustomElementData()) {
- nsCOMPtr<nsIAtom> oldValueAtom = oldValue.GetAsAtom();
- LifecycleCallbackArgs args = {
- nsDependentAtomString(aName),
- nsDependentAtomString(oldValueAtom),
- NullString()
- };
+ rv = AfterSetAttr(aNameSpaceID, aName, nullptr, &oldValue, aNotify);
+ NS_ENSURE_SUCCESS(rv, rv);
- nsContentUtils::EnqueueLifecycleCallback(
- ownerDoc, nsIDocument::eAttributeChanged, this, &args);
- }
+ UpdateState(aNotify);
if (aNotify) {
// We can always pass oldValue here since there is no new value which could
@@ -2863,9 +2970,6 @@ Element::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsIDOMMutationEvent::REMOVAL, &oldValue);
}
- rv = AfterSetAttr(aNameSpaceID, aName, nullptr, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::dir) {
OnSetDirAttr(this, nullptr, hadValidDir, hadDirAuto, aNotify);
}
@@ -3087,7 +3191,7 @@ Element::CheckHandleEventForLinksPrecondition(EventChainVisitor& aVisitor,
}
nsresult
-Element::PreHandleEventForLinks(EventChainPreVisitor& aVisitor)
+Element::GetEventTargetParentForLinks(EventChainPreVisitor& aVisitor)
{
// Optimisation: return early if this event doesn't interest us.
// IMPORTANT: this switch and the switch below it must be kept in sync!
@@ -3109,8 +3213,9 @@ Element::PreHandleEventForLinks(EventChainPreVisitor& aVisitor)
nsresult rv = NS_OK;
- // We do the status bar updates in PreHandleEvent so that the status bar gets
- // updated even if the event is consumed before we have a chance to set it.
+ // We do the status bar updates in GetEventTargetParent so that the status bar
+ // gets updated even if the event is consumed before we have a chance to set
+ // it.
switch (aVisitor.mEvent->mMessage) {
// Set the status bar similarly for mouseover and focus
case eMouseOver:
@@ -3988,7 +4093,7 @@ Element::ClearDataset()
nsDataHashtable<nsRefPtrHashKey<DOMIntersectionObserver>, int32_t>*
Element::RegisteredIntersectionObservers()
{
- nsDOMSlots* slots = DOMSlots();
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
return &slots->mRegisteredIntersectionObservers;
}
@@ -4037,3 +4142,31 @@ Element::UpdateIntersectionObservation(DOMIntersectionObserver* aObserver, int32
}
return false;
}
+
+void
+Element::SetCustomElementData(CustomElementData* aData)
+{
+ nsExtendedDOMSlots *slots = ExtendedDOMSlots();
+ MOZ_ASSERT(!slots->mCustomElementData, "Custom element data may not be changed once set.");
+ slots->mCustomElementData = aData;
+}
+
+CustomElementDefinition*
+Element::GetCustomElementDefinition() const
+{
+ CustomElementData* data = GetCustomElementData();
+ if (!data) {
+ return nullptr;
+ }
+
+ return data->GetCustomElementDefinition();
+}
+
+void
+Element::SetCustomElementDefinition(CustomElementDefinition* aDefinition)
+{
+ CustomElementData* data = GetCustomElementData();
+ MOZ_ASSERT(data);
+
+ data->SetCustomElementDefinition(aDefinition);
+}
diff --git a/dom/base/Element.h b/dom/base/Element.h
index ce84b74fb..4830878fd 100644
--- a/dom/base/Element.h
+++ b/dom/base/Element.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -41,6 +40,7 @@
#include "Units.h"
#include "DOMIntersectionObserver.h"
+class mozAutoDocUpdate;
class nsIFrame;
class nsIDOMMozNamedAttrMap;
class nsIURI;
@@ -138,12 +138,12 @@ class EventStateManager;
namespace dom {
+struct CustomElementDefinition;
class Animation;
class CustomElementRegistry;
class Link;
class DOMRect;
class DOMRectList;
-class DestinationInsertionPointList;
class Grid;
// IID for the dom::Element interface
@@ -255,6 +255,23 @@ public:
void ClearStyleStateLocks();
/**
+ * Accessors for the state of our dir attribute.
+ */
+ bool HasDirAuto() const
+ {
+ return State().HasState(NS_EVENT_STATE_DIR_ATTR_LIKE_AUTO);
+ }
+
+ /**
+ * Elements with dir="rtl" or dir="ltr".
+ */
+ bool HasFixedDir() const
+ {
+ return State().HasAtLeastOneOfStates(NS_EVENT_STATE_DIR_ATTR_LTR |
+ NS_EVENT_STATE_DIR_ATTR_RTL);
+ }
+
+ /**
* Get the inline style declaration, if any, for this element.
*/
virtual DeclarationBlock* GetInlineStyleDeclaration();
@@ -379,16 +396,48 @@ public:
bool GetBindingURL(nsIDocument *aDocument, css::URLValue **aResult);
- // The bdi element defaults to dir=auto if it has no dir attribute set.
- // Other elements will only have dir=auto if they have an explicit dir=auto,
- // which will mean that HasValidDir() returns true but HasFixedDir() returns
- // false
- inline bool HasDirAuto() const {
- return (!HasFixedDir() &&
- (HasValidDir() || IsHTMLElement(nsGkAtoms::bdi)));
+ Directionality GetComputedDirectionality() const;
+
+ inline Element* GetFlattenedTreeParentElementForStyle() const;
+
+ /**
+ * Gets the custom element data used by web components custom element.
+ * Custom element data is created at the first attempt to enqueue a callback.
+ *
+ * @return The custom element data or null if none.
+ */
+ inline CustomElementData* GetCustomElementData() const
+ {
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
+ if (slots) {
+ return slots->mCustomElementData;
+ }
+ return nullptr;
}
- Directionality GetComputedDirectionality() const;
+ /**
+ * Sets the custom element data, ownership of the
+ * callback data is taken by this element.
+ *
+ * @param aData The custom element data.
+ */
+ void SetCustomElementData(CustomElementData* aData);
+
+ /**
+ * Gets the custom element definition used by web components custom element.
+ *
+ * @return The custom element definition or null if element is not a custom
+ * element or custom element is not defined yet.
+ */
+ CustomElementDefinition* GetCustomElementDefinition() const;
+
+ /**
+ * Sets the custom element definition, called when custom element is created
+ * or upgraded.
+ *
+ * @param aDefinition The custom element definition.
+ */
+ void SetCustomElementDefinition(CustomElementDefinition* aDefinition);
protected:
/**
@@ -421,6 +470,9 @@ protected:
mState &= ~aStates;
}
+ already_AddRefed<ShadowRoot> AttachShadowInternal(bool aClosed,
+ ErrorResult& aError);
+
private:
// Need to allow the ESM, nsGlobalWindow, and the focus manager to
// set our state
@@ -459,6 +511,16 @@ protected:
RemoveStatesSilently(aStates);
NotifyStateChange(aStates);
}
+ virtual void ToggleStates(EventStates aStates, bool aNotify)
+ {
+ NS_PRECONDITION(!aStates.HasAtLeastOneOfStates(INTRINSIC_STATES),
+ "Should only be removing externally-managed states here");
+ mState ^= aStates;
+ if (aNotify) {
+ NotifyStateChange(aStates);
+ }
+ }
+
public:
virtual void UpdateEditableState(bool aNotify) override;
@@ -481,6 +543,7 @@ public:
already_AddRefed<mozilla::dom::NodeInfo>
GetExistingAttrNameFromQName(const nsAString& aStr) const;
+ MOZ_ALWAYS_INLINE // Avoid a crashy hook from Avast 10 Beta (Bug 1058131)
nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
const nsAString& aValue, bool aNotify)
{
@@ -495,25 +558,57 @@ public:
* values will not actually be compared if we aren't notifying and we don't
* have mutation listeners (in which case it's cheap to just return false
* and let the caller go ahead and set the value).
- * @param aOldValue Set to the old value of the attribute, but only if there
- * are event listeners. If set, the type of aOldValue will be either
+ * @param aOldValue [out] Set to the old value of the attribute, but only if
+ * there are event listeners. If set, the type of aOldValue will be either
* nsAttrValue::eString or nsAttrValue::eAtom.
- * @param aModType Set to nsIDOMMutationEvent::MODIFICATION or to
+ * @param aModType [out] Set to nsIDOMMutationEvent::MODIFICATION or to
* nsIDOMMutationEvent::ADDITION, but only if this helper returns true
- * @param aHasListeners Set to true if there are mutation event listeners
- * listening for NS_EVENT_BITS_MUTATION_ATTRMODIFIED
+ * @param aHasListeners [out] Set to true if there are mutation event
+ * listeners listening for NS_EVENT_BITS_MUTATION_ATTRMODIFIED
+ * @param aOldValueSet [out] Indicates whether an old attribute value has been
+ * stored in aOldValue. The bool will be set to true if a value was stored.
*/
bool MaybeCheckSameAttrVal(int32_t aNamespaceID, nsIAtom* aName,
nsIAtom* aPrefix,
const nsAttrValueOrString& aValue,
bool aNotify, nsAttrValue& aOldValue,
- uint8_t* aModType, bool* aHasListeners);
+ uint8_t* aModType, bool* aHasListeners,
+ bool* aOldValueSet);
+
+ /**
+ * Notifies mutation listeners if aNotify is true, there are mutation
+ * listeners, and the attribute value is changing.
+ *
+ * @param aNamespaceID The namespace of the attribute
+ * @param aName The local name of the attribute
+ * @param aPrefix The prefix of the attribute
+ * @param aValue The value that the attribute is being changed to
+ * @param aNotify If true, mutation listeners will be notified if they exist
+ * and the attribute value is changing
+ * @param aOldValue [out] Set to the old value of the attribute, but only if
+ * there are event listeners. If set, the type of aOldValue will be either
+ * nsAttrValue::eString or nsAttrValue::eAtom.
+ * @param aModType [out] Set to nsIDOMMutationEvent::MODIFICATION or to
+ * nsIDOMMutationEvent::ADDITION, but only if this helper returns true
+ * @param aHasListeners [out] Set to true if there are mutation event
+ * listeners listening for NS_EVENT_BITS_MUTATION_ATTRMODIFIED
+ * @param aOldValueSet [out] Indicates whether an old attribute value has been
+ * stored in aOldValue. The bool will be set to true if a value was stored.
+ */
bool OnlyNotifySameValueSet(int32_t aNamespaceID, nsIAtom* aName,
nsIAtom* aPrefix,
const nsAttrValueOrString& aValue,
bool aNotify, nsAttrValue& aOldValue,
- uint8_t* aModType, bool* aHasListeners);
+ uint8_t* aModType, bool* aHasListeners,
+ bool* aOldValueSet);
+
+ /**
+ * Sets the class attribute to a value that contains no whitespace.
+ * Assumes that we are not notifying and that the attribute hasn't been
+ * set previously.
+ */
+ nsresult SetSingleClassFromParser(nsIAtom* aSingleClassName);
virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName, nsIAtom* aPrefix,
const nsAString& aValue, bool aNotify) override;
@@ -550,7 +645,7 @@ public:
* guaranteed (e.g. we could have class="").
*/
const nsAttrValue* GetClasses() const {
- if (HasFlag(NODE_MAY_HAVE_CLASS)) {
+ if (MayHaveClass()) {
return DoGetClasses();
}
return nullptr;
@@ -722,6 +817,25 @@ public:
already_AddRefed<nsIHTMLCollection>
GetElementsByClassName(const nsAString& aClassNames);
+ CSSPseudoElementType GetPseudoElementType() const {
+ if (!HasProperties()) {
+ return CSSPseudoElementType::NotPseudo;
+ }
+ nsresult rv = NS_OK;
+ auto raw = GetProperty(nsGkAtoms::pseudoProperty, &rv);
+ if (rv == NS_PROPTABLE_PROP_NOT_THERE) {
+ return CSSPseudoElementType::NotPseudo;
+ }
+ return CSSPseudoElementType(reinterpret_cast<uintptr_t>(raw));
+ }
+
+ void SetPseudoElementType(CSSPseudoElementType aPseudo) {
+ static_assert(sizeof(CSSPseudoElementType) <= sizeof(uintptr_t),
+ "Need to be able to store this in a void*");
+ MOZ_ASSERT(aPseudo != CSSPseudoElementType::NotPseudo);
+ SetProperty(nsGkAtoms::pseudoProperty, reinterpret_cast<void*>(aPseudo));
+ }
+
private:
/**
* Implement the algorithm specified at
@@ -809,12 +923,19 @@ public:
already_AddRefed<DOMRectList> GetClientRects();
already_AddRefed<DOMRect> GetBoundingClientRect();
+ // Shadow DOM v1
+ already_AddRefed<ShadowRoot> AttachShadow(const ShadowRootInit& aInit,
+ ErrorResult& aError);
+ ShadowRoot* GetShadowRootByMode() const;
+ void SetSlot(const nsAString& aName, ErrorResult& aError);
+ void GetSlot(nsAString& aName);
+
+ // [deprecated] Shadow DOM v0
already_AddRefed<ShadowRoot> CreateShadowRoot(ErrorResult& aError);
- already_AddRefed<DestinationInsertionPointList> GetDestinationInsertionPoints();
ShadowRoot *FastGetShadowRoot() const
{
- nsDOMSlots* slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
return slots ? slots->mShadowRoot.get() : nullptr;
}
@@ -1200,7 +1321,10 @@ protected:
* its current value) is !StoresOwnData() --- in which
* case the current value is probably already useless.
* If the current value is StoresOwnData() (or absent),
- * aOldValue will not be used.
+ * aOldValue will not be used. aOldValue will only be set
+ * in certain circumstances (there are mutation
+ * listeners, element is a custom element, attribute was
+ * not previously unset). Otherwise it will be null.
* @param aParsedValue parsed new value of attribute. Replaced by the
* old value of the attribute. This old value is only
* useful if either it or the new value is StoresOwnData.
@@ -1209,16 +1333,19 @@ protected:
* @param aFireMutation should mutation-events be fired?
* @param aNotify should we notify document-observers?
* @param aCallAfterSetAttr should we call AfterSetAttr?
+ * @param aComposedDocument The current composed document of the element.
*/
nsresult SetAttrAndNotify(int32_t aNamespaceID,
nsIAtom* aName,
nsIAtom* aPrefix,
- const nsAttrValue& aOldValue,
+ const nsAttrValue* aOldValue,
nsAttrValue& aParsedValue,
uint8_t aModType,
bool aFireMutation,
bool aNotify,
- bool aCallAfterSetAttr);
+ bool aCallAfterSetAttr,
+ nsIDocument* aComposedDocument,
+ const mozAutoDocUpdate& aGuard);
/**
* Scroll to a new position using behavior evaluated from CSS and
@@ -1256,14 +1383,21 @@ protected:
*
* @param aDocument the current document of this node (an optimization)
* @param aName the name of the attribute
- * @param aValue the nsAttrValue to set
+ * @param aValue the nsAttrValue to set. Will be swapped with the existing
+ * value of the attribute if the attribute already exists.
+ * @param [out] aValueWasSet If the attribute was not set previously,
+ * aValue will be swapped with an empty attribute
+ * and aValueWasSet will be set to false. Otherwise,
+ * aValueWasSet will be set to true and aValue will
+ * contain the previous value set.
* @param [out] aRetval the nsresult status of the operation, if any.
* @return true if the setting was attempted, false otherwise.
*/
- virtual bool SetMappedAttribute(nsIDocument* aDocument,
- nsIAtom* aName,
- nsAttrValue& aValue,
- nsresult* aRetval);
+ virtual bool SetAndSwapMappedAttribute(nsIDocument* aDocument,
+ nsIAtom* aName,
+ nsAttrValue& aValue,
+ bool* aValueWasSet,
+ nsresult* aRetval);
/**
* Hook that is called by Element::SetAttr to allow subclasses to
@@ -1276,33 +1410,92 @@ protected:
* @param aName the localname of the attribute being set
* @param aValue the value it's being set to represented as either a string or
* a parsed nsAttrValue. Alternatively, if the attr is being removed it
- * will be null. BeforeSetAttr is allowed to modify aValue by parsing
- * the string to an nsAttrValue (to avoid having to reparse it in
- * ParseAttribute).
+ * will be null.
* @param aNotify Whether we plan to notify document observers.
*/
- // Note that this is inlined so that when subclasses call it it gets
- // inlined. Those calls don't go through a vtable.
virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify);
/**
* Hook that is called by Element::SetAttr to allow subclasses to
* deal with attribute sets. This will only be called after we have called
- * SetAndTakeAttr and AttributeChanged (that is, after we have actually set
- * the attr). It will always be called under a scriptblocker.
+ * SetAndSwapAttr (that is, after we have actually set the attr). It will
+ * always be called under a scriptblocker.
*
* @param aNamespaceID the namespace of the attr being set
* @param aName the localname of the attribute being set
* @param aValue the value it's being set to. If null, the attr is being
* removed.
+ * @param aOldValue the value that the attribute had previously. If null,
+ * the attr was not previously set. This argument may not have the
+ * correct value for SVG elements, or other cases in which the
+ * attribute value doesn't store its own data
* @param aNotify Whether we plan to notify document observers.
*/
// Note that this is inlined so that when subclasses call it it gets
// inlined. Those calls don't go through a vtable.
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
+ {
+ return NS_OK;
+ }
+
+ /**
+ * This function shall be called just before the id attribute changes. It will
+ * be called after BeforeSetAttr. If the attribute being changed is not the id
+ * attribute, this function does nothing. Otherwise, it will remove the old id
+ * from the document's id cache.
+ *
+ * This must happen after BeforeSetAttr (rather than during) because the
+ * the subclasses' calls to BeforeSetAttr may notify on state changes. If they
+ * incorrectly determine whether the element had an id, the element may not be
+ * restyled properly.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aValue the new id value. Will be null if the id is being unset.
+ */
+ void PreIdMaybeChange(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue);
+
+ /**
+ * This function shall be called just after the id attribute changes. It will
+ * be called before AfterSetAttr. If the attribute being changed is not the id
+ * attribute, this function does nothing. Otherwise, it will add the new id to
+ * the document's id cache and properly set the ElementHasID flag.
+ *
+ * This must happen before AfterSetAttr (rather than during) because the
+ * the subclasses' calls to AfterSetAttr may notify on state changes. If they
+ * incorrectly determine whether the element now has an id, the element may
+ * not be restyled properly.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aValue the new id value. Will be null if the id is being unset.
+ */
+ void PostIdMaybeChange(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue);
+
+ /**
+ * Usually, setting an attribute to the value that it already has results in
+ * no action. However, in some cases, setting an attribute to its current
+ * value should have the effect of, for example, forcing a reload of
+ * network data. To address that, this function will be called in this
+ * situation to allow the handling of such a case.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aValue the value it's being set to represented as either a string or
+ * a parsed nsAttrValue.
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ // Note that this is inlined so that when subclasses call it it gets
+ // inlined. Those calls don't go through a vtable.
+ virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
{
return NS_OK;
}
@@ -1361,7 +1554,7 @@ protected:
/**
* Handle status bar updates before they can be cancelled.
*/
- nsresult PreHandleEventForLinks(EventChainPreVisitor& aVisitor);
+ nsresult GetEventTargetParentForLinks(EventChainPreVisitor& aVisitor);
/**
* Handle default actions for link event if the event isn't consumed yet.
@@ -1421,30 +1614,6 @@ private:
nsCOMPtr<nsIDocument> mDoc;
};
-class DestinationInsertionPointList : public nsINodeList
-{
-public:
- explicit DestinationInsertionPointList(Element* aElement);
-
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DestinationInsertionPointList)
-
- // nsIDOMNodeList
- NS_DECL_NSIDOMNODELIST
-
- // nsINodeList
- virtual nsIContent* Item(uint32_t aIndex) override;
- virtual int32_t IndexOf(nsIContent* aContent) override;
- virtual nsINode* GetParentObject() override { return mParent; }
- virtual uint32_t Length() const;
- virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
-protected:
- virtual ~DestinationInsertionPointList();
-
- RefPtr<Element> mParent;
- nsCOMArray<nsIContent> mDestinationPoints;
-};
-
NS_DEFINE_STATIC_IID_ACCESSOR(Element, NS_ELEMENT_IID)
inline bool
diff --git a/dom/base/ElementInlines.h b/dom/base/ElementInlines.h
index 540512d89..16e8c2fc6 100644
--- a/dom/base/ElementInlines.h
+++ b/dom/base/ElementInlines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -26,6 +25,17 @@ Element::UnregisterActivityObserver()
OwnerDoc()->UnregisterActivityObserver(this);
}
+inline Element*
+Element::GetFlattenedTreeParentElementForStyle() const
+{
+ nsINode* parentNode = GetFlattenedTreeParentNodeForStyle();
+ if MOZ_LIKELY(parentNode && parentNode->IsElement()) {
+ return parentNode->AsElement();
+ }
+
+ return nullptr;
+}
+
} // namespace dom
} // namespace mozilla
diff --git a/dom/base/EventSource.cpp b/dom/base/EventSource.cpp
index 754a2d13b..cd3672c74 100644
--- a/dom/base/EventSource.cpp
+++ b/dom/base/EventSource.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/EventSource.h b/dom/base/EventSource.h
index a1573c656..b22cebd47 100644
--- a/dom/base/EventSource.h
+++ b/dom/base/EventSource.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/FeedWriterEnabled.h b/dom/base/FeedWriterEnabled.h
index 1bf39eba9..af13c8a4e 100644
--- a/dom/base/FeedWriterEnabled.h
+++ b/dom/base/FeedWriterEnabled.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/File.cpp b/dom/base/File.cpp
index 1d5ab73e7..e053011d5 100755
--- a/dom/base/File.cpp
+++ b/dom/base/File.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/File.h b/dom/base/File.h
index aed1f68c3..3233ce3e5 100644
--- a/dom/base/File.h
+++ b/dom/base/File.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/FileList.cpp b/dom/base/FileList.cpp
index 79aef3e06..afe81bdc6 100644
--- a/dom/base/FileList.cpp
+++ b/dom/base/FileList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/FileList.h b/dom/base/FileList.h
index cf951ad34..04e25e63c 100644
--- a/dom/base/FileList.h
+++ b/dom/base/FileList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/FileReader.cpp b/dom/base/FileReader.cpp
index 63a0ef2ee..273e192d0 100644
--- a/dom/base/FileReader.cpp
+++ b/dom/base/FileReader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/FileReader.h b/dom/base/FileReader.h
index 225385e13..24f66b6fa 100644
--- a/dom/base/FileReader.h
+++ b/dom/base/FileReader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/FormData.cpp b/dom/base/FormData.cpp
index 52bdd9210..de4d71a67 100644
--- a/dom/base/FormData.cpp
+++ b/dom/base/FormData.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/FormData.h b/dom/base/FormData.h
index e213db164..083863b4d 100644
--- a/dom/base/FormData.h
+++ b/dom/base/FormData.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/FragmentOrElement.cpp b/dom/base/FragmentOrElement.cpp
index 9106778df..70ecd3e56 100644
--- a/dom/base/FragmentOrElement.cpp
+++ b/dom/base/FragmentOrElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -123,6 +122,7 @@
#include "mozilla/CORSMode.h"
#include "mozilla/dom/ShadowRoot.h"
+#include "mozilla/dom/HTMLSlotElement.h"
#include "mozilla/dom/HTMLTemplateElement.h"
#include "nsStyledElement.h"
@@ -151,8 +151,56 @@ nsIContent::FindFirstNonChromeOnlyAccessContent() const
return nullptr;
}
+// https://dom.spec.whatwg.org/#dom-slotable-assignedslot
+HTMLSlotElement*
+nsIContent::GetAssignedSlotByMode() const
+{
+ /**
+ * Get slotable's assigned slot for the result of
+ * find a slot with open flag UNSET [1].
+ *
+ * [1] https://dom.spec.whatwg.org/#assign-a-slot
+ */
+ HTMLSlotElement* slot = GetAssignedSlot();
+ if (!slot) {
+ return nullptr;
+ }
+
+ MOZ_ASSERT(GetParent());
+ MOZ_ASSERT(GetParent()->GetShadowRoot());
+
+ /**
+ * Additional check for open flag SET:
+ * If slotable’s parent’s shadow root's mode is not "open",
+ * then return null.
+ */
+ if (GetParent()->GetShadowRoot()->IsClosed()) {
+ return nullptr;
+ }
+
+ return slot;
+}
+
+nsINode*
+nsIContent::GetFlattenedTreeParentForMaybeAssignedNode() const
+{
+ if (HTMLSlotElement* assignedSlot = GetAssignedSlot()) {
+ return assignedSlot;
+ }
+
+ HTMLSlotElement* parentSlot = HTMLSlotElement::FromContent(GetParent());
+ if (!parentSlot) {
+ return nullptr;
+ }
+
+ // If this is not an unassigned node, then it must be a fallback content.
+ MOZ_ASSERT(parentSlot->AssignedNodes().IsEmpty());
+
+ return parentSlot;
+}
+
nsINode*
-nsIContent::GetFlattenedTreeParentNodeInternal() const
+nsIContent::GetFlattenedTreeParentNodeInternal(FlattenedParentType aType) const
{
nsINode* parentNode = GetParentNode();
if (!parentNode || !parentNode->IsContent()) {
@@ -161,18 +209,51 @@ nsIContent::GetFlattenedTreeParentNodeInternal() const
}
nsIContent* parent = parentNode->AsContent();
+ if (aType == eForStyle &&
+ IsRootOfNativeAnonymousSubtree() &&
+ OwnerDoc()->GetRootElement() == parent) {
+ // When getting the flattened tree parent for style, we return null
+ // for any "document level" native anonymous content subtree root.
+ // This is NAC generated by an ancestor frame of the document element's
+ // primary frame, and includes scrollbar elements created by the root
+ // scroll frame, and the "custom content container" and accessible caret
+ // generated by the nsCanvasFrame. We distinguish document level NAC
+ // from NAC generated by the root element's primary frame below.
+ nsIFrame* parentFrame = parent->GetPrimaryFrame();
+ if (!parentFrame) {
+ // If the root element has no primary frame, it means it can't have
+ // generated any NAC itself. Thus any NAC we have here must have
+ // been generated by an ancestor frame.
+ //
+ // If we are in here, then either the root element is display:none, or
+ // we are in the middle of constructing the root of the frame tree and
+ // we are trying to eagerly restyle document level NAC in
+ // nsCSSFrameConstructor::GetAnonymousContent before the root
+ // element's frame has been constructed.
+ return nullptr;
+ }
+ nsIAnonymousContentCreator* creator = do_QueryFrame(parentFrame);
+ if (!creator) {
+ // If the root element does have a frame, but does not implement
+ // nsIAnonymousContentCreator, then this must be document level NAC.
+ return nullptr;
+ }
+ AutoTArray<nsIContent*, 8> elements;
+ creator->AppendAnonymousContentTo(elements, 0);
+ if (!elements.Contains(this)) {
+ // If the root element does have a frame, and also does implement
+ // nsIAnonymousContentCreator, but didn't create this node, then
+ // it must be document level NAC.
+ return nullptr;
+ }
+ }
+
if (parent && nsContentUtils::HasDistributedChildren(parent) &&
nsContentUtils::IsInSameAnonymousTree(parent, this)) {
- // This node is distributed to insertion points, thus we
- // need to consult the destination insertion points list to
- // figure out where this node was inserted in the flattened tree.
- // It may be the case that |parent| distributes its children
- // but the child does not match any insertion points, thus
- // the flattened tree parent is nullptr.
- nsTArray<nsIContent*>* destInsertionPoints = GetExistingDestInsertionPoints();
- parent = destInsertionPoints && !destInsertionPoints->IsEmpty() ?
- destInsertionPoints->LastElement()->GetParent() : nullptr;
- } else if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
+ return GetFlattenedTreeParentForMaybeAssignedNode();
+ }
+
+ if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
nsIContent* insertionParent = GetXBLInsertionParent();
if (insertionParent) {
parent = insertionParent;
@@ -530,8 +611,7 @@ nsNodeSupportsWeakRefTearoff::GetWeakReference(nsIWeakReference** aInstancePtr)
//----------------------------------------------------------------------
FragmentOrElement::nsDOMSlots::nsDOMSlots()
: nsINode::nsSlots(),
- mDataset(nullptr),
- mBindingParent(nullptr)
+ mDataset(nullptr)
{
}
@@ -543,84 +623,108 @@ FragmentOrElement::nsDOMSlots::~nsDOMSlots()
}
void
-FragmentOrElement::nsDOMSlots::Traverse(nsCycleCollectionTraversalCallback &cb, bool aIsXUL)
+FragmentOrElement::nsDOMSlots::Traverse(nsCycleCollectionTraversalCallback &cb)
{
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mStyle");
cb.NoteXPCOMChild(mStyle.get());
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mSMILOverrideStyle");
- cb.NoteXPCOMChild(mSMILOverrideStyle.get());
-
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mAttributeMap");
cb.NoteXPCOMChild(mAttributeMap.get());
- if (aIsXUL) {
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mControllers");
- cb.NoteXPCOMChild(mControllers);
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mChildrenList");
+ cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*, mChildrenList));
+
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mClassList");
+ cb.NoteXPCOMChild(mClassList.get());
+
+ if (!mExtendedSlots) {
+ return;
}
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mXBLBinding");
- cb.NoteNativeChild(mXBLBinding, NS_CYCLE_COLLECTION_PARTICIPANT(nsXBLBinding));
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mSMILOverrideStyle");
+ cb.NoteXPCOMChild(mExtendedSlots->mSMILOverrideStyle.get());
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mXBLInsertionParent");
- cb.NoteXPCOMChild(mXBLInsertionParent.get());
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mControllers");
+ cb.NoteXPCOMChild(mExtendedSlots->mControllers);
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mShadowRoot");
- cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mShadowRoot));
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mLabelsList");
+ cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*,mExtendedSlots-> mLabelsList));
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mContainingShadow");
- cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mContainingShadow));
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mShadowRoot");
+ cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mShadowRoot));
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mChildrenList");
- cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*, mChildrenList));
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mContainingShadow");
+ cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mContainingShadow));
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mLabelsList");
- cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIDOMNodeList*, mLabelsList));
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mAssignedSlot");
+ cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mExtendedSlots->mAssignedSlot.get()));
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mClassList");
- cb.NoteXPCOMChild(mClassList.get());
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mXBLBinding");
+ cb.NoteNativeChild(mExtendedSlots->mXBLBinding,
+ NS_CYCLE_COLLECTION_PARTICIPANT(nsXBLBinding));
- if (mCustomElementData) {
- for (uint32_t i = 0; i < mCustomElementData->mCallbackQueue.Length(); i++) {
- mCustomElementData->mCallbackQueue[i]->Traverse(cb);
- }
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mXBLInsertionParent");
+ cb.NoteXPCOMChild(mExtendedSlots->mXBLInsertionParent.get());
+
+ if (mExtendedSlots->mCustomElementData) {
+ mExtendedSlots->mCustomElementData->Traverse(cb);
}
- for (auto iter = mRegisteredIntersectionObservers.Iter(); !iter.Done(); iter.Next()) {
+ for (auto iter = mExtendedSlots->mRegisteredIntersectionObservers.Iter();
+ !iter.Done(); iter.Next()) {
DOMIntersectionObserver* observer = iter.Key();
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mRegisteredIntersectionObservers[i]");
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb,
+ "mExtendedSlots->mRegisteredIntersectionObservers[i]");
cb.NoteXPCOMChild(observer);
}
+
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mExtendedSlots->mFrameLoaderOrOpener");
+ cb.NoteXPCOMChild(mExtendedSlots->mFrameLoaderOrOpener);
}
void
-FragmentOrElement::nsDOMSlots::Unlink(bool aIsXUL)
+FragmentOrElement::nsDOMSlots::Unlink()
{
mStyle = nullptr;
- mSMILOverrideStyle = nullptr;
if (mAttributeMap) {
mAttributeMap->DropReference();
mAttributeMap = nullptr;
}
- if (aIsXUL)
- NS_IF_RELEASE(mControllers);
-
- MOZ_ASSERT(!mXBLBinding);
-
- mXBLInsertionParent = nullptr;
- mShadowRoot = nullptr;
- mContainingShadow = nullptr;
mChildrenList = nullptr;
- mLabelsList = nullptr;
- mCustomElementData = nullptr;
mClassList = nullptr;
- mRegisteredIntersectionObservers.Clear();
+
+ if (!mExtendedSlots) {
+ return;
+ }
+
+ mExtendedSlots->mSMILOverrideStyle = nullptr;
+ mExtendedSlots->mControllers = nullptr;
+ mExtendedSlots->mLabelsList = nullptr;
+ mExtendedSlots->mShadowRoot = nullptr;
+ mExtendedSlots->mContainingShadow = nullptr;
+ mExtendedSlots->mAssignedSlot = nullptr;
+ MOZ_ASSERT(!(mExtendedSlots->mXBLBinding));
+ mExtendedSlots->mXBLInsertionParent = nullptr;
+ if (mExtendedSlots->mCustomElementData) {
+ mExtendedSlots->mCustomElementData->Unlink();
+ mExtendedSlots->mCustomElementData = nullptr;
+ }
+ mExtendedSlots->mRegisteredIntersectionObservers.Clear();
+ nsCOMPtr<nsIFrameLoader> frameLoader =
+ do_QueryInterface(mExtendedSlots->mFrameLoaderOrOpener);
+ if (frameLoader) {
+ static_cast<nsFrameLoader*>(frameLoader.get())->Destroy();
+ }
+ mExtendedSlots->mFrameLoaderOrOpener = nullptr;
}
size_t
FragmentOrElement::nsDOMSlots::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) const
{
size_t n = aMallocSizeOf(this);
+ if (mExtendedSlots) {
+ n += aMallocSizeOf(mExtendedSlots.get());
+ }
if (mAttributeMap) {
n += mAttributeMap->SizeOfIncludingThis(aMallocSizeOf);
@@ -641,6 +745,19 @@ FragmentOrElement::nsDOMSlots::SizeOfIncludingThis(MallocSizeOf aMallocSizeOf) c
return n;
}
+FragmentOrElement::nsExtendedDOMSlots::nsExtendedDOMSlots()
+ : mBindingParent(nullptr)
+{
+}
+
+FragmentOrElement::nsExtendedDOMSlots::~nsExtendedDOMSlots()
+{
+ nsCOMPtr<nsIFrameLoader> frameLoader = do_QueryInterface(mFrameLoaderOrOpener);
+ if (frameLoader) {
+ static_cast<nsFrameLoader*>(frameLoader.get())->Destroy();
+ }
+}
+
FragmentOrElement::FragmentOrElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
: nsIContent(aNodeInfo)
{
@@ -686,7 +803,7 @@ FindChromeAccessOnlySubtreeOwner(nsIContent* aContent)
}
nsresult
-nsIContent::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsIContent::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
//FIXME! Document how this event retargeting works, Bug 329124.
aVisitor.mCanHandle = true;
@@ -695,6 +812,7 @@ nsIContent::PreHandleEvent(EventChainPreVisitor& aVisitor)
// Don't propagate mouseover and mouseout events when mouse is moving
// inside chrome access only content.
bool isAnonForEvents = IsRootOfChromeAccessOnlySubtree();
+ aVisitor.mRootOfClosedTree = isAnonForEvents;
if ((aVisitor.mEvent->mMessage == eMouseOver ||
aVisitor.mEvent->mMessage == eMouseOut ||
aVisitor.mEvent->mMessage == ePointerOver ||
@@ -706,7 +824,7 @@ nsIContent::PreHandleEvent(EventChainPreVisitor& aVisitor)
((this == aVisitor.mEvent->mOriginalTarget &&
!ChromeOnlyAccess()) || isAnonForEvents || GetShadowRoot())) {
nsCOMPtr<nsIContent> relatedTarget =
- do_QueryInterface(aVisitor.mEvent->AsMouseEvent()->relatedTarget);
+ do_QueryInterface(aVisitor.mEvent->AsMouseEvent()->mRelatedTarget);
if (relatedTarget &&
relatedTarget->OwnerDoc() == OwnerDoc()) {
@@ -716,7 +834,7 @@ nsIContent::PreHandleEvent(EventChainPreVisitor& aVisitor)
nsIContent* adjustedTarget =
Event::GetShadowRelatedTarget(this, relatedTarget);
if (this == adjustedTarget) {
- aVisitor.mParentTarget = nullptr;
+ aVisitor.SetParentTarget(nullptr, false);
aVisitor.mCanHandle = false;
return NS_OK;
}
@@ -773,7 +891,7 @@ nsIContent::PreHandleEvent(EventChainPreVisitor& aVisitor)
originalTarget->FindFirstNonChromeOnlyAccessContent())
? "" : "Wrong event propagation!?!\n");
#endif
- aVisitor.mParentTarget = nullptr;
+ aVisitor.SetParentTarget(nullptr, false);
// Event should not propagate to non-anon content.
aVisitor.mCanHandle = isAnonForEvents;
return NS_OK;
@@ -784,58 +902,10 @@ nsIContent::PreHandleEvent(EventChainPreVisitor& aVisitor)
}
}
- nsIContent* parent = GetParent();
-
- // Web components have a special event chain that need to account
- // for destination insertion points where nodes have been distributed.
- nsTArray<nsIContent*>* destPoints = GetExistingDestInsertionPoints();
- if (destPoints && !destPoints->IsEmpty()) {
- // Push destination insertion points to aVisitor.mDestInsertionPoints
- // excluding shadow insertion points.
- bool didPushNonShadowInsertionPoint = false;
- for (uint32_t i = 0; i < destPoints->Length(); i++) {
- nsIContent* point = destPoints->ElementAt(i);
- if (!ShadowRoot::IsShadowInsertionPoint(point)) {
- aVisitor.mDestInsertionPoints.AppendElement(point);
- didPushNonShadowInsertionPoint = true;
- }
- }
-
- // Next node in the event path is the final destination
- // (non-shadow) insertion point that was pushed.
- if (didPushNonShadowInsertionPoint) {
- parent = aVisitor.mDestInsertionPoints.LastElement();
- aVisitor.mDestInsertionPoints.SetLength(
- aVisitor.mDestInsertionPoints.Length() - 1);
- }
- }
-
- ShadowRoot* thisShadowRoot = ShadowRoot::FromNode(this);
- if (thisShadowRoot) {
- if (!aVisitor.mEvent->mFlags.mComposed) {
- // If we do stop propagation, we still want to propagate
- // the event to chrome (nsPIDOMWindow::GetParentTarget()).
- // The load event is special in that we don't ever propagate it
- // to chrome.
- nsCOMPtr<nsPIDOMWindowOuter> win = OwnerDoc()->GetWindow();
- EventTarget* parentTarget = win && aVisitor.mEvent->mMessage != eLoad
- ? win->GetParentTarget() : nullptr;
-
- aVisitor.mParentTarget = parentTarget;
- return NS_OK;
- }
-
- if (!aVisitor.mDestInsertionPoints.IsEmpty()) {
- parent = aVisitor.mDestInsertionPoints.LastElement();
- aVisitor.mDestInsertionPoints.SetLength(
- aVisitor.mDestInsertionPoints.Length() - 1);
- } else {
- // The pool host for the youngest shadow root is shadow DOM host,
- // for older shadow roots, it is the shadow insertion point
- // where the shadow root is projected, nullptr if none exists.
- parent = thisShadowRoot->GetPoolHost();
- }
- }
+ // Event parent is the assigned slot, if node is assigned, or node's parent
+ // otherwise.
+ HTMLSlotElement* slot = GetAssignedSlot();
+ nsIContent* parent = slot ? slot : GetParent();
// Event may need to be retargeted if this is the root of a native
// anonymous content subtree or event is dispatched somewhere inside XBL.
@@ -873,11 +943,17 @@ nsIContent::PreHandleEvent(EventChainPreVisitor& aVisitor)
if (!aVisitor.mEvent->mFlags.mComposedInNativeAnonymousContent &&
IsRootOfNativeAnonymousSubtree() && OwnerDoc() &&
OwnerDoc()->GetWindow()) {
- aVisitor.mParentTarget = OwnerDoc()->GetWindow()->GetParentTarget();
+ aVisitor.SetParentTarget(OwnerDoc()->GetWindow()->GetParentTarget(), true);
} else if (parent) {
- aVisitor.mParentTarget = parent;
+ aVisitor.SetParentTarget(parent, false);
+ if (slot) {
+ ShadowRoot* root = slot->GetContainingShadow();
+ if (root && root->IsClosed()) {
+ aVisitor.mParentIsSlotInClosedTree = true;
+ }
+ }
} else {
- aVisitor.mParentTarget = GetComposedDoc();
+ aVisitor.SetParentTarget(GetComposedDoc(), false);
}
return NS_OK;
}
@@ -962,7 +1038,7 @@ FragmentOrElement::IsLink(nsIURI** aURI) const
nsIContent*
FragmentOrElement::GetBindingParent() const
{
- nsDOMSlots *slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
return slots->mBindingParent;
@@ -974,7 +1050,7 @@ nsXBLBinding*
FragmentOrElement::GetXBLBinding() const
{
if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
- nsDOMSlots *slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
return slots->mXBLBinding;
}
@@ -1009,11 +1085,11 @@ FragmentOrElement::SetXBLBinding(nsXBLBinding* aBinding,
if (aBinding) {
SetFlags(NODE_MAY_BE_IN_BINDING_MNGR);
- nsDOMSlots *slots = DOMSlots();
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
slots->mXBLBinding = aBinding;
bindingManager->AddBoundContent(this);
} else {
- nsDOMSlots *slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
slots->mXBLBinding = nullptr;
}
@@ -1028,7 +1104,7 @@ nsIContent*
FragmentOrElement::GetXBLInsertionParent() const
{
if (HasFlag(NODE_MAY_BE_IN_BINDING_MNGR)) {
- nsDOMSlots *slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
return slots->mXBLInsertionParent;
}
@@ -1040,7 +1116,7 @@ FragmentOrElement::GetXBLInsertionParent() const
ShadowRoot*
FragmentOrElement::GetContainingShadow() const
{
- nsDOMSlots *slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
return slots->mContainingShadow;
}
@@ -1050,60 +1126,48 @@ FragmentOrElement::GetContainingShadow() const
void
FragmentOrElement::SetShadowRoot(ShadowRoot* aShadowRoot)
{
- nsDOMSlots *slots = DOMSlots();
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
slots->mShadowRoot = aShadowRoot;
}
-nsTArray<nsIContent*>&
-FragmentOrElement::DestInsertionPoints()
+HTMLSlotElement*
+FragmentOrElement::GetAssignedSlot() const
{
- nsDOMSlots *slots = DOMSlots();
- return slots->mDestInsertionPoints;
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
+ return slots ? slots->mAssignedSlot.get() : nullptr;
}
-nsTArray<nsIContent*>*
-FragmentOrElement::GetExistingDestInsertionPoints() const
+nsIContent*
+nsIContent::GetContainingShadowHost() const
{
- nsDOMSlots *slots = GetExistingDOMSlots();
- if (slots) {
- return &slots->mDestInsertionPoints;
+ if (mozilla::dom::ShadowRoot* shadow = GetContainingShadow()) {
+ return shadow->GetHost();
}
return nullptr;
}
void
+FragmentOrElement::SetAssignedSlot(HTMLSlotElement* aSlot)
+{
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
+ slots->mAssignedSlot = aSlot;
+}
+
+void
FragmentOrElement::SetXBLInsertionParent(nsIContent* aContent)
{
if (aContent) {
- nsDOMSlots *slots = DOMSlots();
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
SetFlags(NODE_MAY_BE_IN_BINDING_MNGR);
slots->mXBLInsertionParent = aContent;
} else {
- nsDOMSlots *slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
slots->mXBLInsertionParent = nullptr;
}
}
}
-CustomElementData*
-FragmentOrElement::GetCustomElementData() const
-{
- nsDOMSlots *slots = GetExistingDOMSlots();
- if (slots) {
- return slots->mCustomElementData;
- }
- return nullptr;
-}
-
-void
-FragmentOrElement::SetCustomElementData(CustomElementData* aData)
-{
- nsDOMSlots *slots = DOMSlots();
- MOZ_ASSERT(!slots->mCustomElementData, "Custom element data may not be changed once set.");
- slots->mCustomElementData = aData;
-}
-
nsresult
FragmentOrElement::InsertChildAt(nsIContent* aKid,
uint32_t aIndex,
@@ -1366,14 +1430,15 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(FragmentOrElement)
{
nsDOMSlots *slots = tmp->GetExistingDOMSlots();
if (slots) {
- if (tmp->IsElement()) {
+ if (slots->mExtendedSlots && tmp->IsElement()) {
Element* elem = tmp->AsElement();
- for (auto iter = slots->mRegisteredIntersectionObservers.Iter(); !iter.Done(); iter.Next()) {
+ for (auto iter = slots->mExtendedSlots->mRegisteredIntersectionObservers.Iter();
+ !iter.Done(); iter.Next()) {
DOMIntersectionObserver* observer = iter.Key();
observer->UnlinkTarget(*elem);
}
}
- slots->Unlink(tmp->IsXULElement());
+ slots->Unlink();
}
}
@@ -1938,7 +2003,7 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INTERNAL(FragmentOrElement)
{
nsDOMSlots *slots = tmp->GetExistingDOMSlots();
if (slots) {
- slots->Traverse(cb, tmp->IsXULElement());
+ slots->Traverse(cb);
}
}
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
@@ -2353,9 +2418,8 @@ FragmentOrElement::SetIsElementInStyleScopeFlagOnShadowTree(bool aInStyleScope)
NS_ASSERTION(IsElement(), "calling SetIsElementInStyleScopeFlagOnShadowTree "
"on a non-Element is useless");
ShadowRoot* shadowRoot = GetShadowRoot();
- while (shadowRoot) {
+ if (shadowRoot) {
shadowRoot->SetIsElementInStyleScopeFlagOnSubtree(aInStyleScope);
- shadowRoot = shadowRoot->GetOlderShadowRoot();
}
}
diff --git a/dom/base/FragmentOrElement.h b/dom/base/FragmentOrElement.h
index f0cc29f22..2f65fe517 100644
--- a/dom/base/FragmentOrElement.h
+++ b/dom/base/FragmentOrElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -15,6 +14,7 @@
#include "mozilla/Attributes.h"
#include "mozilla/MemoryReporting.h"
+#include "mozilla/UniquePtr.h"
#include "nsAttrAndChildArray.h" // member
#include "nsCycleCollectionParticipant.h" // NS_DECL_CYCLE_*
#include "nsIContent.h" // base class
@@ -37,6 +37,7 @@ class nsIURI;
namespace mozilla {
class DeclarationBlock;
namespace dom {
+struct CustomElementData;
class DOMIntersectionObserver;
class Element;
} // namespace dom
@@ -60,6 +61,7 @@ public:
// nsIWeakReference
NS_DECL_NSIWEAKREFERENCE
virtual size_t SizeOfOnlyThis(mozilla::MallocSizeOf aMallocSizeOf) const override;
+ virtual bool IsAlive() const override { return mNode != nullptr; }
void NoticeNodeDestruction()
{
@@ -152,16 +154,13 @@ public:
virtual void SetXBLBinding(nsXBLBinding* aBinding,
nsBindingManager* aOldBindingManager = nullptr) override;
virtual ShadowRoot *GetContainingShadow() const override;
- virtual nsTArray<nsIContent*> &DestInsertionPoints() override;
- virtual nsTArray<nsIContent*> *GetExistingDestInsertionPoints() const override;
virtual void SetShadowRoot(ShadowRoot* aBinding) override;
+ virtual mozilla::dom::HTMLSlotElement* GetAssignedSlot() const override;
+ virtual void SetAssignedSlot(mozilla::dom::HTMLSlotElement* aSlot) override;
virtual nsIContent *GetXBLInsertionParent() const override;
virtual void SetXBLInsertionParent(nsIContent* aContent) override;
virtual bool IsLink(nsIURI** aURI) const override;
- virtual CustomElementData *GetCustomElementData() const override;
- virtual void SetCustomElementData(CustomElementData* aData) override;
-
virtual void DestroyContent() override;
virtual void SaveSubtreeState() override;
@@ -241,8 +240,6 @@ protected:
nsresult CopyInnerTo(FragmentOrElement* aDest);
public:
- // Because of a bug in MS C++ compiler nsDOMSlots must be declared public,
- // otherwise nsXULElement::nsXULSlots doesn't compile.
/**
* There are a set of DOM- and scripting-specific instance variables
* that may only be instantiated when a content object is accessed
@@ -251,29 +248,13 @@ public:
* in a side structure that's only allocated when the content is
* accessed through the DOM.
*/
- class nsDOMSlots : public nsINode::nsSlots
+
+ class nsExtendedDOMSlots
{
public:
- nsDOMSlots();
- virtual ~nsDOMSlots();
-
- void Traverse(nsCycleCollectionTraversalCallback &cb, bool aIsXUL);
- void Unlink(bool aIsXUL);
-
- size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
-
- /**
- * The .style attribute (an interface that forwards to the actual
- * style rules)
- * @see nsGenericHTMLElement::GetStyle
- */
- nsCOMPtr<nsICSSDeclaration> mStyle;
+ nsExtendedDOMSlots();
- /**
- * The .dataset attribute.
- * @see nsGenericHTMLElement::GetDataset
- */
- nsDOMStringMap* mDataset; // [Weak]
+ ~nsExtendedDOMSlots();
/**
* SMIL Overridde style rules (for SMIL animation of CSS properties)
@@ -287,35 +268,17 @@ public:
RefPtr<mozilla::DeclarationBlock> mSMILOverrideStyleDeclaration;
/**
- * An object implementing nsIDOMMozNamedAttrMap for this content (attributes)
- * @see FragmentOrElement::GetAttributes
- */
- RefPtr<nsDOMAttributeMap> mAttributeMap;
-
- union {
- /**
- * The nearest enclosing content node with a binding that created us.
- * @see FragmentOrElement::GetBindingParent
- */
- nsIContent* mBindingParent; // [Weak]
-
- /**
- * The controllers of the XUL Element.
- */
- nsIControllers* mControllers; // [OWNER]
- };
+ * The nearest enclosing content node with a binding that created us.
+ * @see FragmentOrElement::GetBindingParent
+ */
+ nsIContent* mBindingParent; // [Weak]
/**
- * An object implementing the .children property for this element.
- */
- RefPtr<nsContentList> mChildrenList;
+ * The controllers of the XUL Element.
+ */
+ nsCOMPtr<nsIControllers> mControllers;
/**
- * An object implementing the .classList property for this element.
- */
- RefPtr<nsDOMTokenList> mClassList;
-
- /*
* An object implementing the .labels property for this element.
*/
RefPtr<nsLabelsNodeList> mLabelsList;
@@ -331,10 +294,9 @@ public:
RefPtr<ShadowRoot> mContainingShadow;
/**
- * An array of web component insertion points to which this element
- * is distributed.
+ * The assigned slot associated with this element.
*/
- nsTArray<nsIContent*> mDestInsertionPoints;
+ RefPtr<mozilla::dom::HTMLSlotElement> mAssignedSlot;
/**
* XBL binding installed on the element.
@@ -356,6 +318,55 @@ public:
*/
nsDataHashtable<nsRefPtrHashKey<DOMIntersectionObserver>, int32_t>
mRegisteredIntersectionObservers;
+
+ /**
+ * For XUL to hold either frameloader or opener.
+ */
+ nsCOMPtr<nsISupports> mFrameLoaderOrOpener;
+
+ };
+
+ class nsDOMSlots : public nsINode::nsSlots
+ {
+ public:
+ nsDOMSlots();
+ virtual ~nsDOMSlots();
+
+ void Traverse(nsCycleCollectionTraversalCallback &cb);
+ void Unlink();
+
+ size_t SizeOfIncludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
+
+ /**
+ * The .style attribute (an interface that forwards to the actual
+ * style rules)
+ * @see nsGenericHTMLElement::GetStyle
+ */
+ nsCOMPtr<nsICSSDeclaration> mStyle;
+
+ /**
+ * The .dataset attribute.
+ * @see nsGenericHTMLElement::GetDataset
+ */
+ nsDOMStringMap* mDataset; // [Weak]
+
+ /**
+ * An object implementing nsIDOMMozNamedAttrMap for this content (attributes)
+ * @see FragmentOrElement::GetAttributes
+ */
+ RefPtr<nsDOMAttributeMap> mAttributeMap;
+
+ /**
+ * An object implementing the .children property for this element.
+ */
+ RefPtr<nsContentList> mChildrenList;
+
+ /**
+ * An object implementing the .classList property for this element.
+ */
+ RefPtr<nsDOMTokenList> mClassList;
+
+ mozilla::UniquePtr<nsExtendedDOMSlots> mExtendedSlots;
};
protected:
@@ -375,6 +386,26 @@ protected:
return static_cast<nsDOMSlots*>(GetExistingSlots());
}
+ nsExtendedDOMSlots* ExtendedDOMSlots()
+ {
+ nsDOMSlots* slots = DOMSlots();
+ if (!slots->mExtendedSlots) {
+ slots->mExtendedSlots = MakeUnique<nsExtendedDOMSlots>();
+ }
+
+ return slots->mExtendedSlots.get();
+ }
+
+ nsExtendedDOMSlots* GetExistingExtendedDOMSlots() const
+ {
+ nsDOMSlots* slots = GetExistingDOMSlots();
+ if (slots) {
+ return slots->mExtendedSlots.get();
+ }
+
+ return nullptr;
+ }
+
/**
* Calls SetIsElementInStyleScopeFlagOnSubtree for each shadow tree attached
* to this node, which is assumed to be an Element.
diff --git a/dom/base/FromParser.h b/dom/base/FromParser.h
index 142c16cc4..c14a68038 100644
--- a/dom/base/FromParser.h
+++ b/dom/base/FromParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/GroupedSHistory.cpp b/dom/base/GroupedSHistory.cpp
index 266b1fd36..56cf37f5d 100644
--- a/dom/base/GroupedSHistory.cpp
+++ b/dom/base/GroupedSHistory.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/GroupedSHistory.h b/dom/base/GroupedSHistory.h
index c5e75d639..173091a01 100644
--- a/dom/base/GroupedSHistory.h
+++ b/dom/base/GroupedSHistory.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/HTMLSplitOnSpacesTokenizer.h b/dom/base/HTMLSplitOnSpacesTokenizer.h
index eb4ded016..68d98c6d2 100644
--- a/dom/base/HTMLSplitOnSpacesTokenizer.h
+++ b/dom/base/HTMLSplitOnSpacesTokenizer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/IdleRequest.cpp b/dom/base/IdleRequest.cpp
index fb3983d37..617c7e907 100644
--- a/dom/base/IdleRequest.cpp
+++ b/dom/base/IdleRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/IdleRequest.h b/dom/base/IdleRequest.h
index acf56f852..9ccf26739 100644
--- a/dom/base/IdleRequest.h
+++ b/dom/base/IdleRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/IframeSandboxKeywordList.h b/dom/base/IframeSandboxKeywordList.h
index 6e3132f51..567197f8f 100644
--- a/dom/base/IframeSandboxKeywordList.h
+++ b/dom/base/IframeSandboxKeywordList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ImageEncoder.cpp b/dom/base/ImageEncoder.cpp
index a41dee080..968c440b7 100644
--- a/dom/base/ImageEncoder.cpp
+++ b/dom/base/ImageEncoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ImageEncoder.h b/dom/base/ImageEncoder.h
index fd30a94d4..aa6f13741 100644
--- a/dom/base/ImageEncoder.h
+++ b/dom/base/ImageEncoder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ImageTracker.cpp b/dom/base/ImageTracker.cpp
index d0c231981..bdb5b0298 100644
--- a/dom/base/ImageTracker.cpp
+++ b/dom/base/ImageTracker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ImageTracker.h b/dom/base/ImageTracker.h
index f16461192..3bdde4fd7 100644
--- a/dom/base/ImageTracker.h
+++ b/dom/base/ImageTracker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ImportManager.cpp b/dom/base/ImportManager.cpp
index 1f4d376b3..dbce3f374 100644
--- a/dom/base/ImportManager.cpp
+++ b/dom/base/ImportManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ImportManager.h b/dom/base/ImportManager.h
index ccc00125a..3758bbb1e 100644
--- a/dom/base/ImportManager.h
+++ b/dom/base/ImportManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Link.cpp b/dom/base/Link.cpp
index 43bbe5c3a..e0cd4ed71 100644
--- a/dom/base/Link.cpp
+++ b/dom/base/Link.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Link.h b/dom/base/Link.h
index 42bbfa791..7a0828e12 100644
--- a/dom/base/Link.h
+++ b/dom/base/Link.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Location.cpp b/dom/base/Location.cpp
index 308e9a4ff..5c5e7db42 100644
--- a/dom/base/Location.cpp
+++ b/dom/base/Location.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Location.h b/dom/base/Location.h
index cc96ce558..29e8f0d6a 100644
--- a/dom/base/Location.h
+++ b/dom/base/Location.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/MultipartBlobImpl.cpp b/dom/base/MultipartBlobImpl.cpp
index 03bb62add..e24fb5a2c 100755
--- a/dom/base/MultipartBlobImpl.cpp
+++ b/dom/base/MultipartBlobImpl.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/MultipartBlobImpl.h b/dom/base/MultipartBlobImpl.h
index 9fb88183b..aff75019d 100644
--- a/dom/base/MultipartBlobImpl.h
+++ b/dom/base/MultipartBlobImpl.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/MutableBlobStorage.cpp b/dom/base/MutableBlobStorage.cpp
index 54ca4fe39..a8d639bc0 100644
--- a/dom/base/MutableBlobStorage.cpp
+++ b/dom/base/MutableBlobStorage.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/MutableBlobStorage.h b/dom/base/MutableBlobStorage.h
index ed368e5e6..b1c91ee93 100644
--- a/dom/base/MutableBlobStorage.h
+++ b/dom/base/MutableBlobStorage.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/MutableBlobStreamListener.h b/dom/base/MutableBlobStreamListener.h
index 1dc044c61..04699c95a 100644
--- a/dom/base/MutableBlobStreamListener.h
+++ b/dom/base/MutableBlobStreamListener.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/NameSpaceConstants.h b/dom/base/NameSpaceConstants.h
index d6c3f079f..cf0bb43eb 100644
--- a/dom/base/NameSpaceConstants.h
+++ b/dom/base/NameSpaceConstants.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Navigator.cpp b/dom/base/Navigator.cpp
index 977b07538..c0580c359 100644
--- a/dom/base/Navigator.cpp
+++ b/dom/base/Navigator.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Navigator.h b/dom/base/Navigator.h
index efecdbd0d..df99844ca 100644
--- a/dom/base/Navigator.h
+++ b/dom/base/Navigator.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/NodeInfo.cpp b/dom/base/NodeInfo.cpp
index f055dfc75..ee8b2425b 100644
--- a/dom/base/NodeInfo.cpp
+++ b/dom/base/NodeInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/NodeInfo.h b/dom/base/NodeInfo.h
index bdf0074e7..aa4e9f900 100644
--- a/dom/base/NodeInfo.h
+++ b/dom/base/NodeInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/NodeInfoInlines.h b/dom/base/NodeInfoInlines.h
index 970b6e53d..79e006723 100644
--- a/dom/base/NodeInfoInlines.h
+++ b/dom/base/NodeInfoInlines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/PartialSHistory.cpp b/dom/base/PartialSHistory.cpp
index 2da5ca536..284edfad6 100644
--- a/dom/base/PartialSHistory.cpp
+++ b/dom/base/PartialSHistory.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/PartialSHistory.h b/dom/base/PartialSHistory.h
index 5e8a435e6..2f3e4b810 100644
--- a/dom/base/PartialSHistory.h
+++ b/dom/base/PartialSHistory.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Pose.cpp b/dom/base/Pose.cpp
index 5bc4ca6de..b6fbaab13 100644
--- a/dom/base/Pose.cpp
+++ b/dom/base/Pose.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Pose.h b/dom/base/Pose.h
index 0817c8c96..0b58f18c9 100644
--- a/dom/base/Pose.h
+++ b/dom/base/Pose.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/PostMessageEvent.cpp b/dom/base/PostMessageEvent.cpp
index c1c5cdad4..ea89a43a1 100644
--- a/dom/base/PostMessageEvent.cpp
+++ b/dom/base/PostMessageEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/PostMessageEvent.h b/dom/base/PostMessageEvent.h
index 6b78d38ca..d96ac1140 100644
--- a/dom/base/PostMessageEvent.h
+++ b/dom/base/PostMessageEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ProcessGlobal.cpp b/dom/base/ProcessGlobal.cpp
index 6cd29ab7c..ed44e96d1 100644
--- a/dom/base/ProcessGlobal.cpp
+++ b/dom/base/ProcessGlobal.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ProcessGlobal.h b/dom/base/ProcessGlobal.h
index 4b93d4351..6c6b43d75 100644
--- a/dom/base/ProcessGlobal.h
+++ b/dom/base/ProcessGlobal.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ResizeObserverController.cpp b/dom/base/ResizeObserverController.cpp
index edf73fc73..d2162bb62 100644
--- a/dom/base/ResizeObserverController.cpp
+++ b/dom/base/ResizeObserverController.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ResizeObserverController.h b/dom/base/ResizeObserverController.h
index 2ddfc958c..01169112a 100644
--- a/dom/base/ResizeObserverController.h
+++ b/dom/base/ResizeObserverController.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ResponsiveImageSelector.cpp b/dom/base/ResponsiveImageSelector.cpp
index 84b322f07..0a64fc743 100644
--- a/dom/base/ResponsiveImageSelector.cpp
+++ b/dom/base/ResponsiveImageSelector.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ResponsiveImageSelector.h b/dom/base/ResponsiveImageSelector.h
index c722e8784..b4314b8bf 100644
--- a/dom/base/ResponsiveImageSelector.h
+++ b/dom/base/ResponsiveImageSelector.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/SameProcessMessageQueue.cpp b/dom/base/SameProcessMessageQueue.cpp
index 61b540617..1eb59223e 100644
--- a/dom/base/SameProcessMessageQueue.cpp
+++ b/dom/base/SameProcessMessageQueue.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/SameProcessMessageQueue.h b/dom/base/SameProcessMessageQueue.h
index 64eb78a4b..e39f2d8d6 100644
--- a/dom/base/SameProcessMessageQueue.h
+++ b/dom/base/SameProcessMessageQueue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ScreenOrientation.h b/dom/base/ScreenOrientation.h
index f836f688a..c69ad69cb 100644
--- a/dom/base/ScreenOrientation.h
+++ b/dom/base/ScreenOrientation.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -17,8 +16,6 @@ namespace mozilla {
namespace dom {
class Promise;
-// Make sure that any change to ScreenOrientationInternal values are
-// also made in mobile/android/base/GeckoScreenOrientation.java
typedef uint32_t ScreenOrientationInternal;
static const ScreenOrientationInternal eScreenOrientation_None = 0;
diff --git a/dom/base/ShadowRoot.cpp b/dom/base/ShadowRoot.cpp
index 9540754f7..1f7e8264d 100644
--- a/dom/base/ShadowRoot.cpp
+++ b/dom/base/ShadowRoot.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -14,9 +13,11 @@
#include "nsIDOMHTMLElement.h"
#include "nsIStyleSheetLinkingElement.h"
#include "mozilla/dom/Element.h"
-#include "mozilla/dom/HTMLContentElement.h"
-#include "mozilla/dom/HTMLShadowElement.h"
+#include "mozilla/dom/HTMLSlotElement.h"
+#include "mozilla/dom/StyleSheetList.h"
#include "nsXBLPrototypeBinding.h"
+#include "mozilla/BasicEvents.h"
+#include "mozilla/EventDispatcher.h"
#include "mozilla/StyleSheet.h"
#include "mozilla/StyleSheetInlines.h"
@@ -27,10 +28,7 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(ShadowRoot)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(ShadowRoot,
DocumentFragment)
- NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPoolHost)
- NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mStyleSheetList)
- NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mOlderShadow)
- NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mYoungerShadow)
+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mDOMStyleSheets)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mAssociatedBinding)
for (auto iter = tmp->mIdentifierMap.ConstIter(); !iter.Done();
iter.Next()) {
@@ -38,18 +36,14 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(ShadowRoot,
}
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
-NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(ShadowRoot,
- DocumentFragment)
- if (tmp->mPoolHost) {
- tmp->mPoolHost->RemoveMutationObserver(tmp);
+NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(ShadowRoot)
+ if (tmp->GetHost()) {
+ tmp->GetHost()->RemoveMutationObserver(tmp);
}
- NS_IMPL_CYCLE_COLLECTION_UNLINK(mPoolHost)
- NS_IMPL_CYCLE_COLLECTION_UNLINK(mStyleSheetList)
- NS_IMPL_CYCLE_COLLECTION_UNLINK(mOlderShadow)
- NS_IMPL_CYCLE_COLLECTION_UNLINK(mYoungerShadow)
+ NS_IMPL_CYCLE_COLLECTION_UNLINK(mDOMStyleSheets)
NS_IMPL_CYCLE_COLLECTION_UNLINK(mAssociatedBinding)
tmp->mIdentifierMap.Clear();
-NS_IMPL_CYCLE_COLLECTION_UNLINK_END
+NS_IMPL_CYCLE_COLLECTION_UNLINK_END_INHERITED(DocumentFragment)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(ShadowRoot)
NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIContent)
@@ -59,14 +53,17 @@ NS_INTERFACE_MAP_END_INHERITING(DocumentFragment)
NS_IMPL_ADDREF_INHERITED(ShadowRoot, DocumentFragment)
NS_IMPL_RELEASE_INHERITED(ShadowRoot, DocumentFragment)
-ShadowRoot::ShadowRoot(nsIContent* aContent,
+ShadowRoot::ShadowRoot(Element* aElement, bool aClosed,
already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
nsXBLPrototypeBinding* aProtoBinding)
- : DocumentFragment(aNodeInfo), mPoolHost(aContent),
- mProtoBinding(aProtoBinding), mShadowElement(nullptr),
- mInsertionPointChanged(false), mIsComposedDocParticipant(false)
+ : DocumentFragment(aNodeInfo)
+ , DocumentOrShadowRoot(this)
+ , mProtoBinding(aProtoBinding)
+ , mInsertionPointChanged(false)
+ , mIsComposedDocParticipant(false)
{
- SetHost(aContent);
+ SetHost(aElement);
+ mMode = aClosed ? ShadowRootMode::Closed : ShadowRootMode::Open;
// Nodes in a shadow tree should never store a value
// in the subtree root pointer, nodes in the shadow tree
@@ -75,29 +72,27 @@ ShadowRoot::ShadowRoot(nsIContent* aContent,
SetFlags(NODE_IS_IN_SHADOW_TREE);
- DOMSlots()->mBindingParent = aContent;
- DOMSlots()->mContainingShadow = this;
+ ExtendedDOMSlots()->mBindingParent = aElement;
+ ExtendedDOMSlots()->mContainingShadow = this;
// Add the ShadowRoot as a mutation observer on the host to watch
// for mutations because the insertion points in this ShadowRoot
// may need to be updated when the host children are modified.
- mPoolHost->AddMutationObserver(this);
+ GetHost()->AddMutationObserver(this);
}
ShadowRoot::~ShadowRoot()
{
- if (mPoolHost) {
- // mPoolHost may have been unlinked or a new ShadowRoot may have been
- // creating, making this one obsolete.
- mPoolHost->RemoveMutationObserver(this);
+ if (auto* host = GetHost()) {
+ // mHost may have been unlinked or a new ShadowRoot may have been
+ // created, making this one obsolete.
+ host->RemoveMutationObserver(this);
}
UnsetFlags(NODE_IS_IN_SHADOW_TREE);
// nsINode destructor expects mSubtreeRoot == this.
SetSubtreeRootPointer(this);
-
- SetHost(nullptr);
}
JSObject*
@@ -119,12 +114,115 @@ ShadowRoot::FromNode(nsINode* aNode)
}
void
+ShadowRoot::AddSlot(HTMLSlotElement* aSlot)
+{
+ MOZ_ASSERT(aSlot);
+
+ // Note that if name attribute missing, the slot is a default slot.
+ nsAutoString name;
+ aSlot->GetName(name);
+
+ nsTArray<HTMLSlotElement*>* currentSlots = mSlotMap.LookupOrAdd(name);
+ MOZ_ASSERT(currentSlots);
+
+ HTMLSlotElement* oldSlot = currentSlots->IsEmpty() ?
+ nullptr : currentSlots->ElementAt(0);
+
+ TreeOrderComparator comparator;
+ currentSlots->InsertElementSorted(aSlot, comparator);
+
+ HTMLSlotElement* currentSlot = currentSlots->ElementAt(0);
+ if (currentSlot != aSlot) {
+ return;
+ }
+
+ bool doEnqueueSlotChange = false;
+ if (oldSlot && oldSlot != currentSlot) {
+ // Move assigned nodes from old slot to new slot.
+ const nsTArray<RefPtr<nsINode>>& assignedNodes = oldSlot->AssignedNodes();
+ while (assignedNodes.Length() > 0) {
+ nsINode* assignedNode = assignedNodes[0];
+
+ oldSlot->RemoveAssignedNode(assignedNode);
+ currentSlot->AppendAssignedNode(assignedNode);
+ doEnqueueSlotChange = true;
+ }
+
+ if (doEnqueueSlotChange) {
+ oldSlot->EnqueueSlotChangeEvent();
+ currentSlot->EnqueueSlotChangeEvent();
+ }
+ } else {
+ // Otherwise add appropriate nodes to this slot from the host.
+ for (nsIContent* child = GetHost()->GetFirstChild();
+ child;
+ child = child->GetNextSibling()) {
+ nsAutoString slotName;
+ child->GetAttr(kNameSpaceID_None, nsGkAtoms::slot, slotName);
+ if (child->IsSlotable() && slotName.Equals(name)) {
+ currentSlot->AppendAssignedNode(child);
+ doEnqueueSlotChange = true;
+ }
+ }
+
+ if (doEnqueueSlotChange) {
+ currentSlot->EnqueueSlotChangeEvent();
+ }
+ }
+}
+
+void
+ShadowRoot::RemoveSlot(HTMLSlotElement* aSlot)
+{
+ MOZ_ASSERT(aSlot);
+
+ nsAutoString name;
+ aSlot->GetName(name);
+
+ nsTArray<HTMLSlotElement*>* currentSlots = mSlotMap.Get(name);
+
+ if (currentSlots) {
+ if (currentSlots->Length() == 1) {
+ MOZ_ASSERT(currentSlots->ElementAt(0) == aSlot);
+ mSlotMap.Remove(name);
+
+ if (aSlot->AssignedNodes().Length() > 0) {
+ aSlot->ClearAssignedNodes();
+ aSlot->EnqueueSlotChangeEvent();
+ }
+ } else {
+ bool doEnqueueSlotChange = false;
+ bool doReplaceSlot = currentSlots->ElementAt(0) == aSlot;
+ currentSlots->RemoveElement(aSlot);
+ HTMLSlotElement* replacementSlot = currentSlots->ElementAt(0);
+
+ // Move assigned nodes from removed slot to the next slot in
+ // tree order with the same name.
+ if (doReplaceSlot) {
+ const nsTArray<RefPtr<nsINode>>& assignedNodes = aSlot->AssignedNodes();
+ while (assignedNodes.Length() > 0) {
+ nsINode* assignedNode = assignedNodes[0];
+
+ aSlot->RemoveAssignedNode(assignedNode);
+ replacementSlot->AppendAssignedNode(assignedNode);
+ doEnqueueSlotChange = true;
+ }
+
+ if (doEnqueueSlotChange) {
+ aSlot->EnqueueSlotChangeEvent();
+ replacementSlot->EnqueueSlotChangeEvent();
+ }
+ }
+ }
+ }
+}
+
+void
ShadowRoot::StyleSheetChanged()
{
mProtoBinding->FlushSkinSheets();
- nsIPresShell* shell = OwnerDoc()->GetShell();
- if (shell) {
+ if (nsIPresShell* shell = OwnerDoc()->GetShell()) {
OwnerDoc()->BeginUpdate(UPDATE_STYLE);
shell->RecordShadowStyleChange(this);
OwnerDoc()->EndUpdate(UPDATE_STYLE);
@@ -142,16 +240,30 @@ ShadowRoot::InsertSheet(StyleSheet* aSheet,
linkingElement->SetStyleSheet(aSheet); // This sets the ownerNode on the sheet
+ MOZ_DIAGNOSTIC_ASSERT(mProtoBinding->SheetCount() == DocumentOrShadowRoot::SheetCount());
+#ifdef MOZ_DIAGNOSTIC_ASSERT_ENABLED
+ // FIXME(emilio, bug 1425759): For now we keep them duplicated, the proto
+ // binding will disappear soon (tm).
+ {
+ size_t i = 0;
+ for (RefPtr<StyleSheet>& sheet : mStyleSheets) {
+ MOZ_DIAGNOSTIC_ASSERT(sheet.get() == mProtoBinding->StyleSheetAt(i++));
+ }
+ }
+#endif
+
// Find the correct position to insert into the style sheet list (must
// be in tree order).
- for (size_t i = 0; i <= mProtoBinding->SheetCount(); i++) {
- if (i == mProtoBinding->SheetCount()) {
+ for (size_t i = 0; i <= SheetCount(); i++) {
+ if (i == SheetCount()) {
+ AppendStyleSheet(*aSheet);
mProtoBinding->AppendStyleSheet(aSheet);
break;
}
- nsINode* sheetOwningNode = mProtoBinding->StyleSheetAt(i)->GetOwnerNode();
+ nsINode* sheetOwningNode = SheetAt(i)->GetOwnerNode();
if (nsContentUtils::PositionIsBefore(aLinkingContent, sheetOwningNode)) {
+ InsertSheetAt(i, *aSheet);
mProtoBinding->InsertStyleSheetAt(i, aSheet);
break;
}
@@ -166,48 +278,17 @@ void
ShadowRoot::RemoveSheet(StyleSheet* aSheet)
{
mProtoBinding->RemoveStyleSheet(aSheet);
+ DocumentOrShadowRoot::RemoveSheet(*aSheet);
if (aSheet->IsApplicable()) {
StyleSheetChanged();
}
}
-Element*
-ShadowRoot::GetElementById(const nsAString& aElementId)
-{
- nsIdentifierMapEntry *entry = mIdentifierMap.GetEntry(aElementId);
- return entry ? entry->GetIdElement() : nullptr;
-}
-
-already_AddRefed<nsContentList>
-ShadowRoot::GetElementsByTagName(const nsAString& aTagName)
-{
- return NS_GetContentList(this, kNameSpaceID_Unknown, aTagName);
-}
-
-already_AddRefed<nsContentList>
-ShadowRoot::GetElementsByTagNameNS(const nsAString& aNamespaceURI,
- const nsAString& aLocalName)
-{
- int32_t nameSpaceId = kNameSpaceID_Wildcard;
-
- if (!aNamespaceURI.EqualsLiteral("*")) {
- nsresult rv =
- nsContentUtils::NameSpaceManager()->RegisterNameSpace(aNamespaceURI,
- nameSpaceId);
- NS_ENSURE_SUCCESS(rv, nullptr);
- }
-
- NS_ASSERTION(nameSpaceId != kNameSpaceID_Unknown, "Unexpected namespace ID!");
-
- return NS_GetContentList(this, nameSpaceId, aLocalName);
-}
-
void
ShadowRoot::AddToIdTable(Element* aElement, nsIAtom* aId)
{
- nsIdentifierMapEntry *entry =
- mIdentifierMap.PutEntry(nsDependentAtomString(aId));
+ nsIdentifierMapEntry* entry = mIdentifierMap.PutEntry(aId);
if (entry) {
entry->AddIdElement(aElement);
}
@@ -216,8 +297,7 @@ ShadowRoot::AddToIdTable(Element* aElement, nsIAtom* aId)
void
ShadowRoot::RemoveFromIdTable(Element* aElement, nsIAtom* aId)
{
- nsIdentifierMapEntry *entry =
- mIdentifierMap.GetEntry(nsDependentAtomString(aId));
+ nsIdentifierMapEntry* entry = mIdentifierMap.GetEntry(aId);
if (entry) {
entry->RemoveIdElement(aElement);
if (entry->IsEmpty()) {
@@ -226,244 +306,164 @@ ShadowRoot::RemoveFromIdTable(Element* aElement, nsIAtom* aId)
}
}
-already_AddRefed<nsContentList>
-ShadowRoot::GetElementsByClassName(const nsAString& aClasses)
-{
- return nsContentUtils::GetElementsByClassName(this, aClasses);
-}
-
-void
-ShadowRoot::AddInsertionPoint(HTMLContentElement* aInsertionPoint)
-{
- TreeOrderComparator comparator;
- mInsertionPoints.InsertElementSorted(aInsertionPoint, comparator);
-}
-
-void
-ShadowRoot::RemoveInsertionPoint(HTMLContentElement* aInsertionPoint)
-{
- mInsertionPoints.RemoveElement(aInsertionPoint);
-}
-
-void
-ShadowRoot::SetYoungerShadow(ShadowRoot* aYoungerShadow)
-{
- mYoungerShadow = aYoungerShadow;
- mYoungerShadow->mOlderShadow = this;
+nsresult
+ShadowRoot::GetEventTargetParent(EventChainPreVisitor& aVisitor)
+{
+ aVisitor.mCanHandle = true;
+ aVisitor.mRootOfClosedTree = IsClosed();
+
+ // https://dom.spec.whatwg.org/#ref-for-get-the-parent%E2%91%A6
+ if (!aVisitor.mEvent->mFlags.mComposed) {
+ nsCOMPtr<nsIContent> originalTarget =
+ do_QueryInterface(aVisitor.mEvent->mOriginalTarget);
+ if (originalTarget->GetContainingShadow() == this) {
+ // If we do stop propagation, we still want to propagate
+ // the event to chrome (nsPIDOMWindow::GetParentTarget()).
+ // The load event is special in that we don't ever propagate it
+ // to chrome.
+ nsCOMPtr<nsPIDOMWindowOuter> win = OwnerDoc()->GetWindow();
+ EventTarget* parentTarget = win && aVisitor.mEvent->mMessage != eLoad
+ ? win->GetParentTarget() : nullptr;
+
+ aVisitor.SetParentTarget(parentTarget, true);
+ return NS_OK;
+ }
+ }
- ChangePoolHost(mYoungerShadow->GetShadowElement());
-}
+ nsIContent* shadowHost = GetHost();
+ aVisitor.SetParentTarget(shadowHost, false);
-void
-ShadowRoot::RemoveDestInsertionPoint(nsIContent* aInsertionPoint,
- nsTArray<nsIContent*>& aDestInsertionPoints)
-{
- // Remove the insertion point from the destination insertion points.
- // Also remove all succeeding insertion points because it is no longer
- // possible for the content to be distributed into deeper node trees.
- int32_t index = aDestInsertionPoints.IndexOf(aInsertionPoint);
+ if (aVisitor.mOriginalTargetIsInAnon) {
+ nsCOMPtr<nsIContent> content(do_QueryInterface(aVisitor.mEvent->mTarget));
+ if (content && content->GetBindingParent() == shadowHost) {
+ aVisitor.mEventTargetAtParent = shadowHost;
+ }
+ }
- // It's possible that we already removed the insertion point while processing
- // other insertion point removals.
- if (index >= 0) {
- aDestInsertionPoints.SetLength(index);
- }
+ return NS_OK;
}
-void
-ShadowRoot::DistributeSingleNode(nsIContent* aContent)
+const HTMLSlotElement*
+ShadowRoot::AssignSlotFor(nsIContent* aContent)
{
- // Find the insertion point to which the content belongs.
- HTMLContentElement* insertionPoint = nullptr;
- for (uint32_t i = 0; i < mInsertionPoints.Length(); i++) {
- if (mInsertionPoints[i]->Match(aContent)) {
- if (mInsertionPoints[i]->MatchedNodes().Contains(aContent)) {
- // Node is already matched into the insertion point. We are done.
- return;
- }
-
- // Matching may cause the insertion point to drop fallback content.
- if (mInsertionPoints[i]->MatchedNodes().IsEmpty() &&
- static_cast<nsINode*>(mInsertionPoints[i])->GetFirstChild()) {
- // This match will cause the insertion point to drop all fallback
- // content and used matched nodes instead. Give up on the optimization
- // and just distribute all nodes.
- DistributeAllNodes();
- return;
- }
- insertionPoint = mInsertionPoints[i];
- break;
- }
+ nsAutoString slotName;
+ // Note that if slot attribute is missing, assign it to the first default
+ // slot, if exists.
+ aContent->GetAttr(kNameSpaceID_None, nsGkAtoms::slot, slotName);
+ nsTArray<HTMLSlotElement*>* slots = mSlotMap.Get(slotName);
+ if (!slots) {
+ return nullptr;
}
- // Find the index into the insertion point.
- if (insertionPoint) {
- nsCOMArray<nsIContent>& matchedNodes = insertionPoint->MatchedNodes();
- // Find the appropriate position in the matched node list for the
- // newly distributed content.
- bool isIndexFound = false;
- MOZ_ASSERT(mPoolHost, "Where did the content come from if there is no pool host?");
- ExplicitChildIterator childIterator(mPoolHost);
- for (uint32_t i = 0; i < matchedNodes.Length(); i++) {
- // Seek through the host's explicit children until the inserted content
- // is found or when the current matched node is reached.
- if (childIterator.Seek(aContent, matchedNodes[i])) {
- // aContent was found before the current matched node.
- insertionPoint->InsertMatchedNode(i, aContent);
- isIndexFound = true;
- break;
+ HTMLSlotElement* slot = slots->ElementAt(0);
+ MOZ_ASSERT(slot);
+
+ // Find the appropriate position in the assigned node list for the
+ // newly assigned content.
+ const nsTArray<RefPtr<nsINode>>& assignedNodes = slot->AssignedNodes();
+ nsIContent* currentContent = GetHost()->GetFirstChild();
+ bool indexFound = false;
+ uint32_t insertionIndex;
+ for (uint32_t i = 0; i < assignedNodes.Length(); i++) {
+ // Seek through the host's explicit children until the
+ // assigned content is found.
+ while (currentContent && currentContent != assignedNodes[i]) {
+ if (currentContent == aContent) {
+ indexFound = true;
+ insertionIndex = i;
}
- }
- if (!isIndexFound) {
- // We have still not found an index in the insertion point,
- // thus it must be at the end.
- MOZ_ASSERT(childIterator.Seek(aContent, nullptr),
- "Trying to match a node that is not a candidate to be matched");
- insertionPoint->AppendMatchedNode(aContent);
+ currentContent = currentContent->GetNextSibling();
}
- // Handle the case where the parent of the insertion point is a ShadowRoot
- // that is projected into the younger ShadowRoot's shadow insertion point.
- // The node distributed into the insertion point must be reprojected
- // to the shadow insertion point.
- if (insertionPoint->GetParent() == this &&
- mYoungerShadow && mYoungerShadow->GetShadowElement()) {
- mYoungerShadow->GetShadowElement()->DistributeSingleNode(aContent);
- }
-
- // Handle the case where the parent of the insertion point has a ShadowRoot.
- // The node distributed into the insertion point must be reprojected to the
- // insertion points of the parent's ShadowRoot.
- ShadowRoot* parentShadow = insertionPoint->GetParent()->GetShadowRoot();
- if (parentShadow) {
- parentShadow->DistributeSingleNode(aContent);
+ if (indexFound) {
+ break;
}
+ }
- // Handle the case where the parent of the insertion point is the <shadow>
- // element. The node distributed into the insertion point must be reprojected
- // into the older ShadowRoot's insertion points.
- if (mShadowElement && mShadowElement == insertionPoint->GetParent()) {
- ShadowRoot* olderShadow = mShadowElement->GetOlderShadowRoot();
- if (olderShadow) {
- olderShadow->DistributeSingleNode(aContent);
- }
- }
+ if (indexFound) {
+ slot->InsertAssignedNode(insertionIndex, aContent);
+ } else {
+ slot->AppendAssignedNode(aContent);
}
+
+ return slot;
}
-void
-ShadowRoot::RemoveDistributedNode(nsIContent* aContent)
+const HTMLSlotElement*
+ShadowRoot::UnassignSlotFor(nsIContent* aNode, const nsAString& aSlotName)
{
- // Find insertion point containing the content and remove the node.
- for (uint32_t i = 0; i < mInsertionPoints.Length(); i++) {
- if (mInsertionPoints[i]->MatchedNodes().Contains(aContent)) {
- // Removing the matched node may cause the insertion point to use
- // fallback content.
- if (mInsertionPoints[i]->MatchedNodes().Length() == 1 &&
- static_cast<nsINode*>(mInsertionPoints[i])->GetFirstChild()) {
- // Removing the matched node will cause fallback content to be
- // used instead. Give up optimization and distribute all nodes.
- DistributeAllNodes();
- return;
- }
+ // Find the insertion point to which the content belongs. Note that if slot
+ // attribute is missing, unassign it from the first default slot, if exists.
+ nsTArray<HTMLSlotElement*>* slots = mSlotMap.Get(aSlotName);
+ if (!slots) {
+ return nullptr;
+ }
- mInsertionPoints[i]->RemoveMatchedNode(aContent);
+ HTMLSlotElement* slot = slots->ElementAt(0);
+ MOZ_ASSERT(slot);
- // Handle the case where the parent of the insertion point is a ShadowRoot
- // that is projected into the younger ShadowRoot's shadow insertion point.
- // The removed node needs to be removed from the shadow insertion point.
- if (mInsertionPoints[i]->GetParent() == this) {
- if (mYoungerShadow && mYoungerShadow->GetShadowElement()) {
- mYoungerShadow->GetShadowElement()->RemoveDistributedNode(aContent);
- }
- }
+ if (!slot->AssignedNodes().Contains(aNode)) {
+ return nullptr;
+ }
- // Handle the case where the parent of the insertion point has a ShadowRoot.
- // The removed node needs to be removed from the insertion points of the
- // parent's ShadowRoot.
- ShadowRoot* parentShadow = mInsertionPoints[i]->GetParent()->GetShadowRoot();
- if (parentShadow) {
- parentShadow->RemoveDistributedNode(aContent);
- }
+ slot->RemoveAssignedNode(aNode);
+ return slot;
+}
- // Handle the case where the parent of the insertion point is the <shadow>
- // element. The removed node must be removed from the older ShadowRoot's
- // insertion points.
- if (mShadowElement && mShadowElement == mInsertionPoints[i]->GetParent()) {
- ShadowRoot* olderShadow = mShadowElement->GetOlderShadowRoot();
- if (olderShadow) {
- olderShadow->RemoveDistributedNode(aContent);
- }
+bool
+ShadowRoot::MaybeReassignElement(Element* aElement,
+ const nsAttrValue* aOldValue)
+{
+ nsIContent* parent = aElement->GetParent();
+ if (parent && parent == GetHost()) {
+ const HTMLSlotElement* oldSlot = UnassignSlotFor(aElement,
+ aOldValue ? aOldValue->GetStringValue() : EmptyString());
+ const HTMLSlotElement* newSlot = AssignSlotFor(aElement);
+
+ if (oldSlot != newSlot) {
+ if (oldSlot) {
+ oldSlot->EnqueueSlotChangeEvent();
}
-
- break;
+ if (newSlot) {
+ newSlot->EnqueueSlotChangeEvent();
+ }
+ return true;
}
}
+
+ return false;
}
void
-ShadowRoot::DistributeAllNodes()
+ShadowRoot::DistributionChanged()
{
- // Create node pool.
- nsTArray<nsIContent*> nodePool;
-
- // Make sure there is a pool host, an older shadow may not have
- // one if the younger shadow does not have a <shadow> element.
- if (mPoolHost) {
- ExplicitChildIterator childIterator(mPoolHost);
- for (nsIContent* content = childIterator.GetNextChild();
- content;
- content = childIterator.GetNextChild()) {
- nodePool.AppendElement(content);
- }
+ // FIXME(emilio): We could be more granular in a bunch of cases.
+ auto* host = GetHost();
+ if (!host || !host->IsInComposedDoc()) {
+ return;
}
- nsTArray<ShadowRoot*> shadowsToUpdate;
-
- for (uint32_t i = 0; i < mInsertionPoints.Length(); i++) {
- mInsertionPoints[i]->ClearMatchedNodes();
- // Assign matching nodes from node pool.
- for (uint32_t j = 0; j < nodePool.Length(); j++) {
- if (mInsertionPoints[i]->Match(nodePool[j])) {
- mInsertionPoints[i]->AppendMatchedNode(nodePool[j]);
- nodePool.RemoveElementAt(j--);
- }
- }
-
- // Keep track of instances where the content insertion point is distributed
- // (parent of insertion point has a ShadowRoot).
- nsIContent* insertionParent = mInsertionPoints[i]->GetParent();
- MOZ_ASSERT(insertionParent, "The only way for an insertion point to be in the"
- "mInsertionPoints array is to be a descendant of a"
- "ShadowRoot, in which case, it should have a parent");
-
- // If the parent of the insertion point has a ShadowRoot, the nodes distributed
- // to the insertion point must be reprojected to the insertion points of the
- // parent's ShadowRoot.
- ShadowRoot* parentShadow = insertionParent->GetShadowRoot();
- if (parentShadow && !shadowsToUpdate.Contains(parentShadow)) {
- shadowsToUpdate.AppendElement(parentShadow);
- }
+ auto* shell = OwnerDoc()->GetShell();
+ if (!shell) {
+ return;
}
- // If there is a shadow insertion point in this ShadowRoot, the children
- // of the shadow insertion point needs to be distributed into the insertion
- // points of the older ShadowRoot.
- if (mShadowElement && mOlderShadow) {
- mOlderShadow->DistributeAllNodes();
- }
+ shell->DestroyFramesForAndRestyle(host);
+}
- // If there is a younger ShadowRoot with a shadow insertion point,
- // then the children of this ShadowRoot needs to be distributed to
- // the younger ShadowRoot's shadow insertion point.
- if (mYoungerShadow && mYoungerShadow->GetShadowElement()) {
- mYoungerShadow->GetShadowElement()->DistributeAllNodes();
- }
+void
+ShadowRoot::DistributeAllNodes()
+{
+ //XXX Handle <slot>.
- for (uint32_t i = 0; i < shadowsToUpdate.Length(); i++) {
- shadowsToUpdate[i]->DistributeAllNodes();
- }
+ DistributionChanged();
+}
+
+Element*
+ShadowRoot::GetActiveElement()
+{
+ return GetRetargetedFocusedElement();
}
void
@@ -507,105 +507,6 @@ ShadowRoot::SetApplyAuthorStyles(bool aApplyAuthorStyles)
}
}
-StyleSheetList*
-ShadowRoot::StyleSheets()
-{
- if (!mStyleSheetList) {
- mStyleSheetList = new ShadowRootStyleSheetList(this);
- }
-
- return mStyleSheetList;
-}
-
-void
-ShadowRoot::SetShadowElement(HTMLShadowElement* aShadowElement)
-{
- // If there is already a shadow element point, remove
- // the projected shadow because it is no longer an insertion
- // point.
- if (mShadowElement) {
- mShadowElement->SetProjectedShadow(nullptr);
- }
-
- if (mOlderShadow) {
- // Nodes for distribution will come from the new shadow element.
- mOlderShadow->ChangePoolHost(aShadowElement);
- }
-
- // Set the new shadow element to project the older ShadowRoot because
- // it is the current shadow insertion point.
- mShadowElement = aShadowElement;
- if (mShadowElement) {
- mShadowElement->SetProjectedShadow(mOlderShadow);
- }
-}
-
-void
-ShadowRoot::ChangePoolHost(nsIContent* aNewHost)
-{
- if (mPoolHost) {
- mPoolHost->RemoveMutationObserver(this);
- }
-
- // Clear the nodes matched to content insertion points
- // because it is no longer relevant.
- for (uint32_t i = 0; i < mInsertionPoints.Length(); i++) {
- mInsertionPoints[i]->ClearMatchedNodes();
- }
-
- mPoolHost = aNewHost;
- if (mPoolHost) {
- mPoolHost->AddMutationObserver(this);
- }
-}
-
-bool
-ShadowRoot::IsShadowInsertionPoint(nsIContent* aContent)
-{
- if (!aContent) {
- return false;
- }
-
- HTMLShadowElement* shadowElem = HTMLShadowElement::FromContent(aContent);
- return shadowElem && shadowElem->IsInsertionPoint();
-}
-
-/**
- * Returns whether the web components pool population algorithm
- * on the host would contain |aContent|. This function ignores
- * insertion points in the pool, thus should only be used to
- * test nodes that have not yet been distributed.
- */
-bool
-ShadowRoot::IsPooledNode(nsIContent* aContent, nsIContent* aContainer,
- nsIContent* aHost)
-{
- if (nsContentUtils::IsContentInsertionPoint(aContent) ||
- IsShadowInsertionPoint(aContent)) {
- // Insertion points never end up in the pool.
- return false;
- }
-
- if (aContainer == aHost &&
- nsContentUtils::IsInSameAnonymousTree(aContainer, aContent)) {
- // Children of the host will end up in the pool. We check to ensure
- // that the content is in the same anonymous tree as the container
- // because anonymous content may report its container as the host
- // but it may not be in the host's child list.
- return true;
- }
-
- if (aContainer) {
- // Fallback content will end up in pool if its parent is a child of the host.
- HTMLContentElement* content = HTMLContentElement::FromContent(aContainer);
- return content && content->IsInsertionPoint() &&
- content->MatchedNodes().IsEmpty() &&
- aContainer->GetParentNode() == aHost;
- }
-
- return false;
-}
-
void
ShadowRoot::AttributeChanged(nsIDocument* aDocument,
Element* aElement,
@@ -614,13 +515,26 @@ ShadowRoot::AttributeChanged(nsIDocument* aDocument,
int32_t aModType,
const nsAttrValue* aOldValue)
{
- if (!IsPooledNode(aElement, aElement->GetParent(), mPoolHost)) {
+ if (aNameSpaceID != kNameSpaceID_None || aAttribute != nsGkAtoms::slot) {
return;
}
// Attributes may change insertion point matching, find its new distribution.
- RemoveDistributedNode(aElement);
- DistributeSingleNode(aElement);
+ if (!MaybeReassignElement(aElement, aOldValue)) {
+ return;
+ }
+
+ if (!aElement->IsInComposedDoc()) {
+ return;
+ }
+
+ auto* shell = OwnerDoc()->GetShell();
+ if (!shell) {
+ return;
+ }
+
+ //XXX optimize this!
+ shell->DestroyFramesForAndRestyle(aElement);
}
void
@@ -629,29 +543,10 @@ ShadowRoot::ContentAppended(nsIDocument* aDocument,
nsIContent* aFirstNewContent,
int32_t aNewIndexInContainer)
{
- if (mInsertionPointChanged) {
- DistributeAllNodes();
- mInsertionPointChanged = false;
- return;
- }
-
- // Watch for new nodes added to the pool because the node
- // may need to be added to an insertion point.
- nsIContent* currentChild = aFirstNewContent;
- while (currentChild) {
- // Add insertion point to destination insertion points of fallback content.
- if (nsContentUtils::IsContentInsertionPoint(aContainer)) {
- HTMLContentElement* content = HTMLContentElement::FromContent(aContainer);
- if (content->MatchedNodes().IsEmpty()) {
- currentChild->DestInsertionPoints().AppendElement(aContainer);
- }
- }
-
- if (IsPooledNode(currentChild, aContainer, mPoolHost)) {
- DistributeSingleNode(currentChild);
- }
-
- currentChild = currentChild->GetNextSibling();
+ for (nsIContent* content = aFirstNewContent;
+ content;
+ content = content->GetNextSibling()) {
+ ContentInserted(aDocument, aContainer, aFirstNewContent, aNewIndexInContainer);
}
}
@@ -661,24 +556,30 @@ ShadowRoot::ContentInserted(nsIDocument* aDocument,
nsIContent* aChild,
int32_t aIndexInContainer)
{
- if (mInsertionPointChanged) {
- DistributeAllNodes();
- mInsertionPointChanged = false;
+ // Check to ensure that the content is in the same anonymous tree
+ // as the container because anonymous content may report its container
+ // as the host but it may not be in the host's child list.
+ if (!nsContentUtils::IsInSameAnonymousTree(aContainer, aChild)) {
return;
}
- // Watch for new nodes added to the pool because the node
- // may need to be added to an insertion point.
- if (IsPooledNode(aChild, aContainer, mPoolHost)) {
- // Add insertion point to destination insertion points of fallback content.
- if (nsContentUtils::IsContentInsertionPoint(aContainer)) {
- HTMLContentElement* content = HTMLContentElement::FromContent(aContainer);
- if (content->MatchedNodes().IsEmpty()) {
- aChild->DestInsertionPoints().AppendElement(aContainer);
- }
+ if (!aChild->IsSlotable()) {
+ return;
+ }
+
+ if (aContainer && aContainer == GetHost()) {
+ if (const HTMLSlotElement* slot = AssignSlotFor(aChild)) {
+ slot->EnqueueSlotChangeEvent();
}
+ return;
+ }
- DistributeSingleNode(aChild);
+ // If parent's root is a shadow root, and parent is a slot whose assigned
+ // nodes is the empty list, then run signal a slot change for parent.
+ HTMLSlotElement* slot = HTMLSlotElement::FromContentOrNull(aContainer);
+ if (slot && slot->GetContainingShadow() == this &&
+ slot->AssignedNodes().IsEmpty()) {
+ slot->EnqueueSlotChangeEvent();
}
}
@@ -689,25 +590,32 @@ ShadowRoot::ContentRemoved(nsIDocument* aDocument,
int32_t aIndexInContainer,
nsIContent* aPreviousSibling)
{
- if (mInsertionPointChanged) {
- DistributeAllNodes();
- mInsertionPointChanged = false;
+ // Check to ensure that the content is in the same anonymous tree
+ // as the container because anonymous content may report its container
+ // as the host but it may not be in the host's child list.
+ if (!nsContentUtils::IsInSameAnonymousTree(aContainer, aChild)) {
return;
}
- // Clear destination insertion points for removed
- // fallback content.
- if (nsContentUtils::IsContentInsertionPoint(aContainer)) {
- HTMLContentElement* content = HTMLContentElement::FromContent(aContainer);
- if (content->MatchedNodes().IsEmpty()) {
- aChild->DestInsertionPoints().Clear();
+ if (!aChild->IsSlotable()) {
+ return;
+ }
+
+ if (aContainer && aContainer == GetHost()) {
+ nsAutoString slotName;
+ aChild->GetAttr(kNameSpaceID_None, nsGkAtoms::slot, slotName);
+ if (const HTMLSlotElement* slot = UnassignSlotFor(aChild, slotName)) {
+ slot->EnqueueSlotChangeEvent();
}
+ return;
}
- // Watch for node that is removed from the pool because
- // it may need to be removed from an insertion point.
- if (IsPooledNode(aChild, aContainer, mPoolHost)) {
- RemoveDistributedNode(aChild);
+ // If parent's root is a shadow root, and parent is a slot whose assigned
+ // nodes is the empty list, then run signal a slot change for parent.
+ HTMLSlotElement* slot = HTMLSlotElement::FromContentOrNull(aContainer);
+ if (slot && slot->GetContainingShadow() == this &&
+ slot->AssignedNodes().IsEmpty()) {
+ slot->EnqueueSlotChangeEvent();
}
}
@@ -717,49 +625,3 @@ ShadowRoot::Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const
*aResult = nullptr;
return NS_ERROR_DOM_DATA_CLONE_ERR;
}
-
-void
-ShadowRoot::DestroyContent()
-{
- if (mOlderShadow) {
- mOlderShadow->DestroyContent();
- }
- DocumentFragment::DestroyContent();
-}
-
-NS_IMPL_CYCLE_COLLECTION_INHERITED(ShadowRootStyleSheetList, StyleSheetList,
- mShadowRoot)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(ShadowRootStyleSheetList)
-NS_INTERFACE_MAP_END_INHERITING(StyleSheetList)
-
-NS_IMPL_ADDREF_INHERITED(ShadowRootStyleSheetList, StyleSheetList)
-NS_IMPL_RELEASE_INHERITED(ShadowRootStyleSheetList, StyleSheetList)
-
-ShadowRootStyleSheetList::ShadowRootStyleSheetList(ShadowRoot* aShadowRoot)
- : mShadowRoot(aShadowRoot)
-{
- MOZ_COUNT_CTOR(ShadowRootStyleSheetList);
-}
-
-ShadowRootStyleSheetList::~ShadowRootStyleSheetList()
-{
- MOZ_COUNT_DTOR(ShadowRootStyleSheetList);
-}
-
-StyleSheet*
-ShadowRootStyleSheetList::IndexedGetter(uint32_t aIndex, bool& aFound)
-{
- aFound = aIndex < mShadowRoot->mProtoBinding->SheetCount();
- if (!aFound) {
- return nullptr;
- }
- return mShadowRoot->mProtoBinding->StyleSheetAt(aIndex);
-}
-
-uint32_t
-ShadowRootStyleSheetList::Length()
-{
- return mShadowRoot->mProtoBinding->SheetCount();
-}
-
diff --git a/dom/base/ShadowRoot.h b/dom/base/ShadowRoot.h
index f84078134..775eaae95 100644
--- a/dom/base/ShadowRoot.h
+++ b/dom/base/ShadowRoot.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -8,30 +7,30 @@
#define mozilla_dom_shadowroot_h__
#include "mozilla/dom/DocumentFragment.h"
-#include "mozilla/dom/StyleSheetList.h"
-#include "mozilla/StyleSheet.h"
+#include "mozilla/dom/DocumentOrShadowRoot.h"
#include "nsCOMPtr.h"
#include "nsCycleCollectionParticipant.h"
#include "nsIContentInlines.h"
+#include "nsIdentifierMapEntry.h"
#include "nsTHashtable.h"
-#include "nsDocument.h"
+#include "nsXBLBinding.h"
class nsIAtom;
class nsIContent;
class nsXBLPrototypeBinding;
namespace mozilla {
+
+class EventChainPreVisitor;
+
namespace dom {
class Element;
-class HTMLContentElement;
-class HTMLShadowElement;
-class ShadowRootStyleSheetList;
class ShadowRoot final : public DocumentFragment,
+ public DocumentOrShadowRoot,
public nsStubMutationObserver
{
- friend class ShadowRootStyleSheetList;
public:
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ShadowRoot,
DocumentFragment)
@@ -42,90 +41,88 @@ public:
NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
- ShadowRoot(nsIContent* aContent, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
+ ShadowRoot(Element* aElement, bool aClosed,
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
nsXBLPrototypeBinding* aProtoBinding);
- void AddToIdTable(Element* aElement, nsIAtom* aId);
- void RemoveFromIdTable(Element* aElement, nsIAtom* aId);
+ // Shadow DOM v1
+ Element* Host();
+ ShadowRootMode Mode() const
+ {
+ return mMode;
+ }
+ bool IsClosed() const
+ {
+ return mMode == ShadowRootMode::Closed;
+ }
+
+ // [deprecated] Shadow DOM v0
void InsertSheet(StyleSheet* aSheet, nsIContent* aLinkingContent);
void RemoveSheet(StyleSheet* aSheet);
bool ApplyAuthorStyles();
void SetApplyAuthorStyles(bool aApplyAuthorStyles);
- StyleSheetList* StyleSheets();
- HTMLShadowElement* GetShadowElement() { return mShadowElement; }
+ StyleSheetList* StyleSheets()
+ {
+ return &DocumentOrShadowRoot::EnsureDOMStyleSheets();
+ }
/**
- * Sets the current shadow insertion point where the older
- * ShadowRoot will be projected.
+ * Distributes all the explicit children of the pool host to the content
+ * insertion points in this ShadowRoot.
*/
- void SetShadowElement(HTMLShadowElement* aShadowElement);
+ void DistributeAllNodes();
+private:
/**
- * Change the node that populates the distribution pool with
- * its children. This is distinct from the ShadowRoot host described
- * in the specifications. The ShadowRoot host is the element
- * which created this ShadowRoot and does not change. The pool host
- * is the same as the ShadowRoot host if this is the youngest
- * ShadowRoot. If this is an older ShadowRoot, the pool host is
- * the <shadow> element in the younger ShadowRoot (if it exists).
+ * Try to reassign an element to a slot and returns whether the assignment
+ * changed.
*/
- void ChangePoolHost(nsIContent* aNewHost);
+ bool MaybeReassignElement(Element* aElement, const nsAttrValue* aOldValue);
/**
- * Distributes a single explicit child of the pool host to the content
- * insertion points in this ShadowRoot.
+ * Try to assign aContent to a slot in the shadow tree, returns the assigned
+ * slot if found.
*/
- void DistributeSingleNode(nsIContent* aContent);
+ const HTMLSlotElement* AssignSlotFor(nsIContent* aContent);
/**
- * Removes a single explicit child of the pool host from the content
- * insertion points in this ShadowRoot.
+ * Unassign aContent from the assigned slot in the shadow tree, returns the
+ * assigned slot if found.
+ *
+ * Note: slot attribute of aContent may have changed already, so pass slot
+ * name explicity here.
*/
- void RemoveDistributedNode(nsIContent* aContent);
+ const HTMLSlotElement* UnassignSlotFor(nsIContent* aContent,
+ const nsAString& aSlotName);
/**
- * Distributes all the explicit children of the pool host to the content
- * insertion points in this ShadowRoot.
+ * Called when we redistribute content after insertion points have changed.
*/
- void DistributeAllNodes();
+ void DistributionChanged();
+
+ bool IsPooledNode(nsIContent* aChild) const;
- void AddInsertionPoint(HTMLContentElement* aInsertionPoint);
- void RemoveInsertionPoint(HTMLContentElement* aInsertionPoint);
+public:
+ void AddSlot(HTMLSlotElement* aSlot);
+ void RemoveSlot(HTMLSlotElement* aSlot);
- void SetYoungerShadow(ShadowRoot* aYoungerShadow);
- ShadowRoot* GetYoungerShadowRoot() { return mYoungerShadow; }
void SetInsertionPointChanged() { mInsertionPointChanged = true; }
void SetAssociatedBinding(nsXBLBinding* aBinding) { mAssociatedBinding = aBinding; }
- nsISupports* GetParentObject() const { return mPoolHost; }
-
- nsIContent* GetPoolHost() { return mPoolHost; }
- nsTArray<HTMLShadowElement*>& ShadowDescendants() { return mShadowDescendants; }
-
JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
- static bool IsPooledNode(nsIContent* aChild, nsIContent* aContainer,
- nsIContent* aHost);
static ShadowRoot* FromNode(nsINode* aNode);
- static bool IsShadowInsertionPoint(nsIContent* aContent);
- static void RemoveDestInsertionPoint(nsIContent* aInsertionPoint,
- nsTArray<nsIContent*>& aDestInsertionPoints);
+ void AddToIdTable(Element* aElement, nsIAtom* aId);
+ void RemoveFromIdTable(Element* aElement, nsIAtom* aId);
// WebIDL methods.
- Element* GetElementById(const nsAString& aElementId);
- already_AddRefed<nsContentList>
- GetElementsByTagName(const nsAString& aNamespaceURI);
- already_AddRefed<nsContentList>
- GetElementsByTagNameNS(const nsAString& aNamespaceURI,
- const nsAString& aLocalName);
- already_AddRefed<nsContentList>
- GetElementsByClassName(const nsAString& aClasses);
+ using mozilla::dom::DocumentOrShadowRoot::GetElementById;
+
+ Element* GetActiveElement();
void GetInnerHTML(nsAString& aInnerHTML);
void SetInnerHTML(const nsAString& aInnerHTML, ErrorResult& aError);
- Element* Host();
- ShadowRoot* GetOlderShadowRoot() { return mOlderShadow; }
void StyleSheetChanged();
bool IsComposedDocParticipant() { return mIsComposedDocParticipant; }
@@ -134,26 +131,18 @@ public:
mIsComposedDocParticipant = aIsComposedDocParticipant;
}
- virtual void DestroyContent() override;
+ nsresult GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
+
protected:
virtual ~ShadowRoot();
- // The pool host is the parent of the nodes that will be distributed
- // into the insertion points in this ShadowRoot. See |ChangeShadowRoot|.
- nsCOMPtr<nsIContent> mPoolHost;
-
- // An array of content insertion points that are a descendant of the ShadowRoot
- // sorted in tree order. Insertion points are responsible for notifying
- // the ShadowRoot when they are removed or added as a descendant. The insertion
- // points are kept alive by the parent node, thus weak references are held
- // by the array.
- nsTArray<HTMLContentElement*> mInsertionPoints;
+ ShadowRootMode mMode;
- // An array of the <shadow> elements that are descendant of the ShadowRoot
- // sorted in tree order. Only the first may be a shadow insertion point.
- nsTArray<HTMLShadowElement*> mShadowDescendants;
+ // Map from name of slot to an array of all slots in the shadow DOM with with
+ // the given name. The slots are stored as a weak pointer because the elements
+ // are in the shadow tree and should be kept alive by its parent.
+ nsClassHashtable<nsStringHashKey, nsTArray<mozilla::dom::HTMLSlotElement*>> mSlotMap;
- nsTHashtable<nsIdentifierMapEntry> mIdentifierMap;
nsXBLPrototypeBinding* mProtoBinding;
// It is necessary to hold a reference to the associated nsXBLBinding
@@ -161,19 +150,6 @@ protected:
// owns |mProtoBinding|.
RefPtr<nsXBLBinding> mAssociatedBinding;
- RefPtr<ShadowRootStyleSheetList> mStyleSheetList;
-
- // The current shadow insertion point of this ShadowRoot.
- HTMLShadowElement* mShadowElement;
-
- // The ShadowRoot that was created by the host element before
- // this ShadowRoot was created.
- RefPtr<ShadowRoot> mOlderShadow;
-
- // The ShadowRoot that was created by the host element after
- // this ShadowRoot was created.
- RefPtr<ShadowRoot> mYoungerShadow;
-
// A boolean that indicates that an insertion point was added or removed
// from this ShadowRoot and that the nodes need to be redistributed into
// the insertion points. After this flag is set, nodes will be distributed
@@ -189,28 +165,6 @@ protected:
nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
};
-class ShadowRootStyleSheetList : public StyleSheetList
-{
-public:
- explicit ShadowRootStyleSheetList(ShadowRoot* aShadowRoot);
-
- NS_DECL_ISUPPORTS_INHERITED
- NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(ShadowRootStyleSheetList, StyleSheetList)
-
- virtual nsINode* GetParentObject() const override
- {
- return mShadowRoot;
- }
-
- uint32_t Length() override;
- StyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) override;
-
-protected:
- virtual ~ShadowRootStyleSheetList();
-
- RefPtr<ShadowRoot> mShadowRoot;
-};
-
} // namespace dom
} // namespace mozilla
diff --git a/dom/base/SimpleTreeIterator.h b/dom/base/SimpleTreeIterator.h
index 7ca504082..76a3b3991 100644
--- a/dom/base/SimpleTreeIterator.h
+++ b/dom/base/SimpleTreeIterator.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/StructuredCloneHolder.cpp b/dom/base/StructuredCloneHolder.cpp
index 8e7cee340..5ad8ebb68 100644
--- a/dom/base/StructuredCloneHolder.cpp
+++ b/dom/base/StructuredCloneHolder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/StructuredCloneTags.h b/dom/base/StructuredCloneTags.h
index a19305311..8766d8e4a 100644
--- a/dom/base/StructuredCloneTags.h
+++ b/dom/base/StructuredCloneTags.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/StyleSheetList.cpp b/dom/base/StyleSheetList.cpp
index 7274b5ea5..1da9f38a1 100644
--- a/dom/base/StyleSheetList.cpp
+++ b/dom/base/StyleSheetList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -8,6 +7,7 @@
#include "mozilla/CSSStyleSheet.h"
#include "mozilla/dom/StyleSheetListBinding.h"
+#include "nsStubDocumentObserver.h"
namespace mozilla {
namespace dom {
@@ -17,7 +17,8 @@ NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE_0(StyleSheetList)
NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(StyleSheetList)
NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
NS_INTERFACE_MAP_ENTRY(nsIDOMStyleSheetList)
- NS_INTERFACE_MAP_ENTRY(nsISupports)
+ NS_INTERFACE_MAP_ENTRY(nsIMutationObserver)
+ NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIDOMStyleSheetList)
NS_INTERFACE_MAP_END
NS_IMPL_CYCLE_COLLECTING_ADDREF(StyleSheetList)
@@ -43,5 +44,24 @@ StyleSheetList::SlowItem(uint32_t aIndex, nsIDOMStyleSheet** aItem)
return NS_OK;
}
+void
+StyleSheetList::NodeWillBeDestroyed(const nsINode* aNode)
+{
+ mDocumentOrShadowRoot = nullptr;
+}
+
+StyleSheetList::StyleSheetList(DocumentOrShadowRoot& aScope)
+ : mDocumentOrShadowRoot(&aScope)
+{
+ mDocumentOrShadowRoot->AsNode().AddMutationObserver(this);
+}
+
+StyleSheetList::~StyleSheetList()
+{
+ if (mDocumentOrShadowRoot) {
+ mDocumentOrShadowRoot->AsNode().RemoveMutationObserver(this);
+ }
+}
+
} // namespace dom
} // namespace mozilla
diff --git a/dom/base/StyleSheetList.h b/dom/base/StyleSheetList.h
index dfedc2214..0b1434f25 100644
--- a/dom/base/StyleSheetList.h
+++ b/dom/base/StyleSheetList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -7,8 +6,10 @@
#ifndef mozilla_dom_StyleSheetList_h
#define mozilla_dom_StyleSheetList_h
+#include "mozilla/dom/DocumentOrShadowRoot.h"
#include "nsIDOMStyleSheetList.h"
#include "nsWrapperCache.h"
+#include "nsStubDocumentObserver.h"
class nsINode;
@@ -17,28 +18,54 @@ class StyleSheet;
namespace dom {
-class StyleSheetList : public nsIDOMStyleSheetList
- , public nsWrapperCache
+class StyleSheetList final : public nsIDOMStyleSheetList
+ , public nsWrapperCache
+ , public nsStubDocumentObserver
{
public:
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(StyleSheetList)
+ NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(StyleSheetList, nsIDOMStyleSheetList)
+
NS_DECL_NSIDOMSTYLESHEETLIST
+ NS_DECL_NSIMUTATIONOBSERVER_NODEWILLBEDESTROYED
+
+ explicit StyleSheetList(DocumentOrShadowRoot& aScope);
+
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override final;
- virtual nsINode* GetParentObject() const = 0;
+ nsINode* GetParentObject() const
+ {
+ return mDocumentOrShadowRoot ? &mDocumentOrShadowRoot->AsNode() : nullptr;
+ }
- virtual uint32_t Length() = 0;
- virtual StyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) = 0;
- StyleSheet* Item(uint32_t aIndex)
+ uint32_t Length() const
+ {
+ return mDocumentOrShadowRoot ? mDocumentOrShadowRoot->SheetCount() : 0;
+ }
+
+ StyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) const
+ {
+ if (!mDocumentOrShadowRoot) {
+ aFound = false;
+ return nullptr;
+ }
+
+ StyleSheet* sheet = mDocumentOrShadowRoot->SheetAt(aIndex);
+ aFound = !!sheet;
+ return sheet;
+ }
+
+ StyleSheet* Item(uint32_t aIndex) const
{
bool dummy = false;
return IndexedGetter(aIndex, dummy);
}
protected:
- virtual ~StyleSheetList() {}
+ virtual ~StyleSheetList();
+
+ DocumentOrShadowRoot* mDocumentOrShadowRoot; // Weak, cleared on "NodeWillBeDestroyed".
};
} // namespace dom
diff --git a/dom/base/SubtleCrypto.cpp b/dom/base/SubtleCrypto.cpp
index 1b97529a1..24a7db794 100644
--- a/dom/base/SubtleCrypto.cpp
+++ b/dom/base/SubtleCrypto.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/SubtleCrypto.h b/dom/base/SubtleCrypto.h
index 9ac5d8b8f..6099d23a5 100644
--- a/dom/base/SubtleCrypto.h
+++ b/dom/base/SubtleCrypto.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/TabGroup.cpp b/dom/base/TabGroup.cpp
index de67bcb78..14e3a0993 100644
--- a/dom/base/TabGroup.cpp
+++ b/dom/base/TabGroup.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/TabGroup.h b/dom/base/TabGroup.h
index c436ce98d..d807fdd57 100644
--- a/dom/base/TabGroup.h
+++ b/dom/base/TabGroup.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Text.cpp b/dom/base/Text.cpp
index b98471247..953bcc20b 100644
--- a/dom/base/Text.cpp
+++ b/dom/base/Text.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/Text.h b/dom/base/Text.h
index a16db848e..c51cfdbbe 100644
--- a/dom/base/Text.h
+++ b/dom/base/Text.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/TextInputProcessor.cpp b/dom/base/TextInputProcessor.cpp
index 3ebbc5347..23d5dd752 100644
--- a/dom/base/TextInputProcessor.cpp
+++ b/dom/base/TextInputProcessor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/TextInputProcessor.h b/dom/base/TextInputProcessor.h
index 07cfd3898..37059b0d3 100644
--- a/dom/base/TextInputProcessor.h
+++ b/dom/base/TextInputProcessor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ThirdPartyUtil.cpp b/dom/base/ThirdPartyUtil.cpp
index 37d326dbc..8c0ba80bf 100644
--- a/dom/base/ThirdPartyUtil.cpp
+++ b/dom/base/ThirdPartyUtil.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/ThirdPartyUtil.h b/dom/base/ThirdPartyUtil.h
index 90e45aac6..b16d45f96 100644
--- a/dom/base/ThirdPartyUtil.h
+++ b/dom/base/ThirdPartyUtil.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/TimeoutHandler.cpp b/dom/base/TimeoutHandler.cpp
index f34275840..947002e90 100644
--- a/dom/base/TimeoutHandler.cpp
+++ b/dom/base/TimeoutHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/TimerClamping.cpp b/dom/base/TimerClamping.cpp
index 70639686b..1d6b7dee9 100755
--- a/dom/base/TimerClamping.cpp
+++ b/dom/base/TimerClamping.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/TimerClamping.h b/dom/base/TimerClamping.h
index 2bd1f019c..250c01def 100755
--- a/dom/base/TimerClamping.h
+++ b/dom/base/TimerClamping.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/TreeWalker.cpp b/dom/base/TreeWalker.cpp
index 784509b00..ba91e975d 100644
--- a/dom/base/TreeWalker.cpp
+++ b/dom/base/TreeWalker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=4 et sw=4 tw=80: */
/* 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/. */
diff --git a/dom/base/TreeWalker.h b/dom/base/TreeWalker.h
index a834ab449..c85dfda1c 100644
--- a/dom/base/TreeWalker.h
+++ b/dom/base/TreeWalker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=4 et sw=4 tw=80: */
/* 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/. */
diff --git a/dom/base/WebKitCSSMatrix.cpp b/dom/base/WebKitCSSMatrix.cpp
index 2cb6d6bf0..fe26b7455 100644
--- a/dom/base/WebKitCSSMatrix.cpp
+++ b/dom/base/WebKitCSSMatrix.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/WebKitCSSMatrix.h b/dom/base/WebKitCSSMatrix.h
index 4b2adf9e0..e50c61726 100644
--- a/dom/base/WebKitCSSMatrix.h
+++ b/dom/base/WebKitCSSMatrix.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/WebSocket.cpp b/dom/base/WebSocket.cpp
index af4b7858b..19a687cba 100644
--- a/dom/base/WebSocket.cpp
+++ b/dom/base/WebSocket.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/WebSocket.h b/dom/base/WebSocket.h
index f5fd170de..2eedeb3ba 100644
--- a/dom/base/WebSocket.h
+++ b/dom/base/WebSocket.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/WindowNamedPropertiesHandler.cpp b/dom/base/WindowNamedPropertiesHandler.cpp
index c0b71dab3..97ea3f8da 100644
--- a/dom/base/WindowNamedPropertiesHandler.cpp
+++ b/dom/base/WindowNamedPropertiesHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/WindowNamedPropertiesHandler.h b/dom/base/WindowNamedPropertiesHandler.h
index cafeadb85..a69366a2b 100644
--- a/dom/base/WindowNamedPropertiesHandler.h
+++ b/dom/base/WindowNamedPropertiesHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/WindowOrientationObserver.cpp b/dom/base/WindowOrientationObserver.cpp
index d168cdd68..4ca0f9e7e 100644
--- a/dom/base/WindowOrientationObserver.cpp
+++ b/dom/base/WindowOrientationObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/WindowOrientationObserver.h b/dom/base/WindowOrientationObserver.h
index b544f202b..84545db9b 100644
--- a/dom/base/WindowOrientationObserver.h
+++ b/dom/base/WindowOrientationObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/crashtests/1341693.html b/dom/base/crashtests/1341693.html
new file mode 100644
index 000000000..677305ba5
--- /dev/null
+++ b/dom/base/crashtests/1341693.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<body>
+<script>
+ var o1 = document.documentElement;
+ var o2 = document.createElement("frame");
+ document.documentElement.appendChild(o2);
+ var o3 = o2.contentWindow;
+ o1.parentNode.removeChild(o1);
+ o3.customElements;
+</script>
+</body>
+</html>
diff --git a/dom/base/crashtests/1419799.html b/dom/base/crashtests/1419799.html
new file mode 100644
index 000000000..b6d34a1a9
--- /dev/null
+++ b/dom/base/crashtests/1419799.html
@@ -0,0 +1,17 @@
+<html>
+ <head>
+ <script>
+ try { o1 = document.createElement('textarea') } catch(e) { }
+ try { o2 = document.createElement('div') } catch(e) { }
+ try { o3 = document.createElement('map') } catch(e) { }
+ try { document.documentElement.appendChild(o2) } catch(e) { }
+ try { o2.appendChild(o1) } catch(e) { }
+ try { document.documentElement.getClientRects() } catch(e) { }
+ try { o4 = o2.attachShadow({ mode: "open" }); } catch(e) { }
+ try { o1.appendChild(o3) } catch(e) { }
+ try { o5 = o3.parentElement } catch(e) { }
+ try { o3.outerHTML = "\n" } catch(e) { }
+ try { o4.prepend("", o5, "") } catch(e) { }
+ </script>
+ </head>
+</html>
diff --git a/dom/base/crashtests/1422931.html b/dom/base/crashtests/1422931.html
new file mode 100644
index 000000000..9f09f41ef
--- /dev/null
+++ b/dom/base/crashtests/1422931.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+<body>
+<!-- Testing slot element with "dom.webcomponents.enabled" set to false -->
+<slot><div></div></slot>
+</html>
diff --git a/dom/base/crashtests/crashtests.list b/dom/base/crashtests/crashtests.list
index a0739f074..40d358b38 100644
--- a/dom/base/crashtests/crashtests.list
+++ b/dom/base/crashtests/crashtests.list
@@ -193,7 +193,7 @@ load 930250.html
load 942979.html
load 973401.html
load 978646.html
-pref(dom.webcomponents.enabled,true) load 1024428-1.html
+pref(dom.webcomponents.enabled,true) load 1024428-1.html # bug 1340009
load 1026714.html
pref(dom.webcomponents.enabled,true) load 1027461-1.html
pref(dom.webcomponents.enabled,true) load 1029710.html
@@ -209,3 +209,6 @@ load 1230422.html
load 1251361.html
load 1304437.html
pref(clipboard.autocopy,true) load 1385272-1.html
+pref(dom.webcomponents.enabled,true) load 1341693.html
+pref(dom.webcomponents.enabled,true) load 1419799.html
+pref(dom.webcomponents.enabled,false) load 1422931.html
diff --git a/dom/base/moz.build b/dom/base/moz.build
index 65e3c3d76..d788d15fe 100755
--- a/dom/base/moz.build
+++ b/dom/base/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
@@ -85,6 +84,7 @@ EXPORTS += [
'nsIContentInlines.h',
'nsIContentIterator.h',
'nsIContentSerializer.h',
+ 'nsIdentifierMapEntry.h',
'nsIDocument.h',
'nsIDocumentInlines.h',
'nsIDocumentObserver.h',
@@ -160,6 +160,7 @@ EXPORTS.mozilla.dom += [
'DirectionalityUtils.h',
'DocGroup.h',
'DocumentFragment.h',
+ 'DocumentOrShadowRoot.h',
'DocumentType.h',
'DOMCursor.h',
'DOMError.h',
@@ -239,6 +240,7 @@ SOURCES += [
'DirectionalityUtils.cpp',
'DocGroup.cpp',
'DocumentFragment.cpp',
+ 'DocumentOrShadowRoot.cpp',
'DocumentType.cpp',
'DOMCursor.cpp',
'DOMError.cpp',
diff --git a/dom/base/mozAutoDocUpdate.h b/dom/base/mozAutoDocUpdate.h
index 10ce7f15e..b0cf4c73a 100644
--- a/dom/base/mozAutoDocUpdate.h
+++ b/dom/base/mozAutoDocUpdate.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/mozFlushType.h b/dom/base/mozFlushType.h
index 0a5680176..bc7e1fcde 100644
--- a/dom/base/mozFlushType.h
+++ b/dom/base/mozFlushType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsAtomListUtils.cpp b/dom/base/nsAtomListUtils.cpp
index e6dc8f728..9addab040 100644
--- a/dom/base/nsAtomListUtils.cpp
+++ b/dom/base/nsAtomListUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsAtomListUtils.h b/dom/base/nsAtomListUtils.h
index 1f1d8aceb..977f22faa 100644
--- a/dom/base/nsAtomListUtils.h
+++ b/dom/base/nsAtomListUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsAttrAndChildArray.cpp b/dom/base/nsAttrAndChildArray.cpp
index 9fd27262b..7ec5cebf0 100644
--- a/dom/base/nsAttrAndChildArray.cpp
+++ b/dom/base/nsAttrAndChildArray.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -382,12 +381,15 @@ nsAttrAndChildArray::AttrAt(uint32_t aPos) const
}
nsresult
-nsAttrAndChildArray::SetAndSwapAttr(nsIAtom* aLocalName, nsAttrValue& aValue)
+nsAttrAndChildArray::SetAndSwapAttr(nsIAtom* aLocalName, nsAttrValue& aValue,
+ bool* aHadValue)
{
+ *aHadValue = false;
uint32_t i, slotCount = AttrSlotCount();
for (i = 0; i < slotCount && AttrSlotIsTaken(i); ++i) {
if (ATTRS(mImpl)[i].mName.Equals(aLocalName)) {
ATTRS(mImpl)[i].mValue.SwapValueWith(aValue);
+ *aHadValue = true;
return NS_OK;
}
}
@@ -407,21 +409,22 @@ nsAttrAndChildArray::SetAndSwapAttr(nsIAtom* aLocalName, nsAttrValue& aValue)
}
nsresult
-nsAttrAndChildArray::SetAndSwapAttr(mozilla::dom::NodeInfo* aName, nsAttrValue& aValue)
+nsAttrAndChildArray::SetAndSwapAttr(mozilla::dom::NodeInfo* aName,
+ nsAttrValue& aValue, bool* aHadValue)
{
int32_t namespaceID = aName->NamespaceID();
nsIAtom* localName = aName->NameAtom();
if (namespaceID == kNameSpaceID_None) {
- return SetAndSwapAttr(localName, aValue);
+ return SetAndSwapAttr(localName, aValue, aHadValue);
}
+ *aHadValue = false;
uint32_t i, slotCount = AttrSlotCount();
for (i = 0; i < slotCount && AttrSlotIsTaken(i); ++i) {
if (ATTRS(mImpl)[i].mName.Equals(localName, namespaceID)) {
ATTRS(mImpl)[i].mName.SetTo(aName);
- ATTRS(mImpl)[i].mValue.Reset();
ATTRS(mImpl)[i].mValue.SwapValueWith(aValue);
-
+ *aHadValue = true;
return NS_OK;
}
}
@@ -576,10 +579,11 @@ nsAttrAndChildArray::IndexOfAttr(nsIAtom* aLocalName, int32_t aNamespaceID) cons
}
nsresult
-nsAttrAndChildArray::SetAndTakeMappedAttr(nsIAtom* aLocalName,
+nsAttrAndChildArray::SetAndSwapMappedAttr(nsIAtom* aLocalName,
nsAttrValue& aValue,
nsMappedAttributeElement* aContent,
- nsHTMLStyleSheet* aSheet)
+ nsHTMLStyleSheet* aSheet,
+ bool* aHadValue)
{
bool willAdd = true;
if (mImpl && mImpl->mMappedAttrs) {
@@ -589,7 +593,7 @@ nsAttrAndChildArray::SetAndTakeMappedAttr(nsIAtom* aLocalName,
RefPtr<nsMappedAttributes> mapped =
GetModifiableMapped(aContent, aSheet, willAdd);
- mapped->SetAndTakeAttr(aLocalName, aValue);
+ mapped->SetAndSwapAttr(aLocalName, aValue, aHadValue);
return MakeMappedUnique(mapped);
}
@@ -714,10 +718,19 @@ nsAttrAndChildArray::MappedAttrCount() const
return mImpl && mImpl->mMappedAttrs ? (uint32_t)mImpl->mMappedAttrs->Count() : 0;
}
+nsresult
+nsAttrAndChildArray::ForceMapped(nsMappedAttributeElement* aContent, nsIDocument* aDocument)
+{
+ nsHTMLStyleSheet* sheet = aDocument->GetAttributeStyleSheet();
+ RefPtr<nsMappedAttributes> mapped = GetModifiableMapped(aContent, sheet, false, 0);
+ return MakeMappedUnique(mapped);
+}
+
nsMappedAttributes*
nsAttrAndChildArray::GetModifiableMapped(nsMappedAttributeElement* aContent,
nsHTMLStyleSheet* aSheet,
- bool aWillAddAttr)
+ bool aWillAddAttr,
+ int32_t aAttrCount)
{
if (mImpl && mImpl->mMappedAttrs) {
return mImpl->mMappedAttrs->Clone(aWillAddAttr);
@@ -727,7 +740,7 @@ nsAttrAndChildArray::GetModifiableMapped(nsMappedAttributeElement* aContent,
nsMapRuleToAttributesFunc mapRuleFunc =
aContent->GetAttributeMappingFunction();
- return new nsMappedAttributes(aSheet, mapRuleFunc);
+ return new (aAttrCount) nsMappedAttributes(aSheet, mapRuleFunc);
}
nsresult
diff --git a/dom/base/nsAttrAndChildArray.h b/dom/base/nsAttrAndChildArray.h
index f34370c43..af12fba47 100644
--- a/dom/base/nsAttrAndChildArray.h
+++ b/dom/base/nsAttrAndChildArray.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -91,8 +90,13 @@ public:
nsCaseTreatment aCaseSensitive) const;
const nsAttrValue* AttrAt(uint32_t aPos) const;
// SetAndSwapAttr swaps the current attribute value with aValue.
- nsresult SetAndSwapAttr(nsIAtom* aLocalName, nsAttrValue& aValue);
- nsresult SetAndSwapAttr(mozilla::dom::NodeInfo* aName, nsAttrValue& aValue);
+ // If the attribute was unset, an empty value will be swapped into aValue
+ // and aHadValue will be set to false. Otherwise, aHadValue will be set to
+ // true.
+ nsresult SetAndSwapAttr(nsIAtom* aLocalName, nsAttrValue& aValue,
+ bool* aHadValue);
+ nsresult SetAndSwapAttr(mozilla::dom::NodeInfo* aName, nsAttrValue& aValue,
+ bool* aHadValue);
// Remove the attr at position aPos. The value of the attr is placed in
// aValue; any value that was already in aValue is destroyed.
@@ -110,9 +114,14 @@ public:
const nsAttrName* GetExistingAttrNameFromQName(const nsAString& aName) const;
int32_t IndexOfAttr(nsIAtom* aLocalName, int32_t aNamespaceID = kNameSpaceID_None) const;
- nsresult SetAndTakeMappedAttr(nsIAtom* aLocalName, nsAttrValue& aValue,
+ // SetAndSwapMappedAttr swaps the current attribute value with aValue.
+ // If the attribute was unset, an empty value will be swapped into aValue
+ // and aHadValue will be set to false. Otherwise, aHadValue will be set to
+ // true.
+ nsresult SetAndSwapMappedAttr(nsIAtom* aLocalName, nsAttrValue& aValue,
nsMappedAttributeElement* aContent,
- nsHTMLStyleSheet* aSheet);
+ nsHTMLStyleSheet* aSheet,
+ bool* aHadValue);
nsresult SetMappedAttrStyleSheet(nsHTMLStyleSheet* aSheet) {
if (!mImpl || !mImpl->mMappedAttrs) {
return NS_OK;
@@ -135,6 +144,9 @@ public:
return MappedAttrCount();
}
+ // Force this to have mapped attributes, even if those attributes are empty.
+ nsresult ForceMapped(nsMappedAttributeElement* aContent, nsIDocument* aDocument);
+
private:
nsAttrAndChildArray(const nsAttrAndChildArray& aOther) = delete;
nsAttrAndChildArray& operator=(const nsAttrAndChildArray& aOther) = delete;
@@ -148,7 +160,8 @@ private:
nsMappedAttributes*
GetModifiableMapped(nsMappedAttributeElement* aContent,
nsHTMLStyleSheet* aSheet,
- bool aWillAddAttr);
+ bool aWillAddAttr,
+ int32_t aAttrCount = 1);
nsresult MakeMappedUnique(nsMappedAttributes* aAttributes);
uint32_t AttrSlotsSize() const
diff --git a/dom/base/nsAttrName.h b/dom/base/nsAttrName.h
index 828d2689d..bb1a434bc 100644
--- a/dom/base/nsAttrName.h
+++ b/dom/base/nsAttrName.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsAttrValue.cpp b/dom/base/nsAttrValue.cpp
index 2418fb501..711a695b7 100644
--- a/dom/base/nsAttrValue.cpp
+++ b/dom/base/nsAttrValue.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsAttrValue.h b/dom/base/nsAttrValue.h
index 33ee91afd..f2cb17aeb 100644
--- a/dom/base/nsAttrValue.h
+++ b/dom/base/nsAttrValue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsAttrValueInlines.h b/dom/base/nsAttrValueInlines.h
index d2749d486..382270f15 100644
--- a/dom/base/nsAttrValueInlines.h
+++ b/dom/base/nsAttrValueInlines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsAttrValueOrString.cpp b/dom/base/nsAttrValueOrString.cpp
index e2e1fff2b..7303434f4 100644
--- a/dom/base/nsAttrValueOrString.cpp
+++ b/dom/base/nsAttrValueOrString.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsAttrValueOrString.h b/dom/base/nsAttrValueOrString.h
index df0dac17d..40e9dc6b3 100644
--- a/dom/base/nsAttrValueOrString.h
+++ b/dom/base/nsAttrValueOrString.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -49,20 +48,13 @@ public:
, mCheapString(nullptr)
{ }
- void TakeParsedValue(nsAttrValue& aValue)
+ void ResetToAttrValue(const nsAttrValue& aValue)
{
- mStoredAttrValue.SwapValueWith(aValue);
- mAttrValue = &mStoredAttrValue;
+ mAttrValue = &aValue;
mStringPtr = nullptr;
+ // No need to touch mCheapString here. If we need to use it, we will reset
+ // it to the rigthe value anyway.
}
- /**
- * If TakeParsedValue has been called, returns the value that it set.
- */
- nsAttrValue* GetStoredAttrValue()
- {
- return mAttrValue == &mStoredAttrValue ? &mStoredAttrValue : nullptr;
- }
- const nsAttrValue* GetAttrValue() { return mAttrValue; }
/**
* Returns a reference to the string value of the contents of this object.
@@ -85,11 +77,24 @@ public:
return aOther.EqualsAsStrings(*mAttrValue);
}
+ /*
+ * Returns true if the value stored is empty
+ */
+ bool IsEmpty() const
+ {
+ if (mStringPtr) {
+ return mStringPtr->IsEmpty();
+ }
+ if (mAttrValue) {
+ return mAttrValue->IsEmptyString();
+ }
+ return true;
+ }
+
protected:
const nsAttrValue* mAttrValue;
mutable const nsAString* mStringPtr;
mutable nsCheapString mCheapString;
- nsAttrValue mStoredAttrValue;
};
#endif // nsAttrValueOrString_h___
diff --git a/dom/base/nsCCUncollectableMarker.cpp b/dom/base/nsCCUncollectableMarker.cpp
index db4d0d351..973f36dbd 100644
--- a/dom/base/nsCCUncollectableMarker.cpp
+++ b/dom/base/nsCCUncollectableMarker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsCCUncollectableMarker.h b/dom/base/nsCCUncollectableMarker.h
index 98959efa8..72f5bd975 100644
--- a/dom/base/nsCCUncollectableMarker.h
+++ b/dom/base/nsCCUncollectableMarker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsCaseTreatment.h b/dom/base/nsCaseTreatment.h
index 8a46da26f..de988ce67 100644
--- a/dom/base/nsCaseTreatment.h
+++ b/dom/base/nsCaseTreatment.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsChildContentList.h b/dom/base/nsChildContentList.h
index 96c4e0eff..883214fc5 100644
--- a/dom/base/nsChildContentList.h
+++ b/dom/base/nsChildContentList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentAreaDragDrop.cpp b/dom/base/nsContentAreaDragDrop.cpp
index 6a2fb10ed..1734ab378 100644
--- a/dom/base/nsContentAreaDragDrop.cpp
+++ b/dom/base/nsContentAreaDragDrop.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentAreaDragDrop.h b/dom/base/nsContentAreaDragDrop.h
index b62132efa..4eab48652 100644
--- a/dom/base/nsContentAreaDragDrop.h
+++ b/dom/base/nsContentAreaDragDrop.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentCID.h b/dom/base/nsContentCID.h
index d897859b9..6e693ba16 100644
--- a/dom/base/nsContentCID.h
+++ b/dom/base/nsContentCID.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentCreatorFunctions.h b/dom/base/nsContentCreatorFunctions.h
index 9576d9ba8..87e5ce736 100644
--- a/dom/base/nsContentCreatorFunctions.h
+++ b/dom/base/nsContentCreatorFunctions.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -24,6 +23,7 @@ namespace mozilla {
namespace dom {
class Element;
class NodeInfo;
+struct CustomElementDefinition;
} // namespace dom
} // namespace mozilla
@@ -41,7 +41,8 @@ nsresult
NS_NewHTMLElement(mozilla::dom::Element** aResult,
already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
mozilla::dom::FromParser aFromParser,
- const nsAString* aIs = nullptr);
+ const nsAString* aIs = nullptr,
+ mozilla::dom::CustomElementDefinition* aDefinition = nullptr);
// First argument should be nsHTMLTag, but that adds dependency to parser
// for a bunch of files.
diff --git a/dom/base/nsContentIterator.cpp b/dom/base/nsContentIterator.cpp
index 287de7722..04ce96cc9 100644
--- a/dom/base/nsContentIterator.cpp
+++ b/dom/base/nsContentIterator.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentList.cpp b/dom/base/nsContentList.cpp
index c98859ee3..55e625f37 100644
--- a/dom/base/nsContentList.cpp
+++ b/dom/base/nsContentList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentList.h b/dom/base/nsContentList.h
index 83d27da95..a399b1a8d 100644
--- a/dom/base/nsContentList.h
+++ b/dom/base/nsContentList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentListDeclarations.h b/dom/base/nsContentListDeclarations.h
index a5e0e3691..4241e3efe 100644
--- a/dom/base/nsContentListDeclarations.h
+++ b/dom/base/nsContentListDeclarations.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentPermissionHelper.cpp b/dom/base/nsContentPermissionHelper.cpp
index eaaec2a41..fb0ad488b 100644
--- a/dom/base/nsContentPermissionHelper.cpp
+++ b/dom/base/nsContentPermissionHelper.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentPermissionHelper.h b/dom/base/nsContentPermissionHelper.h
index af15744af..d060ec740 100644
--- a/dom/base/nsContentPermissionHelper.h
+++ b/dom/base/nsContentPermissionHelper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentSink.cpp b/dom/base/nsContentSink.cpp
index 59f4a9f9a..0392fce50 100644
--- a/dom/base/nsContentSink.cpp
+++ b/dom/base/nsContentSink.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentSink.h b/dom/base/nsContentSink.h
index 2d914a8d7..43a873dd6 100644
--- a/dom/base/nsContentSink.h
+++ b/dom/base/nsContentSink.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentTypeParser.h b/dom/base/nsContentTypeParser.h
index 2476ec1e3..c7d91d56e 100644
--- a/dom/base/nsContentTypeParser.h
+++ b/dom/base/nsContentTypeParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsContentUtils.cpp b/dom/base/nsContentUtils.cpp
index ffe50a015..a34752554 100644
--- a/dom/base/nsContentUtils.cpp
+++ b/dom/base/nsContentUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -44,9 +43,8 @@
#include "mozilla/dom/Element.h"
#include "mozilla/dom/FileSystemSecurity.h"
#include "mozilla/dom/HTMLMediaElement.h"
+#include "mozilla/dom/HTMLSlotElement.h"
#include "mozilla/dom/HTMLTemplateElement.h"
-#include "mozilla/dom/HTMLContentElement.h"
-#include "mozilla/dom/HTMLShadowElement.h"
#include "mozilla/dom/ipc/BlobChild.h"
#include "mozilla/dom/ipc/BlobParent.h"
#include "mozilla/dom/Promise.h"
@@ -102,7 +100,9 @@
#include "nsHostObjectProtocolHandler.h"
#include "nsHtml5Module.h"
#include "nsHtml5StringParser.h"
+#include "nsHTMLTags.h"
#include "nsIAddonPolicyService.h"
+#include "nsIAnonymousContentCreator.h"
#include "nsIAsyncVerifyRedirectCallback.h"
#include "nsICategoryManager.h"
#include "nsIChannelEventSink.h"
@@ -227,6 +227,7 @@ extern "C" int MOZ_XMLCheckQName(const char* ptr, const char* end,
int ns_aware, const char** colon);
class imgLoader;
+class nsIAtom;
using namespace mozilla::dom;
using namespace mozilla::ipc;
@@ -258,7 +259,6 @@ nsIWordBreaker *nsContentUtils::sWordBreaker;
nsIBidiKeyboard *nsContentUtils::sBidiKeyboard = nullptr;
uint32_t nsContentUtils::sScriptBlockerCount = 0;
uint32_t nsContentUtils::sDOMNodeRemovedSuppressCount = 0;
-uint32_t nsContentUtils::sMicroTaskLevel = 0;
AutoTArray<nsCOMPtr<nsIRunnable>, 8>* nsContentUtils::sBlockedScriptRunners = nullptr;
uint32_t nsContentUtils::sRunnersCountAtFirstBlocker = 0;
nsIInterfaceRequestor* nsContentUtils::sSameOriginChecker = nullptr;
@@ -284,6 +284,8 @@ bool nsContentUtils::sIsResourceTimingEnabled = false;
bool nsContentUtils::sIsPerformanceNavigationTimingEnabled = false;
bool nsContentUtils::sIsUserTimingLoggingEnabled = false;
bool nsContentUtils::sIsExperimentalAutocompleteEnabled = false;
+bool nsContentUtils::sIsWebComponentsEnabled = false;
+bool nsContentUtils::sIsCustomElementsEnabled = false;
bool nsContentUtils::sEncodeDecodeURLHash = false;
bool nsContentUtils::sGettersDecodeURLHash = false;
bool nsContentUtils::sPrivacyResistFingerprinting = false;
@@ -498,6 +500,8 @@ nsContentUtils::Init()
return NS_OK;
}
+ nsHTMLTags::AddRefTable();
+
sNameSpaceManager = nsNameSpaceManager::GetInstance();
NS_ENSURE_TRUE(sNameSpaceManager, NS_ERROR_OUT_OF_MEMORY);
@@ -584,6 +588,12 @@ nsContentUtils::Init()
Preferences::AddBoolVarCache(&sIsExperimentalAutocompleteEnabled,
"dom.forms.autocomplete.experimental", false);
+ Preferences::AddBoolVarCache(&sIsWebComponentsEnabled,
+ "dom.webcomponents.enabled", false);
+
+ Preferences::AddBoolVarCache(&sIsCustomElementsEnabled,
+ "dom.webcomponents.enabled", false);
+
Preferences::AddBoolVarCache(&sEncodeDecodeURLHash,
"dom.url.encode_decode_hash", false);
@@ -1918,6 +1928,8 @@ nsContentUtils::Shutdown()
{
sInitialized = false;
+ nsHTMLTags::ReleaseTable();
+
NS_IF_RELEASE(sContentPolicyService);
sTriedToGetContentPolicy = false;
uint32_t i;
@@ -2382,6 +2394,9 @@ nsContentUtils::ComparePoints(nsINode* aParent1, int32_t aOffset1,
bool* aDisconnected)
{
if (aParent1 == aParent2) {
+ // XXX This is odd. aOffset1 and/or aOffset2 may be -1, e.g., it's result
+ // of nsINode::IndexOf(), but this compares such invalid offset with
+ // valid offset.
return aOffset1 < aOffset2 ? -1 :
aOffset1 > aOffset2 ? 1 :
0;
@@ -2432,10 +2447,14 @@ nsContentUtils::ComparePoints(nsINode* aParent1, int32_t aOffset1,
if (!pos1) {
nsINode* child2 = parents2.ElementAt(--pos2);
+ // XXX aOffset1 may be -1 as mentioned above. So, why does this return
+ // it's *before* of the valid DOM point?
return aOffset1 <= parent->IndexOf(child2) ? -1 : 1;
}
nsINode* child1 = parents1.ElementAt(--pos1);
+ // XXX aOffset2 may be -1 as mentioned above. So, why does this return it's
+ // *after* of the valid DOM point?
return parent->IndexOf(child1) < aOffset2 ? -1 : 1;
}
@@ -3638,6 +3657,14 @@ nsContentUtils::ReportToConsole(uint32_t aErrorFlags,
aLineNumber, aColumnNumber);
}
+/* static */ void
+nsContentUtils::ReportEmptyGetElementByIdArg(const nsIDocument* aDoc)
+{
+ ReportToConsole(nsIScriptError::warningFlag,
+ NS_LITERAL_CSTRING("DOM"), aDoc,
+ nsContentUtils::eDOM_PROPERTIES,
+ "EmptyGetElementByIdParam");
+}
/* static */ nsresult
nsContentUtils::ReportToConsoleNonLocalized(const nsAString& aErrorText,
@@ -4935,17 +4962,7 @@ nsContentUtils::IsInSameAnonymousTree(const nsINode* aNode,
return aContent->GetBindingParent() == nullptr;
}
- const nsIContent* nodeAsContent = static_cast<const nsIContent*>(aNode);
-
- // For nodes in a shadow tree, it is insufficient to simply compare
- // the binding parent because a node may host multiple ShadowRoots,
- // thus nodes in different shadow tree may have the same binding parent.
- if (aNode->IsInShadowTree()) {
- return nodeAsContent->GetContainingShadow() ==
- aContent->GetContainingShadow();
- }
-
- return nodeAsContent->GetBindingParent() == aContent->GetBindingParent();
+ return aNode->AsContent()->GetBindingParent() == aContent->GetBindingParent();
}
class AnonymousContentDestroyer : public Runnable {
@@ -5302,51 +5319,6 @@ nsContentUtils::RunInMetastableState(already_AddRefed<nsIRunnable> aRunnable)
CycleCollectedJSContext::Get()->RunInMetastableState(Move(aRunnable));
}
-void
-nsContentUtils::EnterMicroTask()
-{
- MOZ_ASSERT(NS_IsMainThread());
- ++sMicroTaskLevel;
-}
-
-void
-nsContentUtils::LeaveMicroTask()
-{
- MOZ_ASSERT(NS_IsMainThread());
- if (--sMicroTaskLevel == 0) {
- PerformMainThreadMicroTaskCheckpoint();
- }
-}
-
-bool
-nsContentUtils::IsInMicroTask()
-{
- MOZ_ASSERT(NS_IsMainThread());
- return sMicroTaskLevel != 0;
-}
-
-uint32_t
-nsContentUtils::MicroTaskLevel()
-{
- MOZ_ASSERT(NS_IsMainThread());
- return sMicroTaskLevel;
-}
-
-void
-nsContentUtils::SetMicroTaskLevel(uint32_t aLevel)
-{
- MOZ_ASSERT(NS_IsMainThread());
- sMicroTaskLevel = aLevel;
-}
-
-void
-nsContentUtils::PerformMainThreadMicroTaskCheckpoint()
-{
- MOZ_ASSERT(NS_IsMainThread());
-
- nsDOMMutationObserver::HandleMutations();
-}
-
/*
* Helper function for nsContentUtils::ProcessViewportInfo.
*
@@ -7060,25 +7032,11 @@ nsContentUtils::GetHTMLEditor(nsPresContext* aPresContext)
return editor;
}
-bool
-nsContentUtils::IsContentInsertionPoint(nsIContent* aContent)
-{
- // Check if the content is a XBL insertion point.
- if (aContent->IsActiveChildrenElement()) {
- return true;
- }
-
- // Check if the content is a web components content insertion point.
- HTMLContentElement* contentElement =
- HTMLContentElement::FromContent(aContent);
- return contentElement && contentElement->IsInsertionPoint();
-}
-
// static
bool
nsContentUtils::HasDistributedChildren(nsIContent* aContent)
{
- if (!aContent) {
+ if (!aContent || !nsDocument::IsWebComponentsEnabled(aContent)) {
return false;
}
@@ -7088,26 +7046,11 @@ nsContentUtils::HasDistributedChildren(nsIContent* aContent)
return true;
}
- ShadowRoot* shadow = ShadowRoot::FromNode(aContent);
- if (shadow) {
- // Children of a shadow root are distributed to
- // the shadow insertion point of the younger shadow root.
- return shadow->GetYoungerShadowRoot();
- }
-
- HTMLShadowElement* shadowEl = HTMLShadowElement::FromContent(aContent);
- if (shadowEl && shadowEl->IsInsertionPoint()) {
- // Children of a shadow insertion points are distributed
- // to the insertion points in the older shadow root.
- return shadowEl->GetOlderShadowRoot();
- }
-
- HTMLContentElement* contentEl = HTMLContentElement::FromContent(aContent);
- if (contentEl && contentEl->IsInsertionPoint()) {
- // Children of a content insertion point are distributed to the
- // content insertion point if the content insertion point does
- // not match any nodes (fallback content).
- return contentEl->MatchedNodes().IsEmpty();
+ HTMLSlotElement* slotEl = HTMLSlotElement::FromContent(aContent);
+ if (slotEl && slotEl->GetContainingShadow()) {
+ // Children of a slot are rendered if the slot does not have any assigned
+ // nodes (fallback content).
+ return slotEl->AssignedNodes().IsEmpty();
}
return false;
@@ -9576,11 +9519,34 @@ nsContentUtils::HttpsStateIsModern(nsIDocument* aDocument)
return false;
}
+/* static */ void
+nsContentUtils::TryToUpgradeElement(Element* aElement)
+{
+ NodeInfo* nodeInfo = aElement->NodeInfo();
+ RefPtr<nsIAtom> typeAtom =
+ aElement->GetCustomElementData()->GetCustomElementType();
+
+ MOZ_ASSERT(nodeInfo->NameAtom()->Equals(nodeInfo->LocalName()));
+ CustomElementDefinition* definition =
+ nsContentUtils::LookupCustomElementDefinition(nodeInfo->GetDocument(),
+ nodeInfo->NameAtom(),
+ nodeInfo->NamespaceID(),
+ typeAtom);
+ if (definition) {
+ nsContentUtils::EnqueueUpgradeReaction(aElement, definition);
+ } else {
+ // Add an unresolved custom element that is a candidate for
+ // upgrade when a custom element is connected to the document.
+ // We will make sure it's shadow-including tree order in bug 1326028.
+ nsContentUtils::RegisterUnresolvedElement(aElement, typeAtom);
+ }
+}
+
/* static */ CustomElementDefinition*
nsContentUtils::LookupCustomElementDefinition(nsIDocument* aDoc,
- const nsAString& aLocalName,
+ nsIAtom* aNameAtom,
uint32_t aNameSpaceID,
- const nsAString* aIs)
+ nsIAtom* aTypeAtom)
{
MOZ_ASSERT(aDoc);
@@ -9602,30 +9568,16 @@ nsContentUtils::LookupCustomElementDefinition(nsIDocument* aDoc,
return nullptr;
}
- return registry->LookupCustomElementDefinition(aLocalName, aIs);
+ return registry->LookupCustomElementDefinition(aNameAtom, aTypeAtom);
}
/* static */ void
-nsContentUtils::SetupCustomElement(Element* aElement,
- const nsAString* aTypeExtension)
+nsContentUtils::RegisterUnresolvedElement(Element* aElement, nsIAtom* aTypeName)
{
MOZ_ASSERT(aElement);
- nsCOMPtr<nsIDocument> doc = aElement->OwnerDoc();
-
- if (!doc) {
- return;
- }
-
- // To support imported document.
- doc = doc->MasterDocument();
-
- if (aElement->GetNameSpaceID() != kNameSpaceID_XHTML ||
- !doc->GetDocShell()) {
- return;
- }
-
- nsCOMPtr<nsPIDOMWindowInner> window(doc->GetInnerWindow());
+ nsIDocument* doc = aElement->OwnerDoc();
+ nsPIDOMWindowInner* window(doc->GetInnerWindow());
if (!window) {
return;
}
@@ -9635,26 +9587,18 @@ nsContentUtils::SetupCustomElement(Element* aElement,
return;
}
- return registry->SetupCustomElement(aElement, aTypeExtension);
+ registry->RegisterUnresolvedElement(aElement, aTypeName);
}
/* static */ void
-nsContentUtils::EnqueueLifecycleCallback(nsIDocument* aDoc,
- nsIDocument::ElementCallbackType aType,
- Element* aCustomElement,
- LifecycleCallbackArgs* aArgs,
- CustomElementDefinition* aDefinition)
+nsContentUtils::UnregisterUnresolvedElement(Element* aElement)
{
- MOZ_ASSERT(aDoc);
-
- // To support imported document.
- nsCOMPtr<nsIDocument> doc = aDoc->MasterDocument();
-
- if (!doc->GetDocShell()) {
- return;
- }
+ MOZ_ASSERT(aElement);
- nsCOMPtr<nsPIDOMWindowInner> window(doc->GetInnerWindow());
+ RefPtr<nsIAtom> typeAtom =
+ aElement->GetCustomElementData()->GetCustomElementType();
+ nsIDocument* doc = aElement->OwnerDoc();
+ nsPIDOMWindowInner* window(doc->GetInnerWindow());
if (!window) {
return;
}
@@ -9664,36 +9608,59 @@ nsContentUtils::EnqueueLifecycleCallback(nsIDocument* aDoc,
return;
}
- registry->EnqueueLifecycleCallback(aType, aCustomElement, aArgs, aDefinition);
+ registry->UnregisterUnresolvedElement(aElement, typeAtom);
+}
+
+/* static */ CustomElementDefinition*
+nsContentUtils::GetElementDefinitionIfObservingAttr(Element* aCustomElement,
+ nsIAtom* aExtensionType,
+ nsIAtom* aAttrName)
+{
+ CustomElementDefinition* definition =
+ aCustomElement->GetCustomElementDefinition();
+
+ // Custom element not defined yet or attribute is not in the observed
+ // attribute list.
+ if (!definition || !definition->IsInObservedAttributeList(aAttrName)) {
+ return nullptr;
+ }
+
+ return definition;
}
/* static */ void
-nsContentUtils::GetCustomPrototype(nsIDocument* aDoc,
- int32_t aNamespaceID,
- nsIAtom* aAtom,
- JS::MutableHandle<JSObject*> aPrototype)
+nsContentUtils::EnqueueUpgradeReaction(Element* aElement,
+ CustomElementDefinition* aDefinition)
{
- MOZ_ASSERT(aDoc);
+ MOZ_ASSERT(aElement);
- // To support imported document.
- nsCOMPtr<nsIDocument> doc = aDoc->MasterDocument();
+ nsIDocument* doc = aElement->OwnerDoc();
- if (aNamespaceID != kNameSpaceID_XHTML ||
- !doc->GetDocShell()) {
+ // No DocGroup means no custom element reactions stack.
+ if (!doc->GetDocGroup()) {
return;
}
- nsCOMPtr<nsPIDOMWindowInner> window(doc->GetInnerWindow());
- if (!window) {
- return;
- }
+ CustomElementReactionsStack* stack =
+ doc->GetDocGroup()->CustomElementReactionsStack();
+ stack->EnqueueUpgradeReaction(aElement, aDefinition);
+}
- RefPtr<CustomElementRegistry> registry(window->CustomElements());
- if (!registry) {
+/* static */ void
+nsContentUtils::EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType,
+ Element* aCustomElement,
+ LifecycleCallbackArgs* aArgs,
+ LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs,
+ CustomElementDefinition* aDefinition)
+{
+ // No DocGroup means no custom element reactions stack.
+ if (!aCustomElement->OwnerDoc()->GetDocGroup()) {
return;
}
- return registry->GetCustomPrototype(aAtom, aPrototype);
+ CustomElementRegistry::EnqueueLifecycleCallback(aType, aCustomElement, aArgs,
+ aAdoptedCallbackArgs,
+ aDefinition);
}
/* static */ bool
@@ -9829,6 +9796,24 @@ nsContentUtils::AttemptLargeAllocationLoad(nsIHttpChannel* aChannel)
return reloadSucceeded;
}
+/* static */ void
+nsContentUtils::AppendDocumentLevelNativeAnonymousContentTo(
+ nsIDocument* aDocument,
+ nsTArray<nsIContent*>& aElements)
+{
+ MOZ_ASSERT(aDocument);
+
+ // XXXheycam This probably needs to find the nsCanvasFrame's NAC too.
+ if (nsIPresShell* presShell = aDocument->GetShell()) {
+ if (nsIFrame* scrollFrame = presShell->GetRootScrollFrame()) {
+ nsIAnonymousContentCreator* creator = do_QueryFrame(scrollFrame);
+ MOZ_ASSERT(creator,
+ "scroll frame should always implement nsIAnonymousContentCreator");
+ creator->AppendAnonymousContentTo(aElements, 0);
+ }
+ }
+}
+
/* static */ bool
nsContentUtils::IsLocalRefURL(const nsString& aString)
{
@@ -9845,6 +9830,19 @@ nsContentUtils::IsLocalRefURL(const nsString& aString)
return false;
}
+/* static */ Element*
+nsContentUtils::GetClosestNonNativeAnonymousAncestor(Element* aElement)
+{
+ MOZ_ASSERT(aElement);
+ MOZ_ASSERT(aElement->IsNativeAnonymous());
+
+ Element* e = aElement;
+ while (e && e->IsNativeAnonymous()) {
+ e = e->GetParentElement();
+ }
+ return e;
+}
+
/* static */ uint32_t
nsContentUtils::GetNodeDepth(nsINode* aNode)
{
@@ -9857,4 +9855,4 @@ nsContentUtils::GetNodeDepth(nsINode* aNode)
}
return depth;
-}
+} \ No newline at end of file
diff --git a/dom/base/nsContentUtils.h b/dom/base/nsContentUtils.h
index 08587b5e4..e0c023fff 100644
--- a/dom/base/nsContentUtils.h
+++ b/dom/base/nsContentUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -126,6 +125,7 @@ class EventTarget;
class IPCDataTransfer;
class IPCDataTransferItem;
struct LifecycleCallbackArgs;
+struct LifecycleAdoptedCallbackArgs;
class NodeInfo;
class nsIContentChild;
class nsIContentParent;
@@ -338,6 +338,13 @@ public:
* NOTE! If the two nodes aren't in the same connected subtree,
* the result is 1, and the optional aDisconnected parameter
* is set to true.
+ *
+ * XXX aOffset1 and aOffset2 should be uint32_t since valid offset value is
+ * between 0 - UINT32_MAX. However, these methods work even with
+ * negative offset values! E.g., when aOffset1 is -1 and aOffset is 0,
+ * these methods return -1. Some root callers depend on this behavior.
+ * On the other hand, nsINode can have ATTRCHILD_ARRAY_MAX_CHILD_COUN
+ * (0x3FFFFF) at most. Therefore, they can be int32_t for now.
*/
static int32_t ComparePoints(nsINode* aParent1, int32_t aOffset1,
nsINode* aParent2, int32_t aOffset2,
@@ -581,7 +588,7 @@ public:
/**
* Returns true if |aName| is a valid name to be registered via
- * document.registerElement.
+ * customElements.define.
*/
static bool IsCustomElementName(nsIAtom* aName);
@@ -933,6 +940,8 @@ public:
uint32_t aLineNumber = 0,
uint32_t aColumnNumber = 0);
+ static void ReportEmptyGetElementByIdArg(const nsIDocument* aDoc);
+
static void LogMessageToConsole(const char* aMsg);
/**
@@ -1741,17 +1750,6 @@ public:
*/
static void RunInMetastableState(already_AddRefed<nsIRunnable> aRunnable);
- // Call EnterMicroTask when you're entering JS execution.
- // Usually the best way to do this is to use nsAutoMicroTask.
- static void EnterMicroTask();
- static void LeaveMicroTask();
-
- static bool IsInMicroTask();
- static uint32_t MicroTaskLevel();
- static void SetMicroTaskLevel(uint32_t aLevel);
-
- static void PerformMainThreadMicroTaskCheckpoint();
-
/* Process viewport META data. This gives us information for the scale
* and zoom of a page on mobile devices. We stick the information in
* the document header and use it later on after rendering.
@@ -2418,18 +2416,6 @@ public:
static mozilla::LogModule* DOMDumpLog();
/**
- * Returns whether a content is an insertion point for XBL
- * bindings or web components ShadowRoot. In web components,
- * this corresponds to a <content> element that participates
- * in node distribution. In XBL this corresponds to an
- * <xbl:children> element in anonymous content.
- *
- * @param aContent The content to test for being an insertion point.
- */
- static bool IsContentInsertionPoint(nsIContent* aContent);
-
-
- /**
* Returns whether the children of the provided content are
* nodes that are distributed to Shadow DOM insertion points.
*/
@@ -2713,38 +2699,69 @@ public:
static bool HttpsStateIsModern(nsIDocument* aDocument);
/**
+ * Try to upgrade an element.
+ * https://html.spec.whatwg.org/multipage/custom-elements.html#concept-try-upgrade
+ */
+ static void TryToUpgradeElement(Element* aElement);
+
+ /**
* Looking up a custom element definition.
* https://html.spec.whatwg.org/#look-up-a-custom-element-definition
*/
static mozilla::dom::CustomElementDefinition*
LookupCustomElementDefinition(nsIDocument* aDoc,
- const nsAString& aLocalName,
+ nsIAtom* aNameAtom,
uint32_t aNameSpaceID,
- const nsAString* aIs = nullptr);
+ nsIAtom* aTypeAtom);
- static void SetupCustomElement(Element* aElement,
- const nsAString* aTypeExtension = nullptr);
+ static void RegisterUnresolvedElement(Element* aElement, nsIAtom* aTypeName);
+ static void UnregisterUnresolvedElement(Element* aElement);
- static void EnqueueLifecycleCallback(nsIDocument* aDoc,
- nsIDocument::ElementCallbackType aType,
+ static mozilla::dom::CustomElementDefinition*
+ GetElementDefinitionIfObservingAttr(Element* aCustomElement,
+ nsIAtom* aExtensionType,
+ nsIAtom* aAttrName);
+
+ static void EnqueueUpgradeReaction(Element* aElement,
+ mozilla::dom::CustomElementDefinition* aDefinition);
+
+ static void EnqueueLifecycleCallback(nsIDocument::ElementCallbackType aType,
Element* aCustomElement,
mozilla::dom::LifecycleCallbackArgs* aArgs = nullptr,
+ mozilla::dom::LifecycleAdoptedCallbackArgs* aAdoptedCallbackArgs = nullptr,
mozilla::dom::CustomElementDefinition* aDefinition = nullptr);
- static void GetCustomPrototype(nsIDocument* aDoc,
- int32_t aNamespaceID,
- nsIAtom* aAtom,
- JS::MutableHandle<JSObject*> prototype);
-
static bool AttemptLargeAllocationLoad(nsIHttpChannel* aChannel);
/**
+ * Appends all "document level" native anonymous content subtree roots for
+ * aDocument to aElements. Document level NAC subtrees are those created
+ * by ancestor frames of the document element's primary frame, such as
+ * the scrollbar elements created by the root scroll frame.
+ */
+ static void AppendDocumentLevelNativeAnonymousContentTo(
+ nsIDocument* aDocument,
+ nsTArray<nsIContent*>& aElements);
+
+ /**
* Detect whether a string is a (CSS) local-url.
* https://drafts.csswg.org/css-values/#local-urls
*/
static bool
IsLocalRefURL(const nsString& aString);
+ static bool
+ IsWebComponentsEnabled() { return sIsWebComponentsEnabled; }
+
+ /**
+ * Walks up the tree from aElement until it finds an element that is
+ * not native anonymous content. aElement must be NAC itself.
+ */
+ static Element* GetClosestNonNativeAnonymousAncestor(Element* aElement);
+
+ static bool
+ IsCustomElementsEnabled() { return sIsCustomElementsEnabled; }
+
/**
* Returns the length of the parent-traversal path (in terms of the number of
* nodes) to an unparented/root node from aNode. An unparented/root node is
@@ -2839,7 +2856,6 @@ private:
static bool sInitialized;
static uint32_t sScriptBlockerCount;
static uint32_t sDOMNodeRemovedSuppressCount;
- static uint32_t sMicroTaskLevel;
// Not an nsCOMArray because removing elements from those is slower
static AutoTArray<nsCOMPtr<nsIRunnable>, 8>* sBlockedScriptRunners;
static uint32_t sRunnersCountAtFirstBlocker;
@@ -2860,6 +2876,8 @@ private:
static bool sIsUserTimingLoggingEnabled;
static bool sIsFrameTimingPrefEnabled;
static bool sIsExperimentalAutocompleteEnabled;
+ static bool sIsWebComponentsEnabled;
+ static bool sIsCustomElementsEnabled;
static bool sEncodeDecodeURLHash;
static bool sGettersDecodeURLHash;
static bool sPrivacyResistFingerprinting;
@@ -2915,19 +2933,6 @@ public:
}
};
-class MOZ_STACK_CLASS nsAutoMicroTask
-{
-public:
- nsAutoMicroTask()
- {
- nsContentUtils::EnterMicroTask();
- }
- ~nsAutoMicroTask()
- {
- nsContentUtils::LeaveMicroTask();
- }
-};
-
namespace mozilla {
namespace dom {
diff --git a/dom/base/nsCopySupport.cpp b/dom/base/nsCopySupport.cpp
index dfaf77a9e..f33e1c1b5 100644
--- a/dom/base/nsCopySupport.cpp
+++ b/dom/base/nsCopySupport.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMAttributeMap.cpp b/dom/base/nsDOMAttributeMap.cpp
index 2a90df7e4..2421e6a00 100644
--- a/dom/base/nsDOMAttributeMap.cpp
+++ b/dom/base/nsDOMAttributeMap.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -524,3 +523,9 @@ nsDOMAttributeMap::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
{
return NamedNodeMapBinding::Wrap(aCx, this, aGivenProto);
}
+
+DocGroup*
+nsDOMAttributeMap::GetDocGroup() const
+{
+ return mContent ? mContent->OwnerDoc()->GetDocGroup() : nullptr;
+}
diff --git a/dom/base/nsDOMAttributeMap.h b/dom/base/nsDOMAttributeMap.h
index 31eb701e3..5c9386b70 100644
--- a/dom/base/nsDOMAttributeMap.h
+++ b/dom/base/nsDOMAttributeMap.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -22,6 +21,11 @@
class nsIAtom;
class nsIDocument;
+namespace mozilla {
+namespace dom {
+class DocGroup;
+} // namespace dom
+} // namespace mozilla
/**
* Structure used as a key for caching Attrs in nsDOMAttributeMap's mAttributeCache.
@@ -87,6 +91,7 @@ class nsDOMAttributeMap final : public nsIDOMMozNamedAttrMap
{
public:
typedef mozilla::dom::Attr Attr;
+ typedef mozilla::dom::DocGroup DocGroup;
typedef mozilla::dom::Element Element;
typedef mozilla::ErrorResult ErrorResult;
@@ -135,6 +140,7 @@ public:
return mContent;
}
virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
+ DocGroup* GetDocGroup() const;
// WebIDL
Attr* GetNamedItem(const nsAString& aAttrName);
diff --git a/dom/base/nsDOMCID.h b/dom/base/nsDOMCID.h
index 97dffb492..b0a32db34 100644
--- a/dom/base/nsDOMCID.h
+++ b/dom/base/nsDOMCID.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMCaretPosition.cpp b/dom/base/nsDOMCaretPosition.cpp
index 0ee7c305f..a304f4c40 100644
--- a/dom/base/nsDOMCaretPosition.cpp
+++ b/dom/base/nsDOMCaretPosition.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMCaretPosition.h b/dom/base/nsDOMCaretPosition.h
index f11768b2d..6853f5fe7 100644
--- a/dom/base/nsDOMCaretPosition.h
+++ b/dom/base/nsDOMCaretPosition.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMClassInfo.cpp b/dom/base/nsDOMClassInfo.cpp
index 1cfde6e1b..5d8b0ff06 100644
--- a/dom/base/nsDOMClassInfo.cpp
+++ b/dom/base/nsDOMClassInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMClassInfo.h b/dom/base/nsDOMClassInfo.h
index 68891da1f..48f4966f0 100644
--- a/dom/base/nsDOMClassInfo.h
+++ b/dom/base/nsDOMClassInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMClassInfoClasses.h b/dom/base/nsDOMClassInfoClasses.h
index 53a065070..e381fb8f9 100644
--- a/dom/base/nsDOMClassInfoClasses.h
+++ b/dom/base/nsDOMClassInfoClasses.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMClassInfoID.h b/dom/base/nsDOMClassInfoID.h
index 1ef6451b4..e1b3649de 100644
--- a/dom/base/nsDOMClassInfoID.h
+++ b/dom/base/nsDOMClassInfoID.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMDataChannel.cpp b/dom/base/nsDOMDataChannel.cpp
index a0419d123..230ce0574 100644
--- a/dom/base/nsDOMDataChannel.cpp
+++ b/dom/base/nsDOMDataChannel.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMDataChannel.h b/dom/base/nsDOMDataChannel.h
index 8d1e1a0ec..704f9ac48 100644
--- a/dom/base/nsDOMDataChannel.h
+++ b/dom/base/nsDOMDataChannel.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMDataChannelDeclarations.h b/dom/base/nsDOMDataChannelDeclarations.h
index 416561fcb..4924e215e 100644
--- a/dom/base/nsDOMDataChannelDeclarations.h
+++ b/dom/base/nsDOMDataChannelDeclarations.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMJSUtils.h b/dom/base/nsDOMJSUtils.h
index afdba7113..6d09fb7bb 100644
--- a/dom/base/nsDOMJSUtils.h
+++ b/dom/base/nsDOMJSUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMMutationObserver.cpp b/dom/base/nsDOMMutationObserver.cpp
index 0273b7b94..fdad6ee90 100644
--- a/dom/base/nsDOMMutationObserver.cpp
+++ b/dom/base/nsDOMMutationObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -13,6 +12,7 @@
#include "mozilla/dom/Animation.h"
#include "mozilla/dom/KeyframeEffectReadOnly.h"
+#include "mozilla/dom/DocGroup.h"
#include "nsContentUtils.h"
#include "nsCSSPseudoElements.h"
@@ -36,8 +36,6 @@ using namespace mozilla::dom;
AutoTArray<RefPtr<nsDOMMutationObserver>, 4>*
nsDOMMutationObserver::sScheduledMutationObservers = nullptr;
-nsDOMMutationObserver* nsDOMMutationObserver::sCurrentObserver = nullptr;
-
uint32_t nsDOMMutationObserver::sMutationLevel = 0;
uint64_t nsDOMMutationObserver::sCount = 0;
@@ -601,10 +599,54 @@ nsDOMMutationObserver::ScheduleForRun()
RescheduleForRun();
}
+class MutationObserverMicroTask final : public MicroTaskRunnable
+{
+public:
+ virtual void Run(AutoSlowOperation& aAso) override
+ {
+ nsDOMMutationObserver::HandleMutations(aAso);
+ }
+
+ virtual bool Suppressed() override
+ {
+ return nsDOMMutationObserver::AllScheduledMutationObserversAreSuppressed();
+ }
+};
+
+/* static */ void
+nsDOMMutationObserver::QueueMutationObserverMicroTask()
+{
+ CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get();
+ if (!ccjs) {
+ return;
+ }
+
+ RefPtr<MutationObserverMicroTask> momt =
+ new MutationObserverMicroTask();
+ ccjs->DispatchMicroTaskRunnable(momt.forget());
+}
+
+void
+nsDOMMutationObserver::HandleMutations(mozilla::AutoSlowOperation& aAso)
+{
+ if (sScheduledMutationObservers ||
+ mozilla::dom::DocGroup::sPendingDocGroups) {
+ HandleMutationsInternal(aAso);
+ }
+}
+
void
nsDOMMutationObserver::RescheduleForRun()
{
if (!sScheduledMutationObservers) {
+ CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get();
+ if (!ccjs) {
+ return;
+ }
+
+ RefPtr<MutationObserverMicroTask> momt =
+ new MutationObserverMicroTask();
+ ccjs->DispatchMicroTaskRunnable(momt.forget());
sScheduledMutationObservers = new AutoTArray<RefPtr<nsDOMMutationObserver>, 4>;
}
@@ -866,57 +908,47 @@ nsDOMMutationObserver::HandleMutation()
mCallback->Call(this, mutations, *this);
}
-class AsyncMutationHandler : public mozilla::Runnable
-{
-public:
- NS_IMETHOD Run() override
- {
- nsDOMMutationObserver::HandleMutations();
- return NS_OK;
- }
-};
-
void
-nsDOMMutationObserver::HandleMutationsInternal()
+nsDOMMutationObserver::HandleMutationsInternal(AutoSlowOperation& aAso)
{
- if (!nsContentUtils::IsSafeToRunScript()) {
- nsContentUtils::AddScriptRunner(new AsyncMutationHandler());
- return;
- }
- static RefPtr<nsDOMMutationObserver> sCurrentObserver;
- if (sCurrentObserver && !sCurrentObserver->Suppressed()) {
- // In normal cases sScheduledMutationObservers will be handled
- // after previous mutations are handled. But in case some
- // callback calls a sync API, which spins the eventloop, we need to still
- // process other mutations happening during that sync call.
- // This does *not* catch all cases, but should work for stuff running
- // in separate tabs.
- return;
- }
-
- mozilla::AutoSlowOperation aso;
-
nsTArray<RefPtr<nsDOMMutationObserver> >* suppressedObservers = nullptr;
- while (sScheduledMutationObservers) {
+ // Let signalList be a copy of unit of related similar-origin browsing
+ // contexts' signal slot list.
+ nsTArray<RefPtr<HTMLSlotElement>> signalList;
+ if (DocGroup::sPendingDocGroups) {
+ for (uint32_t i = 0; i < DocGroup::sPendingDocGroups->Length(); ++i) {
+ DocGroup* docGroup = DocGroup::sPendingDocGroups->ElementAt(i);
+ signalList.AppendElements(docGroup->SignalSlotList());
+
+ // Empty unit of related similar-origin browsing contexts' signal slot
+ // list.
+ docGroup->ClearSignalSlotList();
+ }
+ delete DocGroup::sPendingDocGroups;
+ DocGroup::sPendingDocGroups = nullptr;
+ }
+
+ if (sScheduledMutationObservers) {
AutoTArray<RefPtr<nsDOMMutationObserver>, 4>* observers =
sScheduledMutationObservers;
sScheduledMutationObservers = nullptr;
for (uint32_t i = 0; i < observers->Length(); ++i) {
- sCurrentObserver = static_cast<nsDOMMutationObserver*>((*observers)[i]);
- if (!sCurrentObserver->Suppressed()) {
- sCurrentObserver->HandleMutation();
+ RefPtr<nsDOMMutationObserver> currentObserver =
+ static_cast<nsDOMMutationObserver*>((*observers)[i]);
+ if (!currentObserver->Suppressed()) {
+ currentObserver->HandleMutation();
} else {
if (!suppressedObservers) {
suppressedObservers = new nsTArray<RefPtr<nsDOMMutationObserver> >;
}
- if (!suppressedObservers->Contains(sCurrentObserver)) {
- suppressedObservers->AppendElement(sCurrentObserver);
+ if (!suppressedObservers->Contains(currentObserver)) {
+ suppressedObservers->AppendElement(currentObserver);
}
}
}
delete observers;
- aso.CheckForInterrupt();
+ aAso.CheckForInterrupt();
}
if (suppressedObservers) {
@@ -927,7 +959,11 @@ nsDOMMutationObserver::HandleMutationsInternal()
delete suppressedObservers;
suppressedObservers = nullptr;
}
- sCurrentObserver = nullptr;
+
+ // Fire slotchange event for each slot in signalList.
+ for (uint32_t i = 0; i < signalList.Length(); ++i) {
+ signalList[i]->FireSlotChangeEvent();
+ }
}
nsDOMMutationRecord*
diff --git a/dom/base/nsDOMMutationObserver.h b/dom/base/nsDOMMutationObserver.h
index cde32c57b..6e17e4f2c 100644
--- a/dom/base/nsDOMMutationObserver.h
+++ b/dom/base/nsDOMMutationObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -552,11 +551,24 @@ public:
}
// static methods
- static void HandleMutations()
+ static void QueueMutationObserverMicroTask();
+
+ static void HandleMutations(mozilla::AutoSlowOperation& aAso);
+
+ static bool AllScheduledMutationObserversAreSuppressed()
{
if (sScheduledMutationObservers) {
- HandleMutationsInternal();
+ uint32_t len = sScheduledMutationObservers->Length();
+ if (len > 0) {
+ for (uint32_t i = 0; i < len; ++i) {
+ if (!(*sScheduledMutationObservers)[i]->Suppressed()) {
+ return false;
+ }
+ }
+ return true;
+ }
}
+ return false;
}
static void EnterMutationHandling();
@@ -594,7 +606,7 @@ protected:
return false;
}
- static void HandleMutationsInternal();
+ static void HandleMutationsInternal(mozilla::AutoSlowOperation& aAso);
static void AddCurrentlyHandlingObserver(nsDOMMutationObserver* aObserver,
uint32_t aMutationLevel);
@@ -622,7 +634,6 @@ protected:
static uint64_t sCount;
static AutoTArray<RefPtr<nsDOMMutationObserver>, 4>* sScheduledMutationObservers;
- static nsDOMMutationObserver* sCurrentObserver;
static uint32_t sMutationLevel;
static AutoTArray<AutoTArray<RefPtr<nsDOMMutationObserver>, 4>, 4>*
diff --git a/dom/base/nsDOMNavigationTiming.cpp b/dom/base/nsDOMNavigationTiming.cpp
index 9c732f2d8..8d809727d 100644
--- a/dom/base/nsDOMNavigationTiming.cpp
+++ b/dom/base/nsDOMNavigationTiming.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMNavigationTiming.h b/dom/base/nsDOMNavigationTiming.h
index 3be2527ca..73c0a9041 100644
--- a/dom/base/nsDOMNavigationTiming.h
+++ b/dom/base/nsDOMNavigationTiming.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMSerializer.cpp b/dom/base/nsDOMSerializer.cpp
index f3b95a607..a47ba28fe 100644
--- a/dom/base/nsDOMSerializer.cpp
+++ b/dom/base/nsDOMSerializer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMSerializer.h b/dom/base/nsDOMSerializer.h
index efcf895e5..5934d7bdc 100644
--- a/dom/base/nsDOMSerializer.h
+++ b/dom/base/nsDOMSerializer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMString.h b/dom/base/nsDOMString.h
index 2524272ef..ba4de11d8 100644
--- a/dom/base/nsDOMString.h
+++ b/dom/base/nsDOMString.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMTokenList.cpp b/dom/base/nsDOMTokenList.cpp
index 39ff60e12..87fb11e8c 100644
--- a/dom/base/nsDOMTokenList.cpp
+++ b/dom/base/nsDOMTokenList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -366,6 +365,12 @@ nsDOMTokenList::Stringify(nsAString& aResult)
mElement->GetAttr(kNameSpaceID_None, mAttrAtom, aResult);
}
+DocGroup*
+nsDOMTokenList::GetDocGroup() const
+{
+ return mElement ? mElement->OwnerDoc()->GetDocGroup() : nullptr;
+}
+
JSObject*
nsDOMTokenList::WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto)
{
diff --git a/dom/base/nsDOMTokenList.h b/dom/base/nsDOMTokenList.h
index e44e042d5..5a755ef89 100644
--- a/dom/base/nsDOMTokenList.h
+++ b/dom/base/nsDOMTokenList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -22,7 +21,9 @@
namespace mozilla {
class ErrorResult;
-
+namespace dom {
+class DocGroup;
+} // namespace dom
} // namespace mozilla
class nsAttrValue;
@@ -35,6 +36,7 @@ class nsDOMTokenList : public nsISupports,
{
protected:
typedef mozilla::dom::Element Element;
+ typedef mozilla::dom::DocGroup DocGroup;
typedef nsWhitespaceTokenizerTemplate<nsContentUtils::IsHTMLWhitespace>
WhitespaceTokenizer;
@@ -52,6 +54,8 @@ public:
return mElement;
}
+ DocGroup* GetDocGroup() const;
+
uint32_t Length();
void Item(uint32_t aIndex, nsAString& aResult)
{
diff --git a/dom/base/nsDOMWindowList.cpp b/dom/base/nsDOMWindowList.cpp
index e0094f844..fc2db3dd5 100644
--- a/dom/base/nsDOMWindowList.cpp
+++ b/dom/base/nsDOMWindowList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMWindowList.h b/dom/base/nsDOMWindowList.h
index 77a52e975..d5335f0d7 100644
--- a/dom/base/nsDOMWindowList.h
+++ b/dom/base/nsDOMWindowList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDOMWindowUtils.cpp b/dom/base/nsDOMWindowUtils.cpp
index adb407a04..d05f3b71f 100644
--- a/dom/base/nsDOMWindowUtils.cpp
+++ b/dom/base/nsDOMWindowUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -3473,7 +3472,7 @@ nsDOMWindowUtils::AddSheet(nsIDOMStyleSheet *aSheet, uint32_t aSheetType)
nsIDocument::additionalSheetType type = convertSheetType(aSheetType);
RefPtr<CSSStyleSheet> sheet = do_QueryObject(aSheet);
NS_ENSURE_TRUE(sheet, NS_ERROR_FAILURE);
- if (sheet->GetOwningDocument()) {
+ if (sheet->GetAssociatedDocument()) {
return NS_ERROR_INVALID_ARG;
}
return doc->AddAdditionalStyleSheet(type, sheet);
@@ -3658,11 +3657,11 @@ nsDOMWindowUtils::GetOMTAStyle(nsIDOMElement* aElement,
RefPtr<nsROCSSPrimitiveValue> cssValue = nullptr;
nsIFrame* frame = element->GetPrimaryFrame();
- if (frame && !aPseudoElement.IsEmpty()) {
+ if (!aPseudoElement.IsEmpty()) {
if (aPseudoElement.EqualsLiteral("::before")) {
- frame = nsLayoutUtils::GetBeforeFrame(frame);
+ frame = nsLayoutUtils::GetBeforeFrame(element);
} else if (aPseudoElement.EqualsLiteral("::after")) {
- frame = nsLayoutUtils::GetAfterFrame(frame);
+ frame = nsLayoutUtils::GetAfterFrame(element);
} else {
return NS_ERROR_INVALID_ARG;
}
diff --git a/dom/base/nsDOMWindowUtils.h b/dom/base/nsDOMWindowUtils.h
index 7f2ceb962..a398646a9 100644
--- a/dom/base/nsDOMWindowUtils.h
+++ b/dom/base/nsDOMWindowUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDataDocumentContentPolicy.cpp b/dom/base/nsDataDocumentContentPolicy.cpp
index 0a728bac2..1b6ed32cd 100644
--- a/dom/base/nsDataDocumentContentPolicy.cpp
+++ b/dom/base/nsDataDocumentContentPolicy.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDataDocumentContentPolicy.h b/dom/base/nsDataDocumentContentPolicy.h
index eb6a46dea..8672faef4 100644
--- a/dom/base/nsDataDocumentContentPolicy.h
+++ b/dom/base/nsDataDocumentContentPolicy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDeprecatedOperationList.h b/dom/base/nsDeprecatedOperationList.h
index 96a6c3ac0..0bae2d621 100644
--- a/dom/base/nsDeprecatedOperationList.h
+++ b/dom/base/nsDeprecatedOperationList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDocElementCreatedNotificationRunner.h b/dom/base/nsDocElementCreatedNotificationRunner.h
index 1e53c3dd0..e565ba841 100644
--- a/dom/base/nsDocElementCreatedNotificationRunner.h
+++ b/dom/base/nsDocElementCreatedNotificationRunner.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsDocument.cpp b/dom/base/nsDocument.cpp
index 144f048eb..1c3e7a421 100644
--- a/dom/base/nsDocument.cpp
+++ b/dom/base/nsDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -116,7 +115,6 @@
#include "nsBidiUtils.h"
-#include "nsIParserService.h"
#include "nsContentCreatorFunctions.h"
#include "nsIScriptContext.h"
@@ -301,9 +299,24 @@ GetHttpChannelHelper(nsIChannel* aChannel, nsIHttpChannel** aHttpChannel)
#define NAME_NOT_VALID ((nsSimpleContentList*)1)
+nsIdentifierMapEntry::nsIdentifierMapEntry(const nsIdentifierMapEntry::AtomOrString& aKey)
+ : mKey(aKey)
+{}
+
+nsIdentifierMapEntry::nsIdentifierMapEntry(const nsIdentifierMapEntry::AtomOrString* aKey)
+ : mKey(aKey ? *aKey : nullptr)
+{}
+
nsIdentifierMapEntry::~nsIdentifierMapEntry()
-{
-}
+{}
+
+nsIdentifierMapEntry::nsIdentifierMapEntry(nsIdentifierMapEntry&& aOther)
+ : mKey(mozilla::Move(aOther.mKey))
+ , mIdContentList(mozilla::Move(aOther.mIdContentList))
+ , mNameContentList(mozilla::Move(aOther.mNameContentList))
+ , mChangeCallbacks(mozilla::Move(aOther.mChangeCallbacks))
+ , mImageElement(mozilla::Move(aOther.mImageElement))
+{}
void
nsIdentifierMapEntry::Traverse(nsCycleCollectionTraversalCallback* aCallback)
@@ -327,6 +340,12 @@ nsIdentifierMapEntry::IsEmpty()
!mChangeCallbacks && !mImageElement;
}
+bool
+nsIdentifierMapEntry::HasNameElement() const
+{
+ return mNameContentList && mNameContentList->Length() != 0;
+}
+
Element*
nsIdentifierMapEntry::GetIdElement()
{
@@ -538,7 +557,7 @@ nsIdentifierMapEntry::HasIdElementExposedAsHTMLDocumentProperty()
size_t
nsIdentifierMapEntry::SizeOfExcludingThis(MallocSizeOf aMallocSizeOf) const
{
- return nsStringHashKey::SizeOfExcludingThis(aMallocSizeOf);
+ return mKey.mString.SizeOfExcludingThisIfUnshared(aMallocSizeOf);
}
// Helper structs for the content->subdoc map
@@ -571,78 +590,6 @@ struct nsRadioGroupStruct
bool mGroupSuffersFromValueMissing;
};
-
-nsDOMStyleSheetList::nsDOMStyleSheetList(nsIDocument *aDocument)
-{
- mLength = -1;
- // Not reference counted to avoid circular references.
- // The document will tell us when its going away.
- mDocument = aDocument;
- mDocument->AddObserver(this);
-}
-
-nsDOMStyleSheetList::~nsDOMStyleSheetList()
-{
- if (mDocument) {
- mDocument->RemoveObserver(this);
- }
-}
-
-NS_IMPL_ISUPPORTS_INHERITED(nsDOMStyleSheetList, StyleSheetList,
- nsIDocumentObserver,
- nsIMutationObserver)
-
-uint32_t
-nsDOMStyleSheetList::Length()
-{
- if (!mDocument) {
- return 0;
- }
-
- // XXX Find the number and then cache it. We'll use the
- // observer notification to figure out if new ones have
- // been added or removed.
- if (-1 == mLength) {
- mLength = mDocument->GetNumberOfStyleSheets();
- }
- return mLength;
-}
-
-StyleSheet*
-nsDOMStyleSheetList::IndexedGetter(uint32_t aIndex, bool& aFound)
-{
- if (!mDocument || aIndex >= (uint32_t)mDocument->GetNumberOfStyleSheets()) {
- aFound = false;
- return nullptr;
- }
- aFound = true;
- return mDocument->GetStyleSheetAt(aIndex);
-}
-
-void
-nsDOMStyleSheetList::NodeWillBeDestroyed(const nsINode *aNode)
-{
- mDocument = nullptr;
-}
-
-void
-nsDOMStyleSheetList::StyleSheetAdded(StyleSheet* aStyleSheet,
- bool aDocumentSheet)
-{
- if (aDocumentSheet && -1 != mLength) {
- mLength++;
- }
-}
-
-void
-nsDOMStyleSheetList::StyleSheetRemoved(StyleSheet* aStyleSheet,
- bool aDocumentSheet)
-{
- if (aDocumentSheet && -1 != mLength) {
- mLength--;
- }
-}
-
// nsOnloadBlocker implementation
NS_IMPL_ISUPPORTS(nsOnloadBlocker, nsIRequest)
@@ -1200,10 +1147,10 @@ nsDOMStyleSheetSetList::EnsureFresh()
// no document, for sure
}
- int32_t count = mDocument->GetNumberOfStyleSheets();
+ size_t count = mDocument->SheetCount();
nsAutoString title;
- for (int32_t index = 0; index < count; index++) {
- StyleSheet* sheet = mDocument->GetStyleSheetAt(index);
+ for (size_t index = 0; index < count; index++) {
+ StyleSheet* sheet = mDocument->SheetAt(index);
NS_ASSERTION(sheet, "Null sheet in sheet list!");
// XXXheycam ServoStyleSheets don't expose their title yet.
if (sheet->IsServo()) {
@@ -1299,6 +1246,7 @@ static already_AddRefed<mozilla::dom::NodeInfo> nullNodeInfo;
// ==================================================================
nsIDocument::nsIDocument()
: nsINode(nullNodeInfo),
+ DocumentOrShadowRoot(this),
mReferrerPolicySet(false),
mReferrerPolicy(mozilla::net::RP_Default),
mBlockAllMixedContent(false),
@@ -1328,10 +1276,15 @@ nsIDocument::nsIDocument()
mFrameRequestCallbacksScheduled(false),
mBidiOptions(IBMBIDI_DEFAULT_BIDI_OPTIONS),
mPartID(0),
- mUserHasInteracted(false)
+ mUserHasInteracted(false),
+ mThrowOnDynamicMarkupInsertionCounter(0)
{
SetIsInDocument();
+ // Set this when document is created and value stays the same for the lifetime
+ // of the document.
+ mIsWebComponentsEnabled = nsContentUtils::IsWebComponentsEnabled();
+
PR_INIT_CLIST(&mDOMMediaQueryLists);
}
@@ -1451,11 +1404,11 @@ nsDocument::~nsDocument()
// Let the stylesheets know we're going away
for (StyleSheet* sheet : mStyleSheets) {
- sheet->SetOwningDocument(nullptr);
+ sheet->ClearAssociatedDocument();
}
for (auto& sheets : mAdditionalSheets) {
for (StyleSheet* sheet : sheets) {
- sheet->SetOwningDocument(nullptr);
+ sheet->ClearAssociatedDocument();
}
}
if (mAttrStyleSheet) {
@@ -2120,7 +2073,7 @@ nsDocument::RemoveDocStyleSheetsFromStyleSets()
{
// The stylesheets should forget us
for (StyleSheet* sheet : Reversed(mStyleSheets)) {
- sheet->SetOwningDocument(nullptr);
+ sheet->ClearAssociatedDocument();
if (sheet->IsApplicable()) {
nsCOMPtr<nsIPresShell> shell = GetShell();
@@ -2139,7 +2092,7 @@ nsDocument::RemoveStyleSheetsFromStyleSets(
{
// The stylesheets should forget us
for (StyleSheet* sheet : Reversed(aSheets)) {
- sheet->SetOwningDocument(nullptr);
+ sheet->ClearAssociatedDocument();
if (sheet->IsApplicable()) {
nsCOMPtr<nsIPresShell> shell = GetShell();
@@ -2318,6 +2271,29 @@ WarnIfSandboxIneffective(nsIDocShell* aDocShell,
}
}
+bool
+nsDocument::IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject)
+{
+ if (!nsContentUtils::IsWebComponentsEnabled()) {
+ return false;
+ }
+
+ JS::Rooted<JSObject*> obj(aCx, aObject);
+
+ JSAutoCompartment ac(aCx, obj);
+ JS::Rooted<JSObject*> global(aCx, JS_GetGlobalForObject(aCx, obj));
+ nsCOMPtr<nsPIDOMWindowInner> window =
+ do_QueryInterface(nsJSUtils::GetStaticScriptGlobal(global));
+
+ nsIDocument* doc = window ? window->GetExtantDoc() : nullptr;
+ if (doc && doc->IsStyledByServo()) {
+ NS_WARNING("stylo: Web Components not supported yet");
+ return false;
+ }
+
+ return true;
+}
+
nsresult
nsDocument::StartDocumentLoad(const char* aCommand, nsIChannel* aChannel,
nsILoadGroup* aLoadGroup,
@@ -2757,8 +2733,7 @@ nsDocument::AddToNameTable(Element *aElement, nsIAtom* aName)
"Only put elements that need to be exposed as document['name'] in "
"the named table.");
- nsIdentifierMapEntry *entry =
- mIdentifierMap.PutEntry(nsDependentAtomString(aName));
+ nsIdentifierMapEntry* entry = mIdentifierMap.PutEntry(aName);
// Null for out-of-memory
if (entry) {
@@ -2777,8 +2752,7 @@ nsDocument::RemoveFromNameTable(Element *aElement, nsIAtom* aName)
if (mIdentifierMap.Count() == 0)
return;
- nsIdentifierMapEntry *entry =
- mIdentifierMap.GetEntry(nsDependentAtomString(aName));
+ nsIdentifierMapEntry* entry = mIdentifierMap.GetEntry(aName);
if (!entry) // Could be false if the element was anonymous, hence never added
return;
@@ -2792,8 +2766,7 @@ nsDocument::RemoveFromNameTable(Element *aElement, nsIAtom* aName)
void
nsDocument::AddToIdTable(Element *aElement, nsIAtom* aId)
{
- nsIdentifierMapEntry *entry =
- mIdentifierMap.PutEntry(nsDependentAtomString(aId));
+ nsIdentifierMapEntry* entry = mIdentifierMap.PutEntry(aId);
if (entry) { /* True except on OOM */
if (nsGenericHTMLElement::ShouldExposeIdAsHTMLDocumentProperty(aElement) &&
@@ -2815,8 +2788,7 @@ nsDocument::RemoveFromIdTable(Element *aElement, nsIAtom* aId)
return;
}
- nsIdentifierMapEntry *entry =
- mIdentifierMap.GetEntry(nsDependentAtomString(aId));
+ nsIdentifierMapEntry* entry = mIdentifierMap.GetEntry(aId);
if (!entry) // Can be null for XML elements with changing ids.
return;
@@ -2951,6 +2923,33 @@ nsDocument::IsWebAnimationsEnabled(JSContext* /*unused*/, JSObject* /*unused*/)
Preferences::GetBool("dom.animations-api.core.enabled");
}
+bool
+nsDocument::AreWebAnimationsTimelinesEnabled(JSContext* /*unused*/, JSObject* /*unused*/)
+{
+ MOZ_ASSERT(NS_IsMainThread());
+
+ return nsContentUtils::IsCallerChrome() ||
+ Preferences::GetBool("dom.animations-api.timelines.enabled");
+}
+
+bool
+nsDocument::AreWebAnimationsImplicitKeyframesEnabled(JSContext* /*unused*/, JSObject* /*unused*/)
+{
+ MOZ_ASSERT(NS_IsMainThread());
+
+ return nsContentUtils::IsCallerChrome() ||
+ Preferences::GetBool("dom.animations-api.implicit-keyframes.enabled");
+}
+
+bool
+nsDocument::IsWebAnimationsGetAnimationsEnabled(JSContext* /*unused*/, JSObject* /*unused*/)
+{
+ MOZ_ASSERT(NS_IsMainThread());
+
+ return nsContentUtils::IsCallerChrome() ||
+ Preferences::GetBool("dom.animations-api.getAnimations.enabled");
+}
+
DocumentTimeline*
nsDocument::Timeline()
{
@@ -3066,20 +3065,9 @@ Element*
nsIDocument::GetActiveElement()
{
// Get the focused element.
- if (nsCOMPtr<nsPIDOMWindowOuter> window = GetWindow()) {
- nsCOMPtr<nsPIDOMWindowOuter> focusedWindow;
- nsIContent* focusedContent =
- nsFocusManager::GetFocusedDescendant(window, false,
- getter_AddRefs(focusedWindow));
- // be safe and make sure the element is from this document
- if (focusedContent && focusedContent->OwnerDoc() == this) {
- if (focusedContent->ChromeOnlyAccess()) {
- focusedContent = focusedContent->FindFirstNonChromeOnlyAccessContent();
- }
- if (focusedContent) {
- return focusedContent->AsElement();
- }
- }
+ Element* focusedElement = GetRetargetedFocusedElement();
+ if (focusedElement) {
+ return focusedElement;
}
// No focused element anywhere in this document. Try to get the BODY.
@@ -3291,12 +3279,6 @@ nsDocument::GetElementsByClassName(const nsAString& aClasses,
return NS_OK;
}
-already_AddRefed<nsContentList>
-nsIDocument::GetElementsByClassName(const nsAString& aClasses)
-{
- return nsContentUtils::GetElementsByClassName(this, aClasses);
-}
-
NS_IMETHODIMP
nsDocument::ReleaseCapture()
{
@@ -3940,24 +3922,6 @@ nsDocument::AddOnDemandBuiltInUASheet(StyleSheet* aSheet)
NotifyStyleSheetAdded(aSheet, false);
}
-int32_t
-nsDocument::GetNumberOfStyleSheets() const
-{
- return mStyleSheets.Length();
-}
-
-StyleSheet*
-nsDocument::GetStyleSheetAt(int32_t aIndex) const
-{
- return mStyleSheets.SafeElementAt(aIndex, nullptr);
-}
-
-int32_t
-nsDocument::GetIndexOfStyleSheet(const StyleSheet* aSheet) const
-{
- return mStyleSheets.IndexOf(aSheet);
-}
-
void
nsDocument::AddStyleSheetToStyleSets(StyleSheet* aSheet)
{
@@ -4020,7 +3984,7 @@ nsDocument::AddStyleSheet(StyleSheet* aSheet)
{
NS_PRECONDITION(aSheet, "null arg");
mStyleSheets.AppendElement(aSheet);
- aSheet->SetOwningDocument(this);
+ aSheet->SetAssociatedDocument(this, StyleSheet::OwnedByDocument);
if (aSheet->IsApplicable()) {
AddStyleSheetToStyleSets(aSheet);
@@ -4057,7 +4021,7 @@ nsDocument::RemoveStyleSheet(StyleSheet* aSheet)
NotifyStyleSheetRemoved(aSheet, true);
}
- aSheet->SetOwningDocument(nullptr);
+ aSheet->ClearAssociatedDocument();
}
void
@@ -4085,7 +4049,7 @@ nsDocument::UpdateStyleSheets(nsTArray<RefPtr<StyleSheet>>& aOldSheets,
StyleSheet* newSheet = aNewSheets[i];
if (newSheet) {
mStyleSheets.InsertElementAt(oldIndex, newSheet);
- newSheet->SetOwningDocument(this);
+ newSheet->SetAssociatedDocument(this, StyleSheet::OwnedByDocument);
if (newSheet->IsApplicable()) {
AddStyleSheetToStyleSets(newSheet);
}
@@ -4098,13 +4062,13 @@ nsDocument::UpdateStyleSheets(nsTArray<RefPtr<StyleSheet>>& aOldSheets,
}
void
-nsDocument::InsertStyleSheetAt(StyleSheet* aSheet, int32_t aIndex)
+nsDocument::InsertStyleSheetAt(StyleSheet* aSheet, size_t aIndex)
{
- NS_PRECONDITION(aSheet, "null ptr");
+ MOZ_ASSERT(aSheet);
mStyleSheets.InsertElementAt(aIndex, aSheet);
- aSheet->SetOwningDocument(this);
+ aSheet->SetAssociatedDocument(this, StyleSheet::OwnedByDocument);
if (aSheet->IsApplicable()) {
AddStyleSheetToStyleSets(aSheet);
@@ -4229,7 +4193,7 @@ nsDocument::LoadAdditionalStyleSheet(additionalSheetType aType,
nsresult rv = loader->LoadSheetSync(aSheetURI, parsingMode, true, &sheet);
NS_ENSURE_SUCCESS(rv, rv);
- sheet->SetOwningDocument(this);
+ sheet->SetAssociatedDocument(this, StyleSheet::OwnedByDocument);
MOZ_ASSERT(sheet->IsApplicable());
return AddAdditionalStyleSheet(aType, sheet);
@@ -4287,7 +4251,7 @@ nsDocument::RemoveAdditionalStyleSheet(additionalSheetType aType, nsIURI* aSheet
NotifyStyleSheetRemoved(sheetRef, false);
EndUpdate(UPDATE_STYLE);
- sheetRef->SetOwningDocument(nullptr);
+ sheetRef->ClearAssociatedDocument();
}
}
@@ -4810,32 +4774,7 @@ nsDocument::BeginLoad()
void
nsDocument::ReportEmptyGetElementByIdArg()
{
- nsContentUtils::ReportToConsole(nsIScriptError::warningFlag,
- NS_LITERAL_CSTRING("DOM"), this,
- nsContentUtils::eDOM_PROPERTIES,
- "EmptyGetElementByIdParam");
-}
-
-Element*
-nsDocument::GetElementById(const nsAString& aElementId)
-{
- if (!CheckGetElementByIdArg(aElementId)) {
- return nullptr;
- }
-
- nsIdentifierMapEntry *entry = mIdentifierMap.GetEntry(aElementId);
- return entry ? entry->GetIdElement() : nullptr;
-}
-
-const nsTArray<Element*>*
-nsDocument::GetAllElementsForId(const nsAString& aElementId) const
-{
- if (aElementId.IsEmpty()) {
- return nullptr;
- }
-
- nsIdentifierMapEntry *entry = mIdentifierMap.GetEntry(aElementId);
- return entry ? &entry->GetIdElements() : nullptr;
+ nsContentUtils::ReportEmptyGetElementByIdArg(this);
}
NS_IMETHODIMP
@@ -4860,7 +4799,7 @@ nsDocument::AddIDTargetObserver(nsIAtom* aID, IDTargetObserver aObserver,
if (!CheckGetElementByIdArg(id))
return nullptr;
- nsIdentifierMapEntry *entry = mIdentifierMap.PutEntry(id);
+ nsIdentifierMapEntry* entry = mIdentifierMap.PutEntry(aID);
NS_ENSURE_TRUE(entry, nullptr);
entry->AddContentChangeCallback(aObserver, aData, aForImage);
@@ -4876,7 +4815,7 @@ nsDocument::RemoveIDTargetObserver(nsIAtom* aID, IDTargetObserver aObserver,
if (!CheckGetElementByIdArg(id))
return;
- nsIdentifierMapEntry *entry = mIdentifierMap.GetEntry(id);
+ nsIdentifierMapEntry* entry = mIdentifierMap.GetEntry(aID);
if (!entry) {
return;
}
@@ -5366,29 +5305,18 @@ bool IsLowercaseASCII(const nsAString& aValue)
return true;
}
-already_AddRefed<mozilla::dom::CustomElementRegistry>
-nsDocument::GetCustomElementRegistry()
+// We only support pseudo-elements with two colons in this function.
+static CSSPseudoElementType
+GetPseudoElementType(const nsString& aString, ErrorResult& aRv)
{
- nsAutoString contentType;
- GetContentType(contentType);
- if (!IsHTMLDocument() &&
- !contentType.EqualsLiteral("application/xhtml+xml")) {
- return nullptr;
+ MOZ_ASSERT(!aString.IsEmpty(), "GetPseudoElementType aString should be non-null");
+ if (aString.Length() <= 2 || aString[0] != ':' || aString[1] != ':') {
+ aRv.Throw(NS_ERROR_DOM_SYNTAX_ERR);
+ return CSSPseudoElementType::NotPseudo;
}
-
- nsCOMPtr<nsPIDOMWindowInner> window(
- do_QueryInterface(mScriptGlobalObject ? mScriptGlobalObject
- : GetScopeObject()));
- if (!window) {
- return nullptr;
- }
-
- RefPtr<CustomElementRegistry> registry = window->CustomElements();
- if (!registry) {
- return nullptr;
- }
-
- return registry.forget();
+ nsCOMPtr<nsIAtom> pseudo = NS_Atomize(Substring(aString, 1));
+ return nsCSSPseudoElements::GetPseudoType(pseudo,
+ nsCSSProps::EnabledState::eInUASheets);
}
already_AddRefed<Element>
@@ -5408,18 +5336,40 @@ nsDocument::CreateElement(const nsAString& aTagName,
}
const nsString* is = nullptr;
+ CSSPseudoElementType pseudoType = CSSPseudoElementType::NotPseudo;
if (aOptions.IsElementCreationOptions()) {
- // Throw NotFoundError if 'is' is not-null and definition is null
- is = CheckCustomElementName(aOptions.GetAsElementCreationOptions(),
- needsLowercase ? lcTagName : aTagName, mDefaultElementType, rv);
- if (rv.Failed()) {
- return nullptr;
+ const ElementCreationOptions& options =
+ aOptions.GetAsElementCreationOptions();
+
+ if (CustomElementRegistry::IsCustomElementEnabled() &&
+ options.mIs.WasPassed()) {
+ is = &options.mIs.Value();
+ }
+
+ // Check 'pseudo' and throw an exception if it's not one allowed
+ // with CSS_PSEUDO_ELEMENT_IS_JS_CREATED_NAC.
+ if (options.mPseudo.WasPassed()) {
+ pseudoType = GetPseudoElementType(options.mPseudo.Value(), rv);
+ if (rv.Failed() ||
+ pseudoType == CSSPseudoElementType::NotPseudo ||
+ !nsCSSPseudoElements::PseudoElementIsJSCreatedNAC(pseudoType)) {
+ rv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
+ return nullptr;
+ }
}
}
RefPtr<Element> elem = CreateElem(
needsLowercase ? lcTagName : aTagName, nullptr, mDefaultElementType, is);
+ if (pseudoType != CSSPseudoElementType::NotPseudo) {
+ elem->SetPseudoElementType(pseudoType);
+ }
+
+ if (is) {
+ elem->SetAttr(kNameSpaceID_None, nsGkAtoms::is, *is, true);
+ }
+
return elem.forget();
}
@@ -5430,8 +5380,8 @@ nsDocument::CreateElementNS(const nsAString& aNamespaceURI,
{
*aReturn = nullptr;
ElementCreationOptionsOrString options;
- options.SetAsString();
+ options.SetAsString();
ErrorResult rv;
nsCOMPtr<Element> element =
CreateElementNS(aNamespaceURI, aQualifiedName, options, rv);
@@ -5456,12 +5406,11 @@ nsDocument::CreateElementNS(const nsAString& aNamespaceURI,
}
const nsString* is = nullptr;
- if (aOptions.IsElementCreationOptions()) {
- // Throw NotFoundError if 'is' is not-null and definition is null
- is = CheckCustomElementName(aOptions.GetAsElementCreationOptions(),
- aQualifiedName, nodeInfo->NamespaceID(), rv);
- if (rv.Failed()) {
- return nullptr;
+ if (CustomElementRegistry::IsCustomElementEnabled() &&
+ aOptions.IsElementCreationOptions()) {
+ const ElementCreationOptions& options = aOptions.GetAsElementCreationOptions();
+ if (options.mIs.WasPassed()) {
+ is = &options.mIs.Value();
}
}
@@ -5472,6 +5421,10 @@ nsDocument::CreateElementNS(const nsAString& aNamespaceURI,
return nullptr;
}
+ if (is) {
+ element->SetAttr(kNameSpaceID_None, nsGkAtoms::is, *is, true);
+ }
+
return element.forget();
}
@@ -5668,231 +5621,9 @@ nsIDocument::CreateAttributeNS(const nsAString& aNamespaceURI,
}
bool
-nsDocument::CustomElementConstructor(JSContext* aCx, unsigned aArgc, JS::Value* aVp)
-{
- JS::CallArgs args = JS::CallArgsFromVp(aArgc, aVp);
-
- JS::Rooted<JSObject*> global(aCx,
- JS_GetGlobalForObject(aCx, &args.callee()));
- RefPtr<nsGlobalWindow> window;
- UNWRAP_OBJECT(Window, global, window);
- MOZ_ASSERT(window, "Should have a non-null window");
-
- nsDocument* document = static_cast<nsDocument*>(window->GetDoc());
-
- // Function name is the type of the custom element.
- JSString* jsFunName =
- JS_GetFunctionId(JS_ValueToFunction(aCx, args.calleev()));
- nsAutoJSString elemName;
- if (!elemName.init(aCx, jsFunName)) {
- return true;
- }
-
- RefPtr<mozilla::dom::CustomElementRegistry> registry = window->CustomElements();
- if (!registry) {
- return true;
- }
-
- nsCOMPtr<nsIAtom> typeAtom(NS_Atomize(elemName));
- CustomElementDefinition* definition = registry->mCustomDefinitions.Get(typeAtom);
- if (!definition) {
- return true;
- }
-
- nsDependentAtomString localName(definition->mLocalName);
-
- nsCOMPtr<Element> element =
- document->CreateElem(localName, nullptr, kNameSpaceID_XHTML);
- NS_ENSURE_TRUE(element, true);
-
- if (definition->mLocalName != typeAtom) {
- // This element is a custom element by extension, thus we need to
- // do some special setup. For non-extended custom elements, this happens
- // when the element is created.
- nsContentUtils::SetupCustomElement(element, &elemName);
- }
-
- nsresult rv = nsContentUtils::WrapNative(aCx, element, element, args.rval());
- NS_ENSURE_SUCCESS(rv, true);
-
- return true;
-}
-
-bool
-nsDocument::IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject)
+nsDocument::IsWebComponentsEnabled(const nsINode* aNode)
{
- JS::Rooted<JSObject*> obj(aCx, aObject);
-
- //if (Preferences::GetBool("dom.webcomponents.enabled")) {
- // return true;
- //}
-
- // Check for the webcomponents permission. See Bug 1181555.
- JSAutoCompartment ac(aCx, obj);
- JS::Rooted<JSObject*> global(aCx, JS_GetGlobalForObject(aCx, obj));
- nsCOMPtr<nsPIDOMWindowInner> window =
- do_QueryInterface(nsJSUtils::GetStaticScriptGlobal(global));
-
- return IsWebComponentsEnabled(window);
-}
-
-bool
-nsDocument::IsWebComponentsEnabled(dom::NodeInfo* aNodeInfo)
-{
- //if (Preferences::GetBool("dom.webcomponents.enabled")) {
- // return true;
- //}
-
- nsIDocument* doc = aNodeInfo->GetDocument();
- // Use GetScopeObject() here so that data documents work the same way as the
- // main document they're associated with.
- nsCOMPtr<nsPIDOMWindowInner> window =
- do_QueryInterface(doc->GetScopeObject());
- return IsWebComponentsEnabled(window);
-}
-
-bool
-nsDocument::IsWebComponentsEnabled(nsPIDOMWindowInner* aWindow)
-{
-/*
- if (aWindow) {
- nsresult rv;
- nsCOMPtr<nsIPermissionManager> permMgr =
- do_GetService(NS_PERMISSIONMANAGER_CONTRACTID, &rv);
- NS_ENSURE_SUCCESS(rv, false);
-
- uint32_t perm;
- rv = permMgr->TestPermissionFromWindow(
- aWindow, "moz-extremely-unstable-and-will-change-webcomponents", &perm);
- NS_ENSURE_SUCCESS(rv, false);
-
- return perm == nsIPermissionManager::ALLOW_ACTION;
- }
-*/
- return false;
-}
-
-void
-nsDocument::RegisterElement(JSContext* aCx, const nsAString& aType,
- const ElementRegistrationOptions& aOptions,
- JS::MutableHandle<JSObject*> aRetval,
- ErrorResult& rv)
-{
- RefPtr<CustomElementRegistry> registry(GetCustomElementRegistry());
- if (!registry) {
- rv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
- return;
- }
-
- // Unconditionally convert TYPE to lowercase.
- nsAutoString lcType;
- nsContentUtils::ASCIIToLower(aType, lcType);
-
- nsIGlobalObject* sgo = GetScopeObject();
- if (!sgo) {
- rv.Throw(NS_ERROR_UNEXPECTED);
- return;
- }
-
- JS::Rooted<JSObject*> global(aCx, sgo->GetGlobalJSObject());
- JS::Rooted<JSObject*> protoObject(aCx);
-
- if (!aOptions.mPrototype) {
- JS::Rooted<JSObject*> htmlProto(aCx);
- htmlProto = HTMLElementBinding::GetProtoObjectHandle(aCx);
- if (!htmlProto) {
- rv.Throw(NS_ERROR_OUT_OF_MEMORY);
- return;
- }
-
- protoObject = JS_NewObjectWithGivenProto(aCx, nullptr, htmlProto);
- if (!protoObject) {
- rv.Throw(NS_ERROR_UNEXPECTED);
- return;
- }
- } else {
- protoObject = aOptions.mPrototype;
-
- // Get the unwrapped prototype to do some checks.
- JS::Rooted<JSObject*> protoObjectUnwrapped(aCx, js::CheckedUnwrap(protoObject));
- if (!protoObjectUnwrapped) {
- // If the caller's compartment does not have permission to access the
- // unwrapped prototype then throw.
- rv.Throw(NS_ERROR_DOM_SECURITY_ERR);
- return;
- }
-
- // If PROTOTYPE is already an interface prototype object for any interface
- // object or PROTOTYPE has a non-configurable property named constructor,
- // throw a NotSupportedError and stop.
- const js::Class* clasp = js::GetObjectClass(protoObjectUnwrapped);
- if (IsDOMIfaceAndProtoClass(clasp)) {
- rv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
- return;
- }
-
- JS::Rooted<JS::PropertyDescriptor> descRoot(aCx);
- JS::MutableHandle<JS::PropertyDescriptor> desc(&descRoot);
- // This check may go through a wrapper, but as we checked above
- // it should be transparent or an xray. This should be fine for now,
- // until the spec is sorted out.
- if (!JS_GetPropertyDescriptor(aCx, protoObject, "constructor", desc)) {
- rv.Throw(NS_ERROR_UNEXPECTED);
- return;
- }
-
- if (!desc.configurable()) {
- rv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
- return;
- }
- }
-
- JS::Rooted<JSFunction*> constructor(aCx);
- {
- // Go into the document's global compartment when creating the constructor
- // function because we want to get the correct document (where the
- // definition is registered) when it is called.
- JSAutoCompartment ac(aCx, global);
-
- // Create constructor to return. Store the name of the custom element as the
- // name of the function.
- constructor = JS_NewFunction(aCx, nsDocument::CustomElementConstructor, 0,
- JSFUN_CONSTRUCTOR,
- NS_ConvertUTF16toUTF8(lcType).get());
- if (!constructor) {
- rv.Throw(NS_ERROR_OUT_OF_MEMORY);
- return;
- }
- }
-
- JS::Rooted<JSObject*> wrappedConstructor(aCx);
- wrappedConstructor = JS_GetFunctionObject(constructor);
- if (!JS_WrapObject(aCx, &wrappedConstructor)) {
- rv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
- return;
- }
-
- if (!JS_LinkConstructorAndPrototype(aCx, wrappedConstructor, protoObject)) {
- rv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
- return;
- }
-
- ElementDefinitionOptions options;
- if (!aOptions.mExtends.IsVoid()) {
- // Only convert NAME to lowercase in HTML documents.
- nsAutoString lcName;
- IsHTMLDocument() ? nsContentUtils::ASCIIToLower(aOptions.mExtends, lcName)
- : lcName.Assign(aOptions.mExtends);
-
- options.mExtends.Construct(lcName);
- }
-
- RootedCallback<OwningNonNull<binding_detail::FastFunction>> functionConstructor(aCx);
- functionConstructor = new binding_detail::FastFunction(aCx, wrappedConstructor, sgo);
-
- registry->Define(lcType, functionConstructor, options, rv);
-
- aRetval.set(wrappedConstructor);
+ return aNode->OwnerDoc()->IsWebComponentsEnabled();
}
NS_IMETHODIMP
@@ -5935,27 +5666,6 @@ nsDocument::BlockedTrackingNodes() const
return list.forget();
}
-already_AddRefed<nsContentList>
-nsIDocument::GetElementsByTagNameNS(const nsAString& aNamespaceURI,
- const nsAString& aLocalName,
- ErrorResult& aResult)
-{
- int32_t nameSpaceId = kNameSpaceID_Wildcard;
-
- if (!aNamespaceURI.EqualsLiteral("*")) {
- aResult =
- nsContentUtils::NameSpaceManager()->RegisterNameSpace(aNamespaceURI,
- nameSpaceId);
- if (aResult.Failed()) {
- return nullptr;
- }
- }
-
- NS_ASSERTION(nameSpaceId != kNameSpaceID_Unknown, "Unexpected namespace ID!");
-
- return NS_GetContentList(this, nameSpaceId, aLocalName);
-}
-
NS_IMETHODIMP
nsDocument::GetElementsByTagNameNS(const nsAString& aNamespaceURI,
const nsAString& aLocalName,
@@ -5963,7 +5673,7 @@ nsDocument::GetElementsByTagNameNS(const nsAString& aNamespaceURI,
{
ErrorResult rv;
RefPtr<nsContentList> list =
- nsIDocument::GetElementsByTagNameNS(aNamespaceURI, aLocalName, rv);
+ GetElementsByTagNameNS(aNamespaceURI, aLocalName, rv);
if (rv.Failed()) {
return rv.StealNSResult();
}
@@ -5980,15 +5690,6 @@ nsDocument::GetStyleSheets(nsIDOMStyleSheetList** aStyleSheets)
return NS_OK;
}
-StyleSheetList*
-nsDocument::StyleSheets()
-{
- if (!mDOMStyleSheets) {
- mDOMStyleSheets = new nsDOMStyleSheetList(this);
- }
- return mDOMStyleSheets;
-}
-
NS_IMETHODIMP
nsDocument::GetMozSelectedStyleSheetSet(nsAString& aSheetSet)
{
@@ -6002,10 +5703,10 @@ nsIDocument::GetSelectedStyleSheetSet(nsAString& aSheetSet)
aSheetSet.Truncate();
// Look through our sheets, find the selected set title
- int32_t count = GetNumberOfStyleSheets();
+ size_t count = SheetCount();
nsAutoString title;
- for (int32_t index = 0; index < count; index++) {
- StyleSheet* sheet = GetStyleSheetAt(index);
+ for (size_t index = 0; index < count; index++) {
+ StyleSheet* sheet = SheetAt(index);
NS_ASSERTION(sheet, "Null sheet in sheet list!");
// XXXheycam Make this work with ServoStyleSheets.
@@ -6122,10 +5823,10 @@ nsDocument::EnableStyleSheetsForSetInternal(const nsAString& aSheetSet,
bool aUpdateCSSLoader)
{
BeginUpdate(UPDATE_STYLE);
- int32_t count = GetNumberOfStyleSheets();
+ size_t count = SheetCount();
nsAutoString title;
- for (int32_t index = 0; index < count; index++) {
- StyleSheet* sheet = GetStyleSheetAt(index);
+ for (size_t index = 0; index < count; index++) {
+ StyleSheet* sheet = SheetAt(index);
NS_ASSERTION(sheet, "Null sheet in sheet list!");
// XXXheycam Make this work with ServoStyleSheets.
@@ -6395,7 +6096,7 @@ already_AddRefed<nsRange>
nsIDocument::CreateRange(ErrorResult& rv)
{
RefPtr<nsRange> range = new nsRange(this);
- nsresult res = range->Set(this, 0, this, 0);
+ nsresult res = range->CollapseTo(this, 0);
if (NS_FAILED(res)) {
rv.Throw(res);
return nullptr;
@@ -6550,6 +6251,49 @@ nsIDocument::GetHtmlChildElement(nsIAtom* aTag)
return nullptr;
}
+nsGenericHTMLElement*
+nsIDocument::GetBody()
+{
+ Element* html = GetHtmlElement();
+ if (!html) {
+ return nullptr;
+ }
+
+ for (nsIContent* child = html->GetFirstChild();
+ child;
+ child = child->GetNextSibling()) {
+ if (child->IsHTMLElement(nsGkAtoms::body) ||
+ child->IsHTMLElement(nsGkAtoms::frameset)) {
+ return static_cast<nsGenericHTMLElement*>(child);
+ }
+ }
+
+ return nullptr;
+}
+
+void
+nsIDocument::SetBody(nsGenericHTMLElement* newBody, ErrorResult& rv)
+{
+ nsCOMPtr<Element> root = GetRootElement();
+
+ // The body element must be either a body tag or a frameset tag. And we must
+ // have a root element to be able to add kids to it.
+ if (!newBody ||
+ !newBody->IsAnyOfHTMLElements(nsGkAtoms::body, nsGkAtoms::frameset) ||
+ !root) {
+ rv.Throw(NS_ERROR_DOM_HIERARCHY_REQUEST_ERR);
+ return;
+ }
+
+ // Use DOM methods so that we pass through the appropriate security checks.
+ nsCOMPtr<Element> currentBody = GetBody();
+ if (currentBody) {
+ root->ReplaceChild(*newBody, *currentBody, rv);
+ } else {
+ root->AppendChild(*newBody, rv);
+ }
+}
+
Element*
nsDocument::GetTitleElement()
{
@@ -7643,7 +7387,7 @@ nsDocument::GetExistingListenerManager() const
}
nsresult
-nsDocument::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsDocument::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
// FIXME! This is a hack to make middle mouse paste working also in Editor.
@@ -7653,8 +7397,8 @@ nsDocument::PreHandleEvent(EventChainPreVisitor& aVisitor)
// Load events must not propagate to |window| object, see bug 335251.
if (aVisitor.mEvent->mMessage != eLoad) {
nsGlobalWindow* window = nsGlobalWindow::Cast(GetWindow());
- aVisitor.mParentTarget =
- window ? window->GetTargetForEventTargetChain() : nullptr;
+ aVisitor.SetParentTarget(
+ window ? window->GetTargetForEventTargetChain() : nullptr, false);
}
return NS_OK;
}
@@ -9790,9 +9534,9 @@ nsIDocument::CreateStaticClone(nsIDocShell* aCloneContainer)
clonedDoc->mOriginalDocument->mStaticCloneCount++;
- int32_t sheetsCount = GetNumberOfStyleSheets();
- for (int32_t i = 0; i < sheetsCount; ++i) {
- RefPtr<StyleSheet> sheet = GetStyleSheetAt(i);
+ size_t sheetsCount = SheetCount();
+ for (size_t i = 0; i < sheetsCount; ++i) {
+ RefPtr<StyleSheet> sheet = SheetAt(i);
if (sheet) {
if (sheet->IsApplicable()) {
// XXXheycam Need to make ServoStyleSheet cloning work.
@@ -10851,7 +10595,7 @@ UpdateViewportScrollbarOverrideForFullscreen(nsIDocument* aDoc)
{
if (nsIPresShell* presShell = aDoc->GetShell()) {
if (nsPresContext* presContext = presShell->GetPresContext()) {
- presContext->UpdateViewportScrollbarStylesOverride();
+ presContext->UpdateViewportScrollStylesOverride();
}
}
}
@@ -12010,7 +11754,7 @@ SizeOfOwnedSheetArrayExcludingThis(const nsTArray<RefPtr<StyleSheet>>& aSheets,
size_t n = 0;
n += aSheets.ShallowSizeOfExcludingThis(aMallocSizeOf);
for (StyleSheet* sheet : aSheets) {
- if (!sheet->GetOwningDocument()) {
+ if (!sheet->GetAssociatedDocument()) {
// Avoid over-reporting shared sheets.
continue;
}
@@ -12551,8 +12295,12 @@ MarkDocumentTreeToBeInSyncOperation(nsIDocument* aDoc, void* aData)
nsAutoSyncOperation::nsAutoSyncOperation(nsIDocument* aDoc)
{
- mMicroTaskLevel = nsContentUtils::MicroTaskLevel();
- nsContentUtils::SetMicroTaskLevel(0);
+ mMicroTaskLevel = 0;
+ CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get();
+ if (ccjs) {
+ mMicroTaskLevel = ccjs->MicroTaskLevel();
+ ccjs->SetMicroTaskLevel(0);
+ }
if (aDoc) {
if (nsPIDOMWindowOuter* win = aDoc->GetWindow()) {
if (nsCOMPtr<nsPIDOMWindowOuter> top = win->GetTop()) {
@@ -12568,7 +12316,10 @@ nsAutoSyncOperation::~nsAutoSyncOperation()
for (int32_t i = 0; i < mDocuments.Count(); ++i) {
mDocuments[i]->SetIsInSyncOperation(false);
}
- nsContentUtils::SetMicroTaskLevel(mMicroTaskLevel);
+ CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get();
+ if (ccjs) {
+ ccjs->SetMicroTaskLevel(mMicroTaskLevel);
+ }
}
gfxUserFontSet*
@@ -12738,30 +12489,6 @@ nsIDocument::UpdateStyleBackendType()
#endif
}
-const nsString*
-nsDocument::CheckCustomElementName(const ElementCreationOptions& aOptions,
- const nsAString& aLocalName,
- uint32_t aNamespaceID,
- ErrorResult& rv)
-{
- // only check aOptions if 'is' is passed and the webcomponents preference
- // is enabled
- if (!aOptions.mIs.WasPassed() ||
- !CustomElementRegistry::IsCustomElementEnabled()) {
- return nullptr;
- }
-
- const nsString* is = &aOptions.mIs.Value();
-
- // Throw NotFoundError if 'is' is not-null and definition is null
- if (!nsContentUtils::LookupCustomElementDefinition(this, aLocalName,
- aNamespaceID, is)) {
- rv.Throw(NS_ERROR_DOM_NOT_FOUND_ERR);
- }
-
- return is;
-}
-
Selection*
nsIDocument::GetSelection(ErrorResult& aRv)
{
diff --git a/dom/base/nsDocument.h b/dom/base/nsDocument.h
index 220f4152d..010f95ae2 100644
--- a/dom/base/nsDocument.h
+++ b/dom/base/nsDocument.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -19,6 +18,7 @@
#include "nsWeakReference.h"
#include "nsWeakPtr.h"
#include "nsTArray.h"
+#include "nsIdentifierMapEntry.h"
#include "nsIDOMDocument.h"
#include "nsIDOMDocumentXBL.h"
#include "nsStubDocumentObserver.h"
@@ -131,151 +131,6 @@ public:
} // namespace dom
} // namespace mozilla
-/**
- * Right now our identifier map entries contain information for 'name'
- * and 'id' mappings of a given string. This is so that
- * nsHTMLDocument::ResolveName only has to do one hash lookup instead
- * of two. It's not clear whether this still matters for performance.
- *
- * We also store the document.all result list here. This is mainly so that
- * when all elements with the given ID are removed and we remove
- * the ID's nsIdentifierMapEntry, the document.all result is released too.
- * Perhaps the document.all results should have their own hashtable
- * in nsHTMLDocument.
- */
-class nsIdentifierMapEntry : public nsStringHashKey
-{
-public:
- typedef mozilla::dom::Element Element;
- typedef mozilla::net::ReferrerPolicy ReferrerPolicy;
-
- explicit nsIdentifierMapEntry(const nsAString& aKey) :
- nsStringHashKey(&aKey), mNameContentList(nullptr)
- {
- }
- explicit nsIdentifierMapEntry(const nsAString* aKey) :
- nsStringHashKey(aKey), mNameContentList(nullptr)
- {
- }
- nsIdentifierMapEntry(const nsIdentifierMapEntry& aOther) :
- nsStringHashKey(&aOther.GetKey())
- {
- NS_ERROR("Should never be called");
- }
- ~nsIdentifierMapEntry();
-
- void AddNameElement(nsINode* aDocument, Element* aElement);
- void RemoveNameElement(Element* aElement);
- bool IsEmpty();
- nsBaseContentList* GetNameContentList() {
- return mNameContentList;
- }
- bool HasNameElement() const {
- return mNameContentList && mNameContentList->Length() != 0;
- }
-
- /**
- * Returns the element if we know the element associated with this
- * id. Otherwise returns null.
- */
- Element* GetIdElement();
- /**
- * Returns the list of all elements associated with this id.
- */
- const nsTArray<Element*>& GetIdElements() const {
- return mIdContentList;
- }
- /**
- * If this entry has a non-null image element set (using SetImageElement),
- * the image element will be returned, otherwise the same as GetIdElement().
- */
- Element* GetImageIdElement();
- /**
- * Append all the elements with this id to aElements
- */
- void AppendAllIdContent(nsCOMArray<nsIContent>* aElements);
- /**
- * This can fire ID change callbacks.
- * @return true if the content could be added, false if we failed due
- * to OOM.
- */
- bool AddIdElement(Element* aElement);
- /**
- * This can fire ID change callbacks.
- */
- void RemoveIdElement(Element* aElement);
- /**
- * Set the image element override for this ID. This will be returned by
- * GetIdElement(true) if non-null.
- */
- void SetImageElement(Element* aElement);
- bool HasIdElementExposedAsHTMLDocumentProperty();
-
- bool HasContentChangeCallback() { return mChangeCallbacks != nullptr; }
- void AddContentChangeCallback(nsIDocument::IDTargetObserver aCallback,
- void* aData, bool aForImage);
- void RemoveContentChangeCallback(nsIDocument::IDTargetObserver aCallback,
- void* aData, bool aForImage);
-
- /**
- * Remove all elements and notify change listeners.
- */
- void ClearAndNotify();
-
- void Traverse(nsCycleCollectionTraversalCallback* aCallback);
-
- struct ChangeCallback {
- nsIDocument::IDTargetObserver mCallback;
- void* mData;
- bool mForImage;
- };
-
- struct ChangeCallbackEntry : public PLDHashEntryHdr {
- typedef const ChangeCallback KeyType;
- typedef const ChangeCallback* KeyTypePointer;
-
- explicit ChangeCallbackEntry(const ChangeCallback* aKey) :
- mKey(*aKey) { }
- ChangeCallbackEntry(const ChangeCallbackEntry& toCopy) :
- mKey(toCopy.mKey) { }
-
- KeyType GetKey() const { return mKey; }
- bool KeyEquals(KeyTypePointer aKey) const {
- return aKey->mCallback == mKey.mCallback &&
- aKey->mData == mKey.mData &&
- aKey->mForImage == mKey.mForImage;
- }
-
- static KeyTypePointer KeyToPointer(KeyType& aKey) { return &aKey; }
- static PLDHashNumber HashKey(KeyTypePointer aKey)
- {
- return mozilla::HashGeneric(aKey->mCallback, aKey->mData);
- }
- enum { ALLOW_MEMMOVE = true };
-
- ChangeCallback mKey;
- };
-
- size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
-
-private:
- void FireChangeCallbacks(Element* aOldElement, Element* aNewElement,
- bool aImageOnly = false);
-
- // empty if there are no elements with this ID.
- // The elements are stored as weak pointers.
- nsTArray<Element*> mIdContentList;
- RefPtr<nsBaseContentList> mNameContentList;
- nsAutoPtr<nsTHashtable<ChangeCallbackEntry> > mChangeCallbacks;
- RefPtr<Element> mImageElement;
-};
-
-namespace mozilla {
-namespace dom {
-
-} // namespace dom
-} // namespace mozilla
-
class nsDocHeaderData
{
public:
@@ -294,36 +149,6 @@ public:
nsDocHeaderData* mNext;
};
-class nsDOMStyleSheetList : public mozilla::dom::StyleSheetList,
- public nsStubDocumentObserver
-{
-public:
- explicit nsDOMStyleSheetList(nsIDocument* aDocument);
-
- NS_DECL_ISUPPORTS_INHERITED
-
- // nsIDocumentObserver
- NS_DECL_NSIDOCUMENTOBSERVER_STYLESHEETADDED
- NS_DECL_NSIDOCUMENTOBSERVER_STYLESHEETREMOVED
-
- // nsIMutationObserver
- NS_DECL_NSIMUTATIONOBSERVER_NODEWILLBEDESTROYED
-
- virtual nsINode* GetParentObject() const override
- {
- return mDocument;
- }
-
- uint32_t Length() override;
- mozilla::StyleSheet* IndexedGetter(uint32_t aIndex, bool& aFound) override;
-
-protected:
- virtual ~nsDOMStyleSheetList();
-
- int32_t mLength;
- nsIDocument* mDocument;
-};
-
class nsOnloadBlocker final : public nsIRequest
{
public:
@@ -508,7 +333,6 @@ class nsDocument : public nsIDocument,
public:
typedef mozilla::dom::Element Element;
- using nsIDocument::GetElementsByTagName;
typedef mozilla::net::ReferrerPolicy ReferrerPolicy;
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
@@ -609,6 +433,10 @@ public:
static bool IsElementAnimateEnabled(JSContext* aCx, JSObject* aObject);
static bool IsWebAnimationsEnabled(JSContext* aCx, JSObject* aObject);
+ static bool AreWebAnimationsImplicitKeyframesEnabled(JSContext* aCx, JSObject* aObject);
+ static bool AreWebAnimationsTimelinesEnabled(JSContext* aCx, JSObject* aObject);
+ static bool IsWebAnimationsGetAnimationsEnabled(JSContext* aCx, JSObject* aObject);
+
virtual mozilla::dom::DocumentTimeline* Timeline() override;
virtual void GetAnimations(
nsTArray<RefPtr<mozilla::dom::Animation>>& aAnimations) override;
@@ -625,14 +453,6 @@ public:
virtual void EnsureOnDemandBuiltInUASheet(mozilla::StyleSheet* aSheet) override;
- /**
- * Get the (document) style sheets owned by this document.
- * These are ordered, highest priority last
- */
- virtual int32_t GetNumberOfStyleSheets() const override;
- virtual mozilla::StyleSheet* GetStyleSheetAt(int32_t aIndex) const override;
- virtual int32_t GetIndexOfStyleSheet(
- const mozilla::StyleSheet* aSheet) const override;
virtual void AddStyleSheet(mozilla::StyleSheet* aSheet) override;
virtual void RemoveStyleSheet(mozilla::StyleSheet* aSheet) override;
@@ -643,7 +463,7 @@ public:
virtual void RemoveStyleSheetFromStyleSets(mozilla::StyleSheet* aSheet);
virtual void InsertStyleSheetAt(mozilla::StyleSheet* aSheet,
- int32_t aIndex) override;
+ size_t aIndex) override;
virtual void SetStyleSheetApplicableState(mozilla::StyleSheet* aSheet,
bool aApplicable) override;
@@ -794,7 +614,11 @@ public:
virtual void NotifyLayerManagerRecreated() override;
-
+ // Check whether web components are enabled for the global of aObject.
+ static bool IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject);
+ // Check whether web components are enabled for the document this node belongs
+ // to.
+ static bool IsWebComponentsEnabled(const nsINode* aNode);
private:
void AddOnDemandBuiltInUASheet(mozilla::StyleSheet* aSheet);
nsRadioGroupStruct* GetRadioGroupInternal(const nsAString& aName) const;
@@ -810,8 +634,13 @@ public:
// nsIDOMDocumentXBL
NS_DECL_NSIDOMDOCUMENTXBL
+ using mozilla::dom::DocumentOrShadowRoot::GetElementById;
+ using mozilla::dom::DocumentOrShadowRoot::GetElementsByTagName;
+ using mozilla::dom::DocumentOrShadowRoot::GetElementsByTagNameNS;
+ using mozilla::dom::DocumentOrShadowRoot::GetElementsByClassName;
+
// nsIDOMEventTarget
- virtual nsresult PreHandleEvent(
+ virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
virtual mozilla::EventListenerManager*
GetOrCreateListenerManager() override;
@@ -998,10 +827,7 @@ public:
virtual void ResetScrolledToRefAlready() override;
virtual void SetChangeScrollPosWhenScrollingToRef(bool aValue) override;
- virtual Element *GetElementById(const nsAString& aElementId) override;
- virtual const nsTArray<Element*>* GetAllElementsForId(const nsAString& aElementId) const override;
-
- virtual Element *LookupImageElement(const nsAString& aElementId) override;
+ virtual Element* LookupImageElement(const nsAString& aElementId) override;
virtual void MozSetImageElement(const nsAString& aImageElementId,
Element* aElement) override;
@@ -1130,12 +956,7 @@ public:
// WebIDL bits
virtual mozilla::dom::DOMImplementation*
GetImplementation(mozilla::ErrorResult& rv) override;
- virtual void
- RegisterElement(JSContext* aCx, const nsAString& aName,
- const mozilla::dom::ElementRegistrationOptions& aOptions,
- JS::MutableHandle<JSObject*> aRetval,
- mozilla::ErrorResult& rv) override;
- virtual mozilla::dom::StyleSheetList* StyleSheets() override;
+
virtual void SetSelectedStyleSheetSet(const nsAString& aSheetSet) override;
virtual void GetLastStyleSheetSet(nsString& aSheetSet) override;
virtual mozilla::dom::DOMStringList* StyleSheetSets() override;
@@ -1364,7 +1185,6 @@ protected:
// EndLoad() has already happened.
nsWeakPtr mWeakSink;
- nsTArray<RefPtr<mozilla::StyleSheet>> mStyleSheets;
nsTArray<RefPtr<mozilla::StyleSheet>> mOnDemandBuiltInUASheets;
nsTArray<RefPtr<mozilla::StyleSheet>> mAdditionalSheets[AdditionalSheetTypeCount];
@@ -1393,48 +1213,11 @@ protected:
// non-null when this document is in fullscreen mode.
nsWeakPtr mFullscreenRoot;
-private:
- static bool CustomElementConstructor(JSContext* aCx, unsigned aArgc, JS::Value* aVp);
-
- /**
- * Check if the passed custom element name, aOptions.mIs, is a registered
- * custom element type or not, then return the custom element name for future
- * usage.
- *
- * If there is no existing custom element definition for this name, throw a
- * NotFoundError.
- */
- const nsString* CheckCustomElementName(
- const mozilla::dom::ElementCreationOptions& aOptions,
- const nsAString& aLocalName,
- uint32_t aNamespaceID,
- ErrorResult& rv);
-
public:
- virtual already_AddRefed<mozilla::dom::CustomElementRegistry>
- GetCustomElementRegistry() override;
-
- // Check whether web components are enabled for the global of aObject.
- static bool IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject);
- // Check whether web components are enabled for the global of the document
- // this nodeinfo comes from.
- static bool IsWebComponentsEnabled(mozilla::dom::NodeInfo* aNodeInfo);
- // Check whether web components are enabled for the given window.
- static bool IsWebComponentsEnabled(nsPIDOMWindowInner* aWindow);
-
RefPtr<mozilla::EventListenerManager> mListenerManager;
- RefPtr<mozilla::dom::StyleSheetList> mDOMStyleSheets;
RefPtr<nsDOMStyleSheetSetList> mStyleSheetSetList;
RefPtr<mozilla::dom::ScriptLoader> mScriptLoader;
nsDocHeaderData* mHeaderData;
- /* mIdentifierMap works as follows for IDs:
- * 1) Attribute changes affect the table immediately (removing and adding
- * entries as needed).
- * 2) Removals from the DOM affect the table immediately
- * 3) Additions to the DOM always update existing entries for names, and add
- * new ones for IDs.
- */
- nsTHashtable<nsIdentifierMapEntry> mIdentifierMap;
nsClassHashtable<nsStringHashKey, nsRadioGroupStruct> mRadioGroups;
diff --git a/dom/base/nsDocumentEncoder.cpp b/dom/base/nsDocumentEncoder.cpp
index 34eb6ed38..55050f1ee 100644
--- a/dom/base/nsDocumentEncoder.cpp
+++ b/dom/base/nsDocumentEncoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -32,7 +31,6 @@
#include "nsIDOMDocument.h"
#include "nsGkAtoms.h"
#include "nsIContent.h"
-#include "nsIParserService.h"
#include "nsIScriptContext.h"
#include "nsIScriptGlobalObject.h"
#include "nsIScriptSecurityManager.h"
@@ -40,6 +38,7 @@
#include "nsISelectionPrivate.h"
#include "nsITransferable.h" // for kUnicodeMime
#include "nsContentUtils.h"
+#include "nsElementTable.h"
#include "nsNodeUtils.h"
#include "nsUnicharUtils.h"
#include "nsReadableUtils.h"
@@ -1588,10 +1587,13 @@ nsHTMLCopyEncoder::IncludeInContext(nsINode *aNode)
nsresult
nsHTMLCopyEncoder::PromoteRange(nsIDOMRange *inRange)
{
- if (!inRange) return NS_ERROR_NULL_POINTER;
+ RefPtr<nsRange> range = static_cast<nsRange*>(inRange);
+ if (!range) {
+ return NS_ERROR_NULL_POINTER;
+ }
nsresult rv;
nsCOMPtr<nsIDOMNode> startNode, endNode, common;
- int32_t startOffset, endOffset;
+ uint32_t startOffset, endOffset;
rv = inRange->GetCommonAncestorContainer(getter_AddRefs(common));
NS_ENSURE_SUCCESS(rv, rv);
@@ -1609,9 +1611,11 @@ nsHTMLCopyEncoder::PromoteRange(nsIDOMRange *inRange)
int32_t opStartOffset, opEndOffset;
// examine range endpoints.
- rv = GetPromotedPoint( kStart, startNode, startOffset, address_of(opStartNode), &opStartOffset, common);
+ rv = GetPromotedPoint(kStart, startNode, static_cast<int32_t>(startOffset),
+ address_of(opStartNode), &opStartOffset, common);
NS_ENSURE_SUCCESS(rv, rv);
- rv = GetPromotedPoint( kEnd, endNode, endOffset, address_of(opEndNode), &opEndOffset, common);
+ rv = GetPromotedPoint(kEnd, endNode, static_cast<int32_t>(endOffset),
+ address_of(opEndNode), &opEndOffset, common);
NS_ENSURE_SUCCESS(rv, rv);
// if both range endpoints are at the common ancestor, check for possible inclusion of ancestors
@@ -1623,9 +1627,9 @@ nsHTMLCopyEncoder::PromoteRange(nsIDOMRange *inRange)
}
// set the range to the new values
- rv = inRange->SetStart(opStartNode, opStartOffset);
+ rv = inRange->SetStart(opStartNode, static_cast<uint32_t>(opStartOffset));
NS_ENSURE_SUCCESS(rv, rv);
- rv = inRange->SetEnd(opEndNode, opEndOffset);
+ rv = inRange->SetEnd(opEndNode, static_cast<uint32_t>(opEndOffset));
return rv;
}
@@ -1736,9 +1740,6 @@ nsHTMLCopyEncoder::GetPromotedPoint(Endpoint aWhere, nsIDOMNode *aNode, int32_t
rv = GetNodeLocation(node, address_of(parent), &offset);
NS_ENSURE_SUCCESS(rv, rv);
if (offset == -1) return NS_OK; // we hit generated content; STOP
- nsIParserService *parserService = nsContentUtils::GetParserService();
- if (!parserService)
- return NS_ERROR_OUT_OF_MEMORY;
while ((IsFirstNode(node)) && (!IsRoot(parent)) && (parent != common))
{
if (bResetPromotion)
@@ -1746,11 +1747,8 @@ nsHTMLCopyEncoder::GetPromotedPoint(Endpoint aWhere, nsIDOMNode *aNode, int32_t
nsCOMPtr<nsIContent> content = do_QueryInterface(parent);
if (content && content->IsHTMLElement())
{
- bool isBlock = false;
- parserService->IsBlock(parserService->HTMLAtomTagToId(
- content->NodeInfo()->NameAtom()), isBlock);
- if (isBlock)
- {
+ if (nsHTMLElement::IsBlock(nsHTMLTags::AtomTagToId(
+ content->NodeInfo()->NameAtom()))) {
bResetPromotion = false;
}
}
@@ -1819,9 +1817,6 @@ nsHTMLCopyEncoder::GetPromotedPoint(Endpoint aWhere, nsIDOMNode *aNode, int32_t
rv = GetNodeLocation(node, address_of(parent), &offset);
NS_ENSURE_SUCCESS(rv, rv);
if (offset == -1) return NS_OK; // we hit generated content; STOP
- nsIParserService *parserService = nsContentUtils::GetParserService();
- if (!parserService)
- return NS_ERROR_OUT_OF_MEMORY;
while ((IsLastNode(node)) && (!IsRoot(parent)) && (parent != common))
{
if (bResetPromotion)
@@ -1829,11 +1824,8 @@ nsHTMLCopyEncoder::GetPromotedPoint(Endpoint aWhere, nsIDOMNode *aNode, int32_t
nsCOMPtr<nsIContent> content = do_QueryInterface(parent);
if (content && content->IsHTMLElement())
{
- bool isBlock = false;
- parserService->IsBlock(parserService->HTMLAtomTagToId(
- content->NodeInfo()->NameAtom()), isBlock);
- if (isBlock)
- {
+ if (nsHTMLElement::IsBlock(nsHTMLTags::AtomTagToId(
+ content->NodeInfo()->NameAtom()))) {
bResetPromotion = false;
}
}
diff --git a/dom/base/nsDocumentWarningList.h b/dom/base/nsDocumentWarningList.h
index 6572e6238..e054bcf8c 100644
--- a/dom/base/nsDocumentWarningList.h
+++ b/dom/base/nsDocumentWarningList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsFocusManager.cpp b/dom/base/nsFocusManager.cpp
index 01c1944be..637e3954e 100644
--- a/dom/base/nsFocusManager.cpp
+++ b/dom/base/nsFocusManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -813,10 +812,11 @@ nsFocusManager::ContentRemoved(nsIDocument* aDocument, nsIContent* aContent)
if (!window)
return NS_OK;
- // if the content is currently focused in the window, or is an ancestor
- // of the currently focused element, reset the focus within that window.
+ // if the content is currently focused in the window, or is an
+ // shadow-including inclusive ancestor of the currently focused element,
+ // reset the focus within that window.
nsIContent* content = window->GetFocusedNode();
- if (content && nsContentUtils::ContentIsDescendantOf(content, aContent)) {
+ if (content && nsContentUtils::ContentIsHostIncludingDescendantOf(content, aContent)) {
bool shouldShowFocusRing = window->ShouldShowFocusRing();
window->SetFocusedNode(nullptr);
@@ -2457,7 +2457,7 @@ nsFocusManager::GetSelectionLocation(nsIDocument* aDocument,
nsCOMPtr<nsIDOMNode> startNode, endNode;
bool isCollapsed = false;
nsCOMPtr<nsIContent> startContent, endContent;
- int32_t startOffset = 0;
+ uint32_t startOffset = 0;
if (domSelection) {
domSelection->GetIsCollapsed(&isCollapsed);
nsCOMPtr<nsIDOMRange> domRange;
@@ -2471,7 +2471,6 @@ nsFocusManager::GetSelectionLocation(nsIDocument* aDocument,
startContent = do_QueryInterface(startNode);
if (startContent && startContent->IsElement()) {
- NS_ASSERTION(startOffset >= 0, "Start offset cannot be negative");
childContent = startContent->GetChildAt(startOffset);
if (childContent) {
startContent = childContent;
@@ -2480,9 +2479,8 @@ nsFocusManager::GetSelectionLocation(nsIDocument* aDocument,
endContent = do_QueryInterface(endNode);
if (endContent && endContent->IsElement()) {
- int32_t endOffset = 0;
+ uint32_t endOffset = 0;
domRange->GetEndOffset(&endOffset);
- NS_ASSERTION(endOffset >= 0, "End offset cannot be negative");
childContent = endContent->GetChildAt(endOffset);
if (childContent) {
endContent = childContent;
@@ -2510,7 +2508,7 @@ nsFocusManager::GetSelectionLocation(nsIDocument* aDocument,
bool isFormControl =
startContent->IsNodeOfType(nsINode::eHTML_FORM_CONTROL);
- if (nodeValue.Length() == (uint32_t)startOffset && !isFormControl &&
+ if (nodeValue.Length() == startOffset && !isFormControl &&
startContent != aDocument->GetRootElement()) {
// Yes, indeed we were at the end of the last node
nsCOMPtr<nsIFrameEnumerator> frameTraversal;
diff --git a/dom/base/nsFocusManager.h b/dom/base/nsFocusManager.h
index 98deb3c0a..197ecc515 100644
--- a/dom/base/nsFocusManager.h
+++ b/dom/base/nsFocusManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsFrameLoader.cpp b/dom/base/nsFrameLoader.cpp
index 2804f2d4c..79c889596 100644
--- a/dom/base/nsFrameLoader.cpp
+++ b/dom/base/nsFrameLoader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -57,6 +56,7 @@
#include "nsGlobalWindow.h"
#include "nsPIWindowRoot.h"
#include "nsLayoutUtils.h"
+#include "nsMappedAttributes.h"
#include "nsView.h"
#include "GroupedSHistory.h"
#include "PartialSHistory.h"
@@ -936,6 +936,8 @@ nsFrameLoader::MarginsChanged(uint32_t aMarginWidth,
RefPtr<nsPresContext> presContext;
mDocShell->GetPresContext(getter_AddRefs(presContext));
if (presContext)
+ // rebuild, because now the same nsMappedAttributes* will produce
+ // a different style
presContext->RebuildAllStyleData(nsChangeHint(0), eRestyle_Subtree);
}
diff --git a/dom/base/nsFrameLoader.h b/dom/base/nsFrameLoader.h
index bbbd52f58..39fb5c188 100644
--- a/dom/base/nsFrameLoader.h
+++ b/dom/base/nsFrameLoader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsFrameMessageManager.cpp b/dom/base/nsFrameMessageManager.cpp
index 331931f19..4ceada5e1 100644
--- a/dom/base/nsFrameMessageManager.cpp
+++ b/dom/base/nsFrameMessageManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsFrameMessageManager.h b/dom/base/nsFrameMessageManager.h
index 077389a49..2998fe7e1 100644
--- a/dom/base/nsFrameMessageManager.h
+++ b/dom/base/nsFrameMessageManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsGenConImageContent.cpp b/dom/base/nsGenConImageContent.cpp
index e1b1f5a17..2ba62f87b 100644
--- a/dom/base/nsGenConImageContent.cpp
+++ b/dom/base/nsGenConImageContent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -46,7 +45,7 @@ public:
virtual void UnbindFromTree(bool aDeep, bool aNullParent) override;
virtual EventStates IntrinsicState() const override;
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override
+ virtual nsresult GetEventTargetParent(EventChainPreVisitor& aVisitor) override
{
MOZ_ASSERT(IsInNativeAnonymousSubtree());
if (aVisitor.mEvent->mMessage == eLoad ||
@@ -54,7 +53,7 @@ public:
// Don't propagate the events to the parent.
return NS_OK;
}
- return nsXMLElement::PreHandleEvent(aVisitor);
+ return nsXMLElement::GetEventTargetParent(aVisitor);
}
private:
diff --git a/dom/base/nsGenericDOMDataNode.cpp b/dom/base/nsGenericDOMDataNode.cpp
index 0ae15e09e..6aedebcc1 100644
--- a/dom/base/nsGenericDOMDataNode.cpp
+++ b/dom/base/nsGenericDOMDataNode.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -15,6 +14,7 @@
#include "mozilla/AsyncEventDispatcher.h"
#include "mozilla/MemoryReporting.h"
#include "mozilla/dom/Element.h"
+#include "mozilla/dom/HTMLSlotElement.h"
#include "mozilla/dom/ShadowRoot.h"
#include "nsIDocument.h"
#include "nsIDOMDocument.h"
@@ -736,21 +736,18 @@ nsGenericDOMDataNode::SetShadowRoot(ShadowRoot* aShadowRoot)
{
}
-nsTArray<nsIContent*>&
-nsGenericDOMDataNode::DestInsertionPoints()
+HTMLSlotElement*
+nsGenericDOMDataNode::GetAssignedSlot() const
{
- nsDataSlots *slots = DataSlots();
- return slots->mDestInsertionPoints;
+ nsDataSlots *slots = GetExistingDataSlots();
+ return slots ? slots->mAssignedSlot.get() : nullptr;
}
-nsTArray<nsIContent*>*
-nsGenericDOMDataNode::GetExistingDestInsertionPoints() const
+void
+nsGenericDOMDataNode::SetAssignedSlot(HTMLSlotElement* aSlot)
{
- nsDataSlots *slots = GetExistingDataSlots();
- if (slots) {
- return &slots->mDestInsertionPoints;
- }
- return nullptr;
+ nsDataSlots *slots = DataSlots();
+ slots->mAssignedSlot = aSlot;
}
nsXBLBinding *
@@ -793,17 +790,6 @@ nsGenericDOMDataNode::SetXBLInsertionParent(nsIContent* aContent)
}
}
-CustomElementData *
-nsGenericDOMDataNode::GetCustomElementData() const
-{
- return nullptr;
-}
-
-void
-nsGenericDOMDataNode::SetCustomElementData(CustomElementData* aData)
-{
-}
-
bool
nsGenericDOMDataNode::IsNodeOfType(uint32_t aFlags) const
{
@@ -854,6 +840,9 @@ nsGenericDOMDataNode::nsDataSlots::Traverse(nsCycleCollectionTraversalCallback &
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mContainingShadow");
cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mContainingShadow));
+
+ NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mAssignedSlot");
+ cb.NoteXPCOMChild(NS_ISUPPORTS_CAST(nsIContent*, mAssignedSlot.get()));
}
void
@@ -861,6 +850,7 @@ nsGenericDOMDataNode::nsDataSlots::Unlink()
{
mXBLInsertionParent = nullptr;
mContainingShadow = nullptr;
+ mAssignedSlot = nullptr;
}
//----------------------------------------------------------------------
diff --git a/dom/base/nsGenericDOMDataNode.h b/dom/base/nsGenericDOMDataNode.h
index 63aa64e74..c3e8ae474 100644
--- a/dom/base/nsGenericDOMDataNode.h
+++ b/dom/base/nsGenericDOMDataNode.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -26,6 +25,12 @@
class nsIDocument;
class nsIDOMText;
+namespace mozilla {
+namespace dom {
+class HTMLSlotElement;
+} // namespace dom
+} // namespace mozilla
+
#define DATA_NODE_FLAG_BIT(n_) NODE_FLAG_BIT(NODE_TYPE_SPECIFIC_BITS_OFFSET + (n_))
// Data node specific flags
@@ -154,17 +159,14 @@ public:
virtual void SetXBLBinding(nsXBLBinding* aBinding,
nsBindingManager* aOldBindingManager = nullptr) override;
virtual mozilla::dom::ShadowRoot *GetContainingShadow() const override;
- virtual nsTArray<nsIContent*> &DestInsertionPoints() override;
- virtual nsTArray<nsIContent*> *GetExistingDestInsertionPoints() const override;
virtual void SetShadowRoot(mozilla::dom::ShadowRoot* aShadowRoot) override;
+ virtual mozilla::dom::HTMLSlotElement* GetAssignedSlot() const override;
+ virtual void SetAssignedSlot(mozilla::dom::HTMLSlotElement* aSlot) override;
virtual nsIContent *GetXBLInsertionParent() const override;
virtual void SetXBLInsertionParent(nsIContent* aContent) override;
virtual bool IsNodeOfType(uint32_t aFlags) const override;
virtual bool IsLink(nsIURI** aURI) const override;
- virtual mozilla::dom::CustomElementData* GetCustomElementData() const override;
- virtual void SetCustomElementData(mozilla::dom::CustomElementData* aData) override;
-
NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) override;
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const;
virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute,
@@ -264,9 +266,9 @@ protected:
RefPtr<mozilla::dom::ShadowRoot> mContainingShadow;
/**
- * @see nsIContent::GetDestInsertionPoints
+ * @see nsIContent::GetAssignedSlot
*/
- nsTArray<nsIContent*> mDestInsertionPoints;
+ RefPtr<mozilla::dom::HTMLSlotElement> mAssignedSlot;
};
// Override from nsINode
diff --git a/dom/base/nsGkAtomList.h b/dom/base/nsGkAtomList.h
index 22869bd66..a1a0b15f9 100644
--- a/dom/base/nsGkAtomList.h
+++ b/dom/base/nsGkAtomList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -1561,11 +1560,11 @@ GK_ATOM(saturate, "saturate")
GK_ATOM(saturation, "saturation")
GK_ATOM(set, "set")
GK_ATOM(seed, "seed")
-GK_ATOM(shadow, "shadow")
GK_ATOM(shape_rendering, "shape-rendering")
GK_ATOM(skewX, "skewX")
GK_ATOM(skewY, "skewY")
GK_ATOM(slope, "slope")
+GK_ATOM(slot, "slot")
GK_ATOM(softLight, "soft-light")
GK_ATOM(spacing, "spacing")
GK_ATOM(spacingAndGlyphs, "spacingAndGlyphs")
@@ -2145,12 +2144,14 @@ GK_ATOM(ongamepaddisconnected, "ongamepaddisconnected")
#endif
// Content property names
+GK_ATOM(afterPseudoProperty, "afterPseudoProperty") // nsXMLElement*
GK_ATOM(animationsProperty, "AnimationsProperty") // FrameAnimations*
GK_ATOM(animationsOfBeforeProperty, "AnimationsOfBeforeProperty") // FrameAnimations*
GK_ATOM(animationsOfAfterProperty, "AnimationsOfAfterProperty") // FrameAnimations*
GK_ATOM(animationEffectsProperty, "AnimationEffectsProperty") // EffectSet*
GK_ATOM(animationEffectsForBeforeProperty, "AnimationsEffectsForBeforeProperty") // EffectSet*
GK_ATOM(animationEffectsForAfterProperty, "AnimationsEffectsForAfterProperty") // EffectSet*
+GK_ATOM(beforePseudoProperty, "beforePseudoProperty") // nsXMLElement*
GK_ATOM(cssPseudoElementBeforeProperty, "CSSPseudoElementBeforeProperty") // CSSPseudoElement*
GK_ATOM(cssPseudoElementAfterProperty, "CSSPseudoElementAfterProperty") // CSSPseudoElement*
GK_ATOM(transitionsProperty, "TransitionsProperty") // FrameTransitions*
@@ -2163,6 +2164,7 @@ GK_ATOM(lockedStyleStates, "lockedStyleStates")
GK_ATOM(apzCallbackTransform, "apzCallbackTransform")
GK_ATOM(restylableAnonymousNode, "restylableAnonymousNode")
GK_ATOM(paintRequestTime, "PaintRequestTime")
+GK_ATOM(pseudoProperty, "PseudoProperty") // CSSPseudoElementType
// Languages for lang-specific transforms
GK_ATOM(Japanese, "ja")
diff --git a/dom/base/nsGkAtoms.cpp b/dom/base/nsGkAtoms.cpp
index 24d4abddf..d2941d200 100644
--- a/dom/base/nsGkAtoms.cpp
+++ b/dom/base/nsGkAtoms.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsGkAtoms.h b/dom/base/nsGkAtoms.h
index 12f51b0cf..eb7ce488b 100644
--- a/dom/base/nsGkAtoms.h
+++ b/dom/base/nsGkAtoms.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsGlobalWindow.cpp b/dom/base/nsGlobalWindow.cpp
index 1c098897b..38a58f947 100644
--- a/dom/base/nsGlobalWindow.cpp
+++ b/dom/base/nsGlobalWindow.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -3577,9 +3576,10 @@ nsGlobalWindow::WillHandleEvent(EventChainPostVisitor& aVisitor)
}
nsresult
-nsGlobalWindow::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsGlobalWindow::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
- NS_PRECONDITION(IsInnerWindow(), "PreHandleEvent is used on outer window!?");
+ NS_PRECONDITION(IsInnerWindow(),
+ "GetEventTargetParent is used on outer window!?");
EventMessage msg = aVisitor.mEvent->mMessage;
aVisitor.mCanHandle = true;
@@ -3607,7 +3607,7 @@ nsGlobalWindow::PreHandleEvent(EventChainPreVisitor& aVisitor)
}
}
- aVisitor.mParentTarget = GetParentTarget();
+ aVisitor.SetParentTarget(GetParentTarget(), true);
// Handle 'active' event.
if (!mIdleObservers.IsEmpty() &&
@@ -3812,7 +3812,7 @@ nsGlobalWindow::PostHandleEvent(EventChainPostVisitor& aVisitor)
} else if (aVisitor.mEvent->mMessage == eLoad &&
aVisitor.mEvent->IsTrusted()) {
// This is page load event since load events don't propagate to |window|.
- // @see nsDocument::PreHandleEvent.
+ // @see nsDocument::GetEventTargetParent.
mIsDocumentLoaded = true;
nsCOMPtr<Element> element = GetOuterWindow()->GetFrameElementInternal();
@@ -4241,8 +4241,9 @@ CustomElementRegistry*
nsGlobalWindow::CustomElements()
{
MOZ_RELEASE_ASSERT(IsInnerWindow());
+
if (!mCustomElements) {
- mCustomElements = CustomElementRegistry::Create(AsInner());
+ mCustomElements = new CustomElementRegistry(AsInner());
}
return mCustomElements;
@@ -8263,7 +8264,7 @@ nsGlobalWindow::ScrollTo(const CSSIntPoint& aScroll,
scroll.y = maxpx;
}
- bool smoothScroll = sf->GetScrollbarStyles().IsSmoothScroll(aOptions.mBehavior);
+ bool smoothScroll = sf->GetScrollStyles().IsSmoothScroll(aOptions.mBehavior);
sf->ScrollToCSSPixels(scroll, smoothScroll
? nsIScrollableFrame::SMOOTH_MSD
@@ -8319,7 +8320,7 @@ nsGlobalWindow::ScrollByLines(int32_t numLines,
// It seems like it would make more sense for ScrollByLines to use
// SMOOTH mode, but tests seem to depend on the synchronous behaviour.
// Perhaps Web content does too.
- bool smoothScroll = sf->GetScrollbarStyles().IsSmoothScroll(aOptions.mBehavior);
+ bool smoothScroll = sf->GetScrollStyles().IsSmoothScroll(aOptions.mBehavior);
sf->ScrollBy(nsIntPoint(0, numLines), nsIScrollableFrame::LINES,
smoothScroll
@@ -8340,7 +8341,7 @@ nsGlobalWindow::ScrollByPages(int32_t numPages,
// It seems like it would make more sense for ScrollByPages to use
// SMOOTH mode, but tests seem to depend on the synchronous behaviour.
// Perhaps Web content does too.
- bool smoothScroll = sf->GetScrollbarStyles().IsSmoothScroll(aOptions.mBehavior);
+ bool smoothScroll = sf->GetScrollStyles().IsSmoothScroll(aOptions.mBehavior);
sf->ScrollBy(nsIntPoint(0, numPages), nsIScrollableFrame::PAGES,
smoothScroll
diff --git a/dom/base/nsGlobalWindow.h b/dom/base/nsGlobalWindow.h
index 5cfd3f056..de9b9f4d4 100644
--- a/dom/base/nsGlobalWindow.h
+++ b/dom/base/nsGlobalWindow.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsGlobalWindowCommands.cpp b/dom/base/nsGlobalWindowCommands.cpp
index 3ab2566b8..9e06a8a68 100644
--- a/dom/base/nsGlobalWindowCommands.cpp
+++ b/dom/base/nsGlobalWindowCommands.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsGlobalWindowCommands.h b/dom/base/nsGlobalWindowCommands.h
index 3508af8fb..aa7a35286 100644
--- a/dom/base/nsGlobalWindowCommands.h
+++ b/dom/base/nsGlobalWindowCommands.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsHTMLContentSerializer.cpp b/dom/base/nsHTMLContentSerializer.cpp
index c135c4cf8..f89b29cb1 100644
--- a/dom/base/nsHTMLContentSerializer.cpp
+++ b/dom/base/nsHTMLContentSerializer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -15,6 +14,7 @@
#include "nsIDOMElement.h"
#include "nsIContent.h"
#include "nsIDocument.h"
+#include "nsElementTable.h"
#include "nsNameSpaceManager.h"
#include "nsString.h"
#include "nsUnicharUtils.h"
@@ -347,20 +347,13 @@ nsHTMLContentSerializer::AppendElementEnd(Element* aElement,
}
if (ns == kNameSpaceID_XHTML) {
- nsIParserService* parserService = nsContentUtils::GetParserService();
-
- if (parserService) {
- bool isContainer;
-
- parserService->
- IsContainer(parserService->HTMLCaseSensitiveAtomTagToId(name),
- isContainer);
- if (!isContainer) {
- // Keep this in sync with the cleanup at the end of this method.
- MOZ_ASSERT(name != nsGkAtoms::body);
- MaybeLeaveFromPreContent(content);
- return NS_OK;
- }
+ bool isContainer =
+ nsHTMLElement::IsContainer(nsHTMLTags::CaseSensitiveAtomTagToId(name));
+ if (!isContainer) {
+ // Keep this in sync with the cleanup at the end of this method.
+ MOZ_ASSERT(name != nsGkAtoms::body);
+ MaybeLeaveFromPreContent(content);
+ return NS_OK;
}
}
diff --git a/dom/base/nsHTMLContentSerializer.h b/dom/base/nsHTMLContentSerializer.h
index 8e23d54ca..de63f7ee5 100644
--- a/dom/base/nsHTMLContentSerializer.h
+++ b/dom/base/nsHTMLContentSerializer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsHistory.cpp b/dom/base/nsHistory.cpp
index 3459df4b0..2e989676b 100644
--- a/dom/base/nsHistory.cpp
+++ b/dom/base/nsHistory.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsHistory.h b/dom/base/nsHistory.h
index be556934d..6cdda1e70 100644
--- a/dom/base/nsHistory.h
+++ b/dom/base/nsHistory.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsHostObjectProtocolHandler.cpp b/dom/base/nsHostObjectProtocolHandler.cpp
index f2fdfc530..1642c1cb1 100644
--- a/dom/base/nsHostObjectProtocolHandler.cpp
+++ b/dom/base/nsHostObjectProtocolHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsHostObjectProtocolHandler.h b/dom/base/nsHostObjectProtocolHandler.h
index 3df9fc004..0f9afa7b8 100644
--- a/dom/base/nsHostObjectProtocolHandler.h
+++ b/dom/base/nsHostObjectProtocolHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsHostObjectURI.cpp b/dom/base/nsHostObjectURI.cpp
index 0d505c0ef..2b10eed2e 100644
--- a/dom/base/nsHostObjectURI.cpp
+++ b/dom/base/nsHostObjectURI.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsHostObjectURI.h b/dom/base/nsHostObjectURI.h
index 8c1c9eadb..ec17db125 100644
--- a/dom/base/nsHostObjectURI.h
+++ b/dom/base/nsHostObjectURI.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIAnimationObserver.h b/dom/base/nsIAnimationObserver.h
index e39616b11..7a46628cb 100644
--- a/dom/base/nsIAnimationObserver.h
+++ b/dom/base/nsIAnimationObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIAttribute.h b/dom/base/nsIAttribute.h
index ee18d54f5..f9ab211a0 100644
--- a/dom/base/nsIAttribute.h
+++ b/dom/base/nsIAttribute.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIContent.h b/dom/base/nsIContent.h
index 405090865..4d7d76e25 100644
--- a/dom/base/nsIContent.h
+++ b/dom/base/nsIContent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -26,7 +25,7 @@ namespace mozilla {
class EventChainPreVisitor;
namespace dom {
class ShadowRoot;
-struct CustomElementData;
+class HTMLSlotElement;
} // namespace dom
namespace widget {
struct IMEState;
@@ -145,7 +144,14 @@ public:
* Skip native anonymous content created for placeholder of HTML input,
* used in conjunction with eAllChildren or eAllButXBL.
*/
- eSkipPlaceholderContent = 2
+ eSkipPlaceholderContent = 2,
+
+ /**
+ * Skip native anonymous content created by ancestor frames of the root
+ * element's primary frame, such as scrollbar elements created by the root
+ * scroll frame.
+ */
+ eSkipDocumentLevelNativeAnonymousContent = 4,
};
/**
@@ -187,7 +193,7 @@ public:
void SetIsNativeAnonymousRoot()
{
SetFlags(NODE_IS_ANONYMOUS_ROOT | NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE |
- NODE_IS_NATIVE_ANONYMOUS_ROOT);
+ NODE_IS_NATIVE_ANONYMOUS_ROOT | NODE_IS_NATIVE_ANONYMOUS);
}
/**
@@ -690,18 +696,35 @@ public:
virtual mozilla::dom::ShadowRoot *GetContainingShadow() const = 0;
/**
- * Gets an array of destination insertion points where this content
- * is distributed by web component distribution algorithms.
- * The array is created if it does not already exist.
+ * Gets the shadow host if this content is in a shadow tree. That is, the host
+ * of |GetContainingShadow|, if its not null.
+ *
+ * @return The shadow host, if this is in shadow tree, or null.
*/
- virtual nsTArray<nsIContent*> &DestInsertionPoints() = 0;
+ nsIContent* GetContainingShadowHost() const;
/**
- * Same as DestInsertionPoints except that this method will return
- * null if the array of destination insertion points does not already
- * exist.
+ * Gets the assigned slot associated with this content.
+ *
+ * @return The assigned slot element or null.
+ */
+ virtual mozilla::dom::HTMLSlotElement* GetAssignedSlot() const = 0;
+
+ /**
+ * Sets the assigned slot associated with this content.
+ *
+ * @param aSlot The assigned slot.
*/
- virtual nsTArray<nsIContent*> *GetExistingDestInsertionPoints() const = 0;
+ virtual void SetAssignedSlot(mozilla::dom::HTMLSlotElement* aSlot) = 0;
+
+ /**
+ * Gets the assigned slot associated with this content based on parent's
+ * shadow root mode. Returns null if parent's shadow root is "closed".
+ * https://dom.spec.whatwg.org/#dom-slotable-assignedslot
+ *
+ * @return The assigned slot element or null.
+ */
+ mozilla::dom::HTMLSlotElement* GetAssignedSlotByMode() const;
/**
* Gets the insertion parent element of the XBL binding.
@@ -724,26 +747,9 @@ public:
*/
inline nsIContent *GetFlattenedTreeParent() const;
- /**
- * Helper method, which we leave public so that it's accessible from nsINode.
- */
- nsINode *GetFlattenedTreeParentNodeInternal() const;
-
- /**
- * Gets the custom element data used by web components custom element.
- * Custom element data is created at the first attempt to enqueue a callback.
- *
- * @return The custom element data or null if none.
- */
- virtual mozilla::dom::CustomElementData *GetCustomElementData() const = 0;
-
- /**
- * Sets the custom element data, ownership of the
- * callback data is taken by this content.
- *
- * @param aCallbackData The custom element data.
- */
- virtual void SetCustomElementData(mozilla::dom::CustomElementData* aData) = 0;
+ // Helper method, which we leave public so that it's accessible from nsINode.
+ enum FlattenedParentType { eNotForStyle, eForStyle };
+ nsINode* GetFlattenedTreeParentNodeInternal(FlattenedParentType aType) const;
/**
* API to check if this is a link that's traversed in response to user input
@@ -961,10 +967,18 @@ public:
return false;
}
+ // Returns true if this element is native-anonymous scrollbar content.
+ bool IsNativeScrollbarContent() const {
+ return IsNativeAnonymous() &&
+ IsAnyOfXULElements(nsGkAtoms::scrollbar,
+ nsGkAtoms::resizer,
+ nsGkAtoms::scrollcorner);
+ }
+
// Overloaded from nsINode
virtual already_AddRefed<nsIURI> GetBaseURI(bool aTryUseXHRDocBaseURI = false) const override;
- virtual nsresult PreHandleEvent(
+ virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
virtual bool IsPurple() = 0;
@@ -978,6 +992,12 @@ protected:
*/
nsIAtom* DoGetID() const;
+ /**
+ * Returns the assigned slot, if it exists, or the direct parent, if it's a
+ * fallback content of a slot.
+ */
+ nsINode* GetFlattenedTreeParentForMaybeAssignedNode() const;
+
public:
#ifdef DEBUG
/**
@@ -1031,9 +1051,17 @@ inline nsIContent* nsINode::AsContent()
{ \
return aContent->_check ? static_cast<_class*>(aContent) : nullptr; \
} \
+ static const _class* FromContent(const nsIContent* aContent) \
+ { \
+ return aContent->_check ? static_cast<const _class*>(aContent) : nullptr; \
+ } \
static _class* FromContentOrNull(nsIContent* aContent) \
{ \
return aContent ? FromContent(aContent) : nullptr; \
+ } \
+ static const _class* FromContentOrNull(const nsIContent* aContent) \
+ { \
+ return aContent ? FromContent(aContent) : nullptr; \
}
#define NS_IMPL_FROMCONTENT(_class, _nsid) \
diff --git a/dom/base/nsIContentInlines.h b/dom/base/nsIContentInlines.h
index 368a0422b..1cb176431 100644
--- a/dom/base/nsIContentInlines.h
+++ b/dom/base/nsIContentInlines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -33,14 +32,15 @@ inline mozilla::dom::ShadowRoot* nsIContent::GetShadowRoot() const
return AsElement()->FastGetShadowRoot();
}
-inline nsINode* nsINode::GetFlattenedTreeParentNode() const
+template<nsIContent::FlattenedParentType Type>
+static inline nsINode*
+GetFlattenedTreeParentNode(const nsINode* aNode)
{
- nsINode* parent = GetParentNode();
-
+ nsINode* parent = aNode->GetParentNode();
// Try to short-circuit past the complicated and not-exactly-fast logic for
// computing the flattened parent.
//
- // There are three cases where we need might something other than parentNode:
+ // There are four cases where we need might something other than parentNode:
// (1) The node is an explicit child of an XBL-bound element, re-bound
// to an XBL insertion point.
// (2) The node is a top-level element in a shadow tree, whose flattened
@@ -48,18 +48,31 @@ inline nsINode* nsINode::GetFlattenedTreeParentNode() const
// is the shadow root).
// (3) The node is an explicit child of an element with a shadow root,
// re-bound to an insertion point.
- bool needSlowCall = HasFlag(NODE_MAY_BE_IN_BINDING_MNGR) ||
- IsInShadowTree() ||
- (parent && parent->IsContent() &&
- parent->AsContent()->GetShadowRoot());
+ // (4) We want the flattened parent for style, and the node is the root
+ // of a native anonymous content subtree parented to the document's
+ // root element.
+ bool needSlowCall = aNode->HasFlag(NODE_MAY_BE_IN_BINDING_MNGR) ||
+ aNode->IsInShadowTree() ||
+ (parent &&
+ parent->IsContent() &&
+ parent->AsContent()->GetShadowRoot()) ||
+ (Type == nsIContent::eForStyle &&
+ aNode->IsContent() &&
+ aNode->AsContent()->IsRootOfNativeAnonymousSubtree() &&
+ aNode->OwnerDoc()->GetRootElement() == parent);
if (MOZ_UNLIKELY(needSlowCall)) {
- MOZ_ASSERT(IsContent());
- return AsContent()->GetFlattenedTreeParentNodeInternal();
+ MOZ_ASSERT(aNode->IsContent());
+ return aNode->AsContent()->GetFlattenedTreeParentNodeInternal(Type);
}
-
return parent;
}
+inline nsINode*
+nsINode::GetFlattenedTreeParentNode() const
+{
+ return ::GetFlattenedTreeParentNode<nsIContent::eNotForStyle>(this);
+}
+
inline nsIContent*
nsIContent::GetFlattenedTreeParent() const
{
@@ -67,5 +80,16 @@ nsIContent::GetFlattenedTreeParent() const
return (parent && parent->IsContent()) ? parent->AsContent() : nullptr;
}
+inline nsINode*
+nsINode::GetFlattenedTreeParentNodeForStyle() const
+{
+ return ::GetFlattenedTreeParentNode<nsIContent::eForStyle>(this);
+}
+
+inline bool
+nsINode::NodeOrAncestorHasDirAuto() const
+{
+ return AncestorHasDirAuto() || (IsElement() && AsElement()->HasDirAuto());
+}
#endif // nsIContentInlines_h
diff --git a/dom/base/nsIContentIterator.h b/dom/base/nsIContentIterator.h
index 0c41ad485..eeedd3c71 100644
--- a/dom/base/nsIContentIterator.h
+++ b/dom/base/nsIContentIterator.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIContentPolicy.idl b/dom/base/nsIContentPolicy.idl
index 200b97fbc..870ed6f73 100644
--- a/dom/base/nsIContentPolicy.idl
+++ b/dom/base/nsIContentPolicy.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ft=cpp tw=78 sw=2 et ts=8 : */
/* 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/. */
diff --git a/dom/base/nsIContentPolicyBase.idl b/dom/base/nsIContentPolicyBase.idl
index 908e562a8..184257d11 100644
--- a/dom/base/nsIContentPolicyBase.idl
+++ b/dom/base/nsIContentPolicyBase.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ft=cpp tw=78 sw=2 et ts=8 : */
/* 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/. */
diff --git a/dom/base/nsIContentSerializer.h b/dom/base/nsIContentSerializer.h
index 35014bd2c..a5ae6979a 100644
--- a/dom/base/nsIContentSerializer.h
+++ b/dom/base/nsIContentSerializer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIDOMClassInfo.h b/dom/base/nsIDOMClassInfo.h
index 90c65c124..913680872 100644
--- a/dom/base/nsIDOMClassInfo.h
+++ b/dom/base/nsIDOMClassInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIDOMDOMCursor.idl b/dom/base/nsIDOMDOMCursor.idl
index ea8deb905..d76efad33 100644
--- a/dom/base/nsIDOMDOMCursor.idl
+++ b/dom/base/nsIDOMDOMCursor.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIDOMDOMRequest.idl b/dom/base/nsIDOMDOMRequest.idl
index d316db7db..ef7138821 100644
--- a/dom/base/nsIDOMDOMRequest.idl
+++ b/dom/base/nsIDOMDOMRequest.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIDocument.h b/dom/base/nsIDocument.h
index 760048501..fd393723c 100644
--- a/dom/base/nsIDocument.h
+++ b/dom/base/nsIDocument.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -34,6 +33,7 @@
#include "prclist.h"
#include "mozilla/UniquePtr.h"
#include "mozilla/CORSMode.h"
+#include "mozilla/dom/DocumentOrShadowRoot.h"
#include "mozilla/LinkedList.h"
#include "mozilla/StyleBackendType.h"
#include "mozilla/StyleSheet.h"
@@ -61,6 +61,7 @@ class nsFrameLoader;
class nsHTMLCSSStyleSheet;
class nsHTMLDocument;
class nsHTMLStyleSheet;
+class nsGenericHTMLElement;
class nsIAtom;
class nsIBFCacheEntry;
class nsIChannel;
@@ -131,7 +132,6 @@ class DOMIntersectionObserver;
class DOMStringList;
class Element;
struct ElementCreationOptions;
-struct ElementRegistrationOptions;
class Event;
class EventTarget;
class FontFaceSet;
@@ -197,7 +197,8 @@ class nsContentList;
// Document interface. This is implemented by all document objects in
// Gecko.
-class nsIDocument : public nsINode
+class nsIDocument : public nsINode,
+ public mozilla::dom::DocumentOrShadowRoot
{
typedef mozilla::dom::GlobalObject GlobalObject;
@@ -498,7 +499,7 @@ public:
* to remove it.
*/
typedef bool (* IDTargetObserver)(Element* aOldElement,
- Element* aNewelement, void* aData);
+ Element* aNewelement, void* aData);
/**
* Add an IDTargetObserver for a specific ID. The IDTargetObserver
@@ -1037,6 +1038,11 @@ public:
Element* GetHeadElement() {
return GetHtmlChildElement(nsGkAtoms::head);
}
+ // Get the "body" in the sense of document.body: The first <body> or
+ // <frameset> that's a child of a root <html>
+ nsGenericHTMLElement* GetBody();
+ // Set the "body" in the sense of document.body.
+ void SetBody(nsGenericHTMLElement* aBody, mozilla::ErrorResult& rv);
/**
* Accessors to the collection of stylesheets owned by this document.
@@ -1065,40 +1071,19 @@ public:
*/
virtual void EnsureOnDemandBuiltInUASheet(mozilla::StyleSheet* aSheet) = 0;
- /**
- * Get the number of (document) stylesheets
- *
- * @return the number of stylesheets
- * @throws no exceptions
- */
- virtual int32_t GetNumberOfStyleSheets() const = 0;
-
- /**
- * Get a particular stylesheet
- * @param aIndex the index the stylesheet lives at. This is zero-based
- * @return the stylesheet at aIndex. Null if aIndex is out of range.
- * @throws no exceptions
- */
- virtual mozilla::StyleSheet* GetStyleSheetAt(int32_t aIndex) const = 0;
+ mozilla::dom::StyleSheetList* StyleSheets()
+ {
+ return &DocumentOrShadowRoot::EnsureDOMStyleSheets();
+ }
/**
* Insert a sheet at a particular spot in the stylesheet list (zero-based)
* @param aSheet the sheet to insert
- * @param aIndex the index to insert at. This index will be
- * adjusted for the "special" sheets.
+ * @param aIndex the index to insert at.
* @throws no exceptions
*/
virtual void InsertStyleSheetAt(mozilla::StyleSheet* aSheet,
- int32_t aIndex) = 0;
-
- /**
- * Get the index of a particular stylesheet. This will _always_
- * consider the "special" sheets as part of the sheet list.
- * @param aSheet the sheet to get the index of
- * @return aIndex the index of the sheet in the full list
- */
- virtual int32_t GetIndexOfStyleSheet(
- const mozilla::StyleSheet* aSheet) const = 0;
+ size_t aIndex) = 0;
/**
* Replace the stylesheets in aOldSheets with the stylesheets in
@@ -1149,11 +1134,13 @@ public:
* sheets for this document, returns the index that aSheet should
* be inserted at to maintain document ordering.
*
+ * Type T has to cast to StyleSheet*.
+ *
* Defined in nsIDocumentInlines.h.
*/
template<typename T>
- size_t FindDocStyleSheetInsertionPoint(const nsTArray<RefPtr<T>>& aDocSheets,
- T* aSheet);
+ size_t FindDocStyleSheetInsertionPoint(const nsTArray<T>& aDocSheets,
+ const mozilla::StyleSheet& aSheet);
/**
* Get this document's CSSLoader. This is guaranteed to not return null.
@@ -2370,19 +2357,10 @@ public:
virtual void ResetScrolledToRefAlready() = 0;
virtual void SetChangeScrollPosWhenScrollingToRef(bool aValue) = 0;
- /**
- * This method is similar to GetElementById() from nsIDOMDocument but it
- * returns a mozilla::dom::Element instead of a nsIDOMElement.
- * It prevents converting nsIDOMElement to mozilla::dom::Element which is
- * already converted from mozilla::dom::Element.
- */
- virtual Element* GetElementById(const nsAString& aElementId) = 0;
-
- /**
- * This method returns _all_ the elements in this document which
- * have id aElementId, if there are any. Otherwise it returns null.
- */
- virtual const nsTArray<Element*>* GetAllElementsForId(const nsAString& aElementId) const = 0;
+ using mozilla::dom::DocumentOrShadowRoot::GetElementById;
+ using mozilla::dom::DocumentOrShadowRoot::GetElementsByTagName;
+ using mozilla::dom::DocumentOrShadowRoot::GetElementsByTagNameNS;
+ using mozilla::dom::DocumentOrShadowRoot::GetElementsByClassName;
/**
* Lookup an image element using its associated ID, which is usually provided
@@ -2574,34 +2552,14 @@ public:
}
enum ElementCallbackType {
- eCreated,
- eAttached,
- eDetached,
+ eConnected,
+ eDisconnected,
+ eAdopted,
eAttributeChanged
};
nsIDocument* GetTopLevelContentDocument();
- virtual void
- RegisterElement(JSContext* aCx, const nsAString& aName,
- const mozilla::dom::ElementRegistrationOptions& aOptions,
- JS::MutableHandle<JSObject*> aRetval,
- mozilla::ErrorResult& rv) = 0;
- virtual already_AddRefed<mozilla::dom::CustomElementRegistry>
- GetCustomElementRegistry() = 0;
-
- already_AddRefed<nsContentList>
- GetElementsByTagName(const nsAString& aTagName)
- {
- return NS_GetContentList(this, kNameSpaceID_Unknown, aTagName);
- }
- already_AddRefed<nsContentList>
- GetElementsByTagNameNS(const nsAString& aNamespaceURI,
- const nsAString& aLocalName,
- mozilla::ErrorResult& aResult);
- already_AddRefed<nsContentList>
- GetElementsByClassName(const nsAString& aClasses);
- // GetElementById defined above
virtual already_AddRefed<Element>
CreateElement(const nsAString& aTagName,
const mozilla::dom::ElementCreationOptionsOrString& aOptions,
@@ -2701,7 +2659,6 @@ public:
return mVisibilityState;
}
#endif
- virtual mozilla::dom::StyleSheetList* StyleSheets() = 0;
void GetSelectedStyleSheetSet(nsAString& aSheetSet);
virtual void SetSelectedStyleSheetSet(const nsAString& aSheetSet) = 0;
virtual void GetLastStyleSheetSet(nsString& aSheetSet) = 0;
@@ -2873,6 +2830,27 @@ public:
virtual void ScheduleIntersectionObserverNotification() = 0;
virtual void NotifyIntersectionObservers() = 0;
+ bool ShouldThrowOnDynamicMarkupInsertion()
+ {
+ return mThrowOnDynamicMarkupInsertionCounter;
+ }
+
+ void IncrementThrowOnDynamicMarkupInsertionCounter()
+ {
+ ++mThrowOnDynamicMarkupInsertionCounter;
+ }
+
+ void DecrementThrowOnDynamicMarkupInsertionCounter()
+ {
+ MOZ_ASSERT(mThrowOnDynamicMarkupInsertionCounter);
+ --mThrowOnDynamicMarkupInsertionCounter;
+ }
+
+ bool IsWebComponentsEnabled() const
+ {
+ return mIsWebComponentsEnabled;
+ }
+
bool ModuleScriptsEnabled();
virtual void AddResizeObserver(mozilla::dom::ResizeObserver* aResizeObserver) = 0;
@@ -3022,6 +3000,9 @@ protected:
// container for per-context fonts (downloadable, SVG, etc.)
RefPtr<mozilla::dom::FontFaceSet> mFontFaceSet;
+ // True if dom.webcomponents.enabled pref is set when document is created.
+ bool mIsWebComponentsEnabled : 1;
+
// Compatibility mode
nsCompatibility mCompatMode;
@@ -3326,6 +3307,11 @@ protected:
uint32_t mBlockDOMContentLoaded;
+ // Used in conjunction with the create-an-element-for-the-token algorithm to
+ // prevent custom element constructors from being able to use document.open(),
+ // document.close(), and document.write() when they are invoked by the parser.
+ uint32_t mThrowOnDynamicMarkupInsertionCounter;
+
// Our live MediaQueryLists
PRCList mDOMMediaQueryLists;
@@ -3399,6 +3385,23 @@ private:
uint32_t mMicroTaskLevel;
};
+class MOZ_RAII AutoSetThrowOnDynamicMarkupInsertionCounter final {
+ public:
+ explicit AutoSetThrowOnDynamicMarkupInsertionCounter(
+ nsIDocument* aDocument)
+ : mDocument(aDocument)
+ {
+ mDocument->IncrementThrowOnDynamicMarkupInsertionCounter();
+ }
+
+ ~AutoSetThrowOnDynamicMarkupInsertionCounter() {
+ mDocument->DecrementThrowOnDynamicMarkupInsertionCounter();
+ }
+
+ private:
+ nsIDocument* mDocument;
+};
+
// XXX These belong somewhere else
nsresult
NS_NewHTMLDocument(nsIDocument** aInstancePtrResult, bool aLoadedAsData = false);
diff --git a/dom/base/nsIDocumentInlines.h b/dom/base/nsIDocumentInlines.h
index 4ba21dfe6..1afc9044f 100644
--- a/dom/base/nsIDocumentInlines.h
+++ b/dom/base/nsIDocumentInlines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -19,24 +18,23 @@ nsIDocument::GetBodyElement()
template<typename T>
size_t
nsIDocument::FindDocStyleSheetInsertionPoint(
- const nsTArray<RefPtr<T>>& aDocSheets,
- T* aSheet)
+ const nsTArray<T>& aDocSheets,
+ const mozilla::StyleSheet& aSheet)
{
nsStyleSheetService* sheetService = nsStyleSheetService::GetInstance();
// lowest index first
- int32_t newDocIndex = GetIndexOfStyleSheet(aSheet);
-
- int32_t count = aDocSheets.Length();
- int32_t index;
- for (index = 0; index < count; index++) {
- T* sheet = aDocSheets[index];
- int32_t sheetDocIndex = GetIndexOfStyleSheet(sheet);
+ int32_t newDocIndex = IndexOfSheet(aSheet);
+
+ size_t count = aDocSheets.Length();
+ size_t index = 0;
+ for (; index < count; index++) {
+ auto* sheet = static_cast<mozilla::StyleSheet*>(aDocSheets[index]);
+ MOZ_ASSERT(sheet);
+ int32_t sheetDocIndex = IndexOfSheet(*sheet);
if (sheetDocIndex > newDocIndex)
break;
- mozilla::StyleSheet* sheetHandle = sheet;
-
// If the sheet is not owned by the document it can be an author
// sheet registered at nsStyleSheetService or an additional author
// sheet on the document, which means the new
@@ -44,11 +42,11 @@ nsIDocument::FindDocStyleSheetInsertionPoint(
if (sheetDocIndex < 0) {
if (sheetService) {
auto& authorSheets = *sheetService->AuthorStyleSheets();
- if (authorSheets.IndexOf(sheetHandle) != authorSheets.NoIndex) {
+ if (authorSheets.IndexOf(sheet) != authorSheets.NoIndex) {
break;
}
}
- if (sheetHandle == GetFirstAdditionalAuthorSheet()) {
+ if (sheet == GetFirstAdditionalAuthorSheet()) {
break;
}
}
diff --git a/dom/base/nsIDocumentObserver.h b/dom/base/nsIDocumentObserver.h
index ba73dd8cd..5e301e181 100644
--- a/dom/base/nsIDocumentObserver.h
+++ b/dom/base/nsIDocumentObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIGlobalObject.cpp b/dom/base/nsIGlobalObject.cpp
index 6479c947b..892386508 100644
--- a/dom/base/nsIGlobalObject.cpp
+++ b/dom/base/nsIGlobalObject.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIGlobalObject.h b/dom/base/nsIGlobalObject.h
index f94e5c8d0..6dfae4fbe 100644
--- a/dom/base/nsIGlobalObject.h
+++ b/dom/base/nsIGlobalObject.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIMutationObserver.h b/dom/base/nsIMutationObserver.h
index d034dfd6a..e4109ccb1 100644
--- a/dom/base/nsIMutationObserver.h
+++ b/dom/base/nsIMutationObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsINode.cpp b/dom/base/nsINode.cpp
index 355bf0ebf..d5949fe94 100644
--- a/dom/base/nsINode.cpp
+++ b/dom/base/nsINode.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -1268,7 +1267,7 @@ nsINode::RemoveEventListener(const nsAString& aType,
NS_IMPL_REMOVE_SYSTEM_EVENT_LISTENER(nsINode)
nsresult
-nsINode::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsINode::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
// This is only here so that we can use the NS_DECL_NSIDOMTARGET macro
NS_ABORT();
@@ -1540,7 +1539,6 @@ nsINode::SetExplicitBaseURI(nsIURI* aURI)
{
nsresult rv = SetProperty(nsGkAtoms::baseURIProperty, aURI, ReleaseURI);
if (NS_SUCCEEDED(rv)) {
- SetHasExplicitBaseURI();
NS_ADDREF(aURI);
}
return rv;
@@ -3158,3 +3156,9 @@ nsINode::IsStyledByServo() const
return OwnerDoc()->IsStyledByServo();
}
#endif
+
+DocGroup*
+nsINode::GetDocGroup() const
+{
+ return OwnerDoc()->GetDocGroup();
+}
diff --git a/dom/base/nsINode.h b/dom/base/nsINode.h
index 43d44db60..1599a0094 100644
--- a/dom/base/nsINode.h
+++ b/dom/base/nsINode.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -72,6 +71,7 @@ inline bool IsSpaceCharacter(char aChar) {
class AccessibleNode;
struct BoxQuadOptions;
struct ConvertCoordinateOptions;
+class DocGroup;
class DOMPoint;
class DOMQuad;
class DOMRectReadOnly;
@@ -127,9 +127,28 @@ enum {
NODE_IS_EDITABLE = NODE_FLAG_BIT(7),
- // For all Element nodes, NODE_MAY_HAVE_CLASS is guaranteed to be set if the
- // node in fact has a class, but may be set even if it doesn't.
- NODE_MAY_HAVE_CLASS = NODE_FLAG_BIT(8),
+ // This node was created by layout as native anonymous content. This
+ // generally corresponds to things created by nsIAnonymousContentCreator,
+ // though there are exceptions (svg:use content does not have this flag
+ // set, and any non-nsIAnonymousContentCreator callers of
+ // SetIsNativeAnonymousRoot also get this flag).
+ //
+ // One very important aspect here is that this node is not transitive over
+ // the subtree (if you want that, use NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE).
+ // If Gecko code somewhere attaches children to a node with this bit set,
+ // the children will not have the bit themselves unless the calling code sets
+ // it explicitly. This means that XBL content bound to NAC doesn't get this
+ // bit, nor do nodes inserted by editor.
+ //
+ // For now, this bit exists primarily to control style inheritance behavior,
+ // since the nodes for which we set it are often used to implement pseudo-
+ // elements, which need to inherit style from a script-visible element.
+ //
+ // A more general principle for this bit might be this: If the node is entirely
+ // a detail of layout, is not script-observable in any way, and other engines
+ // might accomplish the same task with a nodeless layout frame, then the node
+ // should have this bit set.
+ NODE_IS_NATIVE_ANONYMOUS = NODE_FLAG_BIT(8),
// Whether the node participates in a shadow tree.
NODE_IS_IN_SHADOW_TREE = NODE_FLAG_BIT(9),
@@ -281,6 +300,7 @@ class nsINode : public mozilla::dom::EventTarget
public:
typedef mozilla::dom::BoxQuadOptions BoxQuadOptions;
typedef mozilla::dom::ConvertCoordinateOptions ConvertCoordinateOptions;
+ typedef mozilla::dom::DocGroup DocGroup;
typedef mozilla::dom::DOMPoint DOMPoint;
typedef mozilla::dom::DOMPointInit DOMPointInit;
typedef mozilla::dom::DOMQuad DOMQuad;
@@ -390,6 +410,12 @@ public:
*/
virtual bool IsNodeOfType(uint32_t aFlags) const = 0;
+ bool
+ IsSlotable() const
+ {
+ return IsElement() || IsNodeOfType(eTEXT);
+ }
+
virtual JSObject* WrapObject(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
/**
@@ -590,6 +616,11 @@ public:
}
/**
+ * Returns the DocGroup of the "node document" of this node.
+ */
+ DocGroup* GetDocGroup() const;
+
+ /**
* Print a debugger friendly descriptor of this element. This will describe
* the position of this element in the document.
*/
@@ -922,6 +953,14 @@ public:
inline nsINode* GetFlattenedTreeParentNode() const;
/**
+ * Like GetFlattenedTreeParentNode, but returns null for any native
+ * anonymous content that was generated for ancestor frames of the
+ * root element's primary frame, such as scrollbar elements created
+ * by the root scroll frame.
+ */
+ inline nsINode* GetFlattenedTreeParentNodeForStyle() const;
+
+ /**
* Get the parent nsINode for this node if it is an Element.
* @return the parent node
*/
@@ -1206,6 +1245,15 @@ public:
}
/**
+ * Returns true if |this| is native anonymous (i.e. created by
+ * nsIAnonymousContentCreator);
+ */
+ bool IsNativeAnonymous() const
+ {
+ return HasFlag(NODE_IS_NATIVE_ANONYMOUS);
+ }
+
+ /**
* Returns true if |this| or any of its ancestors is native anonymous.
*/
bool IsInNativeAnonymousSubtree() const
@@ -1337,10 +1385,11 @@ public:
protected:
nsIURI* GetExplicitBaseURI() const {
- if (HasExplicitBaseURI()) {
- return static_cast<nsIURI*>(GetProperty(nsGkAtoms::baseURIProperty));
+ if (!HasProperties()) {
+ return nullptr;
}
- return nullptr;
+
+ return static_cast<nsIURI*>(GetProperty(nsGkAtoms::baseURIProperty));
}
public:
@@ -1543,6 +1592,8 @@ private:
// cases lie for nsXMLElement, such as when the node has been moved between
// documents with different id mappings.
ElementHasID,
+ // Set if the element might have a class.
+ ElementMayHaveClass,
// Set if the element might have inline style.
ElementMayHaveStyle,
// Set if the element has a name attribute set.
@@ -1561,8 +1612,6 @@ private:
// Maybe set if the node is a root of a subtree
// which needs to be kept in the purple buffer.
NodeIsPurpleRoot,
- // Set if the node has an explicit base URI stored
- NodeHasExplicitBaseURI,
// Set if the element has some style states locked
ElementHasLockedStyleStates,
// Set if element has pointer locked
@@ -1573,10 +1622,11 @@ private:
NodeIsContent,
// Set if the node has animations or transitions
ElementHasAnimations,
- // Set if node has a dir attribute with a valid value (ltr, rtl, or auto)
+ // Set if node has a dir attribute with a valid value (ltr, rtl, or auto).
+ // Note that we cannot compute this from the dir attribute event state
+ // flags, because we can't use those to distinguish
+ // <bdi dir="some-invalid-value"> and <bdi dir="auto">.
NodeHasValidDirAttribute,
- // Set if node has a dir attribute with a fixed value (ltr or rtl, NOT auto)
- NodeHasFixedDir,
// Set if the node has dir=auto and has a property pointing to the text
// node that determines its direction
NodeHasDirAutoSet,
@@ -1584,8 +1634,6 @@ private:
// and has a TextNodeDirectionalityMap property listing the elements whose
// direction it determines.
NodeHasTextNodeDirectionalityMap,
- // Set if the node has dir=auto.
- NodeHasDirAuto,
// Set if a node in the node's parent chain has dir=auto.
NodeAncestorHasDirAuto,
// Set if the element is in the scope of a scoped style sheet; this flag is
@@ -1639,6 +1687,8 @@ public:
{ SetBoolFlag(NodeHasRenderingObservers, aValue); }
bool IsContent() const { return GetBoolFlag(NodeIsContent); }
bool HasID() const { return GetBoolFlag(ElementHasID); }
+ bool MayHaveClass() const { return GetBoolFlag(ElementMayHaveClass); }
+ void SetMayHaveClass() { SetBoolFlag(ElementMayHaveClass); }
bool MayHaveStyle() const { return GetBoolFlag(ElementMayHaveStyle); }
bool HasName() const { return GetBoolFlag(ElementHasName); }
bool MayHaveContentEditableAttr() const
@@ -1678,17 +1728,6 @@ public:
void SetHasValidDir() { SetBoolFlag(NodeHasValidDirAttribute); }
void ClearHasValidDir() { ClearBoolFlag(NodeHasValidDirAttribute); }
bool HasValidDir() const { return GetBoolFlag(NodeHasValidDirAttribute); }
- void SetHasFixedDir() {
- MOZ_ASSERT(NodeType() != nsIDOMNode::TEXT_NODE,
- "SetHasFixedDir on text node");
- SetBoolFlag(NodeHasFixedDir);
- }
- void ClearHasFixedDir() {
- MOZ_ASSERT(NodeType() != nsIDOMNode::TEXT_NODE,
- "ClearHasFixedDir on text node");
- ClearBoolFlag(NodeHasFixedDir);
- }
- bool HasFixedDir() const { return GetBoolFlag(NodeHasFixedDir); }
void SetHasDirAutoSet() {
MOZ_ASSERT(NodeType() != nsIDOMNode::TEXT_NODE,
"SetHasDirAutoSet on text node");
@@ -1717,16 +1756,12 @@ public:
return GetBoolFlag(NodeHasTextNodeDirectionalityMap);
}
- void SetHasDirAuto() { SetBoolFlag(NodeHasDirAuto); }
- void ClearHasDirAuto() { ClearBoolFlag(NodeHasDirAuto); }
- bool HasDirAuto() const { return GetBoolFlag(NodeHasDirAuto); }
-
void SetAncestorHasDirAuto() { SetBoolFlag(NodeAncestorHasDirAuto); }
void ClearAncestorHasDirAuto() { ClearBoolFlag(NodeAncestorHasDirAuto); }
bool AncestorHasDirAuto() const { return GetBoolFlag(NodeAncestorHasDirAuto); }
- bool NodeOrAncestorHasDirAuto() const
- { return HasDirAuto() || AncestorHasDirAuto(); }
+ // Implemented in nsIContentInlines.h.
+ inline bool NodeOrAncestorHasDirAuto() const;
void SetIsElementInStyleScope(bool aValue) {
MOZ_ASSERT(IsElement(), "SetIsInStyleScope on a non-Element node");
@@ -1768,8 +1803,6 @@ protected:
void ClearHasName() { ClearBoolFlag(ElementHasName); }
void SetMayHaveContentEditableAttr()
{ SetBoolFlag(ElementMayHaveContentEditableAttr); }
- bool HasExplicitBaseURI() const { return GetBoolFlag(NodeHasExplicitBaseURI); }
- void SetHasExplicitBaseURI() { SetBoolFlag(NodeHasExplicitBaseURI); }
void SetHasLockedStyleStates() { SetBoolFlag(ElementHasLockedStyleStates); }
void ClearHasLockedStyleStates() { ClearBoolFlag(ElementHasLockedStyleStates); }
bool HasLockedStyleStates() const
diff --git a/dom/base/nsINodeList.h b/dom/base/nsINodeList.h
index 15ca3a39a..9bb427e4f 100644
--- a/dom/base/nsINodeList.h
+++ b/dom/base/nsINodeList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIRemoteWindowContext.idl b/dom/base/nsIRemoteWindowContext.idl
index d85e166b0..11c9c7d37 100644
--- a/dom/base/nsIRemoteWindowContext.idl
+++ b/dom/base/nsIRemoteWindowContext.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et tw=80 : */
/* 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/. */
diff --git a/dom/base/nsIScriptContext.h b/dom/base/nsIScriptContext.h
index 8274e22f9..e5bb95796 100644
--- a/dom/base/nsIScriptContext.h
+++ b/dom/base/nsIScriptContext.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIScriptGlobalObject.h b/dom/base/nsIScriptGlobalObject.h
index 771912561..90016478f 100644
--- a/dom/base/nsIScriptGlobalObject.h
+++ b/dom/base/nsIScriptGlobalObject.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIScriptNameSpaceManager.h b/dom/base/nsIScriptNameSpaceManager.h
index 219816187..9e7a4c5af 100644
--- a/dom/base/nsIScriptNameSpaceManager.h
+++ b/dom/base/nsIScriptNameSpaceManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIScriptObjectPrincipal.h b/dom/base/nsIScriptObjectPrincipal.h
index c75ba7928..07bcd24c7 100644
--- a/dom/base/nsIScriptObjectPrincipal.h
+++ b/dom/base/nsIScriptObjectPrincipal.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIScriptTimeoutHandler.h b/dom/base/nsIScriptTimeoutHandler.h
index 722f68e78..9679f7047 100644
--- a/dom/base/nsIScriptTimeoutHandler.h
+++ b/dom/base/nsIScriptTimeoutHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsISimpleContentPolicy.idl b/dom/base/nsISimpleContentPolicy.idl
index dc0474736..1ea0049ef 100644
--- a/dom/base/nsISimpleContentPolicy.idl
+++ b/dom/base/nsISimpleContentPolicy.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ft=cpp tw=78 sw=2 et ts=8 : */
/* 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/. */
diff --git a/dom/base/nsISizeOfEventTarget.h b/dom/base/nsISizeOfEventTarget.h
index 718b5cac8..e1dad0322 100644
--- a/dom/base/nsISizeOfEventTarget.h
+++ b/dom/base/nsISizeOfEventTarget.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIStyleSheetLinkingElement.h b/dom/base/nsIStyleSheetLinkingElement.h
index 332683816..614005640 100644
--- a/dom/base/nsIStyleSheetLinkingElement.h
+++ b/dom/base/nsIStyleSheetLinkingElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsITimeoutHandler.h b/dom/base/nsITimeoutHandler.h
index 9f921dfb2..79d18075d 100644
--- a/dom/base/nsITimeoutHandler.h
+++ b/dom/base/nsITimeoutHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsIdentifierMapEntry.h b/dom/base/nsIdentifierMapEntry.h
new file mode 100644
index 000000000..a43a80c3b
--- /dev/null
+++ b/dom/base/nsIdentifierMapEntry.h
@@ -0,0 +1,235 @@
+/* -*- Mode: C++; tab-width: 8; 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/. */
+
+/*
+ * Base class for all our document implementations.
+ */
+
+#ifndef nsIdentifierMapEntry_h
+#define nsIdentifierMapEntry_h
+
+#include "PLDHashTable.h"
+
+#include "mozilla/MemoryReporting.h"
+#include "mozilla/Move.h"
+#include "mozilla/net/ReferrerPolicy.h"
+
+#include "nsCOMArray.h"
+#include "nsCOMPtr.h"
+#include "nsIAtom.h"
+#include "nsTArray.h"
+#include "nsTHashtable.h"
+#include "nsHashKeys.h"
+
+class nsIContent;
+class nsContentList;
+class nsBaseContentList;
+
+namespace mozilla {
+namespace dom {
+ class Element;
+} // namespace dom
+} // namespace mozilla
+
+/**
+ * Right now our identifier map entries contain information for 'name'
+ * and 'id' mappings of a given string. This is so that
+ * nsHTMLDocument::ResolveName only has to do one hash lookup instead
+ * of two. It's not clear whether this still matters for performance.
+ *
+ * We also store the document.all result list here. This is mainly so that
+ * when all elements with the given ID are removed and we remove
+ * the ID's nsIdentifierMapEntry, the document.all result is released too.
+ * Perhaps the document.all results should have their own hashtable
+ * in nsHTMLDocument.
+ */
+class nsIdentifierMapEntry : public PLDHashEntryHdr
+{
+ typedef mozilla::dom::Element Element;
+ typedef mozilla::net::ReferrerPolicy ReferrerPolicy;
+
+ /**
+ * @see nsIDocument::IDTargetObserver, this is just here to avoid include
+ * hell.
+ */
+ typedef bool (* IDTargetObserver)(Element* aOldElement,
+ Element* aNewelement, void* aData);
+
+public:
+ struct AtomOrString
+ {
+ MOZ_IMPLICIT AtomOrString(nsIAtom* aAtom) : mAtom(aAtom) {}
+ MOZ_IMPLICIT AtomOrString(const nsAString& aString) : mString(aString) {}
+ AtomOrString(const AtomOrString& aOther)
+ : mAtom(aOther.mAtom)
+ , mString(aOther.mString)
+ {
+ }
+
+ AtomOrString(AtomOrString&& aOther)
+ : mAtom(aOther.mAtom.forget())
+ , mString(aOther.mString)
+ {
+ }
+
+ nsCOMPtr<nsIAtom> mAtom;
+ const nsString mString;
+ };
+
+ typedef const AtomOrString& KeyType;
+ typedef const AtomOrString* KeyTypePointer;
+
+ explicit nsIdentifierMapEntry(const AtomOrString& aKey);
+ explicit nsIdentifierMapEntry(const AtomOrString* aKey);
+ nsIdentifierMapEntry(nsIdentifierMapEntry&& aOther);
+ ~nsIdentifierMapEntry();
+
+ KeyType GetKey() const { return mKey; }
+
+ nsString GetKeyAsString() const
+ {
+ if (mKey.mAtom) {
+ return nsAtomString(mKey.mAtom);
+ }
+
+ return mKey.mString;
+ }
+
+ bool KeyEquals(const KeyTypePointer aOtherKey) const
+ {
+ if (mKey.mAtom) {
+ if (aOtherKey->mAtom) {
+ return mKey.mAtom == aOtherKey->mAtom;
+ }
+
+ return mKey.mAtom->Equals(aOtherKey->mString);
+ }
+
+ if (aOtherKey->mAtom) {
+ return aOtherKey->mAtom->Equals(mKey.mString);
+ }
+
+ return mKey.mString.Equals(aOtherKey->mString);
+ }
+
+ static KeyTypePointer KeyToPointer(KeyType aKey) { return &aKey; }
+
+ static PLDHashNumber HashKey(const KeyTypePointer aKey)
+ {
+ return aKey->mAtom ?
+ aKey->mAtom->hash() : mozilla::HashString(aKey->mString);
+ }
+
+ enum { ALLOW_MEMMOVE = false };
+
+ void AddNameElement(nsINode* aDocument, Element* aElement);
+ void RemoveNameElement(Element* aElement);
+ bool IsEmpty();
+ nsBaseContentList* GetNameContentList() {
+ return mNameContentList;
+ }
+ bool HasNameElement() const;
+
+ /**
+ * Returns the element if we know the element associated with this
+ * id. Otherwise returns null.
+ */
+ Element* GetIdElement();
+ /**
+ * Returns the list of all elements associated with this id.
+ */
+ const nsTArray<Element*>& GetIdElements() const {
+ return mIdContentList;
+ }
+ /**
+ * If this entry has a non-null image element set (using SetImageElement),
+ * the image element will be returned, otherwise the same as GetIdElement().
+ */
+ Element* GetImageIdElement();
+ /**
+ * Append all the elements with this id to aElements
+ */
+ void AppendAllIdContent(nsCOMArray<nsIContent>* aElements);
+ /**
+ * This can fire ID change callbacks.
+ * @return true if the content could be added, false if we failed due
+ * to OOM.
+ */
+ bool AddIdElement(Element* aElement);
+ /**
+ * This can fire ID change callbacks.
+ */
+ void RemoveIdElement(Element* aElement);
+ /**
+ * Set the image element override for this ID. This will be returned by
+ * GetIdElement(true) if non-null.
+ */
+ void SetImageElement(Element* aElement);
+ bool HasIdElementExposedAsHTMLDocumentProperty();
+
+ bool HasContentChangeCallback() { return mChangeCallbacks != nullptr; }
+ void AddContentChangeCallback(IDTargetObserver aCallback,
+ void* aData, bool aForImage);
+ void RemoveContentChangeCallback(IDTargetObserver aCallback,
+ void* aData, bool aForImage);
+
+ /**
+ * Remove all elements and notify change listeners.
+ */
+ void ClearAndNotify();
+
+ void Traverse(nsCycleCollectionTraversalCallback* aCallback);
+
+ struct ChangeCallback {
+ IDTargetObserver mCallback;
+ void* mData;
+ bool mForImage;
+ };
+
+ struct ChangeCallbackEntry : public PLDHashEntryHdr {
+ typedef const ChangeCallback KeyType;
+ typedef const ChangeCallback* KeyTypePointer;
+
+ explicit ChangeCallbackEntry(const ChangeCallback* aKey) :
+ mKey(*aKey) { }
+ ChangeCallbackEntry(const ChangeCallbackEntry& toCopy) :
+ mKey(toCopy.mKey) { }
+
+ KeyType GetKey() const { return mKey; }
+ bool KeyEquals(KeyTypePointer aKey) const {
+ return aKey->mCallback == mKey.mCallback &&
+ aKey->mData == mKey.mData &&
+ aKey->mForImage == mKey.mForImage;
+ }
+
+ static KeyTypePointer KeyToPointer(KeyType& aKey) { return &aKey; }
+ static PLDHashNumber HashKey(KeyTypePointer aKey)
+ {
+ return mozilla::HashGeneric(aKey->mCallback, aKey->mData);
+ }
+ enum { ALLOW_MEMMOVE = true };
+
+ ChangeCallback mKey;
+ };
+
+ size_t SizeOfExcludingThis(mozilla::MallocSizeOf aMallocSizeOf) const;
+
+private:
+ nsIdentifierMapEntry(const nsIdentifierMapEntry& aOther) = delete;
+ nsIdentifierMapEntry& operator=(const nsIdentifierMapEntry& aOther) = delete;
+
+ void FireChangeCallbacks(Element* aOldElement, Element* aNewElement,
+ bool aImageOnly = false);
+
+ AtomOrString mKey;
+ // empty if there are no elements with this ID.
+ // The elements are stored as weak pointers.
+ AutoTArray<Element*, 1> mIdContentList;
+ RefPtr<nsBaseContentList> mNameContentList;
+ nsAutoPtr<nsTHashtable<ChangeCallbackEntry> > mChangeCallbacks;
+ RefPtr<Element> mImageElement;
+};
+
+#endif // #ifndef nsIdentifierMapEntry_h
diff --git a/dom/base/nsImageLoadingContent.cpp b/dom/base/nsImageLoadingContent.cpp
index 07bdb6967..1226ef22e 100644
--- a/dom/base/nsImageLoadingContent.cpp
+++ b/dom/base/nsImageLoadingContent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsImageLoadingContent.h b/dom/base/nsImageLoadingContent.h
index cfb2a6207..b97bede0d 100644
--- a/dom/base/nsImageLoadingContent.h
+++ b/dom/base/nsImageLoadingContent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsInProcessTabChildGlobal.cpp b/dom/base/nsInProcessTabChildGlobal.cpp
index 2e129f9f0..8d94e4ead 100644
--- a/dom/base/nsInProcessTabChildGlobal.cpp
+++ b/dom/base/nsInProcessTabChildGlobal.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -97,7 +96,7 @@ nsInProcessTabChildGlobal::nsInProcessTabChildGlobal(nsIDocShell* aShell,
mozilla::HoldJSObjects(this);
// If owner corresponds to an <iframe mozbrowser> or <iframe mozapp>, we'll
- // have to tweak our PreHandleEvent implementation.
+ // GetEventTargetParent implementation.
nsCOMPtr<nsIMozBrowserFrame> browserFrame = do_QueryInterface(mOwner);
if (browserFrame) {
mIsBrowserOrAppFrame = browserFrame->GetReallyIsBrowserOrApp();
@@ -251,7 +250,7 @@ nsInProcessTabChildGlobal::GetOwnerContent()
}
nsresult
-nsInProcessTabChildGlobal::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsInProcessTabChildGlobal::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mForceContentDispatch = true;
aVisitor.mCanHandle = true;
@@ -270,7 +269,7 @@ nsInProcessTabChildGlobal::PreHandleEvent(EventChainPreVisitor& aVisitor)
#endif
if (mPreventEventsEscaping) {
- aVisitor.mParentTarget = nullptr;
+ aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
}
@@ -278,11 +277,13 @@ nsInProcessTabChildGlobal::PreHandleEvent(EventChainPreVisitor& aVisitor)
(!mOwner || !nsContentUtils::IsInChromeDocshell(mOwner->OwnerDoc()))) {
if (mOwner) {
if (nsPIDOMWindowInner* innerWindow = mOwner->OwnerDoc()->GetInnerWindow()) {
- aVisitor.mParentTarget = innerWindow->GetParentTarget();
+ // 'this' is already a "chrome handler", so we consider window's
+ // parent target to be part of that same part of the event path.
+ aVisitor.SetParentTarget(innerWindow->GetParentTarget(), false);
}
}
} else {
- aVisitor.mParentTarget = mOwner;
+ aVisitor.SetParentTarget(mOwner, false);
}
return NS_OK;
diff --git a/dom/base/nsInProcessTabChildGlobal.h b/dom/base/nsInProcessTabChildGlobal.h
index e7dd9cb5a..25193d9c8 100644
--- a/dom/base/nsInProcessTabChildGlobal.h
+++ b/dom/base/nsInProcessTabChildGlobal.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -96,7 +95,7 @@ public:
JS::Handle<JSObject *> aCpows,
nsIPrincipal* aPrincipal) override;
- virtual nsresult PreHandleEvent(
+ virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
NS_IMETHOD AddEventListener(const nsAString& aType,
nsIDOMEventListener* aListener,
@@ -168,7 +167,7 @@ protected:
// Is this the message manager for an in-process <iframe mozbrowser> or
// <iframe mozapp>? This affects where events get sent, so it affects
- // PreHandleEvent.
+ // GetEventTargetParent.
bool mIsBrowserOrAppFrame;
bool mPreventEventsEscaping;
diff --git a/dom/base/nsJSEnvironment.cpp b/dom/base/nsJSEnvironment.cpp
index 0411bee80..5382f4494 100644
--- a/dom/base/nsJSEnvironment.cpp
+++ b/dom/base/nsJSEnvironment.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsJSEnvironment.h b/dom/base/nsJSEnvironment.h
index c1a9baf52..0124f726d 100644
--- a/dom/base/nsJSEnvironment.h
+++ b/dom/base/nsJSEnvironment.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsJSTimeoutHandler.cpp b/dom/base/nsJSTimeoutHandler.cpp
index ce5d58385..a370fe03f 100644
--- a/dom/base/nsJSTimeoutHandler.cpp
+++ b/dom/base/nsJSTimeoutHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsJSUtils.cpp b/dom/base/nsJSUtils.cpp
index bc8253930..1b667326b 100644
--- a/dom/base/nsJSUtils.cpp
+++ b/dom/base/nsJSUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -25,7 +24,7 @@
#include "xpcpublic.h"
#include "nsContentUtils.h"
#include "nsGlobalWindow.h"
-
+#include "mozilla/CycleCollectedJSContext.h"
#include "mozilla/dom/BindingUtils.h"
#include "mozilla/dom/Date.h"
#include "mozilla/dom/Element.h"
@@ -160,7 +159,8 @@ nsJSUtils::EvaluateString(JSContext* aCx,
aEvaluationGlobal);
MOZ_ASSERT_IF(aOffThreadToken, aCompileOptions.noScriptRval);
MOZ_ASSERT(NS_IsMainThread());
- MOZ_ASSERT(nsContentUtils::IsInMicroTask());
+ MOZ_ASSERT(CycleCollectedJSContext::Get() &&
+ CycleCollectedJSContext::Get()->MicroTaskLevel());
// Unfortunately, the JS engine actually compiles scripts with a return value
// in a different, less efficient way. Furthermore, it can't JIT them in many
@@ -294,7 +294,8 @@ nsJSUtils::CompileModule(JSContext* aCx,
aEvaluationGlobal);
MOZ_ASSERT(JS::CurrentGlobalOrNull(aCx) == aEvaluationGlobal);
MOZ_ASSERT(NS_IsMainThread());
- MOZ_ASSERT(nsContentUtils::IsInMicroTask());
+ MOZ_ASSERT(CycleCollectedJSContext::Get() &&
+ CycleCollectedJSContext::Get()->MicroTaskLevel());
NS_ENSURE_TRUE(xpc::Scriptability::Get(aEvaluationGlobal).Allowed(), NS_OK);
@@ -334,7 +335,8 @@ nsJSUtils::ModuleEvaluate(JSContext* aCx, JS::Handle<JSObject*> aModule)
MOZ_ASSERT(aCx == nsContentUtils::GetCurrentJSContext());
MOZ_ASSERT(NS_IsMainThread());
- MOZ_ASSERT(nsContentUtils::IsInMicroTask());
+ MOZ_ASSERT(CycleCollectedJSContext::Get() &&
+ CycleCollectedJSContext::Get()->MicroTaskLevel());
NS_ENSURE_TRUE(xpc::Scriptability::Get(aModule).Allowed(), NS_OK);
diff --git a/dom/base/nsJSUtils.h b/dom/base/nsJSUtils.h
index 9eea6ae83..cb80ef452 100644
--- a/dom/base/nsJSUtils.h
+++ b/dom/base/nsJSUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsLineBreaker.cpp b/dom/base/nsLineBreaker.cpp
index d68336b71..02fb97b40 100644
--- a/dom/base/nsLineBreaker.cpp
+++ b/dom/base/nsLineBreaker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsLineBreaker.h b/dom/base/nsLineBreaker.h
index 81c4c334e..be298f114 100644
--- a/dom/base/nsLineBreaker.h
+++ b/dom/base/nsLineBreaker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsMappedAttributeElement.cpp b/dom/base/nsMappedAttributeElement.cpp
index 1c1f8838f..e9cd95e00 100644
--- a/dom/base/nsMappedAttributeElement.cpp
+++ b/dom/base/nsMappedAttributeElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -15,17 +14,19 @@ nsMappedAttributeElement::WalkContentStyleRules(nsRuleWalker* aRuleWalker)
}
bool
-nsMappedAttributeElement::SetMappedAttribute(nsIDocument* aDocument,
- nsIAtom* aName,
- nsAttrValue& aValue,
- nsresult* aRetval)
+nsMappedAttributeElement::SetAndSwapMappedAttribute(nsIDocument* aDocument,
+ nsIAtom* aName,
+ nsAttrValue& aValue,
+ bool* aValueWasSet,
+ nsresult* aRetval)
+
{
NS_PRECONDITION(aDocument == GetComposedDoc(), "Unexpected document");
nsHTMLStyleSheet* sheet = aDocument ?
aDocument->GetAttributeStyleSheet() : nullptr;
- *aRetval = mAttrsAndChildren.SetAndTakeMappedAttr(aName, aValue,
- this, sheet);
+ *aRetval = mAttrsAndChildren.SetAndSwapMappedAttr(aName, aValue,
+ this, sheet, aValueWasSet);
return true;
}
diff --git a/dom/base/nsMappedAttributeElement.h b/dom/base/nsMappedAttributeElement.h
index 4668b36a1..3ab115dd0 100644
--- a/dom/base/nsMappedAttributeElement.h
+++ b/dom/base/nsMappedAttributeElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -39,10 +38,11 @@ public:
nsRuleData* aRuleData);
NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) override;
- virtual bool SetMappedAttribute(nsIDocument* aDocument,
- nsIAtom* aName,
- nsAttrValue& aValue,
- nsresult* aRetval) override;
+ virtual bool SetAndSwapMappedAttribute(nsIDocument* aDocument,
+ nsIAtom* aName,
+ nsAttrValue& aValue,
+ bool* aValueWasSet,
+ nsresult* aRetval) override;
};
#endif // NS_MAPPEDATTRIBUTEELEMENT_H_
diff --git a/dom/base/nsMappedAttributes.cpp b/dom/base/nsMappedAttributes.cpp
index a3accd2a7..825409adc 100644
--- a/dom/base/nsMappedAttributes.cpp
+++ b/dom/base/nsMappedAttributes.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -62,11 +61,17 @@ nsMappedAttributes::Clone(bool aWillAddAttr)
void* nsMappedAttributes::operator new(size_t aSize, uint32_t aAttrCount) CPP_THROW_NEW
{
- NS_ASSERTION(aAttrCount > 0, "zero-attribute nsMappedAttributes requested");
+ size_t size = aSize + aAttrCount * sizeof(InternalAttr);
// aSize will include the mAttrs buffer so subtract that.
- void* newAttrs = ::operator new(aSize - sizeof(void*[1]) +
- aAttrCount * sizeof(InternalAttr));
+ // We don't want to under-allocate, however, so do not subtract
+ // if we have zero attributes. The zero attribute case only happens
+ // for <body>'s mapped attributes
+ if (aAttrCount != 0) {
+ size -= sizeof(void*[1]);
+ }
+
+ void* newAttrs = ::operator new(size);
#ifdef DEBUG
static_cast<nsMappedAttributes*>(newAttrs)->mBufferSize = aAttrCount;
@@ -79,15 +84,16 @@ NS_IMPL_ISUPPORTS(nsMappedAttributes,
nsIStyleRule)
void
-nsMappedAttributes::SetAndTakeAttr(nsIAtom* aAttrName, nsAttrValue& aValue)
+nsMappedAttributes::SetAndSwapAttr(nsIAtom* aAttrName, nsAttrValue& aValue,
+ bool* aValueWasSet)
{
NS_PRECONDITION(aAttrName, "null name");
-
+ *aValueWasSet = false;
uint32_t i;
for (i = 0; i < mAttrCount && !Attrs()[i].mName.IsSmaller(aAttrName); ++i) {
if (Attrs()[i].mName.Equals(aAttrName)) {
- Attrs()[i].mValue.Reset();
Attrs()[i].mValue.SwapValueWith(aValue);
+ *aValueWasSet = true;
return;
}
}
diff --git a/dom/base/nsMappedAttributes.h b/dom/base/nsMappedAttributes.h
index f00b888b9..94ceb307d 100644
--- a/dom/base/nsMappedAttributes.h
+++ b/dom/base/nsMappedAttributes.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -33,7 +32,8 @@ public:
NS_DECL_ISUPPORTS
- void SetAndTakeAttr(nsIAtom* aAttrName, nsAttrValue& aValue);
+ void SetAndSwapAttr(nsIAtom* aAttrName, nsAttrValue& aValue,
+ bool* aValueWasSet);
const nsAttrValue* GetAttr(nsIAtom* aAttrName) const;
const nsAttrValue* GetAttr(const nsAString& aAttrName) const;
diff --git a/dom/base/nsMimeTypeArray.cpp b/dom/base/nsMimeTypeArray.cpp
index ec8a82557..a3febde3d 100644
--- a/dom/base/nsMimeTypeArray.cpp
+++ b/dom/base/nsMimeTypeArray.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsMimeTypeArray.h b/dom/base/nsMimeTypeArray.h
index 856136414..a9c7d1d33 100644
--- a/dom/base/nsMimeTypeArray.h
+++ b/dom/base/nsMimeTypeArray.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsNameSpaceManager.cpp b/dom/base/nsNameSpaceManager.cpp
index 0130bb5d2..6c660e700 100644
--- a/dom/base/nsNameSpaceManager.cpp
+++ b/dom/base/nsNameSpaceManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsNameSpaceManager.h b/dom/base/nsNameSpaceManager.h
index d5c3a25fe..8c7eb4d1d 100644
--- a/dom/base/nsNameSpaceManager.h
+++ b/dom/base/nsNameSpaceManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -10,13 +9,13 @@
#include "nsDataHashtable.h"
#include "nsHashKeys.h"
#include "nsIAtom.h"
-#include "nsIDocument.h"
#include "nsIObserver.h"
#include "nsTArray.h"
#include "mozilla/StaticPtr.h"
class nsAString;
+class nsIDocument;
/**
* The Name Space Manager tracks the association between a NameSpace
diff --git a/dom/base/nsNoDataProtocolContentPolicy.cpp b/dom/base/nsNoDataProtocolContentPolicy.cpp
index cd1484a22..a837c2348 100644
--- a/dom/base/nsNoDataProtocolContentPolicy.cpp
+++ b/dom/base/nsNoDataProtocolContentPolicy.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsNoDataProtocolContentPolicy.h b/dom/base/nsNoDataProtocolContentPolicy.h
index 768a686fd..221df6d8c 100644
--- a/dom/base/nsNoDataProtocolContentPolicy.h
+++ b/dom/base/nsNoDataProtocolContentPolicy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsNodeInfoManager.cpp b/dom/base/nsNodeInfoManager.cpp
index 1f751ea71..a092fbb3c 100644
--- a/dom/base/nsNodeInfoManager.cpp
+++ b/dom/base/nsNodeInfoManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsNodeInfoManager.h b/dom/base/nsNodeInfoManager.h
index 759dd391e..002459009 100644
--- a/dom/base/nsNodeInfoManager.h
+++ b/dom/base/nsNodeInfoManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsNodeUtils.cpp b/dom/base/nsNodeUtils.cpp
index 75d408151..7d3135848 100644
--- a/dom/base/nsNodeUtils.cpp
+++ b/dom/base/nsNodeUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -65,7 +64,7 @@ using mozilla::AutoJSContext;
} \
ShadowRoot* shadow = ShadowRoot::FromNode(node); \
if (shadow) { \
- node = shadow->GetPoolHost(); \
+ node = shadow->GetHost(); \
} else { \
node = node->GetParentNode(); \
} \
@@ -93,7 +92,7 @@ using mozilla::AutoJSContext;
} \
ShadowRoot* shadow = ShadowRoot::FromNode(node); \
if (shadow) { \
- node = shadow->GetPoolHost(); \
+ node = shadow->GetHost(); \
} else { \
node = node->GetParentNode(); \
} \
@@ -301,9 +300,12 @@ nsNodeUtils::LastRelease(nsINode* aNode)
Element* elem = aNode->AsElement();
FragmentOrElement::nsDOMSlots* domSlots =
static_cast<FragmentOrElement::nsDOMSlots*>(slots);
- for (auto iter = domSlots->mRegisteredIntersectionObservers.Iter(); !iter.Done(); iter.Next()) {
- DOMIntersectionObserver* observer = iter.Key();
- observer->UnlinkTarget(*elem);
+ if (domSlots->mExtendedSlots) {
+ for (auto iter = domSlots->mExtendedSlots->mRegisteredIntersectionObservers.Iter();
+ !iter.Done(); iter.Next()) {
+ DOMIntersectionObserver* observer = iter.Key();
+ observer->UnlinkTarget(*elem);
+ }
}
}
@@ -476,19 +478,33 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep,
rv = aNode->Clone(nodeInfo, getter_AddRefs(clone));
NS_ENSURE_SUCCESS(rv, rv);
- if (clone->IsElement()) {
+ if (CustomElementRegistry::IsCustomElementEnabled() &&
+ clone->IsHTMLElement()) {
// The cloned node may be a custom element that may require
- // enqueing created callback and prototype swizzling.
- Element* elem = clone->AsElement();
- if (nsContentUtils::IsCustomElementName(nodeInfo->NameAtom())) {
- nsContentUtils::SetupCustomElement(elem);
- } else {
- // Check if node may be custom element by type extension.
- // ex. <button is="x-button">
- nsAutoString extension;
- if (elem->GetAttr(kNameSpaceID_None, nsGkAtoms::is, extension) &&
- !extension.IsEmpty()) {
- nsContentUtils::SetupCustomElement(elem, &extension);
+ // enqueing upgrade reaction.
+ Element* cloneElem = clone->AsElement();
+ RefPtr<nsIAtom> tagAtom = nodeInfo->NameAtom();
+ CustomElementData* data = elem->GetCustomElementData();
+
+ // Check if node may be custom element by type extension.
+ // ex. <button is="x-button">
+ nsAutoString extension;
+ if (!data || data->GetCustomElementType() != tagAtom) {
+ cloneElem->GetAttr(kNameSpaceID_None, nsGkAtoms::is, extension);
+ }
+
+ if (data || !extension.IsEmpty()) {
+ RefPtr<nsIAtom> typeAtom = extension.IsEmpty() ? tagAtom : NS_Atomize(extension);
+ cloneElem->SetCustomElementData(new CustomElementData(typeAtom));
+
+ MOZ_ASSERT(nodeInfo->NameAtom()->Equals(nodeInfo->LocalName()));
+ CustomElementDefinition* definition =
+ nsContentUtils::LookupCustomElementDefinition(nodeInfo->GetDocument(),
+ nodeInfo->NameAtom(),
+ nodeInfo->NamespaceID(),
+ typeAtom);
+ if (definition) {
+ nsContentUtils::EnqueueUpgradeReaction(cloneElem, definition);
}
}
}
@@ -523,6 +539,23 @@ nsNodeUtils::CloneAndAdopt(nsINode *aNode, bool aClone, bool aDeep,
nsIDocument* newDoc = aNode->OwnerDoc();
if (newDoc) {
+ if (CustomElementRegistry::IsCustomElementEnabled()) {
+ // Adopted callback must be enqueued whenever a node’s
+ // shadow-including inclusive descendants that is custom.
+ Element* element = aNode->IsElement() ? aNode->AsElement() : nullptr;
+ if (element) {
+ CustomElementData* data = element->GetCustomElementData();
+ if (data && data->mState == CustomElementData::State::eCustom) {
+ LifecycleAdoptedCallbackArgs args = {
+ oldDoc,
+ newDoc
+ };
+ nsContentUtils::EnqueueLifecycleCallback(nsIDocument::eAdopted,
+ element, nullptr, &args);
+ }
+ }
+ }
+
// XXX what if oldDoc is null, we don't know if this should be
// registered or not! Can that really happen?
if (wasRegistered) {
diff --git a/dom/base/nsNodeUtils.h b/dom/base/nsNodeUtils.h
index 283bd4083..971f8d17c 100644
--- a/dom/base/nsNodeUtils.h
+++ b/dom/base/nsNodeUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsObjectLoadingContent.cpp b/dom/base/nsObjectLoadingContent.cpp
index 4978744e8..e508a22f3 100644
--- a/dom/base/nsObjectLoadingContent.cpp
+++ b/dom/base/nsObjectLoadingContent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsObjectLoadingContent.h b/dom/base/nsObjectLoadingContent.h
index d1513ba22..24f80dd08 100644
--- a/dom/base/nsObjectLoadingContent.h
+++ b/dom/base/nsObjectLoadingContent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsOpenURIInFrameParams.cpp b/dom/base/nsOpenURIInFrameParams.cpp
index fafd98d3f..ef72395a8 100644
--- a/dom/base/nsOpenURIInFrameParams.cpp
+++ b/dom/base/nsOpenURIInFrameParams.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsOpenURIInFrameParams.h b/dom/base/nsOpenURIInFrameParams.h
index 5d6c299b0..ec79792e3 100644
--- a/dom/base/nsOpenURIInFrameParams.h
+++ b/dom/base/nsOpenURIInFrameParams.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsPIDOMWindow.h b/dom/base/nsPIDOMWindow.h
index 5c07bf4d4..d8d14b512 100644
--- a/dom/base/nsPIDOMWindow.h
+++ b/dom/base/nsPIDOMWindow.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsPIWindowRoot.h b/dom/base/nsPIWindowRoot.h
index ec39e48a8..6c372ba9e 100644
--- a/dom/base/nsPIWindowRoot.h
+++ b/dom/base/nsPIWindowRoot.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsPlainTextSerializer.cpp b/dom/base/nsPlainTextSerializer.cpp
index 98c9cfe32..6d2a01e48 100644
--- a/dom/base/nsPlainTextSerializer.cpp
+++ b/dom/base/nsPlainTextSerializer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsPlainTextSerializer.h b/dom/base/nsPlainTextSerializer.h
index 58aeb4207..e007fb7ee 100644
--- a/dom/base/nsPlainTextSerializer.h
+++ b/dom/base/nsPlainTextSerializer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsPluginArray.cpp b/dom/base/nsPluginArray.cpp
index 5b9378ae0..2bd7e1a0c 100644
--- a/dom/base/nsPluginArray.cpp
+++ b/dom/base/nsPluginArray.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsPluginArray.h b/dom/base/nsPluginArray.h
index 6f9ce4651..c22a17000 100644
--- a/dom/base/nsPluginArray.h
+++ b/dom/base/nsPluginArray.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsPropertyTable.cpp b/dom/base/nsPropertyTable.cpp
index f0f81ba3f..c5625223d 100644
--- a/dom/base/nsPropertyTable.cpp
+++ b/dom/base/nsPropertyTable.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/base/nsPropertyTable.h b/dom/base/nsPropertyTable.h
index 9a82d4163..603b50c76 100644
--- a/dom/base/nsPropertyTable.h
+++ b/dom/base/nsPropertyTable.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/base/nsQueryContentEventResult.cpp b/dom/base/nsQueryContentEventResult.cpp
index 462cfe86a..0050744a8 100644
--- a/dom/base/nsQueryContentEventResult.cpp
+++ b/dom/base/nsQueryContentEventResult.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsQueryContentEventResult.h b/dom/base/nsQueryContentEventResult.h
index 5ef6223a7..889d7b67a 100644
--- a/dom/base/nsQueryContentEventResult.h
+++ b/dom/base/nsQueryContentEventResult.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsRange.cpp b/dom/base/nsRange.cpp
index d45a2c975..1d1a8f26d 100644
--- a/dom/base/nsRange.cpp
+++ b/dom/base/nsRange.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -49,6 +48,12 @@ nsRange::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
return RangeBinding::Wrap(aCx, this, aGivenProto);
}
+DocGroup*
+nsRange::GetDocGroup() const
+{
+ return mOwner ? mOwner->GetDocGroup() : nullptr;
+}
+
/******************************************************
* stack based utilty class for managing monitor
******************************************************/
@@ -111,31 +116,37 @@ nsRange::CompareNodeToRange(nsINode* aNode, nsRange* aRange,
// so instead represent it by (node,0) and (node,numChildren)
parent = aNode;
nodeStart = 0;
- nodeEnd = aNode->GetChildCount();
+ uint32_t childCount = aNode->GetChildCount();
+ MOZ_ASSERT(childCount <= INT32_MAX,
+ "There shouldn't be over INT32_MAX children");
+ nodeEnd = static_cast<int32_t>(childCount);
}
else {
nodeStart = parent->IndexOf(aNode);
nodeEnd = nodeStart + 1;
+ MOZ_ASSERT(nodeStart < nodeEnd, "nodeStart shouldn't be INT32_MAX");
}
nsINode* rangeStartParent = aRange->GetStartParent();
nsINode* rangeEndParent = aRange->GetEndParent();
- int32_t rangeStartOffset = aRange->StartOffset();
- int32_t rangeEndOffset = aRange->EndOffset();
+ uint32_t rangeStartOffset = aRange->StartOffset();
+ uint32_t rangeEndOffset = aRange->EndOffset();
// is RANGE(start) <= NODE(start) ?
bool disconnected = false;
- *outNodeBefore = nsContentUtils::ComparePoints(rangeStartParent,
- rangeStartOffset,
- parent, nodeStart,
- &disconnected) > 0;
+ *outNodeBefore =
+ nsContentUtils::ComparePoints(rangeStartParent,
+ static_cast<int32_t>(rangeStartOffset),
+ parent, nodeStart,
+ &disconnected) > 0;
NS_ENSURE_TRUE(!disconnected, NS_ERROR_DOM_WRONG_DOCUMENT_ERR);
// is RANGE(end) >= NODE(end) ?
- *outNodeAfter = nsContentUtils::ComparePoints(rangeEndParent,
- rangeEndOffset,
- parent, nodeEnd,
- &disconnected) < 0;
+ *outNodeAfter =
+ nsContentUtils::ComparePoints(rangeEndParent,
+ static_cast<int32_t>(rangeEndOffset),
+ parent, nodeEnd,
+ &disconnected) < 0;
NS_ENSURE_TRUE(!disconnected, NS_ERROR_DOM_WRONG_DOCUMENT_ERR);
return NS_OK;
}
@@ -164,13 +175,17 @@ struct IsItemInRangeComparator
int operator()(const nsRange* const aRange) const
{
- int32_t cmp = nsContentUtils::ComparePoints(mNode, mEndOffset,
- aRange->GetStartParent(),
- aRange->StartOffset());
+ int32_t cmp =
+ nsContentUtils::ComparePoints(
+ mNode, static_cast<int32_t>(mEndOffset),
+ aRange->GetStartParent(),
+ static_cast<int32_t>(aRange->StartOffset()));
if (cmp == 1) {
- cmp = nsContentUtils::ComparePoints(mNode, mStartOffset,
- aRange->GetEndParent(),
- aRange->EndOffset());
+ cmp =
+ nsContentUtils::ComparePoints(
+ mNode, static_cast<int32_t>(mStartOffset),
+ aRange->GetEndParent(),
+ static_cast<int32_t>(aRange->EndOffset()));
if (cmp == -1) {
return 0;
}
@@ -266,48 +281,38 @@ nsRange::nsRange(nsINode* aNode)
/* static */
nsresult
-nsRange::CreateRange(nsINode* aStartParent, int32_t aStartOffset,
- nsINode* aEndParent, int32_t aEndOffset,
+nsRange::CreateRange(nsINode* aStartParent, uint32_t aStartOffset,
+ nsINode* aEndParent, uint32_t aEndOffset,
nsRange** aRange)
{
- nsCOMPtr<nsIDOMNode> startDomNode = do_QueryInterface(aStartParent);
- nsCOMPtr<nsIDOMNode> endDomNode = do_QueryInterface(aEndParent);
-
- nsresult rv = CreateRange(startDomNode, aStartOffset, endDomNode, aEndOffset,
- aRange);
-
- return rv;
+ MOZ_ASSERT(aRange);
+ *aRange = nullptr;
+ RefPtr<nsRange> range = new nsRange(aStartParent);
+ nsresult rv = range->SetStartAndEnd(aStartParent, aStartOffset,
+ aEndParent, aEndOffset);
+ if (NS_WARN_IF(NS_FAILED(rv))) {
+ return rv;
+ }
+ range.forget(aRange);
+ return NS_OK;
}
/* static */
nsresult
-nsRange::CreateRange(nsIDOMNode* aStartParent, int32_t aStartOffset,
- nsIDOMNode* aEndParent, int32_t aEndOffset,
+nsRange::CreateRange(nsIDOMNode* aStartParent, uint32_t aStartOffset,
+ nsIDOMNode* aEndParent, uint32_t aEndOffset,
nsRange** aRange)
{
- MOZ_ASSERT(aRange);
- *aRange = nullptr;
-
nsCOMPtr<nsINode> startParent = do_QueryInterface(aStartParent);
- NS_ENSURE_ARG_POINTER(startParent);
-
- RefPtr<nsRange> range = new nsRange(startParent);
-
- nsresult rv = range->SetStart(startParent, aStartOffset);
- NS_ENSURE_SUCCESS(rv, rv);
-
- rv = range->SetEnd(aEndParent, aEndOffset);
- NS_ENSURE_SUCCESS(rv, rv);
-
- range.forget(aRange);
- return NS_OK;
+ nsCOMPtr<nsINode> endParent = do_QueryInterface(aEndParent);
+ return CreateRange(startParent, aStartOffset, endParent, aEndOffset, aRange);
}
/* static */
nsresult
-nsRange::CreateRange(nsIDOMNode* aStartParent, int32_t aStartOffset,
- nsIDOMNode* aEndParent, int32_t aEndOffset,
+nsRange::CreateRange(nsIDOMNode* aStartParent, uint32_t aStartOffset,
+ nsIDOMNode* aEndParent, uint32_t aEndOffset,
nsIDOMRange** aRange)
{
RefPtr<nsRange> range;
@@ -465,15 +470,27 @@ nsRange::CharacterDataChanged(nsIDocument* aDocument,
// again (when the new text node is notified).
nsINode* parentNode = aContent->GetParentNode();
int32_t index = -1;
- if (parentNode == mEndParent && mEndOffset > 0 &&
- (index = parentNode->IndexOf(aContent)) + 1 == mEndOffset) {
- ++mEndOffset;
- mEndOffsetWasIncremented = true;
+ if (parentNode == mEndParent && mEndOffset > 0) {
+ index = parentNode->IndexOf(aContent);
+ NS_WARNING_ASSERTION(index >= 0,
+ "Shouldn't be called during removing the node or something");
+ if (static_cast<uint32_t>(index + 1) == mEndOffset) {
+ newEndNode = mEndParent;
+ newEndOffset = mEndOffset + 1;
+ MOZ_ASSERT(IsValidOffset(newEndOffset));
+ mEndOffsetWasIncremented = true;
+ }
}
- if (parentNode == mStartParent && mStartOffset > 0 &&
- (index != -1 ? index : parentNode->IndexOf(aContent)) + 1 == mStartOffset) {
- ++mStartOffset;
- mStartOffsetWasIncremented = true;
+ if (parentNode == mStartParent && mStartOffset > 0) {
+ if (index <= 0) {
+ index = parentNode->IndexOf(aContent);
+ }
+ if (static_cast<uint32_t>(index + 1) == mStartOffset) {
+ newStartNode = mStartParent;
+ newStartOffset = mStartOffset + 1;
+ MOZ_ASSERT(IsValidOffset(newStartOffset));
+ mStartOffsetWasIncremented = true;
+ }
}
#ifdef DEBUG
if (mStartOffsetWasIncremented || mEndOffsetWasIncremented) {
@@ -486,16 +503,15 @@ nsRange::CharacterDataChanged(nsIDocument* aDocument,
// If the changed node contains our start boundary and the change starts
// before the boundary we'll need to adjust the offset.
- if (aContent == mStartParent &&
- aInfo->mChangeStart < static_cast<uint32_t>(mStartOffset)) {
+ if (aContent == mStartParent && aInfo->mChangeStart < mStartOffset) {
if (aInfo->mDetails) {
// splitText(), aInfo->mDetails->mNextSibling is the new text node
NS_ASSERTION(aInfo->mDetails->mType ==
CharacterDataChangeInfo::Details::eSplit,
"only a split can start before the end");
- NS_ASSERTION(static_cast<uint32_t>(mStartOffset) <= aInfo->mChangeEnd + 1,
+ NS_ASSERTION(mStartOffset <= aInfo->mChangeEnd + 1,
"mStartOffset is beyond the end of this node");
- newStartOffset = static_cast<uint32_t>(mStartOffset) - aInfo->mChangeStart;
+ newStartOffset = mStartOffset - aInfo->mChangeStart;
newStartNode = aInfo->mDetails->mNextSibling;
if (MOZ_UNLIKELY(aContent == mRoot)) {
newRoot = IsValidBoundary(newStartNode);
@@ -512,7 +528,7 @@ nsRange::CharacterDataChanged(nsIDocument* aDocument,
} else {
// If boundary is inside changed text, position it before change
// else adjust start offset for the change in length.
- mStartOffset = static_cast<uint32_t>(mStartOffset) <= aInfo->mChangeEnd ?
+ mStartOffset = mStartOffset <= aInfo->mChangeEnd ?
aInfo->mChangeStart :
mStartOffset + aInfo->mChangeStart - aInfo->mChangeEnd +
aInfo->mReplaceLength;
@@ -522,16 +538,15 @@ nsRange::CharacterDataChanged(nsIDocument* aDocument,
// Do the same thing for the end boundary, except for splitText of a node
// with no parent then only switch to the new node if the start boundary
// did so too (otherwise the range would end up with disconnected nodes).
- if (aContent == mEndParent &&
- aInfo->mChangeStart < static_cast<uint32_t>(mEndOffset)) {
+ if (aContent == mEndParent && aInfo->mChangeStart < mEndOffset) {
if (aInfo->mDetails && (aContent->GetParentNode() || newStartNode)) {
// splitText(), aInfo->mDetails->mNextSibling is the new text node
NS_ASSERTION(aInfo->mDetails->mType ==
CharacterDataChangeInfo::Details::eSplit,
"only a split can start before the end");
- NS_ASSERTION(static_cast<uint32_t>(mEndOffset) <= aInfo->mChangeEnd + 1,
+ NS_ASSERTION(mEndOffset <= aInfo->mChangeEnd + 1,
"mEndOffset is beyond the end of this node");
- newEndOffset = static_cast<uint32_t>(mEndOffset) - aInfo->mChangeStart;
+ newEndOffset = mEndOffset - aInfo->mChangeStart;
newEndNode = aInfo->mDetails->mNextSibling;
bool isCommonAncestor = IsInSelection() && mStartParent == mEndParent;
@@ -544,7 +559,7 @@ nsRange::CharacterDataChanged(nsIDocument* aDocument,
newEndNode->SetDescendantOfCommonAncestorForRangeInSelection();
}
} else {
- mEndOffset = static_cast<uint32_t>(mEndOffset) <= aInfo->mChangeEnd ?
+ mEndOffset = mEndOffset <= aInfo->mChangeEnd ?
aInfo->mChangeStart :
mEndOffset + aInfo->mChangeStart - aInfo->mChangeEnd +
aInfo->mReplaceLength;
@@ -557,14 +572,14 @@ nsRange::CharacterDataChanged(nsIDocument* aDocument,
// that will be removed
nsIContent* removed = aInfo->mDetails->mNextSibling;
if (removed == mStartParent) {
- newStartOffset = static_cast<uint32_t>(mStartOffset) + aInfo->mChangeStart;
+ newStartOffset = mStartOffset + aInfo->mChangeStart;
newStartNode = aContent;
if (MOZ_UNLIKELY(removed == mRoot)) {
newRoot = IsValidBoundary(newStartNode);
}
}
if (removed == mEndParent) {
- newEndOffset = static_cast<uint32_t>(mEndOffset) + aInfo->mChangeStart;
+ newEndOffset = mEndOffset + aInfo->mChangeStart;
newEndNode = aContent;
if (MOZ_UNLIKELY(removed == mRoot)) {
newRoot = IsValidBoundary(newEndNode);
@@ -578,13 +593,13 @@ nsRange::CharacterDataChanged(nsIDocument* aDocument,
// point before the first child is never affected by normalize().)
nsINode* parentNode = aContent->GetParentNode();
if (parentNode == mStartParent && mStartOffset > 0 &&
- uint32_t(mStartOffset) < parentNode->GetChildCount() &&
+ mStartOffset < parentNode->GetChildCount() &&
removed == parentNode->GetChildAt(mStartOffset)) {
newStartNode = aContent;
newStartOffset = aInfo->mChangeStart;
}
if (parentNode == mEndParent && mEndOffset > 0 &&
- uint32_t(mEndOffset) < parentNode->GetChildCount() &&
+ mEndOffset < parentNode->GetChildCount() &&
removed == parentNode->GetChildAt(mEndOffset)) {
newEndNode = aContent;
newEndOffset = aInfo->mChangeEnd;
@@ -649,13 +664,19 @@ nsRange::ContentInserted(nsIDocument* aDocument,
nsINode* container = NODE_FROM(aContainer, aDocument);
// Adjust position if a sibling was inserted.
- if (container == mStartParent && aIndexInContainer < mStartOffset &&
+ if (container == mStartParent &&
+ (NS_WARN_IF(aIndexInContainer < 0) ||
+ static_cast<uint32_t>(aIndexInContainer) < mStartOffset) &&
!mStartOffsetWasIncremented) {
++mStartOffset;
+ MOZ_ASSERT(IsValidOffset(mStartOffset));
}
- if (container == mEndParent && aIndexInContainer < mEndOffset &&
+ if (container == mEndParent &&
+ (NS_WARN_IF(aIndexInContainer < 0) ||
+ static_cast<uint32_t>(aIndexInContainer) < mEndOffset) &&
!mEndOffsetWasIncremented) {
++mEndOffset;
+ MOZ_ASSERT(IsValidOffset(mEndOffset));
}
if (container->IsSelectionDescendant() &&
!aChild->IsDescendantOfCommonAncestorForRangeInSelection()) {
@@ -694,7 +715,7 @@ nsRange::ContentRemoved(nsIDocument* aDocument,
// Adjust position if a sibling was removed...
if (container == mStartParent) {
- if (aIndexInContainer < mStartOffset) {
+ if (aIndexInContainer < static_cast<int32_t>(mStartOffset)) {
--mStartOffset;
}
} else { // ...or gravitate if an ancestor was removed.
@@ -704,7 +725,7 @@ nsRange::ContentRemoved(nsIDocument* aDocument,
// Do same thing for end boundry.
if (container == mEndParent) {
- if (aIndexInContainer < mEndOffset) {
+ if (aIndexInContainer < static_cast<int32_t>(mEndOffset)) {
--mEndOffset;
}
} else if (didCheckStartParentDescendant && mStartParent == mEndParent) {
@@ -763,12 +784,15 @@ nsRange::ParentChainChanged(nsIContent *aContent)
* Utilities for comparing points: API from nsIDOMRange
******************************************************/
NS_IMETHODIMP
-nsRange::IsPointInRange(nsIDOMNode* aParent, int32_t aOffset, bool* aResult)
+nsRange::IsPointInRange(nsIDOMNode* aParent, uint32_t aOffset, bool* aResult)
{
nsCOMPtr<nsINode> parent = do_QueryInterface(aParent);
if (!parent) {
return NS_ERROR_DOM_NOT_OBJECT_ERR;
}
+ if (NS_WARN_IF(!IsValidOffset(aOffset))) {
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+ }
ErrorResult rv;
*aResult = IsPointInRange(*parent, aOffset, rv);
@@ -791,7 +815,7 @@ nsRange::IsPointInRange(nsINode& aParent, uint32_t aOffset, ErrorResult& aRv)
// returns -1 if point is before range, 0 if point is in range,
// 1 if point is after range.
NS_IMETHODIMP
-nsRange::ComparePoint(nsIDOMNode* aParent, int32_t aOffset, int16_t* aResult)
+nsRange::ComparePoint(nsIDOMNode* aParent, uint32_t aOffset, int16_t* aResult)
{
nsCOMPtr<nsINode> parent = do_QueryInterface(aParent);
NS_ENSURE_TRUE(parent, NS_ERROR_DOM_HIERARCHY_REQUEST_ERR);
@@ -825,14 +849,18 @@ nsRange::ComparePoint(nsINode& aParent, uint32_t aOffset, ErrorResult& aRv)
return 0;
}
- int32_t cmp;
- if ((cmp = nsContentUtils::ComparePoints(&aParent, aOffset,
- mStartParent, mStartOffset)) <= 0) {
-
+ int32_t cmp =
+ nsContentUtils::ComparePoints(&aParent,
+ static_cast<int32_t>(aOffset),
+ mStartParent,
+ static_cast<int32_t>(mStartOffset));
+ if (cmp <= 0) {
return cmp;
}
- if (nsContentUtils::ComparePoints(mEndParent, mEndOffset,
- &aParent, aOffset) == -1) {
+ if (nsContentUtils::ComparePoints(mEndParent,
+ static_cast<int32_t>(mEndOffset),
+ &aParent,
+ static_cast<int32_t>(aOffset)) == -1) {
return 1;
}
@@ -875,12 +903,15 @@ nsRange::IntersectsNode(nsINode& aNode, ErrorResult& aRv)
// Steps 6-7.
// Note: if disconnected is true, ComparePoints returns 1.
bool disconnected = false;
- bool result = nsContentUtils::ComparePoints(mStartParent, mStartOffset,
- parent, nodeIndex + 1,
- &disconnected) < 0 &&
- nsContentUtils::ComparePoints(parent, nodeIndex,
- mEndParent, mEndOffset,
- &disconnected) < 0;
+ bool result =
+ nsContentUtils::ComparePoints(mStartParent,
+ static_cast<int32_t>(mStartOffset),
+ parent, nodeIndex + 1,
+ &disconnected) < 0 &&
+ nsContentUtils::ComparePoints(parent, nodeIndex,
+ mEndParent,
+ static_cast<int32_t>(mEndOffset),
+ &disconnected) < 0;
// Step 2.
if (disconnected) {
@@ -899,8 +930,8 @@ nsRange::IntersectsNode(nsINode& aNode, ErrorResult& aRv)
// Calling DoSetRange with either parent argument null will collapse
// the range to have both endpoints point to the other node
void
-nsRange::DoSetRange(nsINode* aStartN, int32_t aStartOffset,
- nsINode* aEndN, int32_t aEndOffset,
+nsRange::DoSetRange(nsINode* aStartN, uint32_t aStartOffset,
+ nsINode* aEndN, uint32_t aEndOffset,
nsINode* aRoot, bool aNotInsertedYet)
{
NS_PRECONDITION((aStartN && aEndN && aRoot) ||
@@ -926,6 +957,8 @@ nsRange::DoSetRange(nsINode* aStartN, int32_t aStartOffset,
/*For backward compatibility*/
aRoot->IsNodeOfType(nsINode::eCONTENT))),
"Bad root");
+ MOZ_ASSERT(IsValidOffset(aStartOffset));
+ MOZ_ASSERT(IsValidOffset(aEndOffset));
if (mRoot != aRoot) {
if (mRoot) {
@@ -1038,7 +1071,7 @@ nsRange::GetStartContainer(ErrorResult& aRv) const
}
NS_IMETHODIMP
-nsRange::GetStartOffset(int32_t* aStartOffset)
+nsRange::GetStartOffset(uint32_t* aStartOffset)
{
if (!mIsPositioned)
return NS_ERROR_NOT_INITIALIZED;
@@ -1080,7 +1113,7 @@ nsRange::GetEndContainer(ErrorResult& aRv) const
}
NS_IMETHODIMP
-nsRange::GetEndOffset(int32_t* aEndOffset)
+nsRange::GetEndOffset(uint32_t* aEndOffset)
{
if (!mIsPositioned)
return NS_ERROR_NOT_INITIALIZED;
@@ -1137,6 +1170,15 @@ nsRange::GetCommonAncestorContainer(nsIDOMNode** aCommonParent)
return rv.StealNSResult();
}
+/* static */
+bool
+nsRange::IsValidOffset(nsINode* aNode, uint32_t aOffset)
+{
+ return aNode &&
+ IsValidOffset(aOffset) &&
+ static_cast<size_t>(aOffset) <= aNode->Length();
+}
+
nsINode*
nsRange::IsValidBoundary(nsINode* aNode)
{
@@ -1197,7 +1239,7 @@ nsRange::SetStart(nsINode& aNode, uint32_t aOffset, ErrorResult& aRv)
}
NS_IMETHODIMP
-nsRange::SetStart(nsIDOMNode* aParent, int32_t aOffset)
+nsRange::SetStart(nsIDOMNode* aParent, uint32_t aOffset)
{
nsCOMPtr<nsINode> parent = do_QueryInterface(aParent);
if (!parent) {
@@ -1210,22 +1252,24 @@ nsRange::SetStart(nsIDOMNode* aParent, int32_t aOffset)
}
/* virtual */ nsresult
-nsRange::SetStart(nsINode* aParent, int32_t aOffset)
+nsRange::SetStart(nsINode* aParent, uint32_t aOffset)
{
nsINode* newRoot = IsValidBoundary(aParent);
if (!newRoot) {
return NS_ERROR_DOM_INVALID_NODE_TYPE_ERR;
}
- if (aOffset < 0 || uint32_t(aOffset) > aParent->Length()) {
+ if (!IsValidOffset(aParent, aOffset)) {
return NS_ERROR_DOM_INDEX_SIZE_ERR;
}
// Collapse if not positioned yet, if positioned in another doc or
// if the new start is after end.
if (!mIsPositioned || newRoot != mRoot ||
- nsContentUtils::ComparePoints(aParent, aOffset,
- mEndParent, mEndOffset) == 1) {
+ nsContentUtils::ComparePoints(aParent,
+ static_cast<int32_t>(aOffset),
+ mEndParent,
+ static_cast<int32_t>(mEndOffset)) == 1) {
DoSetRange(aParent, aOffset, aParent, aOffset, newRoot);
return NS_OK;
@@ -1246,7 +1290,12 @@ nsRange::SetStartBefore(nsINode& aNode, ErrorResult& aRv)
}
AutoInvalidateSelection atEndOfBlock(this);
- aRv = SetStart(aNode.GetParentNode(), IndexOf(&aNode));
+ // If the node is being removed from its parent, GetContainerAndOffsetBefore()
+ // returns nullptr. Then, SetStart() will throw
+ // NS_ERROR_DOM_INVALID_NODE_TYPE_ERR.
+ uint32_t offset = UINT32_MAX;
+ nsINode* parent = GetParentAndOffsetBefore(&aNode, &offset);
+ aRv = SetStart(parent, offset);
}
NS_IMETHODIMP
@@ -1272,7 +1321,12 @@ nsRange::SetStartAfter(nsINode& aNode, ErrorResult& aRv)
}
AutoInvalidateSelection atEndOfBlock(this);
- aRv = SetStart(aNode.GetParentNode(), IndexOf(&aNode) + 1);
+ // If the node is being removed from its parent, GetContainerAndOffsetAfter()
+ // returns nullptr. Then, SetStart() will throw
+ // NS_ERROR_DOM_INVALID_NODE_TYPE_ERR.
+ uint32_t offset = UINT32_MAX;
+ nsINode* parent = GetParentAndOffsetAfter(&aNode, &offset);
+ aRv = SetStart(parent, offset);
}
NS_IMETHODIMP
@@ -1301,7 +1355,7 @@ nsRange::SetEnd(nsINode& aNode, uint32_t aOffset, ErrorResult& aRv)
}
NS_IMETHODIMP
-nsRange::SetEnd(nsIDOMNode* aParent, int32_t aOffset)
+nsRange::SetEnd(nsIDOMNode* aParent, uint32_t aOffset)
{
nsCOMPtr<nsINode> parent = do_QueryInterface(aParent);
if (!parent) {
@@ -1314,22 +1368,24 @@ nsRange::SetEnd(nsIDOMNode* aParent, int32_t aOffset)
}
/* virtual */ nsresult
-nsRange::SetEnd(nsINode* aParent, int32_t aOffset)
+nsRange::SetEnd(nsINode* aParent, uint32_t aOffset)
{
nsINode* newRoot = IsValidBoundary(aParent);
if (!newRoot) {
return NS_ERROR_DOM_INVALID_NODE_TYPE_ERR;
}
- if (aOffset < 0 || uint32_t(aOffset) > aParent->Length()) {
+ if (!IsValidOffset(aParent, aOffset)) {
return NS_ERROR_DOM_INDEX_SIZE_ERR;
}
// Collapse if not positioned yet, if positioned in another doc or
// if the new end is before start.
if (!mIsPositioned || newRoot != mRoot ||
- nsContentUtils::ComparePoints(mStartParent, mStartOffset,
- aParent, aOffset) == 1) {
+ nsContentUtils::ComparePoints(mStartParent,
+ static_cast<int32_t>(mStartOffset),
+ aParent,
+ static_cast<int32_t>(aOffset)) == 1) {
DoSetRange(aParent, aOffset, aParent, aOffset, newRoot);
return NS_OK;
@@ -1340,6 +1396,66 @@ nsRange::SetEnd(nsINode* aParent, int32_t aOffset)
return NS_OK;
}
+nsresult
+nsRange::SetStartAndEnd(nsINode* aStartParent, uint32_t aStartOffset,
+ nsINode* aEndParent, uint32_t aEndOffset)
+{
+ if (NS_WARN_IF(!aStartParent) || NS_WARN_IF(!aEndParent)) {
+ return NS_ERROR_INVALID_ARG;
+ }
+
+ nsINode* newStartRoot = IsValidBoundary(aStartParent);
+ if (!newStartRoot) {
+ return NS_ERROR_DOM_INVALID_NODE_TYPE_ERR;
+ }
+ if (!IsValidOffset(aStartParent, aStartOffset)) {
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+ }
+
+ if (aStartParent == aEndParent) {
+ if (!IsValidOffset(aEndParent, aEndOffset)) {
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+ }
+ // If the end offset is less than the start offset, this should be
+ // collapsed at the end offset.
+ if (aStartOffset > aEndOffset) {
+ DoSetRange(aEndParent, aEndOffset, aEndParent, aEndOffset, newStartRoot);
+ } else {
+ DoSetRange(aStartParent, aStartOffset,
+ aEndParent, aEndOffset, newStartRoot);
+ }
+ return NS_OK;
+ }
+
+ nsINode* newEndRoot = IsValidBoundary(aEndParent);
+ if (!newEndRoot) {
+ return NS_ERROR_DOM_INVALID_NODE_TYPE_ERR;
+ }
+ if (!IsValidOffset(aEndParent, aEndOffset)) {
+ return NS_ERROR_DOM_INDEX_SIZE_ERR;
+ }
+
+ // If they have different root, this should be collapsed at the end point.
+ if (newStartRoot != newEndRoot) {
+ DoSetRange(aEndParent, aEndOffset, aEndParent, aEndOffset, newEndRoot);
+ return NS_OK;
+ }
+
+ // If the end point is before the start point, this should be collapsed at
+ // the end point.
+ if (nsContentUtils::ComparePoints(aStartParent,
+ static_cast<int32_t>(aStartOffset),
+ aEndParent,
+ static_cast<int32_t>(aEndOffset)) == 1) {
+ DoSetRange(aEndParent, aEndOffset, aEndParent, aEndOffset, newEndRoot);
+ return NS_OK;
+ }
+
+ // Otherwise, set the range as specified.
+ DoSetRange(aStartParent, aStartOffset, aEndParent, aEndOffset, newStartRoot);
+ return NS_OK;
+}
+
void
nsRange::SetEndBefore(nsINode& aNode, ErrorResult& aRv)
{
@@ -1350,7 +1466,12 @@ nsRange::SetEndBefore(nsINode& aNode, ErrorResult& aRv)
}
AutoInvalidateSelection atEndOfBlock(this);
- aRv = SetEnd(aNode.GetParentNode(), IndexOf(&aNode));
+ // If the node is being removed from its parent, GetContainerAndOffsetBefore()
+ // returns nullptr. Then, SetEnd() will throw
+ // NS_ERROR_DOM_INVALID_NODE_TYPE_ERR.
+ uint32_t offset = UINT32_MAX;
+ nsINode* parent = GetParentAndOffsetBefore(&aNode, &offset);
+ aRv = SetEnd(parent, offset);
}
NS_IMETHODIMP
@@ -1376,7 +1497,12 @@ nsRange::SetEndAfter(nsINode& aNode, ErrorResult& aRv)
}
AutoInvalidateSelection atEndOfBlock(this);
- aRv = SetEnd(aNode.GetParentNode(), IndexOf(&aNode) + 1);
+ // If the node is being removed from its parent, GetContainerAndOffsetAfter()
+ // returns nullptr. Then, SetEnd() will throw
+ // NS_ERROR_DOM_INVALID_NODE_TYPE_ERR.
+ uint32_t offset = UINT32_MAX;
+ nsINode* parent = GetParentAndOffsetAfter(&aNode, &offset);
+ aRv = SetEnd(parent, offset);
}
NS_IMETHODIMP
@@ -1435,7 +1561,9 @@ nsRange::SelectNode(nsINode& aNode, ErrorResult& aRv)
}
int32_t index = parent->IndexOf(&aNode);
- if (index < 0) {
+ if (NS_WARN_IF(index < 0) ||
+ !IsValidOffset(static_cast<uint32_t>(index)) ||
+ !IsValidOffset(static_cast<uint32_t>(index) + 1)) {
aRv.Throw(NS_ERROR_DOM_INVALID_NODE_TYPE_ERR);
return;
}
@@ -1884,9 +2012,9 @@ nsRange::CutContents(DocumentFragment** aFragment)
// of Range gravity during our edits!
nsCOMPtr<nsINode> startContainer = mStartParent;
- int32_t startOffset = mStartOffset;
+ uint32_t startOffset = mStartOffset;
nsCOMPtr<nsINode> endContainer = mEndParent;
- int32_t endOffset = mEndOffset;
+ uint32_t endOffset = mEndOffset;
if (retval) {
// For extractContents(), abort early if there's a doctype (bug 719533).
@@ -1897,10 +2025,12 @@ nsRange::CutContents(DocumentFragment** aFragment)
RefPtr<DocumentType> doctype = commonAncestorDocument->GetDoctype();
if (doctype &&
- nsContentUtils::ComparePoints(startContainer, startOffset,
+ nsContentUtils::ComparePoints(startContainer,
+ static_cast<int32_t>(startOffset),
doctype, 0) < 0 &&
nsContentUtils::ComparePoints(doctype, 0,
- endContainer, endOffset) < 0) {
+ endContainer,
+ static_cast<int32_t>(endOffset)) < 0) {
return NS_ERROR_DOM_HIERARCHY_REQUEST_ERR;
}
}
@@ -1995,8 +2125,7 @@ nsRange::CutContents(DocumentFragment** aFragment)
rv = charData->GetLength(&dataLength);
NS_ENSURE_SUCCESS(rv, rv);
- if (dataLength >= (uint32_t)startOffset)
- {
+ if (dataLength >= startOffset) {
nsMutationGuard guard;
nsCOMPtr<nsIDOMCharacterData> cutNode;
rv = SplitDataNode(charData, startOffset, getter_AddRefs(cutNode));
@@ -2012,22 +2141,17 @@ nsRange::CutContents(DocumentFragment** aFragment)
else if (node == endContainer)
{
// Delete or extract everything before endOffset.
-
- if (endOffset >= 0)
- {
- nsMutationGuard guard;
- nsCOMPtr<nsIDOMCharacterData> cutNode;
- /* The Range spec clearly states clones get cut and original nodes
- remain behind, so use false as the last parameter.
- */
- rv = SplitDataNode(charData, endOffset, getter_AddRefs(cutNode),
- false);
- NS_ENSURE_SUCCESS(rv, rv);
- NS_ENSURE_STATE(!guard.Mutated(1) ||
- ValidateCurrentNode(this, iter));
- nodeToResult = do_QueryInterface(cutNode);
- }
-
+ nsMutationGuard guard;
+ nsCOMPtr<nsIDOMCharacterData> cutNode;
+ /* The Range spec clearly states clones get cut and original nodes
+ remain behind, so use false as the last parameter.
+ */
+ rv = SplitDataNode(charData, endOffset, getter_AddRefs(cutNode),
+ false);
+ NS_ENSURE_SUCCESS(rv, rv);
+ NS_ENSURE_STATE(!guard.Mutated(1) ||
+ ValidateCurrentNode(this, iter));
+ nodeToResult = do_QueryInterface(cutNode);
handled = true;
}
}
@@ -2037,8 +2161,7 @@ nsRange::CutContents(DocumentFragment** aFragment)
if (node && node->IsElement() &&
((node == endContainer && endOffset == 0) ||
(node == startContainer &&
- int32_t(node->AsElement()->GetChildCount()) == startOffset)))
- {
+ node->AsElement()->GetChildCount() == startOffset))) {
if (retval) {
ErrorResult rv;
nodeToResult = node->CloneNode(false, rv);
@@ -2183,7 +2306,7 @@ nsRange::CompareBoundaryPoints(uint16_t aHow, nsRange& aOtherRange,
}
nsINode *ourNode, *otherNode;
- int32_t ourOffset, otherOffset;
+ uint32_t ourOffset, otherOffset;
switch (aHow) {
case nsIDOMRange::START_TO_START:
@@ -2221,8 +2344,10 @@ nsRange::CompareBoundaryPoints(uint16_t aHow, nsRange& aOtherRange,
return 0;
}
- return nsContentUtils::ComparePoints(ourNode, ourOffset,
- otherNode, otherOffset);
+ return nsContentUtils::ComparePoints(ourNode,
+ static_cast<int32_t>(ourOffset),
+ otherNode,
+ static_cast<int32_t>(otherOffset));
}
/* static */ nsresult
@@ -2339,8 +2464,7 @@ nsRange::CloneContents(ErrorResult& aRv)
bool deepClone = !node->IsElement() ||
(!(node == mEndParent && mEndOffset == 0) &&
!(node == mStartParent &&
- mStartOffset ==
- int32_t(node->AsElement()->GetChildCount())));
+ mStartOffset == node->AsElement()->GetChildCount()));
// Clone the current subtree!
@@ -2370,7 +2494,7 @@ nsRange::CloneContents(ErrorResult& aRv)
return nullptr;
}
- if (dataLength > (uint32_t)mEndOffset)
+ if (dataLength > mEndOffset)
{
aRv = charData->DeleteData(mEndOffset, dataLength - mEndOffset);
if (aRv.Failed()) {
@@ -2528,7 +2652,7 @@ nsRange::InsertNode(nsINode& aNode, ErrorResult& aRv)
return;
}
- int32_t tStartOffset = StartOffset();
+ uint32_t tStartOffset = StartOffset();
nsCOMPtr<nsINode> tStartContainer = GetStartContainer(aRv);
if (aRv.Failed()) {
@@ -2589,18 +2713,20 @@ nsRange::InsertNode(nsINode& aNode, ErrorResult& aRv)
// We might need to update the end to include the new node (bug 433662).
// Ideally we'd only do this if needed, but it's tricky to know when it's
// needed in advance (bug 765799).
- int32_t newOffset;
+ uint32_t newOffset;
if (referenceNode) {
- newOffset = IndexOf(referenceNode);
+ int32_t indexInParent = IndexOf(referenceNode);
+ if (NS_WARN_IF(indexInParent < 0)) {
+ aRv.Throw(NS_ERROR_FAILURE);
+ return;
+ }
+ newOffset = static_cast<uint32_t>(indexInParent);
} else {
- uint32_t length;
- aRv = tChildList->GetLength(&length);
+ aRv = tChildList->GetLength(&newOffset);
if (aRv.Failed()) {
return;
}
-
- newOffset = length;
}
if (aNode.NodeType() == nsIDOMNode::DOCUMENT_FRAGMENT_NODE) {
@@ -2956,10 +3082,15 @@ static nsresult GetPartialTextRect(nsLayoutUtils::RectCallback* aCallback,
nsRange::CollectClientRectsAndText(nsLayoutUtils::RectCallback* aCollector,
mozilla::dom::DOMStringList* aTextList,
nsRange* aRange,
- nsINode* aStartParent, int32_t aStartOffset,
- nsINode* aEndParent, int32_t aEndOffset,
+ nsINode* aStartParent, uint32_t aStartOffset,
+ nsINode* aEndParent, uint32_t aEndOffset,
bool aClampToEdge, bool aFlushLayout)
{
+ // Currently, this method is called with start of end offset of nsRange.
+ // So, they must be between 0 - INT32_MAX.
+ MOZ_ASSERT(IsValidOffset(aStartOffset));
+ MOZ_ASSERT(IsValidOffset(aEndOffset));
+
// Hold strong pointers across the flush
nsCOMPtr<nsINode> startContainer = aStartParent;
nsCOMPtr<nsINode> endContainer = aEndParent;
@@ -2990,13 +3121,15 @@ nsRange::CollectClientRectsAndText(nsLayoutUtils::RectCallback* aCollector,
if (textFrame) {
int32_t outOffset;
nsIFrame* outFrame;
- textFrame->GetChildFrameContainingOffset(aStartOffset, false,
- &outOffset, &outFrame);
+ textFrame->GetChildFrameContainingOffset(
+ static_cast<int32_t>(aStartOffset), false,
+ &outOffset, &outFrame);
if (outFrame) {
nsIFrame* relativeTo =
nsLayoutUtils::GetContainingBlockForClientRect(outFrame);
nsRect r = outFrame->GetRectRelativeToSelf();
- ExtractRectFromOffset(outFrame, aStartOffset, &r, false, aClampToEdge);
+ ExtractRectFromOffset(outFrame, static_cast<int32_t>(aStartOffset),
+ &r, false, aClampToEdge);
r.width = 0;
r = nsLayoutUtils::TransformFrameRectToAncestor(outFrame, r, relativeTo);
aCollector->AddRect(r);
@@ -3015,12 +3148,14 @@ nsRange::CollectClientRectsAndText(nsLayoutUtils::RectCallback* aCollector,
if (content->IsNodeOfType(nsINode::eTEXT)) {
if (node == startContainer) {
int32_t offset = startContainer == endContainer ?
- aEndOffset : content->GetText()->GetLength();
- GetPartialTextRect(aCollector, aTextList, content, aStartOffset, offset,
+ static_cast<int32_t>(aEndOffset) : content->GetText()->GetLength();
+ GetPartialTextRect(aCollector, aTextList, content,
+ static_cast<int32_t>(aStartOffset), offset,
aClampToEdge, aFlushLayout);
continue;
} else if (node == endContainer) {
- GetPartialTextRect(aCollector, aTextList, content, 0, aEndOffset,
+ GetPartialTextRect(aCollector, aTextList, content,
+ 0, static_cast<int32_t>(aEndOffset),
aClampToEdge, aFlushLayout);
continue;
}
@@ -3397,7 +3532,7 @@ ElementIsVisibleNoFlush(Element* aElement)
static void
AppendTransformedText(InnerTextAccumulator& aResult,
nsGenericDOMDataNode* aTextNode,
- int32_t aStart, int32_t aEnd)
+ uint32_t aStart, uint32_t aEnd)
{
nsIFrame* frame = aTextNode->GetPrimaryFrame();
if (!IsVisibleAndNotInReplacedElement(frame)) {
@@ -3506,7 +3641,7 @@ nsRange::GetInnerTextNoFlush(DOMString& aValue, ErrorResult& aError,
if (aEndParent->IsNodeOfType(nsINode::eTEXT)) {
endState = AT_NODE;
} else {
- if (uint32_t(aEndOffset) < aEndParent->GetChildCount()) {
+ if (aEndOffset < aEndParent->GetChildCount()) {
endNode = aEndParent->GetChildAt(aEndOffset);
endState = AT_NODE;
}
diff --git a/dom/base/nsRange.h b/dom/base/nsRange.h
index 4b35c749a..7cc3049de 100644
--- a/dom/base/nsRange.h
+++ b/dom/base/nsRange.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -26,6 +25,7 @@ namespace mozilla {
class ErrorResult;
namespace dom {
struct ClientRectsAndTexts;
+class DocGroup;
class DocumentFragment;
class DOMRect;
class DOMRectList;
@@ -38,6 +38,7 @@ class nsRange final : public nsIDOMRange,
public nsWrapperCache
{
typedef mozilla::ErrorResult ErrorResult;
+ typedef mozilla::dom::DocGroup DocGroup;
typedef mozilla::dom::DOMRect DOMRect;
typedef mozilla::dom::DOMRectList DOMRectList;
@@ -46,14 +47,14 @@ class nsRange final : public nsIDOMRange,
public:
explicit nsRange(nsINode* aNode);
- static nsresult CreateRange(nsIDOMNode* aStartParent, int32_t aStartOffset,
- nsIDOMNode* aEndParent, int32_t aEndOffset,
+ static nsresult CreateRange(nsIDOMNode* aStartParent, uint32_t aStartOffset,
+ nsIDOMNode* aEndParent, uint32_t aEndOffset,
nsRange** aRange);
- static nsresult CreateRange(nsIDOMNode* aStartParent, int32_t aStartOffset,
- nsIDOMNode* aEndParent, int32_t aEndOffset,
+ static nsresult CreateRange(nsIDOMNode* aStartParent, uint32_t aStartOffset,
+ nsIDOMNode* aEndParent, uint32_t aEndOffset,
nsIDOMRange** aRange);
- static nsresult CreateRange(nsINode* aStartParent, int32_t aStartOffset,
- nsINode* aEndParent, int32_t aEndOffset,
+ static nsresult CreateRange(nsINode* aStartParent, uint32_t aStartOffset,
+ nsINode* aEndParent, uint32_t aEndOffset,
nsRange** aRange);
NS_DECL_CYCLE_COLLECTING_ISUPPORTS
@@ -91,12 +92,12 @@ public:
return mEndParent;
}
- int32_t StartOffset() const
+ uint32_t StartOffset() const
{
return mStartOffset;
}
- int32_t EndOffset() const
+ uint32_t EndOffset() const
{
return mEndOffset;
}
@@ -148,19 +149,74 @@ public:
nsINode* GetCommonAncestor() const;
void Reset();
- nsresult SetStart(nsINode* aParent, int32_t aOffset);
- nsresult SetEnd(nsINode* aParent, int32_t aOffset);
+
+ /**
+ * SetStart() and SetEnd() sets start point or end point separately.
+ * However, this is expensive especially when it's a range of Selection.
+ * When you set both start and end of a range, you should use
+ * SetStartAndEnd() instead.
+ */
+ nsresult SetStart(nsINode* aParent, uint32_t aOffset);
+ nsresult SetEnd(nsINode* aParent, uint32_t aOffset);
+
already_AddRefed<nsRange> CloneRange() const;
- nsresult Set(nsINode* aStartParent, int32_t aStartOffset,
- nsINode* aEndParent, int32_t aEndOffset)
+ /**
+ * SetStartAndEnd() works similar to call both SetStart() and SetEnd().
+ * Different from calls them separately, this does nothing if either
+ * the start point or the end point is invalid point.
+ * If the specified start point is after the end point, the range will be
+ * collapsed at the end point. Similarly, if they are in different root,
+ * the range will be collapsed at the end point.
+ */
+ nsresult SetStartAndEnd(nsINode* aStartParent, uint32_t aStartOffset,
+ nsINode* aEndParent, uint32_t aEndOffset);
+
+ /**
+ * CollapseTo() works similar to call both SetStart() and SetEnd() with
+ * same node and offset. This just calls SetStartAndParent() to set
+ * collapsed range at aParent and aOffset.
+ */
+ nsresult CollapseTo(nsINode* aParent, uint32_t aOffset)
{
- // If this starts being hot, we may be able to optimize this a bit,
- // but for now just set start and end separately.
- nsresult rv = SetStart(aStartParent, aStartOffset);
- NS_ENSURE_SUCCESS(rv, rv);
+ return SetStartAndEnd(aParent, aOffset, aParent, aOffset);
+ }
- return SetEnd(aEndParent, aEndOffset);
+ /**
+ * Retrieves node and offset for setting start or end of a range to
+ * before or after aNode.
+ */
+ static nsINode* GetParentAndOffsetAfter(nsINode* aNode, uint32_t* aOffset)
+ {
+ MOZ_ASSERT(aNode);
+ MOZ_ASSERT(aOffset);
+ *aOffset = 0;
+ nsINode* parentNode = aNode->GetParentNode();
+ if (!parentNode) {
+ return nullptr;
+ }
+ int32_t indexInParent = parentNode->IndexOf(aNode);
+ if (NS_WARN_IF(indexInParent < 0)) {
+ return nullptr;
+ }
+ *aOffset = static_cast<uint32_t>(indexInParent) + 1;
+ return parentNode;
+ }
+ static nsINode* GetParentAndOffsetBefore(nsINode* aNode, uint32_t* aOffset)
+ {
+ MOZ_ASSERT(aNode);
+ MOZ_ASSERT(aOffset);
+ *aOffset = 0;
+ nsINode* parentNode = aNode->GetParentNode();
+ if (!parentNode) {
+ return nullptr;
+ }
+ int32_t indexInParent = parentNode->IndexOf(aNode);
+ if (NS_WARN_IF(indexInParent < 0)) {
+ return nullptr;
+ }
+ *aOffset = static_cast<uint32_t>(indexInParent);
+ return parentNode;
}
NS_IMETHOD GetUsedFontFaces(nsIDOMFontFaceList** aResult);
@@ -225,6 +281,7 @@ public:
nsINode* GetParentObject() const { return mOwner; }
virtual JSObject* WrapObject(JSContext* cx, JS::Handle<JSObject*> aGivenProto) override final;
+ DocGroup* GetDocGroup() const;
private:
// no copy's or assigns
@@ -274,8 +331,8 @@ public:
static void CollectClientRectsAndText(nsLayoutUtils::RectCallback* aCollector,
mozilla::dom::DOMStringList* aTextList,
nsRange* aRange,
- nsINode* aStartParent, int32_t aStartOffset,
- nsINode* aEndParent, int32_t aEndOffset,
+ nsINode* aStartParent, uint32_t aStartOffset,
+ nsINode* aEndParent, uint32_t aEndOffset,
bool aClampToEdge, bool aFlushLayout);
/**
@@ -297,12 +354,24 @@ protected:
void UnregisterCommonAncestor(nsINode* aNode);
nsINode* IsValidBoundary(nsINode* aNode);
+ /**
+ * XXX nsRange should accept 0 - UINT32_MAX as offset. However, users of
+ * nsRange treat offset as int32_t. Additionally, some other internal
+ * APIs like nsINode::IndexOf() use int32_t. Therefore, nsRange should
+ * accept only 0 - INT32_MAX as valid offset for now.
+ */
+ static bool IsValidOffset(uint32_t aOffset)
+ {
+ return aOffset <= INT32_MAX;
+ }
+ static bool IsValidOffset(nsINode* aNode, uint32_t aOffset);
+
// CharacterDataChanged set aNotInsertedYet to true to disable an assertion
// and suppress re-registering a range common ancestor node since
// the new text node of a splitText hasn't been inserted yet.
// CharacterDataChanged does the re-registering when needed.
- void DoSetRange(nsINode* aStartN, int32_t aStartOffset,
- nsINode* aEndN, int32_t aEndOffset,
+ void DoSetRange(nsINode* aStartN, uint32_t aStartOffset,
+ nsINode* aEndN, uint32_t aEndOffset,
nsINode* aRoot, bool aNotInsertedYet = false);
/**
@@ -350,8 +419,8 @@ protected:
nsCOMPtr<nsINode> mStartParent;
nsCOMPtr<nsINode> mEndParent;
RefPtr<mozilla::dom::Selection> mSelection;
- int32_t mStartOffset;
- int32_t mEndOffset;
+ uint32_t mStartOffset;
+ uint32_t mEndOffset;
bool mIsPositioned : 1;
bool mMaySpanAnonymousSubtrees : 1;
diff --git a/dom/base/nsReferencedElement.cpp b/dom/base/nsReferencedElement.cpp
index 4d708eb16..554aea3b4 100644
--- a/dom/base/nsReferencedElement.cpp
+++ b/dom/base/nsReferencedElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsReferencedElement.h b/dom/base/nsReferencedElement.h
index 730a19610..543af0f87 100644
--- a/dom/base/nsReferencedElement.h
+++ b/dom/base/nsReferencedElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsSandboxFlags.h b/dom/base/nsSandboxFlags.h
index b8c9ac357..652dc3e7c 100644
--- a/dom/base/nsSandboxFlags.h
+++ b/dom/base/nsSandboxFlags.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsScreen.cpp b/dom/base/nsScreen.cpp
index 8b129531f..7aee016c2 100644
--- a/dom/base/nsScreen.cpp
+++ b/dom/base/nsScreen.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsScreen.h b/dom/base/nsScreen.h
index 15bc602b7..6a108445e 100644
--- a/dom/base/nsScreen.h
+++ b/dom/base/nsScreen.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsScriptNameSpaceManager.cpp b/dom/base/nsScriptNameSpaceManager.cpp
index 6003a1fc1..acbf0d404 100644
--- a/dom/base/nsScriptNameSpaceManager.cpp
+++ b/dom/base/nsScriptNameSpaceManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsScriptNameSpaceManager.h b/dom/base/nsScriptNameSpaceManager.h
index 3817e2c9c..c9f9ccb10 100644
--- a/dom/base/nsScriptNameSpaceManager.h
+++ b/dom/base/nsScriptNameSpaceManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/base/nsStructuredCloneContainer.cpp b/dom/base/nsStructuredCloneContainer.cpp
index ea2d38bc8..6e3a69256 100644
--- a/dom/base/nsStructuredCloneContainer.cpp
+++ b/dom/base/nsStructuredCloneContainer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStructuredCloneContainer.h b/dom/base/nsStructuredCloneContainer.h
index a826c8c07..580275b17 100644
--- a/dom/base/nsStructuredCloneContainer.h
+++ b/dom/base/nsStructuredCloneContainer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStubAnimationObserver.cpp b/dom/base/nsStubAnimationObserver.cpp
index 3ded9b2d0..7495877d8 100644
--- a/dom/base/nsStubAnimationObserver.cpp
+++ b/dom/base/nsStubAnimationObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStubAnimationObserver.h b/dom/base/nsStubAnimationObserver.h
index 0310fbcc4..ff8c54f2e 100644
--- a/dom/base/nsStubAnimationObserver.h
+++ b/dom/base/nsStubAnimationObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStubDocumentObserver.cpp b/dom/base/nsStubDocumentObserver.cpp
index 92f251165..00f2c0ea0 100644
--- a/dom/base/nsStubDocumentObserver.cpp
+++ b/dom/base/nsStubDocumentObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStubDocumentObserver.h b/dom/base/nsStubDocumentObserver.h
index 1ca626888..f9631ac2a 100644
--- a/dom/base/nsStubDocumentObserver.h
+++ b/dom/base/nsStubDocumentObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStubMutationObserver.cpp b/dom/base/nsStubMutationObserver.cpp
index 4f6b6fa63..d06bc7e98 100644
--- a/dom/base/nsStubMutationObserver.cpp
+++ b/dom/base/nsStubMutationObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStubMutationObserver.h b/dom/base/nsStubMutationObserver.h
index 438a7ae69..f3df91103 100644
--- a/dom/base/nsStubMutationObserver.h
+++ b/dom/base/nsStubMutationObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStyleLinkElement.cpp b/dom/base/nsStyleLinkElement.cpp
index 2e5cdac6f..21a4f694a 100644
--- a/dom/base/nsStyleLinkElement.cpp
+++ b/dom/base/nsStyleLinkElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStyleLinkElement.h b/dom/base/nsStyleLinkElement.h
index d9042c756..a0664106a 100644
--- a/dom/base/nsStyleLinkElement.h
+++ b/dom/base/nsStyleLinkElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsStyledElement.cpp b/dom/base/nsStyledElement.cpp
index 03d1187ab..42b632e71 100644
--- a/dom/base/nsStyledElement.cpp
+++ b/dom/base/nsStyledElement.cpp
@@ -1,10 +1,10 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 "nsStyledElement.h"
+#include "mozAutoDocUpdate.h"
#include "nsGkAtoms.h"
#include "nsAttrValue.h"
#include "nsAttrValueInlines.h"
@@ -39,7 +39,6 @@ nsStyledElement::ParseAttribute(int32_t aNamespaceID,
nsAttrValue& aResult)
{
if (aAttribute == nsGkAtoms::style && aNamespaceID == kNameSpaceID_None) {
- SetMayHaveStyle();
ParseStyleAttribute(aValue, aResult, false);
return true;
}
@@ -49,6 +48,22 @@ nsStyledElement::ParseAttribute(int32_t aNamespaceID,
}
nsresult
+nsStyledElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue, bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::style) {
+ if (aValue) {
+ SetMayHaveStyle();
+ }
+ }
+ }
+
+ return nsStyledElementBase::BeforeSetAttr(aNamespaceID, aName, aValue,
+ aNotify);
+}
+
+nsresult
nsStyledElement::SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
const nsAString* aSerialized,
bool aNotify)
@@ -56,6 +71,7 @@ nsStyledElement::SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
SetMayHaveStyle();
bool modification = false;
nsAttrValue oldValue;
+ bool oldValueSet = false;
bool hasListeners = aNotify &&
nsContentUtils::HasMutationListeners(this,
@@ -75,6 +91,7 @@ nsStyledElement::SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
oldValueStr);
if (modification) {
oldValue.SetTo(oldValueStr);
+ oldValueSet = true;
}
}
else if (aNotify && IsInUncomposedDoc()) {
@@ -88,9 +105,12 @@ nsStyledElement::SetInlineStyleDeclaration(DeclarationBlock* aDeclaration,
static_cast<uint8_t>(nsIDOMMutationEvent::MODIFICATION) :
static_cast<uint8_t>(nsIDOMMutationEvent::ADDITION);
+ nsIDocument* document = GetComposedDoc();
+ mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL, aNotify);
return SetAttrAndNotify(kNameSpaceID_None, nsGkAtoms::style, nullptr,
- oldValue, attrValue, modType, hasListeners,
- aNotify, kDontCallAfterSetAttr);
+ oldValueSet ? &oldValue : nullptr, attrValue, modType,
+ hasListeners, aNotify, kDontCallAfterSetAttr,
+ document, updateBatch);
}
DeclarationBlock*
@@ -141,7 +161,9 @@ nsStyledElement::ReparseStyleAttribute(bool aForceInDataDoc)
ParseStyleAttribute(stringValue, attrValue, aForceInDataDoc);
// Don't bother going through SetInlineStyleDeclaration; we don't
// want to fire off mutation events or document notifications anyway
- nsresult rv = mAttrsAndChildren.SetAndSwapAttr(nsGkAtoms::style, attrValue);
+ bool oldValueSet;
+ nsresult rv = mAttrsAndChildren.SetAndSwapAttr(nsGkAtoms::style, attrValue,
+ &oldValueSet);
NS_ENSURE_SUCCESS(rv, rv);
}
diff --git a/dom/base/nsStyledElement.h b/dom/base/nsStyledElement.h
index c4894d87f..4c32a049b 100644
--- a/dom/base/nsStyledElement.h
+++ b/dom/base/nsStyledElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -80,6 +79,10 @@ protected:
* document.
*/
nsresult ReparseStyleAttribute(bool aForceInDataDoc);
+
+ virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify) override;
};
NS_DEFINE_STATIC_IID_ACCESSOR(nsStyledElement, NS_STYLED_ELEMENT_IID)
diff --git a/dom/base/nsSyncLoadService.h b/dom/base/nsSyncLoadService.h
index b9297f8bc..80092aa6f 100644
--- a/dom/base/nsSyncLoadService.h
+++ b/dom/base/nsSyncLoadService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsTextFragment.cpp b/dom/base/nsTextFragment.cpp
index 260e254be..87f19e787 100644
--- a/dom/base/nsTextFragment.cpp
+++ b/dom/base/nsTextFragment.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsTextFragment.h b/dom/base/nsTextFragment.h
index 47624d721..b72721207 100644
--- a/dom/base/nsTextFragment.h
+++ b/dom/base/nsTextFragment.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsTextFragmentImpl.h b/dom/base/nsTextFragmentImpl.h
index 991c23e10..af3157950 100644
--- a/dom/base/nsTextFragmentImpl.h
+++ b/dom/base/nsTextFragmentImpl.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsTextFragmentSSE2.cpp b/dom/base/nsTextFragmentSSE2.cpp
index 60f6cf6a1..90a81026d 100644
--- a/dom/base/nsTextFragmentSSE2.cpp
+++ b/dom/base/nsTextFragmentSSE2.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsTextNode.cpp b/dom/base/nsTextNode.cpp
index 25c2d3525..3fd45f466 100644
--- a/dom/base/nsTextNode.cpp
+++ b/dom/base/nsTextNode.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -21,6 +20,7 @@
#ifdef DEBUG
#include "nsRange.h"
#endif
+#include "nsDocument.h"
using namespace mozilla;
using namespace mozilla::dom;
@@ -155,6 +155,12 @@ void nsTextNode::UnbindFromTree(bool aDeep, bool aNullParent)
nsGenericDOMDataNode::UnbindFromTree(aDeep, aNullParent);
}
+bool
+nsTextNode::IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject)
+{
+ return nsDocument::IsWebComponentsEnabled(aCx, aObject);
+}
+
#ifdef DEBUG
void
nsTextNode::List(FILE* out, int32_t aIndent) const
diff --git a/dom/base/nsTextNode.h b/dom/base/nsTextNode.h
index 488540a82..ab3352f7e 100644
--- a/dom/base/nsTextNode.h
+++ b/dom/base/nsTextNode.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -75,6 +74,10 @@ public:
virtual nsIDOMNode* AsDOMNode() override { return this; }
+ // Need to have a copy here because including nsDocument.h in this file will
+ // fail to build on Windows.
+ static bool IsWebComponentsEnabled(JSContext* aCx, JSObject* aObject);
+
#ifdef DEBUG
virtual void List(FILE* out, int32_t aIndent) const override;
virtual void DumpContent(FILE* out, int32_t aIndent, bool aDumpAll) const override;
diff --git a/dom/base/nsTraversal.h b/dom/base/nsTraversal.h
index 8b0b55300..2a6601793 100644
--- a/dom/base/nsTraversal.h
+++ b/dom/base/nsTraversal.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsTreeSanitizer.cpp b/dom/base/nsTreeSanitizer.cpp
index 471956443..39c2408b7 100644
--- a/dom/base/nsTreeSanitizer.cpp
+++ b/dom/base/nsTreeSanitizer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsViewportInfo.cpp b/dom/base/nsViewportInfo.cpp
index 5a69faa92..3fc2efc90 100644
--- a/dom/base/nsViewportInfo.cpp
+++ b/dom/base/nsViewportInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsWindowMemoryReporter.cpp b/dom/base/nsWindowMemoryReporter.cpp
index 8f4bf6b11..bf6eb6342 100644
--- a/dom/base/nsWindowMemoryReporter.cpp
+++ b/dom/base/nsWindowMemoryReporter.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsWindowMemoryReporter.h b/dom/base/nsWindowMemoryReporter.h
index 5d40dc9f5..6cf72519d 100644
--- a/dom/base/nsWindowMemoryReporter.h
+++ b/dom/base/nsWindowMemoryReporter.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsWindowRoot.cpp b/dom/base/nsWindowRoot.cpp
index b839a0ee5..817587714 100644
--- a/dom/base/nsWindowRoot.cpp
+++ b/dom/base/nsWindowRoot.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -180,13 +179,13 @@ nsWindowRoot::GetContextForEventHandlers(nsresult* aRv)
}
nsresult
-nsWindowRoot::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsWindowRoot::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
aVisitor.mForceContentDispatch = true; //FIXME! Bug 329119
// To keep mWindow alive
aVisitor.mItemData = static_cast<nsISupports *>(mWindow);
- aVisitor.mParentTarget = mParent;
+ aVisitor.SetParentTarget(mParent, false);
return NS_OK;
}
diff --git a/dom/base/nsWindowRoot.h b/dom/base/nsWindowRoot.h
index 214f49d52..c813f6e8b 100644
--- a/dom/base/nsWindowRoot.h
+++ b/dom/base/nsWindowRoot.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsWrapperCache.cpp b/dom/base/nsWrapperCache.cpp
index c5993fe7b..bd1acf318 100644
--- a/dom/base/nsWrapperCache.cpp
+++ b/dom/base/nsWrapperCache.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsWrapperCache.h b/dom/base/nsWrapperCache.h
index 56cae89ed..8bdc1b93b 100644
--- a/dom/base/nsWrapperCache.h
+++ b/dom/base/nsWrapperCache.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsWrapperCacheInlines.h b/dom/base/nsWrapperCacheInlines.h
index f91e5db59..2576c02ec 100644
--- a/dom/base/nsWrapperCacheInlines.h
+++ b/dom/base/nsWrapperCacheInlines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsXHTMLContentSerializer.cpp b/dom/base/nsXHTMLContentSerializer.cpp
index 0a39ef663..f7a0f9e1b 100755
--- a/dom/base/nsXHTMLContentSerializer.cpp
+++ b/dom/base/nsXHTMLContentSerializer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -15,6 +14,7 @@
#include "nsIDOMElement.h"
#include "nsIContent.h"
#include "nsIDocument.h"
+#include "nsElementTable.h"
#include "nsNameSpaceManager.h"
#include "nsString.h"
#include "nsUnicharUtils.h"
@@ -27,7 +27,6 @@
#include "nsEscape.h"
#include "nsITextToSubURI.h"
#include "nsCRT.h"
-#include "nsIParserService.h"
#include "nsContentUtils.h"
#include "nsLWBrkCIID.h"
#include "nsIScriptElement.h"
@@ -667,18 +666,7 @@ nsXHTMLContentSerializer::LineBreakBeforeOpen(int32_t aNamespaceID, nsIAtom* aNa
aName == nsGkAtoms::html) {
return true;
}
- else {
- nsIParserService* parserService = nsContentUtils::GetParserService();
-
- if (parserService) {
- bool res;
- parserService->
- IsBlock(parserService->HTMLCaseSensitiveAtomTagToId(aName), res);
- return res;
- }
- }
-
- return mAddSpace;
+ return nsHTMLElement::IsBlock(nsHTMLTags::CaseSensitiveAtomTagToId(aName));
}
bool
@@ -748,31 +736,15 @@ nsXHTMLContentSerializer::LineBreakAfterClose(int32_t aNamespaceID, nsIAtom* aNa
(aName == nsGkAtoms::tr) ||
(aName == nsGkAtoms::th) ||
(aName == nsGkAtoms::td) ||
- (aName == nsGkAtoms::pre) ||
(aName == nsGkAtoms::title) ||
- (aName == nsGkAtoms::li) ||
(aName == nsGkAtoms::dt) ||
(aName == nsGkAtoms::dd) ||
- (aName == nsGkAtoms::blockquote) ||
(aName == nsGkAtoms::select) ||
(aName == nsGkAtoms::option) ||
- (aName == nsGkAtoms::p) ||
- (aName == nsGkAtoms::map) ||
- (aName == nsGkAtoms::div)) {
+ (aName == nsGkAtoms::map)) {
return true;
}
- else {
- nsIParserService* parserService = nsContentUtils::GetParserService();
-
- if (parserService) {
- bool res;
- parserService->
- IsBlock(parserService->HTMLCaseSensitiveAtomTagToId(aName), res);
- return res;
- }
- }
-
- return false;
+ return nsHTMLElement::IsBlock(nsHTMLTags::CaseSensitiveAtomTagToId(aName));
}
diff --git a/dom/base/nsXHTMLContentSerializer.h b/dom/base/nsXHTMLContentSerializer.h
index 79ecf28f1..d79f588b8 100644
--- a/dom/base/nsXHTMLContentSerializer.h
+++ b/dom/base/nsXHTMLContentSerializer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsXMLContentSerializer.cpp b/dom/base/nsXMLContentSerializer.cpp
index f12bb8fdc..1bf075875 100644
--- a/dom/base/nsXMLContentSerializer.cpp
+++ b/dom/base/nsXMLContentSerializer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -19,7 +18,7 @@
#include "nsIContent.h"
#include "nsIDocument.h"
#include "nsIDocumentEncoder.h"
-#include "nsIParserService.h"
+#include "nsElementTable.h"
#include "nsNameSpaceManager.h"
#include "nsTextFragment.h"
#include "nsString.h"
@@ -994,14 +993,9 @@ ElementNeedsSeparateEndTag(Element* aElement, Element* aOriginalElement)
// HTML container tags should have a separate end tag even if empty, per spec.
// See
// https://w3c.github.io/DOM-Parsing/#dfn-concept-xml-serialization-algorithm
- bool isHTMLContainer = true; // Default in case we get no parser service.
- nsIParserService* parserService = nsContentUtils::GetParserService();
- if (parserService) {
- nsIAtom* localName = aElement->NodeInfo()->NameAtom();
- parserService->IsContainer(
- parserService->HTMLCaseSensitiveAtomTagToId(localName),
- isHTMLContainer);
- }
+ nsIAtom* localName = aElement->NodeInfo()->NameAtom();
+ bool isHTMLContainer =
+ nsHTMLElement::IsContainer(nsHTMLTags::CaseSensitiveAtomTagToId(localName));
return isHTMLContainer;
}
diff --git a/dom/base/nsXMLContentSerializer.h b/dom/base/nsXMLContentSerializer.h
index 2f76b0892..b48f9411d 100644
--- a/dom/base/nsXMLContentSerializer.h
+++ b/dom/base/nsXMLContentSerializer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsXMLNameSpaceMap.cpp b/dom/base/nsXMLNameSpaceMap.cpp
index 7134cfebb..2e1fc4cf9 100644
--- a/dom/base/nsXMLNameSpaceMap.cpp
+++ b/dom/base/nsXMLNameSpaceMap.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/nsXMLNameSpaceMap.h b/dom/base/nsXMLNameSpaceMap.h
index c8c1eb8ba..0029174db 100644
--- a/dom/base/nsXMLNameSpaceMap.h
+++ b/dom/base/nsXMLNameSpaceMap.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/test/chrome/chrome.ini b/dom/base/test/chrome/chrome.ini
index 765bbd2df..64b1c8454 100644
--- a/dom/base/test/chrome/chrome.ini
+++ b/dom/base/test/chrome/chrome.ini
@@ -18,8 +18,8 @@ support-files =
file_bug1209621.xul
fileconstructor_file.png
frame_bug814638.xul
- frame_registerElement_content.html
- registerElement_ep.js
+ frame_custom_element_content.html
+ custom_element_ep.js
host_bug814638.xul
window_nsITextInputProcessor.xul
title_window.xul
@@ -62,8 +62,6 @@ support-files = ../file_bug357450.js
[test_bug1139964.xul]
[test_bug1209621.xul]
[test_cpows.xul]
-[test_registerElement_content.xul]
-[test_registerElement_ep.xul]
[test_domparsing.xul]
[test_fileconstructor.xul]
[test_fileconstructor_tempfile.xul]
diff --git a/dom/base/test/chrome/registerElement_ep.js b/dom/base/test/chrome/registerElement_ep.js
deleted file mode 100644
index de32ba51c..000000000
--- a/dom/base/test/chrome/registerElement_ep.js
+++ /dev/null
@@ -1,8 +0,0 @@
-var proto = Object.create(HTMLElement.prototype);
-proto.magicNumber = 42;
-proto.createdCallback = function() {
- finishTest(this.magicNumber === 42);
-};
-document.registerElement("x-foo", { prototype: proto });
-
-document.createElement("x-foo");
diff --git a/dom/base/test/chrome/test_registerElement_content.xul b/dom/base/test/chrome/test_registerElement_content.xul
deleted file mode 100644
index 9a918f2d7..000000000
--- a/dom/base/test/chrome/test_registerElement_content.xul
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
- type="text/css"?>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1130028
--->
-<window title="Mozilla Bug 1130028"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/javascript"
- src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-
- <!-- test results are displayed in the html:body -->
- <body xmlns="http://www.w3.org/1999/xhtml">
- <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1130028"
- target="_blank">Mozilla Bug 1130028</a>
- <iframe onload="startTests()" id="frame" src="http://example.com/chrome/dom/base/test/chrome/frame_registerElement_content.html"></iframe>
- </body>
-
- <!-- test code goes here -->
- <script type="application/javascript"><![CDATA[
-
- /** Test for Bug 1130028 **/
- SimpleTest.waitForExplicitFinish();
-
- var createdCallbackCount = 0;
-
- // Callback should be called once by element created in chrome,
- // and once by element created in content.
- function createdCallbackCalled() {
- createdCallbackCount++;
- ok(true, "Created callback called, should be called twice in test.");
- is(this.magicNumber, 42, "Callback should be able to see the custom prototype.");
- if (createdCallbackCount == 2) {
- SimpleTest.finish();
- }
- }
-
- function startTests() {
- var frame = $("frame");
-
- var c = frame.contentDocument.registerElement("x-foo");
- var elem = new c();
- is(elem.tagName, "X-FOO", "Constructor should create an x-foo element.");
-
- var proto = Object.create(frame.contentWindow.HTMLElement.prototype);
- proto.magicNumber = 42;
- proto.createdCallback = createdCallbackCalled;
- frame.contentDocument.registerElement("x-bar", { prototype: proto });
-
- frame.contentDocument.createElement("x-bar");
- }
-
- ]]></script>
-</window>
diff --git a/dom/base/test/chrome/test_registerElement_ep.xul b/dom/base/test/chrome/test_registerElement_ep.xul
deleted file mode 100644
index 6f1745268..000000000
--- a/dom/base/test/chrome/test_registerElement_ep.xul
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
- type="text/css"?>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1130028
--->
-<window title="Mozilla Bug 1130028"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/javascript"
- src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
-
- <!-- test results are displayed in the html:body -->
- <body xmlns="http://www.w3.org/1999/xhtml">
- <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1130028"
- target="_blank">Mozilla Bug 1130028</a>
- <iframe onload="startTests()" id="frame" src="http://example.com/chrome/dom/base/test/chrome/frame_registerElement_content.html"></iframe>
- </body>
-
- <!-- test code goes here -->
- <script type="application/javascript"><![CDATA[
-
- Components.utils.import("resource://gre/modules/Services.jsm");
-
- /** Test for Bug 1130028 **/
- SimpleTest.waitForExplicitFinish();
-
- function finishTest(canSeePrototype) {
- ok(true, "createdCallback called when reigsterElement was called with an extended principal.");
- ok(canSeePrototype, "createdCallback should be able to see custom prototype.");
- SimpleTest.finish();
- }
-
- function startTests() {
- var frame = $("frame");
-
- // Create a sandbox with an extended principal then run a script that registers a custom element in the sandbox.
- var sandbox = Components.utils.Sandbox([frame.contentWindow], { sandboxPrototype: frame.contentWindow });
- sandbox.finishTest = finishTest;
- Services.scriptloader.loadSubScript("chrome://mochitests/content/chrome/dom/base/test/chrome/registerElement_ep.js", sandbox);
- }
-
- ]]></script>
-</window>
diff --git a/dom/base/test/gtest/TestNativeXMLHttpRequest.cpp b/dom/base/test/gtest/TestNativeXMLHttpRequest.cpp
index 920d80e96..d08bd4f46 100644
--- a/dom/base/test/gtest/TestNativeXMLHttpRequest.cpp
+++ b/dom/base/test/gtest/TestNativeXMLHttpRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/test/gtest/TestParserDialogOptions.cpp b/dom/base/test/gtest/TestParserDialogOptions.cpp
index 055f9ebfd..d10d8f698 100644
--- a/dom/base/test/gtest/TestParserDialogOptions.cpp
+++ b/dom/base/test/gtest/TestParserDialogOptions.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/test/gtest/TestPlainTextSerializer.cpp b/dom/base/test/gtest/TestPlainTextSerializer.cpp
index c29340209..ebff28131 100644
--- a/dom/base/test/gtest/TestPlainTextSerializer.cpp
+++ b/dom/base/test/gtest/TestPlainTextSerializer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/base/test/gtest/moz.build b/dom/base/test/gtest/moz.build
index a211184e8..9b9752448 100644
--- a/dom/base/test/gtest/moz.build
+++ b/dom/base/test/gtest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/base/test/jsmodules/moz.build b/dom/base/test/jsmodules/moz.build
index f16b6dd80..fe6140f43 100644
--- a/dom/base/test/jsmodules/moz.build
+++ b/dom/base/test/jsmodules/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/base/test/mochitest.ini b/dom/base/test/mochitest.ini
index 3dfd666f8..8183dab8b 100644
--- a/dom/base/test/mochitest.ini
+++ b/dom/base/test/mochitest.ini
@@ -630,7 +630,6 @@ skip-if = toolkit == 'android' #bug 904183
[test_document.all_unqualified.html]
[test_document_constructor.html]
[test_document_importNode_document.html]
-[test_document_register.html]
[test_domcursor.html]
[test_domparser_null_char.html]
[test_domparsing.html]
@@ -698,7 +697,6 @@ skip-if = (os != 'android') # meta-viewport tag support is mobile-only
skip-if = toolkit == 'android' #TIMED_OUT
[test_mozMatchesSelector.html]
[test_mutationobserver_anonymous.html]
-[test_mutationobservers.html]
[test_named_frames.html]
[test_navigator_hardwareConcurrency.html]
[test_navigator_language.html]
diff --git a/dom/base/test/moz.build b/dom/base/test/moz.build
index 5e60632e4..0ca4a008b 100644
--- a/dom/base/test/moz.build
+++ b/dom/base/test/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/base/test/test_document_register.html b/dom/base/test/test_document_register.html
index 6cf15a52f..7de235108 100644
--- a/dom/base/test/test_document_register.html
+++ b/dom/base/test/test_document_register.html
@@ -13,8 +13,10 @@
SimpleTest.waitForExplicitFinish();
function startTests() {
- var c = document.getElementById("fooframe").contentDocument.registerElement("x-foo");
- var elem = new c();
+ var frame = document.getElementById("fooframe");
+ class XFoo extends frame.contentWindow.HTMLElement {};
+ frame.contentWindow.customElements.define("x-foo", XFoo);
+ var elem = new XFoo();
is(elem.tagName, "X-FOO", "Constructor should create an x-foo element.");
var anotherElem = $("fooframe").contentDocument.createElement("x-foo");
diff --git a/dom/bindings/AtomList.h b/dom/bindings/AtomList.h
index 53765e101..91fe9bec3 100644
--- a/dom/bindings/AtomList.h
+++ b/dom/bindings/AtomList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/BindingDeclarations.h b/dom/bindings/BindingDeclarations.h
index c712511ab..a69d08823 100644
--- a/dom/bindings/BindingDeclarations.h
+++ b/dom/bindings/BindingDeclarations.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/BindingUtils.cpp b/dom/bindings/BindingUtils.cpp
index 41ca6a629..a8884d6a4 100644
--- a/dom/bindings/BindingUtils.cpp
+++ b/dom/bindings/BindingUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -16,11 +15,14 @@
#include "mozilla/SizePrintfMacros.h"
#include "mozilla/Unused.h"
#include "mozilla/UseCounter.h"
+#include "mozilla/dom/DocGroup.h"
#include "AccessCheck.h"
#include "jsfriendapi.h"
+#include "nsContentCreatorFunctions.h"
#include "nsContentUtils.h"
#include "nsGlobalWindow.h"
+#include "nsHTMLTags.h"
#include "nsIDocShell.h"
#include "nsIDOMGlobalPropertyInitializer.h"
#include "nsIPermissionManager.h"
@@ -37,6 +39,7 @@
#include "nsGlobalWindow.h"
#include "mozilla/dom/ScriptSettings.h"
+#include "mozilla/dom/CustomElementRegistry.h"
#include "mozilla/dom/DOMError.h"
#include "mozilla/dom/DOMErrorBinding.h"
#include "mozilla/dom/DOMException.h"
@@ -44,6 +47,7 @@
#include "mozilla/dom/HTMLObjectElement.h"
#include "mozilla/dom/HTMLObjectElementBinding.h"
#include "mozilla/dom/HTMLSharedObjectElement.h"
+#include "mozilla/dom/HTMLElementBinding.h"
#include "mozilla/dom/HTMLEmbedElementBinding.h"
#include "mozilla/dom/HTMLAppletElementBinding.h"
#include "mozilla/dom/Promise.h"
@@ -62,6 +66,30 @@ namespace dom {
using namespace workers;
+// Forward declare GetConstructorObject methods.
+#define HTML_TAG(_tag, _classname, _interfacename) \
+namespace HTML##_interfacename##ElementBinding { \
+ JSObject* GetConstructorObject(JSContext*); \
+}
+#define HTML_OTHER(_tag)
+#include "nsHTMLTagList.h"
+#undef HTML_TAG
+#undef HTML_OTHER
+
+typedef JSObject* (*constructorGetterCallback)(JSContext*);
+
+// Mapping of html tag and GetConstructorObject methods.
+#define HTML_TAG(_tag, _classname, _interfacename) HTML##_interfacename##ElementBinding::GetConstructorObject,
+#define HTML_OTHER(_tag) nullptr,
+// We use eHTMLTag_foo (where foo is the tag) which is defined in nsHTMLTags.h
+// to index into this array.
+static const constructorGetterCallback sConstructorGetterCallback[] = {
+ HTMLUnknownElementBinding::GetConstructorObject,
+#include "nsHTMLTagList.h"
+#undef HTML_TAG
+#undef HTML_OTHER
+};
+
const JSErrorFormatString ErrorFormatString[] = {
#define MSG_DEF(_name, _argc, _exn, _str) \
{ #_name, _str, _argc, _exn },
@@ -3382,6 +3410,161 @@ GetDesiredProto(JSContext* aCx, const JS::CallArgs& aCallArgs,
return true;
}
+// https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor
+already_AddRefed<nsGenericHTMLElement>
+CreateHTMLElement(const GlobalObject& aGlobal, const JS::CallArgs& aCallArgs,
+ JS::Handle<JSObject*> aGivenProto, ErrorResult& aRv)
+{
+ // Step 1.
+ nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
+ if (!window) {
+ aRv.Throw(NS_ERROR_UNEXPECTED);
+ return nullptr;
+ }
+
+ nsIDocument* doc = window->GetExtantDoc();
+ if (!doc) {
+ aRv.Throw(NS_ERROR_UNEXPECTED);
+ return nullptr;
+ }
+
+ RefPtr<mozilla::dom::CustomElementRegistry> registry(window->CustomElements());
+ if (!registry) {
+ aRv.Throw(NS_ERROR_UNEXPECTED);
+ return nullptr;
+ }
+
+ // Step 2 is in the code output by CGClassConstructor.
+ // Step 3.
+ JSContext* cx = aGlobal.Context();
+ JS::Rooted<JSObject*> newTarget(cx, &aCallArgs.newTarget().toObject());
+ CustomElementDefinition* definition =
+ registry->LookupCustomElementDefinition(cx, newTarget);
+ if (!definition) {
+ aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>();
+ return nullptr;
+ }
+
+ // The callee might be an Xray. Unwrap it to get actual callee.
+ JS::Rooted<JSObject*> callee(cx, js::CheckedUnwrap(&aCallArgs.callee()));
+ if (!callee) {
+ aRv.Throw(NS_ERROR_DOM_SECURITY_ERR);
+ return nullptr;
+ }
+
+ // And the actual callee might be in different compartment, so enter its
+ // compartment before getting the standard constructor object to compare to,
+ // so we get it from the same global as callee itself.
+ JSAutoCompartment ac(cx, callee);
+ int32_t tag = eHTMLTag_userdefined;
+ if (!definition->IsCustomBuiltIn()) {
+ // Step 4.
+ // If the definition is for an autonomous custom element, the active
+ // function should be HTMLElement.
+ JS::Rooted<JSObject*> constructor(cx, HTMLElementBinding::GetConstructorObject(cx));
+ if (!constructor) {
+ aRv.NoteJSContextException(cx);
+ return nullptr;
+ }
+
+ if (callee != constructor) {
+ aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>();
+ return nullptr;
+ }
+ } else {
+ // Step 5.
+ // If the definition is for a customized built-in element, the localName
+ // should be defined in the specification.
+ tag = nsHTMLTags::CaseSensitiveAtomTagToId(definition->mLocalName);
+ if (tag == eHTMLTag_userdefined) {
+ aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>();
+ return nullptr;
+ }
+
+ MOZ_ASSERT(tag <= NS_HTML_TAG_MAX, "tag is out of bounds");
+
+ // If the definition is for a customized built-in element, the active
+ // function should be the localname's element interface.
+ constructorGetterCallback cb = sConstructorGetterCallback[tag];
+ if (!cb) {
+ aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>();
+ return nullptr;
+ }
+
+ JS::Rooted<JSObject*> constructor(cx, cb(cx));
+ if (!constructor) {
+ aRv.NoteJSContextException(cx);
+ return nullptr;
+ }
+
+ if (callee != constructor) {
+ aRv.ThrowTypeError<MSG_ILLEGAL_CONSTRUCTOR>();
+ return nullptr;
+ }
+ }
+
+ RefPtr<mozilla::dom::NodeInfo> nodeInfo =
+ doc->NodeInfoManager()->GetNodeInfo(definition->mLocalName,
+ nullptr,
+ kNameSpaceID_XHTML,
+ nsIDOMNode::ELEMENT_NODE);
+ if (!nodeInfo) {
+ aRv.Throw(NS_ERROR_UNEXPECTED);
+ return nullptr;
+ }
+
+ // Step 6 and Step 7 are in the code output by CGClassConstructor.
+ // Step 8.
+ nsTArray<RefPtr<nsGenericHTMLElement>>& constructionStack =
+ definition->mConstructionStack;
+ if (constructionStack.IsEmpty()) {
+ RefPtr<nsGenericHTMLElement> newElement;
+ if (tag == eHTMLTag_userdefined) {
+ // Autonomous custom element.
+ newElement = NS_NewHTMLElement(nodeInfo.forget());
+ } else {
+ // Customized built-in element.
+ newElement = CreateHTMLElement(tag, nodeInfo.forget(), NOT_FROM_PARSER);
+ }
+
+ newElement->SetCustomElementData(
+ new CustomElementData(definition->mType, CustomElementData::State::eCustom));
+
+ newElement->SetCustomElementDefinition(definition);
+
+ return newElement.forget();
+ }
+
+ // Step 9.
+ RefPtr<nsGenericHTMLElement>& element = constructionStack.LastElement();
+
+ // Step 10.
+ if (element == ALEADY_CONSTRUCTED_MARKER) {
+ aRv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
+ return nullptr;
+ }
+
+ // Step 11.
+ // Do prototype swizzling for upgrading a custom element here, for cases when
+ // we have a reflector already. If we don't have one yet, our caller will
+ // create it with the right proto (by calling DoGetOrCreateDOMReflector with
+ // that proto).
+ JS::Rooted<JSObject*> reflector(cx, element->GetWrapper());
+ if (reflector) {
+ // reflector might be in different compartment.
+ JSAutoCompartment ac(cx, reflector);
+ JS::Rooted<JSObject*> givenProto(cx, aGivenProto);
+ if (!JS_WrapObject(cx, &givenProto) ||
+ !JS_SetPrototype(cx, reflector, givenProto)) {
+ aRv.NoteJSContextException(cx);
+ return nullptr;
+ }
+ }
+
+ // Step 12 and Step 13.
+ return element.forget();
+}
+
#ifdef DEBUG
namespace binding_detail {
void
diff --git a/dom/bindings/BindingUtils.h b/dom/bindings/BindingUtils.h
index 12a2e370a..c80631fc1 100644
--- a/dom/bindings/BindingUtils.h
+++ b/dom/bindings/BindingUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -42,6 +41,7 @@
#include "nsWrapperCacheInlines.h"
+class nsGenericHTMLElement;
class nsIJSID;
namespace mozilla {
@@ -49,6 +49,7 @@ namespace mozilla {
enum UseCounter : int16_t;
namespace dom {
+class CustomElementReactionsStack;
template<typename KeyType, typename ValueType> class Record;
nsresult
@@ -3420,6 +3421,13 @@ bool
GetDesiredProto(JSContext* aCx, const JS::CallArgs& aCallArgs,
JS::MutableHandle<JSObject*> aDesiredProto);
+// This function is expected to be called from the constructor function for an
+// HTML element interface; the global/callargs need to be whatever was passed to
+// that constructor function.
+already_AddRefed<nsGenericHTMLElement>
+CreateHTMLElement(const GlobalObject& aGlobal, const JS::CallArgs& aCallArgs,
+ JS::Handle<JSObject*> aGivenProto, ErrorResult& aRv);
+
void
SetDocumentAndPageUseCounter(JSContext* aCx, JSObject* aObject,
UseCounter aUseCounter);
diff --git a/dom/bindings/Bindings.conf b/dom/bindings/Bindings.conf
index f08094617..afa019c46 100644
--- a/dom/bindings/Bindings.conf
+++ b/dom/bindings/Bindings.conf
@@ -1,5 +1,4 @@
# -*- Mode:Python; tab-width:8; indent-tabs-mode:nil -*- */
-# vim: set ts=8 sts=4 et sw=4 tw=80: */
# 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/.
@@ -1640,6 +1639,15 @@ DOMInterfaces = {
'register': False,
},
+'TestHTMLConstructorInterface' : {
+ 'headerFile': 'TestBindingHeader.h',
+ 'register': False,
+ },
+
+'TestCEReactionsInterface' : {
+ 'headerFile': 'TestBindingHeader.h',
+ 'register': False,
+ },
}
# These are temporary, until they've been converted to use new DOM bindings
diff --git a/dom/bindings/CallbackFunction.h b/dom/bindings/CallbackFunction.h
index ac2b3e8b3..4bfbc6cd7 100644
--- a/dom/bindings/CallbackFunction.h
+++ b/dom/bindings/CallbackFunction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/CallbackInterface.cpp b/dom/bindings/CallbackInterface.cpp
index 55c1d4d7a..99b6b7512 100644
--- a/dom/bindings/CallbackInterface.cpp
+++ b/dom/bindings/CallbackInterface.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/CallbackInterface.h b/dom/bindings/CallbackInterface.h
index 3ba5182e7..fec4d6410 100644
--- a/dom/bindings/CallbackInterface.h
+++ b/dom/bindings/CallbackInterface.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/CallbackObject.cpp b/dom/bindings/CallbackObject.cpp
index bb01c804c..eb4b828ff 100644
--- a/dom/bindings/CallbackObject.cpp
+++ b/dom/bindings/CallbackObject.cpp
@@ -1,10 +1,10 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 "mozilla/dom/CallbackObject.h"
+#include "mozilla/CycleCollectedJSContext.h"
#include "mozilla/dom/BindingUtils.h"
#include "jsfriendapi.h"
#include "nsIScriptGlobalObject.h"
@@ -79,7 +79,10 @@ CallbackObject::CallSetup::CallSetup(CallbackObject* aCallback,
, mIsMainThread(NS_IsMainThread())
{
if (mIsMainThread) {
- nsContentUtils::EnterMicroTask();
+ CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get();
+ if (ccjs) {
+ ccjs->EnterMicroTask();
+ }
}
// Compute the caller's subject principal (if necessary) early, before we
@@ -288,7 +291,10 @@ CallbackObject::CallSetup::~CallSetup()
// It is important that this is the last thing we do, after leaving the
// compartment and undoing all our entry/incumbent script changes
if (mIsMainThread) {
- nsContentUtils::LeaveMicroTask();
+ CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get();
+ if (ccjs) {
+ ccjs->LeaveMicroTask();
+ }
}
}
diff --git a/dom/bindings/CallbackObject.h b/dom/bindings/CallbackObject.h
index 5cc98fd5d..7456d15ae 100644
--- a/dom/bindings/CallbackObject.h
+++ b/dom/bindings/CallbackObject.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/Codegen.py b/dom/bindings/Codegen.py
index e3cca63b6..c9a5e9f41 100644
--- a/dom/bindings/Codegen.py
+++ b/dom/bindings/Codegen.py
@@ -1753,6 +1753,71 @@ class CGClassConstructor(CGAbstractStaticMethod):
else:
ctorName = self.descriptor.interface.identifier.name
+ # [HTMLConstructor] for custom element
+ # This needs to live in bindings code because it directly examines
+ # newtarget and the callee function to do HTMLConstructor specific things.
+ if self._ctor.isHTMLConstructor():
+ htmlConstructorSanityCheck = dedent("""
+ // The newTarget might be a cross-compartment wrapper. Get the underlying object
+ // so we can do the spec's object-identity checks.
+ JS::Rooted<JSObject*> newTarget(cx, js::CheckedUnwrap(&args.newTarget().toObject()));
+ if (!newTarget) {
+ return ThrowErrorMessage(cx, MSG_ILLEGAL_CONSTRUCTOR);
+ }
+
+ // Step 2 of https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor.
+ // Enter the compartment of our underlying newTarget object, so we end
+ // up comparing to the constructor object for our interface from that global.
+ {
+ JSAutoCompartment ac(cx, newTarget);
+ JS::Handle<JSObject*> constructor(GetConstructorObjectHandle(cx));
+ if (!constructor) {
+ return false;
+ }
+ if (newTarget == constructor) {
+ return ThrowErrorMessage(cx, MSG_ILLEGAL_CONSTRUCTOR);
+ }
+ }
+
+ """)
+
+ # If we are unable to get desired prototype from newTarget, then we
+ # fall back to the interface prototype object from newTarget's realm.
+ htmlConstructorFallback = dedent("""
+ if (!desiredProto) {
+ // Step 7 of https://html.spec.whatwg.org/multipage/dom.html#htmlconstructor.
+ // This fallback behavior is designed to match analogous behavior for the
+ // JavaScript built-ins. So we enter the compartment of our underlying
+ // newTarget object and fall back to the prototype object from that global.
+ // XXX The spec says to use GetFunctionRealm(), which is not actually
+ // the same thing as what we have here (e.g. in the case of scripted callable proxies
+ // whose target is not same-compartment with the proxy, or bound functions, etc).
+ // https://bugzilla.mozilla.org/show_bug.cgi?id=1317658
+ {
+ JSAutoCompartment ac(cx, newTarget);
+ desiredProto = GetProtoObjectHandle(cx);
+ if (!desiredProto) {
+ return false;
+ }
+ }
+
+ // desiredProto is in the compartment of the underlying newTarget object.
+ // Wrap it into the context compartment.
+ if (!JS_WrapObject(cx, &desiredProto)) {
+ return false;
+ }
+ }
+ """)
+ else:
+ htmlConstructorSanityCheck = ""
+ htmlConstructorFallback = ""
+
+
+ # If we're a constructor, "obj" may not be a function, so calling
+ # XrayAwareCalleeGlobal() on it is not safe. Of course in the
+ # constructor case either "obj" is an Xray or we're already in the
+ # content compartment, not the Xray compartment, so just
+ # constructing the GlobalObject from "obj" is fine.
preamble = fill(
"""
JS::CallArgs args = JS::CallArgsFromVp(argc, vp);
@@ -1763,19 +1828,41 @@ class CGClassConstructor(CGAbstractStaticMethod):
// Adding more relocations
return ThrowConstructorWithoutNew(cx, "${ctorName}");
}
+
+ GlobalObject global(cx, obj);
+ if (global.Failed()) {
+ return false;
+ }
+
+ $*{htmlConstructorSanityCheck}
JS::Rooted<JSObject*> desiredProto(cx);
if (!GetDesiredProto(cx, args, &desiredProto)) {
return false;
}
+ $*{htmlConstructorFallback}
""",
chromeOnlyCheck=chromeOnlyCheck,
- ctorName=ctorName)
-
- name = self._ctor.identifier.name
- nativeName = MakeNativeName(self.descriptor.binaryNameFor(name))
- callGenerator = CGMethodCall(nativeName, True, self.descriptor,
- self._ctor, isConstructor=True,
- constructorName=ctorName)
+ ctorName=ctorName,
+ htmlConstructorSanityCheck=htmlConstructorSanityCheck,
+ htmlConstructorFallback=htmlConstructorFallback)
+
+ if self._ctor.isHTMLConstructor():
+ signatures = self._ctor.signatures()
+ assert len(signatures) == 1
+ # Given that HTMLConstructor takes no args, we can just codegen a
+ # call to CreateHTMLElement() in BindingUtils which reuses the
+ # factory thing in HTMLContentSink. Then we don't have to implement
+ # Constructor on all the HTML elements.
+ callGenerator = CGPerSignatureCall(signatures[0][0], signatures[0][1],
+ "CreateHTMLElement", True,
+ self.descriptor, self._ctor,
+ isConstructor=True)
+ else:
+ name = self._ctor.identifier.name
+ nativeName = MakeNativeName(self.descriptor.binaryNameFor(name))
+ callGenerator = CGMethodCall(nativeName, True, self.descriptor,
+ self._ctor, isConstructor=True,
+ constructorName=ctorName)
return preamble + "\n" + callGenerator.define()
@@ -7392,7 +7479,7 @@ class CGPerSignatureCall(CGThing):
def __init__(self, returnType, arguments, nativeMethodName, static,
descriptor, idlNode, argConversionStartsAt=0, getter=False,
setter=False, isConstructor=False, useCounterName=None,
- resultVar=None):
+ resultVar=None, objectName="obj"):
assert idlNode.isMethod() == (not getter and not setter)
assert idlNode.isAttr() == (getter or setter)
# Constructors are always static
@@ -7446,26 +7533,23 @@ class CGPerSignatureCall(CGThing):
argsPre = []
if idlNode.isStatic():
- # If we're a constructor, "obj" may not be a function, so calling
- # XrayAwareCalleeGlobal() on it is not safe. Of course in the
- # constructor case either "obj" is an Xray or we're already in the
- # content compartment, not the Xray compartment, so just
- # constructing the GlobalObject from "obj" is fine.
- if isConstructor:
- objForGlobalObject = "obj"
- else:
- objForGlobalObject = "xpc::XrayAwareCalleeGlobal(obj)"
- cgThings.append(CGGeneric(fill(
- """
- GlobalObject global(cx, ${obj});
- if (global.Failed()) {
- return false;
- }
+ # If we're a constructor, the GlobalObject struct will be created in
+ # CGClassConstructor.
+ if not isConstructor:
+ cgThings.append(CGGeneric(dedent(
+ """
+ GlobalObject global(cx, xpc::XrayAwareCalleeGlobal(obj));
+ if (global.Failed()) {
+ return false;
+ }
+
+ """)))
- """,
- obj=objForGlobalObject)))
argsPre.append("global")
+ if isConstructor and idlNode.isHTMLConstructor():
+ argsPre.extend(["args", "desiredProto"])
+
# For JS-implemented interfaces we do not want to base the
# needsCx decision on the types involved, just on our extended
# attributes. Also, JSContext is not needed for the static case
@@ -7594,6 +7678,17 @@ class CGPerSignatureCall(CGThing):
CGIfWrapper(CGList(xraySteps),
"objIsXray"))
+ if (idlNode.getExtendedAttribute('CEReactions') is not None and
+ not getter):
+ cgThings.append(CGGeneric(dedent(
+ """
+ Maybe<AutoCEReaction> ceReaction;
+ DocGroup* docGroup = self->GetDocGroup();
+ if (docGroup) {
+ ceReaction.emplace(docGroup->CustomElementReactionsStack(), cx);
+ }
+ """)))
+
# If this is a method that was generated by a maplike/setlike
# interface, use the maplike/setlike generator to fill in the body.
# Otherwise, use CGCallGenerator to call the native method.
@@ -10991,7 +11086,8 @@ class CGProxySpecialOperation(CGPerSignatureCall):
# CGPerSignatureCall won't do any argument conversion of its own.
CGPerSignatureCall.__init__(self, returnType, arguments, nativeName,
False, descriptor, operation,
- len(arguments), resultVar=resultVar)
+ len(arguments), resultVar=resultVar,
+ objectName="proxy")
if operation.isSetter() or operation.isCreator():
# arguments[0] is the index or name of the item that we're setting.
@@ -13690,6 +13786,8 @@ class CGForwardDeclarations(CGWrapper):
builder.add(d.nativeType + "Atoms", isStruct=True)
for t in getTypesFromDescriptor(d):
builder.forwardDeclareForType(t, config)
+ if d.hasCEReactions():
+ builder.addInMozillaDom("DocGroup")
for d in dictionaries:
if len(d.members) > 0:
@@ -13767,6 +13865,9 @@ class CGBindingRoot(CGThing):
descriptorRequiresPreferences(d) for d in descriptors)
bindingHeaders["mozilla/dom/DOMJSProxyHandler.h"] = any(
d.concrete and d.proxy for d in descriptors)
+ hasCEReactions = any(d.hasCEReactions() for d in descriptors)
+ bindingHeaders["mozilla/dom/CustomElementRegistry.h"] = hasCEReactions
+ bindingHeaders["mozilla/dom/DocGroup.h"] = hasCEReactions
def descriptorHasChromeOnly(desc):
ctor = desc.interface.ctor()
@@ -14602,6 +14703,12 @@ class CGBindingImplClass(CGClass):
breakAfterReturnDecl=" ",
override=descriptor.wrapperCache,
body=self.getWrapObjectBody()))
+ if descriptor.hasCEReactions():
+ self.methodDecls.insert(0,
+ ClassMethod("GetDocGroup", "DocGroup*", [],
+ const=True,
+ breakAfterReturnDecl=" ",
+ body=self.getGetDocGroupBody()))
if wantGetParent:
self.methodDecls.insert(0,
ClassMethod("GetParentObject",
@@ -14622,6 +14729,9 @@ class CGBindingImplClass(CGClass):
def getGetParentObjectBody(self):
return None
+ def getGetDocGroupBody(self):
+ return None
+
def deps(self):
return self._deps
@@ -14761,6 +14871,8 @@ class CGExampleRoot(CGThing):
self.root = CGNamespace.build(["mozilla", "dom"], self.root)
builder = ForwardDeclarationBuilder()
+ if descriptor.hasCEReactions():
+ builder.addInMozillaDom("DocGroup")
for member in descriptor.interface.members:
if not member.isAttr() and not member.isMethod():
continue
@@ -15072,7 +15184,7 @@ class CGJSImplClass(CGBindingImplClass):
private:
RefPtr<${jsImplName}> mImpl;
- nsCOMPtr<nsISupports> mParent;
+ nsCOMPtr<nsIGlobalObject> mParent;
""",
isupportsDecl=isupportsDecl,
@@ -15151,6 +15263,16 @@ class CGJSImplClass(CGBindingImplClass):
def getGetParentObjectBody(self):
return "return mParent;\n"
+ def getGetDocGroupBody(self):
+ return dedent(
+ """
+ nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(mParent);
+ if (!window) {
+ return nullptr;
+ }
+ return window->GetDocGroup();
+ """)
+
def getCreateFromExistingBody(self):
# XXXbz we could try to get parts of this (e.g. the argument
# conversions) auto-generated by somehow creating an IDLMethod and
diff --git a/dom/bindings/Configuration.py b/dom/bindings/Configuration.py
index a56f2f2fd..2669e3e4c 100644
--- a/dom/bindings/Configuration.py
+++ b/dom/bindings/Configuration.py
@@ -631,6 +631,9 @@ class Descriptor(DescriptorProvider):
not self.interface.isExposedInWindow()) or
self.interface.isExposedInSomeButNotAllWorkers())
+ def hasCEReactions(self):
+ return any(m.getExtendedAttribute("CEReactions") for m in self.interface.members)
+
def isExposedConditionally(self):
return (self.interface.isExposedConditionally() or
self.interface.isExposedInSomeButNotAllWorkers())
diff --git a/dom/bindings/DOMJSClass.h b/dom/bindings/DOMJSClass.h
index c97cf9322..90e90b22a 100644
--- a/dom/bindings/DOMJSClass.h
+++ b/dom/bindings/DOMJSClass.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/DOMJSProxyHandler.cpp b/dom/bindings/DOMJSProxyHandler.cpp
index 49281c1c2..a21ac28a1 100644
--- a/dom/bindings/DOMJSProxyHandler.cpp
+++ b/dom/bindings/DOMJSProxyHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/DOMJSProxyHandler.h b/dom/bindings/DOMJSProxyHandler.h
index e3e151b7a..cd6e66497 100644
--- a/dom/bindings/DOMJSProxyHandler.h
+++ b/dom/bindings/DOMJSProxyHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/DOMString.h b/dom/bindings/DOMString.h
index 72c8445ec..5c7055548 100644
--- a/dom/bindings/DOMString.h
+++ b/dom/bindings/DOMString.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/Date.cpp b/dom/bindings/Date.cpp
index 8c8d50b33..5f45ffd7a 100644
--- a/dom/bindings/Date.cpp
+++ b/dom/bindings/Date.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/Date.h b/dom/bindings/Date.h
index 66c893e4d..12ad35213 100644
--- a/dom/bindings/Date.h
+++ b/dom/bindings/Date.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/ErrorIPCUtils.h b/dom/bindings/ErrorIPCUtils.h
index 0e60d8174..0d41029e7 100644
--- a/dom/bindings/ErrorIPCUtils.h
+++ b/dom/bindings/ErrorIPCUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/ErrorResult.h b/dom/bindings/ErrorResult.h
index da7ec30e7..959bf134a 100644
--- a/dom/bindings/ErrorResult.h
+++ b/dom/bindings/ErrorResult.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/Exceptions.cpp b/dom/bindings/Exceptions.cpp
index 8ace37051..1785010cc 100644
--- a/dom/bindings/Exceptions.cpp
+++ b/dom/bindings/Exceptions.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/Exceptions.h b/dom/bindings/Exceptions.h
index 521c550f5..153be9246 100644
--- a/dom/bindings/Exceptions.h
+++ b/dom/bindings/Exceptions.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/FakeString.h b/dom/bindings/FakeString.h
index bd92a1bca..36a81d205 100644
--- a/dom/bindings/FakeString.h
+++ b/dom/bindings/FakeString.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/JSSlots.h b/dom/bindings/JSSlots.h
index 5e19957d6..76a6bca2e 100644
--- a/dom/bindings/JSSlots.h
+++ b/dom/bindings/JSSlots.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/NonRefcountedDOMObject.h b/dom/bindings/NonRefcountedDOMObject.h
index 2aef9ce4a..6c5c0d581 100644
--- a/dom/bindings/NonRefcountedDOMObject.h
+++ b/dom/bindings/NonRefcountedDOMObject.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/Nullable.h b/dom/bindings/Nullable.h
index 8d7d46905..45ba48454 100644
--- a/dom/bindings/Nullable.h
+++ b/dom/bindings/Nullable.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/PrimitiveConversions.h b/dom/bindings/PrimitiveConversions.h
index 3da58a877..b32eecf09 100644
--- a/dom/bindings/PrimitiveConversions.h
+++ b/dom/bindings/PrimitiveConversions.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/Record.h b/dom/bindings/Record.h
index d6ab31699..83682af04 100644
--- a/dom/bindings/Record.h
+++ b/dom/bindings/Record.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/RootedDictionary.h b/dom/bindings/RootedDictionary.h
index cf4adaaef..634434578 100644
--- a/dom/bindings/RootedDictionary.h
+++ b/dom/bindings/RootedDictionary.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/RootedOwningNonNull.h b/dom/bindings/RootedOwningNonNull.h
index 890afd74f..13424d155 100644
--- a/dom/bindings/RootedOwningNonNull.h
+++ b/dom/bindings/RootedOwningNonNull.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/RootedRefPtr.h b/dom/bindings/RootedRefPtr.h
index e27361b24..34f2da5c9 100644
--- a/dom/bindings/RootedRefPtr.h
+++ b/dom/bindings/RootedRefPtr.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/SimpleGlobalObject.cpp b/dom/bindings/SimpleGlobalObject.cpp
index 88710f7d9..dcf72ee3a 100644
--- a/dom/bindings/SimpleGlobalObject.cpp
+++ b/dom/bindings/SimpleGlobalObject.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -13,6 +12,7 @@
#include "nsNullPrincipal.h"
#include "nsThreadUtils.h"
#include "nsContentUtils.h"
+#include "nsWrapperCacheInlines.h"
#include "xpcprivate.h"
diff --git a/dom/bindings/SimpleGlobalObject.h b/dom/bindings/SimpleGlobalObject.h
index 9781fbfaa..8dc04974f 100644
--- a/dom/bindings/SimpleGlobalObject.h
+++ b/dom/bindings/SimpleGlobalObject.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/StructuredClone.cpp b/dom/bindings/StructuredClone.cpp
index 71b4f5c74..8f7355e2f 100644
--- a/dom/bindings/StructuredClone.cpp
+++ b/dom/bindings/StructuredClone.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/StructuredClone.h b/dom/bindings/StructuredClone.h
index bfd7700c6..8271b7d9f 100644
--- a/dom/bindings/StructuredClone.h
+++ b/dom/bindings/StructuredClone.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/ToJSValue.cpp b/dom/bindings/ToJSValue.cpp
index 7afff41e2..a54854de4 100644
--- a/dom/bindings/ToJSValue.cpp
+++ b/dom/bindings/ToJSValue.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/ToJSValue.h b/dom/bindings/ToJSValue.h
index 76e91c7bc..25bd7639f 100644
--- a/dom/bindings/ToJSValue.h
+++ b/dom/bindings/ToJSValue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/TypedArray.h b/dom/bindings/TypedArray.h
index 75313e255..631707579 100644
--- a/dom/bindings/TypedArray.h
+++ b/dom/bindings/TypedArray.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/UnionMember.h b/dom/bindings/UnionMember.h
index 3842c6eb0..180c58d1a 100644
--- a/dom/bindings/UnionMember.h
+++ b/dom/bindings/UnionMember.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/WebIDLGlobalNameHash.cpp b/dom/bindings/WebIDLGlobalNameHash.cpp
index 981a1a395..c9b1b7d43 100644
--- a/dom/bindings/WebIDLGlobalNameHash.cpp
+++ b/dom/bindings/WebIDLGlobalNameHash.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/WebIDLGlobalNameHash.h b/dom/bindings/WebIDLGlobalNameHash.h
index cd7be2c69..88fc09dc9 100644
--- a/dom/bindings/WebIDLGlobalNameHash.h
+++ b/dom/bindings/WebIDLGlobalNameHash.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/XrayExpandoClass.h b/dom/bindings/XrayExpandoClass.h
index af5c1e9ba..d19c83ed8 100644
--- a/dom/bindings/XrayExpandoClass.h
+++ b/dom/bindings/XrayExpandoClass.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/moz.build b/dom/bindings/moz.build
index 8fc62ba99..261bdf1f5 100644
--- a/dom/bindings/moz.build
+++ b/dom/bindings/moz.build
@@ -1,11 +1,8 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
-TEST_DIRS += ['test']
-
XPIDL_SOURCES += [
'nsIScriptError.idl'
]
@@ -106,33 +103,6 @@ SOURCES += [
'StructuredClone.cpp',
]
-# Tests for maplike and setlike require bindings to be built, which means they
-# must be included in libxul. This breaks the "no test classes are exported"
-# rule stated in the test/ directory, but it's the only way this will work.
-# Test classes are only built in debug mode, and all tests requiring use of
-# them are only run in debug mode.
-if CONFIG['MOZ_DEBUG']:
- EXPORTS.mozilla.dom += [
- "test/TestFunctions.h",
- "test/TestInterfaceIterableDouble.h",
- "test/TestInterfaceIterableDoubleUnion.h",
- "test/TestInterfaceIterableSingle.h",
- "test/TestInterfaceMaplike.h",
- "test/TestInterfaceMaplikeObject.h",
- "test/TestInterfaceSetlike.h",
- "test/TestInterfaceSetlikeNode.h"
- ]
- UNIFIED_SOURCES += [
- "test/TestFunctions.cpp",
- "test/TestInterfaceIterableDouble.cpp",
- "test/TestInterfaceIterableDoubleUnion.cpp",
- "test/TestInterfaceIterableSingle.cpp",
- "test/TestInterfaceMaplike.cpp",
- "test/TestInterfaceMaplikeObject.cpp",
- "test/TestInterfaceSetlike.cpp",
- "test/TestInterfaceSetlikeNode.cpp",
- ]
-
include('/ipc/chromium/chromium-config.mozbuild')
if CONFIG['MOZ_AUDIO_CHANNEL_MANAGER']:
diff --git a/dom/bindings/nsScriptError.cpp b/dom/bindings/nsScriptError.cpp
index 9248d1a31..da4ee9d59 100644
--- a/dom/bindings/nsScriptError.cpp
+++ b/dom/bindings/nsScriptError.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=4 et sw=4 tw=99: */
/* 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/. */
diff --git a/dom/bindings/nsScriptError.h b/dom/bindings/nsScriptError.h
index ac8099c1c..43405ef1b 100644
--- a/dom/bindings/nsScriptError.h
+++ b/dom/bindings/nsScriptError.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/bindings/nsScriptErrorWithStack.cpp b/dom/bindings/nsScriptErrorWithStack.cpp
index 0a8df38b3..4c0536200 100644
--- a/dom/bindings/nsScriptErrorWithStack.cpp
+++ b/dom/bindings/nsScriptErrorWithStack.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=4 et sw=4 tw=99: */
/* 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/. */
diff --git a/dom/bindings/parser/WebIDL.py b/dom/bindings/parser/WebIDL.py
index 4f602365b..81911996d 100644
--- a/dom/bindings/parser/WebIDL.py
+++ b/dom/bindings/parser/WebIDL.py
@@ -1582,7 +1582,7 @@ class IDLInterface(IDLInterfaceOrNamespace):
[self.location])
self._noInterfaceObject = True
- elif identifier == "Constructor" or identifier == "NamedConstructor" or identifier == "ChromeConstructor":
+ elif identifier == "Constructor" or identifier == "NamedConstructor" or identifier == "ChromeConstructor" or identifier == "HTMLConstructor":
if identifier == "Constructor" and not self.hasInterfaceObject():
raise WebIDLError(str(identifier) + " and NoInterfaceObject are incompatible",
[self.location])
@@ -1595,11 +1595,20 @@ class IDLInterface(IDLInterfaceOrNamespace):
raise WebIDLError(str(identifier) + " and NoInterfaceObject are incompatible",
[self.location])
+ if identifier == "HTMLConstructor":
+ if not self.hasInterfaceObject():
+ raise WebIDLError(str(identifier) + " and NoInterfaceObject are incompatible",
+ [self.location])
+
+ if not attr.noArguments():
+ raise WebIDLError(str(identifier) + " must take no arguments",
+ [attr.location])
+
args = attr.args() if attr.hasArgs() else []
retType = IDLWrapperType(self.location, self)
- if identifier == "Constructor" or identifier == "ChromeConstructor":
+ if identifier == "Constructor" or identifier == "ChromeConstructor" or identifier == "HTMLConstructor":
name = "constructor"
allowForbidden = True
else:
@@ -1610,7 +1619,8 @@ class IDLInterface(IDLInterfaceOrNamespace):
allowForbidden=allowForbidden)
method = IDLMethod(self.location, methodIdentifier, retType,
- args, static=True)
+ args, static=True,
+ htmlConstructor=(identifier == "HTMLConstructor"))
# Constructors are always NewObject and are always
# assumed to be able to throw (since there's no way to
# indicate otherwise) and never have any other
@@ -1622,7 +1632,7 @@ class IDLInterface(IDLInterfaceOrNamespace):
method.addExtendedAttributes(
[IDLExtendedAttribute(self.location, ("ChromeOnly",))])
- if identifier == "Constructor" or identifier == "ChromeConstructor":
+ if identifier == "Constructor" or identifier == "ChromeConstructor" or identifier == "HTMLConstructor":
method.resolve(self)
else:
# We need to detect conflicts for NamedConstructors across
@@ -4073,6 +4083,11 @@ class IDLAttribute(IDLInterfaceMember):
raise WebIDLError("Attribute returns a type that is not exposed "
"everywhere where the attribute is exposed",
[self.location])
+ if self.getExtendedAttribute("CEReactions"):
+ if self.readonly:
+ raise WebIDLError("[CEReactions] is not allowed on "
+ "readonly attributes",
+ [self.location])
def handleExtendedAttribute(self, attr):
identifier = attr.identifier()
@@ -4243,6 +4258,10 @@ class IDLAttribute(IDLInterfaceMember):
raise WebIDLError("[Unscopable] is only allowed on non-static "
"attributes and operations",
[attr.location, self.location])
+ elif identifier == "CEReactions":
+ if not attr.noArguments():
+ raise WebIDLError("[CEReactions] must take no arguments",
+ [attr.location])
elif (identifier == "Pref" or
identifier == "Deprecated" or
identifier == "SetterThrows" or
@@ -4537,7 +4556,7 @@ class IDLMethod(IDLInterfaceMember, IDLScope):
static=False, getter=False, setter=False, creator=False,
deleter=False, specialType=NamedOrIndexed.Neither,
legacycaller=False, stringifier=False, jsonifier=False,
- maplikeOrSetlikeOrIterable=None):
+ maplikeOrSetlikeOrIterable=None, htmlConstructor=False):
# REVIEW: specialType is NamedOrIndexed -- wow, this is messed up.
IDLInterfaceMember.__init__(self, location, identifier,
IDLInterfaceMember.Tags.Method)
@@ -4567,6 +4586,10 @@ class IDLMethod(IDLInterfaceMember, IDLScope):
self._jsonifier = jsonifier
assert maplikeOrSetlikeOrIterable is None or isinstance(maplikeOrSetlikeOrIterable, IDLMaplikeOrSetlikeOrIterableBase)
self.maplikeOrSetlikeOrIterable = maplikeOrSetlikeOrIterable
+ assert isinstance(htmlConstructor, bool)
+ # The identifier of a HTMLConstructor must be 'constructor'.
+ assert not htmlConstructor or identifier.name == "constructor"
+ self._htmlConstructor = htmlConstructor
self._specialType = specialType
self._unforgeable = False
self.dependsOn = "Everything"
@@ -4667,6 +4690,9 @@ class IDLMethod(IDLInterfaceMember, IDLScope):
self.isStringifier() or
self.isJsonifier())
+ def isHTMLConstructor(self):
+ return self._htmlConstructor
+
def hasOverloads(self):
return self._hasOverloads
@@ -4722,6 +4748,8 @@ class IDLMethod(IDLInterfaceMember, IDLScope):
assert not method.isStringifier()
assert not self.isJsonifier()
assert not method.isJsonifier()
+ assert not self.isHTMLConstructor()
+ assert not method.isHTMLConstructor()
return self
@@ -4964,6 +4992,15 @@ class IDLMethod(IDLInterfaceMember, IDLScope):
raise WebIDLError("[Unscopable] is only allowed on non-static "
"attributes and operations",
[attr.location, self.location])
+ elif identifier == "CEReactions":
+ if not attr.noArguments():
+ raise WebIDLError("[CEReactions] must take no arguments",
+ [attr.location])
+
+ if self.isSpecial() and not self.isSetter() and not self.isDeleter():
+ raise WebIDLError("[CEReactions] is only allowed on operation, "
+ "attribute, setter, and deleter",
+ [attr.location, self.location])
elif (identifier == "Throws" or
identifier == "NewObject" or
identifier == "ChromeOnly" or
diff --git a/dom/bindings/parser/tests/test_cereactions.py b/dom/bindings/parser/tests/test_cereactions.py
new file mode 100644
index 000000000..2f9397d90
--- /dev/null
+++ b/dom/bindings/parser/tests/test_cereactions.py
@@ -0,0 +1,162 @@
+def WebIDLTest(parser, harness):
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions(DOMString a)] void foo(boolean arg2);
+ };
+ """)
+
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Should have thrown for [CEReactions] with an argument")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions(DOMString b)] readonly attribute boolean bar;
+ };
+ """)
+
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Should have thrown for [CEReactions] with an argument")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions] attribute boolean bar;
+ };
+ """)
+
+ results = parser.finish()
+ except Exception, e:
+ harness.ok(False, "Shouldn't have thrown for [CEReactions] used on writable attribute. %s" % e)
+ threw = True
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions] void foo(boolean arg2);
+ };
+ """)
+
+ results = parser.finish()
+ except Exception, e:
+ harness.ok(False, "Shouldn't have thrown for [CEReactions] used on regular operations. %s" % e)
+ threw = True
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions] readonly attribute boolean A;
+ };
+ """)
+
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Should have thrown for [CEReactions] used on a readonly attribute")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [CEReactions]
+ interface Foo {
+ }
+ """)
+
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Should have thrown for [CEReactions] used on a interface")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions] getter any(DOMString name);
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw,
+ "Should have thrown for [CEReactions] used on a named getter")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions] creator boolean (DOMString name, boolean value);
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw,
+ "Should have thrown for [CEReactions] used on a named creator")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions] legacycaller double compute(double x);
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw,
+ "Should have thrown for [CEReactions] used on a legacycaller")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions] stringifier DOMString ();
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw,
+ "Should have thrown for [CEReactions] used on a stringifier")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ interface Foo {
+ [CEReactions] jsonifier;
+ };
+ """)
+
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Should have thrown for [CEReactions] used on a jsonifier")
diff --git a/dom/bindings/parser/tests/test_constructor.py b/dom/bindings/parser/tests/test_constructor.py
index 348204c7d..fb651c08d 100644
--- a/dom/bindings/parser/tests/test_constructor.py
+++ b/dom/bindings/parser/tests/test_constructor.py
@@ -13,7 +13,7 @@ def WebIDLTest(parser, harness):
def checkMethod(method, QName, name, signatures,
static=True, getter=False, setter=False, creator=False,
deleter=False, legacycaller=False, stringifier=False,
- chromeOnly=False):
+ chromeOnly=False, htmlConstructor=False):
harness.ok(isinstance(method, WebIDL.IDLMethod),
"Should be an IDLMethod")
harness.ok(method.isMethod(), "Method is a method")
@@ -29,6 +29,7 @@ def WebIDLTest(parser, harness):
harness.check(method.isLegacycaller(), legacycaller, "Method has the correct legacycaller value")
harness.check(method.isStringifier(), stringifier, "Method has the correct stringifier value")
harness.check(method.getExtendedAttribute("ChromeOnly") is not None, chromeOnly, "Method has the correct value for ChromeOnly")
+ harness.check(method.isHTMLConstructor(), htmlConstructor, "Method has the correct htmlConstructor value")
harness.check(len(method.signatures()), len(signatures), "Method has the correct number of signatures")
sigpairs = zip(method.signatures(), signatures)
@@ -80,6 +81,21 @@ def WebIDLTest(parser, harness):
parser = parser.reset()
parser.parse("""
+ [HTMLConstructor]
+ interface TestHTMLConstructor {
+ };
+ """)
+ results = parser.finish()
+ harness.check(len(results), 1, "Should be one production")
+ harness.ok(isinstance(results[0], WebIDL.IDLInterface),
+ "Should be an IDLInterface")
+
+ checkMethod(results[0].ctor(), "::TestHTMLConstructor::constructor",
+ "constructor", [("TestHTMLConstructor (Wrapper)", [])],
+ htmlConstructor=True)
+
+ parser = parser.reset()
+ parser.parse("""
[ChromeConstructor()]
interface TestChromeConstructor {
};
@@ -107,3 +123,151 @@ def WebIDLTest(parser, harness):
threw = True
harness.ok(threw, "Can't have both a Constructor and a ChromeConstructor")
+
+ # Test HTMLConstructor with argument
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [HTMLConstructor(DOMString a)]
+ interface TestHTMLConstructorWithArgs {
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "HTMLConstructor should take no argument")
+
+ # Test HTMLConstructor on a callback interface
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [HTMLConstructor]
+ callback interface TestHTMLConstructorOnCallbackInterface {
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "HTMLConstructor can't be used on a callback interface")
+
+ # Test HTMLConstructor and Constructor
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [Constructor,
+ HTMLConstructor]
+ interface TestHTMLConstructorAndConstructor {
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Can't have both a Constructor and a HTMLConstructor")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [HTMLConstructor,
+ Constructor]
+ interface TestHTMLConstructorAndConstructor {
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Can't have both a HTMLConstructor and a Constructor")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [HTMLConstructor,
+ Constructor(DOMString a)]
+ interface TestHTMLConstructorAndConstructor {
+ };
+ """)
+ except:
+ threw = True
+
+ harness.ok(threw, "Can't have both a HTMLConstructor and a Constructor")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [Constructor(DOMString a),
+ HTMLConstructor]
+ interface TestHTMLConstructorAndConstructor {
+ };
+ """)
+ except:
+ threw = True
+
+ harness.ok(threw, "Can't have both a HTMLConstructor and a Constructor")
+
+ # Test HTMLConstructor and ChromeConstructor
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [ChromeConstructor,
+ HTMLConstructor]
+ interface TestHTMLConstructorAndChromeConstructor {
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Can't have both a HTMLConstructor and a ChromeConstructor")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [HTMLConstructor,
+ ChromeConstructor]
+ interface TestHTMLConstructorAndChromeConstructor {
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Can't have both a HTMLConstructor and a ChromeConstructor")
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [ChromeConstructor(DOMString a),
+ HTMLConstructor]
+ interface TestHTMLConstructorAndChromeConstructor {
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ parser = parser.reset()
+ threw = False
+ try:
+ parser.parse("""
+ [HTMLConstructor,
+ ChromeConstructor(DOMString a)]
+ interface TestHTMLConstructorAndChromeConstructor {
+ };
+ """)
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Can't have both a HTMLConstructor and a ChromeConstructor") \ No newline at end of file
diff --git a/dom/bindings/parser/tests/test_constructor_no_interface_object.py b/dom/bindings/parser/tests/test_constructor_no_interface_object.py
index 2b09ae71e..af7b73d67 100644
--- a/dom/bindings/parser/tests/test_constructor_no_interface_object.py
+++ b/dom/bindings/parser/tests/test_constructor_no_interface_object.py
@@ -34,3 +34,36 @@ def WebIDLTest(parser, harness):
interface TestNamedConstructorNoInterfaceObject {
};
""")
+
+ # Test HTMLConstructor and NoInterfaceObject
+ parser = parser.reset()
+
+ threw = False
+ try:
+ parser.parse("""
+ [NoInterfaceObject, HTMLConstructor]
+ interface TestHTMLConstructorNoInterfaceObject {
+ };
+ """)
+
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Should have thrown.")
+
+ parser = parser.reset()
+
+ threw = False
+ try:
+ parser.parse("""
+ [HTMLConstructor, NoInterfaceObject]
+ interface TestHTMLConstructorNoInterfaceObject {
+ };
+ """)
+
+ results = parser.finish()
+ except:
+ threw = True
+
+ harness.ok(threw, "Should have thrown.") \ No newline at end of file
diff --git a/dom/bindings/test/Makefile.in b/dom/bindings/test/Makefile.in
deleted file mode 100644
index 844a51c27..000000000
--- a/dom/bindings/test/Makefile.in
+++ /dev/null
@@ -1,21 +0,0 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this file,
-# You can obtain one at http://mozilla.org/MPL/2.0/.
-
-ifdef COMPILE_ENVIRONMENT
-
-include ../webidlsrcs.mk
-
-# $(test_sources) comes from webidlsrcs.mk.
-# TODO Update this variable in backend.mk.
-CPPSRCS += $(addprefix ../,$(test_sources))
-
-# Include rules.mk before any of our targets so our first target is coming from
-# rules.mk and running make with no target in this dir does the right thing.
-include $(topsrcdir)/config/rules.mk
-
-endif
-
-check::
- PYTHONDONTWRITEBYTECODE=1 $(PYTHON) $(topsrcdir)/config/pythonpath.py \
- $(PLY_INCLUDE) $(srcdir)/../parser/runtests.py
diff --git a/dom/bindings/test/TestBindingHeader.h b/dom/bindings/test/TestBindingHeader.h
deleted file mode 100644
index ca5aafdc5..000000000
--- a/dom/bindings/test/TestBindingHeader.h
+++ /dev/null
@@ -1,1431 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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/.
- */
-
-#ifndef TestBindingHeader_h
-#define TestBindingHeader_h
-
-#include "mozilla/dom/BindingUtils.h"
-#include "mozilla/dom/Date.h"
-#include "mozilla/dom/MozMap.h"
-#include "mozilla/dom/TypedArray.h"
-#include "mozilla/ErrorResult.h"
-#include "nsCOMPtr.h"
-#include "nsGenericHTMLElement.h"
-#include "nsWrapperCache.h"
-
-// Forward declare this before we include TestCodeGenBinding.h, because that header relies on including
-// this one for it, for ParentDict. Hopefully it won't begin to rely on it in more fundamental ways.
-namespace mozilla {
-namespace dom {
-class TestExternalInterface;
-class Promise;
-} // namespace dom
-} // namespace mozilla
-
-// We don't export TestCodeGenBinding.h, but it's right in our parent dir.
-#include "../TestCodeGenBinding.h"
-
-extern bool TestFuncControlledMember(JSContext*, JSObject*);
-
-namespace mozilla {
-namespace dom {
-
-// IID for nsRenamedInterface
-#define NS_RENAMED_INTERFACE_IID \
-{ 0xd4b19ef3, 0xe68b, 0x4e3f, \
- { 0x94, 0xbc, 0xc9, 0xde, 0x3a, 0x69, 0xb0, 0xe8 } }
-
-class nsRenamedInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECLARE_STATIC_IID_ACCESSOR(NS_RENAMED_INTERFACE_IID)
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(nsRenamedInterface, NS_RENAMED_INTERFACE_IID)
-
-// IID for the IndirectlyImplementedInterface
-#define NS_INDIRECTLY_IMPLEMENTED_INTERFACE_IID \
-{ 0xfed55b69, 0x7012, 0x4849, \
- { 0xaf, 0x56, 0x4b, 0xa9, 0xee, 0x41, 0x30, 0x89 } }
-
-class IndirectlyImplementedInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECLARE_STATIC_IID_ACCESSOR(NS_INDIRECTLY_IMPLEMENTED_INTERFACE_IID)
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- bool IndirectlyImplementedProperty();
- void IndirectlyImplementedProperty(bool);
- void IndirectlyImplementedMethod();
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(IndirectlyImplementedInterface, NS_INDIRECTLY_IMPLEMENTED_INTERFACE_IID)
-
-// IID for the TestExternalInterface
-#define NS_TEST_EXTERNAL_INTERFACE_IID \
-{ 0xd5ba0c99, 0x9b1d, 0x4e71, \
- { 0x8a, 0x94, 0x56, 0x38, 0x6c, 0xa3, 0xda, 0x3d } }
-class TestExternalInterface : public nsISupports
-{
-public:
- NS_DECLARE_STATIC_IID_ACCESSOR(NS_TEST_EXTERNAL_INTERFACE_IID)
- NS_DECL_ISUPPORTS
-};
-
-NS_DEFINE_STATIC_IID_ACCESSOR(TestExternalInterface, NS_TEST_EXTERNAL_INTERFACE_IID)
-
-class TestNonWrapperCacheInterface : public nsISupports
-{
-public:
- NS_DECL_ISUPPORTS
-
- bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto, JS::MutableHandle<JSObject*> aReflector);
-};
-
-class OnlyForUseInConstructor : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-};
-
-class TestInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- // And now our actual WebIDL API
- // Constructors
- static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, ErrorResult&);
- static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, const nsAString&, ErrorResult&);
- static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, uint32_t, const Nullable<bool>&,
- ErrorResult&);
- static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, TestInterface*, ErrorResult&);
- static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, uint32_t, IndirectlyImplementedInterface&, ErrorResult&);
-
- static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, Date&, ErrorResult&);
- static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, const ArrayBuffer&, ErrorResult&);
- static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, const Uint8Array&, ErrorResult&);
- /* static
- already_AddRefed<TestInterface>
- Constructor(const GlobalObject&, uint32_t, uint32_t,
- const TestInterfaceOrOnlyForUseInConstructor&, ErrorResult&);
- */
-
- static
- already_AddRefed<TestInterface> Test(const GlobalObject&, ErrorResult&);
- static
- already_AddRefed<TestInterface> Test(const GlobalObject&, const nsAString&,
- ErrorResult&);
- static
- already_AddRefed<TestInterface> Test(const GlobalObject&, const nsACString&,
- ErrorResult&);
-
- static
- already_AddRefed<TestInterface> Test2(const GlobalObject&,
- const DictForConstructor&,
- JS::Handle<JS::Value>,
- JS::Handle<JSObject*>,
- JS::Handle<JSObject*>,
- const Sequence<Dict>&,
- JS::Handle<JS::Value>,
- const Optional<JS::Handle<JSObject*> >&,
- const Optional<JS::Handle<JSObject*> >&,
- ErrorResult&);
-
- static
- already_AddRefed<TestInterface> Test3(const GlobalObject&,
- const LongOrAnyMozMap&,
- ErrorResult&);
-
- // Integer types
- int8_t ReadonlyByte();
- int8_t WritableByte();
- void SetWritableByte(int8_t);
- void PassByte(int8_t);
- int8_t ReceiveByte();
- void PassOptionalByte(const Optional<int8_t>&);
- void PassOptionalByteBeforeRequired(const Optional<int8_t>&, int8_t);
- void PassOptionalByteWithDefault(int8_t);
- void PassOptionalByteWithDefaultBeforeRequired(int8_t, int8_t);
- void PassNullableByte(const Nullable<int8_t>&);
- void PassOptionalNullableByte(const Optional< Nullable<int8_t> >&);
- void PassVariadicByte(const Sequence<int8_t>&);
- int8_t CachedByte();
- int8_t CachedConstantByte();
- int8_t CachedWritableByte();
- void SetCachedWritableByte(int8_t);
- int8_t SideEffectFreeByte();
- int8_t SetSideEffectFreeByte(int8_t);
- int8_t DomDependentByte();
- int8_t SetDomDependentByte(int8_t);
- int8_t ConstantByte();
- int8_t DeviceStateDependentByte();
- int8_t ReturnByteSideEffectFree();
- int8_t ReturnDOMDependentByte();
- int8_t ReturnConstantByte();
- int8_t ReturnDeviceStateDependentByte();
-
- void UnsafePrerenderMethod();
- int32_t UnsafePrerenderWritable();
- void SetUnsafePrerenderWritable(int32_t);
- int32_t UnsafePrerenderReadonly();
- int16_t ReadonlyShort();
- int16_t WritableShort();
- void SetWritableShort(int16_t);
- void PassShort(int16_t);
- int16_t ReceiveShort();
- void PassOptionalShort(const Optional<int16_t>&);
- void PassOptionalShortWithDefault(int16_t);
-
- int32_t ReadonlyLong();
- int32_t WritableLong();
- void SetWritableLong(int32_t);
- void PassLong(int32_t);
- int16_t ReceiveLong();
- void PassOptionalLong(const Optional<int32_t>&);
- void PassOptionalLongWithDefault(int32_t);
-
- int64_t ReadonlyLongLong();
- int64_t WritableLongLong();
- void SetWritableLongLong(int64_t);
- void PassLongLong(int64_t);
- int64_t ReceiveLongLong();
- void PassOptionalLongLong(const Optional<int64_t>&);
- void PassOptionalLongLongWithDefault(int64_t);
-
- uint8_t ReadonlyOctet();
- uint8_t WritableOctet();
- void SetWritableOctet(uint8_t);
- void PassOctet(uint8_t);
- uint8_t ReceiveOctet();
- void PassOptionalOctet(const Optional<uint8_t>&);
- void PassOptionalOctetWithDefault(uint8_t);
-
- uint16_t ReadonlyUnsignedShort();
- uint16_t WritableUnsignedShort();
- void SetWritableUnsignedShort(uint16_t);
- void PassUnsignedShort(uint16_t);
- uint16_t ReceiveUnsignedShort();
- void PassOptionalUnsignedShort(const Optional<uint16_t>&);
- void PassOptionalUnsignedShortWithDefault(uint16_t);
-
- uint32_t ReadonlyUnsignedLong();
- uint32_t WritableUnsignedLong();
- void SetWritableUnsignedLong(uint32_t);
- void PassUnsignedLong(uint32_t);
- uint32_t ReceiveUnsignedLong();
- void PassOptionalUnsignedLong(const Optional<uint32_t>&);
- void PassOptionalUnsignedLongWithDefault(uint32_t);
-
- uint64_t ReadonlyUnsignedLongLong();
- uint64_t WritableUnsignedLongLong();
- void SetWritableUnsignedLongLong(uint64_t);
- void PassUnsignedLongLong(uint64_t);
- uint64_t ReceiveUnsignedLongLong();
- void PassOptionalUnsignedLongLong(const Optional<uint64_t>&);
- void PassOptionalUnsignedLongLongWithDefault(uint64_t);
-
- float WritableFloat() const;
- void SetWritableFloat(float);
- float WritableUnrestrictedFloat() const;
- void SetWritableUnrestrictedFloat(float);
- Nullable<float> GetWritableNullableFloat() const;
- void SetWritableNullableFloat(Nullable<float>);
- Nullable<float> GetWritableNullableUnrestrictedFloat() const;
- void SetWritableNullableUnrestrictedFloat(Nullable<float>);
- double WritableDouble() const;
- void SetWritableDouble(double);
- double WritableUnrestrictedDouble() const;
- void SetWritableUnrestrictedDouble(double);
- Nullable<double> GetWritableNullableDouble() const;
- void SetWritableNullableDouble(Nullable<double>);
- Nullable<double> GetWritableNullableUnrestrictedDouble() const;
- void SetWritableNullableUnrestrictedDouble(Nullable<double>);
- void PassFloat(float, float, Nullable<float>, Nullable<float>,
- double, double, Nullable<double>, Nullable<double>,
- const Sequence<float>&, const Sequence<float>&,
- const Sequence<Nullable<float> >&,
- const Sequence<Nullable<float> >&,
- const Sequence<double>&, const Sequence<double>&,
- const Sequence<Nullable<double> >&,
- const Sequence<Nullable<double> >&);
- void PassLenientFloat(float, float, Nullable<float>, Nullable<float>,
- double, double, Nullable<double>, Nullable<double>,
- const Sequence<float>&, const Sequence<float>&,
- const Sequence<Nullable<float> >&,
- const Sequence<Nullable<float> >&,
- const Sequence<double>&, const Sequence<double>&,
- const Sequence<Nullable<double> >&,
- const Sequence<Nullable<double> >&);
- float LenientFloatAttr() const;
- void SetLenientFloatAttr(float);
- double LenientDoubleAttr() const;
- void SetLenientDoubleAttr(double);
-
- void PassUnrestricted(float arg1,
- float arg2,
- float arg3,
- float arg4,
- double arg5,
- double arg6,
- double arg7,
- double arg8);
-
- // Interface types
- already_AddRefed<TestInterface> ReceiveSelf();
- already_AddRefed<TestInterface> ReceiveNullableSelf();
- TestInterface* ReceiveWeakSelf();
- TestInterface* ReceiveWeakNullableSelf();
- void PassSelf(TestInterface&);
- void PassNullableSelf(TestInterface*);
- already_AddRefed<TestInterface> NonNullSelf();
- void SetNonNullSelf(TestInterface&);
- already_AddRefed<TestInterface> GetNullableSelf();
- already_AddRefed<TestInterface> CachedSelf();
- void SetNullableSelf(TestInterface*);
- void PassOptionalSelf(const Optional<TestInterface*> &);
- void PassOptionalNonNullSelf(const Optional<NonNull<TestInterface> >&);
- void PassOptionalSelfWithDefault(TestInterface*);
-
- already_AddRefed<TestNonWrapperCacheInterface> ReceiveNonWrapperCacheInterface();
- already_AddRefed<TestNonWrapperCacheInterface> ReceiveNullableNonWrapperCacheInterface();
- void ReceiveNonWrapperCacheInterfaceSequence(nsTArray<RefPtr<TestNonWrapperCacheInterface> >&);
- void ReceiveNullableNonWrapperCacheInterfaceSequence(nsTArray<RefPtr<TestNonWrapperCacheInterface> >&);
- void ReceiveNonWrapperCacheInterfaceNullableSequence(Nullable<nsTArray<RefPtr<TestNonWrapperCacheInterface> > >&);
- void ReceiveNullableNonWrapperCacheInterfaceNullableSequence(Nullable<nsTArray<RefPtr<TestNonWrapperCacheInterface> > >&);
-
- already_AddRefed<IndirectlyImplementedInterface> ReceiveOther();
- already_AddRefed<IndirectlyImplementedInterface> ReceiveNullableOther();
- IndirectlyImplementedInterface* ReceiveWeakOther();
- IndirectlyImplementedInterface* ReceiveWeakNullableOther();
- void PassOther(IndirectlyImplementedInterface&);
- void PassNullableOther(IndirectlyImplementedInterface*);
- already_AddRefed<IndirectlyImplementedInterface> NonNullOther();
- void SetNonNullOther(IndirectlyImplementedInterface&);
- already_AddRefed<IndirectlyImplementedInterface> GetNullableOther();
- void SetNullableOther(IndirectlyImplementedInterface*);
- void PassOptionalOther(const Optional<IndirectlyImplementedInterface*>&);
- void PassOptionalNonNullOther(const Optional<NonNull<IndirectlyImplementedInterface> >&);
- void PassOptionalOtherWithDefault(IndirectlyImplementedInterface*);
-
- already_AddRefed<TestExternalInterface> ReceiveExternal();
- already_AddRefed<TestExternalInterface> ReceiveNullableExternal();
- TestExternalInterface* ReceiveWeakExternal();
- TestExternalInterface* ReceiveWeakNullableExternal();
- void PassExternal(TestExternalInterface*);
- void PassNullableExternal(TestExternalInterface*);
- already_AddRefed<TestExternalInterface> NonNullExternal();
- void SetNonNullExternal(TestExternalInterface*);
- already_AddRefed<TestExternalInterface> GetNullableExternal();
- void SetNullableExternal(TestExternalInterface*);
- void PassOptionalExternal(const Optional<TestExternalInterface*>&);
- void PassOptionalNonNullExternal(const Optional<TestExternalInterface*>&);
- void PassOptionalExternalWithDefault(TestExternalInterface*);
-
- already_AddRefed<TestCallbackInterface> ReceiveCallbackInterface();
- already_AddRefed<TestCallbackInterface> ReceiveNullableCallbackInterface();
- TestCallbackInterface* ReceiveWeakCallbackInterface();
- TestCallbackInterface* ReceiveWeakNullableCallbackInterface();
- void PassCallbackInterface(TestCallbackInterface&);
- void PassNullableCallbackInterface(TestCallbackInterface*);
- already_AddRefed<TestCallbackInterface> NonNullCallbackInterface();
- void SetNonNullCallbackInterface(TestCallbackInterface&);
- already_AddRefed<TestCallbackInterface> GetNullableCallbackInterface();
- void SetNullableCallbackInterface(TestCallbackInterface*);
- void PassOptionalCallbackInterface(const Optional<RefPtr<TestCallbackInterface> >&);
- void PassOptionalNonNullCallbackInterface(const Optional<OwningNonNull<TestCallbackInterface> >&);
- void PassOptionalCallbackInterfaceWithDefault(TestCallbackInterface*);
-
- already_AddRefed<IndirectlyImplementedInterface> ReceiveConsequentialInterface();
- void PassConsequentialInterface(IndirectlyImplementedInterface&);
-
- // Sequence types
- void GetReadonlySequence(nsTArray<int32_t>&);
- void GetReadonlySequenceOfDictionaries(JSContext*, nsTArray<Dict>&);
- void GetReadonlyNullableSequenceOfDictionaries(JSContext*, Nullable<nsTArray<Dict> >&);
- void GetReadonlyFrozenSequence(JSContext*, nsTArray<Dict>&);
- void GetReadonlyFrozenNullableSequence(JSContext*, Nullable<nsTArray<Dict>>&);
- void ReceiveSequence(nsTArray<int32_t>&);
- void ReceiveNullableSequence(Nullable< nsTArray<int32_t> >&);
- void ReceiveSequenceOfNullableInts(nsTArray< Nullable<int32_t> >&);
- void ReceiveNullableSequenceOfNullableInts(Nullable< nsTArray< Nullable<int32_t> > >&);
- void PassSequence(const Sequence<int32_t> &);
- void PassNullableSequence(const Nullable< Sequence<int32_t> >&);
- void PassSequenceOfNullableInts(const Sequence<Nullable<int32_t> >&);
- void PassOptionalSequenceOfNullableInts(const Optional<Sequence<Nullable<int32_t> > > &);
- void PassOptionalNullableSequenceOfNullableInts(const Optional<Nullable<Sequence<Nullable<int32_t> > > > &);
- void ReceiveCastableObjectSequence(nsTArray< RefPtr<TestInterface> > &);
- void ReceiveCallbackObjectSequence(nsTArray< RefPtr<TestCallbackInterface> > &);
- void ReceiveNullableCastableObjectSequence(nsTArray< RefPtr<TestInterface> > &);
- void ReceiveNullableCallbackObjectSequence(nsTArray< RefPtr<TestCallbackInterface> > &);
- void ReceiveCastableObjectNullableSequence(Nullable< nsTArray< RefPtr<TestInterface> > >&);
- void ReceiveNullableCastableObjectNullableSequence(Nullable< nsTArray< RefPtr<TestInterface> > >&);
- void ReceiveWeakCastableObjectSequence(nsTArray<RefPtr<TestInterface>> &);
- void ReceiveWeakNullableCastableObjectSequence(nsTArray<RefPtr<TestInterface>> &);
- void ReceiveWeakCastableObjectNullableSequence(Nullable< nsTArray<RefPtr<TestInterface>> >&);
- void ReceiveWeakNullableCastableObjectNullableSequence(Nullable< nsTArray<RefPtr<TestInterface>> >&);
- void PassCastableObjectSequence(const Sequence< OwningNonNull<TestInterface> >&);
- void PassNullableCastableObjectSequence(const Sequence< RefPtr<TestInterface> > &);
- void PassCastableObjectNullableSequence(const Nullable< Sequence< OwningNonNull<TestInterface> > >&);
- void PassNullableCastableObjectNullableSequence(const Nullable< Sequence< RefPtr<TestInterface> > >&);
- void PassOptionalSequence(const Optional<Sequence<int32_t> >&);
- void PassOptionalSequenceWithDefaultValue(const Sequence<int32_t> &);
- void PassOptionalNullableSequence(const Optional<Nullable<Sequence<int32_t> > >&);
- void PassOptionalNullableSequenceWithDefaultValue(const Nullable< Sequence<int32_t> >&);
- void PassOptionalNullableSequenceWithDefaultValue2(const Nullable< Sequence<int32_t> >&);
- void PassOptionalObjectSequence(const Optional<Sequence<OwningNonNull<TestInterface> > >&);
- void PassExternalInterfaceSequence(const Sequence<RefPtr<TestExternalInterface> >&);
- void PassNullableExternalInterfaceSequence(const Sequence<RefPtr<TestExternalInterface> >&);
-
- void ReceiveStringSequence(nsTArray<nsString>&);
- void PassStringSequence(const Sequence<nsString>&);
-
- void ReceiveByteStringSequence(nsTArray<nsCString>&);
- void PassByteStringSequence(const Sequence<nsCString>&);
-
- void ReceiveAnySequence(JSContext*, nsTArray<JS::Value>&);
- void ReceiveNullableAnySequence(JSContext*, Nullable<nsTArray<JS::Value> >&);
- void ReceiveAnySequenceSequence(JSContext*, nsTArray<nsTArray<JS::Value> >&);
-
- void ReceiveObjectSequence(JSContext*, nsTArray<JSObject*>&);
- void ReceiveNullableObjectSequence(JSContext*, nsTArray<JSObject*>&);
-
- void PassSequenceOfSequences(const Sequence< Sequence<int32_t> >&);
- void PassSequenceOfSequencesOfSequences(const Sequence<Sequence<Sequence<int32_t>>>&);
- void ReceiveSequenceOfSequences(nsTArray< nsTArray<int32_t> >&);
- void ReceiveSequenceOfSequencesOfSequences(nsTArray<nsTArray<nsTArray<int32_t>>>&);
-
- // MozMap types
- void PassMozMap(const MozMap<int32_t> &);
- void PassNullableMozMap(const Nullable< MozMap<int32_t> >&);
- void PassMozMapOfNullableInts(const MozMap<Nullable<int32_t> >&);
- void PassOptionalMozMapOfNullableInts(const Optional<MozMap<Nullable<int32_t> > > &);
- void PassOptionalNullableMozMapOfNullableInts(const Optional<Nullable<MozMap<Nullable<int32_t> > > > &);
- void PassCastableObjectMozMap(const MozMap< OwningNonNull<TestInterface> >&);
- void PassNullableCastableObjectMozMap(const MozMap< RefPtr<TestInterface> > &);
- void PassCastableObjectNullableMozMap(const Nullable< MozMap< OwningNonNull<TestInterface> > >&);
- void PassNullableCastableObjectNullableMozMap(const Nullable< MozMap< RefPtr<TestInterface> > >&);
- void PassOptionalMozMap(const Optional<MozMap<int32_t> >&);
- void PassOptionalNullableMozMap(const Optional<Nullable<MozMap<int32_t> > >&);
- void PassOptionalNullableMozMapWithDefaultValue(const Nullable< MozMap<int32_t> >&);
- void PassOptionalObjectMozMap(const Optional<MozMap<OwningNonNull<TestInterface> > >&);
- void PassExternalInterfaceMozMap(const MozMap<RefPtr<TestExternalInterface> >&);
- void PassNullableExternalInterfaceMozMap(const MozMap<RefPtr<TestExternalInterface> >&);
- void PassStringMozMap(const MozMap<nsString>&);
- void PassByteStringMozMap(const MozMap<nsCString>&);
- void PassMozMapOfMozMaps(const MozMap< MozMap<int32_t> >&);
- void ReceiveMozMap(MozMap<int32_t>&);
- void ReceiveNullableMozMap(Nullable<MozMap<int32_t>>&);
- void ReceiveMozMapOfNullableInts(MozMap<Nullable<int32_t>>&);
- void ReceiveNullableMozMapOfNullableInts(Nullable<MozMap<Nullable<int32_t>>>&);
- void ReceiveMozMapOfMozMaps(MozMap<MozMap<int32_t>>&);
- void ReceiveAnyMozMap(JSContext*, MozMap<JS::Value>&);
-
- // Typed array types
- void PassArrayBuffer(const ArrayBuffer&);
- void PassNullableArrayBuffer(const Nullable<ArrayBuffer>&);
- void PassOptionalArrayBuffer(const Optional<ArrayBuffer>&);
- void PassOptionalNullableArrayBuffer(const Optional<Nullable<ArrayBuffer> >&);
- void PassOptionalNullableArrayBufferWithDefaultValue(const Nullable<ArrayBuffer>&);
- void PassArrayBufferView(const ArrayBufferView&);
- void PassInt8Array(const Int8Array&);
- void PassInt16Array(const Int16Array&);
- void PassInt32Array(const Int32Array&);
- void PassUint8Array(const Uint8Array&);
- void PassUint16Array(const Uint16Array&);
- void PassUint32Array(const Uint32Array&);
- void PassUint8ClampedArray(const Uint8ClampedArray&);
- void PassFloat32Array(const Float32Array&);
- void PassFloat64Array(const Float64Array&);
- void PassSequenceOfArrayBuffers(const Sequence<ArrayBuffer>&);
- void PassSequenceOfNullableArrayBuffers(const Sequence<Nullable<ArrayBuffer> >&);
- void PassMozMapOfArrayBuffers(const MozMap<ArrayBuffer>&);
- void PassMozMapOfNullableArrayBuffers(const MozMap<Nullable<ArrayBuffer> >&);
- void PassVariadicTypedArray(const Sequence<Float32Array>&);
- void PassVariadicNullableTypedArray(const Sequence<Nullable<Float32Array> >&);
- void ReceiveUint8Array(JSContext*, JS::MutableHandle<JSObject*>);
- void SetUint8ArrayAttr(const Uint8Array&);
- void GetUint8ArrayAttr(JSContext*, JS::MutableHandle<JSObject*>);
-
- // DOMString types
- void PassString(const nsAString&);
- void PassNullableString(const nsAString&);
- void PassOptionalString(const Optional<nsAString>&);
- void PassOptionalStringWithDefaultValue(const nsAString&);
- void PassOptionalNullableString(const Optional<nsAString>&);
- void PassOptionalNullableStringWithDefaultValue(const nsAString&);
- void PassVariadicString(const Sequence<nsString>&);
- void ReceiveString(DOMString&);
-
- // ByteString types
- void PassByteString(const nsCString&);
- void PassNullableByteString(const nsCString&);
- void PassOptionalByteString(const Optional<nsCString>&);
- void PassOptionalByteStringWithDefaultValue(const nsCString&);
- void PassOptionalNullableByteString(const Optional<nsCString>&);
- void PassOptionalNullableByteStringWithDefaultValue(const nsCString&);
- void PassVariadicByteString(const Sequence<nsCString>&);
- void PassOptionalUnionByteString(const Optional<ByteStringOrLong>&);
- void PassOptionalUnionByteStringWithDefaultValue(const ByteStringOrLong&);
-
- // USVString types
- void PassUSVS(const nsAString&);
- void PassNullableUSVS(const nsAString&);
- void PassOptionalUSVS(const Optional<nsAString>&);
- void PassOptionalUSVSWithDefaultValue(const nsAString&);
- void PassOptionalNullableUSVS(const Optional<nsAString>&);
- void PassOptionalNullableUSVSWithDefaultValue(const nsAString&);
- void PassVariadicUSVS(const Sequence<nsString>&);
- void ReceiveUSVS(DOMString&);
-
- // Enumerated types
- void PassEnum(TestEnum);
- void PassNullableEnum(const Nullable<TestEnum>&);
- void PassOptionalEnum(const Optional<TestEnum>&);
- void PassEnumWithDefault(TestEnum);
- void PassOptionalNullableEnum(const Optional<Nullable<TestEnum> >&);
- void PassOptionalNullableEnumWithDefaultValue(const Nullable<TestEnum>&);
- void PassOptionalNullableEnumWithDefaultValue2(const Nullable<TestEnum>&);
- TestEnum ReceiveEnum();
- Nullable<TestEnum> ReceiveNullableEnum();
- TestEnum EnumAttribute();
- TestEnum ReadonlyEnumAttribute();
- void SetEnumAttribute(TestEnum);
-
- // Callback types
- void PassCallback(TestCallback&);
- void PassNullableCallback(TestCallback*);
- void PassOptionalCallback(const Optional<OwningNonNull<TestCallback> >&);
- void PassOptionalNullableCallback(const Optional<RefPtr<TestCallback> >&);
- void PassOptionalNullableCallbackWithDefaultValue(TestCallback*);
- already_AddRefed<TestCallback> ReceiveCallback();
- already_AddRefed<TestCallback> ReceiveNullableCallback();
- void PassNullableTreatAsNullCallback(TestTreatAsNullCallback*);
- void PassOptionalNullableTreatAsNullCallback(const Optional<RefPtr<TestTreatAsNullCallback> >&);
- void PassOptionalNullableTreatAsNullCallbackWithDefaultValue(TestTreatAsNullCallback*);
- void SetTreatAsNullCallback(TestTreatAsNullCallback&);
- already_AddRefed<TestTreatAsNullCallback> TreatAsNullCallback();
- void SetNullableTreatAsNullCallback(TestTreatAsNullCallback*);
- already_AddRefed<TestTreatAsNullCallback> GetNullableTreatAsNullCallback();
-
- void ForceCallbackGeneration(TestIntegerReturn&,
- TestNullableIntegerReturn&,
- TestBooleanReturn&,
- TestFloatReturn&,
- TestStringReturn&,
- TestEnumReturn&,
- TestInterfaceReturn&,
- TestNullableInterfaceReturn&,
- TestExternalInterfaceReturn&,
- TestNullableExternalInterfaceReturn&,
- TestCallbackInterfaceReturn&,
- TestNullableCallbackInterfaceReturn&,
- TestCallbackReturn&,
- TestNullableCallbackReturn&,
- TestObjectReturn&,
- TestNullableObjectReturn&,
- TestTypedArrayReturn&,
- TestNullableTypedArrayReturn&,
- TestSequenceReturn&,
- TestNullableSequenceReturn&,
- TestIntegerArguments&,
- TestInterfaceArguments&,
- TestStringEnumArguments&,
- TestObjectArguments&,
- TestOptionalArguments&);
-
- // Any types
- void PassAny(JSContext*, JS::Handle<JS::Value>);
- void PassVariadicAny(JSContext*, const Sequence<JS::Value>&);
- void PassOptionalAny(JSContext*, JS::Handle<JS::Value>);
- void PassAnyDefaultNull(JSContext*, JS::Handle<JS::Value>);
- void PassSequenceOfAny(JSContext*, const Sequence<JS::Value>&);
- void PassNullableSequenceOfAny(JSContext*, const Nullable<Sequence<JS::Value> >&);
- void PassOptionalSequenceOfAny(JSContext*, const Optional<Sequence<JS::Value> >&);
- void PassOptionalNullableSequenceOfAny(JSContext*, const Optional<Nullable<Sequence<JS::Value> > >&);
- void PassOptionalSequenceOfAnyWithDefaultValue(JSContext*, const Nullable<Sequence<JS::Value> >&);
- void PassSequenceOfSequenceOfAny(JSContext*, const Sequence<Sequence<JS::Value> >&);
- void PassSequenceOfNullableSequenceOfAny(JSContext*, const Sequence<Nullable<Sequence<JS::Value> > >&);
- void PassNullableSequenceOfNullableSequenceOfAny(JSContext*, const Nullable<Sequence<Nullable<Sequence<JS::Value> > > >&);
- void PassOptionalNullableSequenceOfNullableSequenceOfAny(JSContext*, const Optional<Nullable<Sequence<Nullable<Sequence<JS::Value> > > > >&);
- void PassMozMapOfAny(JSContext*, const MozMap<JS::Value>&);
- void PassNullableMozMapOfAny(JSContext*, const Nullable<MozMap<JS::Value> >&);
- void PassOptionalMozMapOfAny(JSContext*, const Optional<MozMap<JS::Value> >&);
- void PassOptionalNullableMozMapOfAny(JSContext*, const Optional<Nullable<MozMap<JS::Value> > >&);
- void PassOptionalMozMapOfAnyWithDefaultValue(JSContext*, const Nullable<MozMap<JS::Value> >&);
- void PassMozMapOfMozMapOfAny(JSContext*, const MozMap<MozMap<JS::Value> >&);
- void PassMozMapOfNullableMozMapOfAny(JSContext*, const MozMap<Nullable<MozMap<JS::Value> > >&);
- void PassNullableMozMapOfNullableMozMapOfAny(JSContext*, const Nullable<MozMap<Nullable<MozMap<JS::Value> > > >&);
- void PassOptionalNullableMozMapOfNullableMozMapOfAny(JSContext*, const Optional<Nullable<MozMap<Nullable<MozMap<JS::Value>>>>>&);
- void PassOptionalNullableMozMapOfNullableSequenceOfAny(JSContext*, const Optional<Nullable<MozMap<Nullable<Sequence<JS::Value>>>>>&);
- void PassOptionalNullableSequenceOfNullableMozMapOfAny(JSContext*, const Optional<Nullable<Sequence<Nullable<MozMap<JS::Value>>>>>&);
- void ReceiveAny(JSContext*, JS::MutableHandle<JS::Value>);
-
- // object types
- void PassObject(JSContext*, JS::Handle<JSObject*>);
- void PassVariadicObject(JSContext*, const Sequence<JSObject*>&);
- void PassNullableObject(JSContext*, JS::Handle<JSObject*>);
- void PassVariadicNullableObject(JSContext*, const Sequence<JSObject*>&);
- void PassOptionalObject(JSContext*, const Optional<JS::Handle<JSObject*> >&);
- void PassOptionalNullableObject(JSContext*, const Optional<JS::Handle<JSObject*> >&);
- void PassOptionalNullableObjectWithDefaultValue(JSContext*, JS::Handle<JSObject*>);
- void PassSequenceOfObject(JSContext*, const Sequence<JSObject*>&);
- void PassSequenceOfNullableObject(JSContext*, const Sequence<JSObject*>&);
- void PassNullableSequenceOfObject(JSContext*, const Nullable<Sequence<JSObject*> >&);
- void PassOptionalNullableSequenceOfNullableSequenceOfObject(JSContext*, const Optional<Nullable<Sequence<Nullable<Sequence<JSObject*> > > > >&);
- void PassOptionalNullableSequenceOfNullableSequenceOfNullableObject(JSContext*, const Optional<Nullable<Sequence<Nullable<Sequence<JSObject*> > > > >&);
- void PassMozMapOfObject(JSContext*, const MozMap<JSObject*>&);
- void ReceiveObject(JSContext*, JS::MutableHandle<JSObject*>);
- void ReceiveNullableObject(JSContext*, JS::MutableHandle<JSObject*>);
-
- // Union types
- void PassUnion(JSContext*, const ObjectOrLong& arg);
- void PassUnionWithNullable(JSContext* cx, const ObjectOrNullOrLong& arg)
- {
- OwningObjectOrLong returnValue;
- if (arg.IsNull()) {
- } else if (arg.IsObject()) {
- JS::Rooted<JSObject*> obj(cx, arg.GetAsObject());
- JS_GetClass(obj);
- returnValue.SetAsObject() = obj;
- } else {
- int32_t i = arg.GetAsLong();
- i += 1;
- returnValue.SetAsLong() = i;
- }
- }
-#ifdef DEBUG
- void PassUnion2(const LongOrBoolean& arg);
- void PassUnion3(JSContext*, const ObjectOrLongOrBoolean& arg);
- void PassUnion4(const NodeOrLongOrBoolean& arg);
- void PassUnion5(JSContext*, const ObjectOrBoolean& arg);
- void PassUnion6(JSContext*, const ObjectOrString& arg);
- void PassUnion7(JSContext*, const ObjectOrStringOrLong& arg);
- void PassUnion8(JSContext*, const ObjectOrStringOrBoolean& arg);
- void PassUnion9(JSContext*, const ObjectOrStringOrLongOrBoolean& arg);
- void PassUnion10(const EventInitOrLong& arg);
- void PassUnion11(JSContext*, const CustomEventInitOrLong& arg);
- void PassUnion12(const EventInitOrLong& arg);
- void PassUnion13(JSContext*, const ObjectOrLongOrNull& arg);
- void PassUnion14(JSContext*, const ObjectOrLongOrNull& arg);
- void PassUnion15(const LongSequenceOrLong&);
- void PassUnion16(const Optional<LongSequenceOrLong>&);
- void PassUnion17(const LongSequenceOrNullOrLong&);
- void PassUnion18(JSContext*, const ObjectSequenceOrLong&);
- void PassUnion19(JSContext*, const Optional<ObjectSequenceOrLong>&);
- void PassUnion20(JSContext*, const ObjectSequenceOrLong&);
- void PassUnion21(const LongMozMapOrLong&);
- void PassUnion22(JSContext*, const ObjectMozMapOrLong&);
- void PassUnion23(const ImageDataSequenceOrLong&);
- void PassUnion24(const ImageDataOrNullSequenceOrLong&);
- void PassUnion25(const ImageDataSequenceSequenceOrLong&);
- void PassUnion26(const ImageDataOrNullSequenceSequenceOrLong&);
- void PassUnion27(const StringSequenceOrEventInit&);
- void PassUnion28(const EventInitOrStringSequence&);
- void PassUnionWithCallback(const EventHandlerNonNullOrNullOrLong& arg);
- void PassUnionWithByteString(const ByteStringOrLong&);
- void PassUnionWithMozMap(const StringMozMapOrString&);
- void PassUnionWithMozMapAndSequence(const StringMozMapOrStringSequence&);
- void PassUnionWithSequenceAndMozMap(const StringSequenceOrStringMozMap&);
- void PassUnionWithUSVS(const USVStringOrLong&);
-#endif
- void PassNullableUnion(JSContext*, const Nullable<ObjectOrLong>&);
- void PassOptionalUnion(JSContext*, const Optional<ObjectOrLong>&);
- void PassOptionalNullableUnion(JSContext*, const Optional<Nullable<ObjectOrLong> >&);
- void PassOptionalNullableUnionWithDefaultValue(JSContext*, const Nullable<ObjectOrLong>&);
- //void PassUnionWithInterfaces(const TestInterfaceOrTestExternalInterface& arg);
- //void PassUnionWithInterfacesAndNullable(const TestInterfaceOrNullOrTestExternalInterface& arg);
- void PassUnionWithArrayBuffer(const ArrayBufferOrLong&);
- void PassUnionWithString(JSContext*, const StringOrObject&);
- void PassUnionWithEnum(JSContext*, const SupportedTypeOrObject&);
- //void PassUnionWithCallback(JSContext*, const TestCallbackOrLong&);
- void PassUnionWithObject(JSContext*, const ObjectOrLong&);
-
- void PassUnionWithDefaultValue1(const DoubleOrString& arg);
- void PassUnionWithDefaultValue2(const DoubleOrString& arg);
- void PassUnionWithDefaultValue3(const DoubleOrString& arg);
- void PassUnionWithDefaultValue4(const FloatOrString& arg);
- void PassUnionWithDefaultValue5(const FloatOrString& arg);
- void PassUnionWithDefaultValue6(const FloatOrString& arg);
- void PassUnionWithDefaultValue7(const UnrestrictedDoubleOrString& arg);
- void PassUnionWithDefaultValue8(const UnrestrictedDoubleOrString& arg);
- void PassUnionWithDefaultValue9(const UnrestrictedDoubleOrString& arg);
- void PassUnionWithDefaultValue10(const UnrestrictedDoubleOrString& arg);
- void PassUnionWithDefaultValue11(const UnrestrictedFloatOrString& arg);
- void PassUnionWithDefaultValue12(const UnrestrictedFloatOrString& arg);
- void PassUnionWithDefaultValue13(const UnrestrictedFloatOrString& arg);
- void PassUnionWithDefaultValue14(const DoubleOrByteString& arg);
- void PassUnionWithDefaultValue15(const DoubleOrByteString& arg);
- void PassUnionWithDefaultValue16(const DoubleOrByteString& arg);
- void PassUnionWithDefaultValue17(const DoubleOrSupportedType& arg);
- void PassUnionWithDefaultValue18(const DoubleOrSupportedType& arg);
- void PassUnionWithDefaultValue19(const DoubleOrSupportedType& arg);
-
- void PassNullableUnionWithDefaultValue1(const Nullable<DoubleOrString>& arg);
- void PassNullableUnionWithDefaultValue2(const Nullable<DoubleOrString>& arg);
- void PassNullableUnionWithDefaultValue3(const Nullable<DoubleOrString>& arg);
- void PassNullableUnionWithDefaultValue4(const Nullable<FloatOrString>& arg);
- void PassNullableUnionWithDefaultValue5(const Nullable<FloatOrString>& arg);
- void PassNullableUnionWithDefaultValue6(const Nullable<FloatOrString>& arg);
- void PassNullableUnionWithDefaultValue7(const Nullable<UnrestrictedDoubleOrString>& arg);
- void PassNullableUnionWithDefaultValue8(const Nullable<UnrestrictedDoubleOrString>& arg);
- void PassNullableUnionWithDefaultValue9(const Nullable<UnrestrictedDoubleOrString>& arg);
- void PassNullableUnionWithDefaultValue10(const Nullable<UnrestrictedFloatOrString>& arg);
- void PassNullableUnionWithDefaultValue11(const Nullable<UnrestrictedFloatOrString>& arg);
- void PassNullableUnionWithDefaultValue12(const Nullable<UnrestrictedFloatOrString>& arg);
- void PassNullableUnionWithDefaultValue13(const Nullable<DoubleOrByteString>& arg);
- void PassNullableUnionWithDefaultValue14(const Nullable<DoubleOrByteString>& arg);
- void PassNullableUnionWithDefaultValue15(const Nullable<DoubleOrByteString>& arg);
- void PassNullableUnionWithDefaultValue16(const Nullable<DoubleOrByteString>& arg);
- void PassNullableUnionWithDefaultValue17(const Nullable<DoubleOrSupportedType>& arg);
- void PassNullableUnionWithDefaultValue18(const Nullable<DoubleOrSupportedType>& arg);
- void PassNullableUnionWithDefaultValue19(const Nullable<DoubleOrSupportedType>& arg);
- void PassNullableUnionWithDefaultValue20(const Nullable<DoubleOrSupportedType>& arg);
-
- void PassSequenceOfUnions(const Sequence<OwningCanvasPatternOrCanvasGradient>&);
- void PassSequenceOfUnions2(JSContext*, const Sequence<OwningObjectOrLong>&);
- void PassVariadicUnion(const Sequence<OwningCanvasPatternOrCanvasGradient>&);
-
- void PassSequenceOfNullableUnions(const Sequence<Nullable<OwningCanvasPatternOrCanvasGradient>>&);
- void PassVariadicNullableUnion(const Sequence<Nullable<OwningCanvasPatternOrCanvasGradient>>&);
- void PassMozMapOfUnions(const MozMap<OwningCanvasPatternOrCanvasGradient>&);
- void PassMozMapOfUnions2(JSContext*, const MozMap<OwningObjectOrLong>&);
-
- void ReceiveUnion(OwningCanvasPatternOrCanvasGradient&);
- void ReceiveUnion2(JSContext*, OwningObjectOrLong&);
- void ReceiveUnionContainingNull(OwningCanvasPatternOrNullOrCanvasGradient&);
- void ReceiveNullableUnion(Nullable<OwningCanvasPatternOrCanvasGradient>&);
- void ReceiveNullableUnion2(JSContext*, Nullable<OwningObjectOrLong>&);
- void GetWritableUnion(OwningCanvasPatternOrCanvasGradient&);
- void SetWritableUnion(const CanvasPatternOrCanvasGradient&);
- void GetWritableUnionContainingNull(OwningCanvasPatternOrNullOrCanvasGradient&);
- void SetWritableUnionContainingNull(const CanvasPatternOrNullOrCanvasGradient&);
- void GetWritableNullableUnion(Nullable<OwningCanvasPatternOrCanvasGradient>&);
- void SetWritableNullableUnion(const Nullable<CanvasPatternOrCanvasGradient>&);
-
- // Date types
- void PassDate(Date);
- void PassNullableDate(const Nullable<Date>&);
- void PassOptionalDate(const Optional<Date>&);
- void PassOptionalNullableDate(const Optional<Nullable<Date> >&);
- void PassOptionalNullableDateWithDefaultValue(const Nullable<Date>&);
- void PassDateSequence(const Sequence<Date>&);
- void PassDateMozMap(const MozMap<Date>&);
- void PassNullableDateSequence(const Sequence<Nullable<Date> >&);
- Date ReceiveDate();
- Nullable<Date> ReceiveNullableDate();
-
- // Promise types
- void PassPromise(Promise&);
- void PassNullablePromise(Promise*);
- void PassOptionalPromise(const Optional<OwningNonNull<Promise>>&);
- void PassOptionalNullablePromise(const Optional<RefPtr<Promise>>&);
- void PassOptionalNullablePromiseWithDefaultValue(Promise*);
- void PassPromiseSequence(const Sequence<OwningNonNull<Promise>>&);
- void PassPromiseMozMap(const MozMap<RefPtr<Promise>>&);
- void PassNullablePromiseSequence(const Sequence<RefPtr<Promise>> &);
- Promise* ReceivePromise();
- already_AddRefed<Promise> ReceiveAddrefedPromise();
-
- // binaryNames tests
- void MethodRenamedTo();
- void OtherMethodRenamedTo();
- void MethodRenamedTo(int8_t);
- int8_t AttributeGetterRenamedTo();
- int8_t AttributeRenamedTo();
- void SetAttributeRenamedTo(int8_t);
- int8_t OtherAttributeRenamedTo();
- void SetOtherAttributeRenamedTo(int8_t);
-
- // Dictionary tests
- void PassDictionary(JSContext*, const Dict&);
- void PassDictionary2(JSContext*, const Dict&);
- void GetReadonlyDictionary(JSContext*, Dict&);
- void GetReadonlyNullableDictionary(JSContext*, Nullable<Dict>&);
- void GetWritableDictionary(JSContext*, Dict&);
- void SetWritableDictionary(JSContext*, const Dict&);
- void GetReadonlyFrozenDictionary(JSContext*, Dict&);
- void GetReadonlyFrozenNullableDictionary(JSContext*, Nullable<Dict>&);
- void GetWritableFrozenDictionary(JSContext*, Dict&);
- void SetWritableFrozenDictionary(JSContext*, const Dict&);
- void ReceiveDictionary(JSContext*, Dict&);
- void ReceiveNullableDictionary(JSContext*, Nullable<Dict>&);
- void PassOtherDictionary(const GrandparentDict&);
- void PassSequenceOfDictionaries(JSContext*, const Sequence<Dict>&);
- void PassMozMapOfDictionaries(const MozMap<GrandparentDict>&);
- void PassDictionaryOrLong(JSContext*, const Dict&);
- void PassDictionaryOrLong(int32_t);
- void PassDictContainingDict(JSContext*, const DictContainingDict&);
- void PassDictContainingSequence(JSContext*, const DictContainingSequence&);
- void ReceiveDictContainingSequence(JSContext*, DictContainingSequence&);
- void PassVariadicDictionary(JSContext*, const Sequence<Dict>&);
-
- // Typedefs
- void ExerciseTypedefInterfaces1(TestInterface&);
- already_AddRefed<TestInterface> ExerciseTypedefInterfaces2(TestInterface*);
- void ExerciseTypedefInterfaces3(TestInterface&);
-
- // Deprecated methods and attributes
- int8_t DeprecatedAttribute();
- int8_t SetDeprecatedAttribute(int8_t);
- int8_t DeprecatedMethod();
- int8_t DeprecatedMethodWithContext(JSContext*, const JS::Value&);
-
- // Static methods and attributes
- static void StaticMethod(const GlobalObject&, bool);
- static void StaticMethodWithContext(const GlobalObject&, const JS::Value&);
- static bool StaticAttribute(const GlobalObject&);
- static void SetStaticAttribute(const GlobalObject&, bool);
- static void Assert(const GlobalObject&, bool);
-
- // Deprecated static methods and attributes
- static int8_t StaticDeprecatedAttribute(const GlobalObject&);
- static int8_t SetStaticDeprecatedAttribute(const GlobalObject&, int8_t);
- static int8_t StaticDeprecatedMethod(const GlobalObject&);
- static int8_t StaticDeprecatedMethodWithContext(const GlobalObject&, const JS::Value&);
-
- // Overload resolution tests
- bool Overload1(TestInterface&);
- TestInterface* Overload1(const nsAString&, TestInterface&);
- void Overload2(TestInterface&);
- void Overload2(JSContext*, const Dict&);
- void Overload2(bool);
- void Overload2(const nsAString&);
- void Overload2(Date);
- void Overload3(TestInterface&);
- void Overload3(const TestCallback&);
- void Overload3(bool);
- void Overload4(TestInterface&);
- void Overload4(TestCallbackInterface&);
- void Overload4(const nsAString&);
- void Overload5(int32_t);
- void Overload5(TestEnum);
- void Overload6(int32_t);
- void Overload6(bool);
- void Overload7(int32_t);
- void Overload7(bool);
- void Overload7(const nsCString&);
- void Overload8(int32_t);
- void Overload8(TestInterface&);
- void Overload9(const Nullable<int32_t>&);
- void Overload9(const nsAString&);
- void Overload10(const Nullable<int32_t>&);
- void Overload10(JSContext*, JS::Handle<JSObject*>);
- void Overload11(int32_t);
- void Overload11(const nsAString&);
- void Overload12(int32_t);
- void Overload12(const Nullable<bool>&);
- void Overload13(const Nullable<int32_t>&);
- void Overload13(bool);
- void Overload14(const Optional<int32_t>&);
- void Overload14(TestInterface&);
- void Overload15(int32_t);
- void Overload15(const Optional<NonNull<TestInterface> >&);
- void Overload16(int32_t);
- void Overload16(const Optional<TestInterface*>&);
- void Overload17(const Sequence<int32_t>&);
- void Overload17(const MozMap<int32_t>&);
- void Overload18(const MozMap<nsString>&);
- void Overload18(const Sequence<nsString>&);
- void Overload19(const Sequence<int32_t>&);
- void Overload19(JSContext*, const Dict&);
- void Overload20(JSContext*, const Dict&);
- void Overload20(const Sequence<int32_t>&);
-
- // Variadic handling
- void PassVariadicThirdArg(const nsAString&, int32_t,
- const Sequence<OwningNonNull<TestInterface> >&);
-
- // Conditionally exposed methods/attributes
- bool Prefable1();
- bool Prefable2();
- bool Prefable3();
- bool Prefable4();
- bool Prefable5();
- bool Prefable6();
- bool Prefable7();
- bool Prefable8();
- bool Prefable9();
- void Prefable10();
- void Prefable11();
- bool Prefable12();
- void Prefable13();
- bool Prefable14();
- bool Prefable15();
- bool Prefable16();
- void Prefable17();
- void Prefable18();
- void Prefable19();
- void Prefable20();
- void Prefable21();
- void Prefable22();
- void Prefable23();
- void Prefable24();
-
- // Conditionally exposed methods/attributes involving [SecureContext]
- bool ConditionalOnSecureContext1();
- bool ConditionalOnSecureContext2();
- bool ConditionalOnSecureContext3();
- bool ConditionalOnSecureContext4();
- void ConditionalOnSecureContext5();
- void ConditionalOnSecureContext6();
- void ConditionalOnSecureContext7();
- void ConditionalOnSecureContext8();
-
- // Miscellania
- int32_t AttrWithLenientThis();
- void SetAttrWithLenientThis(int32_t);
- uint32_t UnforgeableAttr();
- uint32_t UnforgeableAttr2();
- uint32_t UnforgeableMethod();
- uint32_t UnforgeableMethod2();
- void Stringify(nsString&);
- void PassRenamedInterface(nsRenamedInterface&);
- TestInterface* PutForwardsAttr();
- TestInterface* PutForwardsAttr2();
- TestInterface* PutForwardsAttr3();
- void GetJsonifierShouldSkipThis(JSContext*, JS::MutableHandle<JS::Value>);
- void SetJsonifierShouldSkipThis(JSContext*, JS::Rooted<JS::Value>&);
- TestParentInterface* JsonifierShouldSkipThis2();
- void SetJsonifierShouldSkipThis2(TestParentInterface&);
- TestCallbackInterface* JsonifierShouldSkipThis3();
- void SetJsonifierShouldSkipThis3(TestCallbackInterface&);
- void ThrowingMethod(ErrorResult& aRv);
- bool GetThrowingAttr(ErrorResult& aRv) const;
- void SetThrowingAttr(bool arg, ErrorResult& aRv);
- bool GetThrowingGetterAttr(ErrorResult& aRv) const;
- void SetThrowingGetterAttr(bool arg);
- bool ThrowingSetterAttr() const;
- void SetThrowingSetterAttr(bool arg, ErrorResult& aRv);
- void NeedsSubjectPrincipalMethod(nsIPrincipal&);
- bool NeedsSubjectPrincipalAttr(nsIPrincipal&);
- void SetNeedsSubjectPrincipalAttr(bool, nsIPrincipal&);
- void NeedsCallerTypeMethod(CallerType);
- bool NeedsCallerTypeAttr(CallerType);
- void SetNeedsCallerTypeAttr(bool, CallerType);
- int16_t LegacyCall(const JS::Value&, uint32_t, TestInterface&);
- void PassArgsWithDefaults(JSContext*, const Optional<int32_t>&,
- TestInterface*, const Dict&, double,
- const Optional<float>&);
-
- void SetDashed_attribute(int8_t);
- int8_t Dashed_attribute();
- void Dashed_method();
-
- // Methods and properties imported via "implements"
- bool ImplementedProperty();
- void SetImplementedProperty(bool);
- void ImplementedMethod();
- bool ImplementedParentProperty();
- void SetImplementedParentProperty(bool);
- void ImplementedParentMethod();
- bool IndirectlyImplementedProperty();
- void SetIndirectlyImplementedProperty(bool);
- void IndirectlyImplementedMethod();
- uint32_t DiamondImplementedProperty();
-
- // Test EnforceRange/Clamp
- void DontEnforceRangeOrClamp(int8_t);
- void DoEnforceRange(int8_t);
- void DoClamp(int8_t);
- void SetEnforcedByte(int8_t);
- int8_t EnforcedByte();
- void SetClampedByte(int8_t);
- int8_t ClampedByte();
-
-private:
- // We add signatures here that _could_ start matching if the codegen
- // got data types wrong. That way if it ever does we'll have a call
- // to these private deleted methods and compilation will fail.
- void SetReadonlyByte(int8_t) = delete;
- template<typename T>
- void SetWritableByte(T) = delete;
- template<typename T>
- void PassByte(T) = delete;
- void PassNullableByte(Nullable<int8_t>&) = delete;
- template<typename T>
- void PassOptionalByte(const Optional<T>&) = delete;
- template<typename T>
- void PassOptionalByteWithDefault(T) = delete;
- void PassVariadicByte(Sequence<int8_t>&) = delete;
-
- void SetReadonlyShort(int16_t) = delete;
- template<typename T>
- void SetWritableShort(T) = delete;
- template<typename T>
- void PassShort(T) = delete;
- template<typename T>
- void PassOptionalShort(const Optional<T>&) = delete;
- template<typename T>
- void PassOptionalShortWithDefault(T) = delete;
-
- void SetReadonlyLong(int32_t) = delete;
- template<typename T>
- void SetWritableLong(T) = delete;
- template<typename T>
- void PassLong(T) = delete;
- template<typename T>
- void PassOptionalLong(const Optional<T>&) = delete;
- template<typename T>
- void PassOptionalLongWithDefault(T) = delete;
-
- void SetReadonlyLongLong(int64_t) = delete;
- template<typename T>
- void SetWritableLongLong(T) = delete;
- template<typename T>
- void PassLongLong(T) = delete;
- template<typename T>
- void PassOptionalLongLong(const Optional<T>&) = delete;
- template<typename T>
- void PassOptionalLongLongWithDefault(T) = delete;
-
- void SetReadonlyOctet(uint8_t) = delete;
- template<typename T>
- void SetWritableOctet(T) = delete;
- template<typename T>
- void PassOctet(T) = delete;
- template<typename T>
- void PassOptionalOctet(const Optional<T>&) = delete;
- template<typename T>
- void PassOptionalOctetWithDefault(T) = delete;
-
- void SetReadonlyUnsignedShort(uint16_t) = delete;
- template<typename T>
- void SetWritableUnsignedShort(T) = delete;
- template<typename T>
- void PassUnsignedShort(T) = delete;
- template<typename T>
- void PassOptionalUnsignedShort(const Optional<T>&) = delete;
- template<typename T>
- void PassOptionalUnsignedShortWithDefault(T) = delete;
-
- void SetReadonlyUnsignedLong(uint32_t) = delete;
- template<typename T>
- void SetWritableUnsignedLong(T) = delete;
- template<typename T>
- void PassUnsignedLong(T) = delete;
- template<typename T>
- void PassOptionalUnsignedLong(const Optional<T>&) = delete;
- template<typename T>
- void PassOptionalUnsignedLongWithDefault(T) = delete;
-
- void SetReadonlyUnsignedLongLong(uint64_t) = delete;
- template<typename T>
- void SetWritableUnsignedLongLong(T) = delete;
- template<typename T>
- void PassUnsignedLongLong(T) = delete;
- template<typename T>
- void PassOptionalUnsignedLongLong(const Optional<T>&) = delete;
- template<typename T>
- void PassOptionalUnsignedLongLongWithDefault(T) = delete;
-
- // Enforce that only const things are passed for sequences
- void PassSequence(Sequence<int32_t> &) = delete;
- void PassNullableSequence(Nullable< Sequence<int32_t> >&) = delete;
- void PassOptionalNullableSequenceWithDefaultValue(Nullable< Sequence<int32_t> >&) = delete;
- void PassSequenceOfAny(JSContext*, Sequence<JS::Value>&) = delete;
- void PassNullableSequenceOfAny(JSContext*, Nullable<Sequence<JS::Value> >&) = delete;
- void PassOptionalSequenceOfAny(JSContext*, Optional<Sequence<JS::Value> >&) = delete;
- void PassOptionalNullableSequenceOfAny(JSContext*, Optional<Nullable<Sequence<JS::Value> > >&) = delete;
- void PassOptionalSequenceOfAnyWithDefaultValue(JSContext*, Nullable<Sequence<JS::Value> >&) = delete;
- void PassSequenceOfSequenceOfAny(JSContext*, Sequence<Sequence<JS::Value> >&) = delete;
- void PassSequenceOfNullableSequenceOfAny(JSContext*, Sequence<Nullable<Sequence<JS::Value> > >&) = delete;
- void PassNullableSequenceOfNullableSequenceOfAny(JSContext*, Nullable<Sequence<Nullable<Sequence<JS::Value> > > >&) = delete;
- void PassOptionalNullableSequenceOfNullableSequenceOfAny(JSContext*, Optional<Nullable<Sequence<Nullable<Sequence<JS::Value> > > > >&) = delete;
- void PassSequenceOfObject(JSContext*, Sequence<JSObject*>&) = delete;
- void PassSequenceOfNullableObject(JSContext*, Sequence<JSObject*>&) = delete;
- void PassOptionalNullableSequenceOfNullableSequenceOfObject(JSContext*, Optional<Nullable<Sequence<Nullable<Sequence<JSObject*> > > > >&) = delete;
- void PassOptionalNullableSequenceOfNullableSequenceOfNullableObject(JSContext*, Optional<Nullable<Sequence<Nullable<Sequence<JSObject*> > > > >&) = delete;
-
- // Enforce that only const things are passed for optional
- void PassOptionalByte(Optional<int8_t>&) = delete;
- void PassOptionalNullableByte(Optional<Nullable<int8_t> >&) = delete;
- void PassOptionalShort(Optional<int16_t>&) = delete;
- void PassOptionalLong(Optional<int32_t>&) = delete;
- void PassOptionalLongLong(Optional<int64_t>&) = delete;
- void PassOptionalOctet(Optional<uint8_t>&) = delete;
- void PassOptionalUnsignedShort(Optional<uint16_t>&) = delete;
- void PassOptionalUnsignedLong(Optional<uint32_t>&) = delete;
- void PassOptionalUnsignedLongLong(Optional<uint64_t>&) = delete;
- void PassOptionalSelf(Optional<TestInterface*> &) = delete;
- void PassOptionalNonNullSelf(Optional<NonNull<TestInterface> >&) = delete;
- void PassOptionalOther(Optional<IndirectlyImplementedInterface*>&);
- void PassOptionalNonNullOther(Optional<NonNull<IndirectlyImplementedInterface> >&);
- void PassOptionalExternal(Optional<TestExternalInterface*>&) = delete;
- void PassOptionalNonNullExternal(Optional<TestExternalInterface*>&) = delete;
- void PassOptionalSequence(Optional<Sequence<int32_t> >&) = delete;
- void PassOptionalNullableSequence(Optional<Nullable<Sequence<int32_t> > >&) = delete;
- void PassOptionalObjectSequence(Optional<Sequence<OwningNonNull<TestInterface> > >&) = delete;
- void PassOptionalArrayBuffer(Optional<ArrayBuffer>&) = delete;
- void PassOptionalNullableArrayBuffer(Optional<ArrayBuffer*>&) = delete;
- void PassOptionalEnum(Optional<TestEnum>&) = delete;
- void PassOptionalCallback(JSContext*, Optional<OwningNonNull<TestCallback> >&) = delete;
- void PassOptionalNullableCallback(JSContext*, Optional<RefPtr<TestCallback> >&) = delete;
- void PassOptionalAny(Optional<JS::Handle<JS::Value> >&) = delete;
-
- // And test that string stuff is always const
- void PassString(nsAString&) = delete;
- void PassNullableString(nsAString&) = delete;
- void PassOptionalString(Optional<nsAString>&) = delete;
- void PassOptionalStringWithDefaultValue(nsAString&) = delete;
- void PassOptionalNullableString(Optional<nsAString>&) = delete;
- void PassOptionalNullableStringWithDefaultValue(nsAString&) = delete;
- void PassVariadicString(Sequence<nsString>&) = delete;
-
- // cstrings should be const as well
- void PassByteString(nsCString&) = delete;
- void PassNullableByteString(nsCString&) = delete;
- void PassOptionalByteString(Optional<nsCString>&) = delete;
- void PassOptionalByteStringWithDefaultValue(nsCString&) = delete;
- void PassOptionalNullableByteString(Optional<nsCString>&) = delete;
- void PassOptionalNullableByteStringWithDefaultValue(nsCString&) = delete;
- void PassVariadicByteString(Sequence<nsCString>&) = delete;
-
- // Make sure dictionary arguments are always const
- void PassDictionary(JSContext*, Dict&) = delete;
- void PassOtherDictionary(GrandparentDict&) = delete;
- void PassSequenceOfDictionaries(JSContext*, Sequence<Dict>&) = delete;
- void PassDictionaryOrLong(JSContext*, Dict&) = delete;
- void PassDictContainingDict(JSContext*, DictContainingDict&) = delete;
- void PassDictContainingSequence(DictContainingSequence&) = delete;
-
- // Make sure various nullable things are always const
- void PassNullableEnum(Nullable<TestEnum>&) = delete;
-
- // Make sure unions are always const
- void PassUnion(JSContext*, ObjectOrLong& arg) = delete;
- void PassUnionWithNullable(JSContext*, ObjectOrNullOrLong& arg) = delete;
- void PassNullableUnion(JSContext*, Nullable<ObjectOrLong>&) = delete;
- void PassOptionalUnion(JSContext*, Optional<ObjectOrLong>&) = delete;
- void PassOptionalNullableUnion(JSContext*, Optional<Nullable<ObjectOrLong> >&) = delete;
- void PassOptionalNullableUnionWithDefaultValue(JSContext*, Nullable<ObjectOrLong>&) = delete;
-
- // Make sure various date stuff is const as needed
- void PassNullableDate(Nullable<Date>&) = delete;
- void PassOptionalDate(Optional<Date>&) = delete;
- void PassOptionalNullableDate(Optional<Nullable<Date> >&) = delete;
- void PassOptionalNullableDateWithDefaultValue(Nullable<Date>&) = delete;
- void PassDateSequence(Sequence<Date>&) = delete;
- void PassNullableDateSequence(Sequence<Nullable<Date> >&) = delete;
-
- // Make sure variadics are const as needed
- void PassVariadicAny(JSContext*, Sequence<JS::Value>&) = delete;
- void PassVariadicObject(JSContext*, Sequence<JSObject*>&) = delete;
- void PassVariadicNullableObject(JSContext*, Sequence<JSObject*>&) = delete;
-
- // Ensure NonNull does not leak in
- void PassSelf(NonNull<TestInterface>&) = delete;
- void PassSelf(OwningNonNull<TestInterface>&) = delete;
- void PassSelf(const NonNull<TestInterface>&) = delete;
- void PassSelf(const OwningNonNull<TestInterface>&) = delete;
- void PassOther(NonNull<IndirectlyImplementedInterface>&) = delete;
- void PassOther(const NonNull<IndirectlyImplementedInterface>&) = delete;
- void PassOther(OwningNonNull<IndirectlyImplementedInterface>&) = delete;
- void PassOther(const OwningNonNull<IndirectlyImplementedInterface>&) = delete;
- void PassCallbackInterface(OwningNonNull<TestCallbackInterface>&) = delete;
- void PassCallbackInterface(const OwningNonNull<TestCallbackInterface>&) = delete;
- void PassCallbackInterface(NonNull<TestCallbackInterface>&) = delete;
- void PassCallbackInterface(const NonNull<TestCallbackInterface>&) = delete;
- void PassCallback(OwningNonNull<TestCallback>&) = delete;
- void PassCallback(const OwningNonNull<TestCallback>&) = delete;
- void PassCallback(NonNull<TestCallback>&) = delete;
- void PassCallback(const NonNull<TestCallback>&) = delete;
- void PassString(const NonNull<nsAString>&) = delete;
- void PassString(NonNull<nsAString>&) = delete;
- void PassString(const OwningNonNull<nsAString>&) = delete;
- void PassString(OwningNonNull<nsAString>&) = delete;
-};
-
-class TestIndexedGetterInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- uint32_t IndexedGetter(uint32_t, bool&);
- uint32_t IndexedGetter(uint32_t&) = delete;
- uint32_t Item(uint32_t&);
- uint32_t Item(uint32_t, bool&) = delete;
- uint32_t Length();
- void LegacyCall(JS::Handle<JS::Value>);
-};
-
-class TestNamedGetterInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- void NamedGetter(const nsAString&, bool&, nsAString&);
- void GetSupportedNames(nsTArray<nsString>&);
-};
-
-class TestIndexedGetterAndSetterAndNamedGetterInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- void NamedGetter(const nsAString&, bool&, nsAString&);
- void GetSupportedNames(nsTArray<nsString>&);
- int32_t IndexedGetter(uint32_t, bool&);
- void IndexedSetter(uint32_t, int32_t);
- uint32_t Length();
-};
-
-class TestIndexedAndNamedGetterInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- uint32_t IndexedGetter(uint32_t, bool&);
- void NamedGetter(const nsAString&, bool&, nsAString&);
- void NamedItem(const nsAString&, nsAString&);
- uint32_t Length();
- void GetSupportedNames(nsTArray<nsString>&);
-};
-
-class TestIndexedSetterInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- void IndexedSetter(uint32_t, const nsAString&);
- void IndexedGetter(uint32_t, bool&, nsString&);
- uint32_t Length();
- void SetItem(uint32_t, const nsAString&);
-};
-
-class TestNamedSetterInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- void NamedSetter(const nsAString&, TestIndexedSetterInterface&);
- TestIndexedSetterInterface* NamedGetter(const nsAString&, bool&);
- void GetSupportedNames(nsTArray<nsString>&);
-};
-
-class TestIndexedAndNamedSetterInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- void IndexedSetter(uint32_t, TestIndexedSetterInterface&);
- TestIndexedSetterInterface* IndexedGetter(uint32_t, bool&);
- uint32_t Length();
- void NamedSetter(const nsAString&, TestIndexedSetterInterface&);
- TestIndexedSetterInterface* NamedGetter(const nsAString&, bool&);
- void SetNamedItem(const nsAString&, TestIndexedSetterInterface&);
- void GetSupportedNames(nsTArray<nsString>&);
-};
-
-class TestIndexedAndNamedGetterAndSetterInterface : public TestIndexedSetterInterface
-{
-public:
- uint32_t IndexedGetter(uint32_t, bool&);
- uint32_t Item(uint32_t);
- void NamedGetter(const nsAString&, bool&, nsAString&);
- void NamedItem(const nsAString&, nsAString&);
- void IndexedSetter(uint32_t, int32_t&);
- void IndexedSetter(uint32_t, const nsAString&) = delete;
- void NamedSetter(const nsAString&, const nsAString&);
- void Stringify(nsAString&);
- uint32_t Length();
- void GetSupportedNames(nsTArray<nsString>&);
-};
-
-class TestCppKeywordNamedMethodsInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- bool Continue();
- bool Delete();
- int32_t Volatile();
-};
-
-class TestNamedDeleterInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- void NamedDeleter(const nsAString&, bool&);
- long NamedGetter(const nsAString&, bool&);
- void GetSupportedNames(nsTArray<nsString>&);
-};
-
-class TestNamedDeleterWithRetvalInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-
- bool NamedDeleter(const nsAString&, bool&);
- bool NamedDeleter(const nsAString&) = delete;
- long NamedGetter(const nsAString&, bool&);
- bool DelNamedItem(const nsAString&);
- bool DelNamedItem(const nsAString&, bool&) = delete;
- void GetSupportedNames(nsTArray<nsString>&);
-};
-
-class TestParentInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- virtual nsISupports* GetParentObject();
-};
-
-class TestChildInterface : public TestParentInterface
-{
-};
-
-class TestDeprecatedInterface : public nsISupports, public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- static
- already_AddRefed<TestDeprecatedInterface>
- Constructor(const GlobalObject&, ErrorResult&);
-
- static void AlsoDeprecated(const GlobalObject&);
-
- virtual nsISupports* GetParentObject();
-};
-
-class TestInterfaceWithPromiseConstructorArg : public nsISupports, public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- static
- already_AddRefed<TestInterfaceWithPromiseConstructorArg>
- Constructor(const GlobalObject&, Promise&, ErrorResult&);
-
- virtual nsISupports* GetParentObject();
-};
-
-class TestSecureContextInterface : public nsISupports, public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- static
- already_AddRefed<TestSecureContextInterface>
- Constructor(const GlobalObject&, ErrorResult&);
-
- static void AlsoSecureContext(const GlobalObject&);
-
- virtual nsISupports* GetParentObject();
-};
-
-class TestNamespace {
-public:
- static bool Foo(const GlobalObject&);
- static int32_t Bar(const GlobalObject&);
- static void Baz(const GlobalObject&);
-};
-
-class TestRenamedNamespace {
-};
-
-class TestProtoObjectHackedNamespace {
-};
-
-class TestWorkerExposedInterface : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_ISUPPORTS
-
- // We need a GetParentObject to make binding codegen happy
- nsISupports* GetParentObject();
-
- void NeedsSubjectPrincipalMethod(Maybe<nsIPrincipal*>);
- bool NeedsSubjectPrincipalAttr(Maybe<nsIPrincipal*>);
- void SetNeedsSubjectPrincipalAttr(bool, Maybe<nsIPrincipal*>);
- void NeedsCallerTypeMethod(CallerType);
- bool NeedsCallerTypeAttr(CallerType);
- void SetNeedsCallerTypeAttr(bool, CallerType);
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif /* TestBindingHeader_h */
diff --git a/dom/bindings/test/TestCImplementedInterface.h b/dom/bindings/test/TestCImplementedInterface.h
deleted file mode 100644
index 64b5c9954..000000000
--- a/dom/bindings/test/TestCImplementedInterface.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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/.
- */
-
-#ifndef TestCImplementedInterface_h
-#define TestCImplementedInterface_h
-
-#include "../TestJSImplGenBinding.h"
-
-namespace mozilla {
-namespace dom {
-
-class TestCImplementedInterface : public TestJSImplInterface
-{
-public:
- TestCImplementedInterface(JS::Handle<JSObject*> aJSImpl,
- nsIGlobalObject* aParent)
- : TestJSImplInterface(aJSImpl, aParent)
- {}
-};
-
-class TestCImplementedInterface2 : public nsISupports,
- public nsWrapperCache
-{
-public:
- explicit TestCImplementedInterface2(nsIGlobalObject* aParent)
- {}
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestCImplementedInterface2)
-
- // We need a GetParentObject to make binding codegen happy
- nsISupports* GetParentObject();
-};
-
-
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // TestCImplementedInterface_h
diff --git a/dom/bindings/test/TestCodeGen.webidl b/dom/bindings/test/TestCodeGen.webidl
deleted file mode 100644
index 4fb9be270..000000000
--- a/dom/bindings/test/TestCodeGen.webidl
+++ /dev/null
@@ -1,1264 +0,0 @@
-/* -*- Mode: IDL; 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/.
- */
-
-typedef long myLong;
-typedef TestInterface AnotherNameForTestInterface;
-typedef TestInterface? NullableTestInterface;
-typedef CustomEventInit TestDictionaryTypedef;
-
-interface TestExternalInterface;
-
-[Pref="xyz"]
-interface TestRenamedInterface {
-};
-
-callback interface TestCallbackInterface {
- readonly attribute long foo;
- attribute DOMString bar;
- void doSomething();
- long doSomethingElse(DOMString arg, TestInterface otherArg);
- void doSequenceLongArg(sequence<long> arg);
- void doSequenceStringArg(sequence<DOMString> arg);
- void doMozMapLongArg(MozMap<long> arg);
- sequence<long> getSequenceOfLong();
- sequence<TestInterface> getSequenceOfInterfaces();
- sequence<TestInterface>? getNullableSequenceOfInterfaces();
- sequence<TestInterface?> getSequenceOfNullableInterfaces();
- sequence<TestInterface?>? getNullableSequenceOfNullableInterfaces();
- sequence<TestCallbackInterface> getSequenceOfCallbackInterfaces();
- sequence<TestCallbackInterface>? getNullableSequenceOfCallbackInterfaces();
- sequence<TestCallbackInterface?> getSequenceOfNullableCallbackInterfaces();
- sequence<TestCallbackInterface?>? getNullableSequenceOfNullableCallbackInterfaces();
- MozMap<long> getMozMapOfLong();
- Dict? getDictionary();
- void passArrayBuffer(ArrayBuffer arg);
- void passNullableArrayBuffer(ArrayBuffer? arg);
- void passOptionalArrayBuffer(optional ArrayBuffer arg);
- void passOptionalNullableArrayBuffer(optional ArrayBuffer? arg);
- void passOptionalNullableArrayBufferWithDefaultValue(optional ArrayBuffer? arg= null);
- void passArrayBufferView(ArrayBufferView arg);
- void passInt8Array(Int8Array arg);
- void passInt16Array(Int16Array arg);
- void passInt32Array(Int32Array arg);
- void passUint8Array(Uint8Array arg);
- void passUint16Array(Uint16Array arg);
- void passUint32Array(Uint32Array arg);
- void passUint8ClampedArray(Uint8ClampedArray arg);
- void passFloat32Array(Float32Array arg);
- void passFloat64Array(Float64Array arg);
- void passSequenceOfArrayBuffers(sequence<ArrayBuffer> arg);
- void passSequenceOfNullableArrayBuffers(sequence<ArrayBuffer?> arg);
- void passVariadicTypedArray(Float32Array... arg);
- void passVariadicNullableTypedArray(Float32Array?... arg);
- Uint8Array receiveUint8Array();
- attribute Uint8Array uint8ArrayAttr;
- Promise<void> receivePromise();
-};
-
-callback interface TestSingleOperationCallbackInterface {
- TestInterface doSomething(short arg, sequence<double> anotherArg);
-};
-
-enum TestEnum {
- "1",
- "a",
- "b"
-};
-
-callback TestCallback = void();
-[TreatNonCallableAsNull] callback TestTreatAsNullCallback = void();
-
-// Callback return value tests
-callback TestIntegerReturn = long();
-callback TestNullableIntegerReturn = long?();
-callback TestBooleanReturn = boolean();
-callback TestFloatReturn = float();
-callback TestStringReturn = DOMString(long arg);
-callback TestEnumReturn = TestEnum();
-callback TestInterfaceReturn = TestInterface();
-callback TestNullableInterfaceReturn = TestInterface?();
-callback TestExternalInterfaceReturn = TestExternalInterface();
-callback TestNullableExternalInterfaceReturn = TestExternalInterface?();
-callback TestCallbackInterfaceReturn = TestCallbackInterface();
-callback TestNullableCallbackInterfaceReturn = TestCallbackInterface?();
-callback TestCallbackReturn = TestCallback();
-callback TestNullableCallbackReturn = TestCallback?();
-callback TestObjectReturn = object();
-callback TestNullableObjectReturn = object?();
-callback TestTypedArrayReturn = ArrayBuffer();
-callback TestNullableTypedArrayReturn = ArrayBuffer?();
-callback TestSequenceReturn = sequence<boolean>();
-callback TestNullableSequenceReturn = sequence<boolean>?();
-// Callback argument tests
-callback TestIntegerArguments = sequence<long>(long arg1, long? arg2,
- sequence<long> arg3,
- sequence<long?>? arg4);
-callback TestInterfaceArguments = void(TestInterface arg1, TestInterface? arg2,
- TestExternalInterface arg3,
- TestExternalInterface? arg4,
- TestCallbackInterface arg5,
- TestCallbackInterface? arg6,
- sequence<TestInterface> arg7,
- sequence<TestInterface?>? arg8,
- sequence<TestExternalInterface> arg9,
- sequence<TestExternalInterface?>? arg10,
- sequence<TestCallbackInterface> arg11,
- sequence<TestCallbackInterface?>? arg12);
-callback TestStringEnumArguments = void(DOMString myString, DOMString? nullString,
- TestEnum myEnum);
-callback TestObjectArguments = void(object anObj, object? anotherObj,
- ArrayBuffer buf, ArrayBuffer? buf2);
-callback TestOptionalArguments = void(optional DOMString aString,
- optional object something,
- optional sequence<TestInterface> aSeq,
- optional TestInterface? anInterface,
- optional TestInterface anotherInterface,
- optional long aLong);
-// If you add a new test callback, add it to the forceCallbackGeneration
-// method on TestInterface so it actually gets tested.
-
-TestInterface implements ImplementedInterface;
-
-// This interface is only for use in the constructor below
-interface OnlyForUseInConstructor {
-};
-
-[Constructor,
- Constructor(DOMString str),
- Constructor(unsigned long num, boolean? boolArg),
- Constructor(TestInterface? iface),
- Constructor(long arg1, IndirectlyImplementedInterface iface),
- Constructor(Date arg1),
- Constructor(ArrayBuffer arrayBuf),
- Constructor(Uint8Array typedArr),
- // Constructor(long arg1, long arg2, (TestInterface or OnlyForUseInConstructor) arg3),
- NamedConstructor=Test,
- NamedConstructor=Test(DOMString str),
- NamedConstructor=Test2(DictForConstructor dict, any any1, object obj1,
- object? obj2, sequence<Dict> seq, optional any any2,
- optional object obj3, optional object? obj4),
- NamedConstructor=Test3((long or MozMap<any>) arg1)
- ]
-interface TestInterface {
- // Integer types
- // XXXbz add tests for throwing versions of all the integer stuff
- readonly attribute byte readonlyByte;
- attribute byte writableByte;
- void passByte(byte arg);
- byte receiveByte();
- void passOptionalByte(optional byte arg);
- void passOptionalByteBeforeRequired(optional byte arg1, byte arg2);
- void passOptionalByteWithDefault(optional byte arg = 0);
- void passOptionalByteWithDefaultBeforeRequired(optional byte arg1 = 0, byte arg2);
- void passNullableByte(byte? arg);
- void passOptionalNullableByte(optional byte? arg);
- void passVariadicByte(byte... arg);
- [StoreInSlot, Pure]
- readonly attribute byte cachedByte;
- [StoreInSlot, Constant]
- readonly attribute byte cachedConstantByte;
- [StoreInSlot, Pure]
- attribute byte cachedWritableByte;
- [Affects=Nothing]
- attribute byte sideEffectFreeByte;
- [Affects=Nothing, DependsOn=DOMState]
- attribute byte domDependentByte;
- [Affects=Nothing, DependsOn=Nothing]
- readonly attribute byte constantByte;
- [DependsOn=DeviceState, Affects=Nothing]
- readonly attribute byte deviceStateDependentByte;
- [Affects=Nothing]
- byte returnByteSideEffectFree();
- [Affects=Nothing, DependsOn=DOMState]
- byte returnDOMDependentByte();
- [Affects=Nothing, DependsOn=Nothing]
- byte returnConstantByte();
- [DependsOn=DeviceState, Affects=Nothing]
- byte returnDeviceStateDependentByte();
-
- [UnsafeInPrerendering]
- void unsafePrerenderMethod();
- [UnsafeInPrerendering]
- attribute long unsafePrerenderWritable;
- [UnsafeInPrerendering]
- readonly attribute long unsafePrerenderReadonly;
- readonly attribute short readonlyShort;
- attribute short writableShort;
- void passShort(short arg);
- short receiveShort();
- void passOptionalShort(optional short arg);
- void passOptionalShortWithDefault(optional short arg = 5);
-
- readonly attribute long readonlyLong;
- attribute long writableLong;
- void passLong(long arg);
- long receiveLong();
- void passOptionalLong(optional long arg);
- void passOptionalLongWithDefault(optional long arg = 7);
-
- readonly attribute long long readonlyLongLong;
- attribute long long writableLongLong;
- void passLongLong(long long arg);
- long long receiveLongLong();
- void passOptionalLongLong(optional long long arg);
- void passOptionalLongLongWithDefault(optional long long arg = -12);
-
- readonly attribute octet readonlyOctet;
- attribute octet writableOctet;
- void passOctet(octet arg);
- octet receiveOctet();
- void passOptionalOctet(optional octet arg);
- void passOptionalOctetWithDefault(optional octet arg = 19);
-
- readonly attribute unsigned short readonlyUnsignedShort;
- attribute unsigned short writableUnsignedShort;
- void passUnsignedShort(unsigned short arg);
- unsigned short receiveUnsignedShort();
- void passOptionalUnsignedShort(optional unsigned short arg);
- void passOptionalUnsignedShortWithDefault(optional unsigned short arg = 2);
-
- readonly attribute unsigned long readonlyUnsignedLong;
- attribute unsigned long writableUnsignedLong;
- void passUnsignedLong(unsigned long arg);
- unsigned long receiveUnsignedLong();
- void passOptionalUnsignedLong(optional unsigned long arg);
- void passOptionalUnsignedLongWithDefault(optional unsigned long arg = 6);
-
- readonly attribute unsigned long long readonlyUnsignedLongLong;
- attribute unsigned long long writableUnsignedLongLong;
- void passUnsignedLongLong(unsigned long long arg);
- unsigned long long receiveUnsignedLongLong();
- void passOptionalUnsignedLongLong(optional unsigned long long arg);
- void passOptionalUnsignedLongLongWithDefault(optional unsigned long long arg = 17);
-
- attribute float writableFloat;
- attribute unrestricted float writableUnrestrictedFloat;
- attribute float? writableNullableFloat;
- attribute unrestricted float? writableNullableUnrestrictedFloat;
- attribute double writableDouble;
- attribute unrestricted double writableUnrestrictedDouble;
- attribute double? writableNullableDouble;
- attribute unrestricted double? writableNullableUnrestrictedDouble;
- void passFloat(float arg1, unrestricted float arg2,
- float? arg3, unrestricted float? arg4,
- double arg5, unrestricted double arg6,
- double? arg7, unrestricted double? arg8,
- sequence<float> arg9, sequence<unrestricted float> arg10,
- sequence<float?> arg11, sequence<unrestricted float?> arg12,
- sequence<double> arg13, sequence<unrestricted double> arg14,
- sequence<double?> arg15, sequence<unrestricted double?> arg16);
- [LenientFloat]
- void passLenientFloat(float arg1, unrestricted float arg2,
- float? arg3, unrestricted float? arg4,
- double arg5, unrestricted double arg6,
- double? arg7, unrestricted double? arg8,
- sequence<float> arg9,
- sequence<unrestricted float> arg10,
- sequence<float?> arg11,
- sequence<unrestricted float?> arg12,
- sequence<double> arg13,
- sequence<unrestricted double> arg14,
- sequence<double?> arg15,
- sequence<unrestricted double?> arg16);
- [LenientFloat]
- attribute float lenientFloatAttr;
- [LenientFloat]
- attribute double lenientDoubleAttr;
-
- void passUnrestricted(optional unrestricted float arg1 = 0,
- optional unrestricted float arg2 = Infinity,
- optional unrestricted float arg3 = -Infinity,
- optional unrestricted float arg4 = NaN,
- optional unrestricted double arg5 = 0,
- optional unrestricted double arg6 = Infinity,
- optional unrestricted double arg7 = -Infinity,
- optional unrestricted double arg8 = NaN);
-
- // Castable interface types
- // XXXbz add tests for throwing versions of all the castable interface stuff
- TestInterface receiveSelf();
- TestInterface? receiveNullableSelf();
- TestInterface receiveWeakSelf();
- TestInterface? receiveWeakNullableSelf();
- void passSelf(TestInterface arg);
- void passNullableSelf(TestInterface? arg);
- attribute TestInterface nonNullSelf;
- attribute TestInterface? nullableSelf;
- [Cached, Pure]
- readonly attribute TestInterface cachedSelf;
- // Optional arguments
- void passOptionalSelf(optional TestInterface? arg);
- void passOptionalNonNullSelf(optional TestInterface arg);
- void passOptionalSelfWithDefault(optional TestInterface? arg = null);
-
- // Non-wrapper-cache interface types
- [NewObject]
- TestNonWrapperCacheInterface receiveNonWrapperCacheInterface();
- [NewObject]
- TestNonWrapperCacheInterface? receiveNullableNonWrapperCacheInterface();
- [NewObject]
- sequence<TestNonWrapperCacheInterface> receiveNonWrapperCacheInterfaceSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface?> receiveNullableNonWrapperCacheInterfaceSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface>? receiveNonWrapperCacheInterfaceNullableSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface?>? receiveNullableNonWrapperCacheInterfaceNullableSequence();
-
- // Non-castable interface types
- IndirectlyImplementedInterface receiveOther();
- IndirectlyImplementedInterface? receiveNullableOther();
- IndirectlyImplementedInterface receiveWeakOther();
- IndirectlyImplementedInterface? receiveWeakNullableOther();
- void passOther(IndirectlyImplementedInterface arg);
- void passNullableOther(IndirectlyImplementedInterface? arg);
- attribute IndirectlyImplementedInterface nonNullOther;
- attribute IndirectlyImplementedInterface? nullableOther;
- // Optional arguments
- void passOptionalOther(optional IndirectlyImplementedInterface? arg);
- void passOptionalNonNullOther(optional IndirectlyImplementedInterface arg);
- void passOptionalOtherWithDefault(optional IndirectlyImplementedInterface? arg = null);
-
- // External interface types
- TestExternalInterface receiveExternal();
- TestExternalInterface? receiveNullableExternal();
- TestExternalInterface receiveWeakExternal();
- TestExternalInterface? receiveWeakNullableExternal();
- void passExternal(TestExternalInterface arg);
- void passNullableExternal(TestExternalInterface? arg);
- attribute TestExternalInterface nonNullExternal;
- attribute TestExternalInterface? nullableExternal;
- // Optional arguments
- void passOptionalExternal(optional TestExternalInterface? arg);
- void passOptionalNonNullExternal(optional TestExternalInterface arg);
- void passOptionalExternalWithDefault(optional TestExternalInterface? arg = null);
-
- // Callback interface types
- TestCallbackInterface receiveCallbackInterface();
- TestCallbackInterface? receiveNullableCallbackInterface();
- TestCallbackInterface receiveWeakCallbackInterface();
- TestCallbackInterface? receiveWeakNullableCallbackInterface();
- void passCallbackInterface(TestCallbackInterface arg);
- void passNullableCallbackInterface(TestCallbackInterface? arg);
- attribute TestCallbackInterface nonNullCallbackInterface;
- attribute TestCallbackInterface? nullableCallbackInterface;
- // Optional arguments
- void passOptionalCallbackInterface(optional TestCallbackInterface? arg);
- void passOptionalNonNullCallbackInterface(optional TestCallbackInterface arg);
- void passOptionalCallbackInterfaceWithDefault(optional TestCallbackInterface? arg = null);
-
- // Miscellaneous interface tests
- IndirectlyImplementedInterface receiveConsequentialInterface();
- void passConsequentialInterface(IndirectlyImplementedInterface arg);
-
- // Sequence types
- [Cached, Pure]
- readonly attribute sequence<long> readonlySequence;
- [Cached, Pure]
- readonly attribute sequence<Dict> readonlySequenceOfDictionaries;
- [Cached, Pure]
- readonly attribute sequence<Dict>? readonlyNullableSequenceOfDictionaries;
- [Cached, Pure, Frozen]
- readonly attribute sequence<Dict> readonlyFrozenSequence;
- [Cached, Pure, Frozen]
- readonly attribute sequence<Dict>? readonlyFrozenNullableSequence;
- sequence<long> receiveSequence();
- sequence<long>? receiveNullableSequence();
- sequence<long?> receiveSequenceOfNullableInts();
- sequence<long?>? receiveNullableSequenceOfNullableInts();
- void passSequence(sequence<long> arg);
- void passNullableSequence(sequence<long>? arg);
- void passSequenceOfNullableInts(sequence<long?> arg);
- void passOptionalSequenceOfNullableInts(optional sequence<long?> arg);
- void passOptionalNullableSequenceOfNullableInts(optional sequence<long?>? arg);
- sequence<TestInterface> receiveCastableObjectSequence();
- sequence<TestCallbackInterface> receiveCallbackObjectSequence();
- sequence<TestInterface?> receiveNullableCastableObjectSequence();
- sequence<TestCallbackInterface?> receiveNullableCallbackObjectSequence();
- sequence<TestInterface>? receiveCastableObjectNullableSequence();
- sequence<TestInterface?>? receiveNullableCastableObjectNullableSequence();
- sequence<TestInterface> receiveWeakCastableObjectSequence();
- sequence<TestInterface?> receiveWeakNullableCastableObjectSequence();
- sequence<TestInterface>? receiveWeakCastableObjectNullableSequence();
- sequence<TestInterface?>? receiveWeakNullableCastableObjectNullableSequence();
- void passCastableObjectSequence(sequence<TestInterface> arg);
- void passNullableCastableObjectSequence(sequence<TestInterface?> arg);
- void passCastableObjectNullableSequence(sequence<TestInterface>? arg);
- void passNullableCastableObjectNullableSequence(sequence<TestInterface?>? arg);
- void passOptionalSequence(optional sequence<long> arg);
- void passOptionalSequenceWithDefaultValue(optional sequence<long> arg = []);
- void passOptionalNullableSequence(optional sequence<long>? arg);
- void passOptionalNullableSequenceWithDefaultValue(optional sequence<long>? arg = null);
- void passOptionalNullableSequenceWithDefaultValue2(optional sequence<long>? arg = []);
- void passOptionalObjectSequence(optional sequence<TestInterface> arg);
- void passExternalInterfaceSequence(sequence<TestExternalInterface> arg);
- void passNullableExternalInterfaceSequence(sequence<TestExternalInterface?> arg);
-
- sequence<DOMString> receiveStringSequence();
- void passStringSequence(sequence<DOMString> arg);
-
- sequence<ByteString> receiveByteStringSequence();
- void passByteStringSequence(sequence<ByteString> arg);
-
- sequence<any> receiveAnySequence();
- sequence<any>? receiveNullableAnySequence();
- sequence<sequence<any>> receiveAnySequenceSequence();
-
- sequence<object> receiveObjectSequence();
- sequence<object?> receiveNullableObjectSequence();
-
- void passSequenceOfSequences(sequence<sequence<long>> arg);
- void passSequenceOfSequencesOfSequences(sequence<sequence<sequence<long>>> arg);
- sequence<sequence<long>> receiveSequenceOfSequences();
- sequence<sequence<sequence<long>>> receiveSequenceOfSequencesOfSequences();
-
- // MozMap types
- void passMozMap(MozMap<long> arg);
- void passNullableMozMap(MozMap<long>? arg);
- void passMozMapOfNullableInts(MozMap<long?> arg);
- void passOptionalMozMapOfNullableInts(optional MozMap<long?> arg);
- void passOptionalNullableMozMapOfNullableInts(optional MozMap<long?>? arg);
- void passCastableObjectMozMap(MozMap<TestInterface> arg);
- void passNullableCastableObjectMozMap(MozMap<TestInterface?> arg);
- void passCastableObjectNullableMozMap(MozMap<TestInterface>? arg);
- void passNullableCastableObjectNullableMozMap(MozMap<TestInterface?>? arg);
- void passOptionalMozMap(optional MozMap<long> arg);
- void passOptionalNullableMozMap(optional MozMap<long>? arg);
- void passOptionalNullableMozMapWithDefaultValue(optional MozMap<long>? arg = null);
- void passOptionalObjectMozMap(optional MozMap<TestInterface> arg);
- void passExternalInterfaceMozMap(MozMap<TestExternalInterface> arg);
- void passNullableExternalInterfaceMozMap(MozMap<TestExternalInterface?> arg);
- void passStringMozMap(MozMap<DOMString> arg);
- void passByteStringMozMap(MozMap<ByteString> arg);
- void passMozMapOfMozMaps(MozMap<MozMap<long>> arg);
- MozMap<long> receiveMozMap();
- MozMap<long>? receiveNullableMozMap();
- MozMap<long?> receiveMozMapOfNullableInts();
- MozMap<long?>? receiveNullableMozMapOfNullableInts();
- MozMap<MozMap<long>> receiveMozMapOfMozMaps();
- MozMap<any> receiveAnyMozMap();
-
- // Typed array types
- void passArrayBuffer(ArrayBuffer arg);
- void passNullableArrayBuffer(ArrayBuffer? arg);
- void passOptionalArrayBuffer(optional ArrayBuffer arg);
- void passOptionalNullableArrayBuffer(optional ArrayBuffer? arg);
- void passOptionalNullableArrayBufferWithDefaultValue(optional ArrayBuffer? arg= null);
- void passArrayBufferView(ArrayBufferView arg);
- void passInt8Array(Int8Array arg);
- void passInt16Array(Int16Array arg);
- void passInt32Array(Int32Array arg);
- void passUint8Array(Uint8Array arg);
- void passUint16Array(Uint16Array arg);
- void passUint32Array(Uint32Array arg);
- void passUint8ClampedArray(Uint8ClampedArray arg);
- void passFloat32Array(Float32Array arg);
- void passFloat64Array(Float64Array arg);
- void passSequenceOfArrayBuffers(sequence<ArrayBuffer> arg);
- void passSequenceOfNullableArrayBuffers(sequence<ArrayBuffer?> arg);
- void passMozMapOfArrayBuffers(MozMap<ArrayBuffer> arg);
- void passMozMapOfNullableArrayBuffers(MozMap<ArrayBuffer?> arg);
- void passVariadicTypedArray(Float32Array... arg);
- void passVariadicNullableTypedArray(Float32Array?... arg);
- Uint8Array receiveUint8Array();
- attribute Uint8Array uint8ArrayAttr;
-
- // DOMString types
- void passString(DOMString arg);
- void passNullableString(DOMString? arg);
- void passOptionalString(optional DOMString arg);
- void passOptionalStringWithDefaultValue(optional DOMString arg = "abc");
- void passOptionalNullableString(optional DOMString? arg);
- void passOptionalNullableStringWithDefaultValue(optional DOMString? arg = null);
- void passVariadicString(DOMString... arg);
- DOMString receiveString();
-
- // ByteString types
- void passByteString(ByteString arg);
- void passNullableByteString(ByteString? arg);
- void passOptionalByteString(optional ByteString arg);
- void passOptionalByteStringWithDefaultValue(optional ByteString arg = "abc");
- void passOptionalNullableByteString(optional ByteString? arg);
- void passOptionalNullableByteStringWithDefaultValue(optional ByteString? arg = null);
- void passVariadicByteString(ByteString... arg);
- void passOptionalUnionByteString(optional (ByteString or long) arg);
- void passOptionalUnionByteStringWithDefaultValue(optional (ByteString or long) arg = "abc");
-
- // USVString types
- void passUSVS(USVString arg);
- void passNullableUSVS(USVString? arg);
- void passOptionalUSVS(optional USVString arg);
- void passOptionalUSVSWithDefaultValue(optional USVString arg = "abc");
- void passOptionalNullableUSVS(optional USVString? arg);
- void passOptionalNullableUSVSWithDefaultValue(optional USVString? arg = null);
- void passVariadicUSVS(USVString... arg);
- USVString receiveUSVS();
-
- // Enumerated types
- void passEnum(TestEnum arg);
- void passNullableEnum(TestEnum? arg);
- void passOptionalEnum(optional TestEnum arg);
- void passEnumWithDefault(optional TestEnum arg = "a");
- void passOptionalNullableEnum(optional TestEnum? arg);
- void passOptionalNullableEnumWithDefaultValue(optional TestEnum? arg = null);
- void passOptionalNullableEnumWithDefaultValue2(optional TestEnum? arg = "a");
- TestEnum receiveEnum();
- TestEnum? receiveNullableEnum();
- attribute TestEnum enumAttribute;
- readonly attribute TestEnum readonlyEnumAttribute;
-
- // Callback types
- void passCallback(TestCallback arg);
- void passNullableCallback(TestCallback? arg);
- void passOptionalCallback(optional TestCallback arg);
- void passOptionalNullableCallback(optional TestCallback? arg);
- void passOptionalNullableCallbackWithDefaultValue(optional TestCallback? arg = null);
- TestCallback receiveCallback();
- TestCallback? receiveNullableCallback();
- void passNullableTreatAsNullCallback(TestTreatAsNullCallback? arg);
- void passOptionalNullableTreatAsNullCallback(optional TestTreatAsNullCallback? arg);
- void passOptionalNullableTreatAsNullCallbackWithDefaultValue(optional TestTreatAsNullCallback? arg = null);
- attribute TestTreatAsNullCallback treatAsNullCallback;
- attribute TestTreatAsNullCallback? nullableTreatAsNullCallback;
-
- // Force code generation of the various test callbacks we have.
- void forceCallbackGeneration(TestIntegerReturn arg1,
- TestNullableIntegerReturn arg2,
- TestBooleanReturn arg3,
- TestFloatReturn arg4,
- TestStringReturn arg5,
- TestEnumReturn arg6,
- TestInterfaceReturn arg7,
- TestNullableInterfaceReturn arg8,
- TestExternalInterfaceReturn arg9,
- TestNullableExternalInterfaceReturn arg10,
- TestCallbackInterfaceReturn arg11,
- TestNullableCallbackInterfaceReturn arg12,
- TestCallbackReturn arg13,
- TestNullableCallbackReturn arg14,
- TestObjectReturn arg15,
- TestNullableObjectReturn arg16,
- TestTypedArrayReturn arg17,
- TestNullableTypedArrayReturn arg18,
- TestSequenceReturn arg19,
- TestNullableSequenceReturn arg20,
- TestIntegerArguments arg21,
- TestInterfaceArguments arg22,
- TestStringEnumArguments arg23,
- TestObjectArguments arg24,
- TestOptionalArguments arg25);
-
- // Any types
- void passAny(any arg);
- void passVariadicAny(any... arg);
- void passOptionalAny(optional any arg);
- void passAnyDefaultNull(optional any arg = null);
- void passSequenceOfAny(sequence<any> arg);
- void passNullableSequenceOfAny(sequence<any>? arg);
- void passOptionalSequenceOfAny(optional sequence<any> arg);
- void passOptionalNullableSequenceOfAny(optional sequence<any>? arg);
- void passOptionalSequenceOfAnyWithDefaultValue(optional sequence<any>? arg = null);
- void passSequenceOfSequenceOfAny(sequence<sequence<any>> arg);
- void passSequenceOfNullableSequenceOfAny(sequence<sequence<any>?> arg);
- void passNullableSequenceOfNullableSequenceOfAny(sequence<sequence<any>?>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfAny(optional sequence<sequence<any>?>? arg);
- void passMozMapOfAny(MozMap<any> arg);
- void passNullableMozMapOfAny(MozMap<any>? arg);
- void passOptionalMozMapOfAny(optional MozMap<any> arg);
- void passOptionalNullableMozMapOfAny(optional MozMap<any>? arg);
- void passOptionalMozMapOfAnyWithDefaultValue(optional MozMap<any>? arg = null);
- void passMozMapOfMozMapOfAny(MozMap<MozMap<any>> arg);
- void passMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?> arg);
- void passNullableMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?>? arg);
- void passOptionalNullableMozMapOfNullableMozMapOfAny(optional MozMap<MozMap<any>?>? arg);
- void passOptionalNullableMozMapOfNullableSequenceOfAny(optional MozMap<sequence<any>?>? arg);
- void passOptionalNullableSequenceOfNullableMozMapOfAny(optional sequence<MozMap<any>?>? arg);
- any receiveAny();
-
- // object types
- void passObject(object arg);
- void passVariadicObject(object... arg);
- void passNullableObject(object? arg);
- void passVariadicNullableObject(object... arg);
- void passOptionalObject(optional object arg);
- void passOptionalNullableObject(optional object? arg);
- void passOptionalNullableObjectWithDefaultValue(optional object? arg = null);
- void passSequenceOfObject(sequence<object> arg);
- void passSequenceOfNullableObject(sequence<object?> arg);
- void passNullableSequenceOfObject(sequence<object>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfObject(optional sequence<sequence<object>?>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfNullableObject(optional sequence<sequence<object?>?>? arg);
- void passMozMapOfObject(MozMap<object> arg);
- object receiveObject();
- object? receiveNullableObject();
-
- // Union types
- void passUnion((object or long) arg);
- // Some union tests are debug-only to avoid creating all those
- // unused union types in opt builds.
-#ifdef DEBUG
- void passUnion2((long or boolean) arg);
- void passUnion3((object or long or boolean) arg);
- void passUnion4((Node or long or boolean) arg);
- void passUnion5((object or boolean) arg);
- void passUnion6((object or DOMString) arg);
- void passUnion7((object or DOMString or long) arg);
- void passUnion8((object or DOMString or boolean) arg);
- void passUnion9((object or DOMString or long or boolean) arg);
- void passUnion10(optional (EventInit or long) arg);
- void passUnion11(optional (CustomEventInit or long) arg);
- void passUnion12(optional (EventInit or long) arg = 5);
- void passUnion13(optional (object or long?) arg = null);
- void passUnion14(optional (object or long?) arg = 5);
- void passUnion15((sequence<long> or long) arg);
- void passUnion16(optional (sequence<long> or long) arg);
- void passUnion17(optional (sequence<long>? or long) arg = 5);
- void passUnion18((sequence<object> or long) arg);
- void passUnion19(optional (sequence<object> or long) arg);
- void passUnion20(optional (sequence<object> or long) arg = []);
- void passUnion21((MozMap<long> or long) arg);
- void passUnion22((MozMap<object> or long) arg);
- void passUnion23((sequence<ImageData> or long) arg);
- void passUnion24((sequence<ImageData?> or long) arg);
- void passUnion25((sequence<sequence<ImageData>> or long) arg);
- void passUnion26((sequence<sequence<ImageData?>> or long) arg);
- void passUnion27(optional (sequence<DOMString> or EventInit) arg);
- void passUnion28(optional (EventInit or sequence<DOMString>) arg);
- void passUnionWithCallback((EventHandler or long) arg);
- void passUnionWithByteString((ByteString or long) arg);
- void passUnionWithMozMap((MozMap<DOMString> or DOMString) arg);
- void passUnionWithMozMapAndSequence((MozMap<DOMString> or sequence<DOMString>) arg);
- void passUnionWithSequenceAndMozMap((sequence<DOMString> or MozMap<DOMString>) arg);
- void passUnionWithUSVS((USVString or long) arg);
-#endif
- void passUnionWithNullable((object? or long) arg);
- void passNullableUnion((object or long)? arg);
- void passOptionalUnion(optional (object or long) arg);
- void passOptionalNullableUnion(optional (object or long)? arg);
- void passOptionalNullableUnionWithDefaultValue(optional (object or long)? arg = null);
- //void passUnionWithInterfaces((TestInterface or TestExternalInterface) arg);
- //void passUnionWithInterfacesAndNullable((TestInterface? or TestExternalInterface) arg);
- //void passUnionWithSequence((sequence<object> or long) arg);
- void passUnionWithArrayBuffer((ArrayBuffer or long) arg);
- void passUnionWithString((DOMString or object) arg);
- // Using an enum in a union. Note that we use some enum not declared in our
- // binding file, because UnionTypes.h will need to include the binding header
- // for this enum. Pick an enum from an interface that won't drag in too much
- // stuff.
- void passUnionWithEnum((SupportedType or object) arg);
-
- // Trying to use a callback in a union won't include the test
- // headers, unfortunately, so won't compile.
- //void passUnionWithCallback((TestCallback or long) arg);
- void passUnionWithObject((object or long) arg);
- //void passUnionWithDict((Dict or long) arg);
-
- void passUnionWithDefaultValue1(optional (double or DOMString) arg = "");
- void passUnionWithDefaultValue2(optional (double or DOMString) arg = 1);
- void passUnionWithDefaultValue3(optional (double or DOMString) arg = 1.5);
- void passUnionWithDefaultValue4(optional (float or DOMString) arg = "");
- void passUnionWithDefaultValue5(optional (float or DOMString) arg = 1);
- void passUnionWithDefaultValue6(optional (float or DOMString) arg = 1.5);
- void passUnionWithDefaultValue7(optional (unrestricted double or DOMString) arg = "");
- void passUnionWithDefaultValue8(optional (unrestricted double or DOMString) arg = 1);
- void passUnionWithDefaultValue9(optional (unrestricted double or DOMString) arg = 1.5);
- void passUnionWithDefaultValue10(optional (unrestricted double or DOMString) arg = Infinity);
- void passUnionWithDefaultValue11(optional (unrestricted float or DOMString) arg = "");
- void passUnionWithDefaultValue12(optional (unrestricted float or DOMString) arg = 1);
- void passUnionWithDefaultValue13(optional (unrestricted float or DOMString) arg = Infinity);
- void passUnionWithDefaultValue14(optional (double or ByteString) arg = "");
- void passUnionWithDefaultValue15(optional (double or ByteString) arg = 1);
- void passUnionWithDefaultValue16(optional (double or ByteString) arg = 1.5);
- void passUnionWithDefaultValue17(optional (double or SupportedType) arg = "text/html");
- void passUnionWithDefaultValue18(optional (double or SupportedType) arg = 1);
- void passUnionWithDefaultValue19(optional (double or SupportedType) arg = 1.5);
-
- void passNullableUnionWithDefaultValue1(optional (double or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue2(optional (double or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue3(optional (double or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue4(optional (float or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue5(optional (float or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue6(optional (float or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue7(optional (unrestricted double or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue8(optional (unrestricted double or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue9(optional (unrestricted double or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue10(optional (unrestricted float or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue11(optional (unrestricted float or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue12(optional (unrestricted float or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue13(optional (double or ByteString)? arg = "");
- void passNullableUnionWithDefaultValue14(optional (double or ByteString)? arg = 1);
- void passNullableUnionWithDefaultValue15(optional (double or ByteString)? arg = 1.5);
- void passNullableUnionWithDefaultValue16(optional (double or ByteString)? arg = null);
- void passNullableUnionWithDefaultValue17(optional (double or SupportedType)? arg = "text/html");
- void passNullableUnionWithDefaultValue18(optional (double or SupportedType)? arg = 1);
- void passNullableUnionWithDefaultValue19(optional (double or SupportedType)? arg = 1.5);
- void passNullableUnionWithDefaultValue20(optional (double or SupportedType)? arg = null);
-
- void passSequenceOfUnions(sequence<(CanvasPattern or CanvasGradient)> arg);
- void passSequenceOfUnions2(sequence<(object or long)> arg);
- void passVariadicUnion((CanvasPattern or CanvasGradient)... arg);
-
- void passSequenceOfNullableUnions(sequence<(CanvasPattern or CanvasGradient)?> arg);
- void passVariadicNullableUnion((CanvasPattern or CanvasGradient)?... arg);
- void passMozMapOfUnions(MozMap<(CanvasPattern or CanvasGradient)> arg);
- // XXXbz no move constructor on some unions
- // void passMozMapOfUnions2(MozMap<(object or long)> arg);
-
- (CanvasPattern or CanvasGradient) receiveUnion();
- (object or long) receiveUnion2();
- (CanvasPattern? or CanvasGradient) receiveUnionContainingNull();
- (CanvasPattern or CanvasGradient)? receiveNullableUnion();
- (object or long)? receiveNullableUnion2();
-
- attribute (CanvasPattern or CanvasGradient) writableUnion;
- attribute (CanvasPattern? or CanvasGradient) writableUnionContainingNull;
- attribute (CanvasPattern or CanvasGradient)? writableNullableUnion;
-
- // Date types
- void passDate(Date arg);
- void passNullableDate(Date? arg);
- void passOptionalDate(optional Date arg);
- void passOptionalNullableDate(optional Date? arg);
- void passOptionalNullableDateWithDefaultValue(optional Date? arg = null);
- void passDateSequence(sequence<Date> arg);
- void passNullableDateSequence(sequence<Date?> arg);
- void passDateMozMap(MozMap<Date> arg);
- Date receiveDate();
- Date? receiveNullableDate();
-
- // Promise types
- void passPromise(Promise<any> arg);
- void passNullablePromise(Promise<any>? arg);
- void passOptionalPromise(optional Promise<any> arg);
- void passOptionalNullablePromise(optional Promise<any>? arg);
- void passOptionalNullablePromiseWithDefaultValue(optional Promise<any>? arg = null);
- void passPromiseSequence(sequence<Promise<any>> arg);
- void passNullablePromiseSequence(sequence<Promise<any>?> arg);
- Promise<any> receivePromise();
- Promise<any> receiveAddrefedPromise();
-
- // binaryNames tests
- void methodRenamedFrom();
- [BinaryName="otherMethodRenamedTo"]
- void otherMethodRenamedFrom();
- void methodRenamedFrom(byte argument);
- readonly attribute byte attributeGetterRenamedFrom;
- attribute byte attributeRenamedFrom;
- [BinaryName="otherAttributeRenamedTo"]
- attribute byte otherAttributeRenamedFrom;
-
- void passDictionary(optional Dict x);
- void passDictionary2(Dict x);
- [Cached, Pure]
- readonly attribute Dict readonlyDictionary;
- [Cached, Pure]
- readonly attribute Dict? readonlyNullableDictionary;
- [Cached, Pure]
- attribute Dict writableDictionary;
- [Cached, Pure, Frozen]
- readonly attribute Dict readonlyFrozenDictionary;
- [Cached, Pure, Frozen]
- readonly attribute Dict? readonlyFrozenNullableDictionary;
- [Cached, Pure, Frozen]
- attribute Dict writableFrozenDictionary;
- Dict receiveDictionary();
- Dict? receiveNullableDictionary();
- void passOtherDictionary(optional GrandparentDict x);
- void passSequenceOfDictionaries(sequence<Dict> x);
- void passMozMapOfDictionaries(MozMap<GrandparentDict> x);
- // No support for nullable dictionaries inside a sequence (nor should there be)
- // void passSequenceOfNullableDictionaries(sequence<Dict?> x);
- void passDictionaryOrLong(optional Dict x);
- void passDictionaryOrLong(long x);
-
- void passDictContainingDict(optional DictContainingDict arg);
- void passDictContainingSequence(optional DictContainingSequence arg);
- DictContainingSequence receiveDictContainingSequence();
- void passVariadicDictionary(Dict... arg);
-
- // EnforceRange/Clamp tests
- void dontEnforceRangeOrClamp(byte arg);
- void doEnforceRange([EnforceRange] byte arg);
- void doClamp([Clamp] byte arg);
- [EnforceRange] attribute byte enforcedByte;
- [Clamp] attribute byte clampedByte;
-
- // Typedefs
- const myLong myLongConstant = 5;
- void exerciseTypedefInterfaces1(AnotherNameForTestInterface arg);
- AnotherNameForTestInterface exerciseTypedefInterfaces2(NullableTestInterface arg);
- void exerciseTypedefInterfaces3(YetAnotherNameForTestInterface arg);
-
- // Deprecated methods and attributes
- [Deprecated="GetAttributeNode"]
- attribute byte deprecatedAttribute;
- [Deprecated="GetAttributeNode"]
- byte deprecatedMethod();
- [Deprecated="GetAttributeNode"]
- byte deprecatedMethodWithContext(any arg);
-
- // Static methods and attributes
- static attribute boolean staticAttribute;
- static void staticMethod(boolean arg);
- static void staticMethodWithContext(any arg);
-
- // Testing static method with a reserved C++ keyword as the name
- static void assert(boolean arg);
-
- // Deprecated static methods and attributes
- [Deprecated="GetAttributeNode"]
- static attribute byte staticDeprecatedAttribute;
- [Deprecated="GetAttributeNode"]
- static void staticDeprecatedMethod();
- [Deprecated="GetAttributeNode"]
- static void staticDeprecatedMethodWithContext(any arg);
-
- // Overload resolution tests
- //void overload1(DOMString... strs);
- boolean overload1(TestInterface arg);
- TestInterface overload1(DOMString strs, TestInterface arg);
- void overload2(TestInterface arg);
- void overload2(optional Dict arg);
- void overload2(boolean arg);
- void overload2(DOMString arg);
- void overload2(Date arg);
- void overload3(TestInterface arg);
- void overload3(TestCallback arg);
- void overload3(boolean arg);
- void overload4(TestInterface arg);
- void overload4(TestCallbackInterface arg);
- void overload4(DOMString arg);
- void overload5(long arg);
- void overload5(TestEnum arg);
- void overload6(long arg);
- void overload6(boolean arg);
- void overload7(long arg);
- void overload7(boolean arg);
- void overload7(ByteString arg);
- void overload8(long arg);
- void overload8(TestInterface arg);
- void overload9(long? arg);
- void overload9(DOMString arg);
- void overload10(long? arg);
- void overload10(object arg);
- void overload11(long arg);
- void overload11(DOMString? arg);
- void overload12(long arg);
- void overload12(boolean? arg);
- void overload13(long? arg);
- void overload13(boolean arg);
- void overload14(optional long arg);
- void overload14(TestInterface arg);
- void overload15(long arg);
- void overload15(optional TestInterface arg);
- void overload16(long arg);
- void overload16(optional TestInterface? arg);
- void overload17(sequence<long> arg);
- void overload17(MozMap<long> arg);
- void overload18(MozMap<DOMString> arg);
- void overload18(sequence<DOMString> arg);
- void overload19(sequence<long> arg);
- void overload19(optional Dict arg);
- void overload20(optional Dict arg);
- void overload20(sequence<long> arg);
-
- // Variadic handling
- void passVariadicThirdArg(DOMString arg1, long arg2, TestInterface... arg3);
-
- // Conditionally exposed methods/attributes
- [Pref="abc.def"]
- readonly attribute boolean prefable1;
- [Pref="abc.def"]
- readonly attribute boolean prefable2;
- [Pref="ghi.jkl"]
- readonly attribute boolean prefable3;
- [Pref="ghi.jkl"]
- readonly attribute boolean prefable4;
- [Pref="abc.def"]
- readonly attribute boolean prefable5;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable6;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable7;
- [Pref="ghi.jkl", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable8;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable9;
- [Pref="abc.def"]
- void prefable10();
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void prefable11();
- [Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean prefable12;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void prefable13();
- [Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean prefable14;
- [Func="TestFuncControlledMember"]
- readonly attribute boolean prefable15;
- [Func="TestFuncControlledMember"]
- readonly attribute boolean prefable16;
- [Pref="abc.def", Func="TestFuncControlledMember"]
- void prefable17();
- [Func="TestFuncControlledMember"]
- void prefable18();
- [Func="TestFuncControlledMember"]
- void prefable19();
- [Pref="abc.def", Func="TestFuncControlledMember", ChromeOnly]
- void prefable20();
-
- // Conditionally exposed methods/attributes involving [SecureContext]
- [SecureContext]
- readonly attribute boolean conditionalOnSecureContext1;
- [SecureContext, Pref="abc.def"]
- readonly attribute boolean conditionalOnSecureContext2;
- [SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean conditionalOnSecureContext3;
- [SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean conditionalOnSecureContext4;
- [SecureContext]
- void conditionalOnSecureContext5();
- [SecureContext, Pref="abc.def"]
- void conditionalOnSecureContext6();
- [SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void conditionalOnSecureContext7();
- [SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
- void conditionalOnSecureContext8();
-
- // Miscellania
- [LenientThis] attribute long attrWithLenientThis;
- [Unforgeable] readonly attribute long unforgeableAttr;
- [Unforgeable, ChromeOnly] readonly attribute long unforgeableAttr2;
- [Unforgeable] long unforgeableMethod();
- [Unforgeable, ChromeOnly] long unforgeableMethod2();
- stringifier;
- void passRenamedInterface(TestRenamedInterface arg);
- [PutForwards=writableByte] readonly attribute TestInterface putForwardsAttr;
- [PutForwards=writableByte, LenientThis] readonly attribute TestInterface putForwardsAttr2;
- [PutForwards=writableByte, ChromeOnly] readonly attribute TestInterface putForwardsAttr3;
- [Throws] void throwingMethod();
- [Throws] attribute boolean throwingAttr;
- [GetterThrows] attribute boolean throwingGetterAttr;
- [SetterThrows] attribute boolean throwingSetterAttr;
- [NeedsSubjectPrincipal] void needsSubjectPrincipalMethod();
- [NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr;
- [NeedsCallerType] void needsCallerTypeMethod();
- [NeedsCallerType] attribute boolean needsCallerTypeAttr;
- legacycaller short(unsigned long arg1, TestInterface arg2);
- void passArgsWithDefaults(optional long arg1,
- optional TestInterface? arg2 = null,
- optional Dict arg3, optional double arg4 = 5.0,
- optional float arg5);
-
- attribute any jsonifierShouldSkipThis;
- attribute TestParentInterface jsonifierShouldSkipThis2;
- attribute TestCallbackInterface jsonifierShouldSkipThis3;
- jsonifier;
-
- attribute byte dashed-attribute;
- void dashed-method();
-
- // If you add things here, add them to TestExampleGen and TestJSImplGen as well
-};
-
-interface TestParentInterface {
-};
-
-interface TestChildInterface : TestParentInterface {
-};
-
-interface TestNonWrapperCacheInterface {
-};
-
-[NoInterfaceObject]
-interface ImplementedInterfaceParent {
- void implementedParentMethod();
- attribute boolean implementedParentProperty;
-
- const long implementedParentConstant = 8;
-};
-
-ImplementedInterfaceParent implements IndirectlyImplementedInterface;
-
-[NoInterfaceObject]
-interface IndirectlyImplementedInterface {
- void indirectlyImplementedMethod();
- attribute boolean indirectlyImplementedProperty;
-
- const long indirectlyImplementedConstant = 9;
-};
-
-[NoInterfaceObject]
-interface ImplementedInterface : ImplementedInterfaceParent {
- void implementedMethod();
- attribute boolean implementedProperty;
-
- const long implementedConstant = 5;
-};
-
-[NoInterfaceObject]
-interface DiamondImplements {
- readonly attribute long diamondImplementedProperty;
-};
-[NoInterfaceObject]
-interface DiamondBranch1A {
-};
-[NoInterfaceObject]
-interface DiamondBranch1B {
-};
-[NoInterfaceObject]
-interface DiamondBranch2A : DiamondImplements {
-};
-[NoInterfaceObject]
-interface DiamondBranch2B : DiamondImplements {
-};
-TestInterface implements DiamondBranch1A;
-TestInterface implements DiamondBranch1B;
-TestInterface implements DiamondBranch2A;
-TestInterface implements DiamondBranch2B;
-DiamondBranch1A implements DiamondImplements;
-DiamondBranch1B implements DiamondImplements;
-
-dictionary Dict : ParentDict {
- TestEnum someEnum;
- long x;
- long a;
- long b = 8;
- long z = 9;
- [EnforceRange] unsigned long enforcedUnsignedLong;
- [Clamp] unsigned long clampedUnsignedLong;
- DOMString str;
- DOMString empty = "";
- TestEnum otherEnum = "b";
- DOMString otherStr = "def";
- DOMString? yetAnotherStr = null;
- DOMString template;
- ByteString byteStr;
- ByteString emptyByteStr = "";
- ByteString otherByteStr = "def";
- object someObj;
- boolean prototype;
- object? anotherObj = null;
- TestCallback? someCallback = null;
- any someAny;
- any anotherAny = null;
-
- unrestricted float urFloat = 0;
- unrestricted float urFloat2 = 1.1;
- unrestricted float urFloat3 = -1.1;
- unrestricted float? urFloat4 = null;
- unrestricted float infUrFloat = Infinity;
- unrestricted float negativeInfUrFloat = -Infinity;
- unrestricted float nanUrFloat = NaN;
-
- unrestricted double urDouble = 0;
- unrestricted double urDouble2 = 1.1;
- unrestricted double urDouble3 = -1.1;
- unrestricted double? urDouble4 = null;
- unrestricted double infUrDouble = Infinity;
- unrestricted double negativeInfUrDouble = -Infinity;
- unrestricted double nanUrDouble = NaN;
-
- (float or DOMString) floatOrString = "str";
- (float or DOMString)? nullableFloatOrString = "str";
- (object or long) objectOrLong;
-#ifdef DEBUG
- (EventInit or long) eventInitOrLong;
- (EventInit or long)? nullableEventInitOrLong;
- (HTMLElement or long)? nullableHTMLElementOrLong;
- // CustomEventInit is useful to test because it needs rooting.
- (CustomEventInit or long) eventInitOrLong2;
- (CustomEventInit or long)? nullableEventInitOrLong2;
- (EventInit or long) eventInitOrLongWithDefaultValue = null;
- (CustomEventInit or long) eventInitOrLongWithDefaultValue2 = null;
- (EventInit or long) eventInitOrLongWithDefaultValue3 = 5;
- (CustomEventInit or long) eventInitOrLongWithDefaultValue4 = 5;
- (EventInit or long)? nullableEventInitOrLongWithDefaultValue = null;
- (CustomEventInit or long)? nullableEventInitOrLongWithDefaultValue2 = null;
- (EventInit or long)? nullableEventInitOrLongWithDefaultValue3 = 5;
- (CustomEventInit or long)? nullableEventInitOrLongWithDefaultValue4 = 5;
- (sequence<object> or long) objectSequenceOrLong;
- (sequence<object> or long) objectSequenceOrLongWithDefaultValue1 = 1;
- (sequence<object> or long) objectSequenceOrLongWithDefaultValue2 = [];
- (sequence<object> or long)? nullableObjectSequenceOrLong;
- (sequence<object> or long)? nullableObjectSequenceOrLongWithDefaultValue1 = 1;
- (sequence<object> or long)? nullableObjectSequenceOrLongWithDefaultValue2 = [];
-#endif
-
- ArrayBuffer arrayBuffer;
- ArrayBuffer? nullableArrayBuffer;
- Uint8Array uint8Array;
- Float64Array? float64Array = null;
-
- sequence<long> seq1;
- sequence<long> seq2 = [];
- sequence<long>? seq3;
- sequence<long>? seq4 = null;
- sequence<long>? seq5 = [];
-
- long dashed-name;
-
- required long requiredLong;
- required object requiredObject;
-
- CustomEventInit customEventInit;
- TestDictionaryTypedef dictionaryTypedef;
-
- Promise<void> promise;
- sequence<Promise<void>> promiseSequence;
-};
-
-dictionary ParentDict : GrandparentDict {
- long c = 5;
- TestInterface someInterface;
- TestInterface? someNullableInterface = null;
- TestExternalInterface someExternalInterface;
- any parentAny;
-};
-
-dictionary DictContainingDict {
- Dict memberDict;
-};
-
-dictionary DictContainingSequence {
- sequence<long> ourSequence;
- sequence<TestInterface> ourSequence2;
- sequence<any> ourSequence3;
- sequence<object> ourSequence4;
- sequence<object?> ourSequence5;
- sequence<object>? ourSequence6;
- sequence<object?>? ourSequence7;
- sequence<object>? ourSequence8 = null;
- sequence<object?>? ourSequence9 = null;
- sequence<(float or DOMString)> ourSequence10;
-};
-
-dictionary DictForConstructor {
- Dict dict;
- DictContainingDict dict2;
- sequence<Dict> seq1;
- sequence<sequence<Dict>>? seq2;
- sequence<sequence<Dict>?> seq3;
- sequence<any> seq4;
- sequence<any> seq5;
- sequence<DictContainingSequence> seq6;
- object obj1;
- object? obj2;
- any any1 = null;
-};
-
-dictionary DictWithConditionalMembers {
- [ChromeOnly]
- long chromeOnlyMember;
- [Func="TestFuncControlledMember"]
- long funcControlledMember;
- [ChromeOnly, Func="nsGenericHTMLElement::TouchEventsEnabled"]
- long chromeOnlyFuncControlledMember;
-};
-
-interface TestIndexedGetterInterface {
- getter long item(unsigned long idx);
- readonly attribute unsigned long length;
- legacycaller void();
-};
-
-interface TestNamedGetterInterface {
- getter DOMString (DOMString name);
-};
-
-interface TestIndexedGetterAndSetterAndNamedGetterInterface {
- getter DOMString (DOMString myName);
- getter long (unsigned long index);
- setter creator void (unsigned long index, long arg);
-};
-
-interface TestIndexedAndNamedGetterInterface {
- getter long (unsigned long index);
- getter DOMString namedItem(DOMString name);
- readonly attribute unsigned long length;
-};
-
-interface TestIndexedSetterInterface {
- setter creator void setItem(unsigned long idx, DOMString item);
- getter DOMString (unsigned long idx);
-};
-
-interface TestNamedSetterInterface {
- setter creator void (DOMString myName, TestIndexedSetterInterface item);
- getter TestIndexedSetterInterface (DOMString name);
-};
-
-interface TestIndexedAndNamedSetterInterface {
- setter creator void (unsigned long index, TestIndexedSetterInterface item);
- getter TestIndexedSetterInterface (unsigned long index);
- setter creator void setNamedItem(DOMString name, TestIndexedSetterInterface item);
- getter TestIndexedSetterInterface (DOMString name);
-};
-
-interface TestIndexedAndNamedGetterAndSetterInterface : TestIndexedSetterInterface {
- getter long item(unsigned long index);
- getter DOMString namedItem(DOMString name);
- setter creator void (unsigned long index, long item);
- setter creator void (DOMString name, DOMString item);
- stringifier DOMString ();
- readonly attribute unsigned long length;
-};
-
-interface TestNamedDeleterInterface {
- deleter void (DOMString name);
- getter long (DOMString name);
-};
-
-interface TestNamedDeleterWithRetvalInterface {
- deleter boolean delNamedItem(DOMString name);
- getter long (DOMString name);
-};
-
-interface TestCppKeywordNamedMethodsInterface {
- boolean continue();
- boolean delete();
- long volatile();
-};
-
-[Deprecated="GetAttributeNode", Constructor()]
-interface TestDeprecatedInterface {
- static void alsoDeprecated();
-};
-
-
-[Constructor(Promise<void> promise)]
-interface TestInterfaceWithPromiseConstructorArg {
-};
-
-namespace TestNamespace {
- readonly attribute boolean foo;
- long bar();
-};
-
-partial namespace TestNamespace {
- void baz();
-};
-
-[ClassString="RenamedNamespaceClassName"]
-namespace TestRenamedNamespace {
-};
-
-[ProtoObjectHack]
-namespace TestProtoObjectHackedNamespace {
-};
-
-[SecureContext]
-interface TestSecureContextInterface {
- static void alsoSecureContext();
-};
-
-[Exposed=(Window,Worker)]
-interface TestWorkerExposedInterface {
- [NeedsSubjectPrincipal] void needsSubjectPrincipalMethod();
- [NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr;
- [NeedsCallerType] void needsCallerTypeMethod();
- [NeedsCallerType] attribute boolean needsCallerTypeAttr;
-};
diff --git a/dom/bindings/test/TestDictionary.webidl b/dom/bindings/test/TestDictionary.webidl
deleted file mode 100644
index 3dd91bd65..000000000
--- a/dom/bindings/test/TestDictionary.webidl
+++ /dev/null
@@ -1,9 +0,0 @@
-/* -*- Mode: IDL; 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/.
- */
-
-dictionary GrandparentDict {
- double someNum;
-}; \ No newline at end of file
diff --git a/dom/bindings/test/TestExampleGen.webidl b/dom/bindings/test/TestExampleGen.webidl
deleted file mode 100644
index ea6387a84..000000000
--- a/dom/bindings/test/TestExampleGen.webidl
+++ /dev/null
@@ -1,811 +0,0 @@
-/* -*- Mode: IDL; 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/.
- */
-[Constructor,
- Constructor(DOMString str),
- Constructor(unsigned long num, boolean? boolArg),
- Constructor(TestInterface? iface),
- Constructor(long arg1, IndirectlyImplementedInterface iface),
- Constructor(Date arg1),
- Constructor(ArrayBuffer arrayBuf),
- Constructor(Uint8Array typedArr),
- // Constructor(long arg1, long arg2, (TestInterface or OnlyForUseInConstructor) arg3),
- NamedConstructor=Example,
- NamedConstructor=Example(DOMString str),
- NamedConstructor=Example2(DictForConstructor dict, any any1, object obj1,
- object? obj2, sequence<Dict> seq, optional any any2,
- optional object obj3, optional object? obj4),
- NamedConstructor=Example2((long or MozMap<any>) arg1)
- ]
-interface TestExampleInterface {
- // Integer types
- // XXXbz add tests for throwing versions of all the integer stuff
- readonly attribute byte readonlyByte;
- attribute byte writableByte;
- void passByte(byte arg);
- byte receiveByte();
- void passOptionalByte(optional byte arg);
- void passOptionalByteBeforeRequired(optional byte arg1, byte arg2);
- void passOptionalByteWithDefault(optional byte arg = 0);
- void passOptionalByteWithDefaultBeforeRequired(optional byte arg1 = 0, byte arg2);
- void passNullableByte(byte? arg);
- void passOptionalNullableByte(optional byte? arg);
- void passVariadicByte(byte... arg);
- [Cached, Pure]
- readonly attribute byte cachedByte;
- [StoreInSlot, Constant]
- readonly attribute byte cachedConstantByte;
- [Cached, Pure]
- attribute byte cachedWritableByte;
- [Affects=Nothing]
- attribute byte sideEffectFreeByte;
- [Affects=Nothing, DependsOn=DOMState]
- attribute byte domDependentByte;
- [Affects=Nothing, DependsOn=Nothing]
- readonly attribute byte constantByte;
- [DependsOn=DeviceState, Affects=Nothing]
- readonly attribute byte deviceStateDependentByte;
- [Affects=Nothing]
- byte returnByteSideEffectFree();
- [Affects=Nothing, DependsOn=DOMState]
- byte returnDOMDependentByte();
- [Affects=Nothing, DependsOn=Nothing]
- byte returnConstantByte();
- [DependsOn=DeviceState, Affects=Nothing]
- byte returnDeviceStateDependentByte();
-
- readonly attribute short readonlyShort;
- attribute short writableShort;
- void passShort(short arg);
- short receiveShort();
- void passOptionalShort(optional short arg);
- void passOptionalShortWithDefault(optional short arg = 5);
-
- readonly attribute long readonlyLong;
- attribute long writableLong;
- void passLong(long arg);
- long receiveLong();
- void passOptionalLong(optional long arg);
- void passOptionalLongWithDefault(optional long arg = 7);
-
- readonly attribute long long readonlyLongLong;
- attribute long long writableLongLong;
- void passLongLong(long long arg);
- long long receiveLongLong();
- void passOptionalLongLong(optional long long arg);
- void passOptionalLongLongWithDefault(optional long long arg = -12);
-
- readonly attribute octet readonlyOctet;
- attribute octet writableOctet;
- void passOctet(octet arg);
- octet receiveOctet();
- void passOptionalOctet(optional octet arg);
- void passOptionalOctetWithDefault(optional octet arg = 19);
-
- readonly attribute unsigned short readonlyUnsignedShort;
- attribute unsigned short writableUnsignedShort;
- void passUnsignedShort(unsigned short arg);
- unsigned short receiveUnsignedShort();
- void passOptionalUnsignedShort(optional unsigned short arg);
- void passOptionalUnsignedShortWithDefault(optional unsigned short arg = 2);
-
- readonly attribute unsigned long readonlyUnsignedLong;
- attribute unsigned long writableUnsignedLong;
- void passUnsignedLong(unsigned long arg);
- unsigned long receiveUnsignedLong();
- void passOptionalUnsignedLong(optional unsigned long arg);
- void passOptionalUnsignedLongWithDefault(optional unsigned long arg = 6);
-
- readonly attribute unsigned long long readonlyUnsignedLongLong;
- attribute unsigned long long writableUnsignedLongLong;
- void passUnsignedLongLong(unsigned long long arg);
- unsigned long long receiveUnsignedLongLong();
- void passOptionalUnsignedLongLong(optional unsigned long long arg);
- void passOptionalUnsignedLongLongWithDefault(optional unsigned long long arg = 17);
-
- attribute float writableFloat;
- attribute unrestricted float writableUnrestrictedFloat;
- attribute float? writableNullableFloat;
- attribute unrestricted float? writableNullableUnrestrictedFloat;
- attribute double writableDouble;
- attribute unrestricted double writableUnrestrictedDouble;
- attribute double? writableNullableDouble;
- attribute unrestricted double? writableNullableUnrestrictedDouble;
- void passFloat(float arg1, unrestricted float arg2,
- float? arg3, unrestricted float? arg4,
- double arg5, unrestricted double arg6,
- double? arg7, unrestricted double? arg8,
- sequence<float> arg9, sequence<unrestricted float> arg10,
- sequence<float?> arg11, sequence<unrestricted float?> arg12,
- sequence<double> arg13, sequence<unrestricted double> arg14,
- sequence<double?> arg15, sequence<unrestricted double?> arg16);
- [LenientFloat]
- void passLenientFloat(float arg1, unrestricted float arg2,
- float? arg3, unrestricted float? arg4,
- double arg5, unrestricted double arg6,
- double? arg7, unrestricted double? arg8,
- sequence<float> arg9,
- sequence<unrestricted float> arg10,
- sequence<float?> arg11,
- sequence<unrestricted float?> arg12,
- sequence<double> arg13,
- sequence<unrestricted double> arg14,
- sequence<double?> arg15,
- sequence<unrestricted double?> arg16);
- [LenientFloat]
- attribute float lenientFloatAttr;
- [LenientFloat]
- attribute double lenientDoubleAttr;
-
- // Castable interface types
- // XXXbz add tests for throwing versions of all the castable interface stuff
- TestInterface receiveSelf();
- TestInterface? receiveNullableSelf();
- TestInterface receiveWeakSelf();
- TestInterface? receiveWeakNullableSelf();
- void passSelf(TestInterface arg);
- void passNullableSelf(TestInterface? arg);
- attribute TestInterface nonNullSelf;
- attribute TestInterface? nullableSelf;
- [Cached, Pure]
- readonly attribute TestInterface cachedSelf;
- // Optional arguments
- void passOptionalSelf(optional TestInterface? arg);
- void passOptionalNonNullSelf(optional TestInterface arg);
- void passOptionalSelfWithDefault(optional TestInterface? arg = null);
-
- // Non-wrapper-cache interface types
- [NewObject]
- TestNonWrapperCacheInterface receiveNonWrapperCacheInterface();
- [NewObject]
- TestNonWrapperCacheInterface? receiveNullableNonWrapperCacheInterface();
- [NewObject]
- sequence<TestNonWrapperCacheInterface> receiveNonWrapperCacheInterfaceSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface?> receiveNullableNonWrapperCacheInterfaceSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface>? receiveNonWrapperCacheInterfaceNullableSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface?>? receiveNullableNonWrapperCacheInterfaceNullableSequence();
-
- // Non-castable interface types
- IndirectlyImplementedInterface receiveOther();
- IndirectlyImplementedInterface? receiveNullableOther();
- IndirectlyImplementedInterface receiveWeakOther();
- IndirectlyImplementedInterface? receiveWeakNullableOther();
- void passOther(IndirectlyImplementedInterface arg);
- void passNullableOther(IndirectlyImplementedInterface? arg);
- attribute IndirectlyImplementedInterface nonNullOther;
- attribute IndirectlyImplementedInterface? nullableOther;
- // Optional arguments
- void passOptionalOther(optional IndirectlyImplementedInterface? arg);
- void passOptionalNonNullOther(optional IndirectlyImplementedInterface arg);
- void passOptionalOtherWithDefault(optional IndirectlyImplementedInterface? arg = null);
-
- // External interface types
- TestExternalInterface receiveExternal();
- TestExternalInterface? receiveNullableExternal();
- TestExternalInterface receiveWeakExternal();
- TestExternalInterface? receiveWeakNullableExternal();
- void passExternal(TestExternalInterface arg);
- void passNullableExternal(TestExternalInterface? arg);
- attribute TestExternalInterface nonNullExternal;
- attribute TestExternalInterface? nullableExternal;
- // Optional arguments
- void passOptionalExternal(optional TestExternalInterface? arg);
- void passOptionalNonNullExternal(optional TestExternalInterface arg);
- void passOptionalExternalWithDefault(optional TestExternalInterface? arg = null);
-
- // Callback interface types
- TestCallbackInterface receiveCallbackInterface();
- TestCallbackInterface? receiveNullableCallbackInterface();
- TestCallbackInterface receiveWeakCallbackInterface();
- TestCallbackInterface? receiveWeakNullableCallbackInterface();
- void passCallbackInterface(TestCallbackInterface arg);
- void passNullableCallbackInterface(TestCallbackInterface? arg);
- attribute TestCallbackInterface nonNullCallbackInterface;
- attribute TestCallbackInterface? nullableCallbackInterface;
- // Optional arguments
- void passOptionalCallbackInterface(optional TestCallbackInterface? arg);
- void passOptionalNonNullCallbackInterface(optional TestCallbackInterface arg);
- void passOptionalCallbackInterfaceWithDefault(optional TestCallbackInterface? arg = null);
-
- // Miscellaneous interface tests
- IndirectlyImplementedInterface receiveConsequentialInterface();
- void passConsequentialInterface(IndirectlyImplementedInterface arg);
-
- // Sequence types
- [Cached, Pure]
- readonly attribute sequence<long> readonlySequence;
- [Cached, Pure]
- readonly attribute sequence<Dict> readonlySequenceOfDictionaries;
- [Cached, Pure]
- readonly attribute sequence<Dict>? readonlyNullableSequenceOfDictionaries;
- [Cached, Pure, Frozen]
- readonly attribute sequence<long> readonlyFrozenSequence;
- [Cached, Pure, Frozen]
- readonly attribute sequence<long>? readonlyFrozenNullableSequence;
- sequence<long> receiveSequence();
- sequence<long>? receiveNullableSequence();
- sequence<long?> receiveSequenceOfNullableInts();
- sequence<long?>? receiveNullableSequenceOfNullableInts();
- void passSequence(sequence<long> arg);
- void passNullableSequence(sequence<long>? arg);
- void passSequenceOfNullableInts(sequence<long?> arg);
- void passOptionalSequenceOfNullableInts(optional sequence<long?> arg);
- void passOptionalNullableSequenceOfNullableInts(optional sequence<long?>? arg);
- sequence<TestInterface> receiveCastableObjectSequence();
- sequence<TestCallbackInterface> receiveCallbackObjectSequence();
- sequence<TestInterface?> receiveNullableCastableObjectSequence();
- sequence<TestCallbackInterface?> receiveNullableCallbackObjectSequence();
- sequence<TestInterface>? receiveCastableObjectNullableSequence();
- sequence<TestInterface?>? receiveNullableCastableObjectNullableSequence();
- sequence<TestInterface> receiveWeakCastableObjectSequence();
- sequence<TestInterface?> receiveWeakNullableCastableObjectSequence();
- sequence<TestInterface>? receiveWeakCastableObjectNullableSequence();
- sequence<TestInterface?>? receiveWeakNullableCastableObjectNullableSequence();
- void passCastableObjectSequence(sequence<TestInterface> arg);
- void passNullableCastableObjectSequence(sequence<TestInterface?> arg);
- void passCastableObjectNullableSequence(sequence<TestInterface>? arg);
- void passNullableCastableObjectNullableSequence(sequence<TestInterface?>? arg);
- void passOptionalSequence(optional sequence<long> arg);
- void passOptionalSequenceWithDefaultValue(optional sequence<long> arg = []);
- void passOptionalNullableSequence(optional sequence<long>? arg);
- void passOptionalNullableSequenceWithDefaultValue(optional sequence<long>? arg = null);
- void passOptionalNullableSequenceWithDefaultValue2(optional sequence<long>? arg = []);
- void passOptionalObjectSequence(optional sequence<TestInterface> arg);
- void passExternalInterfaceSequence(sequence<TestExternalInterface> arg);
- void passNullableExternalInterfaceSequence(sequence<TestExternalInterface?> arg);
-
- sequence<DOMString> receiveStringSequence();
- void passStringSequence(sequence<DOMString> arg);
-
- sequence<ByteString> receiveByteStringSequence();
- void passByteStringSequence(sequence<ByteString> arg);
-
- sequence<any> receiveAnySequence();
- sequence<any>? receiveNullableAnySequence();
- //XXXbz No support for sequence of sequence return values yet.
- //sequence<sequence<any>> receiveAnySequenceSequence();
-
- sequence<object> receiveObjectSequence();
- sequence<object?> receiveNullableObjectSequence();
-
- void passSequenceOfSequences(sequence<sequence<long>> arg);
- void passSequenceOfSequencesOfSequences(sequence<sequence<sequence<long>>> arg);
- //XXXbz No support for sequence of sequence return values yet.
- //sequence<sequence<long>> receiveSequenceOfSequences();
-
- // MozMap types
- void passMozMap(MozMap<long> arg);
- void passNullableMozMap(MozMap<long>? arg);
- void passMozMapOfNullableInts(MozMap<long?> arg);
- void passOptionalMozMapOfNullableInts(optional MozMap<long?> arg);
- void passOptionalNullableMozMapOfNullableInts(optional MozMap<long?>? arg);
- void passCastableObjectMozMap(MozMap<TestInterface> arg);
- void passNullableCastableObjectMozMap(MozMap<TestInterface?> arg);
- void passCastableObjectNullableMozMap(MozMap<TestInterface>? arg);
- void passNullableCastableObjectNullableMozMap(MozMap<TestInterface?>? arg);
- void passOptionalMozMap(optional MozMap<long> arg);
- void passOptionalNullableMozMap(optional MozMap<long>? arg);
- void passOptionalNullableMozMapWithDefaultValue(optional MozMap<long>? arg = null);
- void passOptionalObjectMozMap(optional MozMap<TestInterface> arg);
- void passExternalInterfaceMozMap(MozMap<TestExternalInterface> arg);
- void passNullableExternalInterfaceMozMap(MozMap<TestExternalInterface?> arg);
- void passStringMozMap(MozMap<DOMString> arg);
- void passByteStringMozMap(MozMap<ByteString> arg);
- void passMozMapOfMozMaps(MozMap<MozMap<long>> arg);
- MozMap<long> receiveMozMap();
- MozMap<long>? receiveNullableMozMap();
- MozMap<long?> receiveMozMapOfNullableInts();
- MozMap<long?>? receiveNullableMozMapOfNullableInts();
- //XXXbz No support for MozMap of MozMaps return values yet.
- //MozMap<MozMap<long>> receiveMozMapOfMozMaps();
- MozMap<any> receiveAnyMozMap();
-
- // Typed array types
- void passArrayBuffer(ArrayBuffer arg);
- void passNullableArrayBuffer(ArrayBuffer? arg);
- void passOptionalArrayBuffer(optional ArrayBuffer arg);
- void passOptionalNullableArrayBuffer(optional ArrayBuffer? arg);
- void passOptionalNullableArrayBufferWithDefaultValue(optional ArrayBuffer? arg= null);
- void passArrayBufferView(ArrayBufferView arg);
- void passInt8Array(Int8Array arg);
- void passInt16Array(Int16Array arg);
- void passInt32Array(Int32Array arg);
- void passUint8Array(Uint8Array arg);
- void passUint16Array(Uint16Array arg);
- void passUint32Array(Uint32Array arg);
- void passUint8ClampedArray(Uint8ClampedArray arg);
- void passFloat32Array(Float32Array arg);
- void passFloat64Array(Float64Array arg);
- void passSequenceOfArrayBuffers(sequence<ArrayBuffer> arg);
- void passSequenceOfNullableArrayBuffers(sequence<ArrayBuffer?> arg);
- void passMozMapOfArrayBuffers(MozMap<ArrayBuffer> arg);
- void passMozMapOfNullableArrayBuffers(MozMap<ArrayBuffer?> arg);
- void passVariadicTypedArray(Float32Array... arg);
- void passVariadicNullableTypedArray(Float32Array?... arg);
- Uint8Array receiveUint8Array();
- attribute Uint8Array uint8ArrayAttr;
-
- // DOMString types
- void passString(DOMString arg);
- void passNullableString(DOMString? arg);
- void passOptionalString(optional DOMString arg);
- void passOptionalStringWithDefaultValue(optional DOMString arg = "abc");
- void passOptionalNullableString(optional DOMString? arg);
- void passOptionalNullableStringWithDefaultValue(optional DOMString? arg = null);
- void passVariadicString(DOMString... arg);
-
- // ByteString types
- void passByteString(ByteString arg);
- void passNullableByteString(ByteString? arg);
- void passOptionalByteString(optional ByteString arg);
- void passOptionalByteStringWithDefaultValue(optional ByteString arg = "abc");
- void passOptionalNullableByteString(optional ByteString? arg);
- void passOptionalNullableByteStringWithDefaultValue(optional ByteString? arg = null);
- void passVariadicByteString(ByteString... arg);
- void passUnionByteString((ByteString or long) arg);
- void passOptionalUnionByteString(optional (ByteString or long) arg);
- void passOptionalUnionByteStringWithDefaultValue(optional (ByteString or long) arg = "abc");
-
- // USVString types
- void passSVS(USVString arg);
- void passNullableSVS(USVString? arg);
- void passOptionalSVS(optional USVString arg);
- void passOptionalSVSWithDefaultValue(optional USVString arg = "abc");
- void passOptionalNullableSVS(optional USVString? arg);
- void passOptionalNullableSVSWithDefaultValue(optional USVString? arg = null);
- void passVariadicSVS(USVString... arg);
- USVString receiveSVS();
-
- // Enumerated types
- void passEnum(TestEnum arg);
- void passNullableEnum(TestEnum? arg);
- void passOptionalEnum(optional TestEnum arg);
- void passEnumWithDefault(optional TestEnum arg = "a");
- void passOptionalNullableEnum(optional TestEnum? arg);
- void passOptionalNullableEnumWithDefaultValue(optional TestEnum? arg = null);
- void passOptionalNullableEnumWithDefaultValue2(optional TestEnum? arg = "a");
- TestEnum receiveEnum();
- TestEnum? receiveNullableEnum();
- attribute TestEnum enumAttribute;
- readonly attribute TestEnum readonlyEnumAttribute;
-
- // Callback types
- void passCallback(TestCallback arg);
- void passNullableCallback(TestCallback? arg);
- void passOptionalCallback(optional TestCallback arg);
- void passOptionalNullableCallback(optional TestCallback? arg);
- void passOptionalNullableCallbackWithDefaultValue(optional TestCallback? arg = null);
- TestCallback receiveCallback();
- TestCallback? receiveNullableCallback();
- void passNullableTreatAsNullCallback(TestTreatAsNullCallback? arg);
- void passOptionalNullableTreatAsNullCallback(optional TestTreatAsNullCallback? arg);
- void passOptionalNullableTreatAsNullCallbackWithDefaultValue(optional TestTreatAsNullCallback? arg = null);
-
- // Any types
- void passAny(any arg);
- void passVariadicAny(any... arg);
- void passOptionalAny(optional any arg);
- void passAnyDefaultNull(optional any arg = null);
- void passSequenceOfAny(sequence<any> arg);
- void passNullableSequenceOfAny(sequence<any>? arg);
- void passOptionalSequenceOfAny(optional sequence<any> arg);
- void passOptionalNullableSequenceOfAny(optional sequence<any>? arg);
- void passOptionalSequenceOfAnyWithDefaultValue(optional sequence<any>? arg = null);
- void passSequenceOfSequenceOfAny(sequence<sequence<any>> arg);
- void passSequenceOfNullableSequenceOfAny(sequence<sequence<any>?> arg);
- void passNullableSequenceOfNullableSequenceOfAny(sequence<sequence<any>?>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfAny(optional sequence<sequence<any>?>? arg);
- void passMozMapOfAny(MozMap<any> arg);
- void passNullableMozMapOfAny(MozMap<any>? arg);
- void passOptionalMozMapOfAny(optional MozMap<any> arg);
- void passOptionalNullableMozMapOfAny(optional MozMap<any>? arg);
- void passOptionalMozMapOfAnyWithDefaultValue(optional MozMap<any>? arg = null);
- void passMozMapOfMozMapOfAny(MozMap<MozMap<any>> arg);
- void passMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?> arg);
- void passNullableMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?>? arg);
- void passOptionalNullableMozMapOfNullableMozMapOfAny(optional MozMap<MozMap<any>?>? arg);
- void passOptionalNullableMozMapOfNullableSequenceOfAny(optional MozMap<sequence<any>?>? arg);
- void passOptionalNullableSequenceOfNullableMozMapOfAny(optional sequence<MozMap<any>?>? arg);
- any receiveAny();
-
- // object types
- void passObject(object arg);
- void passVariadicObject(object... arg);
- void passNullableObject(object? arg);
- void passVariadicNullableObject(object... arg);
- void passOptionalObject(optional object arg);
- void passOptionalNullableObject(optional object? arg);
- void passOptionalNullableObjectWithDefaultValue(optional object? arg = null);
- void passSequenceOfObject(sequence<object> arg);
- void passSequenceOfNullableObject(sequence<object?> arg);
- void passNullableSequenceOfObject(sequence<object>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfObject(optional sequence<sequence<object>?>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfNullableObject(optional sequence<sequence<object?>?>? arg);
- void passMozMapOfObject(MozMap<object> arg);
- object receiveObject();
- object? receiveNullableObject();
-
- // Union types
- void passUnion((object or long) arg);
- // Some union tests are debug-only to avoid creating all those
- // unused union types in opt builds.
-#ifdef DEBUG
- void passUnion2((long or boolean) arg);
- void passUnion3((object or long or boolean) arg);
- void passUnion4((Node or long or boolean) arg);
- void passUnion5((object or boolean) arg);
- void passUnion6((object or DOMString) arg);
- void passUnion7((object or DOMString or long) arg);
- void passUnion8((object or DOMString or boolean) arg);
- void passUnion9((object or DOMString or long or boolean) arg);
- void passUnion10(optional (EventInit or long) arg);
- void passUnion11(optional (CustomEventInit or long) arg);
- void passUnion12(optional (EventInit or long) arg = 5);
- void passUnion13(optional (object or long?) arg = null);
- void passUnion14(optional (object or long?) arg = 5);
- void passUnion15((sequence<long> or long) arg);
- void passUnion16(optional (sequence<long> or long) arg);
- void passUnion17(optional (sequence<long>? or long) arg = 5);
- void passUnion18((sequence<object> or long) arg);
- void passUnion19(optional (sequence<object> or long) arg);
- void passUnion20(optional (sequence<object> or long) arg = []);
- void passUnion21((MozMap<long> or long) arg);
- void passUnion22((MozMap<object> or long) arg);
- void passUnion23((sequence<ImageData> or long) arg);
- void passUnion24((sequence<ImageData?> or long) arg);
- void passUnion25((sequence<sequence<ImageData>> or long) arg);
- void passUnion26((sequence<sequence<ImageData?>> or long) arg);
- void passUnion27(optional (sequence<DOMString> or EventInit) arg);
- void passUnion28(optional (EventInit or sequence<DOMString>) arg);
- void passUnionWithCallback((EventHandler or long) arg);
- void passUnionWithByteString((ByteString or long) arg);
- void passUnionWithMozMap((MozMap<DOMString> or DOMString) arg);
- void passUnionWithMozMapAndSequence((MozMap<DOMString> or sequence<DOMString>) arg);
- void passUnionWithSequenceAndMozMap((sequence<DOMString> or MozMap<DOMString>) arg);
- void passUnionWithSVS((USVString or long) arg);
-#endif
- void passUnionWithNullable((object? or long) arg);
- void passNullableUnion((object or long)? arg);
- void passOptionalUnion(optional (object or long) arg);
- void passOptionalNullableUnion(optional (object or long)? arg);
- void passOptionalNullableUnionWithDefaultValue(optional (object or long)? arg = null);
- //void passUnionWithInterfaces((TestInterface or TestExternalInterface) arg);
- //void passUnionWithInterfacesAndNullable((TestInterface? or TestExternalInterface) arg);
- //void passUnionWithSequence((sequence<object> or long) arg);
- void passUnionWithArrayBuffer((ArrayBuffer or long) arg);
- void passUnionWithString((DOMString or object) arg);
- // Using an enum in a union. Note that we use some enum not declared in our
- // binding file, because UnionTypes.h will need to include the binding header
- // for this enum. Pick an enum from an interface that won't drag in too much
- // stuff.
- void passUnionWithEnum((SupportedType or object) arg);
-
- // Trying to use a callback in a union won't include the test
- // headers, unfortunately, so won't compile.
- // void passUnionWithCallback((TestCallback or long) arg);
- void passUnionWithObject((object or long) arg);
- //void passUnionWithDict((Dict or long) arg);
-
- void passUnionWithDefaultValue1(optional (double or DOMString) arg = "");
- void passUnionWithDefaultValue2(optional (double or DOMString) arg = 1);
- void passUnionWithDefaultValue3(optional (double or DOMString) arg = 1.5);
- void passUnionWithDefaultValue4(optional (float or DOMString) arg = "");
- void passUnionWithDefaultValue5(optional (float or DOMString) arg = 1);
- void passUnionWithDefaultValue6(optional (float or DOMString) arg = 1.5);
- void passUnionWithDefaultValue7(optional (unrestricted double or DOMString) arg = "");
- void passUnionWithDefaultValue8(optional (unrestricted double or DOMString) arg = 1);
- void passUnionWithDefaultValue9(optional (unrestricted double or DOMString) arg = 1.5);
- void passUnionWithDefaultValue10(optional (unrestricted double or DOMString) arg = Infinity);
- void passUnionWithDefaultValue11(optional (unrestricted float or DOMString) arg = "");
- void passUnionWithDefaultValue12(optional (unrestricted float or DOMString) arg = 1);
- void passUnionWithDefaultValue13(optional (unrestricted float or DOMString) arg = Infinity);
- void passUnionWithDefaultValue14(optional (double or ByteString) arg = "");
- void passUnionWithDefaultValue15(optional (double or ByteString) arg = 1);
- void passUnionWithDefaultValue16(optional (double or ByteString) arg = 1.5);
- void passUnionWithDefaultValue17(optional (double or SupportedType) arg = "text/html");
- void passUnionWithDefaultValue18(optional (double or SupportedType) arg = 1);
- void passUnionWithDefaultValue19(optional (double or SupportedType) arg = 1.5);
-
- void passNullableUnionWithDefaultValue1(optional (double or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue2(optional (double or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue3(optional (double or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue4(optional (float or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue5(optional (float or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue6(optional (float or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue7(optional (unrestricted double or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue8(optional (unrestricted double or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue9(optional (unrestricted double or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue10(optional (unrestricted float or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue11(optional (unrestricted float or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue12(optional (unrestricted float or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue13(optional (double or ByteString)? arg = "");
- void passNullableUnionWithDefaultValue14(optional (double or ByteString)? arg = 1);
- void passNullableUnionWithDefaultValue15(optional (double or ByteString)? arg = 1.5);
- void passNullableUnionWithDefaultValue16(optional (double or ByteString)? arg = null);
- void passNullableUnionWithDefaultValue17(optional (double or SupportedType)? arg = "text/html");
- void passNullableUnionWithDefaultValue18(optional (double or SupportedType)? arg = 1);
- void passNullableUnionWithDefaultValue19(optional (double or SupportedType)? arg = 1.5);
- void passNullableUnionWithDefaultValue20(optional (double or SupportedType)? arg = null);
-
- void passSequenceOfUnions(sequence<(CanvasPattern or CanvasGradient)> arg);
- void passSequenceOfUnions2(sequence<(object or long)> arg);
- void passVariadicUnion((CanvasPattern or CanvasGradient)... arg);
-
- void passSequenceOfNullableUnions(sequence<(CanvasPattern or CanvasGradient)?> arg);
- void passVariadicNullableUnion((CanvasPattern or CanvasGradient)?... arg);
- void passMozMapOfUnions(MozMap<(CanvasPattern or CanvasGradient)> arg);
- // XXXbz no move constructor on some unions
- // void passMozMapOfUnions2(MozMap<(object or long)> arg);
-
- (CanvasPattern or CanvasGradient) receiveUnion();
- (object or long) receiveUnion2();
- (CanvasPattern? or CanvasGradient) receiveUnionContainingNull();
- (CanvasPattern or CanvasGradient)? receiveNullableUnion();
- (object or long)? receiveNullableUnion2();
-
- attribute (CanvasPattern or CanvasGradient) writableUnion;
- attribute (CanvasPattern? or CanvasGradient) writableUnionContainingNull;
- attribute (CanvasPattern or CanvasGradient)? writableNullableUnion;
-
- // Date types
- void passDate(Date arg);
- void passNullableDate(Date? arg);
- void passOptionalDate(optional Date arg);
- void passOptionalNullableDate(optional Date? arg);
- void passOptionalNullableDateWithDefaultValue(optional Date? arg = null);
- void passDateSequence(sequence<Date> arg);
- void passNullableDateSequence(sequence<Date?> arg);
- void passDateMozMap(MozMap<Date> arg);
- Date receiveDate();
- Date? receiveNullableDate();
-
- // Promise types
- void passPromise(Promise<any> arg);
- void passNullablePromise(Promise<any>? arg);
- void passOptionalPromise(optional Promise<any> arg);
- void passOptionalNullablePromise(optional Promise<any>? arg);
- void passOptionalNullablePromiseWithDefaultValue(optional Promise<any>? arg = null);
- void passPromiseSequence(sequence<Promise<any>> arg);
- void passNullablePromiseSequence(sequence<Promise<any>?> arg);
- Promise<any> receivePromise();
- Promise<any> receiveAddrefedPromise();
-
- // binaryNames tests
- void methodRenamedFrom();
- [BinaryName="otherMethodRenamedTo"]
- void otherMethodRenamedFrom();
- void methodRenamedFrom(byte argument);
- readonly attribute byte attributeGetterRenamedFrom;
- attribute byte attributeRenamedFrom;
- [BinaryName="otherAttributeRenamedTo"]
- attribute byte otherAttributeRenamedFrom;
-
- void passDictionary(optional Dict x);
- void passDictionary2(Dict x);
- [Cached, Pure]
- readonly attribute Dict readonlyDictionary;
- [Cached, Pure]
- readonly attribute Dict? readonlyNullableDictionary;
- [Cached, Pure]
- attribute Dict writableDictionary;
- [Cached, Pure, Frozen]
- readonly attribute Dict readonlyFrozenDictionary;
- [Cached, Pure, Frozen]
- readonly attribute Dict? readonlyFrozenNullableDictionary;
- [Cached, Pure, Frozen]
- attribute Dict writableFrozenDictionary;
- Dict receiveDictionary();
- Dict? receiveNullableDictionary();
- void passOtherDictionary(optional GrandparentDict x);
- void passSequenceOfDictionaries(sequence<Dict> x);
- void passMozMapOfDictionaries(MozMap<GrandparentDict> x);
- // No support for nullable dictionaries inside a sequence (nor should there be)
- // void passSequenceOfNullableDictionaries(sequence<Dict?> x);
- void passDictionaryOrLong(optional Dict x);
- void passDictionaryOrLong(long x);
-
- void passDictContainingDict(optional DictContainingDict arg);
- void passDictContainingSequence(optional DictContainingSequence arg);
- DictContainingSequence receiveDictContainingSequence();
- void passVariadicDictionary(Dict... arg);
-
- // EnforceRange/Clamp tests
- void dontEnforceRangeOrClamp(byte arg);
- void doEnforceRange([EnforceRange] byte arg);
- void doClamp([Clamp] byte arg);
- [EnforceRange] attribute byte enforcedByte;
- [Clamp] attribute byte clampedByte;
-
- // Typedefs
- const myLong myLongConstant = 5;
- void exerciseTypedefInterfaces1(AnotherNameForTestInterface arg);
- AnotherNameForTestInterface exerciseTypedefInterfaces2(NullableTestInterface arg);
- void exerciseTypedefInterfaces3(YetAnotherNameForTestInterface arg);
-
- // Deprecated methods and attributes
- [Deprecated="GetAttributeNode"]
- attribute boolean deprecatedAttribute;
- [Deprecated="GetAttributeNode"]
- void deprecatedMethod(boolean arg);
- [Deprecated="GetAttributeNode"]
- void deprecatedMethodWithContext(any arg);
-
- // Static methods and attributes
- static attribute boolean staticAttribute;
- static void staticMethod(boolean arg);
- static void staticMethodWithContext(any arg);
-
- // Deprecated methods and attributes;
- [Deprecated="GetAttributeNode"]
- static attribute boolean staticDeprecatedAttribute;
- [Deprecated="GetAttributeNode"]
- static void staticDeprecatedMethod(boolean arg);
- [Deprecated="GetAttributeNode"]
- static void staticDeprecatedMethodWithContext(any arg);
-
- // Overload resolution tests
- //void overload1(DOMString... strs);
- boolean overload1(TestInterface arg);
- TestInterface overload1(DOMString strs, TestInterface arg);
- void overload2(TestInterface arg);
- void overload2(optional Dict arg);
- void overload2(boolean arg);
- void overload2(DOMString arg);
- void overload2(Date arg);
- void overload3(TestInterface arg);
- void overload3(TestCallback arg);
- void overload3(boolean arg);
- void overload4(TestInterface arg);
- void overload4(TestCallbackInterface arg);
- void overload4(DOMString arg);
- void overload5(long arg);
- void overload5(TestEnum arg);
- void overload6(long arg);
- void overload6(boolean arg);
- void overload7(long arg);
- void overload7(boolean arg);
- void overload7(ByteString arg);
- void overload8(long arg);
- void overload8(TestInterface arg);
- void overload9(long? arg);
- void overload9(DOMString arg);
- void overload10(long? arg);
- void overload10(object arg);
- void overload11(long arg);
- void overload11(DOMString? arg);
- void overload12(long arg);
- void overload12(boolean? arg);
- void overload13(long? arg);
- void overload13(boolean arg);
- void overload14(optional long arg);
- void overload14(TestInterface arg);
- void overload15(long arg);
- void overload15(optional TestInterface arg);
- void overload16(long arg);
- void overload16(optional TestInterface? arg);
- void overload17(sequence<long> arg);
- void overload17(MozMap<long> arg);
- void overload18(MozMap<DOMString> arg);
- void overload18(sequence<DOMString> arg);
- void overload19(sequence<long> arg);
- void overload19(optional Dict arg);
- void overload20(optional Dict arg);
- void overload20(sequence<long> arg);
-
- // Variadic handling
- void passVariadicThirdArg(DOMString arg1, long arg2, TestInterface... arg3);
-
- // Conditionally exposed methods/attributes
- [Pref="abc.def"]
- readonly attribute boolean prefable1;
- [Pref="abc.def"]
- readonly attribute boolean prefable2;
- [Pref="ghi.jkl"]
- readonly attribute boolean prefable3;
- [Pref="ghi.jkl"]
- readonly attribute boolean prefable4;
- [Pref="abc.def"]
- readonly attribute boolean prefable5;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable6;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable7;
- [Pref="ghi.jkl", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable8;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable9;
- [Pref="abc.def"]
- void prefable10();
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void prefable11();
- [Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean prefable12;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void prefable13();
- [Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean prefable14;
- [Func="TestFuncControlledMember"]
- readonly attribute boolean prefable15;
- [Func="TestFuncControlledMember"]
- readonly attribute boolean prefable16;
- [Pref="abc.def", Func="TestFuncControlledMember"]
- void prefable17();
- [Func="TestFuncControlledMember"]
- void prefable18();
- [Func="TestFuncControlledMember"]
- void prefable19();
-
- // Conditionally exposed methods/attributes involving [SecureContext]
- [SecureContext]
- readonly attribute boolean conditionalOnSecureContext1;
- [SecureContext, Pref="abc.def"]
- readonly attribute boolean conditionalOnSecureContext2;
- [SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean conditionalOnSecureContext3;
- [SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean conditionalOnSecureContext4;
- [SecureContext]
- void conditionalOnSecureContext5();
- [SecureContext, Pref="abc.def"]
- void conditionalOnSecureContext6();
- [SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void conditionalOnSecureContext7();
- [SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
- void conditionalOnSecureContext8();
-
- // Miscellania
- [LenientThis] attribute long attrWithLenientThis;
- [Unforgeable] readonly attribute long unforgeableAttr;
- [Unforgeable, ChromeOnly] readonly attribute long unforgeableAttr2;
- [Unforgeable] long unforgeableMethod();
- [Unforgeable, ChromeOnly] long unforgeableMethod2();
- stringifier;
- void passRenamedInterface(TestRenamedInterface arg);
- [PutForwards=writableByte] readonly attribute TestExampleInterface putForwardsAttr;
- [PutForwards=writableByte, LenientThis] readonly attribute TestExampleInterface putForwardsAttr2;
- [PutForwards=writableByte, ChromeOnly] readonly attribute TestExampleInterface putForwardsAttr3;
- [Throws] void throwingMethod();
- [Throws] attribute boolean throwingAttr;
- [GetterThrows] attribute boolean throwingGetterAttr;
- [SetterThrows] attribute boolean throwingSetterAttr;
- [NeedsSubjectPrincipal] void needsSubjectPrincipalMethod();
- [NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr;
- [NeedsCallerType] void needsCallerTypeMethod();
- [NeedsCallerType] attribute boolean needsCallerTypeAttr;
- legacycaller short(unsigned long arg1, TestInterface arg2);
- void passArgsWithDefaults(optional long arg1,
- optional TestInterface? arg2 = null,
- optional Dict arg3, optional double arg4 = 5.0,
- optional float arg5);
- attribute any jsonifierShouldSkipThis;
- attribute TestParentInterface jsonifierShouldSkipThis2;
- attribute TestCallbackInterface jsonifierShouldSkipThis3;
- jsonifier;
-
- attribute byte dashed-attribute;
- void dashed-method();
-
- // If you add things here, add them to TestCodeGen and TestJSImplGen as well
-};
-
-interface TestExampleProxyInterface {
- getter long longIndexedGetter(unsigned long ix);
- setter creator void longIndexedSetter(unsigned long y, long z);
- stringifier DOMString myStringifier();
- getter short shortNameGetter(DOMString nom);
- deleter void (DOMString nomnom);
- setter creator void shortNamedSetter(DOMString me, short value);
-};
-
-[Exposed=(Window,Worker)]
-interface TestExampleWorkerInterface {
- [NeedsSubjectPrincipal] void needsSubjectPrincipalMethod();
- [NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr;
- [NeedsCallerType] void needsCallerTypeMethod();
- [NeedsCallerType] attribute boolean needsCallerTypeAttr;
-};
diff --git a/dom/bindings/test/TestFunctions.cpp b/dom/bindings/test/TestFunctions.cpp
deleted file mode 100644
index f05c92b48..000000000
--- a/dom/bindings/test/TestFunctions.cpp
+++ /dev/null
@@ -1,94 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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 "mozilla/dom/TestFunctions.h"
-#include "mozilla/dom/TestFunctionsBinding.h"
-#include "nsStringBuffer.h"
-
-namespace mozilla {
-namespace dom {
-
-/* static */ TestFunctions*
-TestFunctions::Constructor(GlobalObject& aGlobal, ErrorResult& aRv)
-{
- return new TestFunctions;
-}
-
-/* static */ void
-TestFunctions::ThrowUncatchableException(GlobalObject& aGlobal,
- ErrorResult& aRv)
-{
- aRv.ThrowUncatchableException();
-}
-
-/* static */ Promise*
-TestFunctions::PassThroughPromise(GlobalObject& aGlobal, Promise& aPromise)
-{
- return &aPromise;
-}
-
-/* static */ already_AddRefed<Promise>
-TestFunctions::PassThroughCallbackPromise(GlobalObject& aGlobal,
- PromiseReturner& aCallback,
- ErrorResult& aRv)
-{
- return aCallback.Call(aRv);
-}
-
-void
-TestFunctions::SetStringData(const nsAString& aString)
-{
- mStringData = aString;
-}
-
-void
-TestFunctions::GetStringDataAsAString(nsAString& aString)
-{
- aString = mStringData;
-}
-
-void
-TestFunctions::GetStringDataAsAString(uint32_t aLength, nsAString& aString)
-{
- MOZ_RELEASE_ASSERT(aLength <= mStringData.Length(),
- "Bogus test passing in a too-big length");
- aString.Assign(mStringData.BeginReading(), aLength);
-}
-
-void
-TestFunctions::GetStringDataAsDOMString(const Optional<uint32_t>& aLength,
- DOMString& aString)
-{
- uint32_t length;
- if (aLength.WasPassed()) {
- length = aLength.Value();
- MOZ_RELEASE_ASSERT(length <= mStringData.Length(),
- "Bogus test passing in a too-big length");
- } else {
- length = mStringData.Length();
- }
-
- nsStringBuffer* buf = nsStringBuffer::FromString(mStringData);
- if (buf) {
- aString.SetStringBuffer(buf, length);
- return;
- }
-
- // We better have an empty mStringData; otherwise why did we not have a string
- // buffer?
- MOZ_RELEASE_ASSERT(length == 0, "Why no stringbuffer?");
- // No need to do anything here; aString is already empty.
-}
-
-bool
-TestFunctions::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto,
- JS::MutableHandle<JSObject*> aWrapper)
-{
- return TestFunctionsBinding::Wrap(aCx, this, aGivenProto, aWrapper);
-}
-
-}
-}
diff --git a/dom/bindings/test/TestFunctions.h b/dom/bindings/test/TestFunctions.h
deleted file mode 100644
index b35464824..000000000
--- a/dom/bindings/test/TestFunctions.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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/. */
-
-#ifndef mozilla_dom_TestFunctions_h
-#define mozilla_dom_TestFunctions_h
-
-#include "mozilla/ErrorResult.h"
-#include "mozilla/dom/BindingDeclarations.h"
-#include "mozilla/dom/NonRefcountedDOMObject.h"
-#include "nsString.h"
-
-namespace mozilla {
-namespace dom {
-
-class Promise;
-class PromiseReturner;
-
-class TestFunctions : public NonRefcountedDOMObject {
-public:
- static TestFunctions* Constructor(GlobalObject& aGlobal, ErrorResult& aRv);
-
- static void
- ThrowUncatchableException(GlobalObject& aGlobal, ErrorResult& aRv);
-
- static Promise*
- PassThroughPromise(GlobalObject& aGlobal, Promise& aPromise);
-
- static already_AddRefed<Promise>
- PassThroughCallbackPromise(GlobalObject& aGlobal,
- PromiseReturner& aCallback,
- ErrorResult& aRv);
-
- void SetStringData(const nsAString& aString);
-
- void GetStringDataAsAString(nsAString& aString);
- void GetStringDataAsAString(uint32_t aLength, nsAString& aString);
- void GetStringDataAsDOMString(const Optional<uint32_t>& aLength,
- DOMString& aString);
-
- bool WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto,
- JS::MutableHandle<JSObject*> aWrapper);
-private:
- nsString mStringData;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_TestFunctions_h
diff --git a/dom/bindings/test/TestInterfaceIterableDouble.cpp b/dom/bindings/test/TestInterfaceIterableDouble.cpp
deleted file mode 100644
index 33a4c97d1..000000000
--- a/dom/bindings/test/TestInterfaceIterableDouble.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/dom/TestInterfaceIterableDouble.h"
-#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
-#include "nsPIDOMWindow.h"
-#include "mozilla/dom/BindingUtils.h"
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceIterableDouble, mParent)
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceIterableDouble)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceIterableDouble)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceIterableDouble)
-NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-NS_INTERFACE_MAP_ENTRY(nsISupports)
-NS_INTERFACE_MAP_END
-
-TestInterfaceIterableDouble::TestInterfaceIterableDouble(nsPIDOMWindowInner* aParent)
- : mParent(aParent)
-{
- mValues.AppendElement(std::pair<nsString, nsString>(NS_LITERAL_STRING("a"),
- NS_LITERAL_STRING("b")));
- mValues.AppendElement(std::pair<nsString, nsString>(NS_LITERAL_STRING("c"),
- NS_LITERAL_STRING("d")));
- mValues.AppendElement(std::pair<nsString, nsString>(NS_LITERAL_STRING("e"),
- NS_LITERAL_STRING("f")));
-}
-
-//static
-already_AddRefed<TestInterfaceIterableDouble>
-TestInterfaceIterableDouble::Constructor(const GlobalObject& aGlobal,
- ErrorResult& aRv)
-{
- nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
- if (!window) {
- aRv.Throw(NS_ERROR_FAILURE);
- return nullptr;
- }
-
- RefPtr<TestInterfaceIterableDouble> r = new TestInterfaceIterableDouble(window);
- return r.forget();
-}
-
-JSObject*
-TestInterfaceIterableDouble::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
-{
- return TestInterfaceIterableDoubleBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsPIDOMWindowInner*
-TestInterfaceIterableDouble::GetParentObject() const
-{
- return mParent;
-}
-
-size_t
-TestInterfaceIterableDouble::GetIterableLength()
-{
- return mValues.Length();
-}
-
-nsAString&
-TestInterfaceIterableDouble::GetKeyAtIndex(uint32_t aIndex)
-{
- MOZ_ASSERT(aIndex < mValues.Length());
- return mValues.ElementAt(aIndex).first;
-}
-
-nsAString&
-TestInterfaceIterableDouble::GetValueAtIndex(uint32_t aIndex)
-{
- MOZ_ASSERT(aIndex < mValues.Length());
- return mValues.ElementAt(aIndex).second;
-}
-
-} // namespace dom
-} // namespace mozilla
diff --git a/dom/bindings/test/TestInterfaceIterableDouble.h b/dom/bindings/test/TestInterfaceIterableDouble.h
deleted file mode 100644
index 1e9ff7acd..000000000
--- a/dom/bindings/test/TestInterfaceIterableDouble.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-/* 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/. */
-
-#ifndef mozilla_dom_TestInterfaceIterableDouble_h
-#define mozilla_dom_TestInterfaceIterableDouble_h
-
-#include "nsWrapperCache.h"
-#include "nsCOMPtr.h"
-
-class nsPIDOMWindowInner;
-
-namespace mozilla {
-
-class ErrorResult;
-
-namespace dom {
-
-class GlobalObject;
-
-// Implementation of test binding for webidl iterable interfaces, using
-// primitives for value type
-class TestInterfaceIterableDouble final : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceIterableDouble)
-
- explicit TestInterfaceIterableDouble(nsPIDOMWindowInner* aParent);
- nsPIDOMWindowInner* GetParentObject() const;
- virtual JSObject* WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto) override;
- static already_AddRefed<TestInterfaceIterableDouble>
- Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
-
- size_t GetIterableLength();
- nsAString& GetKeyAtIndex(uint32_t aIndex);
- nsAString& GetValueAtIndex(uint32_t aIndex);
-private:
- virtual ~TestInterfaceIterableDouble() {}
- nsCOMPtr<nsPIDOMWindowInner> mParent;
- nsTArray<std::pair<nsString, nsString>> mValues;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_TestInterfaceIterableDouble_h
diff --git a/dom/bindings/test/TestInterfaceIterableDoubleUnion.cpp b/dom/bindings/test/TestInterfaceIterableDoubleUnion.cpp
deleted file mode 100644
index 29151a4c5..000000000
--- a/dom/bindings/test/TestInterfaceIterableDoubleUnion.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/dom/TestInterfaceIterableDoubleUnion.h"
-#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
-#include "nsPIDOMWindow.h"
-#include "mozilla/dom/BindingUtils.h"
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceIterableDoubleUnion, mParent)
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceIterableDoubleUnion)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceIterableDoubleUnion)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceIterableDoubleUnion)
-NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-NS_INTERFACE_MAP_ENTRY(nsISupports)
-NS_INTERFACE_MAP_END
-
-TestInterfaceIterableDoubleUnion::TestInterfaceIterableDoubleUnion(nsPIDOMWindowInner* aParent)
- : mParent(aParent)
-{
- OwningStringOrLong a;
- a.SetAsLong() = 1;
- mValues.AppendElement(std::pair<nsString, OwningStringOrLong>(NS_LITERAL_STRING("long"),
- a));
- a.SetAsString() = NS_LITERAL_STRING("a");
- mValues.AppendElement(std::pair<nsString, OwningStringOrLong>(NS_LITERAL_STRING("string"),
- a));
-}
-
-//static
-already_AddRefed<TestInterfaceIterableDoubleUnion>
-TestInterfaceIterableDoubleUnion::Constructor(const GlobalObject& aGlobal,
- ErrorResult& aRv)
-{
- nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
- if (!window) {
- aRv.Throw(NS_ERROR_FAILURE);
- return nullptr;
- }
-
- RefPtr<TestInterfaceIterableDoubleUnion> r = new TestInterfaceIterableDoubleUnion(window);
- return r.forget();
-}
-
-JSObject*
-TestInterfaceIterableDoubleUnion::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
-{
- return TestInterfaceIterableDoubleUnionBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsPIDOMWindowInner*
-TestInterfaceIterableDoubleUnion::GetParentObject() const
-{
- return mParent;
-}
-
-size_t
-TestInterfaceIterableDoubleUnion::GetIterableLength()
-{
- return mValues.Length();
-}
-
-nsAString&
-TestInterfaceIterableDoubleUnion::GetKeyAtIndex(uint32_t aIndex)
-{
- MOZ_ASSERT(aIndex < mValues.Length());
- return mValues.ElementAt(aIndex).first;
-}
-
-OwningStringOrLong&
-TestInterfaceIterableDoubleUnion::GetValueAtIndex(uint32_t aIndex)
-{
- MOZ_ASSERT(aIndex < mValues.Length());
- return mValues.ElementAt(aIndex).second;
-}
-
-} // namespace dom
-} // namespace mozilla
diff --git a/dom/bindings/test/TestInterfaceIterableDoubleUnion.h b/dom/bindings/test/TestInterfaceIterableDoubleUnion.h
deleted file mode 100644
index ff6ea2175..000000000
--- a/dom/bindings/test/TestInterfaceIterableDoubleUnion.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-/* 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/. */
-
-#ifndef mozilla_dom_TestInterfaceIterableDoubleUnion_h
-#define mozilla_dom_TestInterfaceIterableDoubleUnion_h
-
-#include "nsWrapperCache.h"
-#include "nsCOMPtr.h"
-
-class nsPIDOMWindowInner;
-
-namespace mozilla {
-
-class ErrorResult;
-
-namespace dom {
-
-class GlobalObject;
-
-// Implementation of test binding for webidl iterable interfaces, using
-// primitives for value type
-class TestInterfaceIterableDoubleUnion final : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceIterableDoubleUnion)
-
- explicit TestInterfaceIterableDoubleUnion(nsPIDOMWindowInner* aParent);
- nsPIDOMWindowInner* GetParentObject() const;
- virtual JSObject* WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto) override;
- static already_AddRefed<TestInterfaceIterableDoubleUnion>
- Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
-
- size_t GetIterableLength();
- nsAString& GetKeyAtIndex(uint32_t aIndex);
- OwningStringOrLong& GetValueAtIndex(uint32_t aIndex);
-private:
- virtual ~TestInterfaceIterableDoubleUnion() {}
- nsCOMPtr<nsPIDOMWindowInner> mParent;
- nsTArray<std::pair<nsString, OwningStringOrLong>> mValues;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_TestInterfaceIterableDoubleUnion_h
diff --git a/dom/bindings/test/TestInterfaceIterableSingle.cpp b/dom/bindings/test/TestInterfaceIterableSingle.cpp
deleted file mode 100644
index 5f8d6c640..000000000
--- a/dom/bindings/test/TestInterfaceIterableSingle.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/dom/TestInterfaceIterableSingle.h"
-#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
-#include "nsPIDOMWindow.h"
-#include "mozilla/dom/BindingUtils.h"
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceIterableSingle, mParent)
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceIterableSingle)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceIterableSingle)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceIterableSingle)
-NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-NS_INTERFACE_MAP_ENTRY(nsISupports)
-NS_INTERFACE_MAP_END
-
-TestInterfaceIterableSingle::TestInterfaceIterableSingle(nsPIDOMWindowInner* aParent)
- : mParent(aParent)
-{
- for (int i = 0; i < 3; ++i) {
- mValues.AppendElement(i);
- }
-}
-
-//static
-already_AddRefed<TestInterfaceIterableSingle>
-TestInterfaceIterableSingle::Constructor(const GlobalObject& aGlobal,
- ErrorResult& aRv)
-{
- nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
- if (!window) {
- aRv.Throw(NS_ERROR_FAILURE);
- return nullptr;
- }
-
- RefPtr<TestInterfaceIterableSingle> r = new TestInterfaceIterableSingle(window);
- return r.forget();
-}
-
-JSObject*
-TestInterfaceIterableSingle::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
-{
- return TestInterfaceIterableSingleBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsPIDOMWindowInner*
-TestInterfaceIterableSingle::GetParentObject() const
-{
- return mParent;
-}
-
-uint32_t
-TestInterfaceIterableSingle::Length() const
-{
- return mValues.Length();
-}
-
-int32_t
-TestInterfaceIterableSingle::IndexedGetter(uint32_t aIndex, bool& aFound) const
-{
- if (aIndex >= mValues.Length()) {
- aFound = false;
- return 0;
- }
-
- aFound = true;
- return mValues[aIndex];
-}
-
-} // namespace dom
-} // namespace mozilla
diff --git a/dom/bindings/test/TestInterfaceIterableSingle.h b/dom/bindings/test/TestInterfaceIterableSingle.h
deleted file mode 100644
index a071ada8b..000000000
--- a/dom/bindings/test/TestInterfaceIterableSingle.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-/* 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/. */
-
-#ifndef mozilla_dom_TestInterfaceIterableSingle_h
-#define mozilla_dom_TestInterfaceIterableSingle_h
-
-#include "nsWrapperCache.h"
-#include "nsCOMPtr.h"
-
-class nsPIDOMWindowInner;
-
-namespace mozilla {
-
-class ErrorResult;
-
-namespace dom {
-
-class GlobalObject;
-
-// Implementation of test binding for webidl iterable interfaces, using
-// primitives for value type
-class TestInterfaceIterableSingle final : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceIterableSingle)
-
- explicit TestInterfaceIterableSingle(nsPIDOMWindowInner* aParent);
- nsPIDOMWindowInner* GetParentObject() const;
- virtual JSObject* WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto) override;
- static already_AddRefed<TestInterfaceIterableSingle>
- Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
-
- uint32_t Length() const;
- int32_t IndexedGetter(uint32_t aIndex, bool& aFound) const;
-
-private:
- virtual ~TestInterfaceIterableSingle() {}
- nsCOMPtr<nsPIDOMWindowInner> mParent;
- nsTArray<int32_t> mValues;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_TestInterfaceIterableSingle_h
diff --git a/dom/bindings/test/TestInterfaceJS.js b/dom/bindings/test/TestInterfaceJS.js
deleted file mode 100644
index 1a5bf8e61..000000000
--- a/dom/bindings/test/TestInterfaceJS.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/* -*- Mode: JavaScript; 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/. */
-
-"use strict";
-const Cu = Components.utils;
-const Ci = Components.interfaces;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-function TestInterfaceJS(anyArg, objectArg) {}
-
-TestInterfaceJS.prototype = {
- classID: Components.ID("{2ac4e026-cf25-47d5-b067-78d553c3cad8}"),
- contractID: "@mozilla.org/dom/test-interface-js;1",
- QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
- Ci.nsIDOMGlobalPropertyInitializer]),
-
- init: function(win) { this._win = win; },
-
- __init: function (anyArg, objectArg, dictionaryArg) {
- this._anyAttr = undefined;
- this._objectAttr = null;
- this._anyArg = anyArg;
- this._objectArg = objectArg;
- this._dictionaryArg = dictionaryArg;
- this._cachedAttr = 15;
- },
-
- get anyArg() { return this._anyArg; },
- get objectArg() { return this._objectArg; },
- get dictionaryArg() { return this._dictionaryArg; },
- get anyAttr() { return this._anyAttr; },
- set anyAttr(val) { this._anyAttr = val; },
- get objectAttr() { return this._objectAttr; },
- set objectAttr(val) { this._objectAttr = val; },
- get dictionaryAttr() { return this._dictionaryAttr; },
- set dictionaryAttr(val) { this._dictionaryAttr = val; },
- pingPongAny: function(any) { return any; },
- pingPongObject: function(obj) { return obj; },
- pingPongObjectOrString: function(objectOrString) { return objectOrString; },
- pingPongDictionary: function(dict) { return dict; },
- pingPongDictionaryOrLong: function(dictOrLong) { return dictOrLong.anyMember || dictOrLong; },
- pingPongMap: function(map) { return JSON.stringify(map); },
- objectSequenceLength: function(seq) { return seq.length; },
- anySequenceLength: function(seq) { return seq.length; },
-
-
- getCallerPrincipal: function() { return Cu.getWebIDLCallerPrincipal().origin; },
-
- convertSVS: function(svs) { return svs; },
-
- pingPongUnion: function(x) { return x; },
- pingPongUnionContainingNull: function(x) { return x; },
- pingPongNullableUnion: function(x) { return x; },
- returnBadUnion: function(x) { return 3; },
-
- get cachedAttr() { return this._cachedAttr; },
- setCachedAttr: function(n) { this._cachedAttr = n; },
- clearCachedAttrCache: function () { this.__DOM_IMPL__._clearCachedCachedAttrValue(); },
-
- testSequenceOverload: function(arg) {},
- testSequenceUnion: function(arg) {},
-
- testThrowError: function() {
- throw new this._win.Error("We are an Error");
- },
-
- testThrowDOMException: function() {
- throw new this._win.DOMException("We are a DOMException",
- "NotSupportedError");
- },
-
- testThrowTypeError: function() {
- throw new this._win.TypeError("We are a TypeError");
- },
-
- testThrowCallbackError: function(callback) {
- callback();
- },
-
- testThrowXraySelfHosted: function() {
- this._win.Array.indexOf();
- },
-
- testThrowSelfHosted: function() {
- Array.indexOf();
- },
-
- testPromiseWithThrowingChromePromiseInit: function() {
- return new this._win.Promise(function() {
- noSuchMethodExistsYo1();
- })
- },
-
- testPromiseWithThrowingContentPromiseInit: function(func) {
- return new this._win.Promise(func);
- },
-
- testPromiseWithDOMExceptionThrowingPromiseInit: function() {
- return new this._win.Promise(() => {
- throw new this._win.DOMException("We are a second DOMException",
- "NotFoundError");
- })
- },
-
- testPromiseWithThrowingChromeThenFunction: function() {
- return this._win.Promise.resolve(5).then(function() {
- noSuchMethodExistsYo2();
- });
- },
-
- testPromiseWithThrowingContentThenFunction: function(func) {
- return this._win.Promise.resolve(10).then(func);
- },
-
- testPromiseWithDOMExceptionThrowingThenFunction: function() {
- return this._win.Promise.resolve(5).then(() => {
- throw new this._win.DOMException("We are a third DOMException",
- "NetworkError");
- });
- },
-
- testPromiseWithThrowingChromeThenable: function() {
- var thenable = {
- then: function() {
- noSuchMethodExistsYo3()
- }
- };
- return new this._win.Promise(function(resolve) {
- resolve(thenable)
- });
- },
-
- testPromiseWithThrowingContentThenable: function(thenable) {
- // Waive Xrays on the thenable, because we're calling resolve() in the
- // chrome compartment, so that's the compartment the "then" property get
- // will happen in, and if we leave the Xray in place the function-valued
- // property won't return the function.
- return this._win.Promise.resolve(Cu.waiveXrays(thenable));
- },
-
- testPromiseWithDOMExceptionThrowingThenable: function() {
- var thenable = {
- then: () => {
- throw new this._win.DOMException("We are a fourth DOMException",
- "TypeMismatchError");
- }
- };
- return new this._win.Promise(function(resolve) {
- resolve(thenable)
- });
- },
-
- get onsomething() {
- return this.__DOM_IMPL__.getEventHandler("onsomething");
- },
-
- set onsomething(val) {
- this.__DOM_IMPL__.setEventHandler("onsomething", val);
- }
-};
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TestInterfaceJS])
diff --git a/dom/bindings/test/TestInterfaceJS.manifest b/dom/bindings/test/TestInterfaceJS.manifest
deleted file mode 100644
index 161a42156..000000000
--- a/dom/bindings/test/TestInterfaceJS.manifest
+++ /dev/null
@@ -1,4 +0,0 @@
-component {2ac4e026-cf25-47d5-b067-78d553c3cad8} TestInterfaceJS.js
-contract @mozilla.org/dom/test-interface-js;1 {2ac4e026-cf25-47d5-b067-78d553c3cad8}
-component {4bc6f6f3-e005-4f0a-b42d-4d1663a9013a} TestInterfaceJSMaplike.js
-contract @mozilla.org/dom/test-interface-js-maplike;1 {4bc6f6f3-e005-4f0a-b42d-4d1663a9013a}
diff --git a/dom/bindings/test/TestInterfaceJSMaplike.js b/dom/bindings/test/TestInterfaceJSMaplike.js
deleted file mode 100644
index b108ef5b6..000000000
--- a/dom/bindings/test/TestInterfaceJSMaplike.js
+++ /dev/null
@@ -1,38 +0,0 @@
-/* -*- Mode: JavaScript; 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/. */
-
-"use strict";
-const Cu = Components.utils;
-const Ci = Components.interfaces;
-
-Cu.import("resource://gre/modules/XPCOMUtils.jsm");
-Cu.import("resource://gre/modules/Services.jsm");
-
-function TestInterfaceJSMaplike() {}
-
-TestInterfaceJSMaplike.prototype = {
- classID: Components.ID("{4bc6f6f3-e005-4f0a-b42d-4d1663a9013a}"),
- contractID: "@mozilla.org/dom/test-interface-js-maplike;1",
- QueryInterface: XPCOMUtils.generateQI([Ci.nsISupports,
- Ci.nsIDOMGlobalPropertyInitializer]),
-
- init: function(win) { this._win = win; },
-
- __init: function () {},
-
- setInternal: function(aKey, aValue) {
- return this.__DOM_IMPL__.__set(aKey, aValue);
- },
-
- deleteInternal: function(aKey) {
- return this.__DOM_IMPL__.__delete(aKey);
- },
-
- clearInternal: function() {
- return this.__DOM_IMPL__.__clear();
- }
-};
-
-this.NSGetFactory = XPCOMUtils.generateNSGetFactory([TestInterfaceJSMaplike])
diff --git a/dom/bindings/test/TestInterfaceMaplike.cpp b/dom/bindings/test/TestInterfaceMaplike.cpp
deleted file mode 100644
index 4abace83c..000000000
--- a/dom/bindings/test/TestInterfaceMaplike.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/dom/TestInterfaceMaplike.h"
-#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
-#include "nsPIDOMWindow.h"
-#include "mozilla/dom/BindingUtils.h"
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceMaplike, mParent)
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceMaplike)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceMaplike)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceMaplike)
-NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-NS_INTERFACE_MAP_ENTRY(nsISupports)
-NS_INTERFACE_MAP_END
-
-TestInterfaceMaplike::TestInterfaceMaplike(nsPIDOMWindowInner* aParent)
-: mParent(aParent)
-{
-}
-
-//static
-already_AddRefed<TestInterfaceMaplike>
-TestInterfaceMaplike::Constructor(const GlobalObject& aGlobal,
- ErrorResult& aRv)
-{
- nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
- if (!window) {
- aRv.Throw(NS_ERROR_FAILURE);
- return nullptr;
- }
-
- RefPtr<TestInterfaceMaplike> r = new TestInterfaceMaplike(window);
- return r.forget();
-}
-
-JSObject*
-TestInterfaceMaplike::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
-{
- return TestInterfaceMaplikeBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsPIDOMWindowInner*
-TestInterfaceMaplike::GetParentObject() const
-{
- return mParent;
-}
-
-void
-TestInterfaceMaplike::SetInternal(const nsAString& aKey, int32_t aValue)
-{
- ErrorResult rv;
- TestInterfaceMaplikeBinding::MaplikeHelpers::Set(this, aKey, aValue, rv);
-}
-
-void
-TestInterfaceMaplike::ClearInternal()
-{
- ErrorResult rv;
- TestInterfaceMaplikeBinding::MaplikeHelpers::Clear(this, rv);
-}
-
-bool
-TestInterfaceMaplike::DeleteInternal(const nsAString& aKey)
-{
- ErrorResult rv;
- return TestInterfaceMaplikeBinding::MaplikeHelpers::Delete(this, aKey, rv);
-}
-
-bool
-TestInterfaceMaplike::HasInternal(const nsAString& aKey)
-{
- ErrorResult rv;
- return TestInterfaceMaplikeBinding::MaplikeHelpers::Has(this, aKey, rv);
-}
-
-} // namespace dom
-} // namespace mozilla
diff --git a/dom/bindings/test/TestInterfaceMaplike.h b/dom/bindings/test/TestInterfaceMaplike.h
deleted file mode 100644
index c012a7a21..000000000
--- a/dom/bindings/test/TestInterfaceMaplike.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-/* 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/. */
-
-#ifndef mozilla_dom_TestInterfaceMaplike_h
-#define mozilla_dom_TestInterfaceMaplike_h
-
-#include "nsWrapperCache.h"
-#include "nsCOMPtr.h"
-
-class nsPIDOMWindowInner;
-
-namespace mozilla {
-
-class ErrorResult;
-
-namespace dom {
-
-class GlobalObject;
-
-// Implementation of test binding for webidl maplike interfaces, using
-// primitives for key and value types.
-class TestInterfaceMaplike final : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceMaplike)
-
- explicit TestInterfaceMaplike(nsPIDOMWindowInner* aParent);
- nsPIDOMWindowInner* GetParentObject() const;
- virtual JSObject* WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto) override;
- static already_AddRefed<TestInterfaceMaplike>
- Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
-
- // External access for testing internal convenience functions.
- void SetInternal(const nsAString& aKey, int32_t aValue);
- void ClearInternal();
- bool DeleteInternal(const nsAString& aKey);
- bool HasInternal(const nsAString& aKey);
-private:
- virtual ~TestInterfaceMaplike() {}
- nsCOMPtr<nsPIDOMWindowInner> mParent;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_TestInterfaceMaplike_h
diff --git a/dom/bindings/test/TestInterfaceMaplikeObject.cpp b/dom/bindings/test/TestInterfaceMaplikeObject.cpp
deleted file mode 100644
index 3dc1ffdc4..000000000
--- a/dom/bindings/test/TestInterfaceMaplikeObject.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/dom/TestInterfaceMaplikeObject.h"
-#include "mozilla/dom/TestInterfaceMaplike.h"
-#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
-#include "nsPIDOMWindow.h"
-#include "mozilla/dom/BindingUtils.h"
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceMaplikeObject, mParent)
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceMaplikeObject)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceMaplikeObject)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceMaplikeObject)
-NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-NS_INTERFACE_MAP_ENTRY(nsISupports)
-NS_INTERFACE_MAP_END
-
-TestInterfaceMaplikeObject::TestInterfaceMaplikeObject(nsPIDOMWindowInner* aParent)
-: mParent(aParent)
-{
-}
-
-//static
-already_AddRefed<TestInterfaceMaplikeObject>
-TestInterfaceMaplikeObject::Constructor(const GlobalObject& aGlobal,
- ErrorResult& aRv)
-{
- nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
- if (!window) {
- aRv.Throw(NS_ERROR_FAILURE);
- return nullptr;
- }
-
- RefPtr<TestInterfaceMaplikeObject> r =
- new TestInterfaceMaplikeObject(window);
- return r.forget();
-}
-
-JSObject*
-TestInterfaceMaplikeObject::WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto)
-{
- return TestInterfaceMaplikeObjectBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsPIDOMWindowInner*
-TestInterfaceMaplikeObject::GetParentObject() const
-{
- return mParent;
-}
-
-void
-TestInterfaceMaplikeObject::SetInternal(const nsAString& aKey)
-{
- RefPtr<TestInterfaceMaplike> p(new TestInterfaceMaplike(mParent));
- ErrorResult rv;
- TestInterfaceMaplikeObjectBinding::MaplikeHelpers::Set(this, aKey, *p, rv);
-}
-
-void
-TestInterfaceMaplikeObject::ClearInternal()
-{
- ErrorResult rv;
- TestInterfaceMaplikeObjectBinding::MaplikeHelpers::Clear(this, rv);
-}
-
-bool
-TestInterfaceMaplikeObject::DeleteInternal(const nsAString& aKey)
-{
- ErrorResult rv;
- return TestInterfaceMaplikeObjectBinding::MaplikeHelpers::Delete(this, aKey, rv);
-}
-
-bool
-TestInterfaceMaplikeObject::HasInternal(const nsAString& aKey)
-{
- ErrorResult rv;
- return TestInterfaceMaplikeObjectBinding::MaplikeHelpers::Has(this, aKey, rv);
-}
-
-} // namespace dom
-} // namespace mozilla
diff --git a/dom/bindings/test/TestInterfaceMaplikeObject.h b/dom/bindings/test/TestInterfaceMaplikeObject.h
deleted file mode 100644
index af4660c0d..000000000
--- a/dom/bindings/test/TestInterfaceMaplikeObject.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-/* 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/. */
-
-#ifndef mozilla_dom_TestInterfaceMaplikeObject_h
-#define mozilla_dom_TestInterfaceMaplikeObject_h
-
-#include "nsWrapperCache.h"
-#include "nsCOMPtr.h"
-
-class nsPIDOMWindowInner;
-
-namespace mozilla {
-
-class ErrorResult;
-
-namespace dom {
-
-class GlobalObject;
-
-// Implementation of test binding for webidl maplike interfaces, using
-// primitives for key types and objects for value types.
-class TestInterfaceMaplikeObject final : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceMaplikeObject)
-
- explicit TestInterfaceMaplikeObject(nsPIDOMWindowInner* aParent);
- nsPIDOMWindowInner* GetParentObject() const;
- virtual JSObject* WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto) override;
- static already_AddRefed<TestInterfaceMaplikeObject>
- Constructor(const GlobalObject& aGlobal,ErrorResult& rv);
-
- // External access for testing internal convenience functions.
- void SetInternal(const nsAString& aKey);
- void ClearInternal();
- bool DeleteInternal(const nsAString& aKey);
- bool HasInternal(const nsAString& aKey);
-private:
- virtual ~TestInterfaceMaplikeObject() {}
- nsCOMPtr<nsPIDOMWindowInner> mParent;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_TestInterfaceMaplikeObject_h
diff --git a/dom/bindings/test/TestInterfaceSetlike.cpp b/dom/bindings/test/TestInterfaceSetlike.cpp
deleted file mode 100644
index c9f556076..000000000
--- a/dom/bindings/test/TestInterfaceSetlike.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/dom/TestInterfaceSetlike.h"
-#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
-#include "nsPIDOMWindow.h"
-#include "mozilla/dom/BindingUtils.h"
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceSetlike, mParent)
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceSetlike)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceSetlike)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceSetlike)
-NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-NS_INTERFACE_MAP_ENTRY(nsISupports)
-NS_INTERFACE_MAP_END
-
-TestInterfaceSetlike::TestInterfaceSetlike(JSContext* aCx,
- nsPIDOMWindowInner* aParent)
-: mParent(aParent)
-{
-}
-
-//static
-already_AddRefed<TestInterfaceSetlike>
-TestInterfaceSetlike::Constructor(const GlobalObject& aGlobal,
- ErrorResult& aRv)
-{
- nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
- if (!window) {
- aRv.Throw(NS_ERROR_FAILURE);
- return nullptr;
- }
-
- RefPtr<TestInterfaceSetlike> r = new TestInterfaceSetlike(nullptr, window);
- return r.forget();
-}
-
-JSObject*
-TestInterfaceSetlike::WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto)
-{
- return TestInterfaceSetlikeBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsPIDOMWindowInner*
-TestInterfaceSetlike::GetParentObject() const
-{
- return mParent;
-}
-
-} // namespace dom
-} // namespace mozilla
diff --git a/dom/bindings/test/TestInterfaceSetlike.h b/dom/bindings/test/TestInterfaceSetlike.h
deleted file mode 100644
index c9f464960..000000000
--- a/dom/bindings/test/TestInterfaceSetlike.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-/* 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/. */
-
-#ifndef mozilla_dom_TestInterfaceSetlike_h
-#define mozilla_dom_TestInterfaceSetlike_h
-
-#include "nsWrapperCache.h"
-#include "nsCOMPtr.h"
-
-class nsPIDOMWindowInner;
-
-namespace mozilla {
-
-class ErrorResult;
-
-namespace dom {
-
-class GlobalObject;
-
-// Implementation of test binding for webidl setlike interfaces, using
-// primitives for key type.
-class TestInterfaceSetlike final : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceSetlike)
- explicit TestInterfaceSetlike(JSContext* aCx,
- nsPIDOMWindowInner* aParent);
- nsPIDOMWindowInner* GetParentObject() const;
- virtual JSObject* WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto) override;
- static already_AddRefed<TestInterfaceSetlike>
- Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
-private:
- virtual ~TestInterfaceSetlike() {}
- nsCOMPtr<nsPIDOMWindowInner> mParent;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_TestInterfaceSetlike_h
diff --git a/dom/bindings/test/TestInterfaceSetlikeNode.cpp b/dom/bindings/test/TestInterfaceSetlikeNode.cpp
deleted file mode 100644
index 5499553fa..000000000
--- a/dom/bindings/test/TestInterfaceSetlikeNode.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this file,
- * You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "mozilla/dom/TestInterfaceSetlikeNode.h"
-#include "mozilla/dom/TestInterfaceJSMaplikeSetlikeIterableBinding.h"
-#include "nsPIDOMWindow.h"
-#include "mozilla/dom/BindingUtils.h"
-
-namespace mozilla {
-namespace dom {
-
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(TestInterfaceSetlikeNode, mParent)
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(TestInterfaceSetlikeNode)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(TestInterfaceSetlikeNode)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(TestInterfaceSetlikeNode)
-NS_WRAPPERCACHE_INTERFACE_MAP_ENTRY
-NS_INTERFACE_MAP_ENTRY(nsISupports)
-NS_INTERFACE_MAP_END
-
-TestInterfaceSetlikeNode::TestInterfaceSetlikeNode(JSContext* aCx,
- nsPIDOMWindowInner* aParent)
-: mParent(aParent)
-{
-}
-
-//static
-already_AddRefed<TestInterfaceSetlikeNode>
-TestInterfaceSetlikeNode::Constructor(const GlobalObject& aGlobal,
- ErrorResult& aRv)
-{
- nsCOMPtr<nsPIDOMWindowInner> window = do_QueryInterface(aGlobal.GetAsSupports());
- if (!window) {
- aRv.Throw(NS_ERROR_FAILURE);
- return nullptr;
- }
-
- RefPtr<TestInterfaceSetlikeNode> r = new TestInterfaceSetlikeNode(nullptr, window);
- return r.forget();
-}
-
-JSObject*
-TestInterfaceSetlikeNode::WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto)
-{
- return TestInterfaceSetlikeNodeBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsPIDOMWindowInner*
-TestInterfaceSetlikeNode::GetParentObject() const
-{
- return mParent;
-}
-
-} // namespace dom
-} // namespace mozilla
diff --git a/dom/bindings/test/TestInterfaceSetlikeNode.h b/dom/bindings/test/TestInterfaceSetlikeNode.h
deleted file mode 100644
index 05b14190e..000000000
--- a/dom/bindings/test/TestInterfaceSetlikeNode.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim:set ts=2 sw=2 sts=2 et cindent: */
-/* 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/. */
-
-#ifndef mozilla_dom_TestInterfaceSetlikeNode_h
-#define mozilla_dom_TestInterfaceSetlikeNode_h
-
-#include "nsWrapperCache.h"
-#include "nsCOMPtr.h"
-
-class nsPIDOMWindowInner;
-
-namespace mozilla {
-
-class ErrorResult;
-
-namespace dom {
-
-class GlobalObject;
-
-// Implementation of test binding for webidl setlike interfaces, using
-// primitives for key type.
-class TestInterfaceSetlikeNode final : public nsISupports,
- public nsWrapperCache
-{
-public:
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(TestInterfaceSetlikeNode)
- explicit TestInterfaceSetlikeNode(JSContext* aCx,
- nsPIDOMWindowInner* aParent);
- nsPIDOMWindowInner* GetParentObject() const;
- virtual JSObject* WrapObject(JSContext* aCx,
- JS::Handle<JSObject*> aGivenProto) override;
- static already_AddRefed<TestInterfaceSetlikeNode>
- Constructor(const GlobalObject& aGlobal, ErrorResult& rv);
-private:
- virtual ~TestInterfaceSetlikeNode() {}
- nsCOMPtr<nsPIDOMWindowInner> mParent;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_TestInterfaceSetlikeNode_h
diff --git a/dom/bindings/test/TestJSImplGen.webidl b/dom/bindings/test/TestJSImplGen.webidl
deleted file mode 100644
index a131dcdfe..000000000
--- a/dom/bindings/test/TestJSImplGen.webidl
+++ /dev/null
@@ -1,836 +0,0 @@
-/* -*- Mode: IDL; 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/.
- */
-
-typedef TestJSImplInterface AnotherNameForTestJSImplInterface;
-typedef TestJSImplInterface YetAnotherNameForTestJSImplInterface;
-typedef TestJSImplInterface? NullableTestJSImplInterface;
-
-callback MyTestCallback = void();
-
-enum MyTestEnum {
- "a",
- "b"
-};
-
-// We don't support multiple constructors (bug 869268) or named constructors
-// for JS-implemented WebIDL.
-[Constructor(DOMString str, unsigned long num, boolean? boolArg,
- TestInterface? iface, long arg1,
- DictForConstructor dict, any any1,
- object obj1,
- object? obj2, sequence<Dict> seq, optional any any2,
- optional object obj3,
- optional object? obj4,
- Uint8Array typedArr,
- ArrayBuffer arrayBuf),
- JSImplementation="@mozilla.org/test-js-impl-interface;1"]
-interface TestJSImplInterface {
- // Integer types
- // XXXbz add tests for throwing versions of all the integer stuff
- readonly attribute byte readonlyByte;
- attribute byte writableByte;
- void passByte(byte arg);
- byte receiveByte();
- void passOptionalByte(optional byte arg);
- void passOptionalByteBeforeRequired(optional byte arg1, byte arg2);
- void passOptionalByteWithDefault(optional byte arg = 0);
- void passOptionalByteWithDefaultBeforeRequired(optional byte arg1 = 0, byte arg2);
- void passNullableByte(byte? arg);
- void passOptionalNullableByte(optional byte? arg);
- void passVariadicByte(byte... arg);
- [Cached, Pure]
- readonly attribute byte cachedByte;
- [Cached, Constant]
- readonly attribute byte cachedConstantByte;
- [Cached, Pure]
- attribute byte cachedWritableByte;
- [Affects=Nothing]
- attribute byte sideEffectFreeByte;
- [Affects=Nothing, DependsOn=DOMState]
- attribute byte domDependentByte;
- [Affects=Nothing, DependsOn=Nothing]
- readonly attribute byte constantByte;
- [DependsOn=DeviceState, Affects=Nothing]
- readonly attribute byte deviceStateDependentByte;
- [Affects=Nothing]
- byte returnByteSideEffectFree();
- [Affects=Nothing, DependsOn=DOMState]
- byte returnDOMDependentByte();
- [Affects=Nothing, DependsOn=Nothing]
- byte returnConstantByte();
- [DependsOn=DeviceState, Affects=Nothing]
- byte returnDeviceStateDependentByte();
-
- readonly attribute short readonlyShort;
- attribute short writableShort;
- void passShort(short arg);
- short receiveShort();
- void passOptionalShort(optional short arg);
- void passOptionalShortWithDefault(optional short arg = 5);
-
- readonly attribute long readonlyLong;
- attribute long writableLong;
- void passLong(long arg);
- long receiveLong();
- void passOptionalLong(optional long arg);
- void passOptionalLongWithDefault(optional long arg = 7);
-
- readonly attribute long long readonlyLongLong;
- attribute long long writableLongLong;
- void passLongLong(long long arg);
- long long receiveLongLong();
- void passOptionalLongLong(optional long long arg);
- void passOptionalLongLongWithDefault(optional long long arg = -12);
-
- readonly attribute octet readonlyOctet;
- attribute octet writableOctet;
- void passOctet(octet arg);
- octet receiveOctet();
- void passOptionalOctet(optional octet arg);
- void passOptionalOctetWithDefault(optional octet arg = 19);
-
- readonly attribute unsigned short readonlyUnsignedShort;
- attribute unsigned short writableUnsignedShort;
- void passUnsignedShort(unsigned short arg);
- unsigned short receiveUnsignedShort();
- void passOptionalUnsignedShort(optional unsigned short arg);
- void passOptionalUnsignedShortWithDefault(optional unsigned short arg = 2);
-
- readonly attribute unsigned long readonlyUnsignedLong;
- attribute unsigned long writableUnsignedLong;
- void passUnsignedLong(unsigned long arg);
- unsigned long receiveUnsignedLong();
- void passOptionalUnsignedLong(optional unsigned long arg);
- void passOptionalUnsignedLongWithDefault(optional unsigned long arg = 6);
-
- readonly attribute unsigned long long readonlyUnsignedLongLong;
- attribute unsigned long long writableUnsignedLongLong;
- void passUnsignedLongLong(unsigned long long arg);
- unsigned long long receiveUnsignedLongLong();
- void passOptionalUnsignedLongLong(optional unsigned long long arg);
- void passOptionalUnsignedLongLongWithDefault(optional unsigned long long arg = 17);
-
- attribute float writableFloat;
- attribute unrestricted float writableUnrestrictedFloat;
- attribute float? writableNullableFloat;
- attribute unrestricted float? writableNullableUnrestrictedFloat;
- attribute double writableDouble;
- attribute unrestricted double writableUnrestrictedDouble;
- attribute double? writableNullableDouble;
- attribute unrestricted double? writableNullableUnrestrictedDouble;
- void passFloat(float arg1, unrestricted float arg2,
- float? arg3, unrestricted float? arg4,
- double arg5, unrestricted double arg6,
- double? arg7, unrestricted double? arg8,
- sequence<float> arg9, sequence<unrestricted float> arg10,
- sequence<float?> arg11, sequence<unrestricted float?> arg12,
- sequence<double> arg13, sequence<unrestricted double> arg14,
- sequence<double?> arg15, sequence<unrestricted double?> arg16);
- [LenientFloat]
- void passLenientFloat(float arg1, unrestricted float arg2,
- float? arg3, unrestricted float? arg4,
- double arg5, unrestricted double arg6,
- double? arg7, unrestricted double? arg8,
- sequence<float> arg9,
- sequence<unrestricted float> arg10,
- sequence<float?> arg11,
- sequence<unrestricted float?> arg12,
- sequence<double> arg13,
- sequence<unrestricted double> arg14,
- sequence<double?> arg15,
- sequence<unrestricted double?> arg16);
- [LenientFloat]
- attribute float lenientFloatAttr;
- [LenientFloat]
- attribute double lenientDoubleAttr;
-
- // Castable interface types
- // XXXbz add tests for throwing versions of all the castable interface stuff
- TestJSImplInterface receiveSelf();
- TestJSImplInterface? receiveNullableSelf();
-
- TestJSImplInterface receiveWeakSelf();
- TestJSImplInterface? receiveWeakNullableSelf();
-
- // A version to test for casting to TestJSImplInterface&
- void passSelf(TestJSImplInterface arg);
- void passNullableSelf(TestJSImplInterface? arg);
- attribute TestJSImplInterface nonNullSelf;
- attribute TestJSImplInterface? nullableSelf;
- [Cached, Pure]
- readonly attribute TestJSImplInterface cachedSelf;
- // Optional arguments
- void passOptionalSelf(optional TestJSImplInterface? arg);
- void passOptionalNonNullSelf(optional TestJSImplInterface arg);
- void passOptionalSelfWithDefault(optional TestJSImplInterface? arg = null);
-
- // Non-wrapper-cache interface types
- [NewObject]
- TestNonWrapperCacheInterface receiveNonWrapperCacheInterface();
- [NewObject]
- TestNonWrapperCacheInterface? receiveNullableNonWrapperCacheInterface();
-
- [NewObject]
- sequence<TestNonWrapperCacheInterface> receiveNonWrapperCacheInterfaceSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface?> receiveNullableNonWrapperCacheInterfaceSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface>? receiveNonWrapperCacheInterfaceNullableSequence();
- [NewObject]
- sequence<TestNonWrapperCacheInterface?>? receiveNullableNonWrapperCacheInterfaceNullableSequence();
-
- // Non-castable interface types
- IndirectlyImplementedInterface receiveOther();
- IndirectlyImplementedInterface? receiveNullableOther();
- IndirectlyImplementedInterface receiveWeakOther();
- IndirectlyImplementedInterface? receiveWeakNullableOther();
-
- void passOther(IndirectlyImplementedInterface arg);
- void passNullableOther(IndirectlyImplementedInterface? arg);
- attribute IndirectlyImplementedInterface nonNullOther;
- attribute IndirectlyImplementedInterface? nullableOther;
- // Optional arguments
- void passOptionalOther(optional IndirectlyImplementedInterface? arg);
- void passOptionalNonNullOther(optional IndirectlyImplementedInterface arg);
- void passOptionalOtherWithDefault(optional IndirectlyImplementedInterface? arg = null);
-
- // External interface types
- TestExternalInterface receiveExternal();
- TestExternalInterface? receiveNullableExternal();
- TestExternalInterface receiveWeakExternal();
- TestExternalInterface? receiveWeakNullableExternal();
- void passExternal(TestExternalInterface arg);
- void passNullableExternal(TestExternalInterface? arg);
- attribute TestExternalInterface nonNullExternal;
- attribute TestExternalInterface? nullableExternal;
- // Optional arguments
- void passOptionalExternal(optional TestExternalInterface? arg);
- void passOptionalNonNullExternal(optional TestExternalInterface arg);
- void passOptionalExternalWithDefault(optional TestExternalInterface? arg = null);
-
- // Callback interface types
- TestCallbackInterface receiveCallbackInterface();
- TestCallbackInterface? receiveNullableCallbackInterface();
- TestCallbackInterface receiveWeakCallbackInterface();
- TestCallbackInterface? receiveWeakNullableCallbackInterface();
- void passCallbackInterface(TestCallbackInterface arg);
- void passNullableCallbackInterface(TestCallbackInterface? arg);
- attribute TestCallbackInterface nonNullCallbackInterface;
- attribute TestCallbackInterface? nullableCallbackInterface;
- // Optional arguments
- void passOptionalCallbackInterface(optional TestCallbackInterface? arg);
- void passOptionalNonNullCallbackInterface(optional TestCallbackInterface arg);
- void passOptionalCallbackInterfaceWithDefault(optional TestCallbackInterface? arg = null);
-
- // Miscellaneous interface tests
- IndirectlyImplementedInterface receiveConsequentialInterface();
- void passConsequentialInterface(IndirectlyImplementedInterface arg);
-
- // Sequence types
- [Cached, Pure]
- readonly attribute sequence<long> readonlySequence;
- [Cached, Pure]
- readonly attribute sequence<Dict> readonlySequenceOfDictionaries;
- [Cached, Pure]
- readonly attribute sequence<Dict>? readonlyNullableSequenceOfDictionaries;
- [Cached, Pure, Frozen]
- readonly attribute sequence<long> readonlyFrozenSequence;
- [Cached, Pure, Frozen]
- readonly attribute sequence<long>? readonlyFrozenNullableSequence;
- sequence<long> receiveSequence();
- sequence<long>? receiveNullableSequence();
- sequence<long?> receiveSequenceOfNullableInts();
- sequence<long?>? receiveNullableSequenceOfNullableInts();
- void passSequence(sequence<long> arg);
- void passNullableSequence(sequence<long>? arg);
- void passSequenceOfNullableInts(sequence<long?> arg);
- void passOptionalSequenceOfNullableInts(optional sequence<long?> arg);
- void passOptionalNullableSequenceOfNullableInts(optional sequence<long?>? arg);
- sequence<TestJSImplInterface> receiveCastableObjectSequence();
- sequence<TestCallbackInterface> receiveCallbackObjectSequence();
- sequence<TestJSImplInterface?> receiveNullableCastableObjectSequence();
- sequence<TestCallbackInterface?> receiveNullableCallbackObjectSequence();
- sequence<TestJSImplInterface>? receiveCastableObjectNullableSequence();
- sequence<TestJSImplInterface?>? receiveNullableCastableObjectNullableSequence();
- sequence<TestJSImplInterface> receiveWeakCastableObjectSequence();
- sequence<TestJSImplInterface?> receiveWeakNullableCastableObjectSequence();
- sequence<TestJSImplInterface>? receiveWeakCastableObjectNullableSequence();
- sequence<TestJSImplInterface?>? receiveWeakNullableCastableObjectNullableSequence();
- void passCastableObjectSequence(sequence<TestJSImplInterface> arg);
- void passNullableCastableObjectSequence(sequence<TestJSImplInterface?> arg);
- void passCastableObjectNullableSequence(sequence<TestJSImplInterface>? arg);
- void passNullableCastableObjectNullableSequence(sequence<TestJSImplInterface?>? arg);
- void passOptionalSequence(optional sequence<long> arg);
- void passOptionalSequenceWithDefaultValue(optional sequence<long> arg = []);
- void passOptionalNullableSequence(optional sequence<long>? arg);
- void passOptionalNullableSequenceWithDefaultValue(optional sequence<long>? arg = null);
- void passOptionalNullableSequenceWithDefaultValue2(optional sequence<long>? arg = []);
- void passOptionalObjectSequence(optional sequence<TestJSImplInterface> arg);
- void passExternalInterfaceSequence(sequence<TestExternalInterface> arg);
- void passNullableExternalInterfaceSequence(sequence<TestExternalInterface?> arg);
-
- sequence<DOMString> receiveStringSequence();
- sequence<ByteString> receiveByteStringSequence();
- // Callback interface problem. See bug 843261.
- //void passStringSequence(sequence<DOMString> arg);
- sequence<any> receiveAnySequence();
- sequence<any>? receiveNullableAnySequence();
- //XXXbz No support for sequence of sequence return values yet.
- //sequence<sequence<any>> receiveAnySequenceSequence();
-
- sequence<object> receiveObjectSequence();
- sequence<object?> receiveNullableObjectSequence();
-
- void passSequenceOfSequences(sequence<sequence<long>> arg);
- void passSequenceOfSequencesOfSequences(sequence<sequence<sequence<long>>> arg);
- //XXXbz No support for sequence of sequence return values yet.
- //sequence<sequence<long>> receiveSequenceOfSequences();
-
- // MozMap types
- void passMozMap(MozMap<long> arg);
- void passNullableMozMap(MozMap<long>? arg);
- void passMozMapOfNullableInts(MozMap<long?> arg);
- void passOptionalMozMapOfNullableInts(optional MozMap<long?> arg);
- void passOptionalNullableMozMapOfNullableInts(optional MozMap<long?>? arg);
- void passCastableObjectMozMap(MozMap<TestJSImplInterface> arg);
- void passNullableCastableObjectMozMap(MozMap<TestJSImplInterface?> arg);
- void passCastableObjectNullableMozMap(MozMap<TestJSImplInterface>? arg);
- void passNullableCastableObjectNullableMozMap(MozMap<TestJSImplInterface?>? arg);
- void passOptionalMozMap(optional MozMap<long> arg);
- void passOptionalNullableMozMap(optional MozMap<long>? arg);
- void passOptionalNullableMozMapWithDefaultValue(optional MozMap<long>? arg = null);
- void passOptionalObjectMozMap(optional MozMap<TestJSImplInterface> arg);
- void passExternalInterfaceMozMap(MozMap<TestExternalInterface> arg);
- void passNullableExternalInterfaceMozMap(MozMap<TestExternalInterface?> arg);
- void passStringMozMap(MozMap<DOMString> arg);
- void passByteStringMozMap(MozMap<ByteString> arg);
- void passMozMapOfMozMaps(MozMap<MozMap<long>> arg);
- MozMap<long> receiveMozMap();
- MozMap<long>? receiveNullableMozMap();
- MozMap<long?> receiveMozMapOfNullableInts();
- MozMap<long?>? receiveNullableMozMapOfNullableInts();
- //XXXbz No support for MozMap of MozMaps return values yet.
- //MozMap<MozMap<long>> receiveMozMapOfMozMaps();
- MozMap<any> receiveAnyMozMap();
-
- // Typed array types
- void passArrayBuffer(ArrayBuffer arg);
- void passNullableArrayBuffer(ArrayBuffer? arg);
- void passOptionalArrayBuffer(optional ArrayBuffer arg);
- void passOptionalNullableArrayBuffer(optional ArrayBuffer? arg);
- void passOptionalNullableArrayBufferWithDefaultValue(optional ArrayBuffer? arg= null);
- void passArrayBufferView(ArrayBufferView arg);
- void passInt8Array(Int8Array arg);
- void passInt16Array(Int16Array arg);
- void passInt32Array(Int32Array arg);
- void passUint8Array(Uint8Array arg);
- void passUint16Array(Uint16Array arg);
- void passUint32Array(Uint32Array arg);
- void passUint8ClampedArray(Uint8ClampedArray arg);
- void passFloat32Array(Float32Array arg);
- void passFloat64Array(Float64Array arg);
- void passSequenceOfArrayBuffers(sequence<ArrayBuffer> arg);
- void passSequenceOfNullableArrayBuffers(sequence<ArrayBuffer?> arg);
- void passMozMapOfArrayBuffers(MozMap<ArrayBuffer> arg);
- void passMozMapOfNullableArrayBuffers(MozMap<ArrayBuffer?> arg);
- void passVariadicTypedArray(Float32Array... arg);
- void passVariadicNullableTypedArray(Float32Array?... arg);
- Uint8Array receiveUint8Array();
- attribute Uint8Array uint8ArrayAttr;
-
- // DOMString types
- void passString(DOMString arg);
- void passNullableString(DOMString? arg);
- void passOptionalString(optional DOMString arg);
- void passOptionalStringWithDefaultValue(optional DOMString arg = "abc");
- void passOptionalNullableString(optional DOMString? arg);
- void passOptionalNullableStringWithDefaultValue(optional DOMString? arg = null);
- void passVariadicString(DOMString... arg);
-
- // ByteString types
- void passByteString(ByteString arg);
- void passNullableByteString(ByteString? arg);
- void passOptionalByteString(optional ByteString arg);
- void passOptionalByteStringWithDefaultValue(optional ByteString arg = "abc");
- void passOptionalNullableByteString(optional ByteString? arg);
- void passOptionalNullableByteStringWithDefaultValue(optional ByteString? arg = null);
- void passVariadicByteString(ByteString... arg);
- void passUnionByteString((ByteString or long) arg);
- void passOptionalUnionByteString(optional (ByteString or long) arg);
- void passOptionalUnionByteStringWithDefaultValue(optional (ByteString or long) arg = "abc");
-
- // USVString types
- void passSVS(USVString arg);
- void passNullableSVS(USVString? arg);
- void passOptionalSVS(optional USVString arg);
- void passOptionalSVSWithDefaultValue(optional USVString arg = "abc");
- void passOptionalNullableSVS(optional USVString? arg);
- void passOptionalNullableSVSWithDefaultValue(optional USVString? arg = null);
- void passVariadicSVS(USVString... arg);
- USVString receiveSVS();
-
- // Enumerated types
- void passEnum(MyTestEnum arg);
- void passNullableEnum(MyTestEnum? arg);
- void passOptionalEnum(optional MyTestEnum arg);
- void passEnumWithDefault(optional MyTestEnum arg = "a");
- void passOptionalNullableEnum(optional MyTestEnum? arg);
- void passOptionalNullableEnumWithDefaultValue(optional MyTestEnum? arg = null);
- void passOptionalNullableEnumWithDefaultValue2(optional MyTestEnum? arg = "a");
- MyTestEnum receiveEnum();
- MyTestEnum? receiveNullableEnum();
- attribute MyTestEnum enumAttribute;
- readonly attribute MyTestEnum readonlyEnumAttribute;
-
- // Callback types
- void passCallback(MyTestCallback arg);
- void passNullableCallback(MyTestCallback? arg);
- void passOptionalCallback(optional MyTestCallback arg);
- void passOptionalNullableCallback(optional MyTestCallback? arg);
- void passOptionalNullableCallbackWithDefaultValue(optional MyTestCallback? arg = null);
- MyTestCallback receiveCallback();
- MyTestCallback? receiveNullableCallback();
- // Hmm. These two don't work, I think because I need a locally modified version of TestTreatAsNullCallback.
- //void passNullableTreatAsNullCallback(TestTreatAsNullCallback? arg);
- //void passOptionalNullableTreatAsNullCallback(optional TestTreatAsNullCallback? arg);
- void passOptionalNullableTreatAsNullCallbackWithDefaultValue(optional TestTreatAsNullCallback? arg = null);
-
- // Any types
- void passAny(any arg);
- void passVariadicAny(any... arg);
- void passOptionalAny(optional any arg);
- void passAnyDefaultNull(optional any arg = null);
- void passSequenceOfAny(sequence<any> arg);
- void passNullableSequenceOfAny(sequence<any>? arg);
- void passOptionalSequenceOfAny(optional sequence<any> arg);
- void passOptionalNullableSequenceOfAny(optional sequence<any>? arg);
- void passOptionalSequenceOfAnyWithDefaultValue(optional sequence<any>? arg = null);
- void passSequenceOfSequenceOfAny(sequence<sequence<any>> arg);
- void passSequenceOfNullableSequenceOfAny(sequence<sequence<any>?> arg);
- void passNullableSequenceOfNullableSequenceOfAny(sequence<sequence<any>?>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfAny(optional sequence<sequence<any>?>? arg);
- void passMozMapOfAny(MozMap<any> arg);
- void passNullableMozMapOfAny(MozMap<any>? arg);
- void passOptionalMozMapOfAny(optional MozMap<any> arg);
- void passOptionalNullableMozMapOfAny(optional MozMap<any>? arg);
- void passOptionalMozMapOfAnyWithDefaultValue(optional MozMap<any>? arg = null);
- void passMozMapOfMozMapOfAny(MozMap<MozMap<any>> arg);
- void passMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?> arg);
- void passNullableMozMapOfNullableMozMapOfAny(MozMap<MozMap<any>?>? arg);
- void passOptionalNullableMozMapOfNullableMozMapOfAny(optional MozMap<MozMap<any>?>? arg);
- void passOptionalNullableMozMapOfNullableSequenceOfAny(optional MozMap<sequence<any>?>? arg);
- void passOptionalNullableSequenceOfNullableMozMapOfAny(optional sequence<MozMap<any>?>? arg);
- any receiveAny();
-
- // object types
- void passObject(object arg);
- void passVariadicObject(object... arg);
- void passNullableObject(object? arg);
- void passVariadicNullableObject(object... arg);
- void passOptionalObject(optional object arg);
- void passOptionalNullableObject(optional object? arg);
- void passOptionalNullableObjectWithDefaultValue(optional object? arg = null);
- void passSequenceOfObject(sequence<object> arg);
- void passSequenceOfNullableObject(sequence<object?> arg);
- void passNullableSequenceOfObject(sequence<object>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfObject(optional sequence<sequence<object>?>? arg);
- void passOptionalNullableSequenceOfNullableSequenceOfNullableObject(optional sequence<sequence<object?>?>? arg);
- void passMozMapOfObject(MozMap<object> arg);
- object receiveObject();
- object? receiveNullableObject();
-
- // Union types
- void passUnion((object or long) arg);
- // Some union tests are debug-only to avoid creating all those
- // unused union types in opt builds.
-#ifdef DEBUG
- void passUnion2((long or boolean) arg);
- void passUnion3((object or long or boolean) arg);
- void passUnion4((Node or long or boolean) arg);
- void passUnion5((object or boolean) arg);
- void passUnion6((object or DOMString) arg);
- void passUnion7((object or DOMString or long) arg);
- void passUnion8((object or DOMString or boolean) arg);
- void passUnion9((object or DOMString or long or boolean) arg);
- void passUnion10(optional (EventInit or long) arg);
- void passUnion11(optional (CustomEventInit or long) arg);
- void passUnion12(optional (EventInit or long) arg = 5);
- void passUnion13(optional (object or long?) arg = null);
- void passUnion14(optional (object or long?) arg = 5);
- void passUnion15((sequence<long> or long) arg);
- void passUnion16(optional (sequence<long> or long) arg);
- void passUnion17(optional (sequence<long>? or long) arg = 5);
- void passUnion18((sequence<object> or long) arg);
- void passUnion19(optional (sequence<object> or long) arg);
- void passUnion20(optional (sequence<object> or long) arg = []);
- void passUnion21((MozMap<long> or long) arg);
- void passUnion22((MozMap<object> or long) arg);
- void passUnion23((sequence<ImageData> or long) arg);
- void passUnion24((sequence<ImageData?> or long) arg);
- void passUnion25((sequence<sequence<ImageData>> or long) arg);
- void passUnion26((sequence<sequence<ImageData?>> or long) arg);
- void passUnion27(optional (sequence<DOMString> or EventInit) arg);
- void passUnion28(optional (EventInit or sequence<DOMString>) arg);
- void passUnionWithCallback((EventHandler or long) arg);
- void passUnionWithByteString((ByteString or long) arg);
- void passUnionWithMozMap((MozMap<DOMString> or DOMString) arg);
- void passUnionWithMozMapAndSequence((MozMap<DOMString> or sequence<DOMString>) arg);
- void passUnionWithSequenceAndMozMap((sequence<DOMString> or MozMap<DOMString>) arg);
- void passUnionWithSVS((USVString or long) arg);
-#endif
- void passUnionWithNullable((object? or long) arg);
- void passNullableUnion((object or long)? arg);
- void passOptionalUnion(optional (object or long) arg);
- void passOptionalNullableUnion(optional (object or long)? arg);
- void passOptionalNullableUnionWithDefaultValue(optional (object or long)? arg = null);
- //void passUnionWithInterfaces((TestJSImplInterface or TestExternalInterface) arg);
- //void passUnionWithInterfacesAndNullable((TestJSImplInterface? or TestExternalInterface) arg);
- //void passUnionWithSequence((sequence<object> or long) arg);
- void passUnionWithArrayBuffer((ArrayBuffer or long) arg);
- void passUnionWithString((DOMString or object) arg);
- // Using an enum in a union. Note that we use some enum not declared in our
- // binding file, because UnionTypes.h will need to include the binding header
- // for this enum. Pick an enum from an interface that won't drag in too much
- // stuff.
- void passUnionWithEnum((SupportedType or object) arg);
-
- // Trying to use a callback in a union won't include the test
- // headers, unfortunately, so won't compile.
- // void passUnionWithCallback((MyTestCallback or long) arg);
- void passUnionWithObject((object or long) arg);
- //void passUnionWithDict((Dict or long) arg);
-
- void passUnionWithDefaultValue1(optional (double or DOMString) arg = "");
- void passUnionWithDefaultValue2(optional (double or DOMString) arg = 1);
- void passUnionWithDefaultValue3(optional (double or DOMString) arg = 1.5);
- void passUnionWithDefaultValue4(optional (float or DOMString) arg = "");
- void passUnionWithDefaultValue5(optional (float or DOMString) arg = 1);
- void passUnionWithDefaultValue6(optional (float or DOMString) arg = 1.5);
- void passUnionWithDefaultValue7(optional (unrestricted double or DOMString) arg = "");
- void passUnionWithDefaultValue8(optional (unrestricted double or DOMString) arg = 1);
- void passUnionWithDefaultValue9(optional (unrestricted double or DOMString) arg = 1.5);
- void passUnionWithDefaultValue10(optional (unrestricted double or DOMString) arg = Infinity);
- void passUnionWithDefaultValue11(optional (unrestricted float or DOMString) arg = "");
- void passUnionWithDefaultValue12(optional (unrestricted float or DOMString) arg = 1);
- void passUnionWithDefaultValue13(optional (unrestricted float or DOMString) arg = Infinity);
- void passUnionWithDefaultValue14(optional (double or ByteString) arg = "");
- void passUnionWithDefaultValue15(optional (double or ByteString) arg = 1);
- void passUnionWithDefaultValue16(optional (double or ByteString) arg = 1.5);
- void passUnionWithDefaultValue17(optional (double or SupportedType) arg = "text/html");
- void passUnionWithDefaultValue18(optional (double or SupportedType) arg = 1);
- void passUnionWithDefaultValue19(optional (double or SupportedType) arg = 1.5);
-
- void passNullableUnionWithDefaultValue1(optional (double or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue2(optional (double or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue3(optional (double or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue4(optional (float or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue5(optional (float or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue6(optional (float or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue7(optional (unrestricted double or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue8(optional (unrestricted double or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue9(optional (unrestricted double or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue10(optional (unrestricted float or DOMString)? arg = "");
- void passNullableUnionWithDefaultValue11(optional (unrestricted float or DOMString)? arg = 1);
- void passNullableUnionWithDefaultValue12(optional (unrestricted float or DOMString)? arg = null);
- void passNullableUnionWithDefaultValue13(optional (double or ByteString)? arg = "");
- void passNullableUnionWithDefaultValue14(optional (double or ByteString)? arg = 1);
- void passNullableUnionWithDefaultValue15(optional (double or ByteString)? arg = 1.5);
- void passNullableUnionWithDefaultValue16(optional (double or ByteString)? arg = null);
- void passNullableUnionWithDefaultValue17(optional (double or SupportedType)? arg = "text/html");
- void passNullableUnionWithDefaultValue18(optional (double or SupportedType)? arg = 1);
- void passNullableUnionWithDefaultValue19(optional (double or SupportedType)? arg = 1.5);
- void passNullableUnionWithDefaultValue20(optional (double or SupportedType)? arg = null);
-
- void passSequenceOfUnions(sequence<(CanvasPattern or CanvasGradient)> arg);
- void passSequenceOfUnions2(sequence<(object or long)> arg);
- void passVariadicUnion((CanvasPattern or CanvasGradient)... arg);
-
- void passSequenceOfNullableUnions(sequence<(CanvasPattern or CanvasGradient)?> arg);
- void passVariadicNullableUnion((CanvasPattern or CanvasGradient)?... arg);
- void passMozMapOfUnions(MozMap<(CanvasPattern or CanvasGradient)> arg);
- // XXXbz no move constructor on some unions
- // void passMozMapOfUnions2(MozMap<(object or long)> arg);
-
- (CanvasPattern or CanvasGradient) receiveUnion();
- (object or long) receiveUnion2();
- (CanvasPattern? or CanvasGradient) receiveUnionContainingNull();
- (CanvasPattern or CanvasGradient)? receiveNullableUnion();
- (object or long)? receiveNullableUnion2();
-
- attribute (CanvasPattern or CanvasGradient) writableUnion;
- attribute (CanvasPattern? or CanvasGradient) writableUnionContainingNull;
- attribute (CanvasPattern or CanvasGradient)? writableNullableUnion;
-
- // Date types
- void passDate(Date arg);
- void passNullableDate(Date? arg);
- void passOptionalDate(optional Date arg);
- void passOptionalNullableDate(optional Date? arg);
- void passOptionalNullableDateWithDefaultValue(optional Date? arg = null);
- void passDateSequence(sequence<Date> arg);
- void passNullableDateSequence(sequence<Date?> arg);
- void passDateMozMap(MozMap<Date> arg);
- Date receiveDate();
- Date? receiveNullableDate();
-
- // Promise types
- void passPromise(Promise<any> arg);
- void passNullablePromise(Promise<any>? arg);
- void passOptionalPromise(optional Promise<any> arg);
- void passOptionalNullablePromise(optional Promise<any>? arg);
- void passOptionalNullablePromiseWithDefaultValue(optional Promise<any>? arg = null);
- void passPromiseSequence(sequence<Promise<any>> arg);
- void passNullablePromiseSequence(sequence<Promise<any>?> arg);
- Promise<any> receivePromise();
- Promise<any> receiveAddrefedPromise();
-
- // binaryNames tests
- void methodRenamedFrom();
- [BinaryName="otherMethodRenamedTo"]
- void otherMethodRenamedFrom();
- void methodRenamedFrom(byte argument);
- readonly attribute byte attributeGetterRenamedFrom;
- attribute byte attributeRenamedFrom;
- [BinaryName="otherAttributeRenamedTo"]
- attribute byte otherAttributeRenamedFrom;
-
- void passDictionary(optional Dict x);
- void passDictionary2(Dict x);
- [Cached, Pure]
- readonly attribute Dict readonlyDictionary;
- [Cached, Pure]
- readonly attribute Dict? readonlyNullableDictionary;
- [Cached, Pure]
- attribute Dict writableDictionary;
- [Cached, Pure, Frozen]
- readonly attribute Dict readonlyFrozenDictionary;
- [Cached, Pure, Frozen]
- readonly attribute Dict? readonlyFrozenNullableDictionary;
- [Cached, Pure, Frozen]
- attribute Dict writableFrozenDictionary;
- Dict receiveDictionary();
- Dict? receiveNullableDictionary();
- void passOtherDictionary(optional GrandparentDict x);
- void passSequenceOfDictionaries(sequence<Dict> x);
- void passMozMapOfDictionaries(MozMap<GrandparentDict> x);
- // No support for nullable dictionaries inside a sequence (nor should there be)
- // void passSequenceOfNullableDictionaries(sequence<Dict?> x);
- void passDictionaryOrLong(optional Dict x);
- void passDictionaryOrLong(long x);
-
- void passDictContainingDict(optional DictContainingDict arg);
- void passDictContainingSequence(optional DictContainingSequence arg);
- DictContainingSequence receiveDictContainingSequence();
- void passVariadicDictionary(Dict... arg);
-
- // EnforceRange/Clamp tests
- void dontEnforceRangeOrClamp(byte arg);
- void doEnforceRange([EnforceRange] byte arg);
- void doClamp([Clamp] byte arg);
- [EnforceRange] attribute byte enforcedByte;
- [Clamp] attribute byte clampedByte;
-
- // Typedefs
- const myLong myLongConstant = 5;
- void exerciseTypedefInterfaces1(AnotherNameForTestJSImplInterface arg);
- AnotherNameForTestJSImplInterface exerciseTypedefInterfaces2(NullableTestJSImplInterface arg);
- void exerciseTypedefInterfaces3(YetAnotherNameForTestJSImplInterface arg);
-
- // Deprecated methods and attributes
- [Deprecated="GetAttributeNode"]
- attribute byte deprecatedAttribute;
- [Deprecated="GetAttributeNode"]
- byte deprecatedMethod();
- [Deprecated="GetAttributeNode"]
- void deprecatedMethodWithContext(any arg);
-
- // Static methods and attributes
- // FIXME: Bug 863952 Static things are not supported yet
- /*
- static attribute boolean staticAttribute;
- static void staticMethod(boolean arg);
- static void staticMethodWithContext(any arg);
-
- // Deprecated static methods and attributes
- [Deprecated="GetAttributeNode"]
- static attribute byte staticDeprecatedAttribute;
- [Deprecated="GetAttributeNode"]
- static byte staticDeprecatedMethod();
- [Deprecated="GetAttributeNode"]
- static byte staticDeprecatedMethodWithContext();
- */
-
- // Overload resolution tests
- //void overload1(DOMString... strs);
- boolean overload1(TestJSImplInterface arg);
- TestJSImplInterface overload1(DOMString strs, TestJSImplInterface arg);
- void overload2(TestJSImplInterface arg);
- void overload2(optional Dict arg);
- void overload2(boolean arg);
- void overload2(DOMString arg);
- void overload2(Date arg);
- void overload3(TestJSImplInterface arg);
- void overload3(MyTestCallback arg);
- void overload3(boolean arg);
- void overload4(TestJSImplInterface arg);
- void overload4(TestCallbackInterface arg);
- void overload4(DOMString arg);
- void overload5(long arg);
- void overload5(MyTestEnum arg);
- void overload6(long arg);
- void overload6(boolean arg);
- void overload7(long arg);
- void overload7(boolean arg);
- void overload7(ByteString arg);
- void overload8(long arg);
- void overload8(TestJSImplInterface arg);
- void overload9(long? arg);
- void overload9(DOMString arg);
- void overload10(long? arg);
- void overload10(object arg);
- void overload11(long arg);
- void overload11(DOMString? arg);
- void overload12(long arg);
- void overload12(boolean? arg);
- void overload13(long? arg);
- void overload13(boolean arg);
- void overload14(optional long arg);
- void overload14(TestInterface arg);
- void overload15(long arg);
- void overload15(optional TestInterface arg);
- void overload16(long arg);
- void overload16(optional TestInterface? arg);
- void overload17(sequence<long> arg);
- void overload17(MozMap<long> arg);
- void overload18(MozMap<DOMString> arg);
- void overload18(sequence<DOMString> arg);
- void overload19(sequence<long> arg);
- void overload19(optional Dict arg);
- void overload20(optional Dict arg);
- void overload20(sequence<long> arg);
-
- // Variadic handling
- void passVariadicThirdArg(DOMString arg1, long arg2, TestJSImplInterface... arg3);
-
- // Conditionally exposed methods/attributes
- [Pref="abc.def"]
- readonly attribute boolean prefable1;
- [Pref="abc.def"]
- readonly attribute boolean prefable2;
- [Pref="ghi.jkl"]
- readonly attribute boolean prefable3;
- [Pref="ghi.jkl"]
- readonly attribute boolean prefable4;
- [Pref="abc.def"]
- readonly attribute boolean prefable5;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable6;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable7;
- [Pref="ghi.jkl", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable8;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean prefable9;
- [Pref="abc.def"]
- void prefable10();
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void prefable11();
- [Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean prefable12;
- [Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void prefable13();
- [Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean prefable14;
- [Func="TestFuncControlledMember"]
- readonly attribute boolean prefable15;
- [Func="TestFuncControlledMember"]
- readonly attribute boolean prefable16;
- [Pref="abc.def", Func="TestFuncControlledMember"]
- void prefable17();
- [Func="TestFuncControlledMember"]
- void prefable18();
- [Func="TestFuncControlledMember"]
- void prefable19();
- [Pref="abc.def", Func="TestFuncControlledMember", ChromeOnly]
- void prefable20();
-
- // Conditionally exposed methods/attributes involving [SecureContext]
- [SecureContext]
- readonly attribute boolean conditionalOnSecureContext1;
- [SecureContext, Pref="abc.def"]
- readonly attribute boolean conditionalOnSecureContext2;
- [SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- readonly attribute boolean conditionalOnSecureContext3;
- [SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
- readonly attribute boolean conditionalOnSecureContext4;
- [SecureContext]
- void conditionalOnSecureContext5();
- [SecureContext, Pref="abc.def"]
- void conditionalOnSecureContext6();
- [SecureContext, Pref="abc.def", Func="nsGenericHTMLElement::TouchEventsEnabled"]
- void conditionalOnSecureContext7();
- [SecureContext, Pref="abc.def", Func="TestFuncControlledMember"]
- void conditionalOnSecureContext8();
-
- // Miscellania
- [LenientThis] attribute long attrWithLenientThis;
- // FIXME: Bug 863954 Unforgeable things get all confused when
- // non-JS-implemented interfaces inherit from JS-implemented ones or vice
- // versa.
- // [Unforgeable] readonly attribute long unforgeableAttr;
- // [Unforgeable, ChromeOnly] readonly attribute long unforgeableAttr2;
- // [Unforgeable] long unforgeableMethod();
- // [Unforgeable, ChromeOnly] long unforgeableMethod2();
- // FIXME: Bug 863955 No stringifiers yet
- // stringifier;
- void passRenamedInterface(TestRenamedInterface arg);
- [PutForwards=writableByte] readonly attribute TestJSImplInterface putForwardsAttr;
- [PutForwards=writableByte, LenientThis] readonly attribute TestJSImplInterface putForwardsAttr2;
- [PutForwards=writableByte, ChromeOnly] readonly attribute TestJSImplInterface putForwardsAttr3;
- [Throws] void throwingMethod();
- [Throws] attribute boolean throwingAttr;
- [GetterThrows] attribute boolean throwingGetterAttr;
- [SetterThrows] attribute boolean throwingSetterAttr;
- // NeedsSubjectPrincipal not supported on JS-implemented things for
- // now, because we always pass in the caller principal anyway.
- // [NeedsSubjectPrincipal] void needsSubjectPrincipalMethod();
- // [NeedsSubjectPrincipal] attribute boolean needsSubjectPrincipalAttr;
- // legacycaller short(unsigned long arg1, TestInterface arg2);
- void passArgsWithDefaults(optional long arg1,
- optional TestInterface? arg2 = null,
- optional Dict arg3, optional double arg4 = 5.0,
- optional float arg5);
- attribute any jsonifierShouldSkipThis;
- attribute TestParentInterface jsonifierShouldSkipThis2;
- attribute TestCallbackInterface jsonifierShouldSkipThis3;
- jsonifier;
-
- attribute byte dashed-attribute;
- void dashed-method();
-
- // If you add things here, add them to TestCodeGen as well
-};
-
-[NavigatorProperty="TestNavigator", JSImplementation="@mozilla.org/test;1"]
-interface TestNavigator {
-};
-
-[Constructor, NavigatorProperty="TestNavigatorWithConstructor", JSImplementation="@mozilla.org/test;1"]
-interface TestNavigatorWithConstructor {
-};
-
-interface TestCImplementedInterface : TestJSImplInterface {
-};
-
-interface TestCImplementedInterface2 {
-};
-
-[NoInterfaceObject,
- JSImplementation="@mozilla.org/test-js-impl-interface;2"]
-interface TestJSImplNoInterfaceObject {
- [Cached, Pure]
- readonly attribute byte cachedByte;
-};
diff --git a/dom/bindings/test/TestJSImplInheritanceGen.webidl b/dom/bindings/test/TestJSImplInheritanceGen.webidl
deleted file mode 100644
index e62dbd10b..000000000
--- a/dom/bindings/test/TestJSImplInheritanceGen.webidl
+++ /dev/null
@@ -1,29 +0,0 @@
-/* -*- Mode: IDL; 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/.
- */
-
-[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface2;1"]
-interface TestJSImplInterface2 : TestCImplementedInterface {
-};
-
-[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface3;1"]
-interface TestJSImplInterface3 : TestCImplementedInterface2 {
-};
-
-// Important: TestJSImplInterface5 needs to come before TestJSImplInterface6 in
-// this file to test what it's trying to test.
-[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface5;1"]
-interface TestJSImplInterface5 : TestJSImplInterface6 {
-};
-
-// Important: TestJSImplInterface6 needs to come after TestJSImplInterface3 in
-// this file to test what it's trying to test.
-[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface6;1"]
-interface TestJSImplInterface6 : TestJSImplInterface3 {
-};
-
-[Constructor, JSImplementation="@mozilla.org/test-js-impl-interface4;1"]
-interface TestJSImplInterface4 : EventTarget {
-};
diff --git a/dom/bindings/test/TestTypedef.webidl b/dom/bindings/test/TestTypedef.webidl
deleted file mode 100644
index 7f758c79e..000000000
--- a/dom/bindings/test/TestTypedef.webidl
+++ /dev/null
@@ -1,7 +0,0 @@
-/* -*- Mode: IDL; 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/.
- */
-
-typedef TestInterface YetAnotherNameForTestInterface;
diff --git a/dom/bindings/test/chrome.ini b/dom/bindings/test/chrome.ini
deleted file mode 100644
index 9fdbd7fd3..000000000
--- a/dom/bindings/test/chrome.ini
+++ /dev/null
@@ -1,22 +0,0 @@
-[DEFAULT]
-support-files =
- !/dom/bindings/test/file_bug775543.html
- !/dom/bindings/test/file_document_location_set_via_xray.html
- !/dom/bindings/test/file_dom_xrays.html
- !/dom/bindings/test/file_proxies_via_xray.html
-
-[test_bug775543.html]
-[test_document_location_set_via_xray.html]
-[test_dom_xrays.html]
-[test_proxies_via_xray.html]
-[test_document_location_via_xray_cached.html]
-[test_blacklisted_prerendering_function.xul]
-support-files =
- file_focuser.html
- file_fullScreenPropertyAccessor.html
-skip-if = e10s # prerendering doesn't work in e10s yet
-[test_kill_longrunning_prerendered_content.xul]
-skip-if = e10s # prerendering doesn't work in e10s yet
-[test_bug1123516_maplikesetlikechrome.xul]
-skip-if = debug == false
-[test_bug1287912.html]
diff --git a/dom/bindings/test/file_InstanceOf.html b/dom/bindings/test/file_InstanceOf.html
deleted file mode 100644
index 487010fa4..000000000
--- a/dom/bindings/test/file_InstanceOf.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<body>
-<script type="application/javascript">
-function runTest()
-{
- return [ parent.HTMLElement.prototype instanceof Element,
- parent.HTMLElement.prototype instanceof parent.Element ];
-}
-</script>
-</body>
-</html>
diff --git a/dom/bindings/test/file_bug775543.html b/dom/bindings/test/file_bug775543.html
deleted file mode 100644
index ee8c14c4d..000000000
--- a/dom/bindings/test/file_bug775543.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<body>
-<script>
-worker = new Worker("a");
-</script>
-</body>
diff --git a/dom/bindings/test/file_document_location_set_via_xray.html b/dom/bindings/test/file_document_location_set_via_xray.html
deleted file mode 100644
index 323acba66..000000000
--- a/dom/bindings/test/file_document_location_set_via_xray.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<body>
-<script>
-document.x = 5;
-</script>
-</body>
diff --git a/dom/bindings/test/file_dom_xrays.html b/dom/bindings/test/file_dom_xrays.html
deleted file mode 100644
index 36b3f8a30..000000000
--- a/dom/bindings/test/file_dom_xrays.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE html>
-<html>
- <script>
- window.expando = 42;
- window.shadowedIframe = 42;
- Object.setPrototypeOf(window, Object.create(Window.prototype,
- {
- shadowedIframe: { value: 42 },
- iframe: { value: 42 },
- document: { value: 42 },
- addEventListener: { value: 42 },
- toString: { value: 42 }
- }));
- window.documentElement.expando = 42;
- Object.defineProperty(window.documentElement, "version", { value: 42 });
- </script>
- <iframe name="shadowedIframe" id="shadowedIframe"></iframe>
- <iframe name="iframe" id="iframe"></iframe>
- <iframe name="document" id="document"></iframe>
- <iframe name="self" id="self"></iframe>
- <iframe name="addEventListener" id="addEventListener"></iframe>
- <iframe name="toString" id="toString"></iframe>
- <iframe name="item" id="item"></iframe>
-</html>
diff --git a/dom/bindings/test/file_focuser.html b/dom/bindings/test/file_focuser.html
deleted file mode 100644
index 0d5240f95..000000000
--- a/dom/bindings/test/file_focuser.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML>
-<div id="stage"></div>
-<script>
- function stage(str) {
- var s = document.getElementById("stage");
- s.textContent = str;
- }
- stage("before");
- setTimeout(function() {
- stage("in timeout");
- });
- setInterval(function() {
- stage("in interval");
- });
- addEventListener("keydown", function() {
- stage("keydown");
- }, false);
- try {
- focus();
- stage("after");
- } catch(e) {
- stage("exception raised");
- }
-</script>
diff --git a/dom/bindings/test/file_fullScreenPropertyAccessor.html b/dom/bindings/test/file_fullScreenPropertyAccessor.html
deleted file mode 100644
index 92a37e0ba..000000000
--- a/dom/bindings/test/file_fullScreenPropertyAccessor.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE HTML>
-<div id="stage"></div>
-<script>
- function stage(str) {
- var s = document.getElementById("stage");
- s.textContent = str;
- }
- stage("before");
- setTimeout(function() {
- stage("in timeout");
- });
- setInterval(function() {
- stage("in interval");
- });
- addEventListener("keydown", function() {
- stage("keydown");
- }, false);
- try {
- window.fullScreen;
- stage("after");
- } catch(e) {
- stage("exception raised");
- }
-</script>
diff --git a/dom/bindings/test/file_proxies_via_xray.html b/dom/bindings/test/file_proxies_via_xray.html
deleted file mode 100644
index 2e9a31830..000000000
--- a/dom/bindings/test/file_proxies_via_xray.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<html>
- <script>
- document.x = 5
- </script>
- <img id="y" name="y"></div>
- <img id="z" name="z"></div>
-</html>
diff --git a/dom/bindings/test/forOf_iframe.html b/dom/bindings/test/forOf_iframe.html
deleted file mode 100644
index 91417aba0..000000000
--- a/dom/bindings/test/forOf_iframe.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>iframe content for test_forOf_iframe.html</title>
-</head>
-<body>
- <div id="basket">
- <span id="egg0"></span>
- <span id="egg1"><span id="duckling1"></span></span>
- <span id="egg2"></span>
- </div>
-</body>
-</html>
diff --git a/dom/bindings/test/mochitest.ini b/dom/bindings/test/mochitest.ini
deleted file mode 100644
index 2cd322e74..000000000
--- a/dom/bindings/test/mochitest.ini
+++ /dev/null
@@ -1,79 +0,0 @@
-[DEFAULT]
-support-files =
- file_InstanceOf.html
- file_bug775543.html
- file_document_location_set_via_xray.html
- file_dom_xrays.html
- file_proxies_via_xray.html
- forOf_iframe.html
- !/js/xpconnect/tests/mochitest/file_empty.html
-
-[test_async_stacks.html]
-[test_ByteString.html]
-[test_InstanceOf.html]
-[test_bug560072.html]
-[test_bug742191.html]
-[test_bug759621.html]
-[test_bug773326.html]
-[test_bug788369.html]
-[test_bug852846.html]
-[test_bug862092.html]
-[test_bug1036214.html]
-skip-if = debug == false
-[test_bug963382.html]
-skip-if = debug == false
-[test_bug1041646.html]
-[test_bug1123875.html]
-[test_barewordGetsWindow.html]
-[test_callback_across_document_open.html]
-[test_callback_default_thisval.html]
-[test_cloneAndImportNode.html]
-[test_defineProperty.html]
-[test_enums.html]
-[test_exceptionThrowing.html]
-[test_exception_messages.html]
-[test_forOf.html]
-[test_integers.html]
-[test_interfaceName.html]
-[test_interfaceToString.html]
-[test_exceptions_from_jsimplemented.html]
-tags = webrtc
-[test_lenientThis.html]
-[test_lookupGetter.html]
-[test_namedNoIndexed.html]
-[test_named_getter_enumerability.html]
-[test_Object.prototype_props.html]
-[test_queryInterface.html]
-[test_returnUnion.html]
-skip-if = debug == false
-[test_usvstring.html]
-skip-if = debug == false
-[test_sequence_wrapping.html]
-subsuite = gpu
-[test_setWithNamedGetterNoNamedSetter.html]
-[test_throwing_method_noDCE.html]
-[test_treat_non_object_as_null.html]
-[test_traceProtos.html]
-[test_sequence_detection.html]
-skip-if = debug == false
-[test_exception_options_from_jsimplemented.html]
-skip-if = debug == false
-[test_promise_rejections_from_jsimplemented.html]
-skip-if = debug == false
-[test_worker_UnwrapArg.html]
-[test_unforgeablesonexpando.html]
-[test_crossOriginWindowSymbolAccess.html]
-[test_primitive_this.html]
-[test_callback_exceptions.html]
-[test_bug1123516_maplikesetlike.html]
-skip-if = debug == false
-[test_jsimplemented_eventhandler.html]
-skip-if = debug == false
-[test_iterable.html]
-skip-if = debug == false
-[test_oom_reporting.html]
-[test_domProxyArrayLengthGetter.html]
-[test_exceptionSanitization.html]
-skip-if = os == "android"
-[test_stringBindings.html]
-skip-if = debug == false
diff --git a/dom/bindings/test/moz.build b/dom/bindings/test/moz.build
deleted file mode 100644
index 7d0cb6c21..000000000
--- a/dom/bindings/test/moz.build
+++ /dev/null
@@ -1,58 +0,0 @@
-# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
-# 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/.
-
-DEFINES.update({
- 'IMPL_LIBXUL': True,
- 'MOZILLA_INTERNAL_API': True,
-})
-
-# Do NOT export this library. We don't actually want our test code
-# being added to libxul or anything.
-
-Library('dombindings_test_s')
-
-EXTRA_COMPONENTS += [
- 'TestInterfaceJS.js',
- 'TestInterfaceJS.manifest',
- 'TestInterfaceJSMaplike.js'
-]
-
-MOCHITEST_MANIFESTS += ['mochitest.ini']
-
-MOCHITEST_CHROME_MANIFESTS += ['chrome.ini']
-
-TEST_WEBIDL_FILES += [
- 'TestDictionary.webidl',
- 'TestJSImplInheritanceGen.webidl',
- 'TestTypedef.webidl',
-]
-
-PREPROCESSED_TEST_WEBIDL_FILES += [
- 'TestCodeGen.webidl',
- 'TestExampleGen.webidl',
- 'TestJSImplGen.webidl',
-]
-
-WEBIDL_EXAMPLE_INTERFACES += [
- 'TestExampleInterface',
- 'TestExampleProxyInterface',
- 'TestExampleWorkerInterface',
-]
-
-# Bug 932082 tracks having bindings use namespaced includes.
-LOCAL_INCLUDES += [
- '!/dist/include/mozilla/dom',
-]
-
-LOCAL_INCLUDES += [
- '!..',
- '/dom/bindings',
- '/js/xpconnect/src',
- '/js/xpconnect/wrappers',
-]
-
-if CONFIG['GNU_CXX']:
- CXXFLAGS += ['-Wno-error=shadow']
diff --git a/dom/bindings/test/test_ByteString.html b/dom/bindings/test/test_ByteString.html
deleted file mode 100644
index c7e632117..000000000
--- a/dom/bindings/test/test_ByteString.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=796850
--->
-<head>
- <meta charset="utf-8">
- <title>Test for ByteString support</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=796850">Mozilla Bug 796850</a>
-<p id="display"></p>
-<pre id="test">
-<script type="application/javascript">
-
- /** Test for Bug 796850 **/
- var xhr = new XMLHttpRequest();
- caught = false;
- try {
- xhr.open("\u5427", "about:mozilla", true);
- }
- catch (TypeError) {
- caught = true;
- }
- ok(caught, "Character values > 255 not rejected for ByteString");
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_InstanceOf.html b/dom/bindings/test/test_InstanceOf.html
deleted file mode 100644
index 514ec1b2a..000000000
--- a/dom/bindings/test/test_InstanceOf.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=748983
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 748983</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=748983">Mozilla Bug 748983</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 748983 **/
-
-SimpleTest.waitForExplicitFinish();
-
-function runTest()
-{
- ok(document instanceof EventTarget, "document is an event target")
- ok(new XMLHttpRequest() instanceof XMLHttpRequest, "instanceof should work on XHR");
- ok(HTMLElement.prototype instanceof Node, "instanceof needs to walk the prototype chain")
-
- var otherWin = document.getElementById("testFrame").contentWindow;
-
- ok(otherWin.HTMLElement.prototype instanceof otherWin.Node, "Same-origin instanceof of a interface prototype object should work, even if called cross-origin");
- ok(!(otherWin.HTMLElement.prototype instanceof Node), "Cross-origin instanceof of a interface prototype object shouldn't work");
-
- // We need to reset HTMLElement.prototype.__proto__ to the original value
- // before using anything from the harness, otherwise the harness code breaks
- // in weird ways.
- HTMLElement.prototype.__proto__ = otherWin.Element.prototype;
- var [ shouldSucceed, shouldFail ] = otherWin.runTest();
- shouldSucceed = shouldSucceed && HTMLElement.prototype instanceof otherWin.Element;
- shouldFail = shouldFail && HTMLElement.prototype instanceof Element;
- HTMLElement.prototype.__proto__ = Element.prototype;
-
- ok(shouldSucceed, "If an interface prototype object is on the protochain then instanceof with the interface object should succeed");
- ok(!shouldFail, "If an interface prototype object is not on the protochain then instanceof with the interface object should succeed");
-
- SimpleTest.finish();
-}
-
-</script>
-</pre>
-<iframe id="testFrame" src="file_InstanceOf.html" onload="runTest()"></iframe>
-</body>
-</html>
diff --git a/dom/bindings/test/test_Object.prototype_props.html b/dom/bindings/test/test_Object.prototype_props.html
deleted file mode 100644
index 3ab27c5e4..000000000
--- a/dom/bindings/test/test_Object.prototype_props.html
+++ /dev/null
@@ -1,20 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Test for bug 987110</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<script>
-test(function() {
- var props = Object.getOwnPropertyNames(Object.prototype);
- // If you change this list, make sure it continues to match the list in
- // Codegen.py's CGDictionary.getMemberDefinition method.
- var expected = [
- "constructor", "toSource", "toString", "toLocaleString", "valueOf",
- "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable",
- "__defineGetter__", "__defineSetter__", "__lookupGetter__",
- "__lookupSetter__", "__proto__"
- ];
- assert_array_equals(props.sort(), expected.sort());
-}, "Own properties of Object.prototype");
-</script>
diff --git a/dom/bindings/test/test_async_stacks.html b/dom/bindings/test/test_async_stacks.html
deleted file mode 100644
index 8b655a14d..000000000
--- a/dom/bindings/test/test_async_stacks.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1148593
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1148593</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1148593 **/
-
- SimpleTest.waitForExplicitFinish();
-
- var TESTS;
-
- function nextTest() {
- var t = TESTS.pop();
- if (t) {
- t();
- } else {
- SimpleTest.finish();
- }
- }
-
- function checkStack(functionName) {
- try {
- noSuchFunction();
- } catch (e) {
- ok(e.stack.indexOf(functionName) >= 0, "stack includes " + functionName);
- }
- nextTest();
- }
-
- function eventListener() {
- checkStack("registerEventListener");
- }
- function registerEventListener(link) {
- link.onload = eventListener;
- }
- function eventTest() {
- var link = document.createElement("link");
- link.rel = "stylesheet";
- link.href = "data:text/css,";
- registerEventListener(link);
- document.body.appendChild(link);
- }
-
- function xhrListener() {
- checkStack("xhrTest");
- }
- function xhrTest() {
- var ourFile = location.href;
- var x = new XMLHttpRequest();
- x.onload = xhrListener;
- x.open("get", ourFile, true);
- x.send();
- }
-
- function rafListener() {
- checkStack("rafTest");
- }
- function rafTest() {
- requestAnimationFrame(rafListener);
- }
-
- var intervalId;
- function intervalHandler() {
- clearInterval(intervalId);
- checkStack("intervalTest");
- }
- function intervalTest() {
- intervalId = setInterval(intervalHandler, 5);
- }
-
- function postMessageHandler(ev) {
- ev.stopPropagation();
- checkStack("postMessageTest");
- }
- function postMessageTest() {
- window.addEventListener("message", postMessageHandler, true);
- window.postMessage("whatever", "*");
- }
-
- function runTests() {
- TESTS = [postMessageTest, intervalTest, rafTest, xhrTest, eventTest];
- nextTest();
- }
-
- addLoadEvent(function() {
- SpecialPowers.pushPrefEnv(
- {"set": [['javascript.options.asyncstack', true]]},
- runTests);
- });
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1148593">Mozilla Bug 1148593</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_barewordGetsWindow.html b/dom/bindings/test/test_barewordGetsWindow.html
deleted file mode 100644
index e098eea53..000000000
--- a/dom/bindings/test/test_barewordGetsWindow.html
+++ /dev/null
@@ -1,60 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=936056
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 936056</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 936056 **/
- SimpleTest.waitForExplicitFinish();
- window.onload = function() {
- var desc = Object.getOwnPropertyDescriptor(frames[0], "document");
- if (!desc || !desc.get) {
- todo(false, "This test does nothing so far, but will once Window is on WebIDL bindings");
- SimpleTest.finish();
- return;
- }
- get = desc.get;
- ok(get, "Couldn't find document getter");
- Object.defineProperty(frames[0], "foo", { get: get, configurable: true });
-
- var barewordFunc = frames[0].eval("(function (count) { var doc; for (var i = 0; i < count; ++i) doc = foo; return doc.documentElement; })");
- var qualifiedFunc = frames[0].eval("(function (count) { var doc; for (var i = 0; i < count; ++i) doc = window.document; return doc.documentElement; })");
- document.querySelector("iframe").onload = function () {
- // interp
- is(barewordFunc(1).textContent, "OLD", "Bareword should see own inner 1");
- is(qualifiedFunc(1).textContent, "NEW",
- "Qualified should see current inner 1");
- // baseline
- is(barewordFunc(100).textContent, "OLD", "Bareword should see own inner 2");
- is(qualifiedFunc(100).textContent, "NEW",
- "Qualified should see current inner 2");
- // ion
- is(barewordFunc(10000).textContent, "OLD", "Bareword should see own inner 3");
- is(qualifiedFunc(10000).textContent, "NEW",
- "Qualified should see current inner 2");
- SimpleTest.finish();
- }
- frames[0].location = "data:text/plain,NEW";
- }
-
-
-
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=936056">Mozilla Bug 936056</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe src="data:text/plain,OLD"></iframe>
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_blacklisted_prerendering_function.xul b/dom/bindings/test/test_blacklisted_prerendering_function.xul
deleted file mode 100644
index 02a76d88d..000000000
--- a/dom/bindings/test/test_blacklisted_prerendering_function.xul
+++ /dev/null
@@ -1,124 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:html="http://www.w3.org/1999/xhtml"
- onload="runTest();">
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
-
-<script class="testbody" type="application/javascript">
-<![CDATA[
-
- SimpleTest.waitForExplicitFinish();
-
- function Listener(aBrowser, aPrerendered, aCallback) {
- this.init(aBrowser, aPrerendered, aCallback);
- }
-
- Listener.prototype = {
- init: function(aBrowser, aPrerendered, aCallback) {
- this.mBrowser = aBrowser;
- this.mPrerendered = aPrerendered;
- this.mCallback = aCallback;
- },
- QueryInterface: function(aIID) {
- if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
- aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
- aIID.equals(Components.interfaces.nsISupports))
- return this;
- throw Components.results.NS_NOINTERFACE;
- },
- onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus) {
- if ((aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP) &&
- (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT)) {
- var doc = this.mBrowser.contentDocument;
- var stage = doc.getElementById("stage");
- if (this.mPrerendered) {
- is(stage.textContent, "before", "The blacklisted call should properly be intercepted in prerendering mode");
- } else {
- // In normal mode, we may or may not have run the timeout and/or the interval.
- switch (stage.textContent) {
- case "after":
- case "in timeout":
- case "in interval":
- ok(true, "The blacklisted call should work fine in normal mode");
- break;
- default:
- ok(false, "The blacklisted call should work fine in normal mode");
- break;
- }
- }
- progress.removeProgressListener(progressListener);
-
- // Set three timeouts to see if the interval triggered
- var self = this;
- function checkInterval() {
- var expected = self.mPrerendered ? "before" : "in interval";
- var desc = self.mPrerendered ? "No timer should be running" : "Timers should run as normal";
- is(stage.textContent, expected, desc);
- // Now, dispatch a key event to the window and see if the keydown handler runs
- synthesizeKey("a", {}, self.mBrowser.contentWindow);
- expected = self.mPrerendered ? "before" : "keydown";
- desc = self.mPrerendered ? "No event handler should be running" : "Event handlers should run as normal";
- is(stage.textContent, expected, desc);
- self.mCallback();
- }
- setTimeout(function() {
- setTimeout(function() {
- setTimeout(function() {
- checkInterval();
- }, 0);
- }, 0);
- }, 0);
- }
- },
- onProgressChange : function(aWebProgress, aRequest,
- aCurSelfProgress, aMaxSelfProgress,
- aCurTotalProgress, aMaxTotalProgress) {},
- onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags) {},
- onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage) {},
- onSecurityChange : function(aWebProgress, aRequest, aState) {},
- mBrowser: null,
- mPrerendered: false,
- mCallback: null
- };
-
- var progress, progressListener;
-
- function runTest() {
- testStep(false, "file_focuser.html", function() {
- testStep(true, "file_focuser.html", function() {
- testStep(false, "file_fullScreenPropertyAccessor.html", function() {
- testStep(true, "file_fullScreenPropertyAccessor.html", function() {
- SimpleTest.finish();
- });
- });
- });
- });
- }
-
- function testStep(aPrerendered, aFileName, aCallback) {
- var browser = document.getElementById(aPrerendered ? "prerendered" : "normal");;
- progressListener = new Listener(browser, aPrerendered, aCallback);
- var docShell = browser.docShell;
- progress = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIWebProgress);
- progress.addProgressListener(progressListener,
- Components.interfaces.nsIWebProgress.NOTIFY_ALL);
- browser.loadURI("chrome://mochitests/content/chrome/dom/bindings/test/" + aFileName);
- }
-
-]]>
-</script>
-
-<body id="html_body" xmlns="http://www.w3.org/1999/xhtml">
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1069719">Mozilla Bug 1069719</a>
-<p id="display"></p>
-
-<pre id="test">
-</pre>
-</body>
-<browser prerendered="true" id="prerendered"/>
-<browser id="normal"/>
-</window>
diff --git a/dom/bindings/test/test_bug1036214.html b/dom/bindings/test/test_bug1036214.html
deleted file mode 100644
index dd98eb482..000000000
--- a/dom/bindings/test/test_bug1036214.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1036214
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1036214</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for subsumes-checking |any| and |object| for js-implemented WebIDL. **/
- SimpleTest.waitForExplicitFinish();
- var xoObjects = [];
- function setup() {
- xoObjects.push(window[0]);
- xoObjects.push(window[0].location);
- xoObjects.push(SpecialPowers.unwrap(SpecialPowers.wrap(window[0]).document));
- xoObjects.push(SpecialPowers);
- xoObjects.push(SpecialPowers.wrap);
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, go);
- }
-
- function checkThrows(f, msg) {
- try {
- f();
- ok(false, "Should have thrown: " + msg);
- } catch (e) {
- ok(true, "Threw correctly: " + msg);
- ok(/denied|insecure/.test(e), "Threw security exception: " + e);
- }
- }
-
- function go() {
-
- //
- // Test the basics of the test interface.
- //
-
- var any = { a: 11 };
- var obj = { b: 22, c: "str" };
- var obj2 = { foo: "baz" };
- var myDict = { anyMember: 42, objectMember: { answer: 42 }, objectOrStringMember: { answer: "anobject" },
- anySequenceMember: [{}, 1, "thirdinsequence"],
- innerDictionary: { innerObject: { answer: "rabbithole" } } };
- var t = new TestInterfaceJS(any, obj, myDict);
- is(Object.getPrototypeOf(t), TestInterfaceJS.prototype, "Prototype setup works correctly");
- is(t.anyArg, any, "anyArg is correct");
- is(t.objectArg, obj, "objectArg is correct");
- is(t.dictionaryArg.anyMember, 42, "dictionaryArg looks correct");
- is(t.dictionaryArg.objectMember.answer, 42, "dictionaryArg looks correct");
- t.anyAttr = 2;
- is(t.anyAttr, 2, "ping-pong any attribute works");
- t.objAttr = obj2;
- is(t.objAttr, obj2, "ping-pong object attribute works");
- t.dictionaryAttr = myDict;
- is(t.dictionaryAttr.anyMember, 42, "ping-pong dictionary attribute works");
- is(t.dictionaryAttr.objectMember.answer, 42, "ping-pong dictionary attribute works");
-
- is(any, t.pingPongAny(any), "ping-pong works with any");
- is(obj, t.pingPongObject(obj), "ping-pong works with obj");
- is(obj, t.pingPongObjectOrString(obj), "ping-pong works with obj or string");
- is("foo", t.pingPongObjectOrString("foo"), "ping-pong works with obj or string");
- is(t.pingPongDictionary(myDict).anyMember, 42, "ping pong works with dict");
- is(t.pingPongDictionary(myDict).objectMember.answer, 42, "ping pong works with dict");
- is(t.pingPongDictionary(myDict).objectOrStringMember.answer, "anobject", "ping pong works with dict");
- is(t.pingPongDictionary(myDict).anySequenceMember[2], "thirdinsequence", "ping pong works with dict");
- is(t.pingPongDictionary(myDict).innerDictionary.innerObject.answer, "rabbithole", "ping pong works with layered dicts");
- is(t.pingPongDictionaryOrLong({anyMember: 42}), 42, "ping pong (dict or long) works with dict");
- is(t.pingPongDictionaryOrLong(42), 42, "ping pong (dict or long) works with long");
- ok(/canary/.test(t.pingPongMap({ someVal: 42, someOtherVal: "canary" })), "ping pong works with mozmap");
- is(t.objectSequenceLength([{}, {}, {}]), 3, "ping pong works with object sequence");
- is(t.anySequenceLength([42, 'string', {}, undefined]), 4, "ping pong works with any sequence");
-
- //
- // Test that we throw in the cross-origin cases.
- //
-
- xoObjects.forEach(function(xoObj) {
- var blank = new TestInterfaceJS();
- checkThrows(() => new TestInterfaceJS(xoObj, undefined), "any param for constructor");
- checkThrows(() => new TestInterfaceJS(undefined, xoObj), "obj param for constructor");
- checkThrows(() => new TestInterfaceJS(undefined, undefined, { anyMember: xoObj }), "any dict param for constructor");
- checkThrows(() => new TestInterfaceJS(undefined, undefined, { objectMember: xoObj }), "object dict param for constructor");
- checkThrows(() => new TestInterfaceJS(undefined, undefined, { objectOrStringMember: xoObj }), "union dict param for constructor");
- checkThrows(() => new TestInterfaceJS(undefined, undefined, { anySequenceMember: [0, xoObj, 'hi' ] }), "sequence dict param for constructor");
- checkThrows(() => new TestInterfaceJS(undefined, undefined, { innerDictionary: { innerObject: xoObj } }), "inner dict param for constructor");
- checkThrows(() => t.anyAttr = xoObj, "anyAttr");
- checkThrows(() => t.objectAttr = xoObj, "objAttr");
- checkThrows(() => t.dictionaryAttr = { anyMember: xoObj }, "dictionaryAttr any");
- checkThrows(() => t.dictionaryAttr = { objectMember: xoObj }, "dictionaryAttr object");
- checkThrows(() => t.pingPongAny(xoObj), "pingpong any");
- checkThrows(() => t.pingPongObject(xoObj), "pingpong obj");
- checkThrows(() => t.pingPongObjectOrString(xoObj), "pingpong union");
- checkThrows(() => t.pingPongDictionary({ anyMember: xoObj }), "dictionary pingpong any");
- checkThrows(() => t.pingPongDictionary({ objectMember: xoObj }), "dictionary pingpong object");
- checkThrows(() => t.pingPongDictionary({ anyMember: xoObj, objectMember: xoObj }), "dictionary pingpong both");
- checkThrows(() => t.pingPongDictionary({ objectOrStringMember: xoObj }), "dictionary pingpong objectorstring");
- checkThrows(() => t.pingPongDictionaryOrLong({ objectMember: xoObj }), "unionable dictionary");
- checkThrows(() => t.pingPongDictionaryOrLong({ anyMember: xoObj }), "unionable dictionary");
- checkThrows(() => t.pingPongMap({ someMember: 42, someOtherMember: {}, crossOriginMember: xoObj }), "mozmap");
- checkThrows(() => t.objectSequenceLength([{}, {}, xoObj, {}]), "object sequence");
- checkThrows(() => t.anySequenceLength([42, 'someString', xoObj, {}]), "any sequence");
- });
-
-
- SimpleTest.finish();
- }
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1036214">Mozilla Bug 1036214</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-<iframe id="ifr" onload="setup();" src="http://example.org/tests/js/xpconnect/tests/mochitest/file_empty.html"></iframe>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug1041646.html b/dom/bindings/test/test_bug1041646.html
deleted file mode 100644
index 22baed454..000000000
--- a/dom/bindings/test/test_bug1041646.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1041646
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1041646</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1041646 **/
- // We need to reject the promise with a DOMException, so make sure we have
- // something that produces one.
- function throwException() {
- document.createTextNode("").appendChild(document);
- }
- try {
- throwException();
- } catch (e) {
- ok(e instanceof DOMException, "This test won't test what it should be testing");
- }
-
- SimpleTest.waitForExplicitFinish();
-
- // We want a new DOMException each time here.
- for (var i = 0; i < 100; ++i) {
- new Promise(throwException);
- }
-
- // Now make sure we wait for all those promises above to reject themselves
- Promise.resolve(1).then(function() {
- SpecialPowers.gc(); // This should not assert or crash
- SimpleTest.finish();
- });
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1041646">Mozilla Bug 1041646</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug1123516_maplikesetlike.html b/dom/bindings/test/test_bug1123516_maplikesetlike.html
deleted file mode 100644
index 18ede38ac..000000000
--- a/dom/bindings/test/test_bug1123516_maplikesetlike.html
+++ /dev/null
@@ -1,271 +0,0 @@
-<!-- Any copyright is dedicated to the Public Domain.
-- http://creativecommons.org/publicdomain/zero/1.0/ -->
-<!DOCTYPE HTML>
-<html>
- <head>
- <title>Test Maplike Interface</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
- </head>
- <body>
- <script class="testbody" type="application/javascript">
- SimpleTest.waitForExplicitFinish();
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
-
- base_properties = [["has", "function", 1],
- ["entries", "function", 0],
- ["keys", "function", 0],
- ["values", "function", 0],
- ["forEach", "function", 1],
- ["size", "number"]];
- maplike_properties = base_properties.concat([["set", "function", 2]]);
- setlike_properties = base_properties;
- rw_properties = [["clear", "function", 0],
- ["delete", "function", 1]];
- setlike_rw_properties = base_properties.concat(rw_properties).concat([["add", "function", 1]]);
- maplike_rw_properties = maplike_properties.concat(rw_properties).concat([["get", "function",1]]);
- var testExistence = function testExistence(prefix, obj, properties) {
- for (var [name, type, args] of properties) {
- // Properties are somewhere up the proto chain, hasOwnProperty won't work
- isnot(obj[name], undefined,
- `${prefix} object has property ${name}`);
-
- is(typeof obj[name], type,
- `${prefix} object property ${name} is a ${type}`);
- // Check function length
- if (type == "function") {
- is(obj[name].length, args,
- `${prefix} object property ${name} is length ${args}`);
- is(obj[name].name, name,
- `${prefix} object method name is ${name}`);
- }
-
- // Find where property is on proto chain, check for enumerablility there.
- var owner = obj;
- while (owner) {
- var propDesc = Object.getOwnPropertyDescriptor(owner, name);
- if (propDesc) {
- ok(!propDesc.enumerable,
- `${prefix} object property ${name} is not enumerable`);
- break;
- }
- owner = Object.getPrototypeOf(owner);
- }
- }
- }
-
- var m;
- var testSet;
- var testIndex;
- // Simple map creation and functionality test
- info("SimpleMap: Testing simple map creation and functionality");
- m = new TestInterfaceMaplike();
- ok(m, "SimpleMap: got a TestInterfaceMaplike object");
- testExistence("SimpleMap: ", m, maplike_rw_properties);
- is(m.size, 0, "SimpleMap: size should be zero");
- ok(!m.has("test"), "SimpleMap: maplike has should return false");
- is(m.get("test"), undefined, "SimpleMap: maplike get should return undefined on bogus lookup");
- m1 = m.set("test", 1);
- is(m, m1, "SimpleMap: return from set should be map object");
- is(m.size, 1, "SimpleMap: size should be 1");
- ok(m.has("test"), "SimpleMap: maplike has should return true");
- is(m.get("test"), 1, "SimpleMap: maplike get should return value entered");
- m2 = m.set("test2", 2);
- is(m.size, 2, "SimpleMap: size should be 2");
- testSet = [["test", 1], ["test2", 2]];
- testIndex = 0;
- m.forEach(function(v, k, o) {
- "use strict";
- is(o, m, "SimpleMap: foreach obj is correct");
- is(k, testSet[testIndex][0], "SimpleMap: foreach map key: " + k + " = " + testSet[testIndex][0]);
- is(v, testSet[testIndex][1], "SimpleMap: foreach map value: " + v + " = " + testSet[testIndex][1]);
- testIndex += 1;
- });
- is(testIndex, 2, "SimpleMap: foreach ran correct number of times");
- ok(m.has("test2"), "SimpleMap: maplike has should return true");
- is(m.get("test2"), 2, "SimpleMap: maplike get should return value entered");
- is(m.delete("test2"), true, "SimpleMap: maplike deletion should return boolean");
- is(m.size, 1, "SimpleMap: size should be 1");
- iterable = false;
- for (var e of m) {
- iterable = true;
- is(e[0], "test", "SimpleMap: iterable first array element should be key");
- is(e[1], 1, "SimpleMap: iterable second array element should be value");
- }
- is(m[Symbol.iterator].length, 0, "SimpleMap: @@iterator symbol is correct length");
- is(m[Symbol.iterator].name, "entries", "SimpleMap: @@iterator symbol has correct name");
- is(m[Symbol.iterator], m.entries, 'SimpleMap: @@iterator is an alias for "entries"');
- ok(iterable, "SimpleMap: @@iterator symbol resolved correctly");
- for (var k of m.keys()) {
- is(k, "test", "SimpleMap: first keys element should be 'test'");
- }
- for (var v of m.values()) {
- is(v, 1, "SimpleMap: first values elements should be 1");
- }
- for (var e of m.entries()) {
- is(e[0], "test", "SimpleMap: entries first array element should be 'test'");
- is(e[1], 1, "SimpleMap: entries second array element should be 1");
- }
- m.clear();
- is(m.size, 0, "SimpleMap: size should be 0 after clear");
-
- // Simple set creation and functionality test
- info("SimpleSet: Testing simple set creation and functionality");
- m = new TestInterfaceSetlike();
- ok(m, "SimpleSet: got a TestInterfaceSetlike object");
- testExistence("SimpleSet: ", m, setlike_rw_properties);
- is(m.size, 0, "SimpleSet: size should be zero");
- ok(!m.has("test"), "SimpleSet: maplike has should return false");
- m1 = m.add("test");
- is(m, m1, "SimpleSet: return from set should be map object");
- is(m.size, 1, "SimpleSet: size should be 1");
- ok(m.has("test"), "SimpleSet: maplike has should return true");
- m2 = m.add("test2");
- is(m.size, 2, "SimpleSet: size should be 2");
- testSet = ["test", "test2"];
- testIndex = 0;
- m.forEach(function(v, k, o) {
- "use strict";
- is(o, m, "SimpleSet: foreach obj is correct");
- is(k, testSet[testIndex], "SimpleSet: foreach set key: " + k + " = " + testSet[testIndex]);
- testIndex += 1;
- });
- is(testIndex, 2, "SimpleSet: foreach ran correct number of times");
- ok(m.has("test2"), "SimpleSet: maplike has should return true");
- is(m.delete("test2"), true, "SimpleSet: maplike deletion should return true");
- is(m.size, 1, "SimpleSet: size should be 1");
- iterable = false;
- for (var e of m) {
- iterable = true;
- is(e, "test", "SimpleSet: iterable first array element should be key");
- }
- is(m[Symbol.iterator].length, 0, "SimpleSet: @@iterator symbol is correct length");
- is(m[Symbol.iterator].name, "values", "SimpleSet: @@iterator symbol has correct name");
- is(m[Symbol.iterator], m.values, 'SimpleSet: @@iterator is an alias for "values"');
- ok(iterable, "SimpleSet: @@iterator symbol resolved correctly");
- for (var k of m.keys()) {
- is(k, "test", "SimpleSet: first keys element should be 'test'");
- }
- for (var v of m.values()) {
- is(v, "test", "SimpleSet: first values elements should be 'test'");
- }
- for (var e of m.entries()) {
- is(e[0], "test", "SimpleSet: Entries first array element should be 'test'");
- is(e[1], "test", "SimpleSet: Entries second array element should be 'test'");
- }
- m.clear();
- is(m.size, 0, "SimpleSet: size should be 0 after clear");
-
- // Map convenience function test
- info("Testing map convenience functions");
- m = new TestInterfaceMaplike();
- ok(m, "MapConvenience: got a TestInterfaceMaplike object");
- is(m.size, 0, "MapConvenience: size should be zero");
- ok(!m.hasInternal("test"), "MapConvenience: maplike hasInternal should return false");
- m.setInternal("test", 1);
- is(m.size, 1, "MapConvenience: size should be 1");
- ok(m.hasInternal("test"), "MapConvenience: maplike hasInternal should return true");
- is(m.get("test"), 1, "MapConvenience: maplike get should return value entered");
- m2 = m.setInternal("test2", 2);
- is(m.size, 2, "size should be 2");
- ok(m.hasInternal("test2"), "MapConvenience: maplike hasInternal should return true");
- is(m.get("test2"), 2, "MapConvenience: maplike get should return value entered");
- is(m.deleteInternal("test2"), true, "MapConvenience: maplike deleteInternal should return true");
- is(m.size, 1, "MapConvenience: size should be 1");
- m.clearInternal();
- is(m.size, 0, "MapConvenience: size should be 0 after clearInternal");
-
- // Map convenience function test using objects and readonly
-
- info("Testing Map convenience function test using objects and readonly");
- m = new TestInterfaceMaplikeObject();
- ok(m, "ReadOnlyMapConvenience: got a TestInterfaceMaplikeObject object");
- is(m.size, 0, "ReadOnlyMapConvenience: size should be zero");
- is(m["set"], undefined, "ReadOnlyMapConvenience: readonly map, should be no set function");
- is(m["clear"], undefined, "ReadOnlyMapConvenience: readonly map, should be no clear function");
- is(m["delete"], undefined, "ReadOnlyMapConvenience: readonly map, should be no delete function");
- ok(!m.hasInternal("test"), "ReadOnlyMapConvenience: maplike hasInternal should return false");
- m.setInternal("test");
- is(m.size, 1, "size should be 1");
- ok(m.hasInternal("test"), "ReadOnlyMapConvenience: maplike hasInternal should return true");
- m2 = m.setInternal("test2");
- is(m.size, 2, "size should be 2");
- ok(m.hasInternal("test2"), "ReadOnlyMapConvenience: maplike hasInternal should return true");
- is(m.deleteInternal("test2"), true, "ReadOnlyMapConvenience: maplike deleteInternal should return true");
- is(m.size, 1, "ReadOnlyMapConvenience: size should be 1");
- m.clearInternal();
- is(m.size, 0, "ReadOnlyMapConvenience: size should be 0 after clearInternal");
-
- // JS implemented map creation convenience function test
-
- info("JSMapConvenience: Testing JS implemented map creation convenience functions");
- m = new TestInterfaceJSMaplike();
- ok(m, "JSMapConvenience: got a TestInterfaceJSMaplike object");
- is(m.size, 0, "JSMapConvenience: size should be zero");
- ok(!m.has("test"), "JSMapConvenience: maplike has should return false");
- m.setInternal("test", 1);
- is(m.size, 1, "JSMapConvenience: size should be 1");
- ok(m.has("test"), "JSMapConvenience: maplike has should return true");
- is(m.get("test"), 1, "JSMapConvenience: maplike get should return value entered");
- m2 = m.setInternal("test2", 2);
- is(m.size, 2, "JSMapConvenience: size should be 2");
- ok(m.has("test2"), "JSMapConvenience: maplike has should return true");
- is(m.get("test2"), 2, "JSMapConvenience: maplike get should return value entered");
- is(m.deleteInternal("test2"), true, "JSMapConvenience: maplike deleteInternal should return true");
- is(m.size, 1, "JSMapConvenience: size should be 1");
- for (var k of m.keys()) {
- is(k, "test", "JSMapConvenience: first keys element should be 'test'");
- }
- for (var v of m.values()) {
- is(v, 1, "JSMapConvenience: first values elements should be 1");
- }
- for (var e of m.entries()) {
- is(e[0], "test", "JSMapConvenience: entries first array element should be 'test'");
- is(e[1], 1, "JSMapConvenience: entries second array element should be 1");
- }
- m.clearInternal();
- is(m.size, 0, "JSMapConvenience: size should be 0 after clearInternal");
-
- // Test this override for forEach
- info("ForEachThisOverride: Testing this override for forEach");
- m = new TestInterfaceMaplike();
- m.set("test", 1);
- m.forEach(function(v, k, o) {
- "use strict";
- is(o, m, "ForEachThisOverride: foreach obj is correct");
- is(this, 5, "ForEachThisOverride: 'this' value should be correct");
- }, 5);
-
- // Test defaulting arguments on maplike to undefined
- info("MapArgsDefault: Testing maplike defaulting arguments to undefined");
- m = new TestInterfaceMaplike();
- m.set();
- is(m.size, 1, "MapArgsDefault: should have 1 entry");
- m.forEach(function(v, k) {
- "use strict";
- is(typeof k, "string", "MapArgsDefault: key is a string");
- is(k, "undefined", "MapArgsDefault: key is the string undefined");
- is(v, 0, "MapArgsDefault: value is 0");
- });
- is(m.get(), 0, "MapArgsDefault: no argument to get() returns correct value");
- m.delete();
- is(m.size, 0, "MapArgsDefault: should have 0 entries");
-
- // Test defaulting arguments on setlike to undefined
- info("SetArgsDefault: Testing setlike defaulting arguments to undefined");
- m = new TestInterfaceSetlike();
- m.add();
- is(m.size, 1, "SetArgsDefault: should have 1 entry");
- m.forEach(function(v, k) {
- "use strict";
- is(typeof k, "string", "SetArgsDefault: key is a string");
- is(k, "undefined", "SetArgsDefault: key is the string undefined");
- });
- m.delete();
- is(m.size, 0, "SetArgsDefault: should have 0 entries");
-
- SimpleTest.finish();
- });
- </script>
- </body>
-</html>
diff --git a/dom/bindings/test/test_bug1123516_maplikesetlikechrome.xul b/dom/bindings/test/test_bug1123516_maplikesetlikechrome.xul
deleted file mode 100644
index 4bc45cddd..000000000
--- a/dom/bindings/test/test_bug1123516_maplikesetlikechrome.xul
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet type="text/css" href="chrome://global/skin"?>
-<?xml-stylesheet type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"?>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1123516
--->
-<window title="Mozilla Bug 1123516"
- xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <iframe id="t"></iframe>
-
- <!-- test results are displayed in the html:body -->
- <body xmlns="http://www.w3.org/1999/xhtml">
- <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1123516"
- target="_blank">Mozilla Bug 1123516</a>
- </body>
-
- <!-- test code goes here -->
- <script type="application/javascript">
- <![CDATA[
-
- /** Test for Bug 1123516 **/
- const Cu = Components.utils;
- function doTest() {
- var win = $("t").contentWindow;
- var sandbox = Components.utils.Sandbox(win, { sandboxPrototype: win });
- is(sandbox._content, undefined, "_content does nothing over Xray");
- // Test cross-compartment usage of maplike/setlike WebIDL structures.
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
- try {
- var maplike = Components.utils.evalInSandbox("var m = new TestInterfaceMaplike(); m;", sandbox);
- maplike.set("test2", 2);
- is(maplike.get("test2"), 2, "Should be able to create and use maplike/setlike across compartments");
- var test = Components.utils.evalInSandbox("m.get('test2');", sandbox);
- is(test, 2, "Maplike/setlike should still work in original compartment");
- is(maplike.size, 1, "Testing size retrieval across compartments");
- } catch(e) {
- ok(false, "Shouldn't throw when working with cross-compartment maplike/setlike interfaces " + e)
- };
- try {
- var setlike = Components.utils.evalInSandbox("var m = new TestInterfaceSetlikeNode(); m.add(document.documentElement); m;", sandbox);
- is(TestInterfaceSetlikeNode.prototype.has.call(setlike, win.document.documentElement), true,
- "Cross-compartment unwrapping/comparison has works");
- // TODO: Should throw until iterators are handled by Xrays, Bug 1023984
- try {
- var e = TestInterfaceSetlikeNode.prototype.keys.call(setlike);
- ok(false, "Calling iterators via xrays should fail");
- } catch(e) {
- ok(true, "Calling iterators via xrays should fail");
- }
-
- setlike.forEach((v,k,t) => { is(v, win.document.documentElement, "Cross-compartment forEach works"); });
- TestInterfaceSetlikeNode.prototype.forEach.call(setlike,
- (v,k,t) => { is(v, win.document.documentElement, "Cross-compartment forEach works"); });
- is(TestInterfaceSetlikeNode.prototype.delete.call(setlike, win.document.documentElement), true,
- "Cross-compartment unwrapping/comparison delete works");
- } catch(e) {
- ok(false, "Shouldn't throw when working with cross-compartment maplike/setlike interfaces " + e)
- };
- SimpleTest.finish();
- });
- }
-
- SimpleTest.waitForExplicitFinish();
- addLoadEvent(doTest);
- ]]>
- </script>
-</window>
diff --git a/dom/bindings/test/test_bug1123875.html b/dom/bindings/test/test_bug1123875.html
deleted file mode 100644
index 5658091c4..000000000
--- a/dom/bindings/test/test_bug1123875.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<!doctype html>
-<meta charset=utf-8>
-<title>Test for Bug 1123875</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<div id=log></div>
-<script>
- test(() => {
- assert_throws(new TypeError, () => {
- "use strict";
- document.childNodes.length = 0;
- });
- }, "setting a readonly attribute on a proxy in strict mode should throw a TypeError");
-</script>
diff --git a/dom/bindings/test/test_bug1287912.html b/dom/bindings/test/test_bug1287912.html
deleted file mode 100644
index ae72b2316..000000000
--- a/dom/bindings/test/test_bug1287912.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1287912
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1287912</title>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1287912">Mozilla Bug 1287912</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe id="t" src="http://example.org/tests/dom/bindings/test/"></iframe>
-</div>
-<pre id="test">
-<script type="application/javascript">
-function test()
-{
- var win = document.getElementById("t").contentWindow;
- is(Object.getPrototypeOf(win.Image), win.Function.prototype, "The __proto__ of a named constructor is Function.prototype");
- is(win.Image.prototype, win.HTMLImageElement.prototype, "The prototype property of a named constructor is the interface prototype object");
- is(win.HTMLImageElement['foo'], undefined, "Should not have a property named foo on the HTMLImageElement interface object");
- is(win.Image['foo'], undefined, "Should not have a property named foo on the Image named constructor");
-
- SimpleTest.finish();
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(test);
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug560072.html b/dom/bindings/test/test_bug560072.html
deleted file mode 100644
index 82bb1c2c6..000000000
--- a/dom/bindings/test/test_bug560072.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=560072
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 560072</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=560072">Mozilla Bug 560072</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 560072 **/
-is(document.body,
- Object.getOwnPropertyDescriptor(HTMLDocument.prototype, "body").get.call(document),
- "Should get body out of property descriptor");
-
-is(document.body,
- Object.getOwnPropertyDescriptor(Object.getPrototypeOf(document), "body").get.call(document),
- "Should get body out of property descriptor this way too");
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug742191.html b/dom/bindings/test/test_bug742191.html
deleted file mode 100644
index b4b3151d7..000000000
--- a/dom/bindings/test/test_bug742191.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=742191
--->
-<head>
- <meta charset="utf-8">
- <title>Test for invalid argument object</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=742191">Mozilla Bug 742191</a>
-<p id="display"></p>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 742191 **/
-function doTest() {
- var gotTypeError = false;
- var ctx = document.createElement("canvas").getContext("2d");
- try {
- ctx.drawImage({}, 0, 0);
- } catch(e) {
- if (e instanceof TypeError) {
- gotTypeError = true;
- }
- }
-
- ok(gotTypeError, "passing an invalid argument should cause a type error!");
-}
-doTest();
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug759621.html b/dom/bindings/test/test_bug759621.html
deleted file mode 100644
index 602a0cd7c..000000000
--- a/dom/bindings/test/test_bug759621.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=759621
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 759621</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=759621">Mozilla Bug 759621</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 759621 **/
-var l = document.getElementsByTagName("*");
-l.namedItem = "pass";
-is(l.namedItem, "pass", "Should be able to set expando shadowing a proto prop");
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug773326.html b/dom/bindings/test/test_bug773326.html
deleted file mode 100644
index 2e3b1ea30..000000000
--- a/dom/bindings/test/test_bug773326.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<!doctype html>
-<meta charset=utf-8>
-<title>Test for Bug 773326</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<div id=log></div>
-<script>
-test(function() {
- new Worker("data:text/javascript,new XMLHttpRequest(42)");
-}, "Should not crash")
-</script>
diff --git a/dom/bindings/test/test_bug775543.html b/dom/bindings/test/test_bug775543.html
deleted file mode 100644
index d8df05f63..000000000
--- a/dom/bindings/test/test_bug775543.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=775543
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 775543</title>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=775543">Mozilla Bug 775543</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_bug775543.html" onload="test();"></iframe>
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 775543 **/
-
-function test()
-{
- var a = XPCNativeWrapper(document.getElementById("t").contentWindow.wrappedJSObject.worker);
- isnot(XPCNativeWrapper.unwrap(a), a, "XPCNativeWrapper(Worker) should be an Xray wrapper");
- a.toString();
- ok(true, "Shouldn't crash when calling a method on an Xray wrapper around a worker");
- SimpleTest.finish();
-}
-
-SimpleTest.waitForExplicitFinish();
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug788369.html b/dom/bindings/test/test_bug788369.html
deleted file mode 100644
index 787bd28fe..000000000
--- a/dom/bindings/test/test_bug788369.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=788369
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 788369</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=788369">Mozilla Bug 788369</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 788369 **/
-try {
- var xhr = new(window.ActiveXObject || XMLHttpRequest)("Microsoft.XMLHTTP");
- ok(xhr instanceof XMLHttpRequest, "Should have an XHR object");
-} catch (e) {
- ok(false, "Should not throw exception when constructing: " + e);
-}
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug852846.html b/dom/bindings/test/test_bug852846.html
deleted file mode 100644
index 0ca2c7dad..000000000
--- a/dom/bindings/test/test_bug852846.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=852846
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 852846</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 852846 **/
- var elem = document.createElement("div");
- is(elem.style.color, "", "Shouldn't have color set on HTML element")
- elem.style = "color: green";
- is(elem.style.color, "green", "Should have color set on HTML element")
-
- elem = document.createElementNS("http://www.w3.org/2000/svg", "svg");
- is(elem.style.color, "", "Shouldn't have color set on SVG element")
- elem.style = "color: green";
- is(elem.style.color, "green", "Should have color set on SVG element")
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=852846">Mozilla Bug 852846</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug862092.html b/dom/bindings/test/test_bug862092.html
deleted file mode 100644
index 4b0633328..000000000
--- a/dom/bindings/test/test_bug862092.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=862092
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 862092</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 862092 **/
-
- SimpleTest.waitForExplicitFinish();
- function runTest()
- {
- var frameDoc = document.getElementById("f").contentDocument;
- var a = document.createElement("select");
- a.expando = "test";
- a = frameDoc.adoptNode(a)
- is(a.expando, "test", "adoptNode needs to preserve expandos");
- SimpleTest.finish();
- }
-
- </script>
-</head>
-<body onload="runTest();">
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=862092">Mozilla Bug 862092</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe id="f"></iframe>
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_bug963382.html b/dom/bindings/test/test_bug963382.html
deleted file mode 100644
index f48d2e8b0..000000000
--- a/dom/bindings/test/test_bug963382.html
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=963382
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 963382</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for clearing cache attributes in JS-implemented WebIDL implementations. **/
- SimpleTest.waitForExplicitFinish();
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, go);
-
- function go() {
- var t = new TestInterfaceJS();
-
- // Test [Cached] attribute clearing.
- is(t.cachedAttr, 15, "Initial value of number");
-
- t.setCachedAttr(3);
- is(t.cachedAttr, 15, "Setting the number on the inner JS object should not affect cached value");
-
- t.clearCachedAttrCache();
- is(t.cachedAttr, 3, "Setting the number on the inner JS object should affect cached value after clearing the cache.");
-
- SimpleTest.finish();
- }
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=963382">Mozilla Bug 963382</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_callback_across_document_open.html b/dom/bindings/test/test_callback_across_document_open.html
deleted file mode 100644
index 2a505cefa..000000000
--- a/dom/bindings/test/test_callback_across_document_open.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Test for callback invocation for a callback that comes from a
- no-longer-current window that still has an active document.</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<iframe srcdoc='<script>function f() { parent.callCount++; }</script>'></iframe>
-<script>
- var callCount = 0;
- var t = async_test("A test of callback invocation in a no-longer-current window with a still-active document");
- window.addEventListener("load", t.step_func_done(function() {
- var d = document.createElement("div");
- d.addEventListener("xyz", frames[0].f);
- frames[0].document.open();
- frames[0].document.write("All gone");
- frames[0].document.close();
- d.dispatchEvent(new Event("xyz"));
- assert_equals(callCount, 1, "Callback should have been called");
- }));
-</script>
diff --git a/dom/bindings/test/test_callback_default_thisval.html b/dom/bindings/test/test_callback_default_thisval.html
deleted file mode 100644
index d98ed87b2..000000000
--- a/dom/bindings/test/test_callback_default_thisval.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=957929
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 957929</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 957929 **/
- SimpleTest.waitForExplicitFinish();
-
- function f() {
- "use strict";
- is(this, undefined, "Should have undefined this value");
- SimpleTest.finish();
- }
-
- addLoadEvent(function() {
- requestAnimationFrame(f);
- });
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=957929">Mozilla Bug 957929</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_callback_exceptions.html b/dom/bindings/test/test_callback_exceptions.html
deleted file mode 100644
index a40b0b94f..000000000
--- a/dom/bindings/test/test_callback_exceptions.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Test for ...</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<script>
-promise_test(function(t) {
- var iterator = document.createNodeIterator(document, NodeFilter.SHOW_ALL, JSON.parse);
- return promise_rejects(t, new SyntaxError,
- Promise.resolve().then(iterator.nextNode.bind(iterator)));
-}, "Trying to use JSON.parse as filter should throw a catchable SyntaxError exception even when the filter is invoked async");
-
-promise_test(function(t) {
- return promise_rejects(t, new SyntaxError, Promise.resolve('{').then(JSON.parse));
-}, "Trying to use JSON.parse as a promise callback should allow the next promise to handle the resulting exception.");
-</script>
diff --git a/dom/bindings/test/test_cloneAndImportNode.html b/dom/bindings/test/test_cloneAndImportNode.html
deleted file mode 100644
index fc53c8747..000000000
--- a/dom/bindings/test/test_cloneAndImportNode.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=882541
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 882541</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 882541 **/
- var div = document.createElement("div");
- div.appendChild(document.createElement("span"));
-
- var div2;
-
- div2 = div.cloneNode();
- is(div2.childNodes.length, 0, "cloneNode() should do a shallow clone");
-
- div2 = div.cloneNode(undefined);
- is(div2.childNodes.length, 0, "cloneNode(undefined) should do a shallow clone");
-
- div2 = div.cloneNode(true);
- is(div2.childNodes.length, 1, "cloneNode(true) should do a deep clone");
-
- div2 = document.importNode(div);
- is(div2.childNodes.length, 0, "importNode(node) should do a deep import");
-
- div2 = document.importNode(div, undefined);
- is(div2.childNodes.length, 0, "importNode(undefined) should do a shallow import");
-
- div2 = document.importNode(div, true);
- is(div2.childNodes.length, 1, "importNode(true) should do a deep import");
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=882541">Mozilla Bug 882541</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_crossOriginWindowSymbolAccess.html b/dom/bindings/test/test_crossOriginWindowSymbolAccess.html
deleted file mode 100644
index 7808631b6..000000000
--- a/dom/bindings/test/test_crossOriginWindowSymbolAccess.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Test for accessing symbols on a cross-origin window</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<iframe src="http://www1.w3c-test.org/common/blank.html"></iframe>
-<script>
-async_test(function (t) {
- window.addEventListener("load", t.step_func(
- function() {
- assert_equals(document.querySelector("iframe").contentDocument, null, "Should have a crossorigin frame");
- assert_throws(new Error(), function() {
- frames[0][Symbol.iterator];
- }, "Should throw exception on cross-origin Window symbol-named get");
- assert_throws(new Error(), function() {
- frames[0].location[Symbol.iterator];
- }, "Should throw exception on cross-origin Location symbol-named get");
- t.done();
- }
- ));
-}, "Check Symbol access on load");
-</script>
diff --git a/dom/bindings/test/test_defineProperty.html b/dom/bindings/test/test_defineProperty.html
deleted file mode 100644
index f8f5f6283..000000000
--- a/dom/bindings/test/test_defineProperty.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=910220
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 910220</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=910220">Mozilla Bug 910220</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<form name="x"></form>
-</div>
-<pre id="test">
-</pre>
-<script type="application/javascript">
-
-/** Test for Bug 910220 **/
-
-function getX() {
- return "x";
-}
-
-function namedSetStrict(obj) {
- "use strict";
- var threw;
- try {
- obj.x = 5;
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(threw,
- "Should throw in strict mode when setting named property on " + obj);
-
- try {
- obj[getX()] = 5;
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(threw,
- "Should throw in strict mode when setting named property via SETELEM on " + obj);
-
- try {
- Object.defineProperty(obj, "x", { value: 17 });
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(threw,
- "Should throw in strict mode when defining named property on " + obj);
-}
-function namedSetNonStrict(obj) {
- var threw;
- try {
- obj.x = 5;
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(!threw,
- "Should not throw in non-strict mode when setting named property on " + obj);
-
- try {
- obj[getX()] = 5;
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(!threw,
- "Should not throw in non-strict mode when setting named property via SETELEM on" + obj);
-
- try {
- Object.defineProperty(obj, "x", { value: 17 });
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(threw,
- "Should throw in non-strict mode when defining named property on " + obj);
-}
-for (var obj of [ document, document.forms ]) {
- namedSetStrict(obj);
- namedSetNonStrict(obj);
-}
-
-function indexedSetStrict(obj) {
- "use strict";
- var threw;
- try {
- obj[0] = 5;
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(threw,
- "Should throw in strict mode when setting indexed property on " + obj);
-
- try {
- obj[1000] = 5;
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(threw,
- "Should throw in strict mode when setting out of bounds indexed property on " + obj);
-
- try {
- Object.defineProperty(obj, "0", { value: 17 });
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(threw,
- "Should throw in strict mode when defining indexed property on " + obj);
-}
-function indexedSetNonStrict(obj) {
- var threw;
- try {
- obj[0] = 5;
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(!threw,
- "Should not throw in non-strict mode when setting indexed property on " + obj);
-
- try {
- obj[1000] = 5;
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(!threw,
- "Should not throw in non-strict mode when setting out of bounds indexed property on " + obj);
-
- try {
- Object.defineProperty(obj, "0", { value: 17 });
- threw = false;
- } catch (e) {
- threw = true;
- }
- ok(threw,
- "Should throw in non-strict mode when defining indexed property on " + obj);
-}
-for (var obj of [ document.forms, document.childNodes ]) {
- indexedSetStrict(obj);
- indexedSetNonStrict(obj);
-}
-</script>
-</body>
-</html>
diff --git a/dom/bindings/test/test_document_location_set_via_xray.html b/dom/bindings/test/test_document_location_set_via_xray.html
deleted file mode 100644
index cdadc5063..000000000
--- a/dom/bindings/test/test_document_location_set_via_xray.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=905493
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 905493</title>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=905493">Mozilla Bug 905493</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_document_location_set_via_xray.html"></iframe>
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 905493 **/
-
-function test()
-{
- var doc = document.getElementById("t").contentWindow.document;
- ok(!("x" in doc), "Should have an Xray here");
- is(doc.x, undefined, "Really should have an Xray here");
- is(doc.wrappedJSObject.x, 5, "And wrapping the right thing");
- document.getElementById("t").onload = function() {
- ok(true, "Load happened");
- SimpleTest.finish();
- };
- try {
- // Test the forwarding location setter
- doc.location = "chrome://mochikit/content/tests/SimpleTest/test.css";
- } catch (e) {
- // Load failed
- ok(false, "Load failed");
- SimpleTest.finish();
- }
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(test);
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_document_location_via_xray_cached.html b/dom/bindings/test/test_document_location_via_xray_cached.html
deleted file mode 100644
index 20eef10fb..000000000
--- a/dom/bindings/test/test_document_location_via_xray_cached.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1041731
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1041731</title>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1041731">Mozilla Bug 1041731</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_document_location_set_via_xray.html"></iframe>
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 1041731 **/
-
-function test()
-{
- var loc = document.getElementById("t").contentWindow.document.location;
- is(loc.toString, loc.toString, "Unforgeable method on the Xray should be cached");
- SimpleTest.finish();
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(test);
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_domProxyArrayLengthGetter.html b/dom/bindings/test/test_domProxyArrayLengthGetter.html
deleted file mode 100644
index a62adff2e..000000000
--- a/dom/bindings/test/test_domProxyArrayLengthGetter.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1221421
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1221421</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="text/javascript">
-
- var x = document.documentElement.style;
- x.__proto__ = [1, 2, 3];
-
- var res = 0;
- for (var h = 0; h < 5000; ++h) {
- res += x.length;
- }
- is(res, 15000, "length getter should return array length");
-
- </script>
-</head>
-
-<body>
- <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1221421">Mozilla Bug 1221421</a>
-</body>
-</html>
diff --git a/dom/bindings/test/test_dom_xrays.html b/dom/bindings/test/test_dom_xrays.html
deleted file mode 100644
index 15d7013ad..000000000
--- a/dom/bindings/test/test_dom_xrays.html
+++ /dev/null
@@ -1,231 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=787070
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 787070</title>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=787070">Mozilla Bug 787070</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_dom_xrays.html"></iframe>
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 1021066 **/
-
-var Cu = Components.utils;
-
-// values should contain the values that the property should have on each of
-// the objects on the prototype chain of obj. A value of undefined signals
-// that the value should not be present on that prototype.
-function checkXrayProperty(obj, name, values)
-{
- var instance = obj;
- do {
- var value = values.shift();
- if (typeof value == "undefined") {
- ok(!obj.hasOwnProperty(name), "hasOwnProperty shouldn't see \"" + name + "\" through Xrays");
- is(Object.getOwnPropertyDescriptor(obj, name), undefined, "getOwnPropertyDescriptor shouldn't see \"" + name + "\" through Xrays");
- ok(Object.keys(obj).indexOf(name) == -1, "Enumerating the Xray should not return \"" + name + "\"");
- } else {
- ok(obj.hasOwnProperty(name), "hasOwnProperty should see \"" + name + "\" through Xrays");
- var pd = Object.getOwnPropertyDescriptor(obj, name);
- ok(pd, "getOwnPropertyDescriptor should see \"" + name + "\" through Xrays");
- if (pd && pd.get) {
- is(pd.get.call(instance), value, "Should get the right value for \"" + name + "\" through Xrays");
- } else {
- is(obj[name], value, "Should get the right value for \"" + name + "\" through Xrays");
- }
- if (pd && pd.enumerable) {
- ok(Object.keys(obj).indexOf("" + name) > -1, "Enumerating the Xray should return \"" + name + "\"");
- }
- }
- } while ((obj = Object.getPrototypeOf(obj)));
-}
-
-function checkWindowXrayProperty(obj, name, windowValue, windowPrototypeValue, namedPropertiesValue, eventTargetValue)
-{
- checkXrayProperty(obj, name, [ windowValue, windowPrototypeValue, namedPropertiesValue, eventTargetValue ]);
-}
-
-function test()
-{
- // Window
- var win = document.getElementById("t").contentWindow;
- var doc = document.getElementById("t").contentDocument;
-
- var winProto = Object.getPrototypeOf(win);
- is(winProto, win.Window.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
-
- var namedPropertiesObject = Object.getPrototypeOf(winProto);
- is(Cu.getClassName(namedPropertiesObject, /* unwrap = */ true), "WindowProperties", "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
-
- var eventTargetProto = Object.getPrototypeOf(namedPropertiesObject);
- is(eventTargetProto, win.EventTarget.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
-
- // Xrays need to filter expandos.
- checkWindowXrayProperty(win, "expando", undefined);
- ok(!("expando" in win), "Xrays should filter expandos");
-
- checkWindowXrayProperty(win, "shadowedIframe", undefined, undefined, doc.getElementById("shadowedIframe").contentWindow);
- ok("shadowedIframe" in win, "Named properties should be exposed through Xrays");
-
- // Named properties live on the named properties object for global objects.
- checkWindowXrayProperty(win, "iframe", undefined, undefined, doc.getElementById("iframe").contentWindow);
- ok("iframe" in win, "Named properties should be exposed through Xrays");
-
- // Window properties live on the instance, shadowing the properties of the named property object.
- checkWindowXrayProperty(win, "document", doc, undefined, doc.getElementById("document").contentWindow);
- ok("document" in win, "WebIDL properties should be exposed through Xrays");
-
- // Unforgeable properties live on the instance, shadowing the properties of the named property object.
- checkWindowXrayProperty(win, "self", win, undefined, doc.getElementById("self").contentWindow);
- ok("self" in win, "WebIDL properties should be exposed through Xrays");
-
- // Object.prototype is at the end of the prototype chain.
- var obj = win;
- while ((proto = Object.getPrototypeOf(obj))) {
- obj = proto;
- }
- is(obj, win.Object.prototype, "Object.prototype should be at the end of the prototype chain");
-
- // Named properties shouldn't shadow WebIDL- or ECMAScript-defined properties.
- checkWindowXrayProperty(win, "addEventListener", undefined, undefined, undefined, eventTargetProto.addEventListener);
- is(win.addEventListener, eventTargetProto.addEventListener, "Named properties shouldn't shadow WebIDL-defined properties");
-
- is(win.toString, win.Object.prototype.toString, "Named properties shouldn't shadow ECMAScript-defined properties");
-
- // HTMLDocument
- // Unforgeable properties live on the instance.
- checkXrayProperty(doc, "location", [ win.location ]);
- is(String(win.location), document.getElementById("t").src,
- "Should have the right stringification");
-
- // HTMLHtmlElement
- var elem = doc.documentElement;
-
- var elemProto = Object.getPrototypeOf(elem);
- is(elemProto, win.HTMLHtmlElement.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
-
- elemProto = Object.getPrototypeOf(elemProto);
- is(elemProto, win.HTMLElement.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
-
- elemProto = Object.getPrototypeOf(elemProto);
- is(elemProto, win.Element.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
-
- elemProto = Object.getPrototypeOf(elemProto);
- is(elemProto, win.Node.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
-
- elemProto = Object.getPrototypeOf(elemProto);
- is(elemProto, win.EventTarget.prototype, "The proto chain of the Xray should mirror the prototype chain of the Xrayed object");
-
- // Xrays need to filter expandos.
- ok(!("expando" in elem), "Xrays should filter expandos");
-
- // WebIDL-defined properties live on the prototype.
- checkXrayProperty(elem, "version", [ undefined, "" ]);
- is(elem.version, "", "WebIDL properties should be exposed through Xrays");
-
- // HTMLCollection
- var coll = doc.getElementsByTagName("iframe");
-
- // Named properties live on the instance for non-global objects.
- checkXrayProperty(coll, "iframe", [ doc.getElementById("iframe") ]);
-
- // Indexed properties live on the instance.
- checkXrayProperty(coll, 0, [ doc.getElementById("shadowedIframe") ]);
-
- // WebIDL-defined properties live on the prototype, overriding any named properties.
- checkXrayProperty(coll, "item", [ undefined, win.HTMLCollection.prototype.item ]);
-
- // ECMAScript-defined properties live on the prototype, overriding any named properties.
- checkXrayProperty(coll, "toString", [ undefined, undefined, win.Object.prototype.toString ]);
-
- // Frozen arrays should come from our compartment, not the target one.
- var languages1 = win.navigator.languages;
- isnot(languages1, undefined, "Must have .languages");
- ok(Array.isArray(languages1), ".languages should be an array");
- ok(Object.isFrozen(languages1), ".languages should be a frozen array");
- ok(!Cu.isXrayWrapper(languages1), "Should have our own version of array");
- is(Cu.getGlobalForObject(languages1), window,
- "languages1 should come from our window");
- // We want to get .languages in the content compartment, but without waiving
- // Xrays altogether.
- var languages2 = win.eval("navigator.languages");
- isnot(languages2, undefined, "Must still have .languages");
- ok(Array.isArray(languages2), ".languages should still be an array");
- ok(Cu.isXrayWrapper(languages2), "Should have xray for content version of array");
- is(Cu.getGlobalForObject(languages2), win,
- "languages2 come from the underlying window");
- ok(Object.isFrozen(languages2.wrappedJSObject),
- ".languages should still be a frozen array underneath");
- isnot(languages1, languages2, "Must have distinct arrays");
- isnot(languages1, languages2.wrappedJSObject,
- "Must have distinct arrays no matter how we slice it");
-
- // Check that DataTransfer's .types has the hack to alias contains()
- // to includes().
- var dataTransfer = new win.DataTransfer();
- is(dataTransfer.types.contains, dataTransfer.types.includes,
- "Should have contains() set up as an alias to includes()");
- // Waive Xrays on the dataTransfer itself, since the .types we get is
- // different over Xrays vs not.
- is(dataTransfer.wrappedJSObject.types.contains, undefined,
- "Underlying object should not have contains() set up as an alias to " +
- "includes()");
-
- // Check that deleters work correctly in the [OverrideBuiltins] case.
- var elem = win.document.documentElement;
- var dataset = elem.dataset;
- is(dataset.foo, undefined, "Should not have a 'foo' property");
- ok(!('foo' in dataset), "Really should not have a 'foo' property");
- is(elem.getAttribute("data-foo"), null,
- "Should not have a 'data-foo' attribute");
- ok(!elem.hasAttribute("data-foo"),
- "Really should not have a 'data-foo' attribute");
- dataset.foo = "bar";
- is(dataset.foo, "bar", "Should now have a 'foo' property");
- ok('foo' in dataset, "Really should have a 'foo' property");
- is(elem.getAttribute("data-foo"), "bar",
- "Should have a 'data-foo' attribute");
- ok(elem.hasAttribute("data-foo"),
- "Really should have a 'data-foo' attribute");
- delete dataset.foo;
- is(dataset.foo, undefined, "Should not have a 'foo' property again");
- ok(!('foo' in dataset), "Really should not have a 'foo' property again");
- is(elem.getAttribute("data-foo"), null,
- "Should not have a 'data-foo' attribute again");
- ok(!elem.hasAttribute("data-foo"),
- "Really should not have a 'data-foo' attribute again");
-
- // Check that deleters work correctly in the non-[OverrideBuiltins] case.
- var storage = win.sessionStorage;
- is(storage.foo, undefined, "Should not have a 'foo' property");
- ok(!('foo' in storage), "Really should not have a 'foo' property");
- is(storage.getItem("foo"), null, "Should not have an item named 'foo'");
- storage.foo = "bar";
- is(storage.foo, "bar", "Should have a 'foo' property");
- ok('foo' in storage, "Really should have a 'foo' property");
- is(storage.getItem("foo"), "bar", "Should have an item named 'foo'");
- delete storage.foo
- is(storage.foo, undefined, "Should not have a 'foo' property again");
- ok(!('foo' in storage), "Really should not have a 'foo' property again");
- is(storage.getItem("foo"), null, "Should not have an item named 'foo' again");
-
- SimpleTest.finish();
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(test);
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_enums.html b/dom/bindings/test/test_enums.html
deleted file mode 100644
index e5dc519a0..000000000
--- a/dom/bindings/test/test_enums.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<!doctype html>
-<meta charset=utf-8>
-<title>Enums</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<div id=log></div>
-<script>
-test(function() {
- var xhr = new XMLHttpRequest();
- xhr.open("get", "foo")
- assert_equals(xhr.responseType, "");
- xhr.responseType = "foo";
- assert_equals(xhr.responseType, "");
-}, "Assigning an invalid value to an enum attribute should not throw.");
-</script>
diff --git a/dom/bindings/test/test_exceptionSanitization.html b/dom/bindings/test/test_exceptionSanitization.html
deleted file mode 100644
index 9a6ab6088..000000000
--- a/dom/bindings/test/test_exceptionSanitization.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1295322
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1295322</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1295322">Mozilla Bug 1295322</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
- <script type="application/javascript">
-
- /** Test for Bug 1295322 **/
- iframe = document.createElement('iframe');
- iframe.name = "eWin";
- document.body.appendChild(iframe);
-
- try{
- // NOTE: The idea here is to call something that will end up throwing an
- // exception in a JS component and then propagate back to C++ code before
- // returning to us. If opening a feed: URI stops doing that, we will need a
- // new guinea pig here.
- open('feed://java:script:codeshouldgohere','eWin');
- ok(false, "Should have thrown!");
- } catch(e){
- try {
- is(e.name, "NS_ERROR_UNEXPECTED", "Should have the right exception");
- is(e.filename, location.href,
- "Should not be seeing where the exception really came from");
- } catch (e2) {
- ok(false, "Should be able to work with the exception");
- }
- }
- </script>
-</body>
-</html>
diff --git a/dom/bindings/test/test_exceptionThrowing.html b/dom/bindings/test/test_exceptionThrowing.html
deleted file mode 100644
index 376c2bc57..000000000
--- a/dom/bindings/test/test_exceptionThrowing.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=847119
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 847119</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 847119 **/
-
- var xhr = new XMLHttpRequest();
- var domthrows = function() { xhr.open(); }
-
- var count = 20000;
-
- function f() {
- var k = 0;
- for (var j = 0; j < count; ++j) {
- try { domthrows(); } catch(e) { ++k; }
- }
- return k;
- }
- function g() { return count; }
-
- is(f(), count, "Should get count exceptions");
- for (var h of [f, g]) {
- try { is(h(), count, "Should get count exceptions here too"); } catch (e) {}
- }
- ok(true, "We should get here");
-
- var domthrows = function() { xhr.withCredentials = false; }
- xhr.open("GET", "");
- xhr.send();
-
- is(f(), count, "Should get count exceptions from getter");
- for (var h of [f, g]) {
- try { is(h(), count, "Should get count exceptions from getter here too"); } catch (e) {}
- }
- ok(true, "We should get here too");
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=847119">Mozilla Bug 847119</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_exception_messages.html b/dom/bindings/test/test_exception_messages.html
deleted file mode 100644
index a0f0cabe6..000000000
--- a/dom/bindings/test/test_exception_messages.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=882653
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 882653</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 882653 **/
- // Each test is a string to eval, the expected exception message, and the
- // test description.
- var tests = [
- [ 'document.documentElement.appendChild.call({}, new Image())',
- "'appendChild' called on an object that does not implement interface Node.",
- "bogus method this object" ],
- [ 'Object.getOwnPropertyDescriptor(Document.prototype, "documentElement").get.call({})',
- "'get documentElement' called on an object that does not implement interface Document.",
- "bogus getter this object" ],
- [ 'Object.getOwnPropertyDescriptor(Element.prototype, "innerHTML").set.call({})',
- "'set innerHTML' called on an object that does not implement interface Element.",
- "bogus setter this object" ],
- [ 'document.documentElement.appendChild(5)',
- "Argument 1 of Node.appendChild is not an object.",
- "bogus interface argument" ],
- [ 'document.documentElement.appendChild(null)',
- "Argument 1 of Node.appendChild is not an object.",
- "null interface argument" ],
- [ 'document.createTreeWalker(document).currentNode = 5',
- "Value being assigned to TreeWalker.currentNode is not an object.",
- "interface setter call" ],
- [ 'document.documentElement.appendChild({})',
- "Argument 1 of Node.appendChild does not implement interface Node.",
- "wrong interface argument" ],
- [ 'document.createTreeWalker(document).currentNode = {}',
- "Value being assigned to TreeWalker.currentNode does not implement interface Node.",
- "wrong interface setter call" ],
- [ 'document.createElement("canvas").getContext("2d").fill("bogus")',
- "Argument 1 of CanvasRenderingContext2D.fill 'bogus' is not a valid value for enumeration CanvasWindingRule.",
- "bogus enum value" ],
- [ 'document.createTreeWalker(document, 0xFFFFFFFF, { acceptNode: 5 }).nextNode()',
- "Property 'acceptNode' is not callable.",
- "non-callable callback interface operation property" ],
- [ '(new TextDecoder).decode(new Uint8Array(), new RegExp())',
- "Argument 2 of TextDecoder.decode can't be converted to a dictionary.",
- "regexp passed for a dictionary" ],
- [ 'URL.createObjectURL(null, null)',
- "Argument 1 is not valid for any of the 2-argument overloads of URL.createObjectURL.",
- "overload resolution failure" ],
- [ 'document.createElement("select").add({})',
- "Argument 1 of HTMLSelectElement.add could not be converted to any of: HTMLOptionElement, HTMLOptGroupElement.",
- "invalid value passed for union" ],
- [ 'document.createElement("canvas").getContext("2d").createLinearGradient(0, 1, 0, 1).addColorStop(NaN, "")',
- "Argument 1 of CanvasGradient.addColorStop is not a finite floating-point value.",
- "invalid float" ]
- ];
-
- for (var i = 0; i < tests.length; ++i) {
- msg = "Correct exception should be thrown for " + tests[i][2];
- try {
- eval(tests[i][0]);
- ok(false, msg);
- } catch (e) {
- is(e.message, tests[i][1], msg);
- }
- }
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=882653">Mozilla Bug 882653</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_exception_options_from_jsimplemented.html b/dom/bindings/test/test_exception_options_from_jsimplemented.html
deleted file mode 100644
index 8a98a8fb6..000000000
--- a/dom/bindings/test/test_exception_options_from_jsimplemented.html
+++ /dev/null
@@ -1,166 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1107592
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1107592</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1107592 **/
-
- SimpleTest.waitForExplicitFinish();
-
- function doTest() {
- var file = location.href;
- var asyncFrame;
- /* Async parent frames from pushPrefEnv don't show up in e10s. */
- var isE10S = !SpecialPowers.isMainProcess();
- if (!isE10S && SpecialPowers.getBoolPref("javascript.options.asyncstack")) {
- asyncFrame = `Async*@${file}:153:3
-`;
- } else {
- asyncFrame = "";
- }
-
- var t = new TestInterfaceJS();
- try {
- t.testThrowError();
- } catch (e) {
- ok(e instanceof Error, "Should have an Error here");
- ok(!(e instanceof DOMException), "Should not have DOMException here");
- ok(!("code" in e), "Should not have a 'code' property");
- is(e.name, "Error", "Should not have an interesting name here");
- is(e.message, "We are an Error", "Should have the right message");
- is(e.stack,
- `doTest@${file}:31:7
-${asyncFrame}`,
- "Exception stack should still only show our code");
- is(e.fileName,
- file,
- "Should have the right file name");
- is(e.lineNumber, 31, "Should have the right line number");
- is(e.columnNumber, 7, "Should have the right column number");
- }
-
- try {
- t.testThrowDOMException();
- } catch (e) {
- ok(e instanceof Error, "Should also have an Error here");
- ok(e instanceof DOMException, "Should have DOMException here");
- is(e.name, "NotSupportedError", "Should have the right name here");
- is(e.message, "We are a DOMException",
- "Should also have the right message");
- is(e.code, DOMException.NOT_SUPPORTED_ERR,
- "Should have the right 'code'");
- is(e.stack,
- `doTest@${file}:50:7
-${asyncFrame}`,
- "Exception stack should still only show our code");
- is(e.filename,
- file,
- "Should still have the right file name");
- is(e.lineNumber, 50, "Should still have the right line number");
- todo_isnot(e.columnNumber, 0,
- "No column number support for DOMException yet");
- }
-
- try {
- t.testThrowTypeError();
- } catch (e) {
- ok(e instanceof TypeError, "Should have a TypeError here");
- ok(!(e instanceof DOMException), "Should not have DOMException here (2)");
- ok(!("code" in e), "Should not have a 'code' property (2)");
- is(e.name, "TypeError", "Should be named TypeError");
- is(e.message, "We are a TypeError",
- "Should also have the right message (2)");
- is(e.stack,
- `doTest@${file}:72:7
-${asyncFrame}`,
- "Exception stack for TypeError should only show our code");
- is(e.fileName,
- file,
- "Should still have the right file name for TypeError");
- is(e.lineNumber, 72, "Should still have the right line number for TypeError");
- is(e.columnNumber, 7, "Should have the right column number for TypeError");
- }
-
- try {
- t.testThrowCallbackError(function() { Array.indexOf() });
- } catch (e) {
- ok(e instanceof TypeError, "Should have a TypeError here (3)");
- ok(!(e instanceof DOMException), "Should not have DOMException here (3)");
- ok(!("code" in e), "Should not have a 'code' property (3)");
- is(e.name, "TypeError", "Should be named TypeError (3)");
- is(e.message, "missing argument 0 when calling function Array.indexOf",
- "Should also have the right message (3)");
- is(e.stack,
- `doTest/<@${file}:92:45
-doTest@${file}:92:7
-${asyncFrame}`,
- "Exception stack for TypeError should only show our code (3)");
- is(e.fileName,
- file,
- "Should still have the right file name for TypeError (3)");
- is(e.lineNumber, 92, "Should still have the right line number for TypeError (3)");
- is(e.columnNumber, 45, "Should have the right column number for TypeError (3)");
- }
-
- try {
- t.testThrowXraySelfHosted();
- } catch (e) {
- ok(!(e instanceof Error), "Should have an Exception here (4)");
- ok(!(e instanceof DOMException), "Should not have DOMException here (4)");
- ok(!("code" in e), "Should not have a 'code' property (4)");
- is(e.name, "NS_ERROR_UNEXPECTED", "Name should be sanitized (4)");
- is(e.message, "", "Message should be sanitized (5)");
- is(e.stack,
- `doTest@${file}:113:7
-${asyncFrame}`,
- "Exception stack for sanitized exception should only show our code (4)");
- is(e.filename,
- file,
- "Should still have the right file name for sanitized exception (4)");
- is(e.lineNumber, 113, "Should still have the right line number for sanitized exception (4)");
- todo_isnot(e.columnNumber, 0, "Should have the right column number for sanitized exception (4)");
- }
-
- try {
- t.testThrowSelfHosted();
- } catch (e) {
- ok(!(e instanceof Error), "Should have an Exception here (5)");
- ok(!(e instanceof DOMException), "Should not have DOMException here (5)");
- ok(!("code" in e), "Should not have a 'code' property (5)");
- is(e.name, "NS_ERROR_UNEXPECTED", "Name should be sanitized (5)");
- is(e.message, "", "Message should be sanitized (5)");
- is(e.stack,
- `doTest@${file}:132:7
-${asyncFrame}`,
- "Exception stack for sanitized exception should only show our code (5)");
- is(e.filename,
- file,
- "Should still have the right file name for sanitized exception (5)");
- is(e.lineNumber, 132, "Should still have the right line number for sanitized exception (5)");
- todo_isnot(e.columnNumber, 0, "Should have the right column number for sanitized exception (5)");
- }
-
- SimpleTest.finish();
- }
-
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
- doTest);
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107592">Mozilla Bug 1107592</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_exceptions_from_jsimplemented.html b/dom/bindings/test/test_exceptions_from_jsimplemented.html
deleted file mode 100644
index d0f599353..000000000
--- a/dom/bindings/test/test_exceptions_from_jsimplemented.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=923010
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 923010</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
- /** Test for Bug 923010 **/
- try {
- var conn = new RTCPeerConnection();
-
- var candidate = new RTCIceCandidate({candidate: null });
- conn.addIceCandidate(candidate)
- .then(function() {
- ok(false, "addIceCandidate succeeded when it should have failed");
- }, function(reason) {
- is(reason.lineNumber, 17, "Rejection should have been on line 17");
- is(reason.message,
- "Invalid candidate passed to addIceCandidate!",
- "Should have the rejection we expect");
- })
- .catch(function(reason) {
- ok(false, "unexpected error: " + reason);
- });
- } catch (e) {
- // b2g has no WebRTC, apparently
- todo(false, "No WebRTC on b2g yet");
- }
-
- conn.close();
- try {
- conn.setIdentityProvider("example.com", "foo");
- ok(false, "That call to setIdentityProvider should have thrown");
- } catch (e) {
- is(e.lineNumber, 36, "Exception should have been on line 36");
- is(e.message,
- "Peer connection is closed",
- "Should have the exception we expect");
- }
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=923010">Mozilla Bug 923010</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_forOf.html b/dom/bindings/test/test_forOf.html
deleted file mode 100644
index 53969a23e..000000000
--- a/dom/bindings/test/test_forOf.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=725907
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 725907</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=725907">Mozilla Bug 725907</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<div id="basket">
- <span id="egg0"></span>
- <span id="egg1"><span id="duckling1"></span></span>
- <span id="egg2"></span>
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 725907 **/
-
-function runTestsForDocument(document, msgSuffix) {
- function is(a, b, msg) { SimpleTest.is(a, b, msg + msgSuffix); }
- function isnot(a, b, msg) { SimpleTest.isnot(a, b, msg + msgSuffix); }
-
- var basket = document.getElementById("basket");
- var egg3 = document.createElement("span");
- egg3.id = "egg3";
-
- var log = '';
- for (var x of basket.childNodes) {
- if (x.nodeType != x.TEXT_NODE)
- log += x.id + ";";
- }
- is(log, "egg0;egg1;egg2;", "'for (x of div.childNodes)' should iterate over child nodes");
-
- log = '';
- for (var x of basket.childNodes) {
- if (x.nodeType != x.TEXT_NODE) {
- log += x.id + ";";
- if (x.id == "egg1")
- basket.appendChild(egg3);
- }
- }
- is(log, "egg0;egg1;egg2;egg3;", "'for (x of div.childNodes)' should see elements added during iteration");
-
- log = '';
- basket.appendChild(document.createTextNode("some text"));
- for (var x of basket.children)
- log += x.id + ";";
- is(log, "egg0;egg1;egg2;egg3;", "'for (x of div.children)' should iterate over child elements");
-
- var count = 0;
- for (var x of document.getElementsByClassName("hazardous-materials"))
- count++;
- is(count, 0, "'for (x of emptyNodeList)' loop should run zero times");
-
- var log = '';
- for (var x of document.querySelectorAll("span"))
- log += x.id + ";";
- is(log, "egg0;egg1;duckling1;egg2;egg3;", "for-of loop should work with a querySelectorAll() NodeList");
-}
-
-/* All the tests run twice. First, in this document, so without any wrappers. */
-runTestsForDocument(document, "");
-
-/* And once using the document of an iframe, so working with cross-compartment wrappers. */
-SimpleTest.waitForExplicitFinish();
-function iframeLoaded(iframe) {
- runTestsForDocument(iframe.contentWindow.document, " (in iframe)");
- SimpleTest.finish();
-}
-
-</script>
-
-<iframe src="forOf_iframe.html" onload="iframeLoaded(this)"></iframe>
-
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_integers.html b/dom/bindings/test/test_integers.html
deleted file mode 100644
index c74b68216..000000000
--- a/dom/bindings/test/test_integers.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<head>
- <meta charset="utf-8">
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<p id="display"></p>
-<div id="content" style="display: none">
- <canvas id="c" width="1" height="1"></canvas>
-</div>
-<pre id="test">
-<script type="application/javascript">
-
- function testInt64NonFinite(arg) {
- // We can use a WebGLRenderingContext to test conversion to 64-bit signed
- // ints edge cases.
- var gl = $("c").getContext("experimental-webgl");
- if (!gl) {
- // No WebGL support on MacOS 10.5. Just skip this test
- todo(false, "WebGL not supported");
- return;
- }
- var error = gl.getError()
-
- // on the b2g emulator we get GL_INVALID_FRAMEBUFFER_OPERATION
- if (error == 0x0506) // GL_INVALID_FRAMEBUFFER_OPERATION
- return;
-
- is(error, 0, "Should not start in an error state");
-
- var b = gl.createBuffer();
- gl.bindBuffer(gl.ARRAY_BUFFER, b);
-
- var a = new Float32Array(1);
- gl.bufferData(gl.ARRAY_BUFFER, a, gl.STATIC_DRAW);
-
- gl.bufferSubData(gl.ARRAY_BUFFER, arg, a);
-
- is(gl.getError(), 0, "Should have treated non-finite double as 0");
- }
-
- testInt64NonFinite(NaN);
- testInt64NonFinite(Infinity);
- testInt64NonFinite(-Infinity);
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_interfaceName.html b/dom/bindings/test/test_interfaceName.html
deleted file mode 100644
index 59828a2cf..000000000
--- a/dom/bindings/test/test_interfaceName.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1084001
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1084001</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1084001 **/
- is(Image.name, "Image", "Image name");
- is(Promise.name, "Promise", "Promise name");
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1084001">Mozilla Bug 1084001</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_interfaceToString.html b/dom/bindings/test/test_interfaceToString.html
deleted file mode 100644
index c97b2f63b..000000000
--- a/dom/bindings/test/test_interfaceToString.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=742156
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 742156</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=742156">Mozilla Bug 742156</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 742156 **/
-
-var nativeToString = ("" + String.replace).replace("replace", "EventTarget");
-try {
- var eventTargetToString = "" + EventTarget;
- is(eventTargetToString, nativeToString,
- "Stringifying a DOM interface object should return the same string" +
- "as stringifying a native function.");
-}
-catch (e) {
- ok(false, "Stringifying a DOM interface object shouldn't throw.");
-}
-
-try {
- eventTargetToString = Function.prototype.toString.call(EventTarget);
- is(eventTargetToString, nativeToString,
- "Stringifying a DOM interface object via Function.prototype.toString " +
- "should return the same string as stringifying a native function.");
-}
-catch (e) {
- ok(false, "Stringifying a DOM interface object shouldn't throw.");
-}
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_iterable.html b/dom/bindings/test/test_iterable.html
deleted file mode 100644
index 8ce818e76..000000000
--- a/dom/bindings/test/test_iterable.html
+++ /dev/null
@@ -1,241 +0,0 @@
-<!-- Any copyright is dedicated to the Public Domain.
-- http://creativecommons.org/publicdomain/zero/1.0/ -->
-<!DOCTYPE HTML>
-<html>
- <head>
- <title>Test Iterable Interface</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
- </head>
- <body>
- <script class="testbody" type="application/javascript">
- SimpleTest.waitForExplicitFinish();
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
-
- base_properties = [["entries", "function", 0],
- ["keys", "function", 0],
- ["values", "function", 0],
- ["forEach", "function", 1]]
- var testExistence = function testExistence(prefix, obj, properties) {
- for (var [name, type, args] of properties) {
- // Properties are somewhere up the proto chain, hasOwnProperty won't work
- isnot(obj[name], undefined,
- `${prefix} object has property ${name}`);
-
- is(typeof obj[name], type,
- `${prefix} object property ${name} is a ${type}`);
- // Check function length
- if (type == "function") {
- is(obj[name].length, args,
- `${prefix} object property ${name} is length ${args}`);
- is(obj[name].name, name,
- `${prefix} object method name is ${name}`);
- }
-
- // Find where property is on proto chain, check for enumerablility there.
- var owner = obj;
- while (owner) {
- var propDesc = Object.getOwnPropertyDescriptor(owner, name);
- if (propDesc) {
- ok(propDesc.enumerable,
- `${prefix} object property ${name} is enumerable`);
- break;
- }
- owner = Object.getPrototypeOf(owner);
- }
- }
- }
-
- var itr;
- // Simple single type iterable creation and functionality test
- info("IterableSingle: Testing simple iterable creation and functionality");
- itr = new TestInterfaceIterableSingle();
- testExistence("IterableSingle: ", itr, base_properties);
- is(itr[Symbol.iterator], Array.prototype[Symbol.iterator],
- "IterableSingle: Should be using %ArrayIterator% for @@iterator");
- is(itr.keys, Array.prototype.keys,
- "IterableSingle: Should be using %ArrayIterator% for 'keys'");
- is(itr.entries, Array.prototype.entries,
- "IterableSingle: Should be using %ArrayIterator% for 'entries'");
- is(itr.values, itr[Symbol.iterator],
- "IterableSingle: Should be using @@iterator for 'values'");
- is(itr.forEach, Array.prototype.forEach,
- "IterableSingle: Should be using %ArrayIterator% for 'forEach'");
- var keys = [...itr.keys()];
- var values = [...itr.values()];
- var entries = [...itr.entries()];
- var key_itr = itr.keys();
- var value_itr = itr.values();
- var entries_itr = itr.entries();
- for (var i = 0; i < 3; ++i) {
- var key = key_itr.next();
- var value = value_itr.next();
- var entry = entries_itr.next();
- is(key.value, i, "IterableSingle: Key iterator value should be " + i);
- is(key.value, keys[i],
- "IterableSingle: Key iterator value should match destructuring " + i);
- is(value.value, key.value, "IterableSingle: Value iterator value should be " + key.value);
- is(value.value, values[i],
- "IterableSingle: Value iterator value should match destructuring " + i);
- is(entry.value[0], i, "IterableSingle: Entry iterator value 0 should be " + i);
- is(entry.value[1], i, "IterableSingle: Entry iterator value 1 should be " + i);
- is(entry.value[0], entries[i][0],
- "IterableSingle: Entry iterator value 0 should match destructuring " + i);
- is(entry.value[1], entries[i][1],
- "IterableSingle: Entry iterator value 1 should match destructuring " + i);
- }
-
- var callsToForEachCallback = 0;
- var thisArg = {};
- itr.forEach(function(value, index, obj) {
- is(index, callsToForEachCallback,
- `IterableSingle: Should have the right index at ${callsToForEachCallback} calls to forEach callback`);
- is(value, values[index],
- `IterableSingle: Should have the right value at ${callsToForEachCallback} calls to forEach callback`);
- is(this, thisArg,
- "IterableSingle: Should have the right this value for forEach callback");
- is(obj, itr,
- "IterableSingle: Should have the right third arg for forEach callback");
- ++callsToForEachCallback;
- }, thisArg);
- is(callsToForEachCallback, 3,
- "IterableSingle: Should have right total number of calls to forEach callback");
-
- var key = key_itr.next();
- var value = value_itr.next();
- var entry = entries_itr.next();
- is(key.value, undefined, "IterableSingle: Key iterator value should be undefined");
- is(key.done, true, "IterableSingle: Key iterator done should be true");
- is(value.value, undefined, "IterableSingle: Value iterator value should be undefined");
- is(value.done, true, "IterableSingle: Value iterator done should be true");
- is(entry.value, undefined, "IterableDouble: Entry iterator value should be undefined");
- is(entry.done, true, "IterableSingle: Entry iterator done should be true");
- is(Object.prototype.toString.call(Object.getPrototypeOf(key_itr)),
- "[object Array Iterator]",
- "iterator prototype should have the right brand");
-
- // Simple dual type iterable creation and functionality test
- info("IterableDouble: Testing simple iterable creation and functionality");
- itr = new TestInterfaceIterableDouble();
- testExistence("IterableDouble: ", itr, base_properties);
- is(itr.entries, itr[Symbol.iterator],
- "IterableDouble: Should be using @@iterator for 'entries'");
- var elements = [["a", "b"], ["c", "d"], ["e", "f"]]
- var keys = [...itr.keys()];
- var values = [...itr.values()];
- var entries = [...itr.entries()];
- var key_itr = itr.keys();
- var value_itr = itr.values();
- var entries_itr = itr.entries();
- for (var i = 0; i < 3; ++i) {
- var key = key_itr.next();
- var value = value_itr.next();
- var entry = entries_itr.next();
- is(key.value, elements[i][0], "IterableDouble: Key iterator value should be " + elements[i][0]);
- is(key.value, keys[i],
- "IterableDouble: Key iterator value should match destructuring " + i);
- is(value.value, elements[i][1], "IterableDouble: Value iterator value should be " + elements[i][1]);
- is(value.value, values[i],
- "IterableDouble: Value iterator value should match destructuring " + i);
- is(entry.value[0], elements[i][0], "IterableDouble: Entry iterator value 0 should be " + elements[i][0]);
- is(entry.value[1], elements[i][1], "IterableDouble: Entry iterator value 1 should be " + elements[i][1]);
- is(entry.value[0], entries[i][0],
- "IterableDouble: Entry iterator value 0 should match destructuring " + i);
- is(entry.value[1], entries[i][1],
- "IterableDouble: Entry iterator value 1 should match destructuring " + i);
- }
-
- callsToForEachCallback = 0;
- thisArg = {};
- itr.forEach(function(value, key, obj) {
- is(key, keys[callsToForEachCallback],
- `IterableDouble: Should have the right key at ${callsToForEachCallback} calls to forEach callback`);
- is(value, values[callsToForEachCallback],
- `IterableDouble: Should have the right value at ${callsToForEachCallback} calls to forEach callback`);
- is(this, thisArg,
- "IterableDouble: Should have the right this value for forEach callback");
- is(obj, itr,
- "IterableSingle: Should have the right third arg for forEach callback");
- ++callsToForEachCallback;
- }, thisArg);
- is(callsToForEachCallback, 3,
- "IterableDouble: Should have right total number of calls to forEach callback");
-
- var key = key_itr.next();
- var value = value_itr.next();
- var entry = entries_itr.next()
- is(key.value, undefined, "IterableDouble: Key iterator value should be undefined");
- is(key.done, true, "IterableDouble: Key iterator done should be true");
- is(value.value, undefined, "IterableDouble: Value iterator value should be undefined");
- is(value.done, true, "IterableDouble: Value iterator done should be true");
- is(entry.value, undefined, "IterableDouble: Entry iterator value should be undefined");
- is(entry.done, true, "IterableDouble: Entry iterator done should be true");
- is(Object.prototype.toString.call(Object.getPrototypeOf(key_itr)),
- "[object TestInterfaceIterableDoubleIteratorPrototype]",
- "iterator prototype should have the right brand");
-
- // Simple dual type iterable creation and functionality test
- info("IterableDoubleUnion: Testing simple iterable creation and functionality");
- itr = new TestInterfaceIterableDoubleUnion();
- testExistence("IterableDoubleUnion: ", itr, base_properties);
- is(itr.entries, itr[Symbol.iterator],
- "IterableDoubleUnion: Should be using @@iterator for 'entries'");
- var elements = [["long", 1], ["string", "a"]]
- var keys = [...itr.keys()];
- var values = [...itr.values()];
- var entries = [...itr.entries()];
- var key_itr = itr.keys();
- var value_itr = itr.values();
- var entries_itr = itr.entries();
- for (var i = 0; i < elements.length; ++i) {
- var key = key_itr.next();
- var value = value_itr.next();
- var entry = entries_itr.next();
- is(key.value, elements[i][0], "IterableDoubleUnion: Key iterator value should be " + elements[i][0]);
- is(key.value, keys[i],
- "IterableDoubleUnion: Key iterator value should match destructuring " + i);
- is(value.value, elements[i][1], "IterableDoubleUnion: Value iterator value should be " + elements[i][1]);
- is(value.value, values[i],
- "IterableDoubleUnion: Value iterator value should match destructuring " + i);
- is(entry.value[0], elements[i][0], "IterableDoubleUnion: Entry iterator value 0 should be " + elements[i][0]);
- is(entry.value[1], elements[i][1], "IterableDoubleUnion: Entry iterator value 1 should be " + elements[i][1]);
- is(entry.value[0], entries[i][0],
- "IterableDoubleUnion: Entry iterator value 0 should match destructuring " + i);
- is(entry.value[1], entries[i][1],
- "IterableDoubleUnion: Entry iterator value 1 should match destructuring " + i);
- }
-
- callsToForEachCallback = 0;
- thisArg = {};
- itr.forEach(function(value, key, obj) {
- is(key, keys[callsToForEachCallback],
- `IterableDoubleUnion: Should have the right key at ${callsToForEachCallback} calls to forEach callback`);
- is(value, values[callsToForEachCallback],
- `IterableDoubleUnion: Should have the right value at ${callsToForEachCallback} calls to forEach callback`);
- is(this, thisArg,
- "IterableDoubleUnion: Should have the right this value for forEach callback");
- is(obj, itr,
- "IterableSingle: Should have the right third arg for forEach callback");
- ++callsToForEachCallback;
- }, thisArg);
- is(callsToForEachCallback, 2,
- "IterableDoubleUnion: Should have right total number of calls to forEach callback");
-
- var key = key_itr.next();
- var value = value_itr.next();
- var entry = entries_itr.next()
- is(key.value, undefined, "IterableDoubleUnion: Key iterator value should be undefined");
- is(key.done, true, "IterableDoubleUnion: Key iterator done should be true");
- is(value.value, undefined, "IterableDoubleUnion: Value iterator value should be undefined");
- is(value.done, true, "IterableDoubleUnion: Value iterator done should be true");
- is(entry.value, undefined, "IterableDoubleUnion: Entry iterator value should be undefined");
- is(entry.done, true, "IterableDoubleUnion: Entry iterator done should be true");
- is(Object.prototype.toString.call(Object.getPrototypeOf(key_itr)),
- "[object TestInterfaceIterableDoubleUnionIteratorPrototype]",
- "iterator prototype should have the right brand");
-
- SimpleTest.finish();
- });
- </script>
- </body>
-</html>
diff --git a/dom/bindings/test/test_jsimplemented_eventhandler.html b/dom/bindings/test/test_jsimplemented_eventhandler.html
deleted file mode 100644
index 2854a3112..000000000
--- a/dom/bindings/test/test_jsimplemented_eventhandler.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1186696
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1186696</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1186696 **/
- SimpleTest.waitForExplicitFinish();
-
- function doTest() {
- var values = [ function() {}, 5, null, undefined, "some string", {} ];
-
- while (values.length != 0) {
- var value = values.pop();
- var t = new TestInterfaceJS();
- t.onsomething = value;
- var gottenValue = t.onsomething;
- if (typeof value == "object" || typeof value == "function") {
- is(gottenValue, value, "Should get back the object-or-null we put in");
- } else {
- is(gottenValue, null, "Should get back null");
- }
- }
-
- SimpleTest.finish();
- }
-
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
- doTest);
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1186696">Mozilla Bug 1186696</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_kill_longrunning_prerendered_content.xul b/dom/bindings/test/test_kill_longrunning_prerendered_content.xul
deleted file mode 100644
index d86b15ad9..000000000
--- a/dom/bindings/test/test_kill_longrunning_prerendered_content.xul
+++ /dev/null
@@ -1,85 +0,0 @@
-<?xml version="1.0"?>
-<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
-<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
-<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:html="http://www.w3.org/1999/xhtml"
- onload="runTest();">
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js"></script>
-
-<script class="testbody" type="application/javascript">
-<![CDATA[
-
- SimpleTest.waitForExplicitFinish();
-
- function Listener(aBrowser, aPrerendered, aCallback) {
- this.init(aBrowser, aPrerendered, aCallback);
- }
-
- Listener.prototype = {
- init: function(aBrowser, aCallback) {
- this.mBrowser = aBrowser;
- this.mCallback = aCallback;
- },
- QueryInterface: function(aIID) {
- if (aIID.equals(Components.interfaces.nsIWebProgressListener) ||
- aIID.equals(Components.interfaces.nsISupportsWeakReference) ||
- aIID.equals(Components.interfaces.nsISupports))
- return this;
- throw Components.results.NS_NOINTERFACE;
- },
- onStateChange : function(aWebProgress, aRequest, aStateFlags, aStatus) {
- if ((aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_STOP) &&
- (aStateFlags & Components.interfaces.nsIWebProgressListener.STATE_IS_DOCUMENT)) {
- setTimeout(this.mCallback, 0);
- }
- },
- onProgressChange : function(aWebProgress, aRequest,
- aCurSelfProgress, aMaxSelfProgress,
- aCurTotalProgress, aMaxTotalProgress) {},
- onLocationChange : function(aWebProgress, aRequest, aLocation, aFlags) {},
- onStatusChange : function(aWebProgress, aRequest, aStatus, aMessage) {},
- onSecurityChange : function(aWebProgress, aRequest, aState) {},
- mBrowser: null,
- mPrerendered: false,
- mCallback: null
- };
-
- var progress, progressListener;
-
- function runTest() {
- SpecialPowers.pushPrefEnv({
- "set": [
- ["dom.max_script_run_time", 1]
- ]
- }, function() {
- test(function() {
- ok("The page is successfully interrupted.");
- SimpleTest.finish();
- });
- });
- }
-
- function test(aCallback) {
- var browser = document.getElementById("prerendered");;
- progressListener = new Listener(browser, aCallback);
- var docShell = browser.docShell;
- progress = docShell.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
- .getInterface(Components.interfaces.nsIWebProgress);
- progress.addProgressListener(progressListener,
- Components.interfaces.nsIWebProgress.NOTIFY_ALL);
- browser.loadURI("data:text/html,<script>;for(;;);</script" + ">");
- }
-
-]]>
-</script>
-
-<body id="html_body" xmlns="http://www.w3.org/1999/xhtml">
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1050456">Mozilla Bug 1050456</a>
-<p id="display"></p>
-
-<pre id="test">
-</pre>
-</body>
-<browser prerendered="true" id="prerendered"/>
-</window>
diff --git a/dom/bindings/test/test_lenientThis.html b/dom/bindings/test/test_lenientThis.html
deleted file mode 100644
index cfbdcebcd..000000000
--- a/dom/bindings/test/test_lenientThis.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!doctype html>
-<meta charset=utf-8>
-<title>[LenientThis]</title>
-<script src=/resources/testharness.js></script>
-<script src=/resources/testharnessreport.js></script>
-<div id=log></div>
-<script>
-function noop1() { }
-function noop2() { }
-
-test(function() {
- var desc = Object.getOwnPropertyDescriptor(Document.prototype, "onreadystatechange");
-
- document.onreadystatechange = noop1;
- assert_equals(document.onreadystatechange, noop1, "document.onreadystatechange == noop1");
- assert_equals(desc.get.call({ }), undefined, "document.onreadystatechange getter.call({}) == undefined");
-}, "invoking Document.onreadystatechange's getter with an invalid this object returns undefined");
-
-test(function() {
- var desc = Object.getOwnPropertyDescriptor(Document.prototype, "onreadystatechange");
-
- document.onreadystatechange = noop1;
- assert_equals(document.onreadystatechange, noop1, "document.onreadystatechange == noop1");
- assert_equals(desc.set.call({ }, noop2), undefined, "document.onreadystatechange setter.call({}) == undefined");
- assert_equals(document.onreadystatechange, noop1, "document.onreadystatechange == noop1 (still)");
-}, "invoking Document.onreadystatechange's setter with an invalid this object does nothing and returns undefined");
-</script>
diff --git a/dom/bindings/test/test_lookupGetter.html b/dom/bindings/test/test_lookupGetter.html
deleted file mode 100644
index 306ee4f64..000000000
--- a/dom/bindings/test/test_lookupGetter.html
+++ /dev/null
@@ -1,49 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=462428
--->
-<head>
- <title>Test for Bug 462428</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=462428">Mozilla Bug 462428</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 462428 **/
-var x = new XMLHttpRequest;
-x.open("GET", "");
-var getter = x.__lookupGetter__('readyState');
-ok(getter !== undefined, "But able to look it up the normal way");
-ok(!x.hasOwnProperty('readyState'), "property should still be on the prototype");
-
-var sawProp = false;
-for (var i in x) {
- if (i === "readyState") {
- sawProp = true;
- }
-}
-
-ok(sawProp, "property should be enumerable");
-
-is(getter.call(x), 1, "the getter actually works");
-
-Object.getPrototypeOf(x).__defineSetter__('readyState', function() {});
-is(getter.call(x), 1, "the getter works after defineSetter");
-
-is(x.responseType, "", "Should have correct responseType up front");
-var setter = x.__lookupSetter__('responseType');
-setter.call(x, "document");
-is(x.responseType, "document", "the setter is bound correctly");
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_namedNoIndexed.html b/dom/bindings/test/test_namedNoIndexed.html
deleted file mode 100644
index 205ec89f9..000000000
--- a/dom/bindings/test/test_namedNoIndexed.html
+++ /dev/null
@@ -1,36 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=808991
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 808991</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=808991">Mozilla Bug 808991</a>
-<p id="display"></p>
-<div id="content" style="display: none" data-1="foo" data-bar="baz">
-
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 808991 **/
-is($("content").dataset[1], "foo",
- "Indexed props should work like named on dataset");
-is($("content").dataset["1"], "foo",
- "Indexed props as strings should work like named on dataset");
-is($("content").dataset.bar, "baz",
- "Named props should work on dataset");
-is($("content").dataset['bar'], "baz",
- "Named props as strings should work on dataset");
-
-
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_named_getter_enumerability.html b/dom/bindings/test/test_named_getter_enumerability.html
deleted file mode 100644
index 641f78ab2..000000000
--- a/dom/bindings/test/test_named_getter_enumerability.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Test for named getter enumerability</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<script>
-test(function() {
- var list = document.getElementsByTagName("div");
- var desc = Object.getOwnPropertyDescriptor(list, "0");
- assert_equals(typeof desc, "object", "Should have a '0' property");
- assert_true(desc.enumerable, "'0' property should be enumerable");
- desc = Object.getOwnPropertyDescriptor(list, "log");
- assert_equals(typeof desc, "object", "Should have a 'log' property");
- assert_false(desc.enumerable, "'log' property should not be enumerable");
-}, "Correct getOwnPropertyDescriptor behavior");
-test(function() {
- var list = document.getElementsByTagName("div");
- props = [];
- for (var prop in list) {
- props.push(prop);
- }
- assert_not_equals(props.indexOf("0"), -1, "Should enumerate '0'");
- assert_equals(props.indexOf("log"), -1, "Should not enumerate 'log'");
-}, "Correct enumeration behavior");
-test(function() {
- var list = document.getElementsByTagName("div");
- props = Object.keys(list)
- assert_not_equals(props.indexOf("0"), -1, "Keys should contain '0'");
- assert_equals(props.indexOf("log"), -1, "Keys should not contain 'log'");
-}, "Correct keys() behavior");
-test(function() {
- var list = document.getElementsByTagName("div");
- props = Object.getOwnPropertyNames(list)
- assert_not_equals(props.indexOf("0"), -1,
- "own prop names should contain '0'");
- assert_not_equals(props.indexOf("log"), -1,
- "own prop names should contain 'log'");
-}, "Correct getOwnPropertyNames() behavior");
-</script>
diff --git a/dom/bindings/test/test_oom_reporting.html b/dom/bindings/test/test_oom_reporting.html
deleted file mode 100644
index 7323736e5..000000000
--- a/dom/bindings/test/test_oom_reporting.html
+++ /dev/null
@@ -1,42 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug </title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug **/
- SimpleTest.waitForExplicitFinish();
-
- SimpleTest.expectUncaughtException();
- setTimeout(function() {
- SpecialPowers.Cu.getJSTestingFunctions().throwOutOfMemory();
- }, 0);
-
- addEventListener("error", function(e) {
- is(e.type, "error", "Should have an error event");
- is(e.message, "uncaught exception: out of memory",
- "Should have the right error message");
- // Make sure we finish async, in case the expectUncaughtException assertion
- // about having seen the exception runs after our listener
- SimpleTest.executeSoon(SimpleTest.finish);
- });
-
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=">Mozilla Bug </a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_primitive_this.html b/dom/bindings/test/test_primitive_this.html
deleted file mode 100644
index d2b733dff..000000000
--- a/dom/bindings/test/test_primitive_this.html
+++ /dev/null
@@ -1,45 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=603201
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 603201</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 603201 **/
-
- SimpleTest.waitForExplicitFinish();
- function runTest()
- {
- var nodes = document.body.childNodes;
-
- Object.setPrototypeOf(Number.prototype, nodes);
-
- Object.defineProperty(nodes, "getter", {get: function() {
- "use strict";
- is(this, 1);
- return "getter";
- }});
- Object.defineProperty(Object.getPrototypeOf(nodes), "getter2", {get: function() {
- "use strict";
- is(this, 1);
- return "getter2";
- }});
-
- var number = 1;
- is(number.getter, "getter");
- is(number.getter2, "getter2");
-
- SimpleTest.finish();
- }
-
- </script>
-</head>
-<body onload="runTest();">
-<pre>Test</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_promise_rejections_from_jsimplemented.html b/dom/bindings/test/test_promise_rejections_from_jsimplemented.html
deleted file mode 100644
index 68de079ed..000000000
--- a/dom/bindings/test/test_promise_rejections_from_jsimplemented.html
+++ /dev/null
@@ -1,143 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1107592
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1107592</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1107592 **/
-
- SimpleTest.waitForExplicitFinish();
-
- function checkExn(lineNumber, name, message, code, filename, testNumber, stack, exn) {
- is(exn.lineNumber, lineNumber,
- "Should have the right line number in test " + testNumber);
- is(exn.name, name,
- "Should have the right exception name in test " + testNumber);
- is("filename" in exn ? exn.filename : exn.fileName, filename,
- "Should have the right file name in test " + testNumber);
- is(exn.message, message,
- "Should have the right message in test " + testNumber);
- is(exn.code, code, "Should have the right .code in test " + testNumber);
- if (message === "") {
- is(exn.name, "InternalError",
- "Should have one of our synthetic exceptions in test " + testNumber);
- }
- is(exn.stack, stack, "Should have the right stack in test " + testNumber);
- }
-
- function ensurePromiseFail(testNumber, value) {
- ok(false, "Test " + testNumber + " should not have a fulfilled promise");
- }
-
- function doTest() {
- var t = new TestInterfaceJS();
- /* Async parent frames from pushPrefEnv don't show up in e10s. */
- var isE10S = !SpecialPowers.isMainProcess();
- var asyncStack = SpecialPowers.getBoolPref("javascript.options.asyncstack");
- var ourFile = location.href;
- var unwrapError = "Promise rejection value is a non-unwrappable cross-compartment wrapper.";
- var parentFrame = (asyncStack && !isE10S) ? `Async*@${ourFile}:130:3
-` : "";
-
- Promise.all([
- t.testPromiseWithThrowingChromePromiseInit().then(
- ensurePromiseFail.bind(null, 1),
- checkExn.bind(null, 49, "InternalError", unwrapError,
- undefined, ourFile, 1,
- `doTest@${ourFile}:49:7
-` +
- parentFrame)),
- t.testPromiseWithThrowingContentPromiseInit(function() {
- thereIsNoSuchContentFunction1();
- }).then(
- ensurePromiseFail.bind(null, 2),
- checkExn.bind(null, 57, "ReferenceError",
- "thereIsNoSuchContentFunction1 is not defined",
- undefined, ourFile, 2,
- `doTest/<@${ourFile}:57:11
-doTest@${ourFile}:56:7
-` +
- parentFrame)),
- t.testPromiseWithThrowingChromeThenFunction().then(
- ensurePromiseFail.bind(null, 3),
- checkExn.bind(null, 0, "InternalError", unwrapError, undefined, "", 3, asyncStack ? (`Async*doTest@${ourFile}:67:7
-` +
- parentFrame) : "")),
- t.testPromiseWithThrowingContentThenFunction(function() {
- thereIsNoSuchContentFunction2();
- }).then(
- ensurePromiseFail.bind(null, 4),
- checkExn.bind(null, 73, "ReferenceError",
- "thereIsNoSuchContentFunction2 is not defined",
- undefined, ourFile, 4,
- `doTest/<@${ourFile}:73:11
-` +
- (asyncStack ? `Async*doTest@${ourFile}:72:7
-` : "") +
- parentFrame)),
- t.testPromiseWithThrowingChromeThenable().then(
- ensurePromiseFail.bind(null, 5),
- checkExn.bind(null, 0, "InternalError", unwrapError, undefined, "", 5, asyncStack ? (`Async*doTest@${ourFile}:84:7
-` +
- parentFrame) : "")),
- t.testPromiseWithThrowingContentThenable({
- then: function() { thereIsNoSuchContentFunction3(); }
- }).then(
- ensurePromiseFail.bind(null, 6),
- checkExn.bind(null, 90, "ReferenceError",
- "thereIsNoSuchContentFunction3 is not defined",
- undefined, ourFile, 6,
- `then@${ourFile}:90:32
-` + (asyncStack ? `Async*doTest@${ourFile}:89:7\n` + parentFrame : ""))),
- t.testPromiseWithDOMExceptionThrowingPromiseInit().then(
- ensurePromiseFail.bind(null, 7),
- checkExn.bind(null, 98, "NotFoundError",
- "We are a second DOMException",
- DOMException.NOT_FOUND_ERR, ourFile, 7,
- `doTest@${ourFile}:98:7
-` +
- parentFrame)),
- t.testPromiseWithDOMExceptionThrowingThenFunction().then(
- ensurePromiseFail.bind(null, 8),
- checkExn.bind(null, asyncStack ? 106 : 0, "NetworkError",
- "We are a third DOMException",
- DOMException.NETWORK_ERR, asyncStack ? ourFile : "", 8,
- (asyncStack ? `Async*doTest@${ourFile}:106:7
-` +
- parentFrame : ""))),
- t.testPromiseWithDOMExceptionThrowingThenable().then(
- ensurePromiseFail.bind(null, 9),
- checkExn.bind(null, asyncStack ? 114 : 0, "TypeMismatchError",
- "We are a fourth DOMException",
- DOMException.TYPE_MISMATCH_ERR,
- asyncStack ? ourFile : "", 9,
- (asyncStack ? `Async*doTest@${ourFile}:114:7
-` +
- parentFrame : ""))),
- ]).then(SimpleTest.finish,
- function(err) {
- ok(false, "One of our catch statements totally failed with err" + err + ', stack: ' + (err ? err.stack : ''));
- SimpleTest.finish();
- });
- }
-
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
- doTest);
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107592">Mozilla Bug 1107592</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_proxies_via_xray.html b/dom/bindings/test/test_proxies_via_xray.html
deleted file mode 100644
index 59affe6c0..000000000
--- a/dom/bindings/test/test_proxies_via_xray.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1021066
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1021066</title>
- <script type="application/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1021066">Mozilla Bug 1021066</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<iframe id="t" src="http://example.org/tests/dom/bindings/test/file_proxies_via_xray.html"></iframe>
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 1021066 **/
-
-function test()
-{
- "use strict"; // So we'll get exceptions on sets
- var doc = document.getElementById("t").contentWindow.document;
- ok(!("x" in doc), "Should have an Xray here");
- is(doc.x, undefined, "Really should have an Xray here");
- is(doc.wrappedJSObject.x, 5, "And wrapping the right thing");
-
- // Test overridebuiltins binding without named setter
- is(doc.y, doc.getElementById("y"),
- "Named getter should work on Document");
- try {
- doc.z = 5;
- ok(false, "Should have thrown on set of readonly property on Document");
- } catch (e) {
- ok(/read-only/.test(e.message),
- "Threw the right exception on set of readonly property on Document");
- }
-
- doc.w = 5;
- is(doc.w, 5, "Should be able to set things that are not named props");
-
- // Test non-overridebuiltins binding without named setter
- var l = doc.getElementsByTagName("img");
- is(l.y, doc.getElementById("y"),
- "Named getter should work on HTMLCollection");
- try {
- l.z = 5;
- ok(false, "Should have thrown on set of readonly property on HTMLCollection");
- } catch (e) {
- ok(/read-only/.test(e.message),
- "Should throw the right exception on set of readonly property on HTMLCollection");
- }
- try {
- l[10] = 5;
- ok(false, "Should have thrown on set of indexed property on HTMLCollection");
- } catch (e) {
- ok(/doesn't have an indexed property setter/.test(e.message),
- "Should throw the right exception on set of indexed property on HTMLCollection");
- }
-
- // Test overridebuiltins binding with named setter
- var d = doc.documentElement.dataset;
- d.foo = "bar";
- // Check that this actually got passed on to the underlying object.
- is(d.wrappedJSObject.foo, "bar",
- "Set should get forwarded to the underlying object");
- is(doc.documentElement.getAttribute("data-foo"), "bar",
- "Attribute setter should have been called");
- d.foo = "baz";
- // Check that this actually got passed on to the underlying object.
- is(d.wrappedJSObject.foo, "baz",
- "Set should get forwarded to the underlying object again");
- is(doc.documentElement.getAttribute("data-foo"), "baz",
- "Attribute setter should have been called again");
-
- // Test non-overridebuiltins binding with named setter
- var s = doc.defaultView.localStorage;
- s["test_proxies_via_xray"] = "bar";
- // Check that this actually got passed on to the underlying object.
- is(s.wrappedJSObject["test_proxies_via_xray"], "bar",
- "Set should get forwarded to the underlying object without overridebuiltins");
- s["test_proxies_via_xray"] = "baz";
- // Check that this actually got passed on to the underlying object.
- is(s.wrappedJSObject["test_proxies_via_xray"], "baz",
- "Set should get forwarded to the underlying object again without overridebuiltins");
-
- SimpleTest.finish();
-}
-
-SimpleTest.waitForExplicitFinish();
-addLoadEvent(test);
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_queryInterface.html b/dom/bindings/test/test_queryInterface.html
deleted file mode 100644
index 076bf9e7d..000000000
--- a/dom/bindings/test/test_queryInterface.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=827546
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 827546</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 827546 **/
-
- var notEditable = document.createElement("div");
- var thrown;
- try {
- thrown = false;
- SpecialPowers.do_QueryInterface(notEditable, "nsIDOMNSEditableElement");
- } catch (e) {
- thrown = true;
- }
- ok(thrown,
- "QI to nsIDOMNSEditableElement on a non-editable element should fail");
-
- var editable = document.createElement("input");
- ok(SpecialPowers.do_QueryInterface(editable, "nsIDOMNSEditableElement"),
- "Editable element needs to support QI to nsIDOMNSEditableElement");
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=827546">Mozilla Bug 827546</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_returnUnion.html b/dom/bindings/test/test_returnUnion.html
deleted file mode 100644
index 5be10ba3c..000000000
--- a/dom/bindings/test/test_returnUnion.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1048659
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1048659</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for returning unions from JS-implemented WebIDL. **/
- SimpleTest.waitForExplicitFinish();
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, go);
-
- function go() {
- var t = new TestInterfaceJS();
- var t2 = new TestInterfaceJS();
-
- is(t.pingPongUnion(t2), t2, "ping pong union for left case should be identity");
- is(t.pingPongUnion(12), 12, "ping pong union for right case should be identity");
-
- is(t.pingPongUnionContainingNull("this is not a string"), "this is not a string",
- "ping pong union containing union for left case should be identity");
- is(t.pingPongUnionContainingNull(null), null,
- "ping pong union containing null for right case null should be identity");
- is(t.pingPongUnionContainingNull(t2), t2,
- "ping pong union containing null for right case should be identity");
-
- is(t.pingPongNullableUnion(t2), t2, "ping pong nullable union for left case should be identity");
- is(t.pingPongNullableUnion(12), 12, "ping pong nullable union for right case should be identity");
- is(t.pingPongNullableUnion(null), null, "ping pong nullable union for null case should be identity");
-
- var rejectedBadUnion = false;
- var result = null;
- try {
- result = t.returnBadUnion();
- } catch (e) {
- rejectedBadUnion = true;
- }
- is(result, null, "bad union should not set a value for result");
- ok(rejectedBadUnion, "bad union should throw an exception");
-
- SimpleTest.finish();
- }
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1048659">Mozilla Bug 1048659</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_sequence_detection.html b/dom/bindings/test/test_sequence_detection.html
deleted file mode 100644
index 80dfac4db..000000000
--- a/dom/bindings/test/test_sequence_detection.html
+++ /dev/null
@@ -1,53 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1066432
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1066432</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1066432 **/
- SimpleTest.waitForExplicitFinish();
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
- var testInterfaceJS = new TestInterfaceJS();
- ok(testInterfaceJS, "got a TestInterfaceJS object");
-
- var nonIterableObject = {[Symbol.iterator]: 5};
-
- try {
- testInterfaceJS.testSequenceOverload(nonIterableObject);
- ok(false, "Should have thrown in the overload case"); // see long comment above!
- } catch (e) {
- is(e.name, "TypeError", "Should get a TypeError for the overload case");
- ok(e.message.includes("not iterable"),
- "Should have a message about being non-iterable in the overload case");
- }
-
- try {
- testInterfaceJS.testSequenceUnion(nonIterableObject);
- ok(false, "Should have thrown in the union case");
- } catch (e) {
- is(e.name, "TypeError", "Should get a TypeError for the union case");
- ok(e.message.includes("not iterable"),
- "Should have a message about being non-iterable in the union case");
- }
-
- SimpleTest.finish();
- });
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1066432">Mozilla Bug 1066432</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_sequence_wrapping.html b/dom/bindings/test/test_sequence_wrapping.html
deleted file mode 100644
index 7132e5601..000000000
--- a/dom/bindings/test/test_sequence_wrapping.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=775852
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 775852</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=775852">Mozilla Bug 775852</a>
-<p id="display"></p>
-<div id="content" style="display: none">
- <canvas width="1" height="1" id="c"></canvas>
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 775852 **/
-function doTest() {
- var gl = $("c").getContext("experimental-webgl");
- if (!gl) {
- // No WebGL support on MacOS 10.5. Just skip this test
- todo(false, "WebGL not supported");
- return;
- }
- var setterCalled = false;
-
- extLength = gl.getSupportedExtensions().length;
- ok(extLength > 0,
- "This test won't work right if we have no supported extensions");
-
- Object.defineProperty(Array.prototype, "0",
- {
- set: function(val) {
- setterCalled = true;
- }
- });
-
- // Test that our property got defined correctly
- var arr = []
- arr[0] = 5;
- is(setterCalled, true, "Setter should be called when setting prop on array");
-
- setterCalled = false;
-
- is(gl.getSupportedExtensions().length, extLength,
- "We should still have the same number of extensions");
-
- is(setterCalled, false,
- "Setter should not be called when getting supported extensions");
-}
-doTest();
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_setWithNamedGetterNoNamedSetter.html b/dom/bindings/test/test_setWithNamedGetterNoNamedSetter.html
deleted file mode 100644
index 52f56151d..000000000
--- a/dom/bindings/test/test_setWithNamedGetterNoNamedSetter.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1043690
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1043690</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1043690">Mozilla Bug 1043690</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<form>
- <input name="action">
-</form>
-</div>
- <script type="application/javascript">
-
- /** Test for Bug 1043690 **/
- var f = document.querySelector("form");
- var i = document.querySelector("input");
- is(f.getAttribute("action"), null, "Should have no action attribute");
- is(f.action, i, "form.action should be the input");
- f.action = "http://example.org";
- is(f.getAttribute("action"), "http://example.org",
- "Should have an action attribute now");
- is(f.action, i, "form.action should still be the input");
- i.remove();
- is(f.action, "http://example.org/",
- "form.action should no longer be shadowed");
-
-
- </script>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_stringBindings.html b/dom/bindings/test/test_stringBindings.html
deleted file mode 100644
index 1895b0342..000000000
--- a/dom/bindings/test/test_stringBindings.html
+++ /dev/null
@@ -1,59 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1334537
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1334537</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1334537 **/
- SimpleTest.waitForExplicitFinish();
-
- function go() {
- // Need a new global that will pick up our pref.
- var ifr = document.createElement("iframe");
- document.body.appendChild(ifr);
-
- var t = new ifr.contentWindow.TestFunctions();
- var testString = "abcdefghijklmnopqrstuvwxyz";
- const substringLength = 10;
- var shortTestString = testString.substring(0, substringLength);
-
- t.setStringData(testString);
- // Note: we want to do all our gets before we start running code we don't
- // control inside the test harness, if we really want to exercise the string
- // cache in controlled ways.
-
- var asShortDOMString = t.getStringDataAsDOMString(substringLength);
- var asFullDOMString = t.getStringDataAsDOMString();
- var asShortAString = t.getStringDataAsAString(substringLength);
- var asAString = t.getStringDataAsAString();
-
- is(asShortAString, shortTestString, "Short DOMString should be short");
- is(asFullDOMString, testString, "Full DOMString should be test string");
- is(asShortAString, shortTestString, "Short AString should be short");
- is(asAString, testString, "Full AString should be test string");
-
- SimpleTest.finish();
- }
-
- addLoadEvent(function() {
- SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]},
- go);
- });
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1334537">Mozilla Bug 1334537</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_throwing_method_noDCE.html b/dom/bindings/test/test_throwing_method_noDCE.html
deleted file mode 100644
index e952819a8..000000000
--- a/dom/bindings/test/test_throwing_method_noDCE.html
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Test that we don't DCE functions that can throw</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<script>
-test(function() {
- function test(root) {
- var threw = false;
- try {
- root.querySelectorAll("");
- } catch(e){ threw = true; };
- // Hot loop to make sure the JIT heuristics ion-compile this function even
- // though it's throwing exceptions (which would normally make us back off
- // of ion compilation).
- for (var i=0; i<1500; i++) {}
- return threw;
- }
-
- var threw = false;
- var el = document.createElement("div");
- for (var i=0; i<200; i++)
- threw = test(el);
- assert_true(threw);
-}, "Shouldn't optimize away throwing functions");
-</script>
diff --git a/dom/bindings/test/test_traceProtos.html b/dom/bindings/test/test_traceProtos.html
deleted file mode 100644
index 17a5cb96d..000000000
--- a/dom/bindings/test/test_traceProtos.html
+++ /dev/null
@@ -1,37 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=744772
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 744772</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=744772">Mozilla Bug 744772</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-<script type="application/javascript">
-
-/** Test for Bug 744772 **/
-
-SimpleTest.waitForExplicitFinish();
-
-function callback() {
- new XMLHttpRequest().upload;
- ok(true, "Accessing unreferenced DOM interface objects shouldn't crash");
- SimpleTest.finish();
-}
-
-delete window.XMLHttpRequestUpload;
-SpecialPowers.exactGC(callback);
-
-</script>
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_treat_non_object_as_null.html b/dom/bindings/test/test_treat_non_object_as_null.html
deleted file mode 100644
index fbb6ceb66..000000000
--- a/dom/bindings/test/test_treat_non_object_as_null.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=952365
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 952365</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 952365 **/
-
- var onvolumechange;
- var x = {};
-
- (function() {
- onvolumechange = x;
- is(onvolumechange, x,
- "Should preserve an object value when assigning to event handler");
- // Test that we don't try to actually call the non-callable object
- window.dispatchEvent(new Event("volumechange"));
- onvolumechange = 5;
- is(onvolumechange, null,
- "Non-object values should become null when assigning to event handler");
- })();
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=952365">Mozilla Bug 952365</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/bindings/test/test_unforgeablesonexpando.html b/dom/bindings/test/test_unforgeablesonexpando.html
deleted file mode 100644
index 419e6ac7d..000000000
--- a/dom/bindings/test/test_unforgeablesonexpando.html
+++ /dev/null
@@ -1,18 +0,0 @@
-<!DOCTYPE html>
-<meta charset=utf-8>
-<title>Test for making sure named getters don't override the unforgeable location on HTMLDocument</title>
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-<div id="log"></div>
-<img name="location">
-<script>
-test(function() {
- assert_equals(document.location, window.location,
- 'The <img name="location"> should not override the location getter');
-}, "document.location is the right thing");
-test(function() {
- var doc = new DOMParser().parseFromString("<img name='location'>", "text/html");
- assert_equals(doc.location, null,
- 'The <img name="location"> should not override the location getter on a data document');
-}, "document.location is the right thing on non-rendered document");
-</script>
diff --git a/dom/bindings/test/test_usvstring.html b/dom/bindings/test/test_usvstring.html
deleted file mode 100644
index cbb1e7971..000000000
--- a/dom/bindings/test/test_usvstring.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!-- Any copyright is dedicated to the Public Domain.
- - http://creativecommons.org/publicdomain/zero/1.0/ -->
-<!DOCTYPE HTML>
-<html>
-<head>
- <title>Test USVString</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<script class="testbody" type="application/javascript">
-SimpleTest.waitForExplicitFinish();
-SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
- var testInterfaceJS = new TestInterfaceJS();
- ok(testInterfaceJS, "got a TestInterfaceJS object");
- // For expected values, see algorithm definition here:
- // http://heycam.github.io/webidl/#dfn-obtain-unicode
- var testList = [
- { string: "foo",
- expected: "foo" },
- { string: "This is U+2070E: \ud841\udf0e",
- expected: "This is U+2070E: \ud841\udf0e" },
- { string: "Missing low surrogate: \ud841",
- expected: "Missing low surrogate: \ufffd" },
- { string: "Missing low surrogate with trailer: \ud841!!",
- expected: "Missing low surrogate with trailer: \ufffd!!" },
- { string: "Missing high surrogate: \udf0e",
- expected: "Missing high surrogate: \ufffd" },
- { string: "Missing high surrogate with trailer: \udf0e!!",
- expected: "Missing high surrogate with trailer: \ufffd!!" },
- { string: "U+2070E after malformed: \udf0e\ud841\udf0e",
- expected: "U+2070E after malformed: \ufffd\ud841\udf0e" }
- ];
- testList.forEach(function(test) {
- is(testInterfaceJS.convertSVS(test.string), test.expected, "Convert '" + test.string + "'");
- });
- SimpleTest.finish();
-});
-</script>
-</body>
-</html>
diff --git a/dom/bindings/test/test_worker_UnwrapArg.html b/dom/bindings/test/test_worker_UnwrapArg.html
deleted file mode 100644
index 1331a83f4..000000000
--- a/dom/bindings/test/test_worker_UnwrapArg.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1127206
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1127206</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1127206 **/
- SimpleTest.waitForExplicitFinish();
- var blob = new Blob([
- `try { new File({}); }
- catch (e) {
- postMessage("throwing on random object");
- }
- try { new File(new Blob(["abc"])); }
- catch (e) {
- postMessage("throwing on Blob");
- }
- try { new File("abc"); }
- catch (e) {
- postMessage("throwing on string");
- }
- postMessage('finishTest')`]);
- var url = URL.createObjectURL(blob);
- var w = new Worker(url);
- var expectedResults = [
- "throwing on random object",
- "throwing on Blob",
- "throwing on string",
- ];
- var curIndex = 0;
- w.onmessage = function(e) {
- if (curIndex == expectedResults.length) {
- is(e.data, "finishTest", "What message is this?");
- SimpleTest.finish();
- } else {
- is(e.data, expectedResults[curIndex],
- "Message " + (curIndex+1) + " should be correct");
- ++curIndex;
- }
- }
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1127206">Mozilla Bug 1127206</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/broadcastchannel/BroadcastChannel.cpp b/dom/broadcastchannel/BroadcastChannel.cpp
index d154b6562..d8f7b8111 100644
--- a/dom/broadcastchannel/BroadcastChannel.cpp
+++ b/dom/broadcastchannel/BroadcastChannel.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/broadcastchannel/BroadcastChannel.h b/dom/broadcastchannel/BroadcastChannel.h
index d7d46eeec..bdc1a991f 100644
--- a/dom/broadcastchannel/BroadcastChannel.h
+++ b/dom/broadcastchannel/BroadcastChannel.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/broadcastchannel/BroadcastChannelChild.cpp b/dom/broadcastchannel/BroadcastChannelChild.cpp
index 98bd21999..5ea19c758 100644
--- a/dom/broadcastchannel/BroadcastChannelChild.cpp
+++ b/dom/broadcastchannel/BroadcastChannelChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/broadcastchannel/BroadcastChannelChild.h b/dom/broadcastchannel/BroadcastChannelChild.h
index 23cef899e..08cba3535 100644
--- a/dom/broadcastchannel/BroadcastChannelChild.h
+++ b/dom/broadcastchannel/BroadcastChannelChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/broadcastchannel/BroadcastChannelParent.cpp b/dom/broadcastchannel/BroadcastChannelParent.cpp
index f26292e1d..4cbe1ccbc 100644
--- a/dom/broadcastchannel/BroadcastChannelParent.cpp
+++ b/dom/broadcastchannel/BroadcastChannelParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/broadcastchannel/BroadcastChannelParent.h b/dom/broadcastchannel/BroadcastChannelParent.h
index e71354ca7..deeb46ecb 100644
--- a/dom/broadcastchannel/BroadcastChannelParent.h
+++ b/dom/broadcastchannel/BroadcastChannelParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/broadcastchannel/BroadcastChannelService.cpp b/dom/broadcastchannel/BroadcastChannelService.cpp
index f88108c3a..8cd000c69 100644
--- a/dom/broadcastchannel/BroadcastChannelService.cpp
+++ b/dom/broadcastchannel/BroadcastChannelService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/broadcastchannel/BroadcastChannelService.h b/dom/broadcastchannel/BroadcastChannelService.h
index 3934a7ebf..8765a4d97 100644
--- a/dom/broadcastchannel/BroadcastChannelService.h
+++ b/dom/broadcastchannel/BroadcastChannelService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/broadcastchannel/moz.build b/dom/broadcastchannel/moz.build
index c9d687cbc..20da44b40 100644
--- a/dom/broadcastchannel/moz.build
+++ b/dom/broadcastchannel/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/browser-element/BrowserElementCopyPaste.js b/dom/browser-element/BrowserElementCopyPaste.js
index 7aa7c5148..ffb114f84 100644
--- a/dom/browser-element/BrowserElementCopyPaste.js
+++ b/dom/browser-element/BrowserElementCopyPaste.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- /
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
/* 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/. */
diff --git a/dom/browser-element/BrowserElementParent.cpp b/dom/browser-element/BrowserElementParent.cpp
index fda9348fd..46ceb0a3e 100644
--- a/dom/browser-element/BrowserElementParent.cpp
+++ b/dom/browser-element/BrowserElementParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/browser-element/BrowserElementParent.h b/dom/browser-element/BrowserElementParent.h
index 428884f97..538bc4674 100644
--- a/dom/browser-element/BrowserElementParent.h
+++ b/dom/browser-element/BrowserElementParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/browser-element/BrowserElementPromptService.jsm b/dom/browser-element/BrowserElementPromptService.jsm
index 1442304db..099cf1c99 100644
--- a/dom/browser-element/BrowserElementPromptService.jsm
+++ b/dom/browser-element/BrowserElementPromptService.jsm
@@ -1,7 +1,6 @@
/* 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/. */
-/* vim: set ft=javascript : */
"use strict";
diff --git a/dom/browser-element/moz.build b/dom/browser-element/moz.build
index 0b00a2e06..8a192a505 100644
--- a/dom/browser-element/moz.build
+++ b/dom/browser-element/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/browser-element/nsIBrowserElementAPI.idl b/dom/browser-element/nsIBrowserElementAPI.idl
index 0833d53b0..ff710a357 100644
--- a/dom/browser-element/nsIBrowserElementAPI.idl
+++ b/dom/browser-element/nsIBrowserElementAPI.idl
@@ -1,5 +1,4 @@
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Action.cpp b/dom/cache/Action.cpp
index a71f8f8df..3ba6bfa20 100644
--- a/dom/cache/Action.cpp
+++ b/dom/cache/Action.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Action.h b/dom/cache/Action.h
index da6b3fd49..53477f7e1 100644
--- a/dom/cache/Action.h
+++ b/dom/cache/Action.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/ActorChild.cpp b/dom/cache/ActorChild.cpp
index d3bd0553c..95a811c8e 100644
--- a/dom/cache/ActorChild.cpp
+++ b/dom/cache/ActorChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/ActorChild.h b/dom/cache/ActorChild.h
index b56397e58..f2e227c16 100644
--- a/dom/cache/ActorChild.h
+++ b/dom/cache/ActorChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/ActorUtils.h b/dom/cache/ActorUtils.h
index 7528821c9..ee58b676a 100644
--- a/dom/cache/ActorUtils.h
+++ b/dom/cache/ActorUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/AutoUtils.cpp b/dom/cache/AutoUtils.cpp
index c64b47f7a..d1f354336 100644
--- a/dom/cache/AutoUtils.cpp
+++ b/dom/cache/AutoUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/AutoUtils.h b/dom/cache/AutoUtils.h
index 595a48c78..244639f7c 100644
--- a/dom/cache/AutoUtils.h
+++ b/dom/cache/AutoUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Cache.cpp b/dom/cache/Cache.cpp
index b183bf387..60e4f76b9 100644
--- a/dom/cache/Cache.cpp
+++ b/dom/cache/Cache.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Cache.h b/dom/cache/Cache.h
index ba11cda52..04f891dca 100644
--- a/dom/cache/Cache.h
+++ b/dom/cache/Cache.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheChild.cpp b/dom/cache/CacheChild.cpp
index 58902552f..efbf4bc7b 100644
--- a/dom/cache/CacheChild.cpp
+++ b/dom/cache/CacheChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheChild.h b/dom/cache/CacheChild.h
index 8888007b0..ed9f66d23 100644
--- a/dom/cache/CacheChild.h
+++ b/dom/cache/CacheChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheOpChild.cpp b/dom/cache/CacheOpChild.cpp
index fecac8307..492c205ff 100644
--- a/dom/cache/CacheOpChild.cpp
+++ b/dom/cache/CacheOpChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheOpChild.h b/dom/cache/CacheOpChild.h
index 4beeb3376..50e13041b 100644
--- a/dom/cache/CacheOpChild.h
+++ b/dom/cache/CacheOpChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheOpParent.cpp b/dom/cache/CacheOpParent.cpp
index 37fcbc0f3..fb46ccac7 100644
--- a/dom/cache/CacheOpParent.cpp
+++ b/dom/cache/CacheOpParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheOpParent.h b/dom/cache/CacheOpParent.h
index 6e53d4a22..68b2a5760 100644
--- a/dom/cache/CacheOpParent.h
+++ b/dom/cache/CacheOpParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheParent.cpp b/dom/cache/CacheParent.cpp
index 05f6c4975..f238c1900 100644
--- a/dom/cache/CacheParent.cpp
+++ b/dom/cache/CacheParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheParent.h b/dom/cache/CacheParent.h
index 3a8a542da..e6ca747ff 100644
--- a/dom/cache/CacheParent.h
+++ b/dom/cache/CacheParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStorage.cpp b/dom/cache/CacheStorage.cpp
index a0f486445..2dae0b157 100644
--- a/dom/cache/CacheStorage.cpp
+++ b/dom/cache/CacheStorage.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStorage.h b/dom/cache/CacheStorage.h
index 10310f668..04a2fa0dd 100644
--- a/dom/cache/CacheStorage.h
+++ b/dom/cache/CacheStorage.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStorageChild.cpp b/dom/cache/CacheStorageChild.cpp
index aa8bb7b90..975533f55 100644
--- a/dom/cache/CacheStorageChild.cpp
+++ b/dom/cache/CacheStorageChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStorageChild.h b/dom/cache/CacheStorageChild.h
index 71ab1f47d..a2020c5a5 100644
--- a/dom/cache/CacheStorageChild.h
+++ b/dom/cache/CacheStorageChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStorageParent.cpp b/dom/cache/CacheStorageParent.cpp
index a8ede7d3d..d87a9262e 100644
--- a/dom/cache/CacheStorageParent.cpp
+++ b/dom/cache/CacheStorageParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStorageParent.h b/dom/cache/CacheStorageParent.h
index 9aa431f64..6d6bb5a9c 100644
--- a/dom/cache/CacheStorageParent.h
+++ b/dom/cache/CacheStorageParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStreamControlChild.cpp b/dom/cache/CacheStreamControlChild.cpp
index 978019ab6..b30df5ada 100644
--- a/dom/cache/CacheStreamControlChild.cpp
+++ b/dom/cache/CacheStreamControlChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStreamControlChild.h b/dom/cache/CacheStreamControlChild.h
index 20c1d054b..da2e33031 100644
--- a/dom/cache/CacheStreamControlChild.h
+++ b/dom/cache/CacheStreamControlChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStreamControlParent.cpp b/dom/cache/CacheStreamControlParent.cpp
index 02f2fd2d3..b8d40d843 100644
--- a/dom/cache/CacheStreamControlParent.cpp
+++ b/dom/cache/CacheStreamControlParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheStreamControlParent.h b/dom/cache/CacheStreamControlParent.h
index c1d373176..d55286149 100644
--- a/dom/cache/CacheStreamControlParent.h
+++ b/dom/cache/CacheStreamControlParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheWorkerHolder.cpp b/dom/cache/CacheWorkerHolder.cpp
index 3879e1521..afe6c8f1f 100644
--- a/dom/cache/CacheWorkerHolder.cpp
+++ b/dom/cache/CacheWorkerHolder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/CacheWorkerHolder.h b/dom/cache/CacheWorkerHolder.h
index 513cc0e43..9eed7e2b6 100644
--- a/dom/cache/CacheWorkerHolder.h
+++ b/dom/cache/CacheWorkerHolder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Connection.cpp b/dom/cache/Connection.cpp
index 91f4a4154..456510e10 100644
--- a/dom/cache/Connection.cpp
+++ b/dom/cache/Connection.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Connection.h b/dom/cache/Connection.h
index e69c50892..52fbbe9cd 100644
--- a/dom/cache/Connection.h
+++ b/dom/cache/Connection.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Context.cpp b/dom/cache/Context.cpp
index db66ae90e..e4c6aed69 100644
--- a/dom/cache/Context.cpp
+++ b/dom/cache/Context.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Context.h b/dom/cache/Context.h
index 278302bf6..cb74dd6be 100644
--- a/dom/cache/Context.h
+++ b/dom/cache/Context.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/DBAction.cpp b/dom/cache/DBAction.cpp
index ae009dc10..afb820b3d 100644
--- a/dom/cache/DBAction.cpp
+++ b/dom/cache/DBAction.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/DBAction.h b/dom/cache/DBAction.h
index d0bbedbbc..87db9d64c 100644
--- a/dom/cache/DBAction.h
+++ b/dom/cache/DBAction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/DBSchema.cpp b/dom/cache/DBSchema.cpp
index 37510e2e1..a1ba97ec7 100644
--- a/dom/cache/DBSchema.cpp
+++ b/dom/cache/DBSchema.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/DBSchema.h b/dom/cache/DBSchema.h
index cc23f7743..6a65f2705 100644
--- a/dom/cache/DBSchema.h
+++ b/dom/cache/DBSchema.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/FileUtils.cpp b/dom/cache/FileUtils.cpp
index dce98ac1c..1e0531e50 100644
--- a/dom/cache/FileUtils.cpp
+++ b/dom/cache/FileUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/FileUtils.h b/dom/cache/FileUtils.h
index e7389abea..d0e769b07 100644
--- a/dom/cache/FileUtils.h
+++ b/dom/cache/FileUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/IPCUtils.h b/dom/cache/IPCUtils.h
index 143e4b4db..409bbf6f9 100644
--- a/dom/cache/IPCUtils.h
+++ b/dom/cache/IPCUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Manager.cpp b/dom/cache/Manager.cpp
index ee7cc51ac..915d8607e 100644
--- a/dom/cache/Manager.cpp
+++ b/dom/cache/Manager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Manager.h b/dom/cache/Manager.h
index 20392dad8..40bb6e2a8 100644
--- a/dom/cache/Manager.h
+++ b/dom/cache/Manager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/ManagerId.cpp b/dom/cache/ManagerId.cpp
index 43b46410c..b18e0178d 100644
--- a/dom/cache/ManagerId.cpp
+++ b/dom/cache/ManagerId.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/ManagerId.h b/dom/cache/ManagerId.h
index 445520bb7..61f059962 100644
--- a/dom/cache/ManagerId.h
+++ b/dom/cache/ManagerId.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/PrincipalVerifier.cpp b/dom/cache/PrincipalVerifier.cpp
index c9b410a92..21792f4c4 100644
--- a/dom/cache/PrincipalVerifier.cpp
+++ b/dom/cache/PrincipalVerifier.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/PrincipalVerifier.h b/dom/cache/PrincipalVerifier.h
index d9bc98005..00b15ebf2 100644
--- a/dom/cache/PrincipalVerifier.h
+++ b/dom/cache/PrincipalVerifier.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/QuotaClient.cpp b/dom/cache/QuotaClient.cpp
index 5641c953c..4a4ac0a85 100644
--- a/dom/cache/QuotaClient.cpp
+++ b/dom/cache/QuotaClient.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/QuotaClient.h b/dom/cache/QuotaClient.h
index 25b9c1c2d..365ccb8ff 100644
--- a/dom/cache/QuotaClient.h
+++ b/dom/cache/QuotaClient.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/ReadStream.cpp b/dom/cache/ReadStream.cpp
index efce027a1..6bc9ced2e 100644
--- a/dom/cache/ReadStream.cpp
+++ b/dom/cache/ReadStream.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/ReadStream.h b/dom/cache/ReadStream.h
index 6744f30c2..28722a1bd 100644
--- a/dom/cache/ReadStream.h
+++ b/dom/cache/ReadStream.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/SavedTypes.h b/dom/cache/SavedTypes.h
index 9e1f686b4..d978b81d0 100644
--- a/dom/cache/SavedTypes.h
+++ b/dom/cache/SavedTypes.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/StreamControl.cpp b/dom/cache/StreamControl.cpp
index 69a72d0b6..c08408180 100644
--- a/dom/cache/StreamControl.cpp
+++ b/dom/cache/StreamControl.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/StreamControl.h b/dom/cache/StreamControl.h
index c68d91ff4..fdb10a3e0 100644
--- a/dom/cache/StreamControl.h
+++ b/dom/cache/StreamControl.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/StreamList.cpp b/dom/cache/StreamList.cpp
index 991563a3b..670661199 100644
--- a/dom/cache/StreamList.cpp
+++ b/dom/cache/StreamList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/StreamList.h b/dom/cache/StreamList.h
index 9ff65d20b..b148cd55d 100644
--- a/dom/cache/StreamList.h
+++ b/dom/cache/StreamList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/TypeUtils.cpp b/dom/cache/TypeUtils.cpp
index 5c3661d66..f849f1887 100644
--- a/dom/cache/TypeUtils.cpp
+++ b/dom/cache/TypeUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/TypeUtils.h b/dom/cache/TypeUtils.h
index 731ef9506..274586e3f 100644
--- a/dom/cache/TypeUtils.h
+++ b/dom/cache/TypeUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/Types.h b/dom/cache/Types.h
index 1fc791a02..ea10abcd4 100644
--- a/dom/cache/Types.h
+++ b/dom/cache/Types.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/cache/moz.build b/dom/cache/moz.build
index a536e5d75..ed4f7ad5e 100644
--- a/dom/cache/moz.build
+++ b/dom/cache/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/canvas/WebGL2ContextRenderbuffers.cpp b/dom/canvas/WebGL2ContextRenderbuffers.cpp
index 7a6163729..8e4310989 100644
--- a/dom/canvas/WebGL2ContextRenderbuffers.cpp
+++ b/dom/canvas/WebGL2ContextRenderbuffers.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/canvas/WebGL2ContextState.cpp b/dom/canvas/WebGL2ContextState.cpp
index e6283b12d..5cdfb7277 100644
--- a/dom/canvas/WebGL2ContextState.cpp
+++ b/dom/canvas/WebGL2ContextState.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/canvas/WebGL2ContextVertices.cpp b/dom/canvas/WebGL2ContextVertices.cpp
index 5c1b2fd60..8a0c5b85c 100644
--- a/dom/canvas/WebGL2ContextVertices.cpp
+++ b/dom/canvas/WebGL2ContextVertices.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/canvas/WebGLContextUnchecked.cpp b/dom/canvas/WebGLContextUnchecked.cpp
index d00586f11..7811552b8 100644
--- a/dom/canvas/WebGLContextUnchecked.cpp
+++ b/dom/canvas/WebGLContextUnchecked.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=4 et sw=4 tw=80: */
/* 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/. */
diff --git a/dom/canvas/WebGLContextUnchecked.h b/dom/canvas/WebGLContextUnchecked.h
index eb5736f15..567022f4c 100644
--- a/dom/canvas/WebGLContextUnchecked.h
+++ b/dom/canvas/WebGLContextUnchecked.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=4 et sw=4 tw=80: */
/* 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/. */
diff --git a/dom/canvas/WebGLExtensionDisjointTimerQuery.cpp b/dom/canvas/WebGLExtensionDisjointTimerQuery.cpp
index da76eeb2d..323b44749 100644
--- a/dom/canvas/WebGLExtensionDisjointTimerQuery.cpp
+++ b/dom/canvas/WebGLExtensionDisjointTimerQuery.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/canvas/WebGLVertexArrayObject.cpp b/dom/canvas/WebGLVertexArrayObject.cpp
index 5d43fcb6c..c178a21fd 100644
--- a/dom/canvas/WebGLVertexArrayObject.cpp
+++ b/dom/canvas/WebGLVertexArrayObject.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/canvas/WebGLVertexArrayObject.h b/dom/canvas/WebGLVertexArrayObject.h
index a58bff9eb..c2b3fac6a 100644
--- a/dom/canvas/WebGLVertexArrayObject.h
+++ b/dom/canvas/WebGLVertexArrayObject.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/canvas/gtest/TestWebGLElementArrayCache.cpp b/dom/canvas/gtest/TestWebGLElementArrayCache.cpp
index c8ffc8701..8b2b643cd 100644
--- a/dom/canvas/gtest/TestWebGLElementArrayCache.cpp
+++ b/dom/canvas/gtest/TestWebGLElementArrayCache.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/canvas/gtest/moz.build b/dom/canvas/gtest/moz.build
index a87b6fe6b..cd59b40e2 100644
--- a/dom/canvas/gtest/moz.build
+++ b/dom/canvas/gtest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/canvas/moz.build b/dom/canvas/moz.build
index fe39425ec..d70f1ad1f 100644
--- a/dom/canvas/moz.build
+++ b/dom/canvas/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/console/Console.cpp b/dom/console/Console.cpp
index 119a259fe..715e9fe84 100755
--- a/dom/console/Console.cpp
+++ b/dom/console/Console.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/console/Console.h b/dom/console/Console.h
index 2f375c8eb..13781be43 100644
--- a/dom/console/Console.h
+++ b/dom/console/Console.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/console/ConsoleReportCollector.cpp b/dom/console/ConsoleReportCollector.cpp
index 268f7f8de..8d9daa467 100644
--- a/dom/console/ConsoleReportCollector.cpp
+++ b/dom/console/ConsoleReportCollector.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/console/ConsoleReportCollector.h b/dom/console/ConsoleReportCollector.h
index 1d542eed6..81d117cdc 100644
--- a/dom/console/ConsoleReportCollector.h
+++ b/dom/console/ConsoleReportCollector.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/console/moz.build b/dom/console/moz.build
index 82623e442..540a6b030 100644
--- a/dom/console/moz.build
+++ b/dom/console/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/console/nsIConsoleReportCollector.h b/dom/console/nsIConsoleReportCollector.h
index 2d7735747..805681f2a 100644
--- a/dom/console/nsIConsoleReportCollector.h
+++ b/dom/console/nsIConsoleReportCollector.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/CryptoBuffer.cpp b/dom/crypto/CryptoBuffer.cpp
index cefdd4287..4b6831a52 100644
--- a/dom/crypto/CryptoBuffer.cpp
+++ b/dom/crypto/CryptoBuffer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/CryptoBuffer.h b/dom/crypto/CryptoBuffer.h
index 615916e58..cfb2e5a72 100644
--- a/dom/crypto/CryptoBuffer.h
+++ b/dom/crypto/CryptoBuffer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/CryptoKey.cpp b/dom/crypto/CryptoKey.cpp
index 8763835bf..8b95476fc 100644
--- a/dom/crypto/CryptoKey.cpp
+++ b/dom/crypto/CryptoKey.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/CryptoKey.h b/dom/crypto/CryptoKey.h
index 31f7a84aa..97a1b3a58 100644
--- a/dom/crypto/CryptoKey.h
+++ b/dom/crypto/CryptoKey.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/KeyAlgorithmProxy.cpp b/dom/crypto/KeyAlgorithmProxy.cpp
index 22e12cfc8..47e3cfcac 100644
--- a/dom/crypto/KeyAlgorithmProxy.cpp
+++ b/dom/crypto/KeyAlgorithmProxy.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/KeyAlgorithmProxy.h b/dom/crypto/KeyAlgorithmProxy.h
index 2c4c302b4..30dd680f6 100644
--- a/dom/crypto/KeyAlgorithmProxy.h
+++ b/dom/crypto/KeyAlgorithmProxy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/WebCryptoCommon.h b/dom/crypto/WebCryptoCommon.h
index 8eb5c20e1..f18359413 100644
--- a/dom/crypto/WebCryptoCommon.h
+++ b/dom/crypto/WebCryptoCommon.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/WebCryptoTask.cpp b/dom/crypto/WebCryptoTask.cpp
index e5f5882e9..57fb3c3c8 100644
--- a/dom/crypto/WebCryptoTask.cpp
+++ b/dom/crypto/WebCryptoTask.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/WebCryptoTask.h b/dom/crypto/WebCryptoTask.h
index 169321970..b98296289 100644
--- a/dom/crypto/WebCryptoTask.h
+++ b/dom/crypto/WebCryptoTask.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/crypto/moz.build b/dom/crypto/moz.build
index eb15a5530..8ba3047bb 100644
--- a/dom/crypto/moz.build
+++ b/dom/crypto/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/encoding/EncodingUtils.cpp b/dom/encoding/EncodingUtils.cpp
index c9675bfcc..1272e506a 100644
--- a/dom/encoding/EncodingUtils.cpp
+++ b/dom/encoding/EncodingUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/encoding/EncodingUtils.h b/dom/encoding/EncodingUtils.h
index 5bfb25499..a0a43b162 100644
--- a/dom/encoding/EncodingUtils.h
+++ b/dom/encoding/EncodingUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/encoding/FallbackEncoding.cpp b/dom/encoding/FallbackEncoding.cpp
index 29411412e..00d1e7440 100644
--- a/dom/encoding/FallbackEncoding.cpp
+++ b/dom/encoding/FallbackEncoding.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/encoding/FallbackEncoding.h b/dom/encoding/FallbackEncoding.h
index c9316a5f0..2bf2ce541 100644
--- a/dom/encoding/FallbackEncoding.h
+++ b/dom/encoding/FallbackEncoding.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/encoding/TextDecoder.cpp b/dom/encoding/TextDecoder.cpp
index 24f7ec166..c31f18ee1 100644
--- a/dom/encoding/TextDecoder.cpp
+++ b/dom/encoding/TextDecoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/encoding/TextDecoder.h b/dom/encoding/TextDecoder.h
index 5f6385f75..ab065554f 100644
--- a/dom/encoding/TextDecoder.h
+++ b/dom/encoding/TextDecoder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/encoding/TextEncoder.cpp b/dom/encoding/TextEncoder.cpp
index ccd298b38..87e344c81 100644
--- a/dom/encoding/TextEncoder.cpp
+++ b/dom/encoding/TextEncoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/encoding/TextEncoder.h b/dom/encoding/TextEncoder.h
index ed08e4023..4d4d8666f 100644
--- a/dom/encoding/TextEncoder.h
+++ b/dom/encoding/TextEncoder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/encoding/moz.build b/dom/encoding/moz.build
index 7dc360aaf..2b4bc6dd1 100644
--- a/dom/encoding/moz.build
+++ b/dom/encoding/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/events/AnimationEvent.cpp b/dom/events/AnimationEvent.cpp
index 970f95818..a9bd83d82 100644
--- a/dom/events/AnimationEvent.cpp
+++ b/dom/events/AnimationEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/AnimationEvent.h b/dom/events/AnimationEvent.h
index 23713a136..dd3e5d9a0 100644
--- a/dom/events/AnimationEvent.h
+++ b/dom/events/AnimationEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/AsyncEventDispatcher.cpp b/dom/events/AsyncEventDispatcher.cpp
index da36f7993..c10849afa 100644
--- a/dom/events/AsyncEventDispatcher.cpp
+++ b/dom/events/AsyncEventDispatcher.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/AsyncEventDispatcher.h b/dom/events/AsyncEventDispatcher.h
index 094e764b6..0f0da4fc1 100644
--- a/dom/events/AsyncEventDispatcher.h
+++ b/dom/events/AsyncEventDispatcher.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/BeforeAfterKeyboardEvent.cpp b/dom/events/BeforeAfterKeyboardEvent.cpp
index c94227755..866da311b 100644
--- a/dom/events/BeforeAfterKeyboardEvent.cpp
+++ b/dom/events/BeforeAfterKeyboardEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/BeforeAfterKeyboardEvent.h b/dom/events/BeforeAfterKeyboardEvent.h
index 5ada2e861..1923e63f1 100644
--- a/dom/events/BeforeAfterKeyboardEvent.h
+++ b/dom/events/BeforeAfterKeyboardEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/BeforeUnloadEvent.cpp b/dom/events/BeforeUnloadEvent.cpp
index efcf8e205..b15a54c89 100644
--- a/dom/events/BeforeUnloadEvent.cpp
+++ b/dom/events/BeforeUnloadEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/BeforeUnloadEvent.h b/dom/events/BeforeUnloadEvent.h
index 781332c6a..caf791a07 100644
--- a/dom/events/BeforeUnloadEvent.h
+++ b/dom/events/BeforeUnloadEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/ClipboardEvent.cpp b/dom/events/ClipboardEvent.cpp
index cff1eb621..487417296 100644
--- a/dom/events/ClipboardEvent.cpp
+++ b/dom/events/ClipboardEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/ClipboardEvent.h b/dom/events/ClipboardEvent.h
index c3dcde8f2..0f5f70814 100644
--- a/dom/events/ClipboardEvent.h
+++ b/dom/events/ClipboardEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/CommandEvent.cpp b/dom/events/CommandEvent.cpp
index 3506659db..52d6ed17d 100644
--- a/dom/events/CommandEvent.cpp
+++ b/dom/events/CommandEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/CommandEvent.h b/dom/events/CommandEvent.h
index cb21c1d49..c8a5d32ba 100644
--- a/dom/events/CommandEvent.h
+++ b/dom/events/CommandEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/CompositionEvent.cpp b/dom/events/CompositionEvent.cpp
index 1f3112e70..262083b07 100644
--- a/dom/events/CompositionEvent.cpp
+++ b/dom/events/CompositionEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/CompositionEvent.h b/dom/events/CompositionEvent.h
index ed2316caa..74efad8c1 100644
--- a/dom/events/CompositionEvent.h
+++ b/dom/events/CompositionEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/ContentEventHandler.cpp b/dom/events/ContentEventHandler.cpp
index 935ade23f..ab5ea8df2 100644
--- a/dom/events/ContentEventHandler.cpp
+++ b/dom/events/ContentEventHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -980,11 +979,7 @@ ContentEventHandler::SetRangeFromFlatTextOffset(nsRange* aRange,
// Special case like <br contenteditable>
if (!mRootContent->HasChildren()) {
- nsresult rv = aRange->SetStart(mRootContent, 0);
- if (NS_WARN_IF(NS_FAILED(rv))) {
- return rv;
- }
- rv = aRange->SetEnd(mRootContent, 0);
+ nsresult rv = aRange->CollapseTo(mRootContent, 0);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
@@ -2880,8 +2875,7 @@ ContentEventHandler::AdjustCollapsedRangeMaybeIntoTextNode(nsRange* aRange)
return NS_OK;
}
- nsresult rv = aRange->Set(childNode, offsetInChildNode,
- childNode, offsetInChildNode);
+ nsresult rv = aRange->CollapseTo(childNode, offsetInChildNode);
if (NS_WARN_IF(NS_FAILED(rv))) {
return rv;
}
diff --git a/dom/events/ContentEventHandler.h b/dom/events/ContentEventHandler.h
index 31ec40caf..6616f05ea 100644
--- a/dom/events/ContentEventHandler.h
+++ b/dom/events/ContentEventHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/CustomEvent.cpp b/dom/events/CustomEvent.cpp
index 3b3fb3fdd..b935d0f59 100644
--- a/dom/events/CustomEvent.cpp
+++ b/dom/events/CustomEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/CustomEvent.h b/dom/events/CustomEvent.h
index d14243cff..beca45f36 100644
--- a/dom/events/CustomEvent.h
+++ b/dom/events/CustomEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/DOMEventTargetHelper.cpp b/dom/events/DOMEventTargetHelper.cpp
index ea68ead9d..ef5b29fa5 100644
--- a/dom/events/DOMEventTargetHelper.cpp
+++ b/dom/events/DOMEventTargetHelper.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -329,10 +328,10 @@ DOMEventTargetHelper::GetEventHandler(nsIAtom* aType,
}
nsresult
-DOMEventTargetHelper::PreHandleEvent(EventChainPreVisitor& aVisitor)
+DOMEventTargetHelper::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = true;
- aVisitor.mParentTarget = nullptr;
+ aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
}
diff --git a/dom/events/DOMEventTargetHelper.h b/dom/events/DOMEventTargetHelper.h
index c5a0611c9..63f359804 100644
--- a/dom/events/DOMEventTargetHelper.h
+++ b/dom/events/DOMEventTargetHelper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -248,10 +247,10 @@ NS_DEFINE_STATIC_IID_ACCESSOR(DOMEventTargetHelper,
/* Use this macro to declare functions that forward the behavior of this
* interface to another object.
- * This macro doesn't forward PreHandleEvent because sometimes subclasses
+ * This macro doesn't forward GetEventTargetParent because sometimes subclasses
* want to override it.
*/
-#define NS_FORWARD_NSIDOMEVENTTARGET_NOPREHANDLEEVENT(_to) \
+#define NS_FORWARD_NSIDOMEVENTTARGET_NOGETEVENTTARGETPARENT(_to) \
NS_IMETHOD AddEventListener(const nsAString & type, nsIDOMEventListener *listener, bool useCapture, bool wantsUntrusted, uint8_t _argc) { \
return _to AddEventListener(type, listener, useCapture, wantsUntrusted, _argc); \
} \
diff --git a/dom/events/DataContainerEvent.cpp b/dom/events/DataContainerEvent.cpp
index 0f9d41924..7550b59da 100644
--- a/dom/events/DataContainerEvent.cpp
+++ b/dom/events/DataContainerEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/DataContainerEvent.h b/dom/events/DataContainerEvent.h
index c118cf5ab..ee9fc7e66 100644
--- a/dom/events/DataContainerEvent.h
+++ b/dom/events/DataContainerEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/DataTransfer.cpp b/dom/events/DataTransfer.cpp
index 35e80fea4..5e7d477df 100644
--- a/dom/events/DataTransfer.cpp
+++ b/dom/events/DataTransfer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/DataTransfer.h b/dom/events/DataTransfer.h
index 344593ed0..dbb4ec9bf 100644
--- a/dom/events/DataTransfer.h
+++ b/dom/events/DataTransfer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/DeviceMotionEvent.cpp b/dom/events/DeviceMotionEvent.cpp
index f8729c18d..99f3b1575 100644
--- a/dom/events/DeviceMotionEvent.cpp
+++ b/dom/events/DeviceMotionEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/DeviceMotionEvent.h b/dom/events/DeviceMotionEvent.h
index 6e6f3d9e5..bb6ed383d 100644
--- a/dom/events/DeviceMotionEvent.h
+++ b/dom/events/DeviceMotionEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/DragEvent.cpp b/dom/events/DragEvent.cpp
index 9419ad9e9..55f1e8589 100644
--- a/dom/events/DragEvent.cpp
+++ b/dom/events/DragEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/DragEvent.h b/dom/events/DragEvent.h
index 552b4b7f2..bfc2cf3e8 100644
--- a/dom/events/DragEvent.h
+++ b/dom/events/DragEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/Event.cpp b/dom/events/Event.cpp
index 91417499b..3fbb138e7 100755
--- a/dom/events/Event.cpp
+++ b/dom/events/Event.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -11,6 +10,7 @@
#include "mozilla/dom/ShadowRoot.h"
#include "mozilla/ContentEvents.h"
#include "mozilla/DOMEventTargetHelper.h"
+#include "mozilla/EventDispatcher.h"
#include "mozilla/EventStateManager.h"
#include "mozilla/InternalMutationEvent.h"
#include "mozilla/dom/Performance.h"
@@ -147,18 +147,11 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(Event)
tmp->mEvent->mTarget = nullptr;
tmp->mEvent->mCurrentTarget = nullptr;
tmp->mEvent->mOriginalTarget = nullptr;
+ tmp->mEvent->mRelatedTarget = nullptr;
switch (tmp->mEvent->mClass) {
- case eMouseEventClass:
- case eMouseScrollEventClass:
- case eWheelEventClass:
- case eSimpleGestureEventClass:
- case ePointerEventClass:
- tmp->mEvent->AsMouseEventBase()->relatedTarget = nullptr;
- break;
case eDragEventClass: {
WidgetDragEvent* dragEvent = tmp->mEvent->AsDragEvent();
dragEvent->mDataTransfer = nullptr;
- dragEvent->relatedTarget = nullptr;
break;
}
case eClipboardEventClass:
@@ -167,9 +160,6 @@ NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN(Event)
case eMutationEventClass:
tmp->mEvent->AsMutationEvent()->mRelatedNode = nullptr;
break;
- case eFocusEventClass:
- tmp->mEvent->AsFocusEvent()->mRelatedTarget = nullptr;
- break;
default:
break;
}
@@ -185,21 +175,12 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(Event)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mEvent->mTarget)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mEvent->mCurrentTarget)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mEvent->mOriginalTarget)
+ NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mEvent->mRelatedTarget)
switch (tmp->mEvent->mClass) {
- case eMouseEventClass:
- case eMouseScrollEventClass:
- case eWheelEventClass:
- case eSimpleGestureEventClass:
- case ePointerEventClass:
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->relatedTarget");
- cb.NoteXPCOMChild(tmp->mEvent->AsMouseEventBase()->relatedTarget);
- break;
case eDragEventClass: {
WidgetDragEvent* dragEvent = tmp->mEvent->AsDragEvent();
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->mDataTransfer");
cb.NoteXPCOMChild(dragEvent->mDataTransfer);
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->relatedTarget");
- cb.NoteXPCOMChild(dragEvent->relatedTarget);
break;
}
case eClipboardEventClass:
@@ -210,10 +191,6 @@ NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN(Event)
NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->mRelatedNode");
cb.NoteXPCOMChild(tmp->mEvent->AsMutationEvent()->mRelatedNode);
break;
- case eFocusEventClass:
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mEvent->mRelatedTarget");
- cb.NoteXPCOMChild(tmp->mEvent->AsFocusEvent()->mRelatedTarget);
- break;
default:
break;
}
@@ -288,6 +265,12 @@ Event::GetCurrentTarget() const
return mEvent->GetCurrentDOMEventTarget();
}
+void
+Event::ComposedPath(nsTArray<RefPtr<EventTarget>>& aPath)
+{
+ EventDispatcher::GetComposedPathFor(mEvent, aPath);
+}
+
NS_IMETHODIMP
Event::GetCurrentTarget(nsIDOMEventTarget** aCurrentTarget)
{
diff --git a/dom/events/Event.h b/dom/events/Event.h
index 0817aa809..7e461a3f8 100755
--- a/dom/events/Event.h
+++ b/dom/events/Event.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -157,6 +156,8 @@ public:
EventTarget* GetTarget() const;
EventTarget* GetCurrentTarget() const;
+ void ComposedPath(nsTArray<RefPtr<EventTarget>>& aPath);
+
uint16_t EventPhase() const;
// xpidl implementation
diff --git a/dom/events/EventDispatcher.cpp b/dom/events/EventDispatcher.cpp
index 1d4dfd7d9..28d4d8189 100644
--- a/dom/events/EventDispatcher.cpp
+++ b/dom/events/EventDispatcher.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -130,13 +129,6 @@ static bool IsEventTargetChrome(EventTarget* aEventTarget,
return isChrome;
}
-
-#define NS_TARGET_CHAIN_FORCE_CONTENT_DISPATCH (1 << 0)
-#define NS_TARGET_CHAIN_WANTS_WILL_HANDLE_EVENT (1 << 1)
-#define NS_TARGET_CHAIN_MAY_HAVE_MANAGER (1 << 2)
-#define NS_TARGET_CHAIN_CHECKED_IF_CHROME (1 << 3)
-#define NS_TARGET_CHAIN_IS_CHROME_CONTENT (1 << 4)
-
// EventTargetChainItem represents a single item in the event target chain.
class EventTargetChainItem
{
@@ -144,8 +136,7 @@ private:
explicit EventTargetChainItem(EventTarget* aTarget);
public:
EventTargetChainItem()
- : mFlags(0)
- , mItemFlags(0)
+ : mItemFlags(0)
{
}
@@ -153,7 +144,8 @@ public:
EventTarget* aTarget,
EventTargetChainItem* aChild = nullptr)
{
- MOZ_ASSERT(!aChild || &aChain.ElementAt(aChain.Length() - 1) == aChild);
+ // The last item which can handle the event must be aChild.
+ MOZ_ASSERT(GetLastCanHandleEventTarget(aChain) == aChild);
return new (aChain.AppendElement()) EventTargetChainItem(aTarget);
}
@@ -165,6 +157,38 @@ public:
aChain.RemoveElementAt(lastIndex);
}
+ static EventTargetChainItem* GetFirstCanHandleEventTarget(
+ nsTArray<EventTargetChainItem>& aChain)
+ {
+ return &aChain[GetFirstCanHandleEventTargetIdx(aChain)];
+ }
+
+ static uint32_t GetFirstCanHandleEventTargetIdx(nsTArray<EventTargetChainItem>& aChain)
+ {
+ // aChain[i].PreHandleEventOnly() = true only when the target element wants
+ // PreHandleEvent and set mCanHandle=false. So we find the first element
+ // which can handle the event.
+ for (uint32_t i = 0; i < aChain.Length(); ++i) {
+ if (!aChain[i].PreHandleEventOnly()) {
+ return i;
+ }
+ }
+ MOZ_ASSERT(false);
+ return 0;
+ }
+
+ static EventTargetChainItem* GetLastCanHandleEventTarget(
+ nsTArray<EventTargetChainItem>& aChain)
+ {
+ // Fine the last item which can handle the event.
+ for (int32_t i = aChain.Length() - 1; i >= 0; --i) {
+ if (!aChain[i].PreHandleEventOnly()) {
+ return &aChain[i];
+ }
+ }
+ return nullptr;
+ }
+
bool IsValid()
{
NS_WARNING_ASSERTION(!!(mTarget), "Event target is not valid!");
@@ -183,44 +207,82 @@ public:
void SetForceContentDispatch(bool aForce)
{
- if (aForce) {
- mFlags |= NS_TARGET_CHAIN_FORCE_CONTENT_DISPATCH;
- } else {
- mFlags &= ~NS_TARGET_CHAIN_FORCE_CONTENT_DISPATCH;
- }
+ mFlags.mForceContentDispatch = aForce;
}
bool ForceContentDispatch()
{
- return !!(mFlags & NS_TARGET_CHAIN_FORCE_CONTENT_DISPATCH);
+ return mFlags.mForceContentDispatch;
}
void SetWantsWillHandleEvent(bool aWants)
{
- if (aWants) {
- mFlags |= NS_TARGET_CHAIN_WANTS_WILL_HANDLE_EVENT;
- } else {
- mFlags &= ~NS_TARGET_CHAIN_WANTS_WILL_HANDLE_EVENT;
- }
+ mFlags.mWantsWillHandleEvent = aWants;
}
bool WantsWillHandleEvent()
{
- return !!(mFlags & NS_TARGET_CHAIN_WANTS_WILL_HANDLE_EVENT);
+ return mFlags.mWantsWillHandleEvent;
+ }
+
+ void SetWantsPreHandleEvent(bool aWants)
+ {
+ mFlags.mWantsPreHandleEvent = aWants;
+ }
+
+ bool WantsPreHandleEvent()
+ {
+ return mFlags.mWantsPreHandleEvent;
+ }
+
+ void SetPreHandleEventOnly(bool aWants)
+ {
+ mFlags.mPreHandleEventOnly = aWants;
+ }
+
+ bool PreHandleEventOnly()
+ {
+ return mFlags.mPreHandleEventOnly;
+ }
+
+ void SetRootOfClosedTree(bool aSet)
+ {
+ mFlags.mRootOfClosedTree = aSet;
+ }
+
+ bool IsRootOfClosedTree()
+ {
+ return mFlags.mRootOfClosedTree;
+ }
+
+ void SetIsSlotInClosedTree(bool aSet)
+ {
+ mFlags.mIsSlotInClosedTree = aSet;
+ }
+
+ bool IsSlotInClosedTree()
+ {
+ return mFlags.mIsSlotInClosedTree;
+ }
+
+ void SetIsChromeHandler(bool aSet)
+ {
+ mFlags.mIsChromeHandler = aSet;
+ }
+
+ bool IsChromeHandler()
+ {
+ return mFlags.mIsChromeHandler;
}
void SetMayHaveListenerManager(bool aMayHave)
{
- if (aMayHave) {
- mFlags |= NS_TARGET_CHAIN_MAY_HAVE_MANAGER;
- } else {
- mFlags &= ~NS_TARGET_CHAIN_MAY_HAVE_MANAGER;
- }
+ mFlags.mMayHaveManager = aMayHave;
}
bool MayHaveListenerManager()
{
- return !!(mFlags & NS_TARGET_CHAIN_MAY_HAVE_MANAGER);
+ return mFlags.mMayHaveManager;
}
EventTarget* CurrentTarget()
@@ -240,10 +302,15 @@ public:
ELMCreationDetector& aCd);
/**
- * Resets aVisitor object and calls PreHandleEvent.
+ * Resets aVisitor object and calls GetEventTargetParent.
* Copies mItemFlags and mItemData to the current EventTargetChainItem.
*/
- void PreHandleEvent(EventChainPreVisitor& aVisitor);
+ void GetEventTargetParent(EventChainPreVisitor& aVisitor);
+
+ /**
+ * Calls PreHandleEvent for those items which called SetWantsPreHandleEvent.
+ */
+ void PreHandleEvent(EventChainVisitor& aVisitor);
/**
* If the current item in the event target chain has an event listener
@@ -288,7 +355,37 @@ public:
private:
nsCOMPtr<EventTarget> mTarget;
- uint16_t mFlags;
+
+ class EventTargetChainFlags
+ {
+ public:
+ explicit EventTargetChainFlags()
+ {
+ SetRawFlags(0);
+ }
+ // Cached flags for each EventTargetChainItem which are set when calling
+ // GetEventTargetParent to create event target chain. They are used to
+ // manage or speedup event dispatching.
+ bool mForceContentDispatch : 1;
+ bool mWantsWillHandleEvent : 1;
+ bool mMayHaveManager : 1;
+ bool mChechedIfChrome : 1;
+ bool mIsChromeContent : 1;
+ bool mWantsPreHandleEvent : 1;
+ bool mPreHandleEventOnly : 1;
+ bool mRootOfClosedTree : 1;
+ bool mIsSlotInClosedTree : 1;
+ bool mIsChromeHandler : 1;
+ private:
+ typedef uint32_t RawFlags;
+ void SetRawFlags(RawFlags aRawFlags)
+ {
+ static_assert(sizeof(EventTargetChainFlags) <= sizeof(RawFlags),
+ "EventTargetChainFlags must not be bigger than the RawFlags");
+ memcpy(this, &aRawFlags, sizeof(EventTargetChainFlags));
+ }
+ } mFlags;
+
uint16_t mItemFlags;
nsCOMPtr<nsISupports> mItemData;
// Event retargeting must happen whenever mNewTarget is non-null.
@@ -298,37 +395,50 @@ private:
bool IsCurrentTargetChrome()
{
- if (!(mFlags & NS_TARGET_CHAIN_CHECKED_IF_CHROME)) {
- mFlags |= NS_TARGET_CHAIN_CHECKED_IF_CHROME;
+ if (!mFlags.mChechedIfChrome) {
+ mFlags.mChechedIfChrome = true;
if (IsEventTargetChrome(mTarget)) {
- mFlags |= NS_TARGET_CHAIN_IS_CHROME_CONTENT;
+ mFlags.mIsChromeContent = true;
}
}
- return !!(mFlags & NS_TARGET_CHAIN_IS_CHROME_CONTENT);
+ return mFlags.mIsChromeContent;
}
};
EventTargetChainItem::EventTargetChainItem(EventTarget* aTarget)
: mTarget(aTarget)
- , mFlags(0)
, mItemFlags(0)
{
MOZ_ASSERT(!aTarget || mTarget == aTarget->GetTargetForEventTargetChain());
}
void
-EventTargetChainItem::PreHandleEvent(EventChainPreVisitor& aVisitor)
+EventTargetChainItem::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.Reset();
- Unused << mTarget->PreHandleEvent(aVisitor);
+ Unused << mTarget->GetEventTargetParent(aVisitor);
SetForceContentDispatch(aVisitor.mForceContentDispatch);
SetWantsWillHandleEvent(aVisitor.mWantsWillHandleEvent);
SetMayHaveListenerManager(aVisitor.mMayHaveListenerManager);
+ SetWantsPreHandleEvent(aVisitor.mWantsPreHandleEvent);
+ SetPreHandleEventOnly(aVisitor.mWantsPreHandleEvent && !aVisitor.mCanHandle);
+ SetRootOfClosedTree(aVisitor.mRootOfClosedTree);
mItemFlags = aVisitor.mItemFlags;
mItemData = aVisitor.mItemData;
}
void
+EventTargetChainItem::PreHandleEvent(EventChainVisitor& aVisitor)
+{
+ if (!WantsPreHandleEvent()) {
+ return;
+ }
+ aVisitor.mItemFlags = mItemFlags;
+ aVisitor.mItemData = mItemData;
+ Unused << mTarget->PreHandleEvent(aVisitor);
+}
+
+void
EventTargetChainItem::PostHandleEvent(EventChainPostVisitor& aVisitor)
{
aVisitor.mItemFlags = mItemFlags;
@@ -346,12 +456,17 @@ EventTargetChainItem::HandleEventTargetChain(
// Save the target so that it can be restored later.
nsCOMPtr<EventTarget> firstTarget = aVisitor.mEvent->mTarget;
uint32_t chainLength = aChain.Length();
+ uint32_t firstCanHandleEventTargetIdx =
+ EventTargetChainItem::GetFirstCanHandleEventTargetIdx(aChain);
// Capture
aVisitor.mEvent->mFlags.mInCapturePhase = true;
aVisitor.mEvent->mFlags.mInBubblingPhase = false;
- for (uint32_t i = chainLength - 1; i > 0; --i) {
+ for (uint32_t i = chainLength - 1; i > firstCanHandleEventTargetIdx; --i) {
EventTargetChainItem& item = aChain[i];
+ if (item.PreHandleEventOnly()) {
+ continue;
+ }
if ((!aVisitor.mEvent->mFlags.mNoContentDispatch ||
item.ForceContentDispatch()) &&
!aVisitor.mEvent->PropagationStopped()) {
@@ -373,7 +488,7 @@ EventTargetChainItem::HandleEventTargetChain(
// Target
aVisitor.mEvent->mFlags.mInBubblingPhase = true;
- EventTargetChainItem& targetItem = aChain[0];
+ EventTargetChainItem& targetItem = aChain[firstCanHandleEventTargetIdx];
if (!aVisitor.mEvent->PropagationStopped() &&
(!aVisitor.mEvent->mFlags.mNoContentDispatch ||
targetItem.ForceContentDispatch())) {
@@ -385,8 +500,11 @@ EventTargetChainItem::HandleEventTargetChain(
// Bubble
aVisitor.mEvent->mFlags.mInCapturePhase = false;
- for (uint32_t i = 1; i < chainLength; ++i) {
+ for (uint32_t i = firstCanHandleEventTargetIdx + 1; i < chainLength; ++i) {
EventTargetChainItem& item = aChain[i];
+ if (item.PreHandleEventOnly()) {
+ continue;
+ }
EventTarget* newTarget = item.GetNewTarget();
if (newTarget) {
// Item is at anonymous boundary. Need to retarget for the current item
@@ -471,6 +589,28 @@ EventTargetChainItemForChromeTarget(nsTArray<EventTargetChainItem>& aChain,
return etci;
}
+/* static */ EventTargetChainItem*
+MayRetargetToChromeIfCanNotHandleEvent(
+ nsTArray<EventTargetChainItem>& aChain, EventChainPreVisitor& aPreVisitor,
+ EventTargetChainItem* aTargetEtci, EventTargetChainItem* aChildEtci,
+ nsINode* aContent)
+{
+ if (!aPreVisitor.mWantsPreHandleEvent) {
+ // Keep EventTargetChainItem if we need to call PreHandleEvent on it.
+ EventTargetChainItem::DestroyLast(aChain, aTargetEtci);
+ }
+ if (aPreVisitor.mAutomaticChromeDispatch && aContent) {
+ // Event target couldn't handle the event. Try to propagate to chrome.
+ EventTargetChainItem* chromeTargetEtci =
+ EventTargetChainItemForChromeTarget(aChain, aContent, aChildEtci);
+ if (chromeTargetEtci) {
+ chromeTargetEtci->GetEventTargetParent(aPreVisitor);
+ return chromeTargetEtci;
+ }
+ }
+ return nullptr;
+}
+
/* static */ nsresult
EventDispatcher::Dispatch(nsISupports* aTarget,
nsPresContext* aPresContext,
@@ -593,7 +733,6 @@ EventDispatcher::Dispatch(nsISupports* aTarget,
// Create the event target chain item for the event target.
EventTargetChainItem* targetEtci =
EventTargetChainItem::Create(chain, target->GetTargetForEventTargetChain());
- MOZ_ASSERT(&chain[0] == targetEtci);
if (!targetEtci->IsValid()) {
EventTargetChainItem::DestroyLast(chain, targetEtci);
return NS_ERROR_FAILURE;
@@ -631,37 +770,43 @@ EventDispatcher::Dispatch(nsISupports* aTarget,
aEvent->mFlags.mIsBeingDispatched = true;
// Create visitor object and start event dispatching.
- // PreHandleEvent for the original target.
+ // GetEventTargetParent for the original target.
nsEventStatus status = aEventStatus ? *aEventStatus : nsEventStatus_eIgnore;
EventChainPreVisitor preVisitor(aPresContext, aEvent, aDOMEvent, status,
isInAnon);
- targetEtci->PreHandleEvent(preVisitor);
-
- if (!preVisitor.mCanHandle && preVisitor.mAutomaticChromeDispatch && content) {
- // Event target couldn't handle the event. Try to propagate to chrome.
- EventTargetChainItem::DestroyLast(chain, targetEtci);
- targetEtci = EventTargetChainItemForChromeTarget(chain, content);
- NS_ENSURE_STATE(targetEtci);
- MOZ_ASSERT(&chain[0] == targetEtci);
- targetEtci->PreHandleEvent(preVisitor);
- }
- if (preVisitor.mCanHandle) {
+ targetEtci->GetEventTargetParent(preVisitor);
+
+ if (!preVisitor.mCanHandle) {
+ targetEtci = MayRetargetToChromeIfCanNotHandleEvent(chain, preVisitor,
+ targetEtci, nullptr,
+ content);
+ }
+ if (!preVisitor.mCanHandle) {
+ // The original target and chrome target (mAutomaticChromeDispatch=true)
+ // can not handle the event but we still have to call their PreHandleEvent.
+ for (uint32_t i = 0; i < chain.Length(); ++i) {
+ chain[i].PreHandleEvent(preVisitor);
+ }
+ } else {
// At least the original target can handle the event.
// Setting the retarget to the |target| simplifies retargeting code.
nsCOMPtr<EventTarget> t = do_QueryInterface(aEvent->mTarget);
targetEtci->SetNewTarget(t);
EventTargetChainItem* topEtci = targetEtci;
targetEtci = nullptr;
- while (preVisitor.mParentTarget) {
- EventTarget* parentTarget = preVisitor.mParentTarget;
+ while (preVisitor.GetParentTarget()) {
+ EventTarget* parentTarget = preVisitor.GetParentTarget();
EventTargetChainItem* parentEtci =
- EventTargetChainItem::Create(chain, preVisitor.mParentTarget, topEtci);
+ EventTargetChainItem::Create(chain, parentTarget, topEtci);
if (!parentEtci->IsValid()) {
EventTargetChainItem::DestroyLast(chain, parentEtci);
rv = NS_ERROR_FAILURE;
break;
}
+ parentEtci->SetIsSlotInClosedTree(preVisitor.mParentIsSlotInClosedTree);
+ parentEtci->SetIsChromeHandler(preVisitor.mParentIsChromeHandler);
+
// Item needs event retargetting.
if (preVisitor.mEventTargetAtParent) {
// Need to set the target of the event
@@ -670,29 +815,22 @@ EventDispatcher::Dispatch(nsISupports* aTarget,
parentEtci->SetNewTarget(preVisitor.mEventTargetAtParent);
}
- parentEtci->PreHandleEvent(preVisitor);
+ parentEtci->GetEventTargetParent(preVisitor);
if (preVisitor.mCanHandle) {
topEtci = parentEtci;
} else {
- EventTargetChainItem::DestroyLast(chain, parentEtci);
- parentEtci = nullptr;
- if (preVisitor.mAutomaticChromeDispatch && content) {
- // Even if the current target can't handle the event, try to
- // propagate to chrome.
- nsCOMPtr<nsINode> disabledTarget = do_QueryInterface(parentTarget);
- if (disabledTarget) {
- parentEtci = EventTargetChainItemForChromeTarget(chain,
- disabledTarget,
- topEtci);
- if (parentEtci) {
- parentEtci->PreHandleEvent(preVisitor);
- if (preVisitor.mCanHandle) {
- chain[0].SetNewTarget(parentTarget);
- topEtci = parentEtci;
- continue;
- }
- }
- }
+ nsCOMPtr<nsINode> disabledTarget = do_QueryInterface(parentTarget);
+ parentEtci = MayRetargetToChromeIfCanNotHandleEvent(chain,
+ preVisitor,
+ parentEtci,
+ topEtci,
+ disabledTarget);
+ if (parentEtci && preVisitor.mCanHandle) {
+ EventTargetChainItem* item =
+ EventTargetChainItem::GetFirstCanHandleEventTarget(chain);
+ item->SetNewTarget(parentTarget);
+ topEtci = parentEtci;
+ continue;
}
break;
}
@@ -706,11 +844,19 @@ EventDispatcher::Dispatch(nsISupports* aTarget,
targets[i] = chain[i].CurrentTarget()->GetTargetForDOMEvent();
}
} else {
- // Event target chain is created. Handle the chain.
+ // Event target chain is created. PreHandle the chain.
+ for (uint32_t i = 0; i < chain.Length(); ++i) {
+ chain[i].PreHandleEvent(preVisitor);
+ }
+ // Handle the chain.
EventChainPostVisitor postVisitor(preVisitor);
+ MOZ_RELEASE_ASSERT(!aEvent->mPath);
+ aEvent->mPath = &chain;
EventTargetChainItem::HandleEventTargetChain(chain, postVisitor,
aCallback, cd);
+ aEvent->mPath = nullptr;
+
preVisitor.mEventStatus = postVisitor.mEventStatus;
// If the DOM event was created during event flow.
if (!preVisitor.mDOMEvent && postVisitor.mDOMEvent) {
@@ -1022,4 +1168,64 @@ EventDispatcher::CreateEvent(EventTarget* aOwner,
return nullptr;
}
+// static
+void
+EventDispatcher::GetComposedPathFor(WidgetEvent* aEvent,
+ nsTArray<RefPtr<EventTarget>>& aPath)
+{
+ nsTArray<EventTargetChainItem>* path = aEvent->mPath;
+ if (!path || path->IsEmpty() || !aEvent->mCurrentTarget) {
+ return;
+ }
+
+ EventTarget* currentTarget =
+ aEvent->mCurrentTarget->GetTargetForEventTargetChain();
+ if (!currentTarget) {
+ return;
+ }
+
+ AutoTArray<EventTarget*, 128> reversedComposedPath;
+ bool hasSeenCurrentTarget = false;
+ uint32_t hiddenSubtreeLevel = 0;
+ for (uint32_t i = path->Length(); i; ) {
+ --i;
+
+ EventTargetChainItem& item = path->ElementAt(i);
+ if (item.PreHandleEventOnly()) {
+ continue;
+ }
+
+ if (!hasSeenCurrentTarget && currentTarget == item.CurrentTarget()) {
+ hasSeenCurrentTarget = true;
+ } else if (hasSeenCurrentTarget && item.IsRootOfClosedTree()) {
+ ++hiddenSubtreeLevel;
+ }
+
+ if (hiddenSubtreeLevel == 0) {
+ reversedComposedPath.AppendElement(item.CurrentTarget());
+ }
+
+ if (item.IsSlotInClosedTree() && hiddenSubtreeLevel > 0) {
+ --hiddenSubtreeLevel;
+ }
+
+ if (item.IsChromeHandler()) {
+ if (hasSeenCurrentTarget) {
+ // The current behavior is to include only EventTargets from
+ // either chrome side of event path or content side, not from both.
+ break;
+ }
+
+ // Need to start all over to collect the composed path on content side.
+ reversedComposedPath.Clear();
+ }
+ }
+
+ aPath.SetCapacity(reversedComposedPath.Length());
+ for (uint32_t i = reversedComposedPath.Length(); i; ) {
+ --i;
+ aPath.AppendElement(reversedComposedPath[i]->GetTargetForDOMEvent());
+ }
+}
+
} // namespace mozilla
diff --git a/dom/events/EventDispatcher.h b/dom/events/EventDispatcher.h
index 3c754033d..dc11536eb 100644
--- a/dom/events/EventDispatcher.h
+++ b/dom/events/EventDispatcher.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -31,14 +30,14 @@ class EventTarget;
* About event dispatching:
* When either EventDispatcher::Dispatch or
* EventDispatcher::DispatchDOMEvent is called an event target chain is
- * created. EventDispatcher creates the chain by calling PreHandleEvent
+ * created. EventDispatcher creates the chain by calling GetEventTargetParent
* on each event target and the creation continues until either the mCanHandle
* member of the EventChainPreVisitor object is false or the mParentTarget
* does not point to a new target. The event target chain is created in the
* heap.
*
* If the event needs retargeting, mEventTargetAtParent must be set in
- * PreHandleEvent.
+ * GetEventTargetParent.
*
* The capture, target and bubble phases of the event dispatch are handled
* by iterating through the event target chain. Iteration happens twice,
@@ -86,7 +85,7 @@ public:
/**
* Bits for items in the event target chain.
- * Set in PreHandleEvent() and used in PostHandleEvent().
+ * Set in GetEventTargetParent() and used in PostHandleEvent().
*
* @note These bits are different for each item in the event target chain.
* It is up to the Pre/PostHandleEvent implementation to decide how to
@@ -98,7 +97,7 @@ public:
/**
* Data for items in the event target chain.
- * Set in PreHandleEvent() and used in PostHandleEvent().
+ * Set in GetEventTargetParent() and used in PostHandleEvent().
*
* @note This data is different for each item in the event target chain.
* It is up to the Pre/PostHandleEvent implementation to decide how to
@@ -123,6 +122,10 @@ public:
, mOriginalTargetIsInAnon(aIsInAnon)
, mWantsWillHandleEvent(false)
, mMayHaveListenerManager(true)
+ , mWantsPreHandleEvent(false)
+ , mRootOfClosedTree(false)
+ , mParentIsSlotInClosedTree(false)
+ , mParentIsChromeHandler(false)
, mParentTarget(nullptr)
, mEventTargetAtParent(nullptr)
{
@@ -137,13 +140,30 @@ public:
mForceContentDispatch = false;
mWantsWillHandleEvent = false;
mMayHaveListenerManager = true;
+ mWantsPreHandleEvent = false;
+ mRootOfClosedTree = false;
+ mParentIsSlotInClosedTree = false;
+ mParentIsChromeHandler = false;
mParentTarget = nullptr;
mEventTargetAtParent = nullptr;
}
+ dom::EventTarget* GetParentTarget()
+ {
+ return mParentTarget;
+ }
+
+ void SetParentTarget(dom::EventTarget* aParentTarget, bool aIsChromeHandler)
+ {
+ mParentTarget = aParentTarget;
+ if (mParentTarget) {
+ mParentIsChromeHandler = aIsChromeHandler;
+ }
+ }
+
/**
- * Member that must be set in PreHandleEvent by event targets. If set to false,
- * indicates that this event target will not be handling the event and
+ * Member that must be set in GetEventTargetParent by event targets. If set to
+ * false, indicates that this event target will not be handling the event and
* construction of the event target chain is complete. The target that sets
* mCanHandle to false is NOT included in the event target chain.
*/
@@ -170,7 +190,7 @@ public:
/**
* true if the original target of the event is inside anonymous content.
- * This is set before calling PreHandleEvent on event targets.
+ * This is set before calling GetEventTargetParent on event targets.
*/
bool mOriginalTargetIsInAnon;
@@ -182,27 +202,45 @@ public:
/**
* If it is known that the current target doesn't have a listener manager
- * when PreHandleEvent is called, set this to false.
+ * when GetEventTargetParent is called, set this to false.
*/
bool mMayHaveListenerManager;
/**
+ * Whether or not nsIDOMEventTarget::PreHandleEvent will be called. Default is
+ * false;
+ */
+ bool mWantsPreHandleEvent;
+
+ /**
+ * True if the current target is either closed ShadowRoot or root of
+ * chrome only access tree (for example native anonymous content).
+ */
+ bool mRootOfClosedTree;
+
+ /**
+ * True if mParentTarget is HTMLSlotElement in a closed shadow tree and the
+ * current target is assigned to that slot.
+ */
+ bool mParentIsSlotInClosedTree;
+
+ /**
+ * True if mParentTarget is a chrome handler in the event path.
+ */
+ bool mParentIsChromeHandler;
+
+private:
+ /**
* Parent item in the event target chain.
*/
dom::EventTarget* mParentTarget;
+public:
/**
* If the event needs to be retargeted, this is the event target,
* which should be used when the event is handled at mParentTarget.
*/
dom::EventTarget* mEventTargetAtParent;
-
- /**
- * An array of destination insertion points that need to be inserted
- * into the event path of nodes that are distributed by the
- * web components distribution algorithm.
- */
- nsTArray<nsIContent*> mDestInsertionPoints;
};
class EventChainPostVisitor : public mozilla::EventChainVisitor
@@ -280,6 +318,9 @@ public:
WidgetEvent* aEvent,
const nsAString& aEventType);
+ static void GetComposedPathFor(WidgetEvent* aEvent,
+ nsTArray<RefPtr<dom::EventTarget>>& aPath);
+
/**
* Called at shutting down.
*/
diff --git a/dom/events/EventListenerManager.cpp b/dom/events/EventListenerManager.cpp
index 0774c3296..81fb67f5f 100644
--- a/dom/events/EventListenerManager.cpp
+++ b/dom/events/EventListenerManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -1087,7 +1086,10 @@ EventListenerManager::HandleEventSubType(Listener* aListener,
if (NS_SUCCEEDED(result)) {
if (mIsMainThreadELM) {
- nsContentUtils::EnterMicroTask();
+ CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get();
+ if (ccjs) {
+ ccjs->EnterMicroTask();
+ }
}
// nsIDOMEvent::currentTarget is set in EventDispatcher.
if (listenerHolder.HasWebIDLCallback()) {
@@ -1099,7 +1101,10 @@ EventListenerManager::HandleEventSubType(Listener* aListener,
result = listenerHolder.GetXPCOMCallback()->HandleEvent(aDOMEvent);
}
if (mIsMainThreadELM) {
- nsContentUtils::LeaveMicroTask();
+ CycleCollectedJSContext* ccjs = CycleCollectedJSContext::Get();
+ if (ccjs) {
+ ccjs->LeaveMicroTask();
+ }
}
}
diff --git a/dom/events/EventListenerManager.h b/dom/events/EventListenerManager.h
index 36637cfd7..51373317d 100644
--- a/dom/events/EventListenerManager.h
+++ b/dom/events/EventListenerManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/EventListenerService.cpp b/dom/events/EventListenerService.cpp
index 18a61b149..035f6f5fb 100644
--- a/dom/events/EventListenerService.cpp
+++ b/dom/events/EventListenerService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/EventListenerService.h b/dom/events/EventListenerService.h
index 7c478fd01..514f2c3e0 100644
--- a/dom/events/EventListenerService.h
+++ b/dom/events/EventListenerService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/EventNameList.h b/dom/events/EventNameList.h
index 94e8a589b..edb84ea01 100644
--- a/dom/events/EventNameList.h
+++ b/dom/events/EventNameList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/EventStateManager.cpp b/dom/events/EventStateManager.cpp
index e16d68c81..c8f1acdb5 100644
--- a/dom/events/EventStateManager.cpp
+++ b/dom/events/EventStateManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -2517,7 +2516,7 @@ EventStateManager::ComputeScrollTarget(nsIFrame* aTargetFrame,
return frameToScroll;
}
- ScrollbarStyles ss = scrollableFrame->GetScrollbarStyles();
+ ScrollStyles ss = scrollableFrame->GetScrollStyles();
bool hiddenForV = (NS_STYLE_OVERFLOW_HIDDEN == ss.mVertical);
bool hiddenForH = (NS_STYLE_OVERFLOW_HIDDEN == ss.mHorizontal);
if ((hiddenForV && hiddenForH) ||
@@ -2610,7 +2609,7 @@ EventStateManager::DoScrollText(nsIScrollableFrame* aScrollableFrame,
ComputeScrollAmountForDefaultAction(aEvent, scrollAmountInDevPixels);
// Don't scroll around the axis whose overflow style is hidden.
- ScrollbarStyles overflowStyle = aScrollableFrame->GetScrollbarStyles();
+ ScrollStyles overflowStyle = aScrollableFrame->GetScrollStyles();
if (overflowStyle.mHorizontal == NS_STYLE_OVERFLOW_HIDDEN) {
actualDevPixelScrollAmount.x = 0;
}
@@ -3484,6 +3483,12 @@ EventStateManager::PostHandleEvent(nsPresContext* aPresContext,
// make sure to fire the enter and exit_synth events after the
// eDragExit event, otherwise we'll clean up too early
GenerateDragDropEnterExit(presContext, aEvent->AsDragEvent());
+ if (ContentChild* child = ContentChild::GetSingleton()) {
+ // SendUpdateDropEffect to prevent nsIDragService from waiting for
+ // response of forwarded dragexit event.
+ child->SendUpdateDropEffect(nsIDragService::DRAGDROP_ACTION_NONE,
+ nsIDragService::DRAGDROP_ACTION_NONE);
+ }
break;
case eBeforeKeyUp:
@@ -3900,13 +3905,13 @@ CreateMouseOrPointerWidgetEvent(WidgetMouseEvent* aMouseEvent,
newPointerEvent->mWidth = sourcePointer->mWidth;
newPointerEvent->mHeight = sourcePointer->mHeight;
newPointerEvent->inputSource = sourcePointer->inputSource;
- newPointerEvent->relatedTarget = aRelatedContent;
+ newPointerEvent->mRelatedTarget = aRelatedContent;
aNewEvent = newPointerEvent.forget();
} else {
aNewEvent =
new WidgetMouseEvent(aMouseEvent->IsTrusted(), aMessage,
aMouseEvent->mWidget, WidgetMouseEvent::eReal);
- aNewEvent->relatedTarget = aRelatedContent;
+ aNewEvent->mRelatedTarget = aRelatedContent;
}
aNewEvent->mRefPoint = aMouseEvent->mRefPoint;
aNewEvent->mModifiers = aMouseEvent->mModifiers;
@@ -4446,6 +4451,19 @@ EventStateManager::GenerateDragDropEnterExit(nsPresContext* aPresContext,
FireDragEnterOrExit(sLastDragOverFrame->PresContext(),
aDragEvent, eDragExit,
targetContent, lastContent, sLastDragOverFrame);
+ nsIContent* target = sLastDragOverFrame ? sLastDragOverFrame.GetFrame()->GetContent() : nullptr;
+ if (IsRemoteTarget(target)) {
+ // Dragging something and moving from web content to chrome only
+ // fires dragexit and dragleave to xul:browser. We have to forward
+ // dragexit to sLastDragOverFrame when its content is a remote
+ // target. We don't forward dragleave since it's generated from
+ // dragexit.
+ WidgetDragEvent remoteEvent(aDragEvent->IsTrusted(), eDragExit,
+ aDragEvent->mWidget);
+ remoteEvent.AssignDragEventData(*aDragEvent, true);
+ nsEventStatus remoteStatus = nsEventStatus_eIgnore;
+ HandleCrossProcessEvent(&remoteEvent, &remoteStatus);
+ }
}
FireDragEnterOrExit(aPresContext, aDragEvent, eDragEnter,
@@ -4502,14 +4520,11 @@ EventStateManager::FireDragEnterOrExit(nsPresContext* aPresContext,
nsIContent* aTargetContent,
nsWeakFrame& aTargetFrame)
{
+ MOZ_ASSERT(aMessage == eDragLeave || aMessage == eDragExit ||
+ aMessage == eDragEnter);
nsEventStatus status = nsEventStatus_eIgnore;
WidgetDragEvent event(aDragEvent->IsTrusted(), aMessage, aDragEvent->mWidget);
- event.mRefPoint = aDragEvent->mRefPoint;
- event.mModifiers = aDragEvent->mModifiers;
- event.buttons = aDragEvent->buttons;
- event.relatedTarget = aRelatedTarget;
- event.inputSource = aDragEvent->inputSource;
-
+ event.AssignDragEventData(*aDragEvent, true);
mCurrentTargetContent = aTargetContent;
if (aTargetContent != aRelatedTarget) {
@@ -4527,10 +4542,7 @@ EventStateManager::FireDragEnterOrExit(nsPresContext* aPresContext,
// collect any changes to moz cursor settings stored in the event's
// data transfer.
- if (aMessage == eDragLeave || aMessage == eDragExit ||
- aMessage == eDragEnter) {
- UpdateDragDataTransfer(&event);
- }
+ UpdateDragDataTransfer(&event);
}
// Finally dispatch the event to the frame
diff --git a/dom/events/EventStateManager.h b/dom/events/EventStateManager.h
index 95ce9a907..819c93b60 100644
--- a/dom/events/EventStateManager.h
+++ b/dom/events/EventStateManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/EventStates.h b/dom/events/EventStates.h
index 183070755..ef7c961e0 100644
--- a/dom/events/EventStates.h
+++ b/dom/events/EventStates.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -292,14 +291,39 @@ private:
#define NS_EVENT_STATE_RTL NS_DEFINE_EVENT_STATE_MACRO(43)
// Element is highlighted (devtools inspector)
#define NS_EVENT_STATE_DEVTOOLS_HIGHLIGHTED NS_DEFINE_EVENT_STATE_MACRO(45)
-// Element is an unresolved custom element candidate
-#define NS_EVENT_STATE_UNRESOLVED NS_DEFINE_EVENT_STATE_MACRO(46)
+// States for tracking the state of the "dir" attribute for HTML elements. We
+// use these to avoid having to get "dir" attributes all the time during
+// selector matching for some parts of the UA stylesheet.
+//
+// These states are externally managed, because we also don't want to keep
+// getting "dir" attributes in IntrinsicState.
+//
+// Element is HTML and has a "dir" attibute. This state might go away depending
+// on how https://github.com/whatwg/html/issues/2769 gets resolved. The value
+// could be anything.
+#define NS_EVENT_STATE_HAS_DIR_ATTR NS_DEFINE_EVENT_STATE_MACRO(46)
+// Element is HTML, has a "dir" attribute, and the attribute's value is
+// case-insensitively equal to "ltr".
+#define NS_EVENT_STATE_DIR_ATTR_LTR NS_DEFINE_EVENT_STATE_MACRO(47)
+// Element is HTML, has a "dir" attribute, and the attribute's value is
+// case-insensitively equal to "rtl".
+#define NS_EVENT_STATE_DIR_ATTR_RTL NS_DEFINE_EVENT_STATE_MACRO(48)
+// Element is HTML, and is either a <bdi> element with no valid-valued "dir"
+// attribute or any HTML element which has a "dir" attribute whose value is
+// "auto".
+#define NS_EVENT_STATE_DIR_ATTR_LIKE_AUTO NS_DEFINE_EVENT_STATE_MACRO(49)
+// Free bit NS_DEFINE_EVENT_STATE_MACRO(50)
// Element is transitioning for rules changed by style editor
-#define NS_EVENT_STATE_STYLEEDITOR_TRANSITIONING NS_DEFINE_EVENT_STATE_MACRO(47)
+#define NS_EVENT_STATE_STYLEEDITOR_TRANSITIONING NS_DEFINE_EVENT_STATE_MACRO(51)
// Content shows its placeholder
-#define NS_EVENT_STATE_PLACEHOLDERSHOWN NS_DEFINE_EVENT_STATE_MACRO(48)
+#define NS_EVENT_STATE_PLACEHOLDERSHOWN NS_DEFINE_EVENT_STATE_MACRO(52)
// Element has focus-within.
-#define NS_EVENT_STATE_FOCUS_WITHIN NS_DEFINE_EVENT_STATE_MACRO(49)
+#define NS_EVENT_STATE_FOCUS_WITHIN NS_DEFINE_EVENT_STATE_MACRO(53)
+
+#define DIR_ATTR_STATES (NS_EVENT_STATE_HAS_DIR_ATTR | \
+ NS_EVENT_STATE_DIR_ATTR_LTR | \
+ NS_EVENT_STATE_DIR_ATTR_RTL | \
+ NS_EVENT_STATE_DIR_ATTR_LIKE_AUTO)
// Event state that is used for values that need to be parsed but do nothing.
#define NS_EVENT_STATE_IGNORE NS_DEFINE_EVENT_STATE_MACRO(63)
@@ -310,11 +334,10 @@ private:
#define DIRECTION_STATES (NS_EVENT_STATE_LTR | NS_EVENT_STATE_RTL)
-#define ESM_MANAGED_STATES (NS_EVENT_STATE_ACTIVE | NS_EVENT_STATE_FOCUS | \
+#define ESM_MANAGED_STATES (DIR_ATTR_STATES | NS_EVENT_STATE_ACTIVE | NS_EVENT_STATE_FOCUS | \
NS_EVENT_STATE_HOVER | NS_EVENT_STATE_DRAGOVER | \
NS_EVENT_STATE_URLTARGET | NS_EVENT_STATE_FOCUSRING | \
- NS_EVENT_STATE_FULL_SCREEN | NS_EVENT_STATE_UNRESOLVED | \
- NS_EVENT_STATE_FOCUS_WITHIN)
+ NS_EVENT_STATE_FULL_SCREEN | NS_EVENT_STATE_FOCUS_WITHIN)
#define INTRINSIC_STATES (~ESM_MANAGED_STATES)
diff --git a/dom/events/EventTarget.cpp b/dom/events/EventTarget.cpp
index b111b9f9d..cf69dcb85 100644
--- a/dom/events/EventTarget.cpp
+++ b/dom/events/EventTarget.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/EventTarget.h b/dom/events/EventTarget.h
index 3e6b6ca42..c64296993 100644
--- a/dom/events/EventTarget.h
+++ b/dom/events/EventTarget.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/FocusEvent.cpp b/dom/events/FocusEvent.cpp
index d665710c5..02fce7c93 100644
--- a/dom/events/FocusEvent.cpp
+++ b/dom/events/FocusEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/FocusEvent.h b/dom/events/FocusEvent.h
index 596fa460c..055555716 100644
--- a/dom/events/FocusEvent.h
+++ b/dom/events/FocusEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/IMEContentObserver.cpp b/dom/events/IMEContentObserver.cpp
index a690cfa64..3dbea4be1 100644
--- a/dom/events/IMEContentObserver.cpp
+++ b/dom/events/IMEContentObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/IMEContentObserver.h b/dom/events/IMEContentObserver.h
index e459096d9..0653bfec2 100644
--- a/dom/events/IMEContentObserver.h
+++ b/dom/events/IMEContentObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/IMEStateManager.cpp b/dom/events/IMEStateManager.cpp
index fd628fb6f..f8e01b323 100644
--- a/dom/events/IMEStateManager.cpp
+++ b/dom/events/IMEStateManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/IMEStateManager.h b/dom/events/IMEStateManager.h
index 34509847f..74f68bece 100644
--- a/dom/events/IMEStateManager.h
+++ b/dom/events/IMEStateManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/ImageCaptureError.cpp b/dom/events/ImageCaptureError.cpp
index c68adfa85..a45a22b5a 100644
--- a/dom/events/ImageCaptureError.cpp
+++ b/dom/events/ImageCaptureError.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/ImageCaptureError.h b/dom/events/ImageCaptureError.h
index fc8a97417..d39902e7d 100644
--- a/dom/events/ImageCaptureError.h
+++ b/dom/events/ImageCaptureError.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/InputEvent.cpp b/dom/events/InputEvent.cpp
index d230ace39..5a652ba3d 100644
--- a/dom/events/InputEvent.cpp
+++ b/dom/events/InputEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/InputEvent.h b/dom/events/InputEvent.h
index 3e0e9361d..18fa7c3b0 100644
--- a/dom/events/InputEvent.h
+++ b/dom/events/InputEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/InternalMutationEvent.h b/dom/events/InternalMutationEvent.h
index d600ebe0e..8da7ee9de 100644
--- a/dom/events/InternalMutationEvent.h
+++ b/dom/events/InternalMutationEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/JSEventHandler.cpp b/dom/events/JSEventHandler.cpp
index b9e7c4d84..85c2590dd 100644
--- a/dom/events/JSEventHandler.cpp
+++ b/dom/events/JSEventHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/JSEventHandler.h b/dom/events/JSEventHandler.h
index be2ecf9a4..a301443f0 100644
--- a/dom/events/JSEventHandler.h
+++ b/dom/events/JSEventHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/KeyNameList.h b/dom/events/KeyNameList.h
index 361122ec7..766e9b320 100644
--- a/dom/events/KeyNameList.h
+++ b/dom/events/KeyNameList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/KeyboardEvent.cpp b/dom/events/KeyboardEvent.cpp
index f0831d97b..174c85706 100644
--- a/dom/events/KeyboardEvent.cpp
+++ b/dom/events/KeyboardEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/KeyboardEvent.h b/dom/events/KeyboardEvent.h
index ee860c401..6d8c15b4a 100644
--- a/dom/events/KeyboardEvent.h
+++ b/dom/events/KeyboardEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/MessageEvent.cpp b/dom/events/MessageEvent.cpp
index 565cd0cd7..018f5eda5 100644
--- a/dom/events/MessageEvent.cpp
+++ b/dom/events/MessageEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/MessageEvent.h b/dom/events/MessageEvent.h
index 4419b7927..a13028a50 100644
--- a/dom/events/MessageEvent.h
+++ b/dom/events/MessageEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/MouseEvent.cpp b/dom/events/MouseEvent.cpp
index 5e540ac5b..72f0df426 100644
--- a/dom/events/MouseEvent.cpp
+++ b/dom/events/MouseEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -79,7 +78,7 @@ MouseEvent::InitMouseEvent(const nsAString& aType,
case ePointerEventClass:
case eSimpleGestureEventClass: {
WidgetMouseEventBase* mouseEventBase = mEvent->AsMouseEventBase();
- mouseEventBase->relatedTarget = aRelatedTarget;
+ mouseEventBase->mRelatedTarget = aRelatedTarget;
mouseEventBase->button = aButton;
mouseEventBase->InitBasicModifiers(aCtrlKey, aAltKey, aShiftKey, aMetaKey);
mClientPoint.x = aClientX;
@@ -295,8 +294,7 @@ MouseEvent::GetRelatedTarget()
case eDragEventClass:
case ePointerEventClass:
case eSimpleGestureEventClass:
- relatedTarget =
- do_QueryInterface(mEvent->AsMouseEventBase()->relatedTarget);
+ relatedTarget = mEvent->AsMouseEventBase()->mRelatedTarget;
break;
default:
break;
diff --git a/dom/events/MouseEvent.h b/dom/events/MouseEvent.h
index 45539e8f9..36c817b83 100644
--- a/dom/events/MouseEvent.h
+++ b/dom/events/MouseEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/MouseScrollEvent.cpp b/dom/events/MouseScrollEvent.cpp
index 4007c0b51..b8b0f78e3 100644
--- a/dom/events/MouseScrollEvent.cpp
+++ b/dom/events/MouseScrollEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/MouseScrollEvent.h b/dom/events/MouseScrollEvent.h
index 5cfa03911..de8d4e4c6 100644
--- a/dom/events/MouseScrollEvent.h
+++ b/dom/events/MouseScrollEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/MutationEvent.cpp b/dom/events/MutationEvent.cpp
index 0ba495fbf..6c2b4c953 100644
--- a/dom/events/MutationEvent.cpp
+++ b/dom/events/MutationEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/MutationEvent.h b/dom/events/MutationEvent.h
index 93e969708..20dfc2312 100644
--- a/dom/events/MutationEvent.h
+++ b/dom/events/MutationEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/NotifyPaintEvent.cpp b/dom/events/NotifyPaintEvent.cpp
index bc3537db9..4d4d3abad 100644
--- a/dom/events/NotifyPaintEvent.cpp
+++ b/dom/events/NotifyPaintEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/NotifyPaintEvent.h b/dom/events/NotifyPaintEvent.h
index e73a453d7..0930fd0bd 100644
--- a/dom/events/NotifyPaintEvent.h
+++ b/dom/events/NotifyPaintEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/PaintRequest.cpp b/dom/events/PaintRequest.cpp
index bd17c4754..c7f271be4 100644
--- a/dom/events/PaintRequest.cpp
+++ b/dom/events/PaintRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/PaintRequest.h b/dom/events/PaintRequest.h
index 77887c0ee..bb388d206 100644
--- a/dom/events/PaintRequest.h
+++ b/dom/events/PaintRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/PhysicalKeyCodeNameList.h b/dom/events/PhysicalKeyCodeNameList.h
index d83af423d..9cb460465 100644
--- a/dom/events/PhysicalKeyCodeNameList.h
+++ b/dom/events/PhysicalKeyCodeNameList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/PointerEvent.cpp b/dom/events/PointerEvent.cpp
index fbaa0f737..a0b468e31 100644
--- a/dom/events/PointerEvent.cpp
+++ b/dom/events/PointerEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/events/PointerEvent.h b/dom/events/PointerEvent.h
index 12d4941dc..69f63d159 100644
--- a/dom/events/PointerEvent.h
+++ b/dom/events/PointerEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/events/ScrollAreaEvent.cpp b/dom/events/ScrollAreaEvent.cpp
index 39f9a3c4a..5af380466 100644
--- a/dom/events/ScrollAreaEvent.cpp
+++ b/dom/events/ScrollAreaEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/ScrollAreaEvent.h b/dom/events/ScrollAreaEvent.h
index d91070351..adc4e29ed 100644
--- a/dom/events/ScrollAreaEvent.h
+++ b/dom/events/ScrollAreaEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/SimpleGestureEvent.cpp b/dom/events/SimpleGestureEvent.cpp
index 597eb411e..0a971f5f8 100644
--- a/dom/events/SimpleGestureEvent.cpp
+++ b/dom/events/SimpleGestureEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/SimpleGestureEvent.h b/dom/events/SimpleGestureEvent.h
index b394753f6..e85943086 100644
--- a/dom/events/SimpleGestureEvent.h
+++ b/dom/events/SimpleGestureEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/StorageEvent.cpp b/dom/events/StorageEvent.cpp
index 64332503e..ae4c386b3 100644
--- a/dom/events/StorageEvent.cpp
+++ b/dom/events/StorageEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/StorageEvent.h b/dom/events/StorageEvent.h
index 39a107b93..f209782b6 100644
--- a/dom/events/StorageEvent.h
+++ b/dom/events/StorageEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/TextComposition.cpp b/dom/events/TextComposition.cpp
index a53711c1f..bd7ebbc46 100644
--- a/dom/events/TextComposition.cpp
+++ b/dom/events/TextComposition.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/TextComposition.h b/dom/events/TextComposition.h
index a4161f82f..02e19cb04 100644
--- a/dom/events/TextComposition.h
+++ b/dom/events/TextComposition.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/Touch.cpp b/dom/events/Touch.cpp
index a538fa695..c23f8824c 100644
--- a/dom/events/Touch.cpp
+++ b/dom/events/Touch.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/Touch.h b/dom/events/Touch.h
index f98f7f951..a346b5a2d 100644
--- a/dom/events/Touch.h
+++ b/dom/events/Touch.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/TouchEvent.cpp b/dom/events/TouchEvent.cpp
index 0656021a0..c4cb33d95 100644
--- a/dom/events/TouchEvent.cpp
+++ b/dom/events/TouchEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/TouchEvent.h b/dom/events/TouchEvent.h
index c92e9a490..202907086 100644
--- a/dom/events/TouchEvent.h
+++ b/dom/events/TouchEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/TransitionEvent.cpp b/dom/events/TransitionEvent.cpp
index 2490b31f1..68a715ede 100644
--- a/dom/events/TransitionEvent.cpp
+++ b/dom/events/TransitionEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/TransitionEvent.h b/dom/events/TransitionEvent.h
index 345181a01..3e03e8918 100644
--- a/dom/events/TransitionEvent.h
+++ b/dom/events/TransitionEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/UIEvent.cpp b/dom/events/UIEvent.cpp
index 561bf4a26..09544f0b8 100644
--- a/dom/events/UIEvent.cpp
+++ b/dom/events/UIEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/UIEvent.h b/dom/events/UIEvent.h
index 3ec960109..41ea56a05 100644
--- a/dom/events/UIEvent.h
+++ b/dom/events/UIEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/VirtualKeyCodeList.h b/dom/events/VirtualKeyCodeList.h
index 395d10cc8..c1d1f613f 100644
--- a/dom/events/VirtualKeyCodeList.h
+++ b/dom/events/VirtualKeyCodeList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/WheelEvent.cpp b/dom/events/WheelEvent.cpp
index de6c9445a..74a15429c 100644
--- a/dom/events/WheelEvent.cpp
+++ b/dom/events/WheelEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/WheelEvent.h b/dom/events/WheelEvent.h
index fd54606fd..81c4bdc2a 100644
--- a/dom/events/WheelEvent.h
+++ b/dom/events/WheelEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/WheelHandlingHelper.cpp b/dom/events/WheelHandlingHelper.cpp
index 81f2b6bfa..c69dde13c 100644
--- a/dom/events/WheelHandlingHelper.cpp
+++ b/dom/events/WheelHandlingHelper.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/WheelHandlingHelper.h b/dom/events/WheelHandlingHelper.h
index b88aa23b2..296e08950 100644
--- a/dom/events/WheelHandlingHelper.h
+++ b/dom/events/WheelHandlingHelper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/XULCommandEvent.cpp b/dom/events/XULCommandEvent.cpp
index 770f37688..73c0d7589 100644
--- a/dom/events/XULCommandEvent.cpp
+++ b/dom/events/XULCommandEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/XULCommandEvent.h b/dom/events/XULCommandEvent.h
index ea5e85a75..c9a64e8a7 100644
--- a/dom/events/XULCommandEvent.h
+++ b/dom/events/XULCommandEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/events/moz.build b/dom/events/moz.build
index 2378b92be..c5fd75014 100644
--- a/dom/events/moz.build
+++ b/dom/events/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/events/test/mochitest.ini b/dom/events/test/mochitest.ini
index 0397487bb..27e8e7150 100644
--- a/dom/events/test/mochitest.ini
+++ b/dom/events/test/mochitest.ini
@@ -185,3 +185,4 @@ skip-if = toolkit == 'android' #CRASH_DUMP, RANDOM
[test_bug687787.html]
[test_bug1298970.html]
[test_bug1304044.html]
+[test_bug1305458.html]
diff --git a/dom/events/test/test_bug1305458.html b/dom/events/test/test_bug1305458.html
new file mode 100644
index 000000000..df65959a9
--- /dev/null
+++ b/dom/events/test/test_bug1305458.html
@@ -0,0 +1,50 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1305458
+-->
+<head>
+ <title>Test for Bug 1305458</title>
+ <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <script type="application/javascript" src="/tests/SimpleTest/EventUtils.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+ <style>
+ input[type=number] {
+ -moz-appearance: textfield;
+ }
+ input[type=number]:focus,
+ input[type=number]:hover {
+ -moz-appearance: number-input;
+ }
+ </style>
+</head>
+<body onload="doTest()">
+ <a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1305458">Mozilla Bug 1305458</a>
+ <input id="test_input" type="number">
+ <div id="test_div">bar</div>
+ <script>
+ SimpleTest.waitForExplicitFinish();
+ var change_count = 0;
+ function doTest() {
+ let input = document.getElementById("test_input");
+ let div = document.getElementById("test_div");
+ input.addEventListener("change", () => {
+ ++change_count;
+ }, false);
+ // mouse hover
+ input.focus();
+ synthesizeMouse(input, 1, 1, {type: "mousemove"});
+ synthesizeKey("1", {});
+ input.blur();
+ is(change_count, 1, "input should fire change when blur");
+
+ input.focus();
+ synthesizeMouse(div, 1, 1, {type: "mousemove"});
+ synthesizeKey("1", {});
+ input.blur();
+ is(change_count, 2, "input should fire change when blur");
+ SimpleTest.finish();
+ }
+ </script>
+</body>
+</html>
diff --git a/dom/fetch/ChannelInfo.cpp b/dom/fetch/ChannelInfo.cpp
index 5ecc7f762..8d6414c65 100644
--- a/dom/fetch/ChannelInfo.cpp
+++ b/dom/fetch/ChannelInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/ChannelInfo.h b/dom/fetch/ChannelInfo.h
index a8acacfe0..bfb42eab3 100644
--- a/dom/fetch/ChannelInfo.h
+++ b/dom/fetch/ChannelInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/Fetch.cpp b/dom/fetch/Fetch.cpp
index f0350fbce..ed9cb542d 100644
--- a/dom/fetch/Fetch.cpp
+++ b/dom/fetch/Fetch.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/Fetch.h b/dom/fetch/Fetch.h
index 842066152..73d5c1519 100644
--- a/dom/fetch/Fetch.h
+++ b/dom/fetch/Fetch.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/FetchConsumer.cpp b/dom/fetch/FetchConsumer.cpp
index d2d07eaa2..3d80ea5b2 100644
--- a/dom/fetch/FetchConsumer.cpp
+++ b/dom/fetch/FetchConsumer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/FetchConsumer.h b/dom/fetch/FetchConsumer.h
index 77af09d9b..e872eea0b 100644
--- a/dom/fetch/FetchConsumer.h
+++ b/dom/fetch/FetchConsumer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/FetchDriver.cpp b/dom/fetch/FetchDriver.cpp
index 14c000121..79bd5a0e3 100644
--- a/dom/fetch/FetchDriver.cpp
+++ b/dom/fetch/FetchDriver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/FetchDriver.h b/dom/fetch/FetchDriver.h
index 57dffa5a7..10fd4d53d 100644
--- a/dom/fetch/FetchDriver.h
+++ b/dom/fetch/FetchDriver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/FetchIPCTypes.h b/dom/fetch/FetchIPCTypes.h
index faedceff2..5181bfc00 100644
--- a/dom/fetch/FetchIPCTypes.h
+++ b/dom/fetch/FetchIPCTypes.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/FetchObserver.cpp b/dom/fetch/FetchObserver.cpp
index 93d93773f..e46cbc4d6 100644
--- a/dom/fetch/FetchObserver.cpp
+++ b/dom/fetch/FetchObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/FetchObserver.h b/dom/fetch/FetchObserver.h
index 5cd835b3d..bc53aea9e 100644
--- a/dom/fetch/FetchObserver.h
+++ b/dom/fetch/FetchObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/Headers.cpp b/dom/fetch/Headers.cpp
index ca5aa57a6..53bb316b3 100644
--- a/dom/fetch/Headers.cpp
+++ b/dom/fetch/Headers.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/Headers.h b/dom/fetch/Headers.h
index 1dd92f779..392f6f07e 100644
--- a/dom/fetch/Headers.h
+++ b/dom/fetch/Headers.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/InternalHeaders.cpp b/dom/fetch/InternalHeaders.cpp
index f66221d42..b659d14ef 100644
--- a/dom/fetch/InternalHeaders.cpp
+++ b/dom/fetch/InternalHeaders.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/InternalHeaders.h b/dom/fetch/InternalHeaders.h
index 98046f0ef..a904ba595 100644
--- a/dom/fetch/InternalHeaders.h
+++ b/dom/fetch/InternalHeaders.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/InternalRequest.cpp b/dom/fetch/InternalRequest.cpp
index 65f8095e2..71a5590aa 100644
--- a/dom/fetch/InternalRequest.cpp
+++ b/dom/fetch/InternalRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/InternalRequest.h b/dom/fetch/InternalRequest.h
index 966490675..786c71e00 100644
--- a/dom/fetch/InternalRequest.h
+++ b/dom/fetch/InternalRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/InternalResponse.cpp b/dom/fetch/InternalResponse.cpp
index 1b1ae13e3..d99df3d7d 100644
--- a/dom/fetch/InternalResponse.cpp
+++ b/dom/fetch/InternalResponse.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/InternalResponse.h b/dom/fetch/InternalResponse.h
index 0801e3250..1e282e8ab 100644
--- a/dom/fetch/InternalResponse.h
+++ b/dom/fetch/InternalResponse.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/Request.cpp b/dom/fetch/Request.cpp
index 76f3ce5c5..7a93a8179 100644
--- a/dom/fetch/Request.cpp
+++ b/dom/fetch/Request.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/Request.h b/dom/fetch/Request.h
index 34cbc52cf..8c01cbd79 100644
--- a/dom/fetch/Request.h
+++ b/dom/fetch/Request.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/Response.cpp b/dom/fetch/Response.cpp
index 241614286..100a0204c 100644
--- a/dom/fetch/Response.cpp
+++ b/dom/fetch/Response.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/Response.h b/dom/fetch/Response.h
index ca86c3458..fa2ced87d 100644
--- a/dom/fetch/Response.h
+++ b/dom/fetch/Response.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/fetch/moz.build b/dom/fetch/moz.build
index e2b466428..2efcd3fb2 100644
--- a/dom/fetch/moz.build
+++ b/dom/fetch/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/filehandle/FileHandleBase.cpp b/dom/filehandle/FileHandleBase.cpp
index ebfd6f077..404d89452 100644
--- a/dom/filehandle/FileHandleBase.cpp
+++ b/dom/filehandle/FileHandleBase.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filehandle/FileHandleBase.h b/dom/filehandle/FileHandleBase.h
index 859a6e9ae..68c2f48cf 100644
--- a/dom/filehandle/FileHandleBase.h
+++ b/dom/filehandle/FileHandleBase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filehandle/FileHandleCommon.cpp b/dom/filehandle/FileHandleCommon.cpp
index 0c465ec17..a28571c7d 100644
--- a/dom/filehandle/FileHandleCommon.cpp
+++ b/dom/filehandle/FileHandleCommon.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filehandle/FileHandleStorage.h b/dom/filehandle/FileHandleStorage.h
index 957f4005a..39d85ea54 100644
--- a/dom/filehandle/FileHandleStorage.h
+++ b/dom/filehandle/FileHandleStorage.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filehandle/FileRequestBase.h b/dom/filehandle/FileRequestBase.h
index bff3997d7..a6cc87109 100644
--- a/dom/filehandle/FileRequestBase.h
+++ b/dom/filehandle/FileRequestBase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filehandle/MutableFileBase.cpp b/dom/filehandle/MutableFileBase.cpp
index dc577e8f5..de5d06f3c 100644
--- a/dom/filehandle/MutableFileBase.cpp
+++ b/dom/filehandle/MutableFileBase.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filehandle/MutableFileBase.h b/dom/filehandle/MutableFileBase.h
index 88d53ff78..30ea9d6af 100644
--- a/dom/filehandle/MutableFileBase.h
+++ b/dom/filehandle/MutableFileBase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filehandle/moz.build b/dom/filehandle/moz.build
index 37e5c22a7..1c0b5593f 100644
--- a/dom/filehandle/moz.build
+++ b/dom/filehandle/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/filesystem/Directory.cpp b/dom/filesystem/Directory.cpp
index 5e8a4a745..5bc97259b 100644
--- a/dom/filesystem/Directory.cpp
+++ b/dom/filesystem/Directory.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/Directory.h b/dom/filesystem/Directory.h
index 3a532e043..0c1aa04af 100644
--- a/dom/filesystem/Directory.h
+++ b/dom/filesystem/Directory.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemBase.cpp b/dom/filesystem/FileSystemBase.cpp
index b19e12738..f094549c7 100644
--- a/dom/filesystem/FileSystemBase.cpp
+++ b/dom/filesystem/FileSystemBase.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemBase.h b/dom/filesystem/FileSystemBase.h
index 0b875eb14..e65983773 100644
--- a/dom/filesystem/FileSystemBase.h
+++ b/dom/filesystem/FileSystemBase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemRequestParent.cpp b/dom/filesystem/FileSystemRequestParent.cpp
index 95a316b96..4bd640b7c 100644
--- a/dom/filesystem/FileSystemRequestParent.cpp
+++ b/dom/filesystem/FileSystemRequestParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemRequestParent.h b/dom/filesystem/FileSystemRequestParent.h
index a5f4cd6cc..2a4201075 100644
--- a/dom/filesystem/FileSystemRequestParent.h
+++ b/dom/filesystem/FileSystemRequestParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemSecurity.cpp b/dom/filesystem/FileSystemSecurity.cpp
index 7c70374a0..9da80daa9 100644
--- a/dom/filesystem/FileSystemSecurity.cpp
+++ b/dom/filesystem/FileSystemSecurity.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemSecurity.h b/dom/filesystem/FileSystemSecurity.h
index fe61dc7c6..48b142b58 100644
--- a/dom/filesystem/FileSystemSecurity.h
+++ b/dom/filesystem/FileSystemSecurity.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemTaskBase.cpp b/dom/filesystem/FileSystemTaskBase.cpp
index e9eed90ee..82745d9ef 100644
--- a/dom/filesystem/FileSystemTaskBase.cpp
+++ b/dom/filesystem/FileSystemTaskBase.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemTaskBase.h b/dom/filesystem/FileSystemTaskBase.h
index 9910f4c1f..40299d94b 100644
--- a/dom/filesystem/FileSystemTaskBase.h
+++ b/dom/filesystem/FileSystemTaskBase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemUtils.cpp b/dom/filesystem/FileSystemUtils.cpp
index 56293cbda..dc563d9c7 100644
--- a/dom/filesystem/FileSystemUtils.cpp
+++ b/dom/filesystem/FileSystemUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/FileSystemUtils.h b/dom/filesystem/FileSystemUtils.h
index 42fc5573c..eb5e1c3e9 100644
--- a/dom/filesystem/FileSystemUtils.h
+++ b/dom/filesystem/FileSystemUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/GetDirectoryListingTask.cpp b/dom/filesystem/GetDirectoryListingTask.cpp
index 999366fe8..1d4f77b3b 100644
--- a/dom/filesystem/GetDirectoryListingTask.cpp
+++ b/dom/filesystem/GetDirectoryListingTask.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/GetDirectoryListingTask.h b/dom/filesystem/GetDirectoryListingTask.h
index 7692c8bae..b189b03be 100644
--- a/dom/filesystem/GetDirectoryListingTask.h
+++ b/dom/filesystem/GetDirectoryListingTask.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/GetFileOrDirectoryTask.cpp b/dom/filesystem/GetFileOrDirectoryTask.cpp
index 446c641f4..4c1b400e9 100644
--- a/dom/filesystem/GetFileOrDirectoryTask.cpp
+++ b/dom/filesystem/GetFileOrDirectoryTask.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/GetFileOrDirectoryTask.h b/dom/filesystem/GetFileOrDirectoryTask.h
index 2a53df158..1e921df31 100644
--- a/dom/filesystem/GetFileOrDirectoryTask.h
+++ b/dom/filesystem/GetFileOrDirectoryTask.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/GetFilesHelper.cpp b/dom/filesystem/GetFilesHelper.cpp
index c4cbe7f14..563ef60b4 100644
--- a/dom/filesystem/GetFilesHelper.cpp
+++ b/dom/filesystem/GetFilesHelper.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/GetFilesHelper.h b/dom/filesystem/GetFilesHelper.h
index 371c73ef2..4afd41d7e 100644
--- a/dom/filesystem/GetFilesHelper.h
+++ b/dom/filesystem/GetFilesHelper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/GetFilesTask.cpp b/dom/filesystem/GetFilesTask.cpp
index b283eec54..2ae0027fe 100644
--- a/dom/filesystem/GetFilesTask.cpp
+++ b/dom/filesystem/GetFilesTask.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/GetFilesTask.h b/dom/filesystem/GetFilesTask.h
index be08a5d18..41eb5e2e4 100644
--- a/dom/filesystem/GetFilesTask.h
+++ b/dom/filesystem/GetFilesTask.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/OSFileSystem.cpp b/dom/filesystem/OSFileSystem.cpp
index 1e9a5ddbd..0eb80c8d0 100644
--- a/dom/filesystem/OSFileSystem.cpp
+++ b/dom/filesystem/OSFileSystem.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/OSFileSystem.h b/dom/filesystem/OSFileSystem.h
index 165f6b99a..9dd317762 100644
--- a/dom/filesystem/OSFileSystem.h
+++ b/dom/filesystem/OSFileSystem.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/PFileSystemRequest.ipdl b/dom/filesystem/PFileSystemRequest.ipdl
index 49803a770..e727b3efc 100644
--- a/dom/filesystem/PFileSystemRequest.ipdl
+++ b/dom/filesystem/PFileSystemRequest.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/CallbackRunnables.cpp b/dom/filesystem/compat/CallbackRunnables.cpp
index efd14b03e..72572c11b 100644
--- a/dom/filesystem/compat/CallbackRunnables.cpp
+++ b/dom/filesystem/compat/CallbackRunnables.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/CallbackRunnables.h b/dom/filesystem/compat/CallbackRunnables.h
index 3ff77f1a9..3e68b0e5b 100644
--- a/dom/filesystem/compat/CallbackRunnables.h
+++ b/dom/filesystem/compat/CallbackRunnables.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystem.cpp b/dom/filesystem/compat/FileSystem.cpp
index b45980fc6..bc7b638b9 100644
--- a/dom/filesystem/compat/FileSystem.cpp
+++ b/dom/filesystem/compat/FileSystem.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystem.h b/dom/filesystem/compat/FileSystem.h
index 43ce2ea38..424852ecc 100644
--- a/dom/filesystem/compat/FileSystem.h
+++ b/dom/filesystem/compat/FileSystem.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemDirectoryEntry.cpp b/dom/filesystem/compat/FileSystemDirectoryEntry.cpp
index 3157ef654..8eaa10af8 100644
--- a/dom/filesystem/compat/FileSystemDirectoryEntry.cpp
+++ b/dom/filesystem/compat/FileSystemDirectoryEntry.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemDirectoryEntry.h b/dom/filesystem/compat/FileSystemDirectoryEntry.h
index 96dc21831..affcff979 100644
--- a/dom/filesystem/compat/FileSystemDirectoryEntry.h
+++ b/dom/filesystem/compat/FileSystemDirectoryEntry.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemDirectoryReader.cpp b/dom/filesystem/compat/FileSystemDirectoryReader.cpp
index 137437378..d09c61c89 100644
--- a/dom/filesystem/compat/FileSystemDirectoryReader.cpp
+++ b/dom/filesystem/compat/FileSystemDirectoryReader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemDirectoryReader.h b/dom/filesystem/compat/FileSystemDirectoryReader.h
index 391a79329..79033973a 100644
--- a/dom/filesystem/compat/FileSystemDirectoryReader.h
+++ b/dom/filesystem/compat/FileSystemDirectoryReader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemEntry.cpp b/dom/filesystem/compat/FileSystemEntry.cpp
index 638c2c6db..2a7dd5896 100644
--- a/dom/filesystem/compat/FileSystemEntry.cpp
+++ b/dom/filesystem/compat/FileSystemEntry.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemEntry.h b/dom/filesystem/compat/FileSystemEntry.h
index 769fb8f3f..baa057729 100644
--- a/dom/filesystem/compat/FileSystemEntry.h
+++ b/dom/filesystem/compat/FileSystemEntry.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemFileEntry.cpp b/dom/filesystem/compat/FileSystemFileEntry.cpp
index 6302df06d..e09f3edf2 100644
--- a/dom/filesystem/compat/FileSystemFileEntry.cpp
+++ b/dom/filesystem/compat/FileSystemFileEntry.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemFileEntry.h b/dom/filesystem/compat/FileSystemFileEntry.h
index 06b76e9f8..f3c9eb908 100644
--- a/dom/filesystem/compat/FileSystemFileEntry.h
+++ b/dom/filesystem/compat/FileSystemFileEntry.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemRootDirectoryEntry.cpp b/dom/filesystem/compat/FileSystemRootDirectoryEntry.cpp
index 68ce62aa2..1cfb1a54d 100644
--- a/dom/filesystem/compat/FileSystemRootDirectoryEntry.cpp
+++ b/dom/filesystem/compat/FileSystemRootDirectoryEntry.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemRootDirectoryEntry.h b/dom/filesystem/compat/FileSystemRootDirectoryEntry.h
index 28c151ea2..f1fc32c23 100644
--- a/dom/filesystem/compat/FileSystemRootDirectoryEntry.h
+++ b/dom/filesystem/compat/FileSystemRootDirectoryEntry.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemRootDirectoryReader.cpp b/dom/filesystem/compat/FileSystemRootDirectoryReader.cpp
index 5b4a41752..01649aa10 100644
--- a/dom/filesystem/compat/FileSystemRootDirectoryReader.cpp
+++ b/dom/filesystem/compat/FileSystemRootDirectoryReader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/FileSystemRootDirectoryReader.h b/dom/filesystem/compat/FileSystemRootDirectoryReader.h
index 54bca7726..7507eb986 100644
--- a/dom/filesystem/compat/FileSystemRootDirectoryReader.h
+++ b/dom/filesystem/compat/FileSystemRootDirectoryReader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/filesystem/compat/moz.build b/dom/filesystem/compat/moz.build
index fc3f9482f..3e3fff804 100644
--- a/dom/filesystem/compat/moz.build
+++ b/dom/filesystem/compat/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/filesystem/compat/tests/moz.build b/dom/filesystem/compat/tests/moz.build
index 3b13ba431..f6733cd05 100644
--- a/dom/filesystem/compat/tests/moz.build
+++ b/dom/filesystem/compat/tests/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/filesystem/moz.build b/dom/filesystem/moz.build
index 1b6a8d3ca..29997c2f6 100644
--- a/dom/filesystem/moz.build
+++ b/dom/filesystem/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/filesystem/tests/moz.build b/dom/filesystem/tests/moz.build
index 3b13ba431..f6733cd05 100644
--- a/dom/filesystem/tests/moz.build
+++ b/dom/filesystem/tests/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/gamepad/Gamepad.cpp b/dom/gamepad/Gamepad.cpp
index 0c59b190e..4b58a5d06 100644
--- a/dom/gamepad/Gamepad.cpp
+++ b/dom/gamepad/Gamepad.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/Gamepad.h b/dom/gamepad/Gamepad.h
index e388348f0..98a12293c 100644
--- a/dom/gamepad/Gamepad.h
+++ b/dom/gamepad/Gamepad.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadButton.cpp b/dom/gamepad/GamepadButton.cpp
index 154a13985..039477964 100644
--- a/dom/gamepad/GamepadButton.cpp
+++ b/dom/gamepad/GamepadButton.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadButton.h b/dom/gamepad/GamepadButton.h
index 2855959e5..74693fe89 100644
--- a/dom/gamepad/GamepadButton.h
+++ b/dom/gamepad/GamepadButton.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadManager.cpp b/dom/gamepad/GamepadManager.cpp
index 0c05b3ddb..ecc8645ab 100644
--- a/dom/gamepad/GamepadManager.cpp
+++ b/dom/gamepad/GamepadManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadManager.h b/dom/gamepad/GamepadManager.h
index 38fdfc342..c685a9bd6 100644
--- a/dom/gamepad/GamepadManager.h
+++ b/dom/gamepad/GamepadManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadMonitoring.cpp b/dom/gamepad/GamepadMonitoring.cpp
index ac45aea57..27d03b899 100644
--- a/dom/gamepad/GamepadMonitoring.cpp
+++ b/dom/gamepad/GamepadMonitoring.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadMonitoring.h b/dom/gamepad/GamepadMonitoring.h
index bf231c4dd..e58b82e99 100644
--- a/dom/gamepad/GamepadMonitoring.h
+++ b/dom/gamepad/GamepadMonitoring.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadPlatformService.cpp b/dom/gamepad/GamepadPlatformService.cpp
index 3df967aec..200f2c07e 100644
--- a/dom/gamepad/GamepadPlatformService.cpp
+++ b/dom/gamepad/GamepadPlatformService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadPlatformService.h b/dom/gamepad/GamepadPlatformService.h
index 77a08ae17..3b519dd10 100644
--- a/dom/gamepad/GamepadPlatformService.h
+++ b/dom/gamepad/GamepadPlatformService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadPose.cpp b/dom/gamepad/GamepadPose.cpp
index 25d157b8b..64fd53ebf 100644
--- a/dom/gamepad/GamepadPose.cpp
+++ b/dom/gamepad/GamepadPose.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadPose.h b/dom/gamepad/GamepadPose.h
index fa32df3fc..ba6adab88 100644
--- a/dom/gamepad/GamepadPose.h
+++ b/dom/gamepad/GamepadPose.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadServiceTest.cpp b/dom/gamepad/GamepadServiceTest.cpp
index e8ec46cfe..8e42c9de9 100644
--- a/dom/gamepad/GamepadServiceTest.cpp
+++ b/dom/gamepad/GamepadServiceTest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/GamepadServiceTest.h b/dom/gamepad/GamepadServiceTest.h
index 6ef9fcc19..f7b442d95 100644
--- a/dom/gamepad/GamepadServiceTest.h
+++ b/dom/gamepad/GamepadServiceTest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/android/AndroidGamepad.cpp b/dom/gamepad/android/AndroidGamepad.cpp
index 6ed1ef2ee..889250f98 100644
--- a/dom/gamepad/android/AndroidGamepad.cpp
+++ b/dom/gamepad/android/AndroidGamepad.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/cocoa/CocoaGamepad.cpp b/dom/gamepad/cocoa/CocoaGamepad.cpp
index 7fcf48532..eb6eda9a1 100644
--- a/dom/gamepad/cocoa/CocoaGamepad.cpp
+++ b/dom/gamepad/cocoa/CocoaGamepad.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/fallback/FallbackGamepad.cpp b/dom/gamepad/fallback/FallbackGamepad.cpp
index f843a243c..72efcd1d8 100644
--- a/dom/gamepad/fallback/FallbackGamepad.cpp
+++ b/dom/gamepad/fallback/FallbackGamepad.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/linux/LinuxGamepad.cpp b/dom/gamepad/linux/LinuxGamepad.cpp
index 8c6e8ea75..22f28953b 100644
--- a/dom/gamepad/linux/LinuxGamepad.cpp
+++ b/dom/gamepad/linux/LinuxGamepad.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/linux/udev.h b/dom/gamepad/linux/udev.h
index 18da9f7dc..744cf0f79 100644
--- a/dom/gamepad/linux/udev.h
+++ b/dom/gamepad/linux/udev.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/gamepad/moz.build b/dom/gamepad/moz.build
index 81ff37631..b8e3a855b 100644
--- a/dom/gamepad/moz.build
+++ b/dom/gamepad/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/gamepad/windows/WindowsGamepad.cpp b/dom/gamepad/windows/WindowsGamepad.cpp
index ddab2f28c..83914d951 100644
--- a/dom/gamepad/windows/WindowsGamepad.cpp
+++ b/dom/gamepad/windows/WindowsGamepad.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/geolocation/MLSFallback.cpp b/dom/geolocation/MLSFallback.cpp
index 6cd355ed7..7e1873115 100644
--- a/dom/geolocation/MLSFallback.cpp
+++ b/dom/geolocation/MLSFallback.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/geolocation/MLSFallback.h b/dom/geolocation/MLSFallback.h
index a61379297..3682d9d43 100644
--- a/dom/geolocation/MLSFallback.h
+++ b/dom/geolocation/MLSFallback.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/geolocation/moz.build b/dom/geolocation/moz.build
index 8ac79e8b3..023087522 100644
--- a/dom/geolocation/moz.build
+++ b/dom/geolocation/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/geolocation/nsGeoPosition.cpp b/dom/geolocation/nsGeoPosition.cpp
index c4732457a..fce5b7f64 100644
--- a/dom/geolocation/nsGeoPosition.cpp
+++ b/dom/geolocation/nsGeoPosition.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/geolocation/nsGeoPosition.h b/dom/geolocation/nsGeoPosition.h
index cefb4ae8d..6c9b92366 100644
--- a/dom/geolocation/nsGeoPosition.h
+++ b/dom/geolocation/nsGeoPosition.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/geolocation/nsGeoPositionIPCSerialiser.h b/dom/geolocation/nsGeoPositionIPCSerialiser.h
index 3965ef192..a0aceb78c 100644
--- a/dom/geolocation/nsGeoPositionIPCSerialiser.h
+++ b/dom/geolocation/nsGeoPositionIPCSerialiser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/geolocation/nsGeolocation.cpp b/dom/geolocation/nsGeolocation.cpp
index 846e7fff4..f961535df 100644
--- a/dom/geolocation/nsGeolocation.cpp
+++ b/dom/geolocation/nsGeolocation.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/geolocation/nsGeolocation.h b/dom/geolocation/nsGeolocation.h
index 0bcc587e4..2598537ec 100644
--- a/dom/geolocation/nsGeolocation.h
+++ b/dom/geolocation/nsGeolocation.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/Grid.cpp b/dom/grid/Grid.cpp
index d10d8b581..69b9bb58c 100644
--- a/dom/grid/Grid.cpp
+++ b/dom/grid/Grid.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/Grid.h b/dom/grid/Grid.h
index 426f33ec2..ffc48890e 100644
--- a/dom/grid/Grid.h
+++ b/dom/grid/Grid.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridArea.cpp b/dom/grid/GridArea.cpp
index d8a7eca76..9a7ea147b 100644
--- a/dom/grid/GridArea.cpp
+++ b/dom/grid/GridArea.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridArea.h b/dom/grid/GridArea.h
index 19b610ca2..77c367238 100644
--- a/dom/grid/GridArea.h
+++ b/dom/grid/GridArea.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridDimension.cpp b/dom/grid/GridDimension.cpp
index 040f3a380..2e2ffe584 100644
--- a/dom/grid/GridDimension.cpp
+++ b/dom/grid/GridDimension.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridDimension.h b/dom/grid/GridDimension.h
index ec9635444..cfd7f145a 100644
--- a/dom/grid/GridDimension.h
+++ b/dom/grid/GridDimension.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridLine.cpp b/dom/grid/GridLine.cpp
index 8e1e5ed7c..d4c98f799 100644
--- a/dom/grid/GridLine.cpp
+++ b/dom/grid/GridLine.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridLine.h b/dom/grid/GridLine.h
index 858f9d5e0..6549b0638 100644
--- a/dom/grid/GridLine.h
+++ b/dom/grid/GridLine.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridLines.cpp b/dom/grid/GridLines.cpp
index 2604eff6c..3b06b1abd 100644
--- a/dom/grid/GridLines.cpp
+++ b/dom/grid/GridLines.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridLines.h b/dom/grid/GridLines.h
index 784fe2d28..148f97817 100644
--- a/dom/grid/GridLines.h
+++ b/dom/grid/GridLines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridTrack.cpp b/dom/grid/GridTrack.cpp
index 328af7d5c..df04263c8 100644
--- a/dom/grid/GridTrack.cpp
+++ b/dom/grid/GridTrack.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridTrack.h b/dom/grid/GridTrack.h
index d1825c5ad..1ed84041d 100644
--- a/dom/grid/GridTrack.h
+++ b/dom/grid/GridTrack.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridTracks.cpp b/dom/grid/GridTracks.cpp
index 8b607973c..885e57a31 100644
--- a/dom/grid/GridTracks.cpp
+++ b/dom/grid/GridTracks.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/GridTracks.h b/dom/grid/GridTracks.h
index ab7faeacd..3d3407d20 100644
--- a/dom/grid/GridTracks.h
+++ b/dom/grid/GridTracks.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/grid/moz.build b/dom/grid/moz.build
index 62025c98e..686f42ac1 100644
--- a/dom/grid/moz.build
+++ b/dom/grid/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/heapsnapshot/AutoMemMap.cpp b/dom/heapsnapshot/AutoMemMap.cpp
index e725a99c6..126591659 100644
--- a/dom/heapsnapshot/AutoMemMap.cpp
+++ b/dom/heapsnapshot/AutoMemMap.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/heapsnapshot/AutoMemMap.h b/dom/heapsnapshot/AutoMemMap.h
index 537d68004..0f8ac1a99 100644
--- a/dom/heapsnapshot/AutoMemMap.h
+++ b/dom/heapsnapshot/AutoMemMap.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/heapsnapshot/CoreDump.proto b/dom/heapsnapshot/CoreDump.proto
index 24a223e11..9280a00a2 100644
--- a/dom/heapsnapshot/CoreDump.proto
+++ b/dom/heapsnapshot/CoreDump.proto
@@ -1,5 +1,4 @@
/* -*- Mode: protobuf; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * vim: set ts=8 sts=4 et sw=4 tw=99:
* 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/. */
diff --git a/dom/heapsnapshot/HeapSnapshotTempFileHelperChild.h b/dom/heapsnapshot/HeapSnapshotTempFileHelperChild.h
index a1d433a5e..277b25ba2 100644
--- a/dom/heapsnapshot/HeapSnapshotTempFileHelperChild.h
+++ b/dom/heapsnapshot/HeapSnapshotTempFileHelperChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set sw=4 ts=8 et tw=80 : */
/* 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/. */
diff --git a/dom/heapsnapshot/HeapSnapshotTempFileHelperParent.cpp b/dom/heapsnapshot/HeapSnapshotTempFileHelperParent.cpp
index 7246a9daa..1d87827d0 100644
--- a/dom/heapsnapshot/HeapSnapshotTempFileHelperParent.cpp
+++ b/dom/heapsnapshot/HeapSnapshotTempFileHelperParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set sw=4 ts=8 et tw=80 : */
/* 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/. */
diff --git a/dom/heapsnapshot/HeapSnapshotTempFileHelperParent.h b/dom/heapsnapshot/HeapSnapshotTempFileHelperParent.h
index 1582279da..d8513688a 100644
--- a/dom/heapsnapshot/HeapSnapshotTempFileHelperParent.h
+++ b/dom/heapsnapshot/HeapSnapshotTempFileHelperParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set sw=4 ts=8 et tw=80 : */
/* 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/. */
diff --git a/dom/heapsnapshot/PHeapSnapshotTempFileHelper.ipdl b/dom/heapsnapshot/PHeapSnapshotTempFileHelper.ipdl
index 2576470e2..0029f627a 100644
--- a/dom/heapsnapshot/PHeapSnapshotTempFileHelper.ipdl
+++ b/dom/heapsnapshot/PHeapSnapshotTempFileHelper.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
- * vim: set ts=8 sts=4 et sw=4 tw=99:
* 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/. */
diff --git a/dom/heapsnapshot/moz.build b/dom/heapsnapshot/moz.build
index 3fb6b0552..de0c9b327 100644
--- a/dom/heapsnapshot/moz.build
+++ b/dom/heapsnapshot/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/heapsnapshot/tests/gtest/moz.build b/dom/heapsnapshot/tests/gtest/moz.build
index 08c31e47c..e6d200377 100644
--- a/dom/heapsnapshot/tests/gtest/moz.build
+++ b/dom/heapsnapshot/tests/gtest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/html/HTMLAllCollection.cpp b/dom/html/HTMLAllCollection.cpp
index 6305cce31..9335fbebd 100644
--- a/dom/html/HTMLAllCollection.cpp
+++ b/dom/html/HTMLAllCollection.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLAllCollection.h b/dom/html/HTMLAllCollection.h
index aed72eaaa..5c454286c 100644
--- a/dom/html/HTMLAllCollection.h
+++ b/dom/html/HTMLAllCollection.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLAnchorElement.cpp b/dom/html/HTMLAnchorElement.cpp
index a6cfacc53..2dc20cff0 100644
--- a/dom/html/HTMLAnchorElement.cpp
+++ b/dom/html/HTMLAnchorElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -14,6 +13,7 @@
#include "nsContentUtils.h"
#include "nsGkAtoms.h"
#include "nsHTMLDNSPrefetch.h"
+#include "nsAttrValueOrString.h"
#include "nsIDocument.h"
#include "nsIPresShell.h"
#include "nsPresContext.h"
@@ -252,9 +252,9 @@ HTMLAnchorElement::IsHTMLFocusable(bool aWithMouse,
}
nsresult
-HTMLAnchorElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLAnchorElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
- return PreHandleEventForAnchors(aVisitor);
+ return GetEventTargetParentForAnchors(aVisitor);
}
nsresult
@@ -372,84 +372,37 @@ HTMLAnchorElement::GetHrefURI() const
}
nsresult
-HTMLAnchorElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
+HTMLAnchorElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify)
{
- bool reset = false;
- if (aName == nsGkAtoms::href && kNameSpaceID_None == aNameSpaceID) {
- // If we do not have a cached URI, we have some value here so we must reset
- // our link state after calling the parent.
- if (!Link::HasCachedURI()) {
- reset = true;
- }
- // However, if we have a cached URI, we'll want to see if the value changed.
- else {
- nsAutoString val;
- GetHref(val);
- if (!val.Equals(aValue)) {
- reset = true;
- }
- }
- if (reset) {
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::href) {
CancelDNSPrefetch(HTML_ANCHOR_DNS_PREFETCH_DEFERRED,
HTML_ANCHOR_DNS_PREFETCH_REQUESTED);
}
}
- nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix,
- aValue, aNotify);
-
- // The ordering of the parent class's SetAttr call and Link::ResetLinkState
- // is important here! The attribute is not set until SetAttr returns, and
- // we will need the updated attribute value because notifying the document
- // that content states have changed will call IntrinsicState, which will try
- // to get updated information about the visitedness from Link.
- if (reset) {
- Link::ResetLinkState(!!aNotify, true);
- if (IsInComposedDoc()) {
- TryDNSPrefetch();
- }
- }
-
- return rv;
+ return nsGenericHTMLElement::BeforeSetAttr(aNamespaceID, aName, aValue,
+ aNotify);
}
nsresult
-HTMLAnchorElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
+HTMLAnchorElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
- bool href =
- (aAttribute == nsGkAtoms::href && kNameSpaceID_None == aNameSpaceID);
-
- if (href) {
- CancelDNSPrefetch(HTML_ANCHOR_DNS_PREFETCH_DEFERRED,
- HTML_ANCHOR_DNS_PREFETCH_REQUESTED);
- }
-
- nsresult rv = nsGenericHTMLElement::UnsetAttr(aNameSpaceID, aAttribute,
- aNotify);
-
- // The ordering of the parent class's UnsetAttr call and Link::ResetLinkState
- // is important here! The attribute is not unset until UnsetAttr returns, and
- // we will need the updated attribute value because notifying the document
- // that content states have changed will call IntrinsicState, which will try
- // to get updated information about the visitedness from Link.
- if (href) {
- Link::ResetLinkState(!!aNotify, false);
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::href) {
+ Link::ResetLinkState(aNotify, !!aValue);
+ if (aValue && IsInComposedDoc()) {
+ TryDNSPrefetch();
+ }
+ }
}
- return rv;
-}
-
-bool
-HTMLAnchorElement::ParseAttribute(int32_t aNamespaceID,
- nsIAtom* aAttribute,
- const nsAString& aValue,
- nsAttrValue& aResult)
-{
- return nsGenericHTMLElement::ParseAttribute(aNamespaceID, aAttribute, aValue,
- aResult);
+ return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName,
+ aValue, aOldValue, aNotify);
}
EventStates
diff --git a/dom/html/HTMLAnchorElement.h b/dom/html/HTMLAnchorElement.h
index 2cb04ad93..c80c823c7 100644
--- a/dom/html/HTMLAnchorElement.h
+++ b/dom/html/HTMLAnchorElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -58,27 +57,21 @@ public:
bool aNullParent = true) override;
virtual bool IsHTMLFocusable(bool aWithMouse, bool *aIsFocusable, int32_t *aTabIndex) override;
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
virtual bool IsLink(nsIURI** aURI) const override;
virtual void GetLinkTarget(nsAString& aTarget) override;
virtual already_AddRefed<nsIURI> GetHrefURI() const override;
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
- virtual bool ParseAttribute(int32_t aNamespaceID,
- nsIAtom* aAttribute,
- const nsAString& aValue,
- nsAttrValue& aResult) override;
+ virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify) override;
+ virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
diff --git a/dom/html/HTMLAreaElement.cpp b/dom/html/HTMLAreaElement.cpp
index 098081b8b..2ffc00848 100644
--- a/dom/html/HTMLAreaElement.cpp
+++ b/dom/html/HTMLAreaElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -81,9 +80,9 @@ HTMLAreaElement::SetTarget(const nsAString& aValue)
}
nsresult
-HTMLAreaElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLAreaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
- return PreHandleEventForAnchors(aVisitor);
+ return GetEventTargetParentForAnchors(aVisitor);
}
nsresult
@@ -153,42 +152,22 @@ HTMLAreaElement::UnbindFromTree(bool aDeep, bool aNullParent)
}
nsresult
-HTMLAreaElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- nsresult rv =
- nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix, aValue, aNotify);
-
- // The ordering of the parent class's SetAttr call and Link::ResetLinkState
- // is important here! The attribute is not set until SetAttr returns, and
- // we will need the updated attribute value because notifying the document
- // that content states have changed will call IntrinsicState, which will try
- // to get updated information about the visitedness from Link.
- if (aName == nsGkAtoms::href && aNameSpaceID == kNameSpaceID_None) {
- Link::ResetLinkState(!!aNotify, true);
+HTMLAreaElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ // This must happen after the attribute is set. We will need the updated
+ // attribute value because notifying the document that content states have
+ // changed will call IntrinsicState, which will try to get updated
+ // information about the visitedness from Link.
+ if (aName == nsGkAtoms::href) {
+ Link::ResetLinkState(aNotify, !!aValue);
+ }
}
- return rv;
-}
-
-nsresult
-HTMLAreaElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
-{
- nsresult rv = nsGenericHTMLElement::UnsetAttr(aNameSpaceID, aAttribute,
- aNotify);
-
- // The ordering of the parent class's UnsetAttr call and Link::ResetLinkState
- // is important here! The attribute is not unset until UnsetAttr returns, and
- // we will need the updated attribute value because notifying the document
- // that content states have changed will call IntrinsicState, which will try
- // to get updated information about the visitedness from Link.
- if (aAttribute == nsGkAtoms::href && kNameSpaceID_None == aNameSpaceID) {
- Link::ResetLinkState(!!aNotify, false);
- }
-
- return rv;
+ return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
+ aOldValue, aNotify);
}
#define IMPL_URI_PART(_part) \
diff --git a/dom/html/HTMLAreaElement.h b/dom/html/HTMLAreaElement.h
index 650c0fd8f..919ba9d60 100644
--- a/dom/html/HTMLAreaElement.h
+++ b/dom/html/HTMLAreaElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -44,7 +43,8 @@ public:
// nsIDOMHTMLAreaElement
NS_DECL_NSIDOMHTMLAREAELEMENT
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(EventChainPostVisitor& aVisitor) override;
virtual bool IsLink(nsIURI** aURI) const override;
virtual void GetLinkTarget(nsAString& aTarget) override;
@@ -55,16 +55,6 @@ public:
bool aCompileEventHandlers) override;
virtual void UnbindFromTree(bool aDeep = true,
bool aNullParent = true) override;
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override;
@@ -185,6 +175,11 @@ protected:
virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
+ virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+
RefPtr<nsDOMTokenList > mRelList;
};
diff --git a/dom/html/HTMLAudioElement.cpp b/dom/html/HTMLAudioElement.cpp
index 0722c7b15..6ec048836 100644
--- a/dom/html/HTMLAudioElement.cpp
+++ b/dom/html/HTMLAudioElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLAudioElement.h b/dom/html/HTMLAudioElement.h
index 138131cd9..4c98c1480 100644
--- a/dom/html/HTMLAudioElement.h
+++ b/dom/html/HTMLAudioElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLBRElement.cpp b/dom/html/HTMLBRElement.cpp
index db51a4d7e..83bbdff8f 100644
--- a/dom/html/HTMLBRElement.cpp
+++ b/dom/html/HTMLBRElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLBRElement.h b/dom/html/HTMLBRElement.h
index cf7aaaedc..63c22767a 100644
--- a/dom/html/HTMLBRElement.h
+++ b/dom/html/HTMLBRElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLBodyElement.cpp b/dom/html/HTMLBodyElement.cpp
index ee1bced02..d030b69d7 100644
--- a/dom/html/HTMLBodyElement.cpp
+++ b/dom/html/HTMLBodyElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -28,180 +27,8 @@ namespace dom {
//----------------------------------------------------------------------
-BodyRule::BodyRule(HTMLBodyElement* aPart)
- : mPart(aPart)
-{
-}
-
-BodyRule::~BodyRule()
-{
-}
-
-NS_IMPL_ISUPPORTS(BodyRule, nsIStyleRule)
-
-/* virtual */ void
-BodyRule::MapRuleInfoInto(nsRuleData* aData)
-{
- if (!(aData->mSIDs & NS_STYLE_INHERIT_BIT(Margin)) || !mPart)
- return; // We only care about margins.
-
- int32_t bodyMarginWidth = -1;
- int32_t bodyMarginHeight = -1;
- int32_t bodyTopMargin = -1;
- int32_t bodyBottomMargin = -1;
- int32_t bodyLeftMargin = -1;
- int32_t bodyRightMargin = -1;
-
- // check the mode (fortunately, the ruleData has a presContext for us to use!)
- NS_ASSERTION(aData->mPresContext, "null presContext in ruleNode was unexpected");
- nsCompatibility mode = aData->mPresContext->CompatibilityMode();
-
-
- const nsAttrValue* value;
- if (mPart->GetAttrCount() > 0) {
- // if marginwidth/marginheight are set, reflect them as 'margin'
- value = mPart->GetParsedAttr(nsGkAtoms::marginwidth);
- if (value && value->Type() == nsAttrValue::eInteger) {
- bodyMarginWidth = value->GetIntegerValue();
- if (bodyMarginWidth < 0) bodyMarginWidth = 0;
- nsCSSValue* marginLeft = aData->ValueForMarginLeft();
- if (marginLeft->GetUnit() == eCSSUnit_Null)
- marginLeft->SetFloatValue((float)bodyMarginWidth, eCSSUnit_Pixel);
- nsCSSValue* marginRight = aData->ValueForMarginRight();
- if (marginRight->GetUnit() == eCSSUnit_Null)
- marginRight->SetFloatValue((float)bodyMarginWidth, eCSSUnit_Pixel);
- }
-
- value = mPart->GetParsedAttr(nsGkAtoms::marginheight);
- if (value && value->Type() == nsAttrValue::eInteger) {
- bodyMarginHeight = value->GetIntegerValue();
- if (bodyMarginHeight < 0) bodyMarginHeight = 0;
- nsCSSValue* marginTop = aData->ValueForMarginTop();
- if (marginTop->GetUnit() == eCSSUnit_Null)
- marginTop->SetFloatValue((float)bodyMarginHeight, eCSSUnit_Pixel);
- nsCSSValue* marginBottom = aData->ValueForMarginBottom();
- if (marginBottom->GetUnit() == eCSSUnit_Null)
- marginBottom->SetFloatValue((float)bodyMarginHeight, eCSSUnit_Pixel);
- }
-
- // topmargin (IE-attribute)
- value = mPart->GetParsedAttr(nsGkAtoms::topmargin);
- if (value && value->Type() == nsAttrValue::eInteger) {
- bodyTopMargin = value->GetIntegerValue();
- if (bodyTopMargin < 0) bodyTopMargin = 0;
- nsCSSValue* marginTop = aData->ValueForMarginTop();
- if (marginTop->GetUnit() == eCSSUnit_Null)
- marginTop->SetFloatValue((float)bodyTopMargin, eCSSUnit_Pixel);
- }
-
- // bottommargin (IE-attribute)
- value = mPart->GetParsedAttr(nsGkAtoms::bottommargin);
- if (value && value->Type() == nsAttrValue::eInteger) {
- bodyBottomMargin = value->GetIntegerValue();
- if (bodyBottomMargin < 0) bodyBottomMargin = 0;
- nsCSSValue* marginBottom = aData->ValueForMarginBottom();
- if (marginBottom->GetUnit() == eCSSUnit_Null)
- marginBottom->SetFloatValue((float)bodyBottomMargin, eCSSUnit_Pixel);
- }
-
- // leftmargin (IE-attribute)
- value = mPart->GetParsedAttr(nsGkAtoms::leftmargin);
- if (value && value->Type() == nsAttrValue::eInteger) {
- bodyLeftMargin = value->GetIntegerValue();
- if (bodyLeftMargin < 0) bodyLeftMargin = 0;
- nsCSSValue* marginLeft = aData->ValueForMarginLeft();
- if (marginLeft->GetUnit() == eCSSUnit_Null)
- marginLeft->SetFloatValue((float)bodyLeftMargin, eCSSUnit_Pixel);
- }
-
- // rightmargin (IE-attribute)
- value = mPart->GetParsedAttr(nsGkAtoms::rightmargin);
- if (value && value->Type() == nsAttrValue::eInteger) {
- bodyRightMargin = value->GetIntegerValue();
- if (bodyRightMargin < 0) bodyRightMargin = 0;
- nsCSSValue* marginRight = aData->ValueForMarginRight();
- if (marginRight->GetUnit() == eCSSUnit_Null)
- marginRight->SetFloatValue((float)bodyRightMargin, eCSSUnit_Pixel);
- }
-
- }
-
- // if marginwidth or marginheight is set in the <frame> and not set in the <body>
- // reflect them as margin in the <body>
- if (bodyMarginWidth == -1 || bodyMarginHeight == -1) {
- nsCOMPtr<nsIDocShell> docShell(aData->mPresContext->GetDocShell());
- if (docShell) {
- nscoord frameMarginWidth=-1; // default value
- nscoord frameMarginHeight=-1; // default value
- docShell->GetMarginWidth(&frameMarginWidth); // -1 indicates not set
- docShell->GetMarginHeight(&frameMarginHeight);
- if ((frameMarginWidth >= 0) && (bodyMarginWidth == -1)) { // set in <frame> & not in <body>
- if (eCompatibility_NavQuirks == mode) {
- if ((bodyMarginHeight == -1) && (0 > frameMarginHeight)) // nav quirk
- frameMarginHeight = 0;
- }
- }
- if ((frameMarginHeight >= 0) && (bodyMarginHeight == -1)) { // set in <frame> & not in <body>
- if (eCompatibility_NavQuirks == mode) {
- if ((bodyMarginWidth == -1) && (0 > frameMarginWidth)) // nav quirk
- frameMarginWidth = 0;
- }
- }
-
- if ((bodyMarginWidth == -1) && (frameMarginWidth >= 0)) {
- nsCSSValue* marginLeft = aData->ValueForMarginLeft();
- if (marginLeft->GetUnit() == eCSSUnit_Null)
- marginLeft->SetFloatValue((float)frameMarginWidth, eCSSUnit_Pixel);
- nsCSSValue* marginRight = aData->ValueForMarginRight();
- if (marginRight->GetUnit() == eCSSUnit_Null)
- marginRight->SetFloatValue((float)frameMarginWidth, eCSSUnit_Pixel);
- }
-
- if ((bodyMarginHeight == -1) && (frameMarginHeight >= 0)) {
- nsCSSValue* marginTop = aData->ValueForMarginTop();
- if (marginTop->GetUnit() == eCSSUnit_Null)
- marginTop->SetFloatValue((float)frameMarginHeight, eCSSUnit_Pixel);
- nsCSSValue* marginBottom = aData->ValueForMarginBottom();
- if (marginBottom->GetUnit() == eCSSUnit_Null)
- marginBottom->SetFloatValue((float)frameMarginHeight, eCSSUnit_Pixel);
- }
- }
- }
-}
-
-/* virtual */ bool
-BodyRule::MightMapInheritedStyleData()
-{
- return false;
-}
-
-/* virtual */ bool
-BodyRule::GetDiscretelyAnimatedCSSValue(nsCSSPropertyID aProperty,
- nsCSSValue* aValue)
-{
- MOZ_ASSERT(false, "GetDiscretelyAnimatedCSSValue is not implemented yet");
- return false;
-}
-
-#ifdef DEBUG
-/* virtual */ void
-BodyRule::List(FILE* out, int32_t aIndent) const
-{
- nsAutoCString indent;
- for (int32_t index = aIndent; --index >= 0; ) {
- indent.AppendLiteral(" ");
- }
- fprintf_stderr(out, "%s[body rule] {}\n", indent.get());
-}
-#endif
-
-//----------------------------------------------------------------------
-
HTMLBodyElement::~HTMLBodyElement()
{
- if (mContentStyleRule) {
- mContentStyleRule->mPart = nullptr;
- }
}
JSObject*
@@ -349,17 +176,6 @@ HTMLBodyElement::ParseAttribute(int32_t aNamespaceID,
}
void
-HTMLBodyElement::UnbindFromTree(bool aDeep, bool aNullParent)
-{
- if (mContentStyleRule) {
- mContentStyleRule->mPart = nullptr;
- mContentStyleRule = nullptr;
- }
-
- nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
-}
-
-void
HTMLBodyElement::MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
nsRuleData* aData)
{
@@ -414,22 +230,6 @@ HTMLBodyElement::GetAttributeMappingFunction() const
return &MapAttributesIntoRule;
}
-NS_IMETHODIMP
-HTMLBodyElement::WalkContentStyleRules(nsRuleWalker* aRuleWalker)
-{
- nsGenericHTMLElement::WalkContentStyleRules(aRuleWalker);
-
- if (!mContentStyleRule && IsInUncomposedDoc()) {
- // XXXbz should this use OwnerDoc() or GetComposedDoc()?
- // sXBL/XBL2 issue!
- mContentStyleRule = new BodyRule(this);
- }
- if (aRuleWalker && mContentStyleRule) {
- aRuleWalker->Forward(mContentStyleRule);
- }
- return NS_OK;
-}
-
NS_IMETHODIMP_(bool)
HTMLBodyElement::IsAttributeMapped(const nsIAtom* aAttribute) const
{
@@ -438,12 +238,12 @@ HTMLBodyElement::IsAttributeMapped(const nsIAtom* aAttribute) const
{ &nsGkAtoms::vlink },
{ &nsGkAtoms::alink },
{ &nsGkAtoms::text },
- // These aren't mapped through attribute mapping, but they are
- // mapped through a style rule, so it is attribute dependent style.
- // XXXldb But we don't actually replace the body rule when we have
- // dynamic changes...
{ &nsGkAtoms::marginwidth },
{ &nsGkAtoms::marginheight },
+ { &nsGkAtoms::topmargin },
+ { &nsGkAtoms::rightmargin },
+ { &nsGkAtoms::bottommargin },
+ { &nsGkAtoms::leftmargin },
{ nullptr },
};
@@ -492,6 +292,37 @@ HTMLBodyElement::IsEventAttributeName(nsIAtom *aName)
EventNameType_HTMLBodyOrFramesetOnly);
}
+nsresult
+HTMLBodyElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
+ nsIContent* aBindingParent,
+ bool aCompileEventHandlers)
+{
+ nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent,
+ aBindingParent,
+ aCompileEventHandlers);
+ NS_ENSURE_SUCCESS(rv, rv);
+ return mAttrsAndChildren.ForceMapped(this, OwnerDoc());
+}
+
+nsresult
+HTMLBodyElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
+{
+ nsresult rv = nsGenericHTMLElement::AfterSetAttr(aNameSpaceID,
+ aName, aValue, aOldValue,
+ aNotify);
+ NS_ENSURE_SUCCESS(rv, rv);
+ // if the last mapped attribute was removed, don't clear the
+ // nsMappedAttributes, our style can still depend on the containing frame element
+ if (!aValue && IsAttributeMapped(aName)) {
+ nsresult rv = mAttrsAndChildren.ForceMapped(this, OwnerDoc());
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+
+ return NS_OK;
+}
+
#define EVENT(name_, id_, type_, struct_) /* nothing; handled by the superclass */
// nsGenericHTMLElement::GetOnError returns
// already_AddRefed<EventHandlerNonNull> while other getters return
diff --git a/dom/html/HTMLBodyElement.h b/dom/html/HTMLBodyElement.h
index 436dc4cba..c637731a0 100644
--- a/dom/html/HTMLBodyElement.h
+++ b/dom/html/HTMLBodyElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -15,28 +14,6 @@ namespace mozilla {
namespace dom {
class OnBeforeUnloadEventHandlerNonNull;
-class HTMLBodyElement;
-
-class BodyRule: public nsIStyleRule
-{
- virtual ~BodyRule();
-
-public:
- explicit BodyRule(HTMLBodyElement* aPart);
-
- NS_DECL_ISUPPORTS
-
- // nsIStyleRule interface
- virtual void MapRuleInfoInto(nsRuleData* aRuleData) override;
- virtual bool MightMapInheritedStyleData() override;
- virtual bool GetDiscretelyAnimatedCSSValue(nsCSSPropertyID aProperty,
- nsCSSValue* aValue) override;
-#ifdef DEBUG
- virtual void List(FILE* out = stdout, int32_t aIndent = 0) const override;
-#endif
-
- HTMLBodyElement* mPart; // not ref-counted, cleared by content
-};
class HTMLBodyElement final : public nsGenericHTMLElement,
public nsIDOMHTMLBodyElement
@@ -125,23 +102,29 @@ public:
nsIAtom* aAttribute,
const nsAString& aValue,
nsAttrValue& aResult) override;
- virtual void UnbindFromTree(bool aDeep = true,
- bool aNullParent = true) override;
virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
- NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) override;
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
virtual already_AddRefed<nsIEditor> GetAssociatedEditor() override;
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
virtual bool IsEventAttributeName(nsIAtom* aName) override;
+ virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
+ nsIContent* aBindingParent,
+ bool aCompileEventHandlers) override;
+ /**
+ * Called when an attribute has just been changed
+ */
+ virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+
protected:
virtual ~HTMLBodyElement();
virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
- RefPtr<BodyRule> mContentStyleRule;
-
private:
static void MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
nsRuleData* aData);
diff --git a/dom/html/HTMLButtonElement.cpp b/dom/html/HTMLButtonElement.cpp
index 609eb7a66..e493d1891 100644
--- a/dom/html/HTMLButtonElement.cpp
+++ b/dom/html/HTMLButtonElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -207,7 +206,7 @@ HTMLButtonElement::IsDisabledForEvents(WidgetEvent* aEvent)
}
nsresult
-HTMLButtonElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLButtonElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = false;
if (IsDisabledForEvents(aVisitor.mEvent)) {
@@ -235,7 +234,7 @@ HTMLButtonElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
}
}
- return nsGenericHTMLElement::PreHandleEvent(aVisitor);
+ return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsresult
@@ -423,7 +422,7 @@ HTMLButtonElement::DoneCreatingElement()
nsresult
HTMLButtonElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify)
{
if (aNotify && aName == nsGkAtoms::disabled &&
@@ -437,7 +436,8 @@ HTMLButtonElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsresult
HTMLButtonElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
if (aName == nsGkAtoms::type) {
@@ -448,12 +448,12 @@ HTMLButtonElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
if (aName == nsGkAtoms::type || aName == nsGkAtoms::disabled) {
UpdateBarredFromConstraintValidation();
- UpdateState(aNotify);
}
}
return nsGenericHTMLFormElementWithState::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue,
+ aNotify);
}
NS_IMETHODIMP
diff --git a/dom/html/HTMLButtonElement.h b/dom/html/HTMLButtonElement.h
index d15d11b6d..139596ae3 100644
--- a/dom/html/HTMLButtonElement.h
+++ b/dom/html/HTMLButtonElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -57,7 +56,8 @@ public:
virtual void FieldSetDisabledChanged(bool aNotify) override;
// nsIDOMEventTarget
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
@@ -80,13 +80,15 @@ public:
* Called when an attribute is about to be changed
*/
virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
/**
* Called when an attribute has just been changed
*/
- nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual bool ParseAttribute(int32_t aNamespaceID,
nsIAtom* aAttribute,
const nsAString& aValue,
diff --git a/dom/html/HTMLCanvasElement.cpp b/dom/html/HTMLCanvasElement.cpp
index 4b5deab18..11d909373 100644
--- a/dom/html/HTMLCanvasElement.cpp
+++ b/dom/html/HTMLCanvasElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -446,38 +445,37 @@ NS_IMPL_UINT_ATTR_DEFAULT_VALUE(HTMLCanvasElement, Height, height, DEFAULT_CANVA
NS_IMPL_BOOL_ATTR(HTMLCanvasElement, MozOpaque, moz_opaque)
nsresult
-HTMLCanvasElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix, aValue,
- aNotify);
- if (NS_SUCCEEDED(rv) && mCurrentContext &&
- aNameSpaceID == kNameSpaceID_None &&
- (aName == nsGkAtoms::width || aName == nsGkAtoms::height || aName == nsGkAtoms::moz_opaque))
- {
- ErrorResult dummy;
- rv = UpdateContext(nullptr, JS::NullHandleValue, dummy);
- NS_ENSURE_SUCCESS(rv, rv);
- }
+HTMLCanvasElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
+{
+ AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
- return rv;
+ return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
+ aOldValue, aNotify);
}
nsresult
-HTMLCanvasElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- bool aNotify)
+HTMLCanvasElement::OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
{
- nsresult rv = nsGenericHTMLElement::UnsetAttr(aNameSpaceID, aName, aNotify);
- if (NS_SUCCEEDED(rv) && mCurrentContext &&
- aNameSpaceID == kNameSpaceID_None &&
- (aName == nsGkAtoms::width || aName == nsGkAtoms::height || aName == nsGkAtoms::moz_opaque))
- {
+ AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
+
+ return nsGenericHTMLElement::OnAttrSetButNotChanged(aNamespaceID, aName,
+ aValue, aNotify);
+}
+
+void
+HTMLCanvasElement::AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ bool aNotify)
+{
+ if (mCurrentContext && aNamespaceID == kNameSpaceID_None &&
+ (aName == nsGkAtoms::width || aName == nsGkAtoms::height ||
+ aName == nsGkAtoms::moz_opaque)) {
ErrorResult dummy;
- rv = UpdateContext(nullptr, JS::NullHandleValue, dummy);
- NS_ENSURE_SUCCESS(rv, rv);
+ UpdateContext(nullptr, JS::NullHandleValue, dummy);
}
- return rv;
}
void
@@ -574,7 +572,7 @@ HTMLCanvasElement::CopyInnerTo(Element* aDest)
return rv;
}
-nsresult HTMLCanvasElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsresult HTMLCanvasElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (aVisitor.mEvent->mClass == eMouseEventClass) {
WidgetMouseEventBase* evt = (WidgetMouseEventBase*)aVisitor.mEvent;
@@ -592,7 +590,7 @@ nsresult HTMLCanvasElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
aVisitor.mCanHandle = true;
}
}
- return nsGenericHTMLElement::PreHandleEvent(aVisitor);
+ return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsChangeHint
diff --git a/dom/html/HTMLCanvasElement.h b/dom/html/HTMLCanvasElement.h
index e77db6ff1..b84f2eac9 100644
--- a/dom/html/HTMLCanvasElement.h
+++ b/dom/html/HTMLCanvasElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -295,24 +294,11 @@ public:
nsAttrValue& aResult) override;
nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute, int32_t aModType) const override;
- // SetAttr override. C++ is stupid, so have to override both
- // overloaded methods.
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
-
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- bool aNotify) override;
-
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
nsresult CopyInnerTo(mozilla::dom::Element* aDest);
- virtual nsresult PreHandleEvent(mozilla::EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ mozilla::EventChainPreVisitor& aVisitor) override;
/*
* Helpers called by various users of Canvas
@@ -372,6 +358,14 @@ protected:
nsISupports** aResult);
void CallPrintCallback();
+ virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+ virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify) override;
+
AsyncCanvasRenderer* GetAsyncCanvasRenderer();
bool mResetLayer;
@@ -405,6 +399,18 @@ public:
CanvasContextType GetCurrentContextType() {
return mCurrentContextType;
}
+
+private:
+ /**
+ * This function is called by AfterSetAttr and OnAttrSetButNotChanged.
+ * This function will be called by AfterSetAttr whether the attribute is being
+ * set or unset.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ void AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName, bool aNotify);
};
class HTMLCanvasPrintState final : public nsWrapperCache
diff --git a/dom/html/HTMLContentElement.cpp b/dom/html/HTMLContentElement.cpp
deleted file mode 100644
index 01c0158a0..000000000
--- a/dom/html/HTMLContentElement.cpp
+++ /dev/null
@@ -1,393 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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 "mozilla/dom/HTMLContentElement.h"
-#include "mozilla/dom/HTMLContentElementBinding.h"
-#include "mozilla/dom/HTMLUnknownElement.h"
-#include "mozilla/dom/NodeListBinding.h"
-#include "mozilla/dom/ShadowRoot.h"
-#include "mozilla/css/StyleRule.h"
-#include "nsGkAtoms.h"
-#include "nsStyleConsts.h"
-#include "nsIAtom.h"
-#include "nsCSSRuleProcessor.h"
-#include "nsRuleData.h"
-#include "nsRuleProcessorData.h"
-#include "nsRuleWalker.h"
-#include "nsCSSParser.h"
-#include "nsDocument.h"
-
-// Expand NS_IMPL_NS_NEW_HTML_ELEMENT(Content) to add check for web components
-// being enabled.
-nsGenericHTMLElement*
-NS_NewHTMLContentElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
- mozilla::dom::FromParser aFromParser)
-{
- // When this check is removed, remove the nsDocument.h and
- // HTMLUnknownElement.h includes. Also remove nsINode::IsHTMLContentElement.
- //
- // We have to jump through some hoops to be able to produce both NodeInfo* and
- // already_AddRefed<NodeInfo>& for our callees.
- RefPtr<mozilla::dom::NodeInfo> nodeInfo(aNodeInfo);
- if (!nsDocument::IsWebComponentsEnabled(nodeInfo)) {
- already_AddRefed<mozilla::dom::NodeInfo> nodeInfoArg(nodeInfo.forget());
- return new mozilla::dom::HTMLUnknownElement(nodeInfoArg);
- }
-
- already_AddRefed<mozilla::dom::NodeInfo> nodeInfoArg(nodeInfo.forget());
- return new mozilla::dom::HTMLContentElement(nodeInfoArg);
-}
-
-using namespace mozilla::dom;
-
-HTMLContentElement::HTMLContentElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
- : nsGenericHTMLElement(aNodeInfo), mValidSelector(true), mIsInsertionPoint(false)
-{
-}
-
-HTMLContentElement::~HTMLContentElement()
-{
-}
-
-NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLContentElement,
- nsGenericHTMLElement,
- mMatchedNodes)
-
-NS_IMPL_ADDREF_INHERITED(HTMLContentElement, Element)
-NS_IMPL_RELEASE_INHERITED(HTMLContentElement, Element)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLContentElement)
-NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
-
-NS_IMPL_ELEMENT_CLONE(HTMLContentElement)
-
-JSObject*
-HTMLContentElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
-{
- return HTMLContentElementBinding::Wrap(aCx, this, aGivenProto);
-}
-
-nsresult
-HTMLContentElement::BindToTree(nsIDocument* aDocument,
- nsIContent* aParent,
- nsIContent* aBindingParent,
- bool aCompileEventHandlers)
-{
- RefPtr<ShadowRoot> oldContainingShadow = GetContainingShadow();
-
- nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent,
- aBindingParent,
- aCompileEventHandlers);
- NS_ENSURE_SUCCESS(rv, rv);
-
- ShadowRoot* containingShadow = GetContainingShadow();
- if (containingShadow && !oldContainingShadow) {
- nsINode* parentNode = nsINode::GetParentNode();
- while (parentNode && parentNode != containingShadow) {
- if (parentNode->IsHTMLContentElement()) {
- // Content element in fallback content is not an insertion point.
- return NS_OK;
- }
- parentNode = parentNode->GetParentNode();
- }
-
- // If the content element is being inserted into a ShadowRoot,
- // add this element to the list of insertion points.
- mIsInsertionPoint = true;
- containingShadow->AddInsertionPoint(this);
- containingShadow->SetInsertionPointChanged();
- }
-
- return NS_OK;
-}
-
-void
-HTMLContentElement::UnbindFromTree(bool aDeep, bool aNullParent)
-{
- RefPtr<ShadowRoot> oldContainingShadow = GetContainingShadow();
-
- nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
-
- if (oldContainingShadow && !GetContainingShadow() && mIsInsertionPoint) {
- oldContainingShadow->RemoveInsertionPoint(this);
-
- // Remove all the matched nodes now that the
- // insertion point is no longer an insertion point.
- ClearMatchedNodes();
- oldContainingShadow->SetInsertionPointChanged();
-
- mIsInsertionPoint = false;
- }
-}
-
-void
-HTMLContentElement::AppendMatchedNode(nsIContent* aContent)
-{
- mMatchedNodes.AppendElement(aContent);
- nsTArray<nsIContent*>& destInsertionPoint = aContent->DestInsertionPoints();
- destInsertionPoint.AppendElement(this);
-
- if (mMatchedNodes.Length() == 1) {
- // Fallback content gets dropped so we need to updated fallback
- // content distribution.
- UpdateFallbackDistribution();
- }
-}
-
-void
-HTMLContentElement::UpdateFallbackDistribution()
-{
- for (nsIContent* child = nsINode::GetFirstChild();
- child;
- child = child->GetNextSibling()) {
- nsTArray<nsIContent*>& destInsertionPoint = child->DestInsertionPoints();
- destInsertionPoint.Clear();
- if (mMatchedNodes.IsEmpty()) {
- destInsertionPoint.AppendElement(this);
- }
- }
-}
-
-void
-HTMLContentElement::RemoveMatchedNode(nsIContent* aContent)
-{
- mMatchedNodes.RemoveElement(aContent);
- ShadowRoot::RemoveDestInsertionPoint(this, aContent->DestInsertionPoints());
-
- if (mMatchedNodes.IsEmpty()) {
- // Fallback content is activated so we need to update fallback
- // content distribution.
- UpdateFallbackDistribution();
- }
-}
-
-void
-HTMLContentElement::InsertMatchedNode(uint32_t aIndex, nsIContent* aContent)
-{
- mMatchedNodes.InsertElementAt(aIndex, aContent);
- nsTArray<nsIContent*>& destInsertionPoint = aContent->DestInsertionPoints();
- destInsertionPoint.AppendElement(this);
-
- if (mMatchedNodes.Length() == 1) {
- // Fallback content gets dropped so we need to updated fallback
- // content distribution.
- UpdateFallbackDistribution();
- }
-}
-
-void
-HTMLContentElement::ClearMatchedNodes()
-{
- for (uint32_t i = 0; i < mMatchedNodes.Length(); i++) {
- ShadowRoot::RemoveDestInsertionPoint(this, mMatchedNodes[i]->DestInsertionPoints());
- }
-
- mMatchedNodes.Clear();
-
- UpdateFallbackDistribution();
-}
-
-static bool
-IsValidContentSelectors(nsCSSSelector* aSelector)
-{
- nsCSSSelector* currentSelector = aSelector;
- while (currentSelector) {
- // Blacklist invalid selector fragments.
- if (currentSelector->IsPseudoElement() ||
- currentSelector->mPseudoClassList ||
- currentSelector->mNegations ||
- currentSelector->mOperator) {
- return false;
- }
-
- currentSelector = currentSelector->mNext;
- }
-
- return true;
-}
-
-nsresult
-HTMLContentElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix,
- aValue, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::select) {
- // Select attribute was updated, the insertion point may match different
- // elements.
- nsIDocument* doc = OwnerDoc();
- nsCSSParser parser(doc->CSSLoader());
-
- mValidSelector = true;
- mSelectorList = nullptr;
-
- nsresult rv = parser.ParseSelectorString(aValue,
- doc->GetDocumentURI(),
- // Bug 11240
- 0, // XXX get the line number!
- getter_Transfers(mSelectorList));
-
- // We don't want to return an exception if parsing failed because
- // the spec does not define it as an exception case.
- if (NS_SUCCEEDED(rv)) {
- // Ensure that all the selectors are valid
- nsCSSSelectorList* selectors = mSelectorList;
- while (selectors) {
- if (!IsValidContentSelectors(selectors->mSelectors)) {
- // If we have an invalid selector, we can not match anything.
- mValidSelector = false;
- mSelectorList = nullptr;
- break;
- }
- selectors = selectors->mNext;
- }
- }
-
- ShadowRoot* containingShadow = GetContainingShadow();
- if (containingShadow) {
- containingShadow->DistributeAllNodes();
- }
- }
-
- return NS_OK;
-}
-
-nsresult
-HTMLContentElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
-{
- nsresult rv = nsGenericHTMLElement::UnsetAttr(aNameSpaceID,
- aAttribute, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (aNameSpaceID == kNameSpaceID_None && aAttribute == nsGkAtoms::select) {
- // The select attribute was removed. This insertion point becomes
- // a universal selector.
- mValidSelector = true;
- mSelectorList = nullptr;
-
- ShadowRoot* containingShadow = GetContainingShadow();
- if (containingShadow) {
- containingShadow->DistributeAllNodes();
- }
- }
-
- return NS_OK;
-}
-
-bool
-HTMLContentElement::Match(nsIContent* aContent)
-{
- if (!mValidSelector) {
- return false;
- }
-
- if (mSelectorList) {
- nsIDocument* doc = OwnerDoc();
- ShadowRoot* containingShadow = GetContainingShadow();
- nsIContent* host = containingShadow->GetHost();
-
- TreeMatchContext matchingContext(false, nsRuleWalker::eRelevantLinkUnvisited,
- doc, TreeMatchContext::eNeverMatchVisited);
- doc->FlushPendingLinkUpdates();
- matchingContext.SetHasSpecifiedScope();
- matchingContext.AddScopeElement(host->AsElement());
-
- if (!aContent->IsElement()) {
- return false;
- }
-
- return nsCSSRuleProcessor::SelectorListMatches(aContent->AsElement(),
- matchingContext,
- mSelectorList);
- }
-
- return true;
-}
-
-already_AddRefed<DistributedContentList>
-HTMLContentElement::GetDistributedNodes()
-{
- RefPtr<DistributedContentList> list = new DistributedContentList(this);
- return list.forget();
-}
-
-NS_IMPL_CYCLE_COLLECTION_WRAPPERCACHE(DistributedContentList, mParent,
- mDistributedNodes)
-
-NS_INTERFACE_TABLE_HEAD(DistributedContentList)
- NS_WRAPPERCACHE_INTERFACE_TABLE_ENTRY
- NS_INTERFACE_TABLE(DistributedContentList, nsINodeList, nsIDOMNodeList)
- NS_INTERFACE_TABLE_TO_MAP_SEGUE_CYCLE_COLLECTION(DistributedContentList)
-NS_INTERFACE_MAP_END
-
-NS_IMPL_CYCLE_COLLECTING_ADDREF(DistributedContentList)
-NS_IMPL_CYCLE_COLLECTING_RELEASE(DistributedContentList)
-
-DistributedContentList::DistributedContentList(HTMLContentElement* aHostElement)
- : mParent(aHostElement)
-{
- MOZ_COUNT_CTOR(DistributedContentList);
-
- if (aHostElement->IsInsertionPoint()) {
- if (aHostElement->MatchedNodes().IsEmpty()) {
- // Fallback content.
- nsINode* contentNode = aHostElement;
- for (nsIContent* content = contentNode->GetFirstChild();
- content;
- content = content->GetNextSibling()) {
- mDistributedNodes.AppendElement(content);
- }
- } else {
- mDistributedNodes.AppendElements(aHostElement->MatchedNodes());
- }
- }
-}
-
-DistributedContentList::~DistributedContentList()
-{
- MOZ_COUNT_DTOR(DistributedContentList);
-}
-
-nsIContent*
-DistributedContentList::Item(uint32_t aIndex)
-{
- return mDistributedNodes.SafeElementAt(aIndex);
-}
-
-NS_IMETHODIMP
-DistributedContentList::Item(uint32_t aIndex, nsIDOMNode** aReturn)
-{
- nsIContent* item = Item(aIndex);
- if (!item) {
- return NS_ERROR_FAILURE;
- }
-
- return CallQueryInterface(item, aReturn);
-}
-
-NS_IMETHODIMP
-DistributedContentList::GetLength(uint32_t* aLength)
-{
- *aLength = mDistributedNodes.Length();
- return NS_OK;
-}
-
-int32_t
-DistributedContentList::IndexOf(nsIContent* aContent)
-{
- return mDistributedNodes.IndexOf(aContent);
-}
-
-JSObject*
-DistributedContentList::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
-{
- return NodeListBinding::Wrap(aCx, this, aGivenProto);
-}
-
diff --git a/dom/html/HTMLContentElement.h b/dom/html/HTMLContentElement.h
deleted file mode 100644
index f019e56cd..000000000
--- a/dom/html/HTMLContentElement.h
+++ /dev/null
@@ -1,135 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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/. */
-
-#ifndef mozilla_dom_HTMLContentElement_h__
-#define mozilla_dom_HTMLContentElement_h__
-
-#include "nsAutoPtr.h"
-#include "nsINodeList.h"
-#include "nsGenericHTMLElement.h"
-
-struct nsCSSSelectorList;
-
-namespace mozilla {
-namespace dom {
-
-class DistributedContentList;
-
-class HTMLContentElement final : public nsGenericHTMLElement
-{
-public:
- explicit HTMLContentElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
-
- // nsISupports
- NS_DECL_ISUPPORTS_INHERITED
-
- NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLContentElement,
- nsGenericHTMLElement)
-
- static HTMLContentElement* FromContent(nsIContent* aContent)
- {
- if (aContent->IsHTMLContentElement()) {
- return static_cast<HTMLContentElement*>(aContent);
- }
-
- return nullptr;
- }
-
- virtual bool IsHTMLContentElement() const override { return true; }
-
- virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
-
- virtual nsIDOMNode* AsDOMNode() override { return this; }
-
- virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
- nsIContent* aBindingParent,
- bool aCompileEventHandlers) override;
-
- virtual void UnbindFromTree(bool aDeep = true,
- bool aNullParent = true) override;
-
- /**
- * Returns whether if the selector of this insertion point
- * matches the provided content.
- */
- bool Match(nsIContent* aContent);
- bool IsInsertionPoint() const { return mIsInsertionPoint; }
- nsCOMArray<nsIContent>& MatchedNodes() { return mMatchedNodes; }
- void AppendMatchedNode(nsIContent* aContent);
- void RemoveMatchedNode(nsIContent* aContent);
- void InsertMatchedNode(uint32_t aIndex, nsIContent* aContent);
- void ClearMatchedNodes();
-
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
-
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
-
- // WebIDL methods.
- already_AddRefed<DistributedContentList> GetDistributedNodes();
- void GetSelect(nsAString& aSelect)
- {
- Element::GetAttr(kNameSpaceID_None, nsGkAtoms::select, aSelect);
- }
- void SetSelect(const nsAString& aSelect)
- {
- Element::SetAttr(kNameSpaceID_None, nsGkAtoms::select, aSelect, true);
- }
-
-protected:
- virtual ~HTMLContentElement();
-
- virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
-
- /**
- * Updates the destination insertion points of the fallback
- * content of this insertion point. If there are nodes matched
- * to this insertion point, then destination insertion points
- * of fallback are cleared, otherwise, this insertion point
- * is a destination insertion point.
- */
- void UpdateFallbackDistribution();
-
- /**
- * An array of nodes from the ShadowRoot host that match the
- * content insertion selector.
- */
- nsCOMArray<nsIContent> mMatchedNodes;
-
- nsAutoPtr<nsCSSSelectorList> mSelectorList;
- bool mValidSelector;
- bool mIsInsertionPoint;
-};
-
-class DistributedContentList : public nsINodeList
-{
-public:
- explicit DistributedContentList(HTMLContentElement* aHostElement);
-
- NS_DECL_CYCLE_COLLECTING_ISUPPORTS
- NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS(DistributedContentList)
-
- // nsIDOMNodeList
- NS_DECL_NSIDOMNODELIST
-
- // nsINodeList
- virtual nsIContent* Item(uint32_t aIndex) override;
- virtual int32_t IndexOf(nsIContent* aContent) override;
- virtual nsINode* GetParentObject() override { return mParent; }
- virtual JSObject* WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
-protected:
- virtual ~DistributedContentList();
- RefPtr<HTMLContentElement> mParent;
- nsCOMArray<nsIContent> mDistributedNodes;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_HTMLContentElement_h__
-
diff --git a/dom/html/HTMLDataElement.cpp b/dom/html/HTMLDataElement.cpp
index e9d53e573..baf9ef989 100644
--- a/dom/html/HTMLDataElement.cpp
+++ b/dom/html/HTMLDataElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLDataElement.h b/dom/html/HTMLDataElement.h
index 4fd26a017..7ca2197f6 100644
--- a/dom/html/HTMLDataElement.h
+++ b/dom/html/HTMLDataElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLDataListElement.cpp b/dom/html/HTMLDataListElement.cpp
index 5aa772645..41eec0cc4 100644
--- a/dom/html/HTMLDataListElement.cpp
+++ b/dom/html/HTMLDataListElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLDataListElement.h b/dom/html/HTMLDataListElement.h
index ba2a2e0b4..eb026dab7 100644
--- a/dom/html/HTMLDataListElement.h
+++ b/dom/html/HTMLDataListElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLDetailsElement.cpp b/dom/html/HTMLDetailsElement.cpp
index ed20b50ca..9d4dd89c2 100644
--- a/dom/html/HTMLDetailsElement.cpp
+++ b/dom/html/HTMLDetailsElement.cpp
@@ -6,39 +6,11 @@
#include "mozilla/dom/HTMLDetailsElement.h"
#include "mozilla/dom/HTMLDetailsElementBinding.h"
-#include "mozilla/dom/HTMLUnknownElement.h"
-#include "mozilla/Preferences.h"
-
-// Expand NS_IMPL_NS_NEW_HTML_ELEMENT(Details) to add pref check.
-nsGenericHTMLElement*
-NS_NewHTMLDetailsElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
- mozilla::dom::FromParser aFromParser)
-{
- if (!mozilla::dom::HTMLDetailsElement::IsDetailsEnabled()) {
- return new mozilla::dom::HTMLUnknownElement(aNodeInfo);
- }
-
- return new mozilla::dom::HTMLDetailsElement(aNodeInfo);
-}
+NS_IMPL_NS_NEW_HTML_ELEMENT(Details)
namespace mozilla {
namespace dom {
-/* static */ bool
-HTMLDetailsElement::IsDetailsEnabled()
-{
- static bool isDetailsEnabled = false;
- static bool added = false;
-
- if (!added) {
- Preferences::AddBoolVarCache(&isDetailsEnabled,
- "dom.details_element.enabled");
- added = true;
- }
-
- return isDetailsEnabled;
-}
-
HTMLDetailsElement::~HTMLDetailsElement()
{
}
@@ -73,7 +45,7 @@ HTMLDetailsElement::GetAttributeChangeHint(const nsIAtom* aAttribute,
nsresult
HTMLDetailsElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue, bool aNotify)
+ const nsAttrValueOrString* aValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::open) {
bool setOpen = aValue != nullptr;
diff --git a/dom/html/HTMLDetailsElement.h b/dom/html/HTMLDetailsElement.h
index 5a3af27b4..4575ed888 100644
--- a/dom/html/HTMLDetailsElement.h
+++ b/dom/html/HTMLDetailsElement.h
@@ -23,8 +23,6 @@ class HTMLDetailsElement final : public nsGenericHTMLElement
public:
using NodeInfo = mozilla::dom::NodeInfo;
- static bool IsDetailsEnabled();
-
explicit HTMLDetailsElement(already_AddRefed<NodeInfo>& aNodeInfo)
: nsGenericHTMLElement(aNodeInfo)
{
@@ -40,7 +38,8 @@ public:
int32_t aModType) const override;
nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue, bool aNotify) override;
+ const nsAttrValueOrString* aValue,
+ bool aNotify) override;
// HTMLDetailsElement WebIDL
bool Open() const { return GetBoolAttr(nsGkAtoms::open); }
diff --git a/dom/html/HTMLDialogElement.cpp b/dom/html/HTMLDialogElement.cpp
index 48666628e..a178e5afe 100644
--- a/dom/html/HTMLDialogElement.cpp
+++ b/dom/html/HTMLDialogElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLDialogElement.h b/dom/html/HTMLDialogElement.h
index efa319f3c..0520ef56b 100644
--- a/dom/html/HTMLDialogElement.h
+++ b/dom/html/HTMLDialogElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLDivElement.cpp b/dom/html/HTMLDivElement.cpp
index d5b587241..9a019d77c 100644
--- a/dom/html/HTMLDivElement.cpp
+++ b/dom/html/HTMLDivElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLDivElement.h b/dom/html/HTMLDivElement.h
index 9cd0f84b9..6a570559a 100644
--- a/dom/html/HTMLDivElement.h
+++ b/dom/html/HTMLDivElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLElement.cpp b/dom/html/HTMLElement.cpp
index b2f23b931..cca7f068b 100644
--- a/dom/html/HTMLElement.cpp
+++ b/dom/html/HTMLElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -52,3 +51,12 @@ NS_NewHTMLElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
{
return new mozilla::dom::HTMLElement(aNodeInfo);
}
+
+// Distinct from the above in order to have function pointer that compared unequal
+// to a function pointer to the above.
+nsGenericHTMLElement*
+NS_NewCustomElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
+ mozilla::dom::FromParser aFromParser)
+{
+ return new mozilla::dom::HTMLElement(aNodeInfo);
+}
diff --git a/dom/html/HTMLFieldSetElement.cpp b/dom/html/HTMLFieldSetElement.cpp
index 788d88791..9052d399e 100644
--- a/dom/html/HTMLFieldSetElement.cpp
+++ b/dom/html/HTMLFieldSetElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -70,7 +69,7 @@ HTMLFieldSetElement::IsDisabledForEvents(WidgetEvent* aEvent)
// nsIContent
nsresult
-HTMLFieldSetElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLFieldSetElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
// Do not process any DOM events if the element is disabled.
aVisitor.mCanHandle = false;
@@ -78,12 +77,13 @@ HTMLFieldSetElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
return NS_OK;
}
- return nsGenericHTMLFormElement::PreHandleEvent(aVisitor);
+ return nsGenericHTMLFormElement::GetEventTargetParent(aVisitor);
}
nsresult
HTMLFieldSetElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::disabled &&
nsINode::GetFirstChild()) {
@@ -100,7 +100,7 @@ HTMLFieldSetElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLFormElement::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
// nsIDOMHTMLFieldSetElement
diff --git a/dom/html/HTMLFieldSetElement.h b/dom/html/HTMLFieldSetElement.h
index 4a4ab71e4..e56a279c3 100644
--- a/dom/html/HTMLFieldSetElement.h
+++ b/dom/html/HTMLFieldSetElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -40,9 +39,12 @@ public:
NS_DECL_NSIDOMHTMLFIELDSETELEMENT
// nsIContent
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual nsresult InsertChildAt(nsIContent* aChild, uint32_t aIndex,
bool aNotify) override;
diff --git a/dom/html/HTMLFontElement.cpp b/dom/html/HTMLFontElement.cpp
index 30cb9de8b..defba9126 100644
--- a/dom/html/HTMLFontElement.cpp
+++ b/dom/html/HTMLFontElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFontElement.h b/dom/html/HTMLFontElement.h
index 3af54c3ef..b4bfd05e9 100644
--- a/dom/html/HTMLFontElement.h
+++ b/dom/html/HTMLFontElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFormControlsCollection.cpp b/dom/html/HTMLFormControlsCollection.cpp
index 77fafae99..7d5d31b5f 100644
--- a/dom/html/HTMLFormControlsCollection.cpp
+++ b/dom/html/HTMLFormControlsCollection.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFormControlsCollection.h b/dom/html/HTMLFormControlsCollection.h
index 1b8e1e62b..76e34ab4f 100644
--- a/dom/html/HTMLFormControlsCollection.h
+++ b/dom/html/HTMLFormControlsCollection.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFormElement.cpp b/dom/html/HTMLFormElement.cpp
index 6bea19a2b..2fe452bcd 100644
--- a/dom/html/HTMLFormElement.cpp
+++ b/dom/html/HTMLFormElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -189,32 +188,37 @@ HTMLFormElement::GetElements(nsIDOMHTMLCollection** aElements)
}
nsresult
-HTMLFormElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- if ((aName == nsGkAtoms::action || aName == nsGkAtoms::target) &&
- aNameSpaceID == kNameSpaceID_None) {
- if (mPendingSubmission) {
- // aha, there is a pending submission that means we're in
- // the script and we need to flush it. let's tell it
- // that the event was ignored to force the flush.
- // the second argument is not playing a role at all.
- FlushPendingSubmission();
+HTMLFormElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue, bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::action || aName == nsGkAtoms::target) {
+ // This check is mostly to preserve previous behavior.
+ if (aValue) {
+ if (mPendingSubmission) {
+ // aha, there is a pending submission that means we're in
+ // the script and we need to flush it. let's tell it
+ // that the event was ignored to force the flush.
+ // the second argument is not playing a role at all.
+ FlushPendingSubmission();
+ }
+ // Don't forget we've notified the password manager already if the
+ // page sets the action/target in the during submit. (bug 343182)
+ bool notifiedObservers = mNotifiedObservers;
+ ForgetCurrentSubmission();
+ mNotifiedObservers = notifiedObservers;
+ }
}
- // Don't forget we've notified the password manager already if the
- // page sets the action/target in the during submit. (bug 343182)
- bool notifiedObservers = mNotifiedObservers;
- ForgetCurrentSubmission();
- mNotifiedObservers = notifiedObservers;
}
- return nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix, aValue,
- aNotify);
+
+ return nsGenericHTMLElement::BeforeSetAttr(aNamespaceID, aName, aValue,
+ aNotify);
}
nsresult
HTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aName == nsGkAtoms::novalidate && aNameSpaceID == kNameSpaceID_None) {
// Update all form elements states because they might be [no longer]
@@ -230,7 +234,8 @@ HTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
}
- return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue, aNotify);
+ return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
+ aOldValue, aNotify);
}
NS_IMPL_STRING_ATTR(HTMLFormElement, AcceptCharset, acceptcharset)
@@ -489,7 +494,7 @@ HTMLFormElement::UnbindFromTree(bool aDeep, bool aNullParent)
}
nsresult
-HTMLFormElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLFormElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mWantsWillHandleEvent = true;
if (aVisitor.mEvent->mOriginalTarget == static_cast<nsIContent*>(this)) {
@@ -513,7 +518,7 @@ HTMLFormElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
mGeneratingReset = true;
}
}
- return nsGenericHTMLElement::PreHandleEvent(aVisitor);
+ return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsresult
diff --git a/dom/html/HTMLFormElement.h b/dom/html/HTMLFormElement.h
index b3e836f5f..f13eab9ac 100644
--- a/dom/html/HTMLFormElement.h
+++ b/dom/html/HTMLFormElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -93,7 +92,8 @@ public:
nsIAtom* aAttribute,
const nsAString& aValue,
nsAttrValue& aResult) override;
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult WillHandleEvent(
EventChainPostVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
@@ -104,16 +104,13 @@ public:
bool aCompileEventHandlers) override;
virtual void UnbindFromTree(bool aDeep = true,
bool aNullParent = true) override;
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
+ virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
/**
* Forget all information about the current submission (and the fact that we
diff --git a/dom/html/HTMLFormSubmission.cpp b/dom/html/HTMLFormSubmission.cpp
index d6269a7ca..d447f5147 100644
--- a/dom/html/HTMLFormSubmission.cpp
+++ b/dom/html/HTMLFormSubmission.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFormSubmission.h b/dom/html/HTMLFormSubmission.h
index 2a07143c7..506aa668d 100644
--- a/dom/html/HTMLFormSubmission.h
+++ b/dom/html/HTMLFormSubmission.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFormSubmissionConstants.h b/dom/html/HTMLFormSubmissionConstants.h
index 860083d88..261af6165 100644
--- a/dom/html/HTMLFormSubmissionConstants.h
+++ b/dom/html/HTMLFormSubmissionConstants.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFrameElement.cpp b/dom/html/HTMLFrameElement.cpp
index 989022b0c..0dc20019f 100644
--- a/dom/html/HTMLFrameElement.cpp
+++ b/dom/html/HTMLFrameElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFrameElement.h b/dom/html/HTMLFrameElement.h
index c5a7120b3..31b07c03e 100644
--- a/dom/html/HTMLFrameElement.h
+++ b/dom/html/HTMLFrameElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLFrameSetElement.cpp b/dom/html/HTMLFrameSetElement.cpp
index 5d49cd78e..75fd14ba4 100644
--- a/dom/html/HTMLFrameSetElement.cpp
+++ b/dom/html/HTMLFrameSetElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -10,6 +9,7 @@
#include "nsContentUtils.h"
#include "nsGlobalWindow.h"
#include "mozilla/UniquePtrExtensions.h"
+#include "nsAttrValueOrString.h"
NS_IMPL_NS_NEW_HTML_ELEMENT(FrameSet)
@@ -66,43 +66,45 @@ HTMLFrameSetElement::GetRows(nsAString& aRows)
}
nsresult
-HTMLFrameSetElement::SetAttr(int32_t aNameSpaceID,
- nsIAtom* aAttribute,
- nsIAtom* aPrefix,
- const nsAString& aValue,
- bool aNotify)
+HTMLFrameSetElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify)
{
- nsresult rv;
/* The main goal here is to see whether the _number_ of rows or
- * columns has changed. If it has, we need to reframe; otherwise
- * we want to reflow. So we set mCurrentRowColHint here, then call
- * nsGenericHTMLElement::SetAttr, which will end up calling
- * GetAttributeChangeHint and notifying layout with that hint.
- * Once nsGenericHTMLElement::SetAttr returns, we want to go back to our
- * normal hint, which is NS_STYLE_HINT_REFLOW.
+ * columns has changed. If it has, we need to reframe; otherwise
+ * we want to reflow.
+ * Ideally, the style hint would be changed back to reflow after the reframe
+ * has been performed. Unfortunately, however, the reframe will be performed
+ * by the call to nsNodeUtils::AttributeChanged, which occurs *after*
+ * AfterSetAttr is called, leaving us with no convenient way of changing the
+ * value back to reflow afterwards. However, nsNodeUtils::AttributeChanged is
+ * effectively the only consumer of this value, so as long as we always set
+ * the value correctly here, we should be fine.
*/
- if (aAttribute == nsGkAtoms::rows && aNameSpaceID == kNameSpaceID_None) {
- int32_t oldRows = mNumRows;
- ParseRowCol(aValue, mNumRows, &mRowSpecs);
+ mCurrentRowColHint = NS_STYLE_HINT_REFLOW;
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::rows) {
+ if (aValue) {
+ int32_t oldRows = mNumRows;
+ ParseRowCol(aValue->String(), mNumRows, &mRowSpecs);
- if (mNumRows != oldRows) {
- mCurrentRowColHint = nsChangeHint_ReconstructFrame;
- }
- } else if (aAttribute == nsGkAtoms::cols &&
- aNameSpaceID == kNameSpaceID_None) {
- int32_t oldCols = mNumCols;
- ParseRowCol(aValue, mNumCols, &mColSpecs);
+ if (mNumRows != oldRows) {
+ mCurrentRowColHint = nsChangeHint_ReconstructFrame;
+ }
+ }
+ } else if (aName == nsGkAtoms::cols) {
+ if (aValue) {
+ int32_t oldCols = mNumCols;
+ ParseRowCol(aValue->String(), mNumCols, &mColSpecs);
- if (mNumCols != oldCols) {
- mCurrentRowColHint = nsChangeHint_ReconstructFrame;
+ if (mNumCols != oldCols) {
+ mCurrentRowColHint = nsChangeHint_ReconstructFrame;
+ }
+ }
}
}
- rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aAttribute, aPrefix,
- aValue, aNotify);
- mCurrentRowColHint = NS_STYLE_HINT_REFLOW;
-
- return rv;
+ return nsGenericHTMLElement::BeforeSetAttr(aNamespaceID, aName, aValue, aNotify);
}
nsresult
diff --git a/dom/html/HTMLFrameSetElement.h b/dom/html/HTMLFrameSetElement.h
index b6bbe5d95..bede651d2 100644
--- a/dom/html/HTMLFrameSetElement.h
+++ b/dom/html/HTMLFrameSetElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -100,17 +99,6 @@ public:
#undef WINDOW_EVENT_HELPER
#undef EVENT
- // These override the SetAttr methods in nsGenericHTMLElement (need
- // both here to silence compiler warnings).
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
-
/**
* GetRowSpec is used to get the "rows" spec.
* @param out int32_t aNumValues The number of row sizes specified.
@@ -143,6 +131,10 @@ protected:
virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
+ virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify) override;
+
private:
nsresult ParseRowCol(const nsAString& aValue,
int32_t& aNumSpecs,
diff --git a/dom/html/HTMLHRElement.cpp b/dom/html/HTMLHRElement.cpp
index fb5dbe618..9779028ae 100644
--- a/dom/html/HTMLHRElement.cpp
+++ b/dom/html/HTMLHRElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLHRElement.h b/dom/html/HTMLHRElement.h
index c06a473bd..6f6213d76 100644
--- a/dom/html/HTMLHRElement.h
+++ b/dom/html/HTMLHRElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLHeadingElement.cpp b/dom/html/HTMLHeadingElement.cpp
index 091e60abb..b9ae86cac 100644
--- a/dom/html/HTMLHeadingElement.cpp
+++ b/dom/html/HTMLHeadingElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLHeadingElement.h b/dom/html/HTMLHeadingElement.h
index 2abf5bbb5..b42fcb9b1 100644
--- a/dom/html/HTMLHeadingElement.h
+++ b/dom/html/HTMLHeadingElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLIFrameElement.cpp b/dom/html/HTMLIFrameElement.cpp
index 0d5a209c0..8cf19dc9f 100644
--- a/dom/html/HTMLIFrameElement.cpp
+++ b/dom/html/HTMLIFrameElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -182,54 +181,49 @@ HTMLIFrameElement::GetAttributeMappingFunction() const
}
nsresult
-HTMLIFrameElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- nsresult rv = nsGenericHTMLFrameElement::SetAttr(aNameSpaceID, aName,
- aPrefix, aValue, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::srcdoc) {
- // Don't propagate error here. The attribute was successfully set, that's
- // what we should reflect.
- LoadSrc();
- }
-
- return NS_OK;
-}
-
-nsresult
HTMLIFrameElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
const nsAttrValue* aValue,
- bool aNotify)
+ const nsAttrValue* aOldValue, bool aNotify)
{
- if (aName == nsGkAtoms::sandbox &&
- aNameSpaceID == kNameSpaceID_None && mFrameLoader) {
- // If we have an nsFrameLoader, apply the new sandbox flags.
- // Since this is called after the setter, the sandbox flags have
- // alreay been updated.
- mFrameLoader->ApplySandboxFlags(GetSandboxFlags());
+ AfterMaybeChangeAttr(aNameSpaceID, aName, aNotify);
+
+ if (aNameSpaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::sandbox) {
+ if (mFrameLoader) {
+ // If we have an nsFrameLoader, apply the new sandbox flags.
+ // Since this is called after the setter, the sandbox flags have
+ // alreay been updated.
+ mFrameLoader->ApplySandboxFlags(GetSandboxFlags());
+ }
+ }
}
return nsGenericHTMLFrameElement::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
nsresult
-HTMLIFrameElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
+HTMLIFrameElement::OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
{
- // Invoke on the superclass.
- nsresult rv = nsGenericHTMLFrameElement::UnsetAttr(aNameSpaceID, aAttribute, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (aNameSpaceID == kNameSpaceID_None &&
- aAttribute == nsGkAtoms::srcdoc) {
- // Fall back to the src attribute, if any
- LoadSrc();
- }
+ AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
+
+ return nsGenericHTMLFrameElement::OnAttrSetButNotChanged(aNamespaceID, aName,
+ aValue, aNotify);
+}
- return NS_OK;
+void
+HTMLIFrameElement::AfterMaybeChangeAttr(int32_t aNamespaceID,
+ nsIAtom* aName,
+ bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::srcdoc) {
+ // Don't propagate errors from LoadSrc. The attribute was successfully
+ // set/unset, that's what we should reflect.
+ LoadSrc();
+ }
+ }
}
uint32_t
diff --git a/dom/html/HTMLIFrameElement.h b/dom/html/HTMLIFrameElement.h
index 5bfda2470..e1240de81 100644
--- a/dom/html/HTMLIFrameElement.h
+++ b/dom/html/HTMLIFrameElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -46,20 +45,6 @@ public:
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
- virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
-
uint32_t GetSandboxFlags();
// Web IDL binding methods
@@ -196,11 +181,30 @@ protected:
virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
+ virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+ virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify) override;
+
private:
static void MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
nsRuleData* aData);
static const DOMTokenListSupportedToken sSupportedSandboxTokens[];
+
+ /**
+ * This function is called by AfterSetAttr and OnAttrSetButNotChanged.
+ * This function will be called by AfterSetAttr whether the attribute is being
+ * set or unset.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ void AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName, bool aNotify);
};
} // namespace dom
diff --git a/dom/html/HTMLImageElement.cpp b/dom/html/HTMLImageElement.cpp
index 08f2404ce..5e75d0934 100644
--- a/dom/html/HTMLImageElement.cpp
+++ b/dom/html/HTMLImageElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -112,6 +111,7 @@ private:
HTMLImageElement::HTMLImageElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
: nsGenericHTMLElement(aNodeInfo)
, mForm(nullptr)
+ , mForceReload(false)
, mInDocResponsiveContent(false)
, mCurrentDensity(1.0)
{
@@ -369,9 +369,12 @@ HTMLImageElement::GetAttributeMappingFunction() const
nsresult
HTMLImageElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify)
{
+ if (aValue) {
+ BeforeMaybeChangeAttr(aNameSpaceID, aName, *aValue, aNotify);
+ }
if (aNameSpaceID == kNameSpaceID_None && mForm &&
(aName == nsGkAtoms::name || aName == nsGkAtoms::id)) {
@@ -391,8 +394,13 @@ HTMLImageElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsresult
HTMLImageElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
+ if (aValue) {
+ AfterMaybeChangeAttr(aNameSpaceID, aName, aNotify);
+ }
+
if (aNameSpaceID == kNameSpaceID_None && mForm &&
(aName == nsGkAtoms::name || aName == nsGkAtoms::id) &&
aValue && !aValue->IsEmptyString()) {
@@ -433,67 +441,26 @@ HTMLImageElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
nsresult
-HTMLImageElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLImageElement::OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
{
- // We handle image element with attribute ismap in its corresponding frame
- // element. Set mMultipleActionsPrevented here to prevent the click event
- // trigger the behaviors in Element::PostHandleEventForLinks
- WidgetMouseEvent* mouseEvent = aVisitor.mEvent->AsMouseEvent();
- if (mouseEvent && mouseEvent->IsLeftClickEvent() && IsMap()) {
- mouseEvent->mFlags.mMultipleActionsPrevented = true;
- }
- return nsGenericHTMLElement::PreHandleEvent(aVisitor);
-}
-
-bool
-HTMLImageElement::IsHTMLFocusable(bool aWithMouse,
- bool *aIsFocusable, int32_t *aTabIndex)
-{
- int32_t tabIndex = TabIndex();
-
- if (IsInUncomposedDoc()) {
- nsAutoString usemap;
- GetUseMap(usemap);
- // XXXbz which document should this be using? sXBL/XBL2 issue! I
- // think that OwnerDoc() is right, since we don't want to
- // assume stuff about the document we're bound to.
- if (OwnerDoc()->FindImageMap(usemap)) {
- if (aTabIndex) {
- // Use tab index on individual map areas
- *aTabIndex = (sTabFocusModel & eTabFocus_linksMask)? 0 : -1;
- }
- // Image map is not focusable itself, but flag as tabbable
- // so that image map areas get walked into.
- *aIsFocusable = false;
-
- return false;
- }
- }
-
- if (aTabIndex) {
- // Can be in tab order if tabindex >=0 and form controls are tabbable.
- *aTabIndex = (sTabFocusModel & eTabFocus_formElementsMask)? tabIndex : -1;
- }
+ BeforeMaybeChangeAttr(aNamespaceID, aName, aValue, aNotify);
+ AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
- *aIsFocusable =
-#ifdef XP_MACOSX
- (!aWithMouse || nsFocusManager::sMouseFocusesFormControl) &&
-#endif
- (tabIndex >= 0 || HasAttr(kNameSpaceID_None, nsGkAtoms::tabindex));
-
- return false;
+ return nsGenericHTMLElement::OnAttrSetButNotChanged(aNamespaceID, aName,
+ aValue, aNotify);
}
-nsresult
-HTMLImageElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
+void
+HTMLImageElement::BeforeMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
{
- bool forceReload = false;
// We need to force our image to reload. This must be done here, not in
// AfterSetAttr or BeforeSetAttr, because we want to do it even if the attr is
// being set to its existing value, which is normally optimized away as a
@@ -504,16 +471,19 @@ HTMLImageElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
// spec.
//
// Both cases handle unsetting src in AfterSetAttr
- if (aNameSpaceID == kNameSpaceID_None &&
+ //
+ // Much of this should probably happen in AfterMaybeChangeAttr.
+ // See Bug 1370705
+ if (aNamespaceID == kNameSpaceID_None &&
aName == nsGkAtoms::src) {
if (InResponsiveMode()) {
if (mResponsiveSelector &&
mResponsiveSelector->Content() == this) {
- mResponsiveSelector->SetDefaultSource(aValue);
+ mResponsiveSelector->SetDefaultSource(aValue.String());
}
QueueImageLoadTask(true);
- } else if (aNotify) {
+ } else if (aNotify && OwnerDoc()->IsCurrentActiveDocument()) {
// If aNotify is false, we are coming from the parser or some such place;
// we'll get bound after all the attributes have been set, so we'll do the
// sync image load from BindToTree. Skip the LoadImage call in that case.
@@ -528,23 +498,23 @@ HTMLImageElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
// the state gets in Element's attr-setting happen around this
// LoadImage call, we could start passing false instead of aNotify
// here.
- LoadImage(aValue, true, aNotify, eImageLoadType_Normal);
+ LoadImage(aValue.String(), true, aNotify, eImageLoadType_Normal);
mNewRequestsWillNeedAnimationReset = false;
}
- } else if (aNameSpaceID == kNameSpaceID_None &&
+ } else if (aNamespaceID == kNameSpaceID_None &&
aName == nsGkAtoms::crossorigin &&
aNotify) {
nsAttrValue attrValue;
- ParseCORSValue(aValue, attrValue);
+ ParseCORSValue(aValue.String(), attrValue);
if (GetCORSMode() != AttrValueToCORSMode(&attrValue)) {
// Force a new load of the image with the new cross origin policy.
- forceReload = true;
+ mForceReload = true;
}
} else if (aName == nsGkAtoms::referrerpolicy &&
- aNameSpaceID == kNameSpaceID_None &&
+ aNamespaceID == kNameSpaceID_None &&
aNotify) {
- ReferrerPolicy referrerPolicy = AttributeReferrerPolicyFromString(aValue);
+ ReferrerPolicy referrerPolicy = AttributeReferrerPolicyFromString(aValue.String());
if (!InResponsiveMode() &&
referrerPolicy != RP_Unset &&
referrerPolicy != GetImageReferrerPolicy()) {
@@ -553,22 +523,28 @@ HTMLImageElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
// the attribute will neither trigger a reload nor update the referrer
// policy of the loading channel (whether it has previously completed or
// not). Force a new load of the image with the new referrerpolicy.
- forceReload = true;
+ mForceReload = true;
}
}
- nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix,
- aValue, aNotify);
+ return;
+}
+void
+HTMLImageElement::AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ bool aNotify)
+{
// Because we load image synchronously in non-responsive-mode, we need to do
// reload after the attribute has been set if the reload is triggerred by
// cross origin changing.
- if (forceReload) {
+ if (mForceReload) {
+ mForceReload = false;
+
if (InResponsiveMode()) {
// per spec, full selection runs when this changes, even though
// it doesn't directly affect the source selection
QueueImageLoadTask(true);
- } else {
+ } else if (OwnerDoc()->IsCurrentActiveDocument()) {
// Bug 1076583 - We still use the older synchronous algorithm in
// non-responsive mode. Force a new load of the image with the
// new cross origin policy
@@ -576,7 +552,59 @@ HTMLImageElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
}
- return rv;
+ return;
+}
+
+nsresult
+HTMLImageElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
+{
+ // We handle image element with attribute ismap in its corresponding frame
+ // element. Set mMultipleActionsPrevented here to prevent the click event
+ // trigger the behaviors in Element::PostHandleEventForLinks
+ WidgetMouseEvent* mouseEvent = aVisitor.mEvent->AsMouseEvent();
+ if (mouseEvent && mouseEvent->IsLeftClickEvent() && IsMap()) {
+ mouseEvent->mFlags.mMultipleActionsPrevented = true;
+ }
+ return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
+}
+
+bool
+HTMLImageElement::IsHTMLFocusable(bool aWithMouse,
+ bool *aIsFocusable, int32_t *aTabIndex)
+{
+ int32_t tabIndex = TabIndex();
+
+ if (IsInUncomposedDoc()) {
+ nsAutoString usemap;
+ GetUseMap(usemap);
+ // XXXbz which document should this be using? sXBL/XBL2 issue! I
+ // think that OwnerDoc() is right, since we don't want to
+ // assume stuff about the document we're bound to.
+ if (OwnerDoc()->FindImageMap(usemap)) {
+ if (aTabIndex) {
+ // Use tab index on individual map areas
+ *aTabIndex = (sTabFocusModel & eTabFocus_linksMask)? 0 : -1;
+ }
+ // Image map is not focusable itself, but flag as tabbable
+ // so that image map areas get walked into.
+ *aIsFocusable = false;
+
+ return false;
+ }
+ }
+
+ if (aTabIndex) {
+ // Can be in tab order if tabindex >=0 and form controls are tabbable.
+ *aTabIndex = (sTabFocusModel & eTabFocus_formElementsMask)? tabIndex : -1;
+ }
+
+ *aIsFocusable =
+#ifdef XP_MACOSX
+ (!aWithMouse || nsFocusManager::sMouseFocusesFormControl) &&
+#endif
+ (tabIndex >= 0 || HasAttr(kNameSpaceID_None, nsGkAtoms::tabindex));
+
+ return false;
}
nsresult
diff --git a/dom/html/HTMLImageElement.h b/dom/html/HTMLImageElement.h
index 1e63cd79c..8d382610d 100644
--- a/dom/html/HTMLImageElement.h
+++ b/dom/html/HTMLImageElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -70,21 +69,11 @@ public:
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
bool IsHTMLFocusable(bool aWithMouse, bool *aIsFocusable, int32_t *aTabIndex) override;
- // SetAttr override. C++ is stupid, so have to override both
- // overloaded methods.
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
-
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsIContent* aBindingParent,
bool aCompileEventHandlers) override;
@@ -348,11 +337,17 @@ protected:
void UpdateFormOwner();
virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+
+ virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify) override;
// This is a weak reference that this element and the HTMLFormElement
// cooperate in maintaining.
@@ -367,6 +362,36 @@ private:
static void MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
nsRuleData* aData);
+ /**
+ * This function is called by BeforeSetAttr and OnAttrSetButNotChanged.
+ * It will not be called if the value is being unset.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aValue the value it's being set to represented as either a string or
+ * a parsed nsAttrValue.
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ void BeforeMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify);
+ /**
+ * This function is called by AfterSetAttr and OnAttrSetButNotChanged.
+ * It will not be called if the value is being unset.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ void AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ bool aNotify);
+ /**
+ * Used by BeforeMaybeChangeAttr and AfterMaybeChangeAttr to keep track of
+ * whether a reload needs to be forced after an attribute change that is
+ * currently in progress.
+ */
+ bool mForceReload;
+
bool mInDocResponsiveContent;
RefPtr<ImageLoadTask> mPendingImageLoadTask;
diff --git a/dom/html/HTMLInputElement.cpp b/dom/html/HTMLInputElement.cpp
index 7a07994f7..86d03d8f5 100644
--- a/dom/html/HTMLInputElement.cpp
+++ b/dom/html/HTMLInputElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -147,6 +146,8 @@ namespace dom {
#define NS_CONTROL_TYPE(bits) ((bits) & ~( \
NS_OUTER_ACTIVATE_EVENT | NS_ORIGINAL_CHECKED_VALUE | NS_NO_CONTENT_DISPATCH | \
NS_ORIGINAL_INDETERMINATE_VALUE))
+#define NS_PRE_HANDLE_BLUR_EVENT (1 << 13)
+#define NS_PRE_HANDLE_INPUT_EVENT (1 << 14)
// whether textfields should be selected once focused:
// -1: no, 1: yes, 0: uninitialized
@@ -172,15 +173,18 @@ static const nsAttrValue::EnumTable kInputTypeTable[] = {
{ "search", NS_FORM_INPUT_SEARCH },
{ "submit", NS_FORM_INPUT_SUBMIT },
{ "tel", NS_FORM_INPUT_TEL },
- { "text", NS_FORM_INPUT_TEXT },
{ "time", NS_FORM_INPUT_TIME },
{ "url", NS_FORM_INPUT_URL },
{ "week", NS_FORM_INPUT_WEEK },
+ // "text" must be last for ParseAttribute to work right. If you add things
+ // before it, please update kInputDefaultType.
+ { "text", NS_FORM_INPUT_TEXT },
{ nullptr, 0 }
};
// Default type is 'text'.
-static const nsAttrValue::EnumTable* kInputDefaultType = &kInputTypeTable[18];
+static const nsAttrValue::EnumTable* kInputDefaultType =
+ &kInputTypeTable[ArrayLength(kInputTypeTable) - 2];
static const uint8_t NS_INPUT_INPUTMODE_AUTO = 0;
static const uint8_t NS_INPUT_INPUTMODE_NUMERIC = 1;
@@ -1235,7 +1239,7 @@ HTMLInputElement::Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) co
nsresult
HTMLInputElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
@@ -1259,10 +1263,6 @@ HTMLInputElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
} else if (aNotify && aName == nsGkAtoms::disabled) {
mDisabledChanged = true;
- } else if (aName == nsGkAtoms::dir &&
- AttrValueIs(kNameSpaceID_None, nsGkAtoms::dir,
- nsGkAtoms::_auto, eIgnoreCase)) {
- SetDirectionIfAuto(false, aNotify);
} else if (mType == NS_FORM_INPUT_RADIO && aName == nsGkAtoms::required) {
nsCOMPtr<nsIRadioGroupContainer> container = GetRadioGroupContainer();
@@ -1282,7 +1282,8 @@ HTMLInputElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsresult
HTMLInputElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
//
@@ -1322,36 +1323,15 @@ HTMLInputElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
if (aName == nsGkAtoms::type) {
+ uint8_t newType;
if (!aValue) {
- // We're now a text input. Note that we have to handle this manually,
- // since removing an attribute (which is what happened, since aValue is
- // null) doesn't call ParseAttribute.
- HandleTypeChange(kInputDefaultType->value);
- }
-
- UpdateBarredFromConstraintValidation();
-
- if (mType != NS_FORM_INPUT_IMAGE) {
- // We're no longer an image input. Cancel our image requests, if we have
- // any. Note that doing this when we already weren't an image is ok --
- // just does nothing.
- CancelImageRequests(aNotify);
- } else if (aNotify) {
- // We just got switched to be an image input; we should see
- // whether we have an image to load;
- nsAutoString src;
- if (GetAttr(kNameSpaceID_None, nsGkAtoms::src, src)) {
- LoadImage(src, false, aNotify, eImageLoadType_Normal);
- }
+ // We're now a text input.
+ newType = kInputDefaultType->value;
+ } else {
+ newType = aValue->GetEnumValue();
}
-
- if (mType == NS_FORM_INPUT_PASSWORD && IsInComposedDoc()) {
- AsyncEventDispatcher* dispatcher =
- new AsyncEventDispatcher(this,
- NS_LITERAL_STRING("DOMInputPasswordAdded"),
- true,
- true);
- dispatcher->PostDOMEvent();
+ if (newType != mType) {
+ HandleTypeChange(newType, aNotify);
}
}
@@ -1434,7 +1414,7 @@ HTMLInputElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
"HTML5 spec does not allow underflow for type=range");
} else if (aName == nsGkAtoms::dir &&
aValue && aValue->Equals(nsGkAtoms::_auto, eIgnoreCase)) {
- SetDirectionIfAuto(true, aNotify);
+ SetDirectionFromValue(aNotify);
} else if (aName == nsGkAtoms::lang) {
if (mType == NS_FORM_INPUT_NUMBER) {
// Update the value that is displayed to the user to the new locale:
@@ -1450,12 +1430,11 @@ HTMLInputElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
// Clear the cached @autocomplete attribute state.
mAutocompleteAttrState = nsContentUtils::eAutocompleteAttrState_Unknown;
}
-
- UpdateState(aNotify);
}
return nsGenericHTMLFormElementWithState::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue,
+ aNotify);
}
// nsIDOMHTMLInputElement
@@ -3738,7 +3717,7 @@ HTMLInputElement::IsDisabledForEvents(WidgetEvent* aEvent)
}
nsresult
-HTMLInputElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLInputElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
// Do not process any DOM events if the element is disabled
aVisitor.mCanHandle = false;
@@ -3755,7 +3734,7 @@ HTMLInputElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
//FIXME Allow submission etc. also when there is no prescontext, Bug 329509.
if (!aVisitor.mPresContext) {
- return nsGenericHTMLElement::PreHandleEvent(aVisitor);
+ return nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
}
//
// Web pages expect the value of a radio button or checkbox to be set
@@ -3865,23 +3844,16 @@ HTMLInputElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
// Fire onchange (if necessary), before we do the blur, bug 357684.
if (aVisitor.mEvent->mMessage == eBlur) {
- // Experimental mobile types rely on the system UI to prevent users to not
- // set invalid values but we have to be extra-careful. Especially if the
- // option has been enabled on desktop.
- if (IsExperimentalMobileType(mType)) {
- nsAutoString aValue;
- GetValueInternal(aValue);
- nsresult rv =
- SetValueInternal(aValue, nsTextEditorState::eSetValue_Internal);
- NS_ENSURE_SUCCESS(rv, rv);
- }
- FireChangeEventIfNeeded();
+ // We set NS_PRE_HANDLE_BLUR_EVENT here and handle it in PreHandleEvent to
+ // prevent breaking event target chain creation.
+ aVisitor.mWantsPreHandleEvent = true;
+ aVisitor.mItemFlags |= NS_PRE_HANDLE_BLUR_EVENT;
}
if (mType == NS_FORM_INPUT_RANGE &&
(aVisitor.mEvent->mMessage == eFocus ||
aVisitor.mEvent->mMessage == eBlur)) {
- // Just as nsGenericHTMLFormElementWithState::PreHandleEvent calls
+ // Just as nsGenericHTMLFormElementWithState::GetEventTargetParent calls
// nsIFormControlFrame::SetFocus, we handle focus here.
nsIFrame* frame = GetPrimaryFrame();
if (frame) {
@@ -3969,10 +3941,11 @@ HTMLInputElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
}
}
- nsresult rv = nsGenericHTMLFormElementWithState::PreHandleEvent(aVisitor);
+ nsresult rv = nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
- // We do this after calling the base class' PreHandleEvent so that
- // nsIContent::PreHandleEvent doesn't reset any change we make to mCanHandle.
+ // We do this after calling the base class' GetEventTargetParent so that
+ // nsIContent::GetEventTargetParent doesn't reset any change we make to
+ // mCanHandle.
if (mType == NS_FORM_INPUT_NUMBER &&
aVisitor.mEvent->IsTrusted() &&
aVisitor.mEvent->mOriginalTarget != this) {
@@ -3987,18 +3960,10 @@ HTMLInputElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
}
if (textControl && aVisitor.mEvent->mOriginalTarget == textControl) {
if (aVisitor.mEvent->mMessage == eEditorInput) {
- // Propogate the anon text control's new value to our HTMLInputElement:
- nsAutoString value;
- numberControlFrame->GetValueOfAnonTextControl(value);
- numberControlFrame->HandlingInputEvent(true);
- nsWeakFrame weakNumberControlFrame(numberControlFrame);
- rv = SetValueInternal(value,
- nsTextEditorState::eSetValue_BySetUserInput |
- nsTextEditorState::eSetValue_Notify);
- NS_ENSURE_SUCCESS(rv, rv);
- if (weakNumberControlFrame.IsAlive()) {
- numberControlFrame->HandlingInputEvent(false);
- }
+ aVisitor.mWantsPreHandleEvent = true;
+ // We set NS_PRE_HANDLE_INPUT_EVENT here and handle it in PreHandleEvent
+ // to prevent breaking event target chain creation.
+ aVisitor.mItemFlags |= NS_PRE_HANDLE_INPUT_EVENT;
}
else if (aVisitor.mEvent->mMessage == eFormChange) {
// We cancel the DOM 'change' event that is fired for any change to our
@@ -4037,6 +4002,50 @@ HTMLInputElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
return rv;
}
+nsresult
+HTMLInputElement::PreHandleEvent(EventChainVisitor& aVisitor)
+{
+ if (!aVisitor.mPresContext) {
+ return nsGenericHTMLFormElementWithState::PreHandleEvent(aVisitor);
+ }
+ nsresult rv;
+ if (aVisitor.mItemFlags & NS_PRE_HANDLE_BLUR_EVENT) {
+ MOZ_ASSERT(aVisitor.mEvent->mMessage == eBlur);
+ // Experimental mobile types rely on the system UI to prevent users to not
+ // set invalid values but we have to be extra-careful. Especially if the
+ // option has been enabled on desktop.
+ if (IsExperimentalMobileType(mType)) {
+ nsAutoString aValue;
+ GetValueInternal(aValue);
+ nsresult rv =
+ SetValueInternal(aValue, nsTextEditorState::eSetValue_Internal);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ FireChangeEventIfNeeded();
+ }
+ rv = nsGenericHTMLFormElementWithState::PreHandleEvent(aVisitor);
+ if (aVisitor.mItemFlags & NS_PRE_HANDLE_INPUT_EVENT) {
+ nsNumberControlFrame* numberControlFrame = do_QueryFrame(GetPrimaryFrame());
+ MOZ_ASSERT(aVisitor.mEvent->mMessage == eEditorInput);
+ MOZ_ASSERT(numberControlFrame);
+ MOZ_ASSERT(numberControlFrame->GetAnonTextControl() ==
+ aVisitor.mEvent->mOriginalTarget);
+ // Propogate the anon text control's new value to our HTMLInputElement:
+ nsAutoString value;
+ numberControlFrame->GetValueOfAnonTextControl(value);
+ numberControlFrame->HandlingInputEvent(true);
+ nsWeakFrame weakNumberControlFrame(numberControlFrame);
+ rv = SetValueInternal(value,
+ nsTextEditorState::eSetValue_BySetUserInput |
+ nsTextEditorState::eSetValue_Notify);
+ NS_ENSURE_SUCCESS(rv, rv);
+ if (weakNumberControlFrame.IsAlive()) {
+ numberControlFrame->HandlingInputEvent(false);
+ }
+ }
+ return rv;
+}
+
void
HTMLInputElement::StartRangeThumbDrag(WidgetGUIEvent* aEvent)
{
@@ -4961,7 +4970,9 @@ HTMLInputElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
}
// Set direction based on value if dir=auto
- SetDirectionIfAuto(HasDirAuto(), false);
+ if (HasDirAuto()) {
+ SetDirectionFromValue(false);
+ }
// An element can't suffer from value missing if it is not in a document.
// We have to check if we suffer from that as we are now in a document.
@@ -5015,14 +5026,23 @@ HTMLInputElement::UnbindFromTree(bool aDeep, bool aNullParent)
}
void
-HTMLInputElement::HandleTypeChange(uint8_t aNewType)
+HTMLInputElement::HandleTypeChange(uint8_t aNewType, bool aNotify)
{
- if (mType == NS_FORM_INPUT_RANGE && mIsDraggingRange) {
+ uint8_t oldType = mType;
+ MOZ_ASSERT(oldType != aNewType);
+
+ if (aNewType == NS_FORM_INPUT_FILE || oldType == NS_FORM_INPUT_FILE) {
+ // Strictly speaking, we only need to clear files on going _to_ or _from_
+ // the NS_FORM_INPUT_FILE type, not both, since we'll never confuse values
+ // and filenames. But this is safer.
+ ClearFiles(false);
+ }
+
+ if (oldType == NS_FORM_INPUT_RANGE && mIsDraggingRange) {
CancelRangeThumbDrag(false);
}
ValueModeType aOldValueMode = GetValueMode();
- uint8_t oldType = mType;
nsAutoString aOldValue;
if (aOldValueMode == VALUE_MODE_VALUE) {
@@ -5103,6 +5123,30 @@ HTMLInputElement::HandleTypeChange(uint8_t aNewType)
UpdateAllValidityStates(false);
UpdateApzAwareFlag();
+
+ UpdateBarredFromConstraintValidation();
+
+ if (oldType == NS_FORM_INPUT_IMAGE) {
+ // We're no longer an image input. Cancel our image requests, if we have
+ // any.
+ CancelImageRequests(aNotify);
+ } else if (aNotify && mType == NS_FORM_INPUT_IMAGE) {
+ // We just got switched to be an image input; we should see
+ // whether we have an image to load;
+ nsAutoString src;
+ if (GetAttr(kNameSpaceID_None, nsGkAtoms::src, src)) {
+ LoadImage(src, false, aNotify, eImageLoadType_Normal);
+ }
+ }
+
+ if (mType == NS_FORM_INPUT_PASSWORD && IsInComposedDoc()) {
+ AsyncEventDispatcher* dispatcher =
+ new AsyncEventDispatcher(this,
+ NS_LITERAL_STRING("DOMInputPasswordAdded"),
+ true,
+ true);
+ dispatcher->PostDOMEvent();
+ }
}
void
@@ -5813,42 +5857,32 @@ HTMLInputElement::ParseAttribute(int32_t aNamespaceID,
const nsAString& aValue,
nsAttrValue& aResult)
{
+ MOZ_ASSERT(kInputDefaultType->value == NS_FORM_INPUT_TEXT,
+ "Someone forgot to update kInputDefaultType when adding a new "
+ "input type.");
+ MOZ_ASSERT(kInputTypeTable[ArrayLength(kInputTypeTable) - 1].tag == nullptr,
+ "Last entry in the table must be the nullptr guard");
+ MOZ_ASSERT(kInputTypeTable[ArrayLength(kInputTypeTable) - 2].value ==
+ NS_FORM_INPUT_TEXT,
+ "Next to last entry in the table must be the \"text\" entry");
+
if (aNamespaceID == kNameSpaceID_None) {
if (aAttribute == nsGkAtoms::type) {
- // XXX ARG!! This is major evilness. ParseAttribute
- // shouldn't set members. Override SetAttr instead
- int32_t newType;
- bool success = aResult.ParseEnumValue(aValue, kInputTypeTable, false);
- if (success) {
- newType = aResult.GetEnumValue();
- if ((newType == NS_FORM_INPUT_NUMBER && !IsInputNumberEnabled()) ||
- (newType == NS_FORM_INPUT_COLOR && !IsInputColorEnabled()) ||
- (IsDateTimeInputType(newType) && !IsDateTimeTypeSupported(newType))) {
- newType = kInputDefaultType->value;
- aResult.SetTo(newType, &aValue);
- }
- } else {
- newType = kInputDefaultType->value;
+ aResult.ParseEnumValue(aValue, kInputTypeTable, false, kInputDefaultType);
+ int32_t newType = aResult.GetEnumValue();
+ if ((IsExperimentalMobileType(newType) &&
+ !IsExperimentalFormsEnabled()) ||
+ (newType == NS_FORM_INPUT_NUMBER && !IsInputNumberEnabled()) ||
+ (newType == NS_FORM_INPUT_COLOR && !IsInputColorEnabled()) ||
+ (IsDateTimeInputType(newType) &&
+ !IsDateTimeTypeSupported(newType))) {
+ // There's no public way to set an nsAttrValue to an enum value, but we
+ // can just re-parse with a table that doesn't have any types other than
+ // "text" in it.
+ aResult.ParseEnumValue(aValue, kInputDefaultType, false, kInputDefaultType);
}
- if (newType != mType) {
- // Make sure to do the check for newType being NS_FORM_INPUT_FILE and
- // the corresponding SetValueInternal() call _before_ we set mType.
- // That way the logic in SetValueInternal() will work right (that logic
- // makes assumptions about our frame based on mType, but we won't have
- // had time to recreate frames yet -- that happens later in the
- // SetAttr() process).
- if (newType == NS_FORM_INPUT_FILE || mType == NS_FORM_INPUT_FILE) {
- // This call isn't strictly needed any more since we'll never
- // confuse values and filenames. However it's there for backwards
- // compat.
- ClearFiles(false);
- }
-
- HandleTypeChange(newType);
- }
-
- return success;
+ return true;
}
if (aAttribute == nsGkAtoms::width) {
return aResult.ParseSpecialIntValue(aValue);
@@ -6654,17 +6688,12 @@ HTMLInputElement::SetDefaultValueAsValue()
}
void
-HTMLInputElement::SetDirectionIfAuto(bool aAuto, bool aNotify)
+HTMLInputElement::SetDirectionFromValue(bool aNotify)
{
- if (aAuto) {
- SetHasDirAuto();
- if (IsSingleLineTextControl(true)) {
- nsAutoString value;
- GetValue(value);
- SetDirectionalityFromValue(this, value, aNotify);
- }
- } else {
- ClearHasDirAuto();
+ if (IsSingleLineTextControl(true)) {
+ nsAutoString value;
+ GetValue(value);
+ SetDirectionalityFromValue(this, value, aNotify);
}
}
@@ -8441,7 +8470,7 @@ HTMLInputElement::OnValueChanged(bool aNotify, bool aWasInteractiveUserChange)
UpdateAllValidityStates(aNotify);
if (HasDirAuto()) {
- SetDirectionIfAuto(true, aNotify);
+ SetDirectionFromValue(aNotify);
}
// :placeholder-shown pseudo-class may change when the value changes.
diff --git a/dom/html/HTMLInputElement.h b/dom/html/HTMLInputElement.h
index a000aa21d..16651d520 100644
--- a/dom/html/HTMLInputElement.h
+++ b/dom/html/HTMLInputElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -185,7 +184,9 @@ public:
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
+ virtual nsresult PreHandleEvent(EventChainVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
void PostHandleEventForRangeThumb(EventChainPostVisitor& aVisitor);
@@ -956,13 +957,15 @@ protected:
* Called when an attribute is about to be changed
*/
virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
/**
* Called when an attribute has just been changed
*/
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
/**
* Dispatch a select event. Returns true if the event was not cancelled.
@@ -1098,7 +1101,7 @@ protected:
/**
* Manages the internal data storage across type changes.
*/
- void HandleTypeChange(uint8_t aNewType);
+ void HandleTypeChange(uint8_t aNewType, bool aNotify);
/**
* Sanitize the value of the element depending of its current type.
@@ -1118,7 +1121,7 @@ protected:
*/
nsresult SetDefaultValueAsValue();
- virtual void SetDirectionIfAuto(bool aAuto, bool aNotify);
+ void SetDirectionFromValue(bool aNotify);
/**
* Return if an element should have a specific validity UI
diff --git a/dom/html/HTMLLIElement.cpp b/dom/html/HTMLLIElement.cpp
index 304105399..8b1e8df8e 100644
--- a/dom/html/HTMLLIElement.cpp
+++ b/dom/html/HTMLLIElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLLIElement.h b/dom/html/HTMLLIElement.h
index 3f5692009..f631966a3 100644
--- a/dom/html/HTMLLIElement.h
+++ b/dom/html/HTMLLIElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLLabelElement.cpp b/dom/html/HTMLLabelElement.cpp
index ec36c8b99..00df4b5d9 100644
--- a/dom/html/HTMLLabelElement.cpp
+++ b/dom/html/HTMLLabelElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLLabelElement.h b/dom/html/HTMLLabelElement.h
index c8385fc53..5771a001f 100644
--- a/dom/html/HTMLLabelElement.h
+++ b/dom/html/HTMLLabelElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLLegendElement.cpp b/dom/html/HTMLLegendElement.cpp
index 1a593d769..87df3ba3e 100644
--- a/dom/html/HTMLLegendElement.cpp
+++ b/dom/html/HTMLLegendElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -71,21 +70,6 @@ HTMLLegendElement::GetAttributeChangeHint(const nsIAtom* aAttribute,
}
nsresult
-HTMLLegendElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- return nsGenericHTMLElement::SetAttr(aNameSpaceID, aAttribute,
- aPrefix, aValue, aNotify);
-}
-nsresult
-HTMLLegendElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
-{
- return nsGenericHTMLElement::UnsetAttr(aNameSpaceID, aAttribute, aNotify);
-}
-
-nsresult
HTMLLegendElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsIContent* aBindingParent,
bool aCompileEventHandlers)
diff --git a/dom/html/HTMLLegendElement.h b/dom/html/HTMLLegendElement.h
index e2d71d62d..6ce3140ec 100644
--- a/dom/html/HTMLLegendElement.h
+++ b/dom/html/HTMLLegendElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -42,16 +41,6 @@ public:
nsAttrValue& aResult) override;
virtual nsChangeHint GetAttributeChangeHint(const nsIAtom* aAttribute,
int32_t aModType) const override;
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override;
diff --git a/dom/html/HTMLLinkElement.cpp b/dom/html/HTMLLinkElement.cpp
index 1b78cbd69..df0cc72a4 100644
--- a/dom/html/HTMLLinkElement.cpp
+++ b/dom/html/HTMLLinkElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -344,7 +343,7 @@ HTMLLinkElement::UpdateImport()
nsresult
HTMLLinkElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue, bool aNotify)
+ const nsAttrValueOrString* aValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None &&
(aName == nsGkAtoms::href || aName == nsGkAtoms::rel)) {
@@ -359,7 +358,8 @@ HTMLLinkElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsresult
HTMLLinkElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
// It's safe to call ResetLinkState here because our new attr value has
// already been set or unset. ResetLinkState needs the updated attribute
@@ -436,13 +436,13 @@ HTMLLinkElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
nsresult
-HTMLLinkElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLLinkElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
- return PreHandleEventForAnchors(aVisitor);
+ return GetEventTargetParentForAnchors(aVisitor);
}
nsresult
diff --git a/dom/html/HTMLLinkElement.h b/dom/html/HTMLLinkElement.h
index f9c832c8d..8575d5b49 100644
--- a/dom/html/HTMLLinkElement.h
+++ b/dom/html/HTMLLinkElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -46,7 +45,8 @@ public:
void UpdateImport();
// nsIDOMEventTarget
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
@@ -61,10 +61,11 @@ public:
virtual void UnbindFromTree(bool aDeep = true,
bool aNullParent = true) override;
virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
bool aNotify) override;
virtual bool IsLink(nsIURI** aURI) const override;
virtual already_AddRefed<nsIURI> GetHrefURI() const override;
diff --git a/dom/html/HTMLMapElement.cpp b/dom/html/HTMLMapElement.cpp
index 36a0f410b..b6d93e052 100644
--- a/dom/html/HTMLMapElement.cpp
+++ b/dom/html/HTMLMapElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLMapElement.h b/dom/html/HTMLMapElement.h
index a15bd6d23..03a9a9ae7 100644
--- a/dom/html/HTMLMapElement.h
+++ b/dom/html/HTMLMapElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp
index 4abc202a8..0828208f6 100644
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -3738,77 +3737,74 @@ int32_t HTMLMediaElement::TabIndexDefault()
return 0;
}
-nsresult HTMLMediaElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- nsresult rv =
- nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix, aValue,
- aNotify);
- if (NS_FAILED(rv))
- return rv;
- if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::src) {
- DoLoad();
- }
- if (aNotify && aNameSpaceID == kNameSpaceID_None) {
- if (aName == nsGkAtoms::autoplay) {
- StopSuspendingAfterFirstFrame();
- CheckAutoplayDataReady();
- // This attribute can affect AddRemoveSelfReference
- AddRemoveSelfReference();
- UpdatePreloadAction();
+nsresult
+HTMLMediaElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
+{
+ if (aNameSpaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::src) {
+ mSrcMediaSource = nullptr;
+ if (aValue) {
+ nsString srcStr = aValue->GetStringValue();
+ nsCOMPtr<nsIURI> uri;
+ NewURIFromString(srcStr, getter_AddRefs(uri));
+ if (uri && IsMediaSourceURI(uri)) {
+ nsresult rv =
+ NS_GetSourceForMediaSourceURI(uri, getter_AddRefs(mSrcMediaSource));
+ if (NS_FAILED(rv)) {
+ nsAutoString spec;
+ GetCurrentSrc(spec);
+ const char16_t* params[] = { spec.get() };
+ ReportLoadError("MediaLoadInvalidURI", params, ArrayLength(params));
+ }
+ }
+ }
+ } else if (aName == nsGkAtoms::autoplay) {
+ if (aNotify) {
+ if (aValue) {
+ StopSuspendingAfterFirstFrame();
+ CheckAutoplayDataReady();
+ }
+ // This attribute can affect AddRemoveSelfReference
+ AddRemoveSelfReference();
+ UpdatePreloadAction();
+ }
} else if (aName == nsGkAtoms::preload) {
UpdatePreloadAction();
}
}
- return rv;
+ // Since AfterMaybeChangeAttr may call DoLoad, make sure that it is called
+ // *after* any possible changes to mSrcMediaSource.
+ if (aValue) {
+ AfterMaybeChangeAttr(aNameSpaceID, aName, aNotify);
+ }
+
+ return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
+ aValue, aOldValue, aNotify);
}
-nsresult HTMLMediaElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttr,
- bool aNotify)
+nsresult
+HTMLMediaElement::OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
{
- nsresult rv = nsGenericHTMLElement::UnsetAttr(aNameSpaceID, aAttr, aNotify);
- if (NS_FAILED(rv))
- return rv;
- if (aNotify && aNameSpaceID == kNameSpaceID_None) {
- if (aAttr == nsGkAtoms::autoplay) {
- // This attribute can affect AddRemoveSelfReference
- AddRemoveSelfReference();
- UpdatePreloadAction();
- } else if (aAttr == nsGkAtoms::preload) {
- UpdatePreloadAction();
- }
- }
+ AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
- return rv;
+ return nsGenericHTMLElement::OnAttrSetButNotChanged(aNamespaceID, aName,
+ aValue, aNotify);
}
-nsresult
-HTMLMediaElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
-{
- if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::src) {
- mSrcMediaSource = nullptr;
- if (aValue) {
- nsString srcStr = aValue->GetStringValue();
- nsCOMPtr<nsIURI> uri;
- NewURIFromString(srcStr, getter_AddRefs(uri));
- if (uri && IsMediaSourceURI(uri)) {
- nsresult rv =
- NS_GetSourceForMediaSourceURI(uri, getter_AddRefs(mSrcMediaSource));
- if (NS_FAILED(rv)) {
- nsAutoString spec;
- GetCurrentSrc(spec);
- const char16_t* params[] = { spec.get() };
- ReportLoadError("MediaLoadInvalidURI", params, ArrayLength(params));
- }
- }
+void
+HTMLMediaElement::AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::src) {
+ DoLoad();
}
}
-
- return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
}
nsresult HTMLMediaElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
@@ -5646,7 +5642,7 @@ nsIContent* HTMLMediaElement::GetNextSource()
"Should only iterate over direct children");
#endif
- int32_t startOffset = 0;
+ uint32_t startOffset = 0;
rv = mSourcePointer->GetStartOffset(&startOffset);
NS_ENSURE_SUCCESS(rv, nullptr);
diff --git a/dom/html/HTMLMediaElement.h b/dom/html/HTMLMediaElement.h
index 44c666f95..bda9924a6 100644
--- a/dom/html/HTMLMediaElement.h
+++ b/dom/html/HTMLMediaElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -132,21 +131,6 @@ public:
nsIAtom* aAttribute,
const nsAString& aValue,
nsAttrValue& aResult) override;
- // SetAttr override. C++ is stupid, so have to override both
- // overloaded methods.
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttr,
- bool aNotify) override;
- virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue,
- bool aNotify) override;
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsIContent* aBindingParent,
@@ -1314,6 +1298,14 @@ protected:
already_AddRefed<Promise> CreateDOMPromise(ErrorResult& aRv) const;
+ virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+ virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify) override;
+
// The current decoder. Load() has been called on this decoder.
// At most one of mDecoder and mSrcStream can be non-null.
RefPtr<MediaDecoder> mDecoder;
@@ -1716,6 +1708,17 @@ private:
// We keep track of these because the load algorithm resolves/rejects all
// already-dispatched pending play promises.
nsTArray<nsResolveOrRejectPendingPlayPromisesRunner*> mPendingPlayPromisesRunners;
+
+private:
+ /**
+ * This function is called by AfterSetAttr and OnAttrSetButNotChanged.
+ * It will not be called if the value is being unset.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ void AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName, bool aNotify);
};
} // namespace dom
diff --git a/dom/html/HTMLMenuElement.cpp b/dom/html/HTMLMenuElement.cpp
index 098590f1b..6c096084a 100644
--- a/dom/html/HTMLMenuElement.cpp
+++ b/dom/html/HTMLMenuElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLMenuElement.h b/dom/html/HTMLMenuElement.h
index c374e7e60..5bd26fe98 100644
--- a/dom/html/HTMLMenuElement.h
+++ b/dom/html/HTMLMenuElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLMenuItemElement.cpp b/dom/html/HTMLMenuItemElement.cpp
index ca8bb4feb..5c5cf8d76 100644
--- a/dom/html/HTMLMenuItemElement.cpp
+++ b/dom/html/HTMLMenuItemElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -252,7 +251,7 @@ HTMLMenuItemElement::SetChecked(bool aChecked)
}
nsresult
-HTMLMenuItemElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLMenuItemElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (aVisitor.mEvent->mMessage == eMouseClick) {
@@ -283,7 +282,7 @@ HTMLMenuItemElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
aVisitor.mItemFlags |= mType;
}
- return nsGenericHTMLElement::PreHandleEvent(aVisitor);
+ return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsresult
@@ -380,7 +379,8 @@ HTMLMenuItemElement::GetText(nsAString& aText)
nsresult
HTMLMenuItemElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
if ((aName == nsGkAtoms::radiogroup || aName == nsGkAtoms::type) &&
@@ -404,7 +404,7 @@ HTMLMenuItemElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
void
diff --git a/dom/html/HTMLMenuItemElement.h b/dom/html/HTMLMenuItemElement.h
index 3c19b1170..1c738187c 100644
--- a/dom/html/HTMLMenuItemElement.h
+++ b/dom/html/HTMLMenuItemElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -36,7 +35,8 @@ public:
// nsIDOMHTMLMenuItemElement
NS_DECL_NSIDOMHTMLMENUITEMELEMENT
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
@@ -124,7 +124,9 @@ protected:
protected:
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
void WalkRadioGroup(Visitor* aVisitor);
diff --git a/dom/html/HTMLMetaElement.cpp b/dom/html/HTMLMetaElement.cpp
index de7dc184c..f0a66b52c 100644
--- a/dom/html/HTMLMetaElement.cpp
+++ b/dom/html/HTMLMetaElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -61,7 +60,8 @@ HTMLMetaElement::SetMetaReferrer(nsIDocument* aDocument)
nsresult
HTMLMetaElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
nsIDocument *document = GetUncomposedDoc();
@@ -83,7 +83,7 @@ HTMLMetaElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
nsresult
diff --git a/dom/html/HTMLMetaElement.h b/dom/html/HTMLMetaElement.h
index d3f05826d..649ea11cf 100644
--- a/dom/html/HTMLMetaElement.h
+++ b/dom/html/HTMLMetaElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -33,7 +32,9 @@ public:
bool aNullParent = true) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
void CreateAndDispatchEvent(nsIDocument* aDoc, const nsAString& aEventName);
diff --git a/dom/html/HTMLMeterElement.cpp b/dom/html/HTMLMeterElement.cpp
index dd0e21470..9c45ed769 100644
--- a/dom/html/HTMLMeterElement.cpp
+++ b/dom/html/HTMLMeterElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLMeterElement.h b/dom/html/HTMLMeterElement.h
index 2e870bfa3..12b725b70 100644
--- a/dom/html/HTMLMeterElement.h
+++ b/dom/html/HTMLMeterElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLModElement.cpp b/dom/html/HTMLModElement.cpp
index 074fa5d5b..b148ecbcc 100644
--- a/dom/html/HTMLModElement.cpp
+++ b/dom/html/HTMLModElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLModElement.h b/dom/html/HTMLModElement.h
index e3afe6ebc..ae9997eb0 100644
--- a/dom/html/HTMLModElement.h
+++ b/dom/html/HTMLModElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLObjectElement.cpp b/dom/html/HTMLObjectElement.cpp
index 65f407889..496080c11 100644
--- a/dom/html/HTMLObjectElement.cpp
+++ b/dom/html/HTMLObjectElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -298,41 +297,45 @@ HTMLObjectElement::UnbindFromTree(bool aDeep,
nsresult
-HTMLObjectElement::SetAttr(int32_t aNameSpaceID, nsIAtom *aName,
- nsIAtom *aPrefix, const nsAString &aValue,
- bool aNotify)
+HTMLObjectElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
- nsresult rv = nsGenericHTMLFormElement::SetAttr(aNameSpaceID, aName, aPrefix,
- aValue, aNotify);
+ nsresult rv = AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
NS_ENSURE_SUCCESS(rv, rv);
- // if aNotify is false, we are coming from the parser or some such place;
- // we'll get bound after all the attributes have been set, so we'll do the
- // object load from BindToTree/DoneAddingChildren.
- // Skip the LoadObject call in that case.
- // We also don't want to start loading the object when we're not yet in
- // a document, just in case that the caller wants to set additional
- // attributes before inserting the node into the document.
- if (aNotify && IsInComposedDoc() && mIsDoneAddingChildren &&
- aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::data) {
- return LoadObject(aNotify, true);
- }
-
- return NS_OK;
+ return nsGenericHTMLFormElement::AfterSetAttr(aNamespaceID, aName, aValue,
+ aOldValue, aNotify);
}
nsresult
-HTMLObjectElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
+HTMLObjectElement::OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
{
- nsresult rv = nsGenericHTMLFormElement::UnsetAttr(aNameSpaceID,
- aAttribute, aNotify);
+ nsresult rv = AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
NS_ENSURE_SUCCESS(rv, rv);
- // See comment in SetAttr
- if (aNotify && IsInComposedDoc() && mIsDoneAddingChildren &&
- aNameSpaceID == kNameSpaceID_None && aAttribute == nsGkAtoms::data) {
- return LoadObject(aNotify, true);
+ return nsGenericHTMLFormElement::OnAttrSetButNotChanged(aNamespaceID, aName,
+ aValue, aNotify);
+}
+
+nsresult
+HTMLObjectElement::AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ // if aNotify is false, we are coming from the parser or some such place;
+ // we'll get bound after all the attributes have been set, so we'll do the
+ // object load from BindToTree/DoneAddingChildren.
+ // Skip the LoadObject call in that case.
+ // We also don't want to start loading the object when we're not yet in
+ // a document, just in case that the caller wants to set additional
+ // attributes before inserting the node into the document.
+ if (aNotify && IsInComposedDoc() && mIsDoneAddingChildren &&
+ aName == nsGkAtoms::data) {
+ return LoadObject(aNotify, true);
+ }
}
return NS_OK;
diff --git a/dom/html/HTMLObjectElement.h b/dom/html/HTMLObjectElement.h
index 4041b78a3..6f0990918 100644
--- a/dom/html/HTMLObjectElement.h
+++ b/dom/html/HTMLObjectElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -59,11 +58,6 @@ public:
bool aCompileEventHandlers) override;
virtual void UnbindFromTree(bool aDeep = true,
bool aNullParent = true) override;
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom *aName,
- nsIAtom *aPrefix, const nsAString &aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
virtual bool IsHTMLFocusable(bool aWithMouse, bool *aIsFocusable, int32_t *aTabIndex) override;
virtual IMEState GetDesiredIMEState() override;
@@ -247,6 +241,15 @@ public:
return GetContentDocument(aSubjectPrincipal);
}
+ protected:
+ virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+ virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify) override;
+
private:
/**
* Calls LoadObject with the correct arguments to start the plugin load.
@@ -271,6 +274,18 @@ private:
static void MapAttributesIntoRule(const nsMappedAttributes* aAttributes,
nsRuleData* aData);
+ /**
+ * This function is called by AfterSetAttr and OnAttrSetButNotChanged.
+ * This function will be called by AfterSetAttr whether the attribute is being
+ * set or unset.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ nsresult AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ bool aNotify);
+
bool mIsDoneAddingChildren;
};
diff --git a/dom/html/HTMLOptGroupElement.cpp b/dom/html/HTMLOptGroupElement.cpp
index 8a044fbf3..ad2527dc9 100644
--- a/dom/html/HTMLOptGroupElement.cpp
+++ b/dom/html/HTMLOptGroupElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -48,7 +47,7 @@ NS_IMPL_STRING_ATTR(HTMLOptGroupElement, Label, label)
nsresult
-HTMLOptGroupElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLOptGroupElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = false;
// Do not process any DOM events if the element is disabled
@@ -66,7 +65,7 @@ HTMLOptGroupElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
}
}
- return nsGenericHTMLElement::PreHandleEvent(aVisitor);
+ return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
Element*
@@ -102,7 +101,8 @@ HTMLOptGroupElement::RemoveChildAt(uint32_t aIndex, bool aNotify)
nsresult
HTMLOptGroupElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::disabled) {
// All our children <option> have their :disabled state depending on our
@@ -117,7 +117,7 @@ HTMLOptGroupElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
EventStates
diff --git a/dom/html/HTMLOptGroupElement.h b/dom/html/HTMLOptGroupElement.h
index d53a2e32b..0d647733d 100644
--- a/dom/html/HTMLOptGroupElement.h
+++ b/dom/html/HTMLOptGroupElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -35,14 +34,17 @@ public:
virtual void RemoveChildAt(uint32_t aIndex, bool aNotify) override;
// nsIContent
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual EventStates IntrinsicState() const override;
virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual nsIDOMNode* AsDOMNode() override { return this; }
diff --git a/dom/html/HTMLOptionElement.cpp b/dom/html/HTMLOptionElement.cpp
index 7b1e3ca2d..8cb68216c 100644
--- a/dom/html/HTMLOptionElement.cpp
+++ b/dom/html/HTMLOptionElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -181,7 +180,7 @@ HTMLOptionElement::GetAttributeChangeHint(const nsIAtom* aAttribute,
nsresult
HTMLOptionElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify)
{
nsresult rv = nsGenericHTMLElement::BeforeSetAttr(aNamespaceID, aName,
@@ -244,7 +243,8 @@ HTMLOptionElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
nsresult
HTMLOptionElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None &&
aName == nsGkAtoms::value && Selected()) {
@@ -258,7 +258,7 @@ HTMLOptionElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
NS_IMETHODIMP
diff --git a/dom/html/HTMLOptionElement.h b/dom/html/HTMLOptionElement.h
index e220b84df..2d647e899 100644
--- a/dom/html/HTMLOptionElement.h
+++ b/dom/html/HTMLOptionElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -47,10 +46,12 @@ public:
int32_t aModType) const override;
virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
void SetSelectedInternal(bool aValue, bool aNotify);
diff --git a/dom/html/HTMLOptionsCollection.cpp b/dom/html/HTMLOptionsCollection.cpp
index 67de97fc4..cc7384a7d 100644
--- a/dom/html/HTMLOptionsCollection.cpp
+++ b/dom/html/HTMLOptionsCollection.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -239,6 +238,12 @@ HTMLOptionsCollection::GetParentObject()
return mSelect;
}
+DocGroup*
+HTMLOptionsCollection::GetDocGroup() const
+{
+ return mSelect ? mSelect->GetDocGroup() : nullptr;
+}
+
NS_IMETHODIMP
HTMLOptionsCollection::NamedItem(const nsAString& aName,
nsIDOMNode** aReturn)
diff --git a/dom/html/HTMLOptionsCollection.h b/dom/html/HTMLOptionsCollection.h
index 496919555..dc13eba9d 100644
--- a/dom/html/HTMLOptionsCollection.h
+++ b/dom/html/HTMLOptionsCollection.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -23,6 +22,7 @@ class nsIDOMHTMLOptionElement;
namespace mozilla {
namespace dom {
+class DocGroup;
class HTMLElementOrLong;
class HTMLOptionElementOrHTMLOptGroupElement;
class HTMLSelectElement;
@@ -62,6 +62,7 @@ public:
virtual Element* GetElementAt(uint32_t aIndex) override;
virtual nsINode* GetParentObject() override;
+ DocGroup* GetDocGroup() const;
NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_AMBIGUOUS(HTMLOptionsCollection,
nsIHTMLCollection)
diff --git a/dom/html/HTMLOutputElement.cpp b/dom/html/HTMLOutputElement.cpp
index 17608c94f..b27aa3f3d 100644
--- a/dom/html/HTMLOutputElement.cpp
+++ b/dom/html/HTMLOutputElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLOutputElement.h b/dom/html/HTMLOutputElement.h
index 588262480..7d43ba627 100644
--- a/dom/html/HTMLOutputElement.h
+++ b/dom/html/HTMLOutputElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLParagraphElement.cpp b/dom/html/HTMLParagraphElement.cpp
index 1157dee43..fb8e8b84f 100644
--- a/dom/html/HTMLParagraphElement.cpp
+++ b/dom/html/HTMLParagraphElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLParagraphElement.h b/dom/html/HTMLParagraphElement.h
index c1e231ab7..18a904463 100644
--- a/dom/html/HTMLParagraphElement.h
+++ b/dom/html/HTMLParagraphElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLPictureElement.cpp b/dom/html/HTMLPictureElement.cpp
index eab405ed8..da9d0c4e9 100644
--- a/dom/html/HTMLPictureElement.cpp
+++ b/dom/html/HTMLPictureElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLPictureElement.h b/dom/html/HTMLPictureElement.h
index 28714e02a..dce06e98a 100644
--- a/dom/html/HTMLPictureElement.h
+++ b/dom/html/HTMLPictureElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLPreElement.cpp b/dom/html/HTMLPreElement.cpp
index 36a1bc657..cbcc4b70c 100644
--- a/dom/html/HTMLPreElement.cpp
+++ b/dom/html/HTMLPreElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLPreElement.h b/dom/html/HTMLPreElement.h
index bd86dfe0d..62318ce27 100644
--- a/dom/html/HTMLPreElement.h
+++ b/dom/html/HTMLPreElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLProgressElement.cpp b/dom/html/HTMLProgressElement.cpp
index fc1926ee5..eb569e8bc 100644
--- a/dom/html/HTMLProgressElement.cpp
+++ b/dom/html/HTMLProgressElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLProgressElement.h b/dom/html/HTMLProgressElement.h
index ec10b48ab..0a97cd1b0 100644
--- a/dom/html/HTMLProgressElement.h
+++ b/dom/html/HTMLProgressElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLScriptElement.cpp b/dom/html/HTMLScriptElement.cpp
index 6b0b4be59..48fa96ac9 100644
--- a/dom/html/HTMLScriptElement.cpp
+++ b/dom/html/HTMLScriptElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -232,13 +231,14 @@ HTMLScriptElement::SetNoModule(bool aValue, ErrorResult& aRv)
nsresult
HTMLScriptElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (nsGkAtoms::async == aName && kNameSpaceID_None == aNamespaceID) {
mForceAsync = false;
}
return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
NS_IMETHODIMP
diff --git a/dom/html/HTMLScriptElement.h b/dom/html/HTMLScriptElement.h
index ffe9d3fbd..a0c9e4725 100644
--- a/dom/html/HTMLScriptElement.h
+++ b/dom/html/HTMLScriptElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -57,7 +56,9 @@ public:
// Element
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
// WebIDL
void SetText(const nsAString& aValue, ErrorResult& rv);
diff --git a/dom/html/HTMLSelectElement.cpp b/dom/html/HTMLSelectElement.cpp
index e1bc0ca62..65bfa8871 100644
--- a/dom/html/HTMLSelectElement.cpp
+++ b/dom/html/HTMLSelectElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -1269,12 +1268,25 @@ HTMLSelectElement::UnbindFromTree(bool aDeep, bool aNullParent)
nsresult
HTMLSelectElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify)
{
- if (aNotify && aName == nsGkAtoms::disabled &&
- aNameSpaceID == kNameSpaceID_None) {
- mDisabledChanged = true;
+ if (aNameSpaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::disabled) {
+ if (aNotify) {
+ mDisabledChanged = true;
+ }
+ } else if (aName == nsGkAtoms::multiple) {
+ if (!aValue && aNotify && mSelectedIndex >= 0) {
+ // We're changing from being a multi-select to a single-select.
+ // Make sure we only have one option selected before we do that.
+ // Note that this needs to come before we really unset the attr,
+ // since SetOptionsSelectedByIndex does some bail-out type
+ // optimization for cases when the select is not multiple that
+ // would lead to only a single option getting deselected.
+ SetSelectedIndexInternal(mSelectedIndex, aNotify);
+ }
+ }
}
return nsGenericHTMLFormElementWithState::BeforeSetAttr(aNameSpaceID, aName,
@@ -1283,7 +1295,8 @@ HTMLSelectElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsresult
HTMLSelectElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
if (aName == nsGkAtoms::disabled) {
@@ -1293,44 +1306,18 @@ HTMLSelectElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
} else if (aName == nsGkAtoms::autocomplete) {
// Clear the cached @autocomplete attribute state
mAutocompleteAttrState = nsContentUtils::eAutocompleteAttrState_Unknown;
+ } else if (aName == nsGkAtoms::multiple) {
+ if (!aValue && aNotify) {
+ // We might have become a combobox; make sure _something_ gets
+ // selected in that case
+ CheckSelectSomething(aNotify);
+ }
}
-
- UpdateState(aNotify);
}
return nsGenericHTMLFormElementWithState::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
-}
-
-nsresult
-HTMLSelectElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
-{
- if (aNotify && aNameSpaceID == kNameSpaceID_None &&
- aAttribute == nsGkAtoms::multiple) {
- // We're changing from being a multi-select to a single-select.
- // Make sure we only have one option selected before we do that.
- // Note that this needs to come before we really unset the attr,
- // since SetOptionsSelectedByIndex does some bail-out type
- // optimization for cases when the select is not multiple that
- // would lead to only a single option getting deselected.
- if (mSelectedIndex >= 0) {
- SetSelectedIndexInternal(mSelectedIndex, aNotify);
- }
- }
-
- nsresult rv = nsGenericHTMLFormElementWithState::UnsetAttr(aNameSpaceID, aAttribute,
- aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (aNotify && aNameSpaceID == kNameSpaceID_None &&
- aAttribute == nsGkAtoms::multiple) {
- // We might have become a combobox; make sure _something_ gets
- // selected in that case
- CheckSelectSomething(aNotify);
- }
-
- return rv;
+ aValue, aOldValue,
+ aNotify);
}
void
@@ -1442,14 +1429,14 @@ HTMLSelectElement::IsDisabledForEvents(WidgetEvent* aEvent)
}
nsresult
-HTMLSelectElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLSelectElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = false;
if (IsDisabledForEvents(aVisitor.mEvent)) {
return NS_OK;
}
- return nsGenericHTMLFormElementWithState::PreHandleEvent(aVisitor);
+ return nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
}
nsresult
diff --git a/dom/html/HTMLSelectElement.h b/dom/html/HTMLSelectElement.h
index b9041c885..0c10f90fa 100644
--- a/dom/html/HTMLSelectElement.h
+++ b/dom/html/HTMLSelectElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -278,7 +277,8 @@ public:
virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
// nsIContent
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
@@ -374,12 +374,12 @@ public:
bool aCompileEventHandlers) override;
virtual void UnbindFromTree(bool aDeep, bool aNullParent) override;
virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual void DoneAddingChildren(bool aHaveNotified) override;
virtual bool IsDoneAddingChildren() override {
diff --git a/dom/html/HTMLShadowElement.cpp b/dom/html/HTMLShadowElement.cpp
deleted file mode 100644
index 8824c2875..000000000
--- a/dom/html/HTMLShadowElement.cpp
+++ /dev/null
@@ -1,373 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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 "mozilla/dom/ShadowRoot.h"
-
-#include "ChildIterator.h"
-#include "nsContentUtils.h"
-#include "nsDocument.h"
-#include "mozilla/dom/HTMLShadowElement.h"
-#include "mozilla/dom/HTMLUnknownElement.h"
-#include "mozilla/dom/HTMLShadowElementBinding.h"
-
-// Expand NS_IMPL_NS_NEW_HTML_ELEMENT(Shadow) to add check for web components
-// being enabled.
-nsGenericHTMLElement*
-NS_NewHTMLShadowElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
- mozilla::dom::FromParser aFromParser)
-{
- // When this check is removed, remove the nsDocument.h and
- // HTMLUnknownElement.h includes. Also remove nsINode::IsHTMLShadowElement.
- //
- // We have to jump through some hoops to be able to produce both NodeInfo* and
- // already_AddRefed<NodeInfo>& for our callees.
- RefPtr<mozilla::dom::NodeInfo> nodeInfo(aNodeInfo);
- if (!nsDocument::IsWebComponentsEnabled(nodeInfo)) {
- already_AddRefed<mozilla::dom::NodeInfo> nodeInfoArg(nodeInfo.forget());
- return new mozilla::dom::HTMLUnknownElement(nodeInfoArg);
- }
-
- already_AddRefed<mozilla::dom::NodeInfo> nodeInfoArg(nodeInfo.forget());
- return new mozilla::dom::HTMLShadowElement(nodeInfoArg);
-}
-
-using namespace mozilla::dom;
-
-HTMLShadowElement::HTMLShadowElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
- : nsGenericHTMLElement(aNodeInfo), mIsInsertionPoint(false)
-{
-}
-
-HTMLShadowElement::~HTMLShadowElement()
-{
- if (mProjectedShadow) {
- mProjectedShadow->RemoveMutationObserver(this);
- }
-}
-
-NS_IMPL_CYCLE_COLLECTION_CLASS(HTMLShadowElement)
-
-NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(HTMLShadowElement,
- nsGenericHTMLElement)
- NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mProjectedShadow)
-NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
-
-NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(HTMLShadowElement,
- nsGenericHTMLElement)
- if (tmp->mProjectedShadow) {
- tmp->mProjectedShadow->RemoveMutationObserver(tmp);
- tmp->mProjectedShadow = nullptr;
- }
-NS_IMPL_CYCLE_COLLECTION_UNLINK_END
-
-NS_IMPL_ADDREF_INHERITED(HTMLShadowElement, Element)
-NS_IMPL_RELEASE_INHERITED(HTMLShadowElement, Element)
-
-NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(HTMLShadowElement)
-NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
-
-NS_IMPL_ELEMENT_CLONE(HTMLShadowElement)
-
-JSObject*
-HTMLShadowElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
-{
- return HTMLShadowElementBinding::Wrap(aCx, this, aGivenProto);
-}
-
-void
-HTMLShadowElement::SetProjectedShadow(ShadowRoot* aProjectedShadow)
-{
- if (mProjectedShadow) {
- mProjectedShadow->RemoveMutationObserver(this);
-
- // The currently projected ShadowRoot is going away,
- // thus the destination insertion points need to be updated.
- ExplicitChildIterator childIterator(mProjectedShadow);
- for (nsIContent* content = childIterator.GetNextChild();
- content;
- content = childIterator.GetNextChild()) {
- ShadowRoot::RemoveDestInsertionPoint(this, content->DestInsertionPoints());
- }
- }
-
- mProjectedShadow = aProjectedShadow;
- if (mProjectedShadow) {
- // A new ShadowRoot is being projected, thus its explcit
- // children will be distributed to this shadow insertion point.
- ExplicitChildIterator childIterator(mProjectedShadow);
- for (nsIContent* content = childIterator.GetNextChild();
- content;
- content = childIterator.GetNextChild()) {
- content->DestInsertionPoints().AppendElement(this);
- }
-
- // Watch for mutations on the projected shadow because
- // it affects the nodes that are distributed to this shadow
- // insertion point.
- mProjectedShadow->AddMutationObserver(this);
- }
-}
-
-static bool
-IsInFallbackContent(nsIContent* aContent)
-{
- nsINode* parentNode = aContent->GetParentNode();
- while (parentNode) {
- if (parentNode->IsHTMLElement(nsGkAtoms::content)) {
- return true;
- }
- parentNode = parentNode->GetParentNode();
- }
-
- return false;
-}
-
-nsresult
-HTMLShadowElement::BindToTree(nsIDocument* aDocument,
- nsIContent* aParent,
- nsIContent* aBindingParent,
- bool aCompileEventHandlers)
-{
- RefPtr<ShadowRoot> oldContainingShadow = GetContainingShadow();
-
- nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent,
- aBindingParent,
- aCompileEventHandlers);
- NS_ENSURE_SUCCESS(rv, rv);
-
- ShadowRoot* containingShadow = GetContainingShadow();
- if (containingShadow && !oldContainingShadow) {
- // Keep track of all descendant <shadow> elements in tree order so
- // that when the current shadow insertion point is removed, the next
- // one can be found quickly.
- TreeOrderComparator comparator;
- containingShadow->ShadowDescendants().InsertElementSorted(this, comparator);
-
- if (containingShadow->ShadowDescendants()[0] != this) {
- // Only the first <shadow> (in tree order) of a ShadowRoot can be an insertion point.
- return NS_OK;
- }
-
- if (IsInFallbackContent(this)) {
- // If the first shadow element in tree order is invalid (in fallback content),
- // the containing ShadowRoot will not have a shadow insertion point.
- containingShadow->SetShadowElement(nullptr);
- } else {
- mIsInsertionPoint = true;
- containingShadow->SetShadowElement(this);
- }
-
- containingShadow->SetInsertionPointChanged();
- }
-
- if (mIsInsertionPoint && containingShadow) {
- // Propagate BindToTree calls to projected shadow root children.
- ShadowRoot* projectedShadow = containingShadow->GetOlderShadowRoot();
- if (projectedShadow) {
- projectedShadow->SetIsComposedDocParticipant(IsInComposedDoc());
-
- for (nsIContent* child = projectedShadow->GetFirstChild(); child;
- child = child->GetNextSibling()) {
- rv = child->BindToTree(nullptr, projectedShadow,
- projectedShadow->GetBindingParent(),
- aCompileEventHandlers);
- NS_ENSURE_SUCCESS(rv, rv);
- }
- }
- }
-
- return NS_OK;
-}
-
-void
-HTMLShadowElement::UnbindFromTree(bool aDeep, bool aNullParent)
-{
- RefPtr<ShadowRoot> oldContainingShadow = GetContainingShadow();
-
- if (mIsInsertionPoint && oldContainingShadow) {
- // Propagate UnbindFromTree call to previous projected shadow
- // root children.
- ShadowRoot* projectedShadow = oldContainingShadow->GetOlderShadowRoot();
- if (projectedShadow) {
- for (nsIContent* child = projectedShadow->GetFirstChild(); child;
- child = child->GetNextSibling()) {
- child->UnbindFromTree(true, false);
- }
-
- projectedShadow->SetIsComposedDocParticipant(false);
- }
- }
-
- nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
-
- if (oldContainingShadow && !GetContainingShadow() && mIsInsertionPoint) {
- nsTArray<HTMLShadowElement*>& shadowDescendants =
- oldContainingShadow->ShadowDescendants();
- shadowDescendants.RemoveElement(this);
- oldContainingShadow->SetShadowElement(nullptr);
-
- // Find the next shadow insertion point.
- if (shadowDescendants.Length() > 0 &&
- !IsInFallbackContent(shadowDescendants[0])) {
- oldContainingShadow->SetShadowElement(shadowDescendants[0]);
- }
-
- oldContainingShadow->SetInsertionPointChanged();
-
- mIsInsertionPoint = false;
- }
-}
-
-void
-HTMLShadowElement::DistributeSingleNode(nsIContent* aContent)
-{
- if (aContent->DestInsertionPoints().Contains(this)) {
- // Node has already been distrbuted this this node,
- // we are done.
- return;
- }
-
- aContent->DestInsertionPoints().AppendElement(this);
-
- // Handle the case where the shadow element is a child of
- // a node with a ShadowRoot. The nodes that have been distributed to
- // this shadow insertion point will need to be reprojected into the
- // insertion points of the parent's ShadowRoot.
- ShadowRoot* parentShadowRoot = GetParent()->GetShadowRoot();
- if (parentShadowRoot) {
- parentShadowRoot->DistributeSingleNode(aContent);
- return;
- }
-
- // Handle the case where the parent of this shadow element is a ShadowRoot
- // that is projected into a shadow insertion point in the younger ShadowRoot.
- ShadowRoot* containingShadow = GetContainingShadow();
- ShadowRoot* youngerShadow = containingShadow->GetYoungerShadowRoot();
- if (youngerShadow && GetParent() == containingShadow) {
- HTMLShadowElement* youngerShadowElement = youngerShadow->GetShadowElement();
- if (youngerShadowElement) {
- youngerShadowElement->DistributeSingleNode(aContent);
- }
- }
-}
-
-void
-HTMLShadowElement::RemoveDistributedNode(nsIContent* aContent)
-{
- ShadowRoot::RemoveDestInsertionPoint(this, aContent->DestInsertionPoints());
-
- // Handle the case where the shadow element is a child of
- // a node with a ShadowRoot. The nodes that have been distributed to
- // this shadow insertion point will need to be removed from the
- // insertion points of the parent's ShadowRoot.
- ShadowRoot* parentShadowRoot = GetParent()->GetShadowRoot();
- if (parentShadowRoot) {
- parentShadowRoot->RemoveDistributedNode(aContent);
- return;
- }
-
- // Handle the case where the parent of this shadow element is a ShadowRoot
- // that is projected into a shadow insertion point in the younger ShadowRoot.
- ShadowRoot* containingShadow = GetContainingShadow();
- ShadowRoot* youngerShadow = containingShadow->GetYoungerShadowRoot();
- if (youngerShadow && GetParent() == containingShadow) {
- HTMLShadowElement* youngerShadowElement = youngerShadow->GetShadowElement();
- if (youngerShadowElement) {
- youngerShadowElement->RemoveDistributedNode(aContent);
- }
- }
-}
-
-void
-HTMLShadowElement::DistributeAllNodes()
-{
- // All the explicit children of the projected ShadowRoot are distributed
- // into this shadow insertion point so update the destination insertion
- // points.
- ShadowRoot* containingShadow = GetContainingShadow();
- ShadowRoot* olderShadow = containingShadow->GetOlderShadowRoot();
- if (olderShadow) {
- ExplicitChildIterator childIterator(olderShadow);
- for (nsIContent* content = childIterator.GetNextChild();
- content;
- content = childIterator.GetNextChild()) {
- ShadowRoot::RemoveDestInsertionPoint(this, content->DestInsertionPoints());
- content->DestInsertionPoints().AppendElement(this);
- }
- }
-
- // Handle the case where the shadow element is a child of
- // a node with a ShadowRoot. The nodes that have been distributed to
- // this shadow insertion point will need to be reprojected into the
- // insertion points of the parent's ShadowRoot.
- ShadowRoot* parentShadowRoot = GetParent()->GetShadowRoot();
- if (parentShadowRoot) {
- parentShadowRoot->DistributeAllNodes();
- return;
- }
-
- // Handle the case where the parent of this shadow element is a ShadowRoot
- // that is projected into a shadow insertion point in the younger ShadowRoot.
- ShadowRoot* youngerShadow = containingShadow->GetYoungerShadowRoot();
- if (youngerShadow && GetParent() == containingShadow) {
- HTMLShadowElement* youngerShadowElement = youngerShadow->GetShadowElement();
- if (youngerShadowElement) {
- youngerShadowElement->DistributeAllNodes();
- }
- }
-}
-
-void
-HTMLShadowElement::ContentAppended(nsIDocument* aDocument,
- nsIContent* aContainer,
- nsIContent* aFirstNewContent,
- int32_t aNewIndexInContainer)
-{
- // Watch for content appended to the projected shadow (the ShadowRoot that
- // will be rendered in place of this shadow insertion point) because the
- // nodes may need to be distributed into other insertion points.
- nsIContent* currentChild = aFirstNewContent;
- while (currentChild) {
- if (ShadowRoot::IsPooledNode(currentChild, aContainer, mProjectedShadow)) {
- DistributeSingleNode(currentChild);
- }
- currentChild = currentChild->GetNextSibling();
- }
-}
-
-void
-HTMLShadowElement::ContentInserted(nsIDocument* aDocument,
- nsIContent* aContainer,
- nsIContent* aChild,
- int32_t aIndexInContainer)
-{
- // Watch for content appended to the projected shadow (the ShadowRoot that
- // will be rendered in place of this shadow insertion point) because the
- // nodes may need to be distributed into other insertion points.
- if (!ShadowRoot::IsPooledNode(aChild, aContainer, mProjectedShadow)) {
- return;
- }
-
- DistributeSingleNode(aChild);
-}
-
-void
-HTMLShadowElement::ContentRemoved(nsIDocument* aDocument,
- nsIContent* aContainer,
- nsIContent* aChild,
- int32_t aIndexInContainer,
- nsIContent* aPreviousSibling)
-{
- // Watch for content removed from the projected shadow (the ShadowRoot that
- // will be rendered in place of this shadow insertion point) because the
- // nodes may need to be removed from other insertion points.
- if (!ShadowRoot::IsPooledNode(aChild, aContainer, mProjectedShadow)) {
- return;
- }
-
- RemoveDistributedNode(aChild);
-}
-
diff --git a/dom/html/HTMLShadowElement.h b/dom/html/HTMLShadowElement.h
deleted file mode 100644
index 95083b802..000000000
--- a/dom/html/HTMLShadowElement.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
-/* 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/. */
-
-#ifndef mozilla_dom_HTMLShadowElement_h__
-#define mozilla_dom_HTMLShadowElement_h__
-
-#include "nsGenericHTMLElement.h"
-
-namespace mozilla {
-namespace dom {
-
-class HTMLShadowElement final : public nsGenericHTMLElement,
- public nsStubMutationObserver
-{
-public:
- explicit HTMLShadowElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
-
- // nsISupports
- NS_DECL_ISUPPORTS_INHERITED
-
- NS_DECL_NSIMUTATIONOBSERVER_CONTENTAPPENDED
- NS_DECL_NSIMUTATIONOBSERVER_CONTENTINSERTED
- NS_DECL_NSIMUTATIONOBSERVER_CONTENTREMOVED
-
- NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLShadowElement,
- nsGenericHTMLElement)
-
- static HTMLShadowElement* FromContent(nsIContent* aContent)
- {
- if (aContent->IsHTMLShadowElement()) {
- return static_cast<HTMLShadowElement*>(aContent);
- }
-
- return nullptr;
- }
-
- virtual bool IsHTMLShadowElement() const override { return true; }
-
- virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
-
- virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
- nsIContent* aBindingParent,
- bool aCompileEventHandlers) override;
-
- virtual void UnbindFromTree(bool aDeep = true,
- bool aNullParent = true) override;
-
- bool IsInsertionPoint() { return mIsInsertionPoint; }
-
- /**
- * Sets the ShadowRoot that will be rendered in place of
- * this shadow insertion point.
- */
- void SetProjectedShadow(ShadowRoot* aProjectedShadow);
-
- /**
- * Distributes a single explicit child of the projected ShadowRoot
- * to relevant insertion points.
- */
- void DistributeSingleNode(nsIContent* aContent);
-
- /**
- * Removes a single explicit child of the projected ShadowRoot
- * from relevant insertion points.
- */
- void RemoveDistributedNode(nsIContent* aContent);
-
- /**
- * Distributes all the explicit children of the projected ShadowRoot
- * to the shadow insertion point in the younger ShadowRoot and
- * the content insertion point of the parent node's ShadowRoot.
- */
- void DistributeAllNodes();
-
- // WebIDL methods.
- ShadowRoot* GetOlderShadowRoot() { return mProjectedShadow; }
-
-protected:
- virtual ~HTMLShadowElement();
-
- virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
-
- // The ShadowRoot that will be rendered in place of this shadow insertion point.
- RefPtr<ShadowRoot> mProjectedShadow;
-
- bool mIsInsertionPoint;
-};
-
-} // namespace dom
-} // namespace mozilla
-
-#endif // mozilla_dom_HTMLShadowElement_h__
-
diff --git a/dom/html/HTMLSharedElement.cpp b/dom/html/HTMLSharedElement.cpp
index bcb84d29b..e8c75f8aa 100644
--- a/dom/html/HTMLSharedElement.cpp
+++ b/dom/html/HTMLSharedElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -231,52 +230,32 @@ SetBaseTargetUsingFirstBaseWithTarget(nsIDocument* aDocument,
}
nsresult
-HTMLSharedElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
+HTMLSharedElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
- nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix,
- aValue, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- // If the href attribute of a <base> tag is changing, we may need to update
- // the document's base URI, which will cause all the links on the page to be
- // re-resolved given the new base. If the target attribute is changing, we
- // similarly need to change the base target.
- if (mNodeInfo->Equals(nsGkAtoms::base) &&
- aNameSpaceID == kNameSpaceID_None &&
- IsInUncomposedDoc()) {
- if (aName == nsGkAtoms::href) {
- SetBaseURIUsingFirstBaseWithHref(GetUncomposedDoc(), this);
- } else if (aName == nsGkAtoms::target) {
- SetBaseTargetUsingFirstBaseWithTarget(GetUncomposedDoc(), this);
- }
- }
-
- return NS_OK;
-}
-
-nsresult
-HTMLSharedElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- bool aNotify)
-{
- nsresult rv = nsGenericHTMLElement::UnsetAttr(aNameSpaceID, aName, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- // If we're the first <base> with an href and our href attribute is being
- // unset, then we're no longer the first <base> with an href, and we need to
- // find the new one. Similar for target.
- if (mNodeInfo->Equals(nsGkAtoms::base) &&
- aNameSpaceID == kNameSpaceID_None &&
- IsInUncomposedDoc()) {
+ if (aNamespaceID == kNameSpaceID_None) {
if (aName == nsGkAtoms::href) {
- SetBaseURIUsingFirstBaseWithHref(GetUncomposedDoc(), nullptr);
+ // If the href attribute of a <base> tag is changing, we may need to
+ // update the document's base URI, which will cause all the links on the
+ // page to be re-resolved given the new base.
+ // If the href is being unset (aValue is null), we will need to find a new
+ // <base>.
+ if (mNodeInfo->Equals(nsGkAtoms::base) && IsInUncomposedDoc()) {
+ SetBaseURIUsingFirstBaseWithHref(GetUncomposedDoc(),
+ aValue ? this : nullptr);
+ }
} else if (aName == nsGkAtoms::target) {
- SetBaseTargetUsingFirstBaseWithTarget(GetUncomposedDoc(), nullptr);
+ // The target attribute is in pretty much the same situation as the href
+ // attribute, above.
+ if (mNodeInfo->Equals(nsGkAtoms::base) && IsInUncomposedDoc()) {
+ SetBaseTargetUsingFirstBaseWithTarget(GetUncomposedDoc(),
+ aValue ? this : nullptr);
+ }
}
}
-
- return NS_OK;
+ return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
+ aOldValue, aNotify);
}
nsresult
diff --git a/dom/html/HTMLSharedElement.h b/dom/html/HTMLSharedElement.h
index 205750cf6..c0f8618dc 100644
--- a/dom/html/HTMLSharedElement.h
+++ b/dom/html/HTMLSharedElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -59,17 +58,6 @@ public:
nsIAtom* aAttribute,
const nsAString& aValue,
nsAttrValue& aResult) override;
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
-
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- bool aNotify) override;
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsIContent* aBindingParent,
@@ -181,6 +169,11 @@ protected:
virtual ~HTMLSharedElement();
virtual JSObject* WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
+
+ virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
};
} // namespace dom
diff --git a/dom/html/HTMLSharedListElement.cpp b/dom/html/HTMLSharedListElement.cpp
index a76a7513c..08ccdbf9a 100644
--- a/dom/html/HTMLSharedListElement.cpp
+++ b/dom/html/HTMLSharedListElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLSharedListElement.h b/dom/html/HTMLSharedListElement.h
index 2f733aa2e..3ff6e0430 100644
--- a/dom/html/HTMLSharedListElement.h
+++ b/dom/html/HTMLSharedListElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLSharedObjectElement.cpp b/dom/html/HTMLSharedObjectElement.cpp
index 889fd5aef..f8b795af7 100644
--- a/dom/html/HTMLSharedObjectElement.cpp
+++ b/dom/html/HTMLSharedObjectElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -161,27 +160,53 @@ HTMLSharedObjectElement::UnbindFromTree(bool aDeep,
nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
}
+nsresult
+HTMLSharedObjectElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify)
+{
+ if (aValue) {
+ nsresult rv = AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+
+ return nsGenericHTMLElement::AfterSetAttr(aNamespaceID, aName, aValue,
+ aOldValue, aNotify);
+}
nsresult
-HTMLSharedObjectElement::SetAttr(int32_t aNameSpaceID, nsIAtom *aName,
- nsIAtom *aPrefix, const nsAString &aValue,
- bool aNotify)
+HTMLSharedObjectElement::OnAttrSetButNotChanged(int32_t aNamespaceID,
+ nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
{
- nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix,
- aValue, aNotify);
+ nsresult rv = AfterMaybeChangeAttr(aNamespaceID, aName, aNotify);
NS_ENSURE_SUCCESS(rv, rv);
- // if aNotify is false, we are coming from the parser or some such place;
- // we'll get bound after all the attributes have been set, so we'll do the
- // object load from BindToTree/DoneAddingChildren.
- // Skip the LoadObject call in that case.
- // We also don't want to start loading the object when we're not yet in
- // a document, just in case that the caller wants to set additional
- // attributes before inserting the node into the document.
- if (aNotify && IsInComposedDoc() && mIsDoneAddingChildren &&
- aNameSpaceID == kNameSpaceID_None && aName == URIAttrName()
- && !BlockEmbedContentLoading()) {
- return LoadObject(aNotify, true);
+ return nsGenericHTMLElement::OnAttrSetButNotChanged(aNamespaceID, aName,
+ aValue, aNotify);
+}
+
+nsresult
+HTMLSharedObjectElement::AfterMaybeChangeAttr(int32_t aNamespaceID,
+ nsIAtom* aName,
+ bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == URIAttrName()) {
+ // If aNotify is false, we are coming from the parser or some such place;
+ // we'll get bound after all the attributes have been set, so we'll do the
+ // object load from BindToTree/DoneAddingChildren.
+ // Skip the LoadObject call in that case.
+ // We also don't want to start loading the object when we're not yet in
+ // a document, just in case that the caller wants to set additional
+ // attributes before inserting the node into the document.
+ if (aNotify && IsInComposedDoc() && mIsDoneAddingChildren) {
+ nsresult rv = LoadObject(aNotify, true);
+ NS_ENSURE_SUCCESS(rv, rv);
+ }
+ }
}
return NS_OK;
diff --git a/dom/html/HTMLSharedObjectElement.h b/dom/html/HTMLSharedObjectElement.h
index c70ba8ebd..e550b9927 100644
--- a/dom/html/HTMLSharedObjectElement.h
+++ b/dom/html/HTMLSharedObjectElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -57,9 +56,6 @@ public:
bool aCompileEventHandlers) override;
virtual void UnbindFromTree(bool aDeep = true,
bool aNullParent = true) override;
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom *aName,
- nsIAtom *aPrefix, const nsAString &aValue,
- bool aNotify) override;
virtual bool IsHTMLFocusable(bool aWithMouse, bool *aIsFocusable, int32_t *aTabIndex) override;
virtual IMEState GetDesiredIMEState() override;
@@ -200,6 +196,16 @@ public:
* Calls LoadObject with the correct arguments to start the plugin load.
*/
void StartObjectLoad(bool aNotify, bool aForceLoad);
+
+protected:
+ virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+ virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify) override;
+
private:
virtual ~HTMLSharedObjectElement();
@@ -222,6 +228,17 @@ private:
nsRuleData* aData);
/**
+ * This function is called by AfterSetAttr and OnAttrSetButNotChanged.
+ * It will not be called if the value is being unset.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ nsresult AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ bool aNotify);
+
+ /**
* Decides whether we should load embed node content.
*
* If this is an embed node there are cases in which we should not try to load
diff --git a/dom/html/HTMLSlotElement.cpp b/dom/html/HTMLSlotElement.cpp
new file mode 100644
index 000000000..e2dc3d8ff
--- /dev/null
+++ b/dom/html/HTMLSlotElement.cpp
@@ -0,0 +1,245 @@
+/* -*- Mode: C++; tab-width: 8; 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 "mozilla/dom/DocGroup.h"
+#include "mozilla/dom/HTMLSlotElement.h"
+#include "mozilla/dom/HTMLSlotElementBinding.h"
+#include "mozilla/dom/HTMLUnknownElement.h"
+#include "mozilla/dom/ShadowRoot.h"
+#include "nsGkAtoms.h"
+#include "nsDocument.h"
+
+nsGenericHTMLElement*
+NS_NewHTMLSlotElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
+ mozilla::dom::FromParser aFromParser)
+{
+ RefPtr<mozilla::dom::NodeInfo> nodeInfo(aNodeInfo);
+ if (nsDocument::IsWebComponentsEnabled(nodeInfo->GetDocument())) {
+ already_AddRefed<mozilla::dom::NodeInfo> nodeInfoArg(nodeInfo.forget());
+ return new mozilla::dom::HTMLSlotElement(nodeInfoArg);
+ }
+
+ already_AddRefed<mozilla::dom::NodeInfo> nodeInfoArg(nodeInfo.forget());
+ return new mozilla::dom::HTMLUnknownElement(nodeInfoArg);
+}
+
+namespace mozilla {
+namespace dom {
+
+HTMLSlotElement::HTMLSlotElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
+ : nsGenericHTMLElement(aNodeInfo)
+{
+}
+
+HTMLSlotElement::~HTMLSlotElement()
+{
+}
+
+NS_IMPL_ADDREF_INHERITED(HTMLSlotElement, nsGenericHTMLElement)
+NS_IMPL_RELEASE_INHERITED(HTMLSlotElement, nsGenericHTMLElement)
+
+NS_IMPL_CYCLE_COLLECTION_INHERITED(HTMLSlotElement,
+ nsGenericHTMLElement,
+ mAssignedNodes)
+
+NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(HTMLSlotElement)
+NS_INTERFACE_MAP_END_INHERITING(nsGenericHTMLElement)
+
+NS_IMPL_ELEMENT_CLONE(HTMLSlotElement)
+
+nsresult
+HTMLSlotElement::BindToTree(nsIDocument* aDocument,
+ nsIContent* aParent,
+ nsIContent* aBindingParent,
+ bool aCompileEventHandlers)
+{
+ RefPtr<ShadowRoot> oldContainingShadow = GetContainingShadow();
+
+ nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent,
+ aBindingParent,
+ aCompileEventHandlers);
+ NS_ENSURE_SUCCESS(rv, rv);
+
+ ShadowRoot* containingShadow = GetContainingShadow();
+ if (containingShadow && !oldContainingShadow) {
+ containingShadow->AddSlot(this);
+ }
+
+ return NS_OK;
+}
+
+void
+HTMLSlotElement::UnbindFromTree(bool aDeep, bool aNullParent)
+{
+ RefPtr<ShadowRoot> oldContainingShadow = GetContainingShadow();
+
+ nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
+
+ if (oldContainingShadow && !GetContainingShadow()) {
+ oldContainingShadow->RemoveSlot(this);
+ }
+}
+
+nsresult
+HTMLSlotElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify)
+{
+ if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::name) {
+ if (ShadowRoot* containingShadow = GetContainingShadow()) {
+ containingShadow->RemoveSlot(this);
+ }
+ }
+
+ return nsGenericHTMLElement::BeforeSetAttr(aNameSpaceID, aName, aValue,
+ aNotify);
+}
+
+nsresult
+HTMLSlotElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify)
+{
+
+ if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::name) {
+ if (ShadowRoot* containingShadow = GetContainingShadow()) {
+ containingShadow->AddSlot(this);
+ }
+ }
+
+ return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
+ aOldValue, aNotify);
+}
+
+/**
+ * Flatten assigned nodes given a slot, as in:
+ * https://dom.spec.whatwg.org/#find-flattened-slotables
+ */
+static void
+FlattenAssignedNodes(HTMLSlotElement* aSlot, nsTArray<RefPtr<nsINode>>& aNodes)
+{
+ if (!aSlot->GetContainingShadow()) {
+ return;
+ }
+
+ const nsTArray<RefPtr<nsINode>>& assignedNodes = aSlot->AssignedNodes();
+
+ // If assignedNodes is empty, use children of slot as fallback content.
+ if (assignedNodes.IsEmpty()) {
+ for (nsIContent* child = aSlot->AsContent()->GetFirstChild();
+ child;
+ child = child->GetNextSibling()) {
+ if (!child->IsSlotable()) {
+ continue;
+ }
+
+ if (child->IsHTMLElement(nsGkAtoms::slot)) {
+ FlattenAssignedNodes(HTMLSlotElement::FromContent(child), aNodes);
+ } else {
+ aNodes.AppendElement(child);
+ }
+ }
+ return;
+ }
+
+ for (uint32_t i = 0; i < assignedNodes.Length(); i++) {
+ nsINode* assignedNode = assignedNodes[i];
+ if (assignedNode->IsHTMLElement(nsGkAtoms::slot)) {
+ FlattenAssignedNodes(
+ HTMLSlotElement::FromContent(assignedNode->AsContent()), aNodes);
+ } else {
+ aNodes.AppendElement(assignedNode);
+ }
+ }
+}
+
+void
+HTMLSlotElement::AssignedNodes(const AssignedNodesOptions& aOptions,
+ nsTArray<RefPtr<nsINode>>& aNodes)
+{
+ if (aOptions.mFlatten) {
+ return FlattenAssignedNodes(this, aNodes);
+ }
+
+ aNodes = mAssignedNodes;
+}
+
+void HTMLSlotElement::AssignedElements(const AssignedNodesOptions& aOptions,
+ nsTArray<RefPtr<Element>>& aElements) {
+ AutoTArray<RefPtr<nsINode>, 128> assignedNodes;
+ AssignedNodes(aOptions, assignedNodes);
+ for (const RefPtr<nsINode>& assignedNode : assignedNodes) {
+ if (assignedNode->IsElement()) {
+ aElements.AppendElement(assignedNode->AsElement());
+ }
+ }
+}
+
+const nsTArray<RefPtr<nsINode>>&
+HTMLSlotElement::AssignedNodes() const
+{
+ return mAssignedNodes;
+}
+
+void
+HTMLSlotElement::InsertAssignedNode(uint32_t aIndex, nsINode* aNode)
+{
+ mAssignedNodes.InsertElementAt(aIndex, aNode);
+ aNode->AsContent()->SetAssignedSlot(this);
+}
+
+void
+HTMLSlotElement::AppendAssignedNode(nsINode* aNode)
+{
+ mAssignedNodes.AppendElement(aNode);
+ aNode->AsContent()->SetAssignedSlot(this);
+}
+
+void
+HTMLSlotElement::RemoveAssignedNode(nsINode* aNode)
+{
+ mAssignedNodes.RemoveElement(aNode);
+ aNode->AsContent()->SetAssignedSlot(nullptr);
+}
+
+void
+HTMLSlotElement::ClearAssignedNodes()
+{
+ for (uint32_t i = 0; i < mAssignedNodes.Length(); i++) {
+ mAssignedNodes[i]->AsContent()->SetAssignedSlot(nullptr);
+ }
+
+ mAssignedNodes.Clear();
+}
+
+void
+HTMLSlotElement::EnqueueSlotChangeEvent() const
+{
+ DocGroup* docGroup = OwnerDoc()->GetDocGroup();
+ if (!docGroup) {
+ return;
+ }
+
+ docGroup->SignalSlotChange(this);
+}
+
+void
+HTMLSlotElement::FireSlotChangeEvent()
+{
+ nsContentUtils::DispatchTrustedEvent(OwnerDoc(),
+ static_cast<nsIContent*>(this),
+ NS_LITERAL_STRING("slotchange"), true,
+ false);
+}
+
+JSObject*
+HTMLSlotElement::WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
+{
+ return HTMLSlotElementBinding::Wrap(aCx, this, aGivenProto);
+}
+
+} // namespace dom
+} // namespace mozilla
diff --git a/dom/html/HTMLSlotElement.h b/dom/html/HTMLSlotElement.h
new file mode 100644
index 000000000..f20e6dc7f
--- /dev/null
+++ b/dom/html/HTMLSlotElement.h
@@ -0,0 +1,81 @@
+/* -*- Mode: C++; tab-width: 8; 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/. */
+
+#ifndef mozilla_dom_HTMLSlotElement_h
+#define mozilla_dom_HTMLSlotElement_h
+
+#include "nsIDOMHTMLElement.h"
+#include "nsGenericHTMLElement.h"
+#include "nsTArray.h"
+
+namespace mozilla {
+namespace dom {
+
+struct AssignedNodesOptions;
+
+class HTMLSlotElement final : public nsGenericHTMLElement
+{
+public:
+ explicit HTMLSlotElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
+ NS_IMPL_FROMCONTENT_HTML_WITH_TAG(HTMLSlotElement, slot)
+
+ NS_DECL_ISUPPORTS_INHERITED
+ NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLSlotElement, nsGenericHTMLElement)
+ virtual nsresult Clone(mozilla::dom::NodeInfo* aNodeInfo, nsINode** aResult) const override;
+
+ // nsIContent
+ virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
+ nsIContent* aBindingParent,
+ bool aCompileEventHandlers) override;
+ virtual void UnbindFromTree(bool aDeep = true,
+ bool aNullParent = true) override;
+
+ virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify) override;
+ virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+
+ // WebIDL
+ void SetName(const nsAString& aName, ErrorResult& aRv)
+ {
+ SetHTMLAttr(nsGkAtoms::name, aName, aRv);
+ }
+
+ void GetName(nsAString& aName)
+ {
+ GetHTMLAttr(nsGkAtoms::name, aName);
+ }
+
+ void AssignedNodes(const AssignedNodesOptions& aOptions,
+ nsTArray<RefPtr<nsINode>>& aNodes);
+
+ void AssignedElements(const AssignedNodesOptions& aOptions,
+ nsTArray<RefPtr<Element>>& aNodes);
+
+ // Helper methods
+ const nsTArray<RefPtr<nsINode>>& AssignedNodes() const;
+ void InsertAssignedNode(uint32_t aIndex, nsINode* aNode);
+ void AppendAssignedNode(nsINode* aNode);
+ void RemoveAssignedNode(nsINode* aNode);
+ void ClearAssignedNodes();
+
+ void EnqueueSlotChangeEvent() const;
+ void FireSlotChangeEvent();
+
+protected:
+ virtual ~HTMLSlotElement();
+ virtual JSObject*
+ WrapNode(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
+
+ nsTArray<RefPtr<nsINode>> mAssignedNodes;
+};
+
+} // namespace dom
+} // namespace mozilla
+
+#endif // mozilla_dom_HTMLSlotElement_h
diff --git a/dom/html/HTMLSourceElement.cpp b/dom/html/HTMLSourceElement.cpp
index 73d9c9d8c..4d202885c 100644
--- a/dom/html/HTMLSourceElement.cpp
+++ b/dom/html/HTMLSourceElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -98,7 +97,8 @@ HTMLSourceElement::UpdateMediaList(const nsAttrValue* aValue)
nsresult
HTMLSourceElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
// If we are associated with a <picture> with a valid <img>, notify it of
// responsive parameter changes
@@ -143,7 +143,7 @@ HTMLSourceElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
nsresult
diff --git a/dom/html/HTMLSourceElement.h b/dom/html/HTMLSourceElement.h
index 595e21015..b7942e711 100644
--- a/dom/html/HTMLSourceElement.h
+++ b/dom/html/HTMLSourceElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -110,6 +109,7 @@ protected:
protected:
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
bool aNotify) override;
private:
diff --git a/dom/html/HTMLSpanElement.cpp b/dom/html/HTMLSpanElement.cpp
index d1888f8bd..9ac1b76f0 100644
--- a/dom/html/HTMLSpanElement.cpp
+++ b/dom/html/HTMLSpanElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLSpanElement.h b/dom/html/HTMLSpanElement.h
index e76bc8781..489bedf83 100644
--- a/dom/html/HTMLSpanElement.h
+++ b/dom/html/HTMLSpanElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLStyleElement.cpp b/dom/html/HTMLStyleElement.cpp
index 87dc68f83..864488f03 100644
--- a/dom/html/HTMLStyleElement.cpp
+++ b/dom/html/HTMLStyleElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -171,7 +170,8 @@ HTMLStyleElement::UnbindFromTree(bool aDeep, bool aNullParent)
nsresult
HTMLStyleElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
if (aName == nsGkAtoms::title ||
@@ -185,7 +185,7 @@ HTMLStyleElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
NS_IMETHODIMP
diff --git a/dom/html/HTMLStyleElement.h b/dom/html/HTMLStyleElement.h
index 9f82b8e51..60331dc5d 100644
--- a/dom/html/HTMLStyleElement.h
+++ b/dom/html/HTMLStyleElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -48,6 +47,7 @@ public:
bool aNullParent = true) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
bool aNotify) override;
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
diff --git a/dom/html/HTMLSummaryElement.cpp b/dom/html/HTMLSummaryElement.cpp
index ee3c07b20..42ead6b87 100644
--- a/dom/html/HTMLSummaryElement.cpp
+++ b/dom/html/HTMLSummaryElement.cpp
@@ -14,17 +14,7 @@
#include "mozilla/TextEvents.h"
#include "nsFocusManager.h"
-// Expand NS_IMPL_NS_NEW_HTML_ELEMENT(Summary) to add pref check.
-nsGenericHTMLElement*
-NS_NewHTMLSummaryElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
- mozilla::dom::FromParser aFromParser)
-{
- if (!mozilla::dom::HTMLDetailsElement::IsDetailsEnabled()) {
- return new mozilla::dom::HTMLUnknownElement(aNodeInfo);
- }
-
- return new mozilla::dom::HTMLSummaryElement(aNodeInfo);
-}
+NS_IMPL_NS_NEW_HTML_ELEMENT(Summary)
namespace mozilla {
namespace dom {
diff --git a/dom/html/HTMLTableCaptionElement.cpp b/dom/html/HTMLTableCaptionElement.cpp
index fd9328de8..173507fb7 100644
--- a/dom/html/HTMLTableCaptionElement.cpp
+++ b/dom/html/HTMLTableCaptionElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTableCaptionElement.h b/dom/html/HTMLTableCaptionElement.h
index 1c84118d7..efe5fa1ff 100644
--- a/dom/html/HTMLTableCaptionElement.h
+++ b/dom/html/HTMLTableCaptionElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTableCellElement.cpp b/dom/html/HTMLTableCellElement.cpp
index 1cf413413..2c795d2d4 100644
--- a/dom/html/HTMLTableCellElement.cpp
+++ b/dom/html/HTMLTableCellElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -107,9 +106,7 @@ HTMLTableCellElement::WalkContentStyleRules(nsRuleWalker* aRuleWalker)
nsresult rv = nsGenericHTMLElement::WalkContentStyleRules(aRuleWalker);
NS_ENSURE_SUCCESS(rv, rv);
- if (HTMLTableElement* table = GetTable()) {
- nsMappedAttributes* tableInheritedAttributes =
- table->GetAttributesMappedForCell();
+ if (nsMappedAttributes* tableInheritedAttributes = GetMappedAttributesInheritedFromTable()) {
if (tableInheritedAttributes) {
aRuleWalker->Forward(tableInheritedAttributes);
}
@@ -117,6 +114,16 @@ HTMLTableCellElement::WalkContentStyleRules(nsRuleWalker* aRuleWalker)
return NS_OK;
}
+nsMappedAttributes*
+HTMLTableCellElement::GetMappedAttributesInheritedFromTable() const
+{
+ if (HTMLTableElement* table = GetTable()) {
+ return table->GetAttributesMappedForCell();
+ }
+
+ return nullptr;
+}
+
NS_IMETHODIMP
HTMLTableCellElement::SetAbbr(const nsAString& aAbbr)
{
diff --git a/dom/html/HTMLTableCellElement.h b/dom/html/HTMLTableCellElement.h
index ab7a918eb..10af61fc2 100644
--- a/dom/html/HTMLTableCellElement.h
+++ b/dom/html/HTMLTableCellElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -148,6 +147,8 @@ public:
virtual nsMapRuleToAttributesFunc GetAttributeMappingFunction() const override;
NS_IMETHOD WalkContentStyleRules(nsRuleWalker* aRuleWalker) override;
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
+ // Get mapped attributes of ancestor table, if any
+ nsMappedAttributes* GetMappedAttributesInheritedFromTable() const;
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
diff --git a/dom/html/HTMLTableColElement.cpp b/dom/html/HTMLTableColElement.cpp
index 484070bf0..0e587d760 100644
--- a/dom/html/HTMLTableColElement.cpp
+++ b/dom/html/HTMLTableColElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTableColElement.h b/dom/html/HTMLTableColElement.h
index 8bdc7634e..7f627deaa 100644
--- a/dom/html/HTMLTableColElement.h
+++ b/dom/html/HTMLTableColElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTableElement.cpp b/dom/html/HTMLTableElement.cpp
index c5b7696cf..c33d8de77 100644
--- a/dom/html/HTMLTableElement.cpp
+++ b/dom/html/HTMLTableElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -322,7 +321,7 @@ TableRowsCollection::ParentDestroyed()
HTMLTableElement::HTMLTableElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo)
: nsGenericHTMLElement(aNodeInfo),
- mTableInheritedAttributes(TABLE_ATTRS_DIRTY)
+ mTableInheritedAttributes(nullptr)
{
SetHasWeirdParserInsertionMode();
}
@@ -912,20 +911,15 @@ MapInheritedTableAttributesIntoRule(const nsMappedAttributes* aAttributes,
nsMappedAttributes*
HTMLTableElement::GetAttributesMappedForCell()
{
- if (mTableInheritedAttributes) {
- if (mTableInheritedAttributes == TABLE_ATTRS_DIRTY)
- BuildInheritedAttributes();
- if (mTableInheritedAttributes != TABLE_ATTRS_DIRTY)
- return mTableInheritedAttributes;
- }
- return nullptr;
+ return mTableInheritedAttributes;
}
void
HTMLTableElement::BuildInheritedAttributes()
{
- NS_ASSERTION(mTableInheritedAttributes == TABLE_ATTRS_DIRTY,
+ NS_ASSERTION(!mTableInheritedAttributes,
"potential leak, plus waste of work");
+ MOZ_ASSERT(NS_IsMainThread());
nsIDocument *document = GetComposedDoc();
nsHTMLStyleSheet* sheet = document ?
document->GetAttributeStyleSheet() : nullptr;
@@ -938,7 +932,9 @@ HTMLTableElement::BuildInheritedAttributes()
if (modifiableMapped) {
nsAttrValue val(*value);
- modifiableMapped->SetAndTakeAttr(nsGkAtoms::cellpadding, val);
+ bool oldValueSet;
+ modifiableMapped->SetAndSwapAttr(nsGkAtoms::cellpadding, val,
+ &oldValueSet);
}
newAttrs = sheet->UniqueMappedAttributes(modifiableMapped);
NS_ASSERTION(newAttrs, "out of memory, but handling gracefully");
@@ -960,10 +956,7 @@ HTMLTableElement::BuildInheritedAttributes()
void
HTMLTableElement::ReleaseInheritedAttributes()
{
- if (mTableInheritedAttributes &&
- mTableInheritedAttributes != TABLE_ATTRS_DIRTY)
- NS_RELEASE(mTableInheritedAttributes);
- mTableInheritedAttributes = TABLE_ATTRS_DIRTY;
+ NS_IF_RELEASE(mTableInheritedAttributes);
}
nsresult
@@ -972,9 +965,12 @@ HTMLTableElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
bool aCompileEventHandlers)
{
ReleaseInheritedAttributes();
- return nsGenericHTMLElement::BindToTree(aDocument, aParent,
- aBindingParent,
- aCompileEventHandlers);
+ nsresult rv = nsGenericHTMLElement::BindToTree(aDocument, aParent,
+ aBindingParent,
+ aCompileEventHandlers);
+ NS_ENSURE_SUCCESS(rv, rv);
+ BuildInheritedAttributes();
+ return NS_OK;
}
void
@@ -986,7 +982,7 @@ HTMLTableElement::UnbindFromTree(bool aDeep, bool aNullParent)
nsresult
HTMLTableElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify)
{
if (aName == nsGkAtoms::cellpadding && aNameSpaceID == kNameSpaceID_None) {
@@ -999,13 +995,13 @@ HTMLTableElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsresult
HTMLTableElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
const nsAttrValue* aValue,
- bool aNotify)
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aName == nsGkAtoms::cellpadding && aNameSpaceID == kNameSpaceID_None) {
BuildInheritedAttributes();
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
} // namespace dom
diff --git a/dom/html/HTMLTableElement.h b/dom/html/HTMLTableElement.h
index 4e172964b..00faab0ec 100644
--- a/dom/html/HTMLTableElement.h
+++ b/dom/html/HTMLTableElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -14,8 +13,6 @@
namespace mozilla {
namespace dom {
-#define TABLE_ATTRS_DIRTY ((nsMappedAttributes*)0x1)
-
class TableRowsCollection;
class HTMLTableElement final : public nsGenericHTMLElement
@@ -190,13 +187,15 @@ public:
* Called when an attribute is about to be changed
*/
virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
/**
* Called when an attribute has just been changed
*/
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(HTMLTableElement,
nsGenericHTMLElement)
@@ -220,8 +219,6 @@ protected:
RefPtr<nsContentList> mTBodies;
RefPtr<TableRowsCollection> mRows;
- // Sentinel value of TABLE_ATTRS_DIRTY indicates that this is dirty and needs
- // to be recalculated.
nsMappedAttributes *mTableInheritedAttributes;
void BuildInheritedAttributes();
void ReleaseInheritedAttributes();
diff --git a/dom/html/HTMLTableRowElement.cpp b/dom/html/HTMLTableRowElement.cpp
index ac2463400..8f6316dc2 100644
--- a/dom/html/HTMLTableRowElement.cpp
+++ b/dom/html/HTMLTableRowElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTableRowElement.h b/dom/html/HTMLTableRowElement.h
index 56310e389..02ade8f66 100644
--- a/dom/html/HTMLTableRowElement.h
+++ b/dom/html/HTMLTableRowElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTableSectionElement.cpp b/dom/html/HTMLTableSectionElement.cpp
index e99597636..88cb76e14 100644
--- a/dom/html/HTMLTableSectionElement.cpp
+++ b/dom/html/HTMLTableSectionElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTableSectionElement.h b/dom/html/HTMLTableSectionElement.h
index cabde0042..638579872 100644
--- a/dom/html/HTMLTableSectionElement.h
+++ b/dom/html/HTMLTableSectionElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTemplateElement.cpp b/dom/html/HTMLTemplateElement.cpp
index 27fb12870..d47235347 100644
--- a/dom/html/HTMLTemplateElement.cpp
+++ b/dom/html/HTMLTemplateElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTemplateElement.h b/dom/html/HTMLTemplateElement.h
index 53c05c09a..af3172408 100644
--- a/dom/html/HTMLTemplateElement.h
+++ b/dom/html/HTMLTemplateElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTextAreaElement.cpp b/dom/html/HTMLTextAreaElement.cpp
index 4c40c16f3..0514a2660 100644
--- a/dom/html/HTMLTextAreaElement.cpp
+++ b/dom/html/HTMLTextAreaElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -506,7 +505,7 @@ HTMLTextAreaElement::IsDisabledForEvents(WidgetEvent* aEvent)
}
nsresult
-HTMLTextAreaElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+HTMLTextAreaElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mCanHandle = false;
if (IsDisabledForEvents(aVisitor.mEvent)) {
@@ -534,11 +533,22 @@ HTMLTextAreaElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
aVisitor.mEvent->mFlags.mNoContentDispatch = false;
}
- // Fire onchange (if necessary), before we do the blur, bug 370521.
if (aVisitor.mEvent->mMessage == eBlur) {
- FireChangeEventIfNeeded();
+ // Set mWantsPreHandleEvent and fire change event in PreHandleEvent to
+ // prevent it breaks event target chain creation.
+ aVisitor.mWantsPreHandleEvent = true;
}
+ return nsGenericHTMLFormElementWithState::GetEventTargetParent(aVisitor);
+}
+
+nsresult
+HTMLTextAreaElement::PreHandleEvent(EventChainVisitor& aVisitor)
+{
+ if (aVisitor.mEvent->mMessage == eBlur) {
+ // Fire onchange (if necessary), before we do the blur, bug 370521.
+ FireChangeEventIfNeeded();
+ }
return nsGenericHTMLFormElementWithState::PreHandleEvent(aVisitor);
}
@@ -1275,7 +1285,7 @@ HTMLTextAreaElement::UnbindFromTree(bool aDeep, bool aNullParent)
nsresult
HTMLTextAreaElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify)
{
if (aNotify && aName == nsGkAtoms::disabled &&
@@ -1337,7 +1347,8 @@ HTMLTextAreaElement::ContentChanged(nsIContent* aContent)
nsresult
HTMLTextAreaElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
if (aName == nsGkAtoms::required || aName == nsGkAtoms::disabled ||
@@ -1353,12 +1364,10 @@ HTMLTextAreaElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
} else if (aName == nsGkAtoms::minlength) {
UpdateTooShortValidityState();
}
-
- UpdateState(aNotify);
}
return nsGenericHTMLFormElementWithState::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
}
nsresult
diff --git a/dom/html/HTMLTextAreaElement.h b/dom/html/HTMLTextAreaElement.h
index 90fb680c5..f388bfa61 100644
--- a/dom/html/HTMLTextAreaElement.h
+++ b/dom/html/HTMLTextAreaElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -125,7 +124,9 @@ public:
int32_t aModType) const override;
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
+ virtual nsresult PreHandleEvent(EventChainVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
@@ -142,7 +143,7 @@ public:
* Called when an attribute is about to be changed
*/
virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
// nsIMutationObserver
@@ -355,7 +356,9 @@ protected:
void ContentChanged(nsIContent* aContent);
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom *aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
/**
* Return if an element should have a specific validity UI
diff --git a/dom/html/HTMLTimeElement.cpp b/dom/html/HTMLTimeElement.cpp
index cf803eced..1772282dc 100644
--- a/dom/html/HTMLTimeElement.cpp
+++ b/dom/html/HTMLTimeElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTimeElement.h b/dom/html/HTMLTimeElement.h
index 2755e2c92..dbda58778 100644
--- a/dom/html/HTMLTimeElement.h
+++ b/dom/html/HTMLTimeElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTitleElement.cpp b/dom/html/HTMLTitleElement.cpp
index b005d104a..be0cc7bc2 100644
--- a/dom/html/HTMLTitleElement.cpp
+++ b/dom/html/HTMLTitleElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTitleElement.h b/dom/html/HTMLTitleElement.h
index 430ae0c1a..ea0608c75 100644
--- a/dom/html/HTMLTitleElement.h
+++ b/dom/html/HTMLTitleElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTrackElement.cpp b/dom/html/HTMLTrackElement.cpp
index 59810a444..07fbe2073 100644
--- a/dom/html/HTMLTrackElement.cpp
+++ b/dom/html/HTMLTrackElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLTrackElement.h b/dom/html/HTMLTrackElement.h
index 566f1e0d3..84828e4a9 100644
--- a/dom/html/HTMLTrackElement.h
+++ b/dom/html/HTMLTrackElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLUnknownElement.cpp b/dom/html/HTMLUnknownElement.cpp
index 1e01d2ce2..04555a9cb 100644
--- a/dom/html/HTMLUnknownElement.cpp
+++ b/dom/html/HTMLUnknownElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLUnknownElement.h b/dom/html/HTMLUnknownElement.h
index c77fba919..b9e45f83e 100644
--- a/dom/html/HTMLUnknownElement.h
+++ b/dom/html/HTMLUnknownElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -7,6 +6,7 @@
#define mozilla_dom_HTMLUnknownElement_h
#include "mozilla/Attributes.h"
+#include "mozilla/EventStates.h"
#include "nsGenericHTMLElement.h"
namespace mozilla {
@@ -27,7 +27,7 @@ public:
: nsGenericHTMLElement(aNodeInfo)
{
if (NodeInfo()->Equals(nsGkAtoms::bdi)) {
- SetHasDirAuto();
+ AddStatesSilently(NS_EVENT_STATE_DIR_ATTR_LIKE_AUTO);
}
}
diff --git a/dom/html/HTMLVideoElement.cpp b/dom/html/HTMLVideoElement.cpp
index bddec24c9..6cda72cfa 100644
--- a/dom/html/HTMLVideoElement.cpp
+++ b/dom/html/HTMLVideoElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/HTMLVideoElement.h b/dom/html/HTMLVideoElement.h
index 72e629a94..4c20faf95 100644
--- a/dom/html/HTMLVideoElement.h
+++ b/dom/html/HTMLVideoElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/ImageDocument.cpp b/dom/html/ImageDocument.cpp
index 451d989c3..87bf3ee99 100644
--- a/dom/html/ImageDocument.cpp
+++ b/dom/html/ImageDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/ImageDocument.h b/dom/html/ImageDocument.h
index 945317314..75daa5f0c 100644
--- a/dom/html/ImageDocument.h
+++ b/dom/html/ImageDocument.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/MediaDocument.cpp b/dom/html/MediaDocument.cpp
index d74d72111..3d57d6d14 100644
--- a/dom/html/MediaDocument.cpp
+++ b/dom/html/MediaDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/MediaDocument.h b/dom/html/MediaDocument.h
index 7d1be6265..b02fd66ad 100644
--- a/dom/html/MediaDocument.h
+++ b/dom/html/MediaDocument.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/MediaError.cpp b/dom/html/MediaError.cpp
index 83b9ffc5f..4b43c321e 100644
--- a/dom/html/MediaError.cpp
+++ b/dom/html/MediaError.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/MediaError.h b/dom/html/MediaError.h
index 27be1050e..fde662042 100644
--- a/dom/html/MediaError.h
+++ b/dom/html/MediaError.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/PluginDocument.cpp b/dom/html/PluginDocument.cpp
index f6be8a915..b22868062 100644
--- a/dom/html/PluginDocument.cpp
+++ b/dom/html/PluginDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/RadioNodeList.cpp b/dom/html/RadioNodeList.cpp
index 79780e11c..752b4487b 100644
--- a/dom/html/RadioNodeList.cpp
+++ b/dom/html/RadioNodeList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/RadioNodeList.h b/dom/html/RadioNodeList.h
index 8ff487feb..dff90f82e 100644
--- a/dom/html/RadioNodeList.h
+++ b/dom/html/RadioNodeList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/TextTrackManager.cpp b/dom/html/TextTrackManager.cpp
index 7f9d32794..34307e47e 100644
--- a/dom/html/TextTrackManager.cpp
+++ b/dom/html/TextTrackManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/TextTrackManager.h b/dom/html/TextTrackManager.h
index 2375aa4bb..994bea38b 100644
--- a/dom/html/TextTrackManager.h
+++ b/dom/html/TextTrackManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/TimeRanges.cpp b/dom/html/TimeRanges.cpp
index debb81a2f..e808e6638 100644
--- a/dom/html/TimeRanges.cpp
+++ b/dom/html/TimeRanges.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/TimeRanges.h b/dom/html/TimeRanges.h
index 1811346fa..526beb0f7 100644
--- a/dom/html/TimeRanges.h
+++ b/dom/html/TimeRanges.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/ValidityState.cpp b/dom/html/ValidityState.cpp
index b23eb6daa..195d8aa27 100644
--- a/dom/html/ValidityState.cpp
+++ b/dom/html/ValidityState.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/ValidityState.h b/dom/html/ValidityState.h
index adbd86c1d..f1db3ddf6 100644
--- a/dom/html/ValidityState.h
+++ b/dom/html/ValidityState.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/VideoDocument.cpp b/dom/html/VideoDocument.cpp
index 76b2e326f..983baf35c 100644
--- a/dom/html/VideoDocument.cpp
+++ b/dom/html/VideoDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/moz.build b/dom/html/moz.build
index 82d6e07b3..9cf22144a 100644
--- a/dom/html/moz.build
+++ b/dom/html/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
@@ -52,7 +51,6 @@ EXPORTS.mozilla.dom += [
'HTMLBRElement.h',
'HTMLButtonElement.h',
'HTMLCanvasElement.h',
- 'HTMLContentElement.h',
'HTMLDataElement.h',
'HTMLDataListElement.h',
'HTMLDetailsElement.h',
@@ -92,10 +90,10 @@ EXPORTS.mozilla.dom += [
'HTMLProgressElement.h',
'HTMLScriptElement.h',
'HTMLSelectElement.h',
- 'HTMLShadowElement.h',
'HTMLSharedElement.h',
'HTMLSharedListElement.h',
'HTMLSharedObjectElement.h',
+ 'HTMLSlotElement.h',
'HTMLSourceElement.h',
'HTMLSpanElement.h',
'HTMLStyleElement.h',
@@ -131,7 +129,6 @@ SOURCES += [
'HTMLBRElement.cpp',
'HTMLButtonElement.cpp',
'HTMLCanvasElement.cpp',
- 'HTMLContentElement.cpp',
'HTMLDataElement.cpp',
'HTMLDataListElement.cpp',
'HTMLDetailsElement.cpp',
@@ -172,10 +169,10 @@ SOURCES += [
'HTMLProgressElement.cpp',
'HTMLScriptElement.cpp',
'HTMLSelectElement.cpp',
- 'HTMLShadowElement.cpp',
'HTMLSharedElement.cpp',
'HTMLSharedListElement.cpp',
'HTMLSharedObjectElement.cpp',
+ 'HTMLSlotElement.cpp',
'HTMLSourceElement.cpp',
'HTMLSpanElement.cpp',
'HTMLStyleElement.cpp',
diff --git a/dom/html/nsBrowserElement.cpp b/dom/html/nsBrowserElement.cpp
index 1c2f00c15..5b9100fa1 100644
--- a/dom/html/nsBrowserElement.cpp
+++ b/dom/html/nsBrowserElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsBrowserElement.h b/dom/html/nsBrowserElement.h
index e0f4ca186..9a4c47d28 100644
--- a/dom/html/nsBrowserElement.h
+++ b/dom/html/nsBrowserElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsDOMStringMap.cpp b/dom/html/nsDOMStringMap.cpp
index 6d2bc424d..e2f0b5477 100644
--- a/dom/html/nsDOMStringMap.cpp
+++ b/dom/html/nsDOMStringMap.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -62,6 +61,12 @@ nsDOMStringMap::~nsDOMStringMap()
}
}
+DocGroup*
+nsDOMStringMap::GetDocGroup() const
+{
+ return mElement ? mElement->GetDocGroup() : nullptr;
+}
+
/* virtual */
JSObject*
nsDOMStringMap::WrapObject(JSContext *cx, JS::Handle<JSObject*> aGivenProto)
diff --git a/dom/html/nsDOMStringMap.h b/dom/html/nsDOMStringMap.h
index bf28957f7..33d8d8b24 100644
--- a/dom/html/nsDOMStringMap.h
+++ b/dom/html/nsDOMStringMap.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -16,6 +15,9 @@
namespace mozilla {
class ErrorResult;
+namespace dom {
+class DocGroup;
+} // namespace dom
} // namespace mozilla
class nsDOMStringMap : public nsStubMutationObserver,
@@ -32,6 +34,8 @@ public:
return mElement;
}
+ mozilla::dom::DocGroup* GetDocGroup() const;
+
explicit nsDOMStringMap(mozilla::dom::Element* aElement);
// WebIDL API
diff --git a/dom/html/nsGenericHTMLElement.cpp b/dom/html/nsGenericHTMLElement.cpp
index ddb476cf4..0f32d8fb4 100644
--- a/dom/html/nsGenericHTMLElement.cpp
+++ b/dom/html/nsGenericHTMLElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -497,7 +496,7 @@ nsGenericHTMLElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
// We need to consider a labels element is moved to another subtree
// with different root, it needs to update labels list and its root
// as well.
- nsDOMSlots* slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots && slots->mLabelsList) {
slots->mLabelsList->MaybeResetRoot(SubtreeRoot());
}
@@ -524,7 +523,7 @@ nsGenericHTMLElement::UnbindFromTree(bool aDeep, bool aNullParent)
// We need to consider a labels element is removed from tree,
// it needs to update labels list and its root as well.
- nsDOMSlots* slots = GetExistingDOMSlots();
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots && slots->mLabelsList) {
slots->mLabelsList->MaybeResetRoot(SubtreeRoot());
}
@@ -607,16 +606,16 @@ nsGenericHTMLElement::CheckHandleEventForAnchorsPreconditions(
}
nsresult
-nsGenericHTMLElement::PreHandleEventForAnchors(EventChainPreVisitor& aVisitor)
+nsGenericHTMLElement::GetEventTargetParentForAnchors(EventChainPreVisitor& aVisitor)
{
- nsresult rv = nsGenericHTMLElementBase::PreHandleEvent(aVisitor);
+ nsresult rv = nsGenericHTMLElementBase::GetEventTargetParent(aVisitor);
NS_ENSURE_SUCCESS(rv, rv);
if (!CheckHandleEventForAnchorsPreconditions(aVisitor)) {
return NS_OK;
}
- return PreHandleEventForLinks(aVisitor);
+ return GetEventTargetParentForLinks(aVisitor);
}
nsresult
@@ -655,8 +654,46 @@ nsGenericHTMLElement::GetHrefURIForAnchors() const
}
nsresult
+nsGenericHTMLElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::accesskey) {
+ // Have to unregister before clearing flag. See UnregAccessKey
+ UnregAccessKey();
+ if (!aValue) {
+ UnsetFlags(NODE_HAS_ACCESSKEY);
+ }
+ } else if (aName == nsGkAtoms::name) {
+ // Have to do this before clearing flag. See RemoveFromNameTable
+ RemoveFromNameTable();
+ if (!aValue || aValue->IsEmpty()) {
+ ClearHasName();
+ }
+ } else if (aName == nsGkAtoms::contenteditable) {
+ if (aValue) {
+ // Set this before the attribute is set so that any subclass code that
+ // runs before the attribute is set won't think we're missing a
+ // contenteditable attr when we actually have one.
+ SetMayHaveContentEditableAttr();
+ }
+ }
+ if (!aValue && IsEventAttributeName(aName)) {
+ if (EventListenerManager* manager = GetExistingListenerManager()) {
+ manager->RemoveEventHandler(aName, EmptyString());
+ }
+ }
+ }
+
+ return nsGenericHTMLElementBase::BeforeSetAttr(aNamespaceID, aName, aValue,
+ aNotify);
+}
+
+nsresult
nsGenericHTMLElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNamespaceID == kNameSpaceID_None) {
if (IsEventAttributeName(aName) && aValue) {
@@ -670,34 +707,83 @@ nsGenericHTMLElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
}
else if (aName == nsGkAtoms::dir) {
Directionality dir = eDir_LTR;
+ // A boolean tracking whether we need to recompute our directionality.
+ // This needs to happen after we update our internal "dir" attribute
+ // state but before we call SetDirectionalityOnDescendants.
+ bool recomputeDirectionality = false;
+ // We don't want to have to keep getting the "dir" attribute in
+ // IntrinsicState, so we manually recompute our dir-related event states
+ // here and send the relevant update notifications.
+ EventStates dirStates;
if (aValue && aValue->Type() == nsAttrValue::eEnum) {
SetHasValidDir();
+ dirStates |= NS_EVENT_STATE_HAS_DIR_ATTR;
Directionality dirValue = (Directionality)aValue->GetEnumValue();
if (dirValue == eDir_Auto) {
- SetHasDirAuto();
- ClearHasFixedDir();
+ dirStates |= NS_EVENT_STATE_DIR_ATTR_LIKE_AUTO;
} else {
dir = dirValue;
SetDirectionality(dir, aNotify);
- ClearHasDirAuto();
- SetHasFixedDir();
+ if (dirValue == eDir_LTR) {
+ dirStates |= NS_EVENT_STATE_DIR_ATTR_LTR;
+ } else {
+ MOZ_ASSERT(dirValue == eDir_RTL);
+ dirStates |= NS_EVENT_STATE_DIR_ATTR_RTL;
+ }
}
} else {
+ if (aValue) {
+ // We have a value, just not a valid one.
+ dirStates |= NS_EVENT_STATE_HAS_DIR_ATTR;
+ }
ClearHasValidDir();
- ClearHasFixedDir();
if (NodeInfo()->Equals(nsGkAtoms::bdi)) {
- SetHasDirAuto();
+ dirStates |= NS_EVENT_STATE_DIR_ATTR_LIKE_AUTO;
} else {
- ClearHasDirAuto();
- dir = RecomputeDirectionality(this, aNotify);
+ recomputeDirectionality = true;
}
}
+ // Now figure out what's changed about our dir states.
+ EventStates oldDirStates = State() & DIR_ATTR_STATES;
+ EventStates changedStates = dirStates ^ oldDirStates;
+ ToggleStates(changedStates, aNotify);
+ if (recomputeDirectionality) {
+ dir = RecomputeDirectionality(this, aNotify);
+ }
SetDirectionalityOnDescendants(this, dir, aNotify);
+ } else if (aName == nsGkAtoms::contenteditable) {
+ int32_t editableCountDelta = 0;
+ if (aOldValue &&
+ (aOldValue->Equals(NS_LITERAL_STRING("true"), eIgnoreCase) ||
+ aOldValue->Equals(EmptyString(), eIgnoreCase))) {
+ editableCountDelta = -1;
+ }
+ if (aValue && (aValue->Equals(NS_LITERAL_STRING("true"), eIgnoreCase) ||
+ aValue->Equals(EmptyString(), eIgnoreCase))) {
+ ++editableCountDelta;
+ }
+ ChangeEditableState(editableCountDelta);
+ } else if (aName == nsGkAtoms::accesskey) {
+ if (aValue && !aValue->Equals(EmptyString(), eIgnoreCase)) {
+ SetFlags(NODE_HAS_ACCESSKEY);
+ RegAccessKey();
+ }
+ } else if (aName == nsGkAtoms::name) {
+ if (aValue && !aValue->Equals(EmptyString(), eIgnoreCase) &&
+ CanHaveName(NodeInfo()->NameAtom())) {
+ // This may not be quite right because we can have subclass code run
+ // before here. But in practice subclasses don't care about this flag,
+ // and in particular selector matching does not care. Otherwise we'd
+ // want to handle it like we handle id attributes (in PreIdMaybeChange
+ // and PostIdMaybeChange).
+ SetHasName();
+ AddToNameTable(aValue->GetAtomValue());
+ }
}
}
return nsGenericHTMLElementBase::AfterSetAttr(aNamespaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
EventListenerManager*
@@ -818,87 +904,6 @@ nsGenericHTMLElement::SetOn##name_(EventHandlerNonNull* handler) \
#undef FORWARDED_EVENT
#undef EVENT
-nsresult
-nsGenericHTMLElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- bool contentEditable = aNameSpaceID == kNameSpaceID_None &&
- aName == nsGkAtoms::contenteditable;
- bool accessKey = aName == nsGkAtoms::accesskey &&
- aNameSpaceID == kNameSpaceID_None;
-
- int32_t change = 0;
- if (contentEditable) {
- change = GetContentEditableValue() == eTrue ? -1 : 0;
- SetMayHaveContentEditableAttr();
- }
-
- if (accessKey) {
- UnregAccessKey();
- }
-
- nsresult rv = nsStyledElement::SetAttr(aNameSpaceID, aName, aPrefix, aValue,
- aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (contentEditable) {
- if (aValue.IsEmpty() || aValue.LowerCaseEqualsLiteral("true")) {
- change += 1;
- }
-
- ChangeEditableState(change);
- }
-
- if (accessKey && !aValue.IsEmpty()) {
- SetFlags(NODE_HAS_ACCESSKEY);
- RegAccessKey();
- }
-
- return NS_OK;
-}
-
-nsresult
-nsGenericHTMLElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
-{
- bool contentEditable = false;
- int32_t contentEditableChange = 0;
-
- // Check for event handlers
- if (aNameSpaceID == kNameSpaceID_None) {
- if (aAttribute == nsGkAtoms::name) {
- // Have to do this before clearing flag. See RemoveFromNameTable
- RemoveFromNameTable();
- ClearHasName();
- }
- else if (aAttribute == nsGkAtoms::contenteditable) {
- contentEditable = true;
- contentEditableChange = GetContentEditableValue() == eTrue ? -1 : 0;
- }
- else if (aAttribute == nsGkAtoms::accesskey) {
- // Have to unregister before clearing flag. See UnregAccessKey
- UnregAccessKey();
- UnsetFlags(NODE_HAS_ACCESSKEY);
- }
- else if (IsEventAttributeName(aAttribute)) {
- if (EventListenerManager* manager = GetExistingListenerManager()) {
- manager->RemoveEventHandler(aAttribute, EmptyString());
- }
- }
- }
-
- nsresult rv = nsGenericHTMLElementBase::UnsetAttr(aNameSpaceID, aAttribute,
- aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (contentEditable) {
- ChangeEditableState(contentEditableChange);
- }
-
- return NS_OK;
-}
-
void
nsGenericHTMLElement::GetBaseTarget(nsAString& aBaseTarget) const
{
@@ -928,19 +933,13 @@ nsGenericHTMLElement::ParseAttribute(int32_t aNamespaceID,
if (aAttribute == nsGkAtoms::name) {
// Store name as an atom. name="" means that the element has no name,
- // not that it has an emptystring as the name.
- RemoveFromNameTable();
+ // not that it has an empty string as the name.
if (aValue.IsEmpty()) {
ClearHasName();
return false;
}
aResult.ParseAtom(aValue);
-
- if (CanHaveName(NodeInfo()->NameAtom())) {
- SetHasName();
- AddToNameTable(aResult.GetAtomValue());
- }
return true;
}
@@ -1758,7 +1757,7 @@ nsGenericHTMLElement::Labels()
{
MOZ_ASSERT(IsLabelable(),
"Labels() only allow labelable elements to use it.");
- nsDOMSlots* slots = DOMSlots();
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
if (!slots->mLabelsList) {
slots->mLabelsList = new nsLabelsNodeList(SubtreeRoot(), MatchLabelsElement,
@@ -1990,7 +1989,7 @@ nsGenericHTMLFormElement::UnbindFromTree(bool aDeep, bool aNullParent)
nsresult
nsGenericHTMLFormElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
@@ -2023,13 +2022,6 @@ nsGenericHTMLFormElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
mForm->RemoveElement(this, false);
-
- // Removing the element from the form can make it not be the default
- // control anymore. Go ahead and notify on that change, though we might
- // end up readding and becoming the default control again in
- // AfterSetAttr.
- // FIXME: Bug 656197
- UpdateState(aNotify);
}
if (aName == nsGkAtoms::form) {
@@ -2050,7 +2042,8 @@ nsGenericHTMLFormElement::BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
nsresult
nsGenericHTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNameSpaceID == kNameSpaceID_None) {
// add the control to the hashtable as needed
@@ -2079,12 +2072,6 @@ nsGenericHTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
mForm->AddElement(this, false, aNotify);
-
- // Adding the element to the form can make it be the default control .
- // Go ahead and notify on that change.
- // Note: no need to notify on CanBeDisabled(), since type attr
- // changes can't affect that.
- UpdateState(aNotify);
}
if (aName == nsGkAtoms::form) {
@@ -2105,11 +2092,23 @@ nsGenericHTMLFormElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
+}
+
+nsresult
+nsGenericHTMLFormElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
+{
+ if (aVisitor.mEvent->IsTrusted() && (aVisitor.mEvent->mMessage == eFocus ||
+ aVisitor.mEvent->mMessage == eBlur)) {
+ // We have to handle focus/blur event to change focus states in
+ // PreHandleEvent to prevent it breaks event target chain creation.
+ aVisitor.mWantsPreHandleEvent = true;
+ }
+ return nsGenericHTMLElement::GetEventTargetParent(aVisitor);
}
nsresult
-nsGenericHTMLFormElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsGenericHTMLFormElement::PreHandleEvent(EventChainVisitor& aVisitor)
{
if (aVisitor.mEvent->IsTrusted()) {
switch (aVisitor.mEvent->mMessage) {
@@ -2133,7 +2132,6 @@ nsGenericHTMLFormElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
break;
}
}
-
return nsGenericHTMLElement::PreHandleEvent(aVisitor);
}
diff --git a/dom/html/nsGenericHTMLElement.h b/dom/html/nsGenericHTMLElement.h
index 6d7dc0cef..56812b445 100644
--- a/dom/html/nsGenericHTMLElement.h
+++ b/dom/html/nsGenericHTMLElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -465,17 +464,6 @@ public:
virtual void UnbindFromTree(bool aDeep = true,
bool aNullParent = true) override;
- MOZ_ALWAYS_INLINE // Avoid a crashy hook from Avast 10 Beta
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- bool aNotify) override;
virtual bool IsFocusableInternal(int32_t *aTabIndex, bool aWithMouse) override
{
bool isFocusable = false;
@@ -498,7 +486,8 @@ public:
*/
bool CheckHandleEventForAnchorsPreconditions(
mozilla::EventChainVisitor& aVisitor);
- nsresult PreHandleEventForAnchors(mozilla::EventChainPreVisitor& aVisitor);
+ nsresult GetEventTargetParentForAnchors(
+ mozilla::EventChainPreVisitor& aVisitor);
nsresult PostHandleEventForAnchors(mozilla::EventChainPostVisitor& aVisitor);
bool IsHTMLLink(nsIURI** aURI) const;
@@ -915,8 +904,13 @@ private:
void RegUnRegAccessKey(bool aDoReg);
protected:
+ virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify) override;
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual mozilla::EventListenerManager*
GetEventListenerManagerForAttr(nsIAtom* aAttrName,
@@ -1221,8 +1215,10 @@ public:
virtual IMEState GetDesiredIMEState() override;
virtual mozilla::EventStates IntrinsicState() const override;
- virtual nsresult PreHandleEvent(
+ virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
+ virtual nsresult PreHandleEvent(
+ mozilla::EventChainVisitor& aVisitor) override;
virtual bool IsDisabled() const override;
@@ -1264,11 +1260,13 @@ protected:
virtual ~nsGenericHTMLFormElement();
virtual nsresult BeforeSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
/**
* This method will update the form owner, using @form or looking to a parent.
@@ -1309,7 +1307,7 @@ protected:
static bool FormIdUpdated(Element* aOldElement, Element* aNewElement,
void* aData);
- // Returns true if the event should not be handled from PreHandleEvent
+ // Returns true if the event should not be handled from GetEventTargetParent
bool IsElementDisabledForEvents(mozilla::WidgetEvent* aEvent,
nsIFrame* aFrame);
@@ -1592,6 +1590,15 @@ protected:
NS_INTERFACE_MAP_ENTRY_CONDITIONAL(_interface, \
mNodeInfo->Equals(nsGkAtoms::_tag))
+namespace mozilla {
+namespace dom {
+
+typedef nsGenericHTMLElement* (*HTMLContentCreatorFunction)(
+ already_AddRefed<mozilla::dom::NodeInfo>&&,
+ mozilla::dom::FromParser aFromParser);
+
+} // namespace dom
+} // namespace mozilla
/**
* A macro to declare the NS_NewHTMLXXXElement() functions.
@@ -1640,6 +1647,13 @@ nsGenericHTMLElement*
NS_NewHTMLElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
mozilla::dom::FromParser aFromParser = mozilla::dom::NOT_FROM_PARSER);
+// Distinct from the above in order to have function pointer that compared unequal
+// to a function pointer to the above.
+nsGenericHTMLElement*
+NS_NewCustomElement(
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
+ mozilla::dom::FromParser aFromParser = mozilla::dom::NOT_FROM_PARSER);
+
NS_DECLARE_NS_NEW_HTML_ELEMENT(Shared)
NS_DECLARE_NS_NEW_HTML_ELEMENT(SharedList)
NS_DECLARE_NS_NEW_HTML_ELEMENT(SharedObject)
@@ -1689,7 +1703,7 @@ NS_DECLARE_NS_NEW_HTML_ELEMENT(Pre)
NS_DECLARE_NS_NEW_HTML_ELEMENT(Progress)
NS_DECLARE_NS_NEW_HTML_ELEMENT(Script)
NS_DECLARE_NS_NEW_HTML_ELEMENT(Select)
-NS_DECLARE_NS_NEW_HTML_ELEMENT(Shadow)
+NS_DECLARE_NS_NEW_HTML_ELEMENT(Slot)
NS_DECLARE_NS_NEW_HTML_ELEMENT(Source)
NS_DECLARE_NS_NEW_HTML_ELEMENT(Span)
NS_DECLARE_NS_NEW_HTML_ELEMENT(Style)
diff --git a/dom/html/nsGenericHTMLFrameElement.cpp b/dom/html/nsGenericHTMLFrameElement.cpp
index 6e50a4092..1d0b6769a 100644
--- a/dom/html/nsGenericHTMLFrameElement.cpp
+++ b/dom/html/nsGenericHTMLFrameElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -27,6 +26,7 @@
#include "nsServiceManagerUtils.h"
#include "nsSubDocumentFrame.h"
#include "nsXULElement.h"
+#include "nsAttrValueOrString.h"
using namespace mozilla;
using namespace mozilla::dom;
@@ -334,55 +334,6 @@ nsGenericHTMLFrameElement::UnbindFromTree(bool aDeep, bool aNullParent)
nsGenericHTMLElement::UnbindFromTree(aDeep, aNullParent);
}
-nsresult
-nsGenericHTMLFrameElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
-{
- nsresult rv = nsGenericHTMLElement::SetAttr(aNameSpaceID, aName, aPrefix,
- aValue, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::src &&
- (!IsHTMLElement(nsGkAtoms::iframe) ||
- !HasAttr(kNameSpaceID_None,nsGkAtoms::srcdoc))) {
- // Don't propagate error here. The attribute was successfully set, that's
- // what we should reflect.
- LoadSrc();
- } else if (aNameSpaceID == kNameSpaceID_None && aName == nsGkAtoms::name) {
- // Propagate "name" to the docshell to make browsing context names live,
- // per HTML5.
- nsIDocShell *docShell = mFrameLoader ? mFrameLoader->GetExistingDocShell()
- : nullptr;
- if (docShell) {
- docShell->SetName(aValue);
- }
- }
-
- return NS_OK;
-}
-
-nsresult
-nsGenericHTMLFrameElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
-{
- // Invoke on the superclass.
- nsresult rv = nsGenericHTMLElement::UnsetAttr(aNameSpaceID, aAttribute, aNotify);
- NS_ENSURE_SUCCESS(rv, rv);
-
- if (aNameSpaceID == kNameSpaceID_None && aAttribute == nsGkAtoms::name) {
- // Propagate "name" to the docshell to make browsing context names live,
- // per HTML5.
- nsIDocShell *docShell = mFrameLoader ? mFrameLoader->GetExistingDocShell()
- : nullptr;
- if (docShell) {
- docShell->SetName(EmptyString());
- }
- }
-
- return NS_OK;
-}
-
/* static */ int32_t
nsGenericHTMLFrameElement::MapScrollingAttribute(const nsAttrValue* aValue)
{
@@ -399,37 +350,102 @@ nsGenericHTMLFrameElement::MapScrollingAttribute(const nsAttrValue* aValue)
return mappedValue;
}
+static bool
+PrincipalAllowsBrowserFrame(nsIPrincipal* aPrincipal)
+{
+ nsCOMPtr<nsIPermissionManager> permMgr = mozilla::services::GetPermissionManager();
+ NS_ENSURE_TRUE(permMgr, false);
+ uint32_t permission = nsIPermissionManager::DENY_ACTION;
+ nsresult rv = permMgr->TestPermissionFromPrincipal(aPrincipal, "browser", &permission);
+ NS_ENSURE_SUCCESS(rv, false);
+ return permission == nsIPermissionManager::ALLOW_ACTION;
+}
+
/* virtual */ nsresult
nsGenericHTMLFrameElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
const nsAttrValue* aValue,
- bool aNotify)
-{
- if (aName == nsGkAtoms::scrolling && aNameSpaceID == kNameSpaceID_None) {
- if (mFrameLoader) {
- nsIDocShell* docshell = mFrameLoader->GetExistingDocShell();
- nsCOMPtr<nsIScrollable> scrollable = do_QueryInterface(docshell);
- if (scrollable) {
- int32_t cur;
- scrollable->GetDefaultScrollbarPreferences(nsIScrollable::ScrollOrientation_X, &cur);
- int32_t val = MapScrollingAttribute(aValue);
- if (cur != val) {
- scrollable->SetDefaultScrollbarPreferences(nsIScrollable::ScrollOrientation_X, val);
- scrollable->SetDefaultScrollbarPreferences(nsIScrollable::ScrollOrientation_Y, val);
- RefPtr<nsPresContext> presContext;
- docshell->GetPresContext(getter_AddRefs(presContext));
- nsIPresShell* shell = presContext ? presContext->GetPresShell() : nullptr;
- nsIFrame* rootScroll = shell ? shell->GetRootScrollFrame() : nullptr;
- if (rootScroll) {
- shell->FrameNeedsReflow(rootScroll, nsIPresShell::eStyleChange,
- NS_FRAME_IS_DIRTY);
+ const nsAttrValue* aOldValue, bool aNotify)
+{
+ if (aValue) {
+ nsAttrValueOrString value(aValue);
+ AfterMaybeChangeAttr(aNameSpaceID, aName, &value, aNotify);
+ } else {
+ AfterMaybeChangeAttr(aNameSpaceID, aName, nullptr, aNotify);
+ }
+
+ if (aNameSpaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::scrolling) {
+ if (mFrameLoader) {
+ nsIDocShell* docshell = mFrameLoader->GetExistingDocShell();
+ nsCOMPtr<nsIScrollable> scrollable = do_QueryInterface(docshell);
+ if (scrollable) {
+ int32_t cur;
+ scrollable->GetDefaultScrollbarPreferences(nsIScrollable::ScrollOrientation_X, &cur);
+ int32_t val = MapScrollingAttribute(aValue);
+ if (cur != val) {
+ scrollable->SetDefaultScrollbarPreferences(nsIScrollable::ScrollOrientation_X, val);
+ scrollable->SetDefaultScrollbarPreferences(nsIScrollable::ScrollOrientation_Y, val);
+ RefPtr<nsPresContext> presContext;
+ docshell->GetPresContext(getter_AddRefs(presContext));
+ nsIPresShell* shell = presContext ? presContext->GetPresShell() : nullptr;
+ nsIFrame* rootScroll = shell ? shell->GetRootScrollFrame() : nullptr;
+ if (rootScroll) {
+ shell->FrameNeedsReflow(rootScroll, nsIPresShell::eStyleChange,
+ NS_FRAME_IS_DIRTY);
+ }
}
}
}
+ } else if (aName == nsGkAtoms::mozbrowser) {
+ mReallyIsBrowser = !!aValue && BrowserFramesEnabled() &&
+ PrincipalAllowsBrowserFrame(NodePrincipal());
}
}
return nsGenericHTMLElement::AfterSetAttr(aNameSpaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
+}
+
+nsresult
+nsGenericHTMLFrameElement::OnAttrSetButNotChanged(int32_t aNamespaceID,
+ nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify)
+{
+ AfterMaybeChangeAttr(aNamespaceID, aName, &aValue, aNotify);
+
+ return nsGenericHTMLElement::OnAttrSetButNotChanged(aNamespaceID, aName,
+ aValue, aNotify);
+}
+
+void
+nsGenericHTMLFrameElement::AfterMaybeChangeAttr(int32_t aNamespaceID,
+ nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify)
+{
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::src) {
+ if (aValue && (!IsHTMLElement(nsGkAtoms::iframe) ||
+ !HasAttr(kNameSpaceID_None, nsGkAtoms::srcdoc))) {
+ // Don't propagate error here. The attribute was successfully set,
+ // that's what we should reflect.
+ LoadSrc();
+ }
+ } else if (aName == nsGkAtoms::name) {
+ // Propagate "name" to the docshell to make browsing context names live,
+ // per HTML5.
+ nsIDocShell* docShell = mFrameLoader ? mFrameLoader->GetExistingDocShell()
+ : nullptr;
+ if (docShell) {
+ if (aValue) {
+ docShell->SetName(aValue->String());
+ } else {
+ docShell->SetName(EmptyString());
+ }
+ }
+ }
+ }
}
void
@@ -503,28 +519,7 @@ nsGenericHTMLFrameElement::BrowserFramesEnabled()
/* [infallible] */ nsresult
nsGenericHTMLFrameElement::GetReallyIsBrowserOrApp(bool *aOut)
{
- *aOut = false;
-
- // Fail if browser frames are globally disabled.
- if (!nsGenericHTMLFrameElement::BrowserFramesEnabled()) {
- return NS_OK;
- }
-
- // Fail if this frame doesn't have the mozbrowser attribute.
- if (!GetBoolAttr(nsGkAtoms::mozbrowser)) {
- return NS_OK;
- }
-
- // Fail if the node principal isn't trusted.
- nsIPrincipal *principal = NodePrincipal();
- nsCOMPtr<nsIPermissionManager> permMgr =
- services::GetPermissionManager();
- NS_ENSURE_TRUE(permMgr, NS_OK);
-
- uint32_t permission = nsIPermissionManager::DENY_ACTION;
- nsresult rv = permMgr->TestPermissionFromPrincipal(principal, "browser", &permission);
- NS_ENSURE_SUCCESS(rv, NS_OK);
- *aOut = permission == nsIPermissionManager::ALLOW_ACTION;
+ *aOut = mReallyIsBrowser;
return NS_OK;
}
diff --git a/dom/html/nsGenericHTMLFrameElement.h b/dom/html/nsGenericHTMLFrameElement.h
index d9c2df9d5..5b7caa251 100644
--- a/dom/html/nsGenericHTMLFrameElement.h
+++ b/dom/html/nsGenericHTMLFrameElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -36,6 +35,7 @@ public:
, mIsPrerendered(false)
, mBrowserFrameListenersRegistered(false)
, mFrameLoaderCreationDisallowed(false)
+ , mReallyIsBrowser(false)
{
}
@@ -52,19 +52,7 @@ public:
bool aCompileEventHandlers) override;
virtual void UnbindFromTree(bool aDeep = true,
bool aNullParent = true) override;
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
- virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAttrValue* aValue,
- bool aNotify) override;
+
virtual void DestroyContent() override;
nsresult CopyInnerTo(mozilla::dom::Element* aDest);
@@ -109,6 +97,14 @@ protected:
nsresult GetContentDocument(nsIDOMDocument** aContentDocument);
already_AddRefed<nsPIDOMWindowOuter> GetContentWindow();
+ virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+ virtual nsresult OnAttrSetButNotChanged(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString& aValue,
+ bool aNotify) override;
+
RefPtr<nsFrameLoader> mFrameLoader;
nsCOMPtr<nsPIDOMWindowOuter> mOpenerWindow;
@@ -122,6 +118,7 @@ protected:
bool mIsPrerendered;
bool mBrowserFrameListenersRegistered;
bool mFrameLoaderCreationDisallowed;
+ bool mReallyIsBrowser;
// This flag is only used by <iframe>. See HTMLIFrameElement::
// FullscreenFlag() for details. It is placed here so that we
@@ -130,6 +127,18 @@ protected:
private:
void GetManifestURL(nsAString& aOut);
+
+ /**
+ * This function is called by AfterSetAttr and OnAttrSetButNotChanged.
+ * It will be called whether the value is being set or unset.
+ *
+ * @param aNamespaceID the namespace of the attr being set
+ * @param aName the localname of the attribute being set
+ * @param aValue the value being set or null if the value is being unset
+ * @param aNotify Whether we plan to notify document observers.
+ */
+ void AfterMaybeChangeAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue, bool aNotify);
};
#endif // nsGenericHTMLFrameElement_h
diff --git a/dom/html/nsHTMLContentSink.cpp b/dom/html/nsHTMLContentSink.cpp
index 409b225ef..938fcd169 100644
--- a/dom/html/nsHTMLContentSink.cpp
+++ b/dom/html/nsHTMLContentSink.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -14,6 +13,7 @@
#include "nsContentSink.h"
#include "nsCOMPtr.h"
+#include "nsHTMLTags.h"
#include "nsReadableUtils.h"
#include "nsUnicharUtils.h"
#include "nsIHTMLContentSink.h"
@@ -30,6 +30,7 @@
#include "mozilla/Logging.h"
#include "nsNodeUtils.h"
#include "nsIContent.h"
+#include "mozilla/dom/CustomElementRegistry.h"
#include "mozilla/dom/Element.h"
#include "mozilla/Preferences.h"
@@ -59,8 +60,6 @@
#include "nsIScriptGlobalObject.h"
#include "nsNameSpaceManager.h"
-#include "nsIParserService.h"
-
#include "nsIStyleSheetLinkingElement.h"
#include "nsITimer.h"
#include "nsError.h"
@@ -84,10 +83,6 @@ using namespace mozilla::dom;
//----------------------------------------------------------------------
-typedef nsGenericHTMLElement*
- (*contentCreatorCallback)(already_AddRefed<mozilla::dom::NodeInfo>&&,
- FromParser aFromParser);
-
nsGenericHTMLElement*
NS_NewHTMLNOTUSEDElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
FromParser aFromParser)
@@ -96,14 +91,12 @@ NS_NewHTMLNOTUSEDElement(already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
return nullptr;
}
-#define HTML_TAG(_tag, _classname) NS_NewHTML##_classname##Element,
-#define HTML_HTMLELEMENT_TAG(_tag) NS_NewHTMLElement,
+#define HTML_TAG(_tag, _classname, _interfacename) NS_NewHTML##_classname##Element,
#define HTML_OTHER(_tag) NS_NewHTMLNOTUSEDElement,
-static const contentCreatorCallback sContentCreatorCallbacks[] = {
+static const HTMLContentCreatorFunction sHTMLContentCreatorFunctions[] = {
NS_NewHTMLUnknownElement,
#include "nsHTMLTagList.h"
#undef HTML_TAG
-#undef HTML_HTMLELEMENT_TAG
#undef HTML_OTHER
NS_NewHTMLUnknownElement
};
@@ -234,29 +227,144 @@ public:
int32_t mStackPos;
};
+static void
+DoCustomElementCreate(Element** aElement, nsIDocument* aDoc, nsIAtom* aLocalName,
+ CustomElementConstructor* aConstructor, ErrorResult& aRv)
+{
+ RefPtr<Element> element =
+ aConstructor->Construct("Custom Element Create", aRv);
+ if (aRv.Failed()) {
+ return;
+ }
+
+ if (!element || !element->IsHTMLElement()) {
+ aRv.ThrowTypeError<MSG_THIS_DOES_NOT_IMPLEMENT_INTERFACE>(NS_LITERAL_STRING("HTMLElement"));
+ return;
+ }
+
+ if (aDoc != element->OwnerDoc() || element->GetParentNode() ||
+ element->HasChildren() || element->GetAttrCount() ||
+ element->NodeInfo()->NameAtom() != aLocalName) {
+ aRv.Throw(NS_ERROR_DOM_NOT_SUPPORTED_ERR);
+ return;
+ }
+
+ element.forget(aElement);
+}
+
nsresult
NS_NewHTMLElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
- FromParser aFromParser, const nsAString* aIs)
+ FromParser aFromParser, const nsAString* aIs,
+ mozilla::dom::CustomElementDefinition* aDefinition)
{
*aResult = nullptr;
RefPtr<mozilla::dom::NodeInfo> nodeInfo = aNodeInfo;
- nsIParserService* parserService = nsContentUtils::GetParserService();
- if (!parserService)
- return NS_ERROR_OUT_OF_MEMORY;
-
nsIAtom *name = nodeInfo->NameAtom();
+ RefPtr<nsIAtom> tagAtom = nodeInfo->NameAtom();
+ RefPtr<nsIAtom> typeAtom = aIs ? NS_Atomize(*aIs) : tagAtom;
NS_ASSERTION(nodeInfo->NamespaceEquals(kNameSpaceID_XHTML),
"Trying to HTML elements that don't have the XHTML namespace");
- int32_t tag = parserService->HTMLCaseSensitiveAtomTagToId(name);
+ int32_t tag = nsHTMLTags::CaseSensitiveAtomTagToId(name);
- // Per the Custom Element specification, unknown tags that are valid custom
- // element names should be HTMLElement instead of HTMLUnknownElement.
bool isCustomElementName = (tag == eHTMLTag_userdefined &&
nsContentUtils::IsCustomElementName(name));
+ bool isCustomElement = isCustomElementName || aIs;
+ MOZ_ASSERT_IF(aDefinition, isCustomElement);
+
+ // https://dom.spec.whatwg.org/#concept-create-element
+ // We only handle the "synchronous custom elements flag is set" now.
+ // For the unset case (e.g. cloning a node), see bug 1319342 for that.
+ // Step 4.
+ CustomElementDefinition* definition = aDefinition;
+ if (CustomElementRegistry::IsCustomElementEnabled() && isCustomElement &&
+ !definition) {
+ MOZ_ASSERT(nodeInfo->NameAtom()->Equals(nodeInfo->LocalName()));
+ definition =
+ nsContentUtils::LookupCustomElementDefinition(nodeInfo->GetDocument(),
+ nodeInfo->NameAtom(),
+ nodeInfo->NamespaceID(),
+ typeAtom);
+ }
+
+ // It might be a problem that parser synchronously calls constructor, so filed
+ // bug 1378079 to figure out what we should do for parser case.
+ if (definition) {
+ /*
+ * Synchronous custom elements flag is determined by 3 places in spec,
+ * 1) create an element for a token, the flag is determined by
+ * "will execute script" which is not originally created
+ * for the HTML fragment parsing algorithm.
+ * 2) createElement and createElementNS, the flag is the same as
+ * NOT_FROM_PARSER.
+ * 3) clone a node, our implementation will not go into this function.
+ * For the unset case which is non-synchronous only applied for
+ * inner/outerHTML.
+ */
+ bool synchronousCustomElements = aFromParser != dom::FROM_PARSER_FRAGMENT ||
+ aFromParser == dom::NOT_FROM_PARSER;
+ // Per discussion in https://github.com/w3c/webcomponents/issues/635,
+ // use entry global in those places that are called from JS APIs and use the
+ // node document's global object if it is called from parser.
+ nsIGlobalObject* global;
+ if (aFromParser == dom::NOT_FROM_PARSER) {
+ global = GetEntryGlobal();
+ } else {
+ global = nodeInfo->GetDocument()->GetScopeObject();
+ }
+ if (!global) {
+ // In browser chrome code, one may have access to a document which doesn't
+ // have scope object anymore.
+ return NS_ERROR_FAILURE;
+ }
+
+ AutoEntryScript aes(global, "create custom elements");
+ JSContext* cx = aes.cx();
+ ErrorResult rv;
+
+ // Step 5.
+ if (definition->IsCustomBuiltIn()) {
+ // SetupCustomElement() should be called with an element that don't have
+ // CustomElementData setup, if not we will hit the assertion in
+ // SetCustomElementData().
+ // Built-in element
+ *aResult = CreateHTMLElement(tag, nodeInfo.forget(), aFromParser).take();
+ (*aResult)->SetCustomElementData(new CustomElementData(typeAtom));
+ if (synchronousCustomElements) {
+ CustomElementRegistry::Upgrade(*aResult, definition, rv);
+ if (rv.MaybeSetPendingException(cx)) {
+ aes.ReportException();
+ }
+ } else {
+ nsContentUtils::EnqueueUpgradeReaction(*aResult, definition);
+ }
+
+ return NS_OK;
+ }
+
+ // Step 6.1.
+ if (synchronousCustomElements) {
+ DoCustomElementCreate(aResult, nodeInfo->GetDocument(),
+ nodeInfo->NameAtom(),
+ definition->mConstructor, rv);
+ if (rv.MaybeSetPendingException(cx)) {
+ NS_IF_ADDREF(*aResult = NS_NewHTMLUnknownElement(nodeInfo.forget(), aFromParser));
+ }
+ return NS_OK;
+ }
+
+ // Step 6.2.
+ NS_IF_ADDREF(*aResult = NS_NewHTMLElement(nodeInfo.forget(), aFromParser));
+ (*aResult)->SetCustomElementData(new CustomElementData(definition->mType));
+ nsContentUtils::EnqueueUpgradeReaction(*aResult, definition);
+ return NS_OK;
+ }
+
+ // Per the Custom Element specification, unknown tags that are valid custom
+ // element names should be HTMLElement instead of HTMLUnknownElement.
if (isCustomElementName) {
NS_IF_ADDREF(*aResult = NS_NewHTMLElement(nodeInfo.forget(), aFromParser));
} else {
@@ -267,8 +375,8 @@ NS_NewHTMLElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&&
return NS_ERROR_OUT_OF_MEMORY;
}
- if (isCustomElementName || aIs) {
- nsContentUtils::SetupCustomElement(*aResult, aIs);
+ if (CustomElementRegistry::IsCustomElementEnabled() && isCustomElement) {
+ (*aResult)->SetCustomElementData(new CustomElementData(typeAtom));
}
return NS_OK;
@@ -283,7 +391,7 @@ CreateHTMLElement(uint32_t aNodeType,
aNodeType == eHTMLTag_userdefined,
"aNodeType is out of bounds");
- contentCreatorCallback cb = sContentCreatorCallbacks[aNodeType];
+ HTMLContentCreatorFunction cb = sHTMLContentCreatorFunctions[aNodeType];
NS_ASSERTION(cb != NS_NewHTMLNOTUSEDElement,
"Don't know how to construct tag element!");
diff --git a/dom/html/nsHTMLDNSPrefetch.cpp b/dom/html/nsHTMLDNSPrefetch.cpp
index 2ddc8476d..6a2d0e1d6 100644
--- a/dom/html/nsHTMLDNSPrefetch.cpp
+++ b/dom/html/nsHTMLDNSPrefetch.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsHTMLDNSPrefetch.h b/dom/html/nsHTMLDNSPrefetch.h
index 18da98f26..094471e36 100644
--- a/dom/html/nsHTMLDNSPrefetch.h
+++ b/dom/html/nsHTMLDNSPrefetch.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsHTMLDocument.cpp b/dom/html/nsHTMLDocument.cpp
index b0747fb04..bc62f9753 100644
--- a/dom/html/nsHTMLDocument.cpp
+++ b/dom/html/nsHTMLDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -1014,26 +1013,6 @@ nsHTMLDocument::SetDomain(const nsAString& aDomain, ErrorResult& rv)
rv = NodePrincipal()->SetDomain(newURI);
}
-nsGenericHTMLElement*
-nsHTMLDocument::GetBody()
-{
- Element* html = GetHtmlElement();
- if (!html) {
- return nullptr;
- }
-
- for (nsIContent* child = html->GetFirstChild();
- child;
- child = child->GetNextSibling()) {
- if (child->IsHTMLElement(nsGkAtoms::body) ||
- child->IsHTMLElement(nsGkAtoms::frameset)) {
- return static_cast<nsGenericHTMLElement*>(child);
- }
- }
-
- return nullptr;
-}
-
NS_IMETHODIMP
nsHTMLDocument::GetBody(nsIDOMHTMLElement** aBody)
{
@@ -1055,31 +1034,6 @@ nsHTMLDocument::SetBody(nsIDOMHTMLElement* aBody)
return rv.StealNSResult();
}
-void
-nsHTMLDocument::SetBody(nsGenericHTMLElement* newBody, ErrorResult& rv)
-{
- nsCOMPtr<Element> root = GetRootElement();
-
- // The body element must be either a body tag or a frameset tag. And we must
- // have a html root tag, otherwise GetBody will not return the newly set
- // body.
- if (!newBody ||
- !newBody->IsAnyOfHTMLElements(nsGkAtoms::body, nsGkAtoms::frameset) ||
- !root || !root->IsHTMLElement() ||
- !root->IsHTMLElement(nsGkAtoms::html)) {
- rv.Throw(NS_ERROR_DOM_HIERARCHY_REQUEST_ERR);
- return;
- }
-
- // Use DOM methods so that we pass through the appropriate security checks.
- nsCOMPtr<Element> currentBody = GetBodyElement();
- if (currentBody) {
- root->ReplaceChild(*newBody, *currentBody, rv);
- } else {
- root->AppendChild(*newBody, rv);
- }
-}
-
NS_IMETHODIMP
nsHTMLDocument::GetHead(nsIDOMHTMLHeadElement** aHead)
{
@@ -1447,6 +1401,11 @@ nsHTMLDocument::Open(JSContext* cx,
return nullptr;
}
+ if (ShouldThrowOnDynamicMarkupInsertion()) {
+ aError.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
+ return nullptr;
+ }
+
// Set up the content type for insertion
nsAutoCString contentType;
contentType.AssignLiteral("text/html");
@@ -1657,6 +1616,11 @@ nsHTMLDocument::Close(ErrorResult& rv)
return;
}
+ if (ShouldThrowOnDynamicMarkupInsertion()) {
+ rv.Throw(NS_ERROR_DOM_INVALID_STATE_ERR);
+ return;
+ }
+
if (!mParser || !mParser->IsScriptCreated()) {
return;
}
@@ -1732,6 +1696,10 @@ nsHTMLDocument::WriteCommon(JSContext *cx,
return NS_ERROR_DOM_INVALID_STATE_ERR;
}
+ if (ShouldThrowOnDynamicMarkupInsertion()) {
+ return NS_ERROR_DOM_INVALID_STATE_ERR;
+ }
+
if (mParserAborted) {
// Hixie says aborting the parser doesn't undefine the insertion point.
// However, since we null out mParser in that case, we track the
@@ -2128,7 +2096,7 @@ nsHTMLDocument::GetSupportedNames(nsTArray<nsString>& aNames)
nsIdentifierMapEntry* entry = iter.Get();
if (entry->HasNameElement() ||
entry->HasIdElementExposedAsHTMLDocumentProperty()) {
- aNames.AppendElement(entry->GetKey());
+ aNames.AppendElement(entry->GetKeyAsString());
}
}
}
diff --git a/dom/html/nsHTMLDocument.h b/dom/html/nsHTMLDocument.h
index 1fa81f6cd..8eec4c0c4 100644
--- a/dom/html/nsHTMLDocument.h
+++ b/dom/html/nsHTMLDocument.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -155,10 +154,7 @@ public:
virtual void RemovedFromDocShell() override;
- virtual mozilla::dom::Element *GetElementById(const nsAString& aElementId) override
- {
- return nsDocument::GetElementById(aElementId);
- }
+ using mozilla::dom::DocumentOrShadowRoot::GetElementById;
virtual void DocAddSizeOfExcludingThis(nsWindowSizes* aWindowSizes) const override;
// DocAddSizeOfIncludingThis is inherited from nsIDocument.
@@ -175,8 +171,8 @@ public:
JS::MutableHandle<JSObject*> aRetval,
mozilla::ErrorResult& rv);
void GetSupportedNames(nsTArray<nsString>& aNames);
- nsGenericHTMLElement *GetBody();
- void SetBody(nsGenericHTMLElement* aBody, mozilla::ErrorResult& rv);
+ using nsIDocument::GetBody;
+ using nsIDocument::SetBody;
mozilla::dom::HTMLSharedElement *GetHead() {
return static_cast<mozilla::dom::HTMLSharedElement*>(GetHeadElement());
}
diff --git a/dom/html/nsIConstraintValidation.cpp b/dom/html/nsIConstraintValidation.cpp
index db69cba07..318b6851b 100644
--- a/dom/html/nsIConstraintValidation.cpp
+++ b/dom/html/nsIConstraintValidation.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsIConstraintValidation.h b/dom/html/nsIConstraintValidation.h
index c15bf846b..c94120247 100644
--- a/dom/html/nsIConstraintValidation.h
+++ b/dom/html/nsIConstraintValidation.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsIForm.h b/dom/html/nsIForm.h
index 91bb7ac86..44eedc510 100644
--- a/dom/html/nsIForm.h
+++ b/dom/html/nsIForm.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsIFormControl.h b/dom/html/nsIFormControl.h
index 22f1d08b3..0a844a567 100644
--- a/dom/html/nsIFormControl.h
+++ b/dom/html/nsIFormControl.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsIFormProcessor.h b/dom/html/nsIFormProcessor.h
index b18305ac4..ad92d7597 100644
--- a/dom/html/nsIFormProcessor.h
+++ b/dom/html/nsIFormProcessor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsIHTMLCollection.h b/dom/html/nsIHTMLCollection.h
index 7dbfe8766..d27f82d1f 100644
--- a/dom/html/nsIHTMLCollection.h
+++ b/dom/html/nsIHTMLCollection.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsIHTMLDocument.h b/dom/html/nsIHTMLDocument.h
index 8dbee1170..ce7ad47c7 100644
--- a/dom/html/nsIHTMLDocument.h
+++ b/dom/html/nsIHTMLDocument.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsIRadioGroupContainer.h b/dom/html/nsIRadioGroupContainer.h
index 3d530a723..bee3bf8df 100644
--- a/dom/html/nsIRadioGroupContainer.h
+++ b/dom/html/nsIRadioGroupContainer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsIRadioVisitor.h b/dom/html/nsIRadioVisitor.h
index 425a50692..abaaa573c 100644
--- a/dom/html/nsIRadioVisitor.h
+++ b/dom/html/nsIRadioVisitor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsITextControlElement.h b/dom/html/nsITextControlElement.h
index 9adbf377e..5c922b7c5 100644
--- a/dom/html/nsITextControlElement.h
+++ b/dom/html/nsITextControlElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsRadioVisitor.cpp b/dom/html/nsRadioVisitor.cpp
index a3f8a34f8..730d4793c 100644
--- a/dom/html/nsRadioVisitor.cpp
+++ b/dom/html/nsRadioVisitor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsRadioVisitor.h b/dom/html/nsRadioVisitor.h
index b33d2e4e5..84be7ab85 100644
--- a/dom/html/nsRadioVisitor.h
+++ b/dom/html/nsRadioVisitor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/html/nsTextEditorState.cpp b/dom/html/nsTextEditorState.cpp
index 25be6016c..b25b14ece 100644
--- a/dom/html/nsTextEditorState.cpp
+++ b/dom/html/nsTextEditorState.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -2214,6 +2213,23 @@ nsTextEditorState::SetValue(const nsAString& aValue, uint32_t aFlags)
return true;
}
+bool
+nsTextEditorState::HasNonEmptyValue()
+{
+ if (mEditor && mBoundFrame && mEditorInitialized &&
+ !mIsCommittingComposition) {
+ bool empty;
+ nsresult rv = mEditor->GetDocumentIsEmpty(&empty);
+ if (NS_SUCCEEDED(rv)) {
+ return !empty;
+ }
+ }
+
+ nsAutoString value;
+ GetValue(value, true);
+ return !value.IsEmpty();
+}
+
void
nsTextEditorState::InitializeKeyboardEventListeners()
{
diff --git a/dom/html/nsTextEditorState.h b/dom/html/nsTextEditorState.h
index caf5e8eed..5abc88d44 100644
--- a/dom/html/nsTextEditorState.h
+++ b/dom/html/nsTextEditorState.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -157,6 +156,11 @@ public:
};
MOZ_MUST_USE bool SetValue(const nsAString& aValue, uint32_t aFlags);
void GetValue(nsAString& aValue, bool aIgnoreWrap) const;
+ bool HasNonEmptyValue();
+ // The following methods are for textarea element to use whether default
+ // value or not.
+ // XXX We might have to add assertion when it is into editable,
+ // or reconsider fixing bug 597525 to remove these.
void EmptyValue() { if (mValue) mValue->Truncate(); }
bool IsEmpty() const { return mValue ? mValue->IsEmpty() : true; }
diff --git a/dom/html/reftests/body-frame-margin-remove-other-pres-hint-ref.html b/dom/html/reftests/body-frame-margin-remove-other-pres-hint-ref.html
new file mode 100644
index 000000000..8446d7f26
--- /dev/null
+++ b/dom/html/reftests/body-frame-margin-remove-other-pres-hint-ref.html
@@ -0,0 +1,14 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+ <title></title>
+</head>
+<body>
+<script type="text/javascript">
+ function loadFrame() {
+ document.documentElement.className = "";
+ }
+</script>
+<iframe id=frame onload="loadFrame()" src="data:text/html,<body><span lang='en'>text</span></body>" marginwidth="100px" marginheight="100px" width=300px height=300px></iframe>
+</body>
+</html> \ No newline at end of file
diff --git a/dom/html/reftests/body-frame-margin-remove-other-pres-hint.html b/dom/html/reftests/body-frame-margin-remove-other-pres-hint.html
new file mode 100644
index 000000000..6f4953637
--- /dev/null
+++ b/dom/html/reftests/body-frame-margin-remove-other-pres-hint.html
@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html class="reftest-wait">
+<head>
+ <title></title>
+</head>
+<body>
+<script type="text/javascript">
+ function loadFrame() {
+ let frame = document.getElementById('frame');
+ frame.contentDocument.body.removeAttribute('lang');
+ document.documentElement.className = "";
+ }
+</script>
+<iframe id=frame onload="loadFrame()" src="data:text/html,<body lang='en'>text</body>" marginwidth="100px" marginheight="100px" width=300px height=300px></iframe>
+</body>
+</html> \ No newline at end of file
diff --git a/dom/html/reftests/body-topmargin-dynamic.html b/dom/html/reftests/body-topmargin-dynamic.html
new file mode 100644
index 000000000..e6c8c505e
--- /dev/null
+++ b/dom/html/reftests/body-topmargin-dynamic.html
@@ -0,0 +1,12 @@
+<!DOCTYPE html>
+<html>
+<body>
+this text should have a margin of 100px on the top and left
+<p style="direction: rtl">this text should have a margin of 100px on the right</p>
+<script type="text/javascript">
+ document.body.setAttribute("topmargin", "100px");
+ document.body.setAttribute("leftmargin", "100px");
+ document.body.setAttribute("rightmargin", "100px");
+</script>
+</body>
+</html>
diff --git a/dom/html/reftests/body-topmargin-ref.html b/dom/html/reftests/body-topmargin-ref.html
new file mode 100644
index 000000000..6530a0ae4
--- /dev/null
+++ b/dom/html/reftests/body-topmargin-ref.html
@@ -0,0 +1,7 @@
+<!DOCTYPE html>
+<html>
+<body topmargin="100px" leftmargin="100px" rightmargin="100px">
+this text should have a margin of 100px on the top and left
+<p style="direction: rtl">this text should have a margin of 100px on the right</p>
+</body>
+</html>
diff --git a/dom/html/reftests/reftest-stylo.list b/dom/html/reftests/reftest-stylo.list
index dd6339edf..570c07358 100644
--- a/dom/html/reftests/reftest-stylo.list
+++ b/dom/html/reftests/reftest-stylo.list
@@ -64,3 +64,10 @@ pref(permissions.default.image,2) HTTP == bug1196784-with-srcset.html bug1196784
# Test video with rotation information can be rotated.
== bug1228601-video-rotation-90.html bug1228601-video-rotation-90.html
+
+# Test that dynamically setting body margin attributes updates style appropriately
+== body-topmargin-dynamic.html body-topmargin-dynamic.html
+
+# Test that dynamically removing a nonmargin mapped attribute does not
+# destroy margins inherited from the frame.
+== body-frame-margin-remove-other-pres-hint.html body-frame-margin-remove-other-pres-hint.html
diff --git a/dom/html/reftests/reftest.list b/dom/html/reftests/reftest.list
index 27a13e7c9..82e773abb 100644
--- a/dom/html/reftests/reftest.list
+++ b/dom/html/reftests/reftest.list
@@ -62,3 +62,10 @@ pref(permissions.default.image,2) HTTP == bug1196784-with-srcset.html bug1196784
# Test video with rotation information can be rotated.
== bug1228601-video-rotation-90.html bug1228601-video-rotated-ref.html
+
+# Test that dynamically setting body margin attributes updates style appropriately
+== body-topmargin-dynamic.html body-topmargin-ref.html
+
+# Test that dynamically removing a nonmargin mapped attribute does not
+# destroy margins inherited from the frame.
+== body-frame-margin-remove-other-pres-hint.html body-frame-margin-remove-other-pres-hint-ref.html
diff --git a/dom/html/test/mochitest.ini b/dom/html/test/mochitest.ini
index 4a50a9c3f..5c9c66e61 100644
--- a/dom/html/test/mochitest.ini
+++ b/dom/html/test/mochitest.ini
@@ -569,7 +569,6 @@ support-files = file_cookiemanager.js
support-files = file_bug871161-1.html file_bug871161-2.html
[test_bug1013316.html]
[test_hash_encoded.html]
-[test_bug1081037.html]
[test_window_open_close.html]
tags = openwindow
[test_viewport_resize.html]
diff --git a/dom/html/test/test_bug1081037.html b/dom/html/test/test_bug1081037.html
deleted file mode 100644
index 9d8782580..000000000
--- a/dom/html/test/test_bug1081037.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1081037
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1081037</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
- <script type="application/javascript">
-
- /** Test for Bug 1081037 **/
-
-function shouldThrow(fun, msg, ex, todo) {
- try {
- fun();
- ok(todo, msg);
- } catch (e) {
- ok(new RegExp(ex).test(e), msg + " (thrown:" + e + ")")
- }
-}
-
-var Foo = document.registerElement('x-foo', {
- prototype: {bar: 5}
-});
-
-Foo.prototype.bar = 6;
-var foo = new Foo();
-is(foo.bar, 6, "prototype of the ctor returned from registerElement works");
-
-var protoDesc = Object.getOwnPropertyDescriptor(Foo, "prototype");
-is(protoDesc.configurable, false, "proto should be non-configurable");
-is(protoDesc.enumerable, false, "proto should be non-enumerable");
-is(protoDesc.writable, false, "proto should be non-writable");
-
-// TODO: FIXME!
-shouldThrow(function() {
- document.registerElement('x-foo2', {
- prototype: Foo.prototype
- });
- },
- "if proto is an interface prototype object, registerElement should throw",
- "not supported",
- /* todo = */ true);
-
-var nonConfigReadonlyProto = Object.create(HTMLElement.prototype,
- { constructor: { configurable: false, writable: false, value: 42 } });
-
-shouldThrow(function() {
- document.registerElement('x-nonconfig-readonly', {
- prototype: nonConfigReadonlyProto
- });
- },
- "non-configurable and not-writable constructor property",
- "not supported");
-
-
-// this is not defined in current spec:
-var readonlyProto = Object.create(HTMLElement.prototype,
- { constructor: { configurable: true, writable: false, value: 42 } });
-
-var Readonly = document.registerElement('x-nonconfig-readonly', {
- prototype: readonlyProto
-});
-
-is(Readonly.prototype, readonlyProto, "configurable readonly constructor property");
-
-var handler = {
- getOwnPropertyDescriptor: function(target, name) {
- return name == "constructor" ? undefined : Object.getOwnPropertyDescriptor(target,name);
- },
- defineProperty: function(target, name, propertyDescriptor) {
- if (name == "constructor") {
- throw "spec this";
- }
-
- return Object.defineProperty(target, name, propertyDescriptor);
- },
- has: function(target, name) {
- if (name == "constructor") {
- return false;
- }
- return name in target;
- }
-};
-var proxy = new Proxy({}, handler);
-
-shouldThrow(function() {
- document.registerElement('x-proxymagic', {
- prototype: proxy
- });
- },
- "proxy magic",
- "spec this");
-
-var getOwn = 0;
-var defineProp = 0;
-var handler2 = {
- getOwnPropertyDescriptor: function(target, name) {
- if (name == "constructor") {
- getOwn++;
- }
- return Object.getOwnPropertyDescriptor(target,name);
- },
- defineProperty: function(target, name, propertyDescriptor) {
- if (name == "constructor") {
- defineProp++;
- }
- return Object.defineProperty(target, name, propertyDescriptor);
- }
-};
-var proxy2 = new Proxy({}, handler2);
-
-document.registerElement('x-proxymagic2', {
- prototype: proxy2
-});
-
-is(getOwn, 1, "number of getOwnPropertyDescriptor calls from registerElement: " + getOwn);
-is(defineProp, 1, "number of defineProperty calls from registerElement: " + defineProp);
-
- </script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1081037">Mozilla Bug 1081037</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-
-</div>
-<pre id="test">
-</pre>
-</body>
-</html>
diff --git a/dom/imptests/idlharness.js b/dom/imptests/idlharness.js
index 8e41703e6..dc0d9d566 100644
--- a/dom/imptests/idlharness.js
+++ b/dom/imptests/idlharness.js
@@ -1703,4 +1703,3 @@ function IdlTypedef(obj)
IdlTypedef.prototype = Object.create(IdlObject.prototype);
}());
-// vim: set expandtab shiftwidth=4 tabstop=4 foldmarker=@{,@} foldmethod=marker:
diff --git a/dom/imptests/moz.build b/dom/imptests/moz.build
index 595e58ce7..da1161de1 100644
--- a/dom/imptests/moz.build
+++ b/dom/imptests/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/imptests/testharness.js b/dom/imptests/testharness.js
index f4c66aae6..4dccb409f 100644
--- a/dom/imptests/testharness.js
+++ b/dom/imptests/testharness.js
@@ -2654,4 +2654,3 @@ policies and contribution forms [3].
test_environment.on_tests_ready();
})();
-// vim: set expandtab shiftwidth=4 tabstop=4:
diff --git a/dom/indexedDB/ActorsChild.cpp b/dom/indexedDB/ActorsChild.cpp
index 85f876cdc..31437ea05 100644
--- a/dom/indexedDB/ActorsChild.cpp
+++ b/dom/indexedDB/ActorsChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/ActorsChild.h b/dom/indexedDB/ActorsChild.h
index 58059787c..5dfa4f8cf 100644
--- a/dom/indexedDB/ActorsChild.h
+++ b/dom/indexedDB/ActorsChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/ActorsParent.cpp b/dom/indexedDB/ActorsParent.cpp
index c7feb8d86..46a3152cc 100644
--- a/dom/indexedDB/ActorsParent.cpp
+++ b/dom/indexedDB/ActorsParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/ActorsParent.h b/dom/indexedDB/ActorsParent.h
index 955d41b63..4393d6188 100644
--- a/dom/indexedDB/ActorsParent.h
+++ b/dom/indexedDB/ActorsParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/FileInfo.cpp b/dom/indexedDB/FileInfo.cpp
index 471007273..7b8f46914 100644
--- a/dom/indexedDB/FileInfo.cpp
+++ b/dom/indexedDB/FileInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/FileInfo.h b/dom/indexedDB/FileInfo.h
index e228d4ad7..94ca84810 100644
--- a/dom/indexedDB/FileInfo.h
+++ b/dom/indexedDB/FileInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/FileManager.h b/dom/indexedDB/FileManager.h
index 0fba46ec0..32a1e1330 100644
--- a/dom/indexedDB/FileManager.h
+++ b/dom/indexedDB/FileManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/FileSnapshot.cpp b/dom/indexedDB/FileSnapshot.cpp
index 986de074e..8a49b1d1b 100644
--- a/dom/indexedDB/FileSnapshot.cpp
+++ b/dom/indexedDB/FileSnapshot.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/FileSnapshot.h b/dom/indexedDB/FileSnapshot.h
index 6b577fcc3..62a774a1d 100644
--- a/dom/indexedDB/FileSnapshot.h
+++ b/dom/indexedDB/FileSnapshot.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBCursor.cpp b/dom/indexedDB/IDBCursor.cpp
index be0295dc7..c657fb4ae 100644
--- a/dom/indexedDB/IDBCursor.cpp
+++ b/dom/indexedDB/IDBCursor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBCursor.h b/dom/indexedDB/IDBCursor.h
index 3a4bedcda..920913c9c 100644
--- a/dom/indexedDB/IDBCursor.h
+++ b/dom/indexedDB/IDBCursor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBDatabase.cpp b/dom/indexedDB/IDBDatabase.cpp
index 8a1fa4b21..6c27efdf7 100644
--- a/dom/indexedDB/IDBDatabase.cpp
+++ b/dom/indexedDB/IDBDatabase.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBDatabase.h b/dom/indexedDB/IDBDatabase.h
index e61d5a30d..00e32bb3b 100644
--- a/dom/indexedDB/IDBDatabase.h
+++ b/dom/indexedDB/IDBDatabase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBEvents.cpp b/dom/indexedDB/IDBEvents.cpp
index bce567c51..efcf273a0 100644
--- a/dom/indexedDB/IDBEvents.cpp
+++ b/dom/indexedDB/IDBEvents.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBEvents.h b/dom/indexedDB/IDBEvents.h
index 02058fdd8..98ea7c46b 100644
--- a/dom/indexedDB/IDBEvents.h
+++ b/dom/indexedDB/IDBEvents.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBFactory.cpp b/dom/indexedDB/IDBFactory.cpp
index 1fae686b4..be5f46871 100644
--- a/dom/indexedDB/IDBFactory.cpp
+++ b/dom/indexedDB/IDBFactory.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBFactory.h b/dom/indexedDB/IDBFactory.h
index 15c53530d..c03abc0a2 100644
--- a/dom/indexedDB/IDBFactory.h
+++ b/dom/indexedDB/IDBFactory.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBFileHandle.cpp b/dom/indexedDB/IDBFileHandle.cpp
index 3287cf404..823e64399 100644
--- a/dom/indexedDB/IDBFileHandle.cpp
+++ b/dom/indexedDB/IDBFileHandle.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -129,12 +128,12 @@ IDBFileHandle::Run()
}
nsresult
-IDBFileHandle::PreHandleEvent(EventChainPreVisitor& aVisitor)
+IDBFileHandle::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnOwningThread();
aVisitor.mCanHandle = true;
- aVisitor.mParentTarget = mMutableFile;
+ aVisitor.SetParentTarget(mMutableFile, false);
return NS_OK;
}
diff --git a/dom/indexedDB/IDBFileHandle.h b/dom/indexedDB/IDBFileHandle.h
index 574524090..78ea56074 100644
--- a/dom/indexedDB/IDBFileHandle.h
+++ b/dom/indexedDB/IDBFileHandle.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -117,7 +116,7 @@ public:
// nsIDOMEventTarget
virtual nsresult
- PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// WrapperCache
virtual JSObject*
diff --git a/dom/indexedDB/IDBFileRequest.cpp b/dom/indexedDB/IDBFileRequest.cpp
index 066b2b24a..c12c69ee3 100644
--- a/dom/indexedDB/IDBFileRequest.cpp
+++ b/dom/indexedDB/IDBFileRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -64,12 +63,12 @@ NS_IMPL_CYCLE_COLLECTION_INHERITED(IDBFileRequest, DOMRequest,
mFileHandle)
nsresult
-IDBFileRequest::PreHandleEvent(EventChainPreVisitor& aVisitor)
+IDBFileRequest::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnOwningThread();
aVisitor.mCanHandle = true;
- aVisitor.mParentTarget = mFileHandle;
+ aVisitor.SetParentTarget(mFileHandle, false);
return NS_OK;
}
diff --git a/dom/indexedDB/IDBFileRequest.h b/dom/indexedDB/IDBFileRequest.h
index 4f4252dc9..50444ac99 100644
--- a/dom/indexedDB/IDBFileRequest.h
+++ b/dom/indexedDB/IDBFileRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -58,7 +57,7 @@ public:
// nsIDOMEventTarget
virtual nsresult
- PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
// nsWrapperCache
virtual JSObject*
diff --git a/dom/indexedDB/IDBIndex.cpp b/dom/indexedDB/IDBIndex.cpp
index f47098fce..a77b20ff1 100644
--- a/dom/indexedDB/IDBIndex.cpp
+++ b/dom/indexedDB/IDBIndex.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBIndex.h b/dom/indexedDB/IDBIndex.h
index 54b49f283..46accd857 100644
--- a/dom/indexedDB/IDBIndex.h
+++ b/dom/indexedDB/IDBIndex.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBKeyRange.cpp b/dom/indexedDB/IDBKeyRange.cpp
index 168fb4a5a..35f2a2ca8 100644
--- a/dom/indexedDB/IDBKeyRange.cpp
+++ b/dom/indexedDB/IDBKeyRange.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBKeyRange.h b/dom/indexedDB/IDBKeyRange.h
index 6371c0396..a922ba921 100644
--- a/dom/indexedDB/IDBKeyRange.h
+++ b/dom/indexedDB/IDBKeyRange.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBMutableFile.cpp b/dom/indexedDB/IDBMutableFile.cpp
index 9e9bfc4ee..1c35748ad 100644
--- a/dom/indexedDB/IDBMutableFile.cpp
+++ b/dom/indexedDB/IDBMutableFile.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBMutableFile.h b/dom/indexedDB/IDBMutableFile.h
index 3e328d366..585538e7e 100644
--- a/dom/indexedDB/IDBMutableFile.h
+++ b/dom/indexedDB/IDBMutableFile.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBObjectStore.cpp b/dom/indexedDB/IDBObjectStore.cpp
index 1216c8f84..c80b59cf3 100644
--- a/dom/indexedDB/IDBObjectStore.cpp
+++ b/dom/indexedDB/IDBObjectStore.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBObjectStore.h b/dom/indexedDB/IDBObjectStore.h
index 994931afa..8ef0aa835 100644
--- a/dom/indexedDB/IDBObjectStore.h
+++ b/dom/indexedDB/IDBObjectStore.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBRequest.cpp b/dom/indexedDB/IDBRequest.cpp
index e0e318059..d68d7cc67 100644
--- a/dom/indexedDB/IDBRequest.cpp
+++ b/dom/indexedDB/IDBRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -449,12 +448,12 @@ NS_IMPL_ADDREF_INHERITED(IDBRequest, IDBWrapperCache)
NS_IMPL_RELEASE_INHERITED(IDBRequest, IDBWrapperCache)
nsresult
-IDBRequest::PreHandleEvent(EventChainPreVisitor& aVisitor)
+IDBRequest::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnOwningThread();
aVisitor.mCanHandle = true;
- aVisitor.mParentTarget = mTransaction;
+ aVisitor.SetParentTarget(mTransaction, false);
return NS_OK;
}
diff --git a/dom/indexedDB/IDBRequest.h b/dom/indexedDB/IDBRequest.h
index 1c7fca756..ee285f926 100644
--- a/dom/indexedDB/IDBRequest.h
+++ b/dom/indexedDB/IDBRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -90,7 +89,7 @@ public:
// nsIDOMEventTarget
virtual nsresult
- PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
void
GetSource(Nullable<OwningIDBObjectStoreOrIDBIndexOrIDBCursor>& aSource) const;
diff --git a/dom/indexedDB/IDBTransaction.cpp b/dom/indexedDB/IDBTransaction.cpp
index 61b49b137..4962433ff 100644
--- a/dom/indexedDB/IDBTransaction.cpp
+++ b/dom/indexedDB/IDBTransaction.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -997,12 +996,12 @@ IDBTransaction::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
}
nsresult
-IDBTransaction::PreHandleEvent(EventChainPreVisitor& aVisitor)
+IDBTransaction::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnOwningThread();
aVisitor.mCanHandle = true;
- aVisitor.mParentTarget = mDatabase;
+ aVisitor.SetParentTarget(mDatabase, false);
return NS_OK;
}
diff --git a/dom/indexedDB/IDBTransaction.h b/dom/indexedDB/IDBTransaction.h
index 1c3e8be99..c8434c2ff 100644
--- a/dom/indexedDB/IDBTransaction.h
+++ b/dom/indexedDB/IDBTransaction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -314,7 +313,7 @@ public:
// nsIDOMEventTarget
virtual nsresult
- PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
private:
IDBTransaction(IDBDatabase* aDatabase,
diff --git a/dom/indexedDB/IDBWrapperCache.cpp b/dom/indexedDB/IDBWrapperCache.cpp
index ccc2bb43e..03e61f12f 100644
--- a/dom/indexedDB/IDBWrapperCache.cpp
+++ b/dom/indexedDB/IDBWrapperCache.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IDBWrapperCache.h b/dom/indexedDB/IDBWrapperCache.h
index 8f90f3213..3c4f573cc 100644
--- a/dom/indexedDB/IDBWrapperCache.h
+++ b/dom/indexedDB/IDBWrapperCache.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IndexedDatabase.h b/dom/indexedDB/IndexedDatabase.h
index b3c6ab725..910c9aefb 100644
--- a/dom/indexedDB/IndexedDatabase.h
+++ b/dom/indexedDB/IndexedDatabase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IndexedDatabaseInlines.h b/dom/indexedDB/IndexedDatabaseInlines.h
index 8c34a81dd..6b781e136 100644
--- a/dom/indexedDB/IndexedDatabaseInlines.h
+++ b/dom/indexedDB/IndexedDatabaseInlines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IndexedDatabaseManager.cpp b/dom/indexedDB/IndexedDatabaseManager.cpp
index 213de5cc9..5a6340746 100644
--- a/dom/indexedDB/IndexedDatabaseManager.cpp
+++ b/dom/indexedDB/IndexedDatabaseManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/IndexedDatabaseManager.h b/dom/indexedDB/IndexedDatabaseManager.h
index fb4376426..e43ead603 100644
--- a/dom/indexedDB/IndexedDatabaseManager.h
+++ b/dom/indexedDB/IndexedDatabaseManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/Key.cpp b/dom/indexedDB/Key.cpp
index 575734af2..c1345995c 100644
--- a/dom/indexedDB/Key.cpp
+++ b/dom/indexedDB/Key.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/Key.h b/dom/indexedDB/Key.h
index a4fb65b48..20e0eb7fa 100644
--- a/dom/indexedDB/Key.h
+++ b/dom/indexedDB/Key.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/KeyPath.cpp b/dom/indexedDB/KeyPath.cpp
index 74316f465..2cb297243 100644
--- a/dom/indexedDB/KeyPath.cpp
+++ b/dom/indexedDB/KeyPath.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/KeyPath.h b/dom/indexedDB/KeyPath.h
index e6e5f57d4..22aa8deac 100644
--- a/dom/indexedDB/KeyPath.h
+++ b/dom/indexedDB/KeyPath.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/PermissionRequestBase.cpp b/dom/indexedDB/PermissionRequestBase.cpp
index 0bd13dec3..2a79cc9dc 100644
--- a/dom/indexedDB/PermissionRequestBase.cpp
+++ b/dom/indexedDB/PermissionRequestBase.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/PermissionRequestBase.h b/dom/indexedDB/PermissionRequestBase.h
index 47ed6c9ca..328baaddf 100644
--- a/dom/indexedDB/PermissionRequestBase.h
+++ b/dom/indexedDB/PermissionRequestBase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/ProfilerHelpers.h b/dom/indexedDB/ProfilerHelpers.h
index 63fdafcce..41bdfc85e 100644
--- a/dom/indexedDB/ProfilerHelpers.h
+++ b/dom/indexedDB/ProfilerHelpers.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/ReportInternalError.cpp b/dom/indexedDB/ReportInternalError.cpp
index 267b84a76..4437a4b2b 100644
--- a/dom/indexedDB/ReportInternalError.cpp
+++ b/dom/indexedDB/ReportInternalError.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/ReportInternalError.h b/dom/indexedDB/ReportInternalError.h
index f29af1c5f..598bcda44 100644
--- a/dom/indexedDB/ReportInternalError.h
+++ b/dom/indexedDB/ReportInternalError.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/ScriptErrorHelper.cpp b/dom/indexedDB/ScriptErrorHelper.cpp
index 2db9c50e3..fd3793153 100644
--- a/dom/indexedDB/ScriptErrorHelper.cpp
+++ b/dom/indexedDB/ScriptErrorHelper.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/ScriptErrorHelper.h b/dom/indexedDB/ScriptErrorHelper.h
index 1716af87f..0d2e750ab 100644
--- a/dom/indexedDB/ScriptErrorHelper.h
+++ b/dom/indexedDB/ScriptErrorHelper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/SerializationHelpers.h b/dom/indexedDB/SerializationHelpers.h
index 37e8c40ab..5be10580e 100644
--- a/dom/indexedDB/SerializationHelpers.h
+++ b/dom/indexedDB/SerializationHelpers.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/indexedDB/moz.build b/dom/indexedDB/moz.build
index 050599393..2f0f92c98 100644
--- a/dom/indexedDB/moz.build
+++ b/dom/indexedDB/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/indexedDB/test/extensions/moz.build b/dom/indexedDB/test/extensions/moz.build
index a810e8a9e..8f3b05143 100644
--- a/dom/indexedDB/test/extensions/moz.build
+++ b/dom/indexedDB/test/extensions/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/inputmethod/forms.js b/dom/inputmethod/forms.js
index 1884f2b4d..5f593fc38 100644
--- a/dom/inputmethod/forms.js
+++ b/dom/inputmethod/forms.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- /
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
/* 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/. */
diff --git a/dom/inputmethod/moz.build b/dom/inputmethod/moz.build
index d0e817ee2..25eee3c89 100644
--- a/dom/inputmethod/moz.build
+++ b/dom/inputmethod/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/apps/moz.build b/dom/interfaces/apps/moz.build
index ca6c08821..018bda3d8 100644
--- a/dom/interfaces/apps/moz.build
+++ b/dom/interfaces/apps/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/base/moz.build b/dom/interfaces/base/moz.build
index e96fc0158..da19913e9 100644
--- a/dom/interfaces/base/moz.build
+++ b/dom/interfaces/base/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/base/nsIDOMConstructor.idl b/dom/interfaces/base/nsIDOMConstructor.idl
index 1eddf5739..8dd26b3ad 100644
--- a/dom/interfaces/base/nsIDOMConstructor.idl
+++ b/dom/interfaces/base/nsIDOMConstructor.idl
@@ -1,5 +1,4 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 sw=2 et tw=80: */
/* 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/. */
diff --git a/dom/interfaces/base/nsIStructuredCloneContainer.idl b/dom/interfaces/base/nsIStructuredCloneContainer.idl
index 23f11c714..8b9c483fd 100644
--- a/dom/interfaces/base/nsIStructuredCloneContainer.idl
+++ b/dom/interfaces/base/nsIStructuredCloneContainer.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
- * vim: set ts=8 sw=2 et tw=80:
*
* 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
diff --git a/dom/interfaces/canvas/moz.build b/dom/interfaces/canvas/moz.build
index 26f24c75d..ac68f1364 100644
--- a/dom/interfaces/canvas/moz.build
+++ b/dom/interfaces/canvas/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/core/moz.build b/dom/interfaces/core/moz.build
index 415432a83..d4430d47f 100644
--- a/dom/interfaces/core/moz.build
+++ b/dom/interfaces/core/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/css/moz.build b/dom/interfaces/css/moz.build
index d6457a373..83b50eb5e 100644
--- a/dom/interfaces/css/moz.build
+++ b/dom/interfaces/css/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/css/nsIDOMCSSCounterStyleRule.idl b/dom/interfaces/css/nsIDOMCSSCounterStyleRule.idl
index 0831b2238..d82b4dbc4 100644
--- a/dom/interfaces/css/nsIDOMCSSCounterStyleRule.idl
+++ b/dom/interfaces/css/nsIDOMCSSCounterStyleRule.idl
@@ -1,5 +1,4 @@
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/interfaces/events/moz.build b/dom/interfaces/events/moz.build
index fb1dc6a21..baf2353ef 100644
--- a/dom/interfaces/events/moz.build
+++ b/dom/interfaces/events/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/events/nsIDOMAnimationEvent.idl b/dom/interfaces/events/nsIDOMAnimationEvent.idl
index 2f4e527db..db624bc8f 100644
--- a/dom/interfaces/events/nsIDOMAnimationEvent.idl
+++ b/dom/interfaces/events/nsIDOMAnimationEvent.idl
@@ -1,4 +1,3 @@
-/* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */
/* 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/. */
diff --git a/dom/interfaces/events/nsIDOMCustomEvent.idl b/dom/interfaces/events/nsIDOMCustomEvent.idl
index 878052719..f228a920d 100644
--- a/dom/interfaces/events/nsIDOMCustomEvent.idl
+++ b/dom/interfaces/events/nsIDOMCustomEvent.idl
@@ -1,4 +1,3 @@
-/* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */
/* 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/. */
diff --git a/dom/interfaces/events/nsIDOMEventTarget.idl b/dom/interfaces/events/nsIDOMEventTarget.idl
index a7e3aae5a..9e00c598c 100644
--- a/dom/interfaces/events/nsIDOMEventTarget.idl
+++ b/dom/interfaces/events/nsIDOMEventTarget.idl
@@ -13,6 +13,7 @@
using mozilla::dom::Nullable;
namespace mozilla {
+class EventChainVisitor;
class EventChainPostVisitor;
class EventChainPreVisitor;
class EventListenerManager;
@@ -224,7 +225,19 @@ interface nsIDOMEventTarget : nsISupports
* @note Only EventDispatcher should call this method.
*/
[noscript, nostdcall]
- void PreHandleEvent(in EventChainPreVisitorRef aVisitor);
+ void GetEventTargetParent(in EventChainPreVisitorRef aVisitor);
+
+ /**
+ * Called before the capture phase of the event flow and after event target
+ * chain creation. This is used to handle those stuffs must be executed before
+ * dispatch event to DOM
+ */
+%{C++
+ virtual nsresult PreHandleEvent(mozilla::EventChainVisitor& aVisitor)
+ {
+ return NS_OK;
+ }
+%}
/**
* If EventChainPreVisitor.mWantsWillHandleEvent is set PR_TRUE,
diff --git a/dom/interfaces/events/nsIDOMTransitionEvent.idl b/dom/interfaces/events/nsIDOMTransitionEvent.idl
index 5809d1427..17069198a 100644
--- a/dom/interfaces/events/nsIDOMTransitionEvent.idl
+++ b/dom/interfaces/events/nsIDOMTransitionEvent.idl
@@ -1,4 +1,3 @@
-/* vim: set shiftwidth=2 tabstop=8 autoindent cindent expandtab: */
/* 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/. */
diff --git a/dom/interfaces/events/nsIDOMWheelEvent.idl b/dom/interfaces/events/nsIDOMWheelEvent.idl
index 2416bc070..5447b2e29 100644
--- a/dom/interfaces/events/nsIDOMWheelEvent.idl
+++ b/dom/interfaces/events/nsIDOMWheelEvent.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/interfaces/geolocation/moz.build b/dom/interfaces/geolocation/moz.build
index 37d12600e..4654b3c48 100644
--- a/dom/interfaces/geolocation/moz.build
+++ b/dom/interfaces/geolocation/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/html/moz.build b/dom/interfaces/html/moz.build
index 895a87314..3670c92a4 100644
--- a/dom/interfaces/html/moz.build
+++ b/dom/interfaces/html/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/json/moz.build b/dom/interfaces/json/moz.build
index ab57486a5..b98307afe 100644
--- a/dom/interfaces/json/moz.build
+++ b/dom/interfaces/json/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/notification/moz.build b/dom/interfaces/notification/moz.build
index 9e263b9f7..4c2488cf4 100644
--- a/dom/interfaces/notification/moz.build
+++ b/dom/interfaces/notification/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/offline/moz.build b/dom/interfaces/offline/moz.build
index 1589c31d5..c5e5d03ce 100644
--- a/dom/interfaces/offline/moz.build
+++ b/dom/interfaces/offline/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/permission/moz.build b/dom/interfaces/permission/moz.build
index 8e7942391..4e5ad151e 100644
--- a/dom/interfaces/permission/moz.build
+++ b/dom/interfaces/permission/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/push/moz.build b/dom/interfaces/push/moz.build
index 5c59f3941..9fc156561 100644
--- a/dom/interfaces/push/moz.build
+++ b/dom/interfaces/push/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/range/moz.build b/dom/interfaces/range/moz.build
index 5dc045a0d..78deeaa85 100644
--- a/dom/interfaces/range/moz.build
+++ b/dom/interfaces/range/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/range/nsIDOMRange.idl b/dom/interfaces/range/nsIDOMRange.idl
index 2dc40ac98..7c74ddaf2 100644
--- a/dom/interfaces/range/nsIDOMRange.idl
+++ b/dom/interfaces/range/nsIDOMRange.idl
@@ -16,14 +16,14 @@
interface nsIDOMRange : nsISupports
{
readonly attribute nsIDOMNode startContainer;
- readonly attribute long startOffset;
+ readonly attribute unsigned long startOffset;
readonly attribute nsIDOMNode endContainer;
- readonly attribute long endOffset;
+ readonly attribute unsigned long endOffset;
readonly attribute boolean collapsed;
readonly attribute nsIDOMNode commonAncestorContainer;
- void setStart(in nsIDOMNode refNode, in long offset);
- void setEnd(in nsIDOMNode refNode, in long offset);
+ void setStart(in nsIDOMNode refNode, in unsigned long offset);
+ void setEnd(in nsIDOMNode refNode, in unsigned long offset);
void setStartBefore(in nsIDOMNode refNode);
void setStartAfter(in nsIDOMNode refNode);
void setEndBefore(in nsIDOMNode refNode);
@@ -56,14 +56,14 @@ interface nsIDOMRange : nsISupports
// This returns true if parent+offset equals either
// of the boundary points or is between them.
boolean isPointInRange(in nsIDOMNode parent,
- in long offset);
+ in unsigned long offset);
// comparePoint returns
// -1 if point is before the start boundary point,
// 0 if point is either of the boundary points or between them,
// 1 if point is after the end boundary point.
// Sort of a strcmp for ranges.
- short comparePoint(in nsIDOMNode parent, in long offset);
+ short comparePoint(in nsIDOMNode parent, in unsigned long offset);
/**
* Returns whether the range intersects node.
diff --git a/dom/interfaces/security/moz.build b/dom/interfaces/security/moz.build
index 6796305f7..2765b9869 100644
--- a/dom/interfaces/security/moz.build
+++ b/dom/interfaces/security/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/settings/moz.build b/dom/interfaces/settings/moz.build
index 5360df1c3..9df5f1c92 100644
--- a/dom/interfaces/settings/moz.build
+++ b/dom/interfaces/settings/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/sidebar/moz.build b/dom/interfaces/sidebar/moz.build
index 3df69ac66..7783ffae5 100644
--- a/dom/interfaces/sidebar/moz.build
+++ b/dom/interfaces/sidebar/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/smil/moz.build b/dom/interfaces/smil/moz.build
index 45fe588a7..6967b006d 100644
--- a/dom/interfaces/smil/moz.build
+++ b/dom/interfaces/smil/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/storage/moz.build b/dom/interfaces/storage/moz.build
index 433e25e7a..a62afaa63 100644
--- a/dom/interfaces/storage/moz.build
+++ b/dom/interfaces/storage/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/stylesheets/moz.build b/dom/interfaces/stylesheets/moz.build
index 9037bd24f..15d334011 100644
--- a/dom/interfaces/stylesheets/moz.build
+++ b/dom/interfaces/stylesheets/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/svg/moz.build b/dom/interfaces/svg/moz.build
index b682abb53..d7aeae7c6 100644
--- a/dom/interfaces/svg/moz.build
+++ b/dom/interfaces/svg/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/traversal/moz.build b/dom/interfaces/traversal/moz.build
index ba7b5c9fe..ec5a76bd1 100644
--- a/dom/interfaces/traversal/moz.build
+++ b/dom/interfaces/traversal/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/xbl/moz.build b/dom/interfaces/xbl/moz.build
index a4f3f6ea8..255a11879 100644
--- a/dom/interfaces/xbl/moz.build
+++ b/dom/interfaces/xbl/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/xpath/moz.build b/dom/interfaces/xpath/moz.build
index 06515bd70..376b39c93 100644
--- a/dom/interfaces/xpath/moz.build
+++ b/dom/interfaces/xpath/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/interfaces/xul/moz.build b/dom/interfaces/xul/moz.build
index 50bd1d511..be9a2128a 100644
--- a/dom/interfaces/xul/moz.build
+++ b/dom/interfaces/xul/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/ipc/AppProcessChecker.cpp b/dom/ipc/AppProcessChecker.cpp
index fa91c94ff..3d17b7af0 100644
--- a/dom/ipc/AppProcessChecker.cpp
+++ b/dom/ipc/AppProcessChecker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/AppProcessChecker.h b/dom/ipc/AppProcessChecker.h
index e5e7a90ba..9c1bff128 100644
--- a/dom/ipc/AppProcessChecker.h
+++ b/dom/ipc/AppProcessChecker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/Blob.cpp b/dom/ipc/Blob.cpp
index 95d2e0513..31050956a 100644
--- a/dom/ipc/Blob.cpp
+++ b/dom/ipc/Blob.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/BlobChild.h b/dom/ipc/BlobChild.h
index affa9934a..ed5faba4c 100644
--- a/dom/ipc/BlobChild.h
+++ b/dom/ipc/BlobChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/BlobParent.h b/dom/ipc/BlobParent.h
index 98cfe6d28..3db8c57df 100644
--- a/dom/ipc/BlobParent.h
+++ b/dom/ipc/BlobParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/CPOWManagerGetter.h b/dom/ipc/CPOWManagerGetter.h
index 541bff665..e56465c47 100644
--- a/dom/ipc/CPOWManagerGetter.h
+++ b/dom/ipc/CPOWManagerGetter.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ColorPickerParent.cpp b/dom/ipc/ColorPickerParent.cpp
index 6d6f1dfe5..be32425c0 100644
--- a/dom/ipc/ColorPickerParent.cpp
+++ b/dom/ipc/ColorPickerParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ColorPickerParent.h b/dom/ipc/ColorPickerParent.h
index bfdc82bdb..5ab6c8560 100644
--- a/dom/ipc/ColorPickerParent.h
+++ b/dom/ipc/ColorPickerParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentBridgeChild.cpp b/dom/ipc/ContentBridgeChild.cpp
index ae07528a2..d79ca51d0 100644
--- a/dom/ipc/ContentBridgeChild.cpp
+++ b/dom/ipc/ContentBridgeChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentBridgeChild.h b/dom/ipc/ContentBridgeChild.h
index 179328929..3b632b806 100644
--- a/dom/ipc/ContentBridgeChild.h
+++ b/dom/ipc/ContentBridgeChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentBridgeParent.cpp b/dom/ipc/ContentBridgeParent.cpp
index eee0e1c10..973da94ce 100644
--- a/dom/ipc/ContentBridgeParent.cpp
+++ b/dom/ipc/ContentBridgeParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentBridgeParent.h b/dom/ipc/ContentBridgeParent.h
index 2f7c951b5..f79ea453f 100644
--- a/dom/ipc/ContentBridgeParent.h
+++ b/dom/ipc/ContentBridgeParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp
index 6b914372b..c56a21c1a 100644
--- a/dom/ipc/ContentChild.cpp
+++ b/dom/ipc/ContentChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -67,6 +66,7 @@
#include "mozInlineSpellChecker.h"
#include "nsDocShell.h"
#include "nsIConsoleListener.h"
+#include "nsIContentViewer.h"
#include "nsICycleCollectorListener.h"
#include "nsIIdlePeriod.h"
#include "nsIDragService.h"
diff --git a/dom/ipc/ContentChild.h b/dom/ipc/ContentChild.h
index 2b36560e2..0ce61bd6c 100644
--- a/dom/ipc/ContentChild.h
+++ b/dom/ipc/ContentChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp
index deea691f3..089bde8bb 100644
--- a/dom/ipc/ContentParent.cpp
+++ b/dom/ipc/ContentParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentParent.h b/dom/ipc/ContentParent.h
index f6f3e64db..561bcf9f6 100644
--- a/dom/ipc/ContentParent.h
+++ b/dom/ipc/ContentParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentProcess.cpp b/dom/ipc/ContentProcess.cpp
index 986617f55..1a850c376 100644
--- a/dom/ipc/ContentProcess.cpp
+++ b/dom/ipc/ContentProcess.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentProcess.h b/dom/ipc/ContentProcess.h
index 3950368bd..637fe186f 100644
--- a/dom/ipc/ContentProcess.h
+++ b/dom/ipc/ContentProcess.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentProcessManager.cpp b/dom/ipc/ContentProcessManager.cpp
index 02fdcba34..9dbb6a7a2 100644
--- a/dom/ipc/ContentProcessManager.cpp
+++ b/dom/ipc/ContentProcessManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ContentProcessManager.h b/dom/ipc/ContentProcessManager.h
index cc6d8bd8b..8e3bb6d3f 100644
--- a/dom/ipc/ContentProcessManager.h
+++ b/dom/ipc/ContentProcessManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/DOMTypes.ipdlh b/dom/ipc/DOMTypes.ipdlh
index e02760ada..2448bc437 100644
--- a/dom/ipc/DOMTypes.ipdlh
+++ b/dom/ipc/DOMTypes.ipdlh
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/ipc/FilePickerParent.cpp b/dom/ipc/FilePickerParent.cpp
index 0d4a17978..3e8301f24 100644
--- a/dom/ipc/FilePickerParent.cpp
+++ b/dom/ipc/FilePickerParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/FilePickerParent.h b/dom/ipc/FilePickerParent.h
index 599d118ff..332007a71 100644
--- a/dom/ipc/FilePickerParent.h
+++ b/dom/ipc/FilePickerParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/IdType.h b/dom/ipc/IdType.h
index b683178eb..5b9e8d035 100644
--- a/dom/ipc/IdType.h
+++ b/dom/ipc/IdType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/PBrowser.ipdl b/dom/ipc/PBrowser.ipdl
index f09e484ee..0377e23ff 100644
--- a/dom/ipc/PBrowser.ipdl
+++ b/dom/ipc/PBrowser.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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
diff --git a/dom/ipc/PBrowserOrId.ipdlh b/dom/ipc/PBrowserOrId.ipdlh
index 8673f188a..61b79cfeb 100644
--- a/dom/ipc/PBrowserOrId.ipdlh
+++ b/dom/ipc/PBrowserOrId.ipdlh
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et tw=80 ft=c: */
/* 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/. */
diff --git a/dom/ipc/PColorPicker.ipdl b/dom/ipc/PColorPicker.ipdl
index 0e54ad598..a8a74e4f4 100644
--- a/dom/ipc/PColorPicker.ipdl
+++ b/dom/ipc/PColorPicker.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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
diff --git a/dom/ipc/PContent.ipdl b/dom/ipc/PContent.ipdl
index 5b15433d5..3ac02f4b7 100644
--- a/dom/ipc/PContent.ipdl
+++ b/dom/ipc/PContent.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/ipc/PContentBridge.ipdl b/dom/ipc/PContentBridge.ipdl
index 72f839178..6be88653d 100644
--- a/dom/ipc/PContentBridge.ipdl
+++ b/dom/ipc/PContentBridge.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/PFilePicker.ipdl b/dom/ipc/PFilePicker.ipdl
index 234a055c6..27af0437d 100644
--- a/dom/ipc/PFilePicker.ipdl
+++ b/dom/ipc/PFilePicker.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/ipc/PTabContext.ipdlh b/dom/ipc/PTabContext.ipdlh
index 507ef59d9..72cd90e2a 100644
--- a/dom/ipc/PTabContext.ipdlh
+++ b/dom/ipc/PTabContext.ipdlh
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/ipc/PermissionMessageUtils.cpp b/dom/ipc/PermissionMessageUtils.cpp
index 445124b0a..9c2c85e02 100644
--- a/dom/ipc/PermissionMessageUtils.cpp
+++ b/dom/ipc/PermissionMessageUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/PermissionMessageUtils.h b/dom/ipc/PermissionMessageUtils.h
index 3434c83b9..080532b90 100644
--- a/dom/ipc/PermissionMessageUtils.h
+++ b/dom/ipc/PermissionMessageUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/PreallocatedProcessManager.cpp b/dom/ipc/PreallocatedProcessManager.cpp
index 58ff84f21..c02e0eccf 100644
--- a/dom/ipc/PreallocatedProcessManager.cpp
+++ b/dom/ipc/PreallocatedProcessManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/PreallocatedProcessManager.h b/dom/ipc/PreallocatedProcessManager.h
index 94acd31fd..594561627 100644
--- a/dom/ipc/PreallocatedProcessManager.h
+++ b/dom/ipc/PreallocatedProcessManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ProcessHangMonitor.cpp b/dom/ipc/ProcessHangMonitor.cpp
index d46a1f5d5..de82dad97 100644
--- a/dom/ipc/ProcessHangMonitor.cpp
+++ b/dom/ipc/ProcessHangMonitor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ProcessHangMonitor.h b/dom/ipc/ProcessHangMonitor.h
index 5ab81c87e..165f125d0 100644
--- a/dom/ipc/ProcessHangMonitor.h
+++ b/dom/ipc/ProcessHangMonitor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ProcessHangMonitorIPC.h b/dom/ipc/ProcessHangMonitorIPC.h
index dbb9f9b76..c637e4c9e 100644
--- a/dom/ipc/ProcessHangMonitorIPC.h
+++ b/dom/ipc/ProcessHangMonitorIPC.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ProcessPriorityManager.cpp b/dom/ipc/ProcessPriorityManager.cpp
index 80839796d..51c42f7a5 100644
--- a/dom/ipc/ProcessPriorityManager.cpp
+++ b/dom/ipc/ProcessPriorityManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ProcessPriorityManager.h b/dom/ipc/ProcessPriorityManager.h
index 5e02c9c32..c86e9ad70 100644
--- a/dom/ipc/ProcessPriorityManager.h
+++ b/dom/ipc/ProcessPriorityManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ScreenManagerParent.cpp b/dom/ipc/ScreenManagerParent.cpp
index ddc2eb4a2..f1f7423a0 100644
--- a/dom/ipc/ScreenManagerParent.cpp
+++ b/dom/ipc/ScreenManagerParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ScreenManagerParent.h b/dom/ipc/ScreenManagerParent.h
index cd07c12b7..f330a73e1 100644
--- a/dom/ipc/ScreenManagerParent.h
+++ b/dom/ipc/ScreenManagerParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/ServiceWorkerConfiguration.ipdlh b/dom/ipc/ServiceWorkerConfiguration.ipdlh
index 16e0d46ea..738644c9b 100644
--- a/dom/ipc/ServiceWorkerConfiguration.ipdlh
+++ b/dom/ipc/ServiceWorkerConfiguration.ipdlh
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/ipc/StructuredCloneData.cpp b/dom/ipc/StructuredCloneData.cpp
index 6b3ee0cd1..1d1ebc16f 100644
--- a/dom/ipc/StructuredCloneData.cpp
+++ b/dom/ipc/StructuredCloneData.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/StructuredCloneData.h b/dom/ipc/StructuredCloneData.h
index 64cfd1935..9bf29337d 100644
--- a/dom/ipc/StructuredCloneData.h
+++ b/dom/ipc/StructuredCloneData.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/TabChild.cpp b/dom/ipc/TabChild.cpp
index aac95ae02..182aa628b 100644
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/TabChild.h b/dom/ipc/TabChild.h
index d9988a596..845387e92 100644
--- a/dom/ipc/TabChild.h
+++ b/dom/ipc/TabChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -135,7 +134,7 @@ public:
}
nsresult
- PreHandleEvent(EventChainPreVisitor& aVisitor) override
+ GetEventTargetParent(EventChainPreVisitor& aVisitor) override
{
aVisitor.mForceContentDispatch = true;
return NS_OK;
diff --git a/dom/ipc/TabContext.cpp b/dom/ipc/TabContext.cpp
index 362bce3a4..66a279052 100644
--- a/dom/ipc/TabContext.cpp
+++ b/dom/ipc/TabContext.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/TabContext.h b/dom/ipc/TabContext.h
index 48974cad1..1507a0dc8 100644
--- a/dom/ipc/TabContext.h
+++ b/dom/ipc/TabContext.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/TabMessageUtils.cpp b/dom/ipc/TabMessageUtils.cpp
index 5085a7e95..f7ebbb0c0 100644
--- a/dom/ipc/TabMessageUtils.cpp
+++ b/dom/ipc/TabMessageUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/TabMessageUtils.h b/dom/ipc/TabMessageUtils.h
index 2933173d7..ebab0782e 100644
--- a/dom/ipc/TabMessageUtils.h
+++ b/dom/ipc/TabMessageUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/TabParent.cpp b/dom/ipc/TabParent.cpp
index 0f190708f..a3d2556ae 100644
--- a/dom/ipc/TabParent.cpp
+++ b/dom/ipc/TabParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/TabParent.h b/dom/ipc/TabParent.h
index 3624ce320..c7cb30268 100644
--- a/dom/ipc/TabParent.h
+++ b/dom/ipc/TabParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/moz.build b/dom/ipc/moz.build
index 455d0eff7..e00e24744 100644
--- a/dom/ipc/moz.build
+++ b/dom/ipc/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/ipc/nsIContentChild.cpp b/dom/ipc/nsIContentChild.cpp
index c5f748fe1..f604dc1a5 100644
--- a/dom/ipc/nsIContentChild.cpp
+++ b/dom/ipc/nsIContentChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/nsIContentChild.h b/dom/ipc/nsIContentChild.h
index 211144e9a..59dffe6b6 100644
--- a/dom/ipc/nsIContentChild.h
+++ b/dom/ipc/nsIContentChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/nsIContentParent.cpp b/dom/ipc/nsIContentParent.cpp
index 77bfae4c7..2ff4fcdfc 100644
--- a/dom/ipc/nsIContentParent.cpp
+++ b/dom/ipc/nsIContentParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/nsIContentParent.h b/dom/ipc/nsIContentParent.h
index 7ba015264..6fae9060c 100644
--- a/dom/ipc/nsIContentParent.h
+++ b/dom/ipc/nsIContentParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/ipc/nsIRemoteBlob.h b/dom/ipc/nsIRemoteBlob.h
index 55ff0352a..f87077c67 100644
--- a/dom/ipc/nsIRemoteBlob.h
+++ b/dom/ipc/nsIRemoteBlob.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/json/moz.build b/dom/json/moz.build
index 28711b19a..d69f6af8e 100644
--- a/dom/json/moz.build
+++ b/dom/json/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/json/nsJSON.cpp b/dom/json/nsJSON.cpp
index 36766e8fe..09881c909 100644
--- a/dom/json/nsJSON.cpp
+++ b/dom/json/nsJSON.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/json/nsJSON.h b/dom/json/nsJSON.h
index fd9fcd774..a6fb3fc31 100644
--- a/dom/json/nsJSON.h
+++ b/dom/json/nsJSON.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/jsurl/moz.build b/dom/jsurl/moz.build
index c0c82a141..f5a6337d8 100644
--- a/dom/jsurl/moz.build
+++ b/dom/jsurl/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/jsurl/nsJSProtocolHandler.cpp b/dom/jsurl/nsJSProtocolHandler.cpp
index 90171db10..7602e58b0 100644
--- a/dom/jsurl/nsJSProtocolHandler.cpp
+++ b/dom/jsurl/nsJSProtocolHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=4 sw=4 et tw=78: */
/* 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/. */
@@ -46,6 +45,7 @@
#include "nsIWritablePropertyBag2.h"
#include "nsIContentSecurityPolicy.h"
#include "nsSandboxFlags.h"
+#include "mozilla/CycleCollectedJSContext.h"
#include "mozilla/dom/ScriptSettings.h"
#include "nsILoadInfo.h"
#include "nsContentSecurityManager.h"
@@ -241,7 +241,7 @@ nsresult nsJSThunk::EvaluateScript(nsIChannel *aChannel,
// New script entry point required, due to the "Create a script" step of
// http://www.whatwg.org/specs/web-apps/current-work/#javascript-protocol
- nsAutoMicroTask mt;
+ mozilla::nsAutoMicroTask mt;
AutoEntryScript aes(innerGlobal, "javascript: URI", true);
JSContext* cx = aes.cx();
JS::Rooted<JSObject*> globalJSObject(cx, innerGlobal->GetGlobalJSObject());
diff --git a/dom/locales/moz.build b/dom/locales/moz.build
index eb4454d28..635fa39c9 100644
--- a/dom/locales/moz.build
+++ b/dom/locales/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/manifest/moz.build b/dom/manifest/moz.build
index 338794a19..68f538c56 100644
--- a/dom/manifest/moz.build
+++ b/dom/manifest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/mathml/moz.build b/dom/mathml/moz.build
index d483008aa..6a3fb14bc 100644
--- a/dom/mathml/moz.build
+++ b/dom/mathml/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/mathml/nsMathMLElement.cpp b/dom/mathml/nsMathMLElement.cpp
index 2be931682..d28182ae3 100644
--- a/dom/mathml/nsMathMLElement.cpp
+++ b/dom/mathml/nsMathMLElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -919,12 +918,12 @@ nsMathMLElement::MapMathMLAttributesInto(const nsMappedAttributes* aAttributes,
}
nsresult
-nsMathMLElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsMathMLElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
- nsresult rv = Element::PreHandleEvent(aVisitor);
+ nsresult rv = Element::GetEventTargetParent(aVisitor);
NS_ENSURE_SUCCESS(rv, rv);
- return PreHandleEventForLinks(aVisitor);
+ return GetEventTargetParentForLinks(aVisitor);
}
nsresult
@@ -1085,50 +1084,27 @@ nsMathMLElement::GetHrefURI() const
}
nsresult
-nsMathMLElement::SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify)
+nsMathMLElement::AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
- nsresult rv = nsMathMLElementBase::SetAttr(aNameSpaceID, aName, aPrefix,
- aValue, aNotify);
-
- // The ordering of the parent class's SetAttr call and Link::ResetLinkState
- // is important here! The attribute is not set until SetAttr returns, and
- // we will need the updated attribute value because notifying the document
+ // It is important that this be done after the attribute is set/unset.
+ // We will need the updated attribute value because notifying the document
// that content states have changed will call IntrinsicState, which will try
// to get updated information about the visitedness from Link.
if (aName == nsGkAtoms::href &&
(aNameSpaceID == kNameSpaceID_None ||
aNameSpaceID == kNameSpaceID_XLink)) {
- if (aNameSpaceID == kNameSpaceID_XLink) {
+ if (aValue && aNameSpaceID == kNameSpaceID_XLink) {
WarnDeprecated(u"xlink:href", u"href", OwnerDoc());
}
- Link::ResetLinkState(!!aNotify, true);
- }
-
- return rv;
-}
-
-nsresult
-nsMathMLElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttr,
- bool aNotify)
-{
- nsresult rv = nsMathMLElementBase::UnsetAttr(aNameSpaceID, aAttr, aNotify);
-
- // The ordering of the parent class's UnsetAttr call and Link::ResetLinkState
- // is important here! The attribute is not unset until UnsetAttr returns, and
- // we will need the updated attribute value because notifying the document
- // that content states have changed will call IntrinsicState, which will try
- // to get updated information about the visitedness from Link.
- if (aAttr == nsGkAtoms::href &&
- (aNameSpaceID == kNameSpaceID_None ||
- aNameSpaceID == kNameSpaceID_XLink)) {
- // Note: just because we removed a single href attr doesn't mean there's no href,
- // since there are 2 possible namespaces.
- Link::ResetLinkState(!!aNotify, Link::ElementHasHref());
+ // Note: When unsetting href, there may still be another href since there
+ // are 2 possible namespaces.
+ Link::ResetLinkState(aNotify, aValue || Link::ElementHasHref());
}
- return rv;
+ return nsMathMLElementBase::AfterSetAttr(aNameSpaceID, aName, aValue,
+ aOldValue, aNotify);
}
JSObject*
diff --git a/dom/mathml/nsMathMLElement.h b/dom/mathml/nsMathMLElement.h
index 47ed8b165..d3a9f5556 100644
--- a/dom/mathml/nsMathMLElement.h
+++ b/dom/mathml/nsMathMLElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -74,7 +73,7 @@ public:
static void MapMathMLAttributesInto(const nsMappedAttributes* aAttributes,
nsRuleData* aRuleData);
- virtual nsresult PreHandleEvent(
+ virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
mozilla::EventChainPostVisitor& aVisitor) override;
@@ -93,16 +92,6 @@ public:
virtual bool IsLink(nsIURI** aURI) const override;
virtual void GetLinkTarget(nsAString& aTarget) override;
virtual already_AddRefed<nsIURI> GetHrefURI() const override;
- nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- const nsAString& aValue, bool aNotify)
- {
- return SetAttr(aNameSpaceID, aName, nullptr, aValue, aNotify);
- }
- virtual nsresult SetAttr(int32_t aNameSpaceID, nsIAtom* aName,
- nsIAtom* aPrefix, const nsAString& aValue,
- bool aNotify) override;
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
virtual nsIDOMNode* AsDOMNode() override { return this; }
@@ -111,6 +100,11 @@ protected:
virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
+ virtual nsresult AfterSetAttr(int32_t aNameSpaceID, nsIAtom* aName,
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
+
private:
bool mIncrementScriptLevel;
};
diff --git a/dom/mathml/nsMathMLElementFactory.cpp b/dom/mathml/nsMathMLElementFactory.cpp
index 9f45afec8..f31894b3d 100644
--- a/dom/mathml/nsMathMLElementFactory.cpp
+++ b/dom/mathml/nsMathMLElementFactory.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/ADTSDecoder.cpp b/dom/media/ADTSDecoder.cpp
index 913fbf742..418b4b419 100644
--- a/dom/media/ADTSDecoder.cpp
+++ b/dom/media/ADTSDecoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/ADTSDecoder.h b/dom/media/ADTSDecoder.h
index 1c7bece12..8dd5b4095 100644
--- a/dom/media/ADTSDecoder.h
+++ b/dom/media/ADTSDecoder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/ADTSDemuxer.cpp b/dom/media/ADTSDemuxer.cpp
index 82075b65b..89148ce24 100644
--- a/dom/media/ADTSDemuxer.cpp
+++ b/dom/media/ADTSDemuxer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/ADTSDemuxer.h b/dom/media/ADTSDemuxer.h
index feb65d01b..e1daa29e6 100644
--- a/dom/media/ADTSDemuxer.h
+++ b/dom/media/ADTSDemuxer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/AccurateSeekTask.h b/dom/media/AccurateSeekTask.h
index e2e6771f1..24a3bba2a 100644
--- a/dom/media/AccurateSeekTask.h
+++ b/dom/media/AccurateSeekTask.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/AudioCompactor.cpp b/dom/media/AudioCompactor.cpp
index 6ffbc966f..64bd50bf8 100644
--- a/dom/media/AudioCompactor.cpp
+++ b/dom/media/AudioCompactor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/AudioCompactor.h b/dom/media/AudioCompactor.h
index 554f5b5f5..5f698a379 100644
--- a/dom/media/AudioCompactor.h
+++ b/dom/media/AudioCompactor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/AudioConverter.cpp b/dom/media/AudioConverter.cpp
index 002e79108..ab9b11543 100644
--- a/dom/media/AudioConverter.cpp
+++ b/dom/media/AudioConverter.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/AudioConverter.h b/dom/media/AudioConverter.h
index 2806813df..82817bf07 100644
--- a/dom/media/AudioConverter.h
+++ b/dom/media/AudioConverter.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/FrameStatistics.h b/dom/media/FrameStatistics.h
index e7d382629..6397cc193 100644
--- a/dom/media/FrameStatistics.h
+++ b/dom/media/FrameStatistics.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/Intervals.h b/dom/media/Intervals.h
index 4181d8954..84d0e4e76 100644
--- a/dom/media/Intervals.h
+++ b/dom/media/Intervals.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaContentType.cpp b/dom/media/MediaContentType.cpp
index 840ab9eb8..ded584582 100644
--- a/dom/media/MediaContentType.cpp
+++ b/dom/media/MediaContentType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaData.cpp b/dom/media/MediaData.cpp
index 94f5f32a0..fb3eff7b5 100644
--- a/dom/media/MediaData.cpp
+++ b/dom/media/MediaData.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaData.h b/dom/media/MediaData.h
index 905b4c1d9..bec9c6076 100644
--- a/dom/media/MediaData.h
+++ b/dom/media/MediaData.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaDataDemuxer.h b/dom/media/MediaDataDemuxer.h
index cf2b265d5..df2af4747 100644
--- a/dom/media/MediaDataDemuxer.h
+++ b/dom/media/MediaDataDemuxer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaDecoder.cpp b/dom/media/MediaDecoder.cpp
index b1f2f95d7..10b97f7e6 100644
--- a/dom/media/MediaDecoder.cpp
+++ b/dom/media/MediaDecoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaDecoderReader.cpp b/dom/media/MediaDecoderReader.cpp
index 046f81b2e..605041b64 100644
--- a/dom/media/MediaDecoderReader.cpp
+++ b/dom/media/MediaDecoderReader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaDecoderReader.h b/dom/media/MediaDecoderReader.h
index a31687be8..dd406ed90 100644
--- a/dom/media/MediaDecoderReader.h
+++ b/dom/media/MediaDecoderReader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaDecoderReaderWrapper.cpp b/dom/media/MediaDecoderReaderWrapper.cpp
index 455e86f43..7d7f84aff 100644
--- a/dom/media/MediaDecoderReaderWrapper.cpp
+++ b/dom/media/MediaDecoderReaderWrapper.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaDecoderReaderWrapper.h b/dom/media/MediaDecoderReaderWrapper.h
index 1a8d3a68c..a0f845538 100644
--- a/dom/media/MediaDecoderReaderWrapper.h
+++ b/dom/media/MediaDecoderReaderWrapper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaInfo.cpp b/dom/media/MediaInfo.cpp
index 3d9e9dca2..568183e68 100644
--- a/dom/media/MediaInfo.cpp
+++ b/dom/media/MediaInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaInfo.h b/dom/media/MediaInfo.h
index b263b9099..d54cf99b2 100644
--- a/dom/media/MediaInfo.h
+++ b/dom/media/MediaInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaManager.cpp b/dom/media/MediaManager.cpp
index 979cb64c7..6b16d698d 100644
--- a/dom/media/MediaManager.cpp
+++ b/dom/media/MediaManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaResourceCallback.h b/dom/media/MediaResourceCallback.h
index 9c126f400..3d0cff2f0 100644
--- a/dom/media/MediaResourceCallback.h
+++ b/dom/media/MediaResourceCallback.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaStatistics.h b/dom/media/MediaStatistics.h
index c67c7e2bd..59ca67eb3 100644
--- a/dom/media/MediaStatistics.h
+++ b/dom/media/MediaStatistics.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/MediaStreamListener.h b/dom/media/MediaStreamListener.h
index eefd4adac..637b2f6ba 100644
--- a/dom/media/MediaStreamListener.h
+++ b/dom/media/MediaStreamListener.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/NextFrameSeekTask.h b/dom/media/NextFrameSeekTask.h
index debd58c66..e564d64c2 100644
--- a/dom/media/NextFrameSeekTask.h
+++ b/dom/media/NextFrameSeekTask.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/PrincipalChangeObserver.h b/dom/media/PrincipalChangeObserver.h
index 2597813c5..96dfcf7e1 100644
--- a/dom/media/PrincipalChangeObserver.h
+++ b/dom/media/PrincipalChangeObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/QueueObject.cpp b/dom/media/QueueObject.cpp
index 53dffad07..e9fa7045e 100644
--- a/dom/media/QueueObject.cpp
+++ b/dom/media/QueueObject.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/SeekTarget.h b/dom/media/SeekTarget.h
index cb5cfd630..ac35ca501 100644
--- a/dom/media/SeekTarget.h
+++ b/dom/media/SeekTarget.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/SeekTask.h b/dom/media/SeekTask.h
index e93e4bae3..708b1f23d 100644
--- a/dom/media/SeekTask.h
+++ b/dom/media/SeekTask.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/SelfRef.h b/dom/media/SelfRef.h
index ca9d0b749..ceeb2ae34 100644
--- a/dom/media/SelfRef.h
+++ b/dom/media/SelfRef.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/TimeUnits.h b/dom/media/TimeUnits.h
index d815b9d40..148155eda 100644
--- a/dom/media/TimeUnits.h
+++ b/dom/media/TimeUnits.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/VideoPlaybackQuality.cpp b/dom/media/VideoPlaybackQuality.cpp
index 01fecfcb9..99717b31a 100644
--- a/dom/media/VideoPlaybackQuality.cpp
+++ b/dom/media/VideoPlaybackQuality.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/VideoPlaybackQuality.h b/dom/media/VideoPlaybackQuality.h
index 6054240c6..c22313a3e 100644
--- a/dom/media/VideoPlaybackQuality.h
+++ b/dom/media/VideoPlaybackQuality.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/XiphExtradata.cpp b/dom/media/XiphExtradata.cpp
index 6a5765a9e..e92db1ef4 100644
--- a/dom/media/XiphExtradata.cpp
+++ b/dom/media/XiphExtradata.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/XiphExtradata.h b/dom/media/XiphExtradata.h
index 5a9cbba78..f7bf2e2c6 100644
--- a/dom/media/XiphExtradata.h
+++ b/dom/media/XiphExtradata.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/bridge/moz.build b/dom/media/bridge/moz.build
index 6d396c615..091e4d6ca 100644
--- a/dom/media/bridge/moz.build
+++ b/dom/media/bridge/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/eme/CDMCaps.cpp b/dom/media/eme/CDMCaps.cpp
index 20ff63bad..a30fb59ac 100644
--- a/dom/media/eme/CDMCaps.cpp
+++ b/dom/media/eme/CDMCaps.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/CDMCaps.h b/dom/media/eme/CDMCaps.h
index 7749bdc67..cb4b5e291 100644
--- a/dom/media/eme/CDMCaps.h
+++ b/dom/media/eme/CDMCaps.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/CDMProxy.h b/dom/media/eme/CDMProxy.h
index f3f1add43..a9e783f50 100644
--- a/dom/media/eme/CDMProxy.h
+++ b/dom/media/eme/CDMProxy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/DetailedPromise.cpp b/dom/media/eme/DetailedPromise.cpp
index d443e3336..50642bacd 100644
--- a/dom/media/eme/DetailedPromise.cpp
+++ b/dom/media/eme/DetailedPromise.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/DetailedPromise.h b/dom/media/eme/DetailedPromise.h
index 83e40c022..d75f09862 100644
--- a/dom/media/eme/DetailedPromise.h
+++ b/dom/media/eme/DetailedPromise.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/EMEUtils.cpp b/dom/media/eme/EMEUtils.cpp
index 93e7834e3..fd51b0ae2 100644
--- a/dom/media/eme/EMEUtils.cpp
+++ b/dom/media/eme/EMEUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/EMEUtils.h b/dom/media/eme/EMEUtils.h
index b8f565329..b16f5b4ac 100644
--- a/dom/media/eme/EMEUtils.h
+++ b/dom/media/eme/EMEUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaEncryptedEvent.cpp b/dom/media/eme/MediaEncryptedEvent.cpp
index fe1c8a3bc..a9c83291e 100644
--- a/dom/media/eme/MediaEncryptedEvent.cpp
+++ b/dom/media/eme/MediaEncryptedEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaEncryptedEvent.h b/dom/media/eme/MediaEncryptedEvent.h
index 806fccad6..c2ac56061 100644
--- a/dom/media/eme/MediaEncryptedEvent.h
+++ b/dom/media/eme/MediaEncryptedEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaKeyMessageEvent.cpp b/dom/media/eme/MediaKeyMessageEvent.cpp
index 289d0c16e..ee13f8d26 100644
--- a/dom/media/eme/MediaKeyMessageEvent.cpp
+++ b/dom/media/eme/MediaKeyMessageEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaKeyMessageEvent.h b/dom/media/eme/MediaKeyMessageEvent.h
index b6cc86dfa..2ec50f4f0 100644
--- a/dom/media/eme/MediaKeyMessageEvent.h
+++ b/dom/media/eme/MediaKeyMessageEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaKeySession.cpp b/dom/media/eme/MediaKeySession.cpp
index 9c002b5ba..b5f3fe498 100644
--- a/dom/media/eme/MediaKeySession.cpp
+++ b/dom/media/eme/MediaKeySession.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaKeySession.h b/dom/media/eme/MediaKeySession.h
index 40481df99..6b7137046 100644
--- a/dom/media/eme/MediaKeySession.h
+++ b/dom/media/eme/MediaKeySession.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaKeyStatusMap.cpp b/dom/media/eme/MediaKeyStatusMap.cpp
index 5af6ff535..677fd0db2 100644
--- a/dom/media/eme/MediaKeyStatusMap.cpp
+++ b/dom/media/eme/MediaKeyStatusMap.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaKeyStatusMap.h b/dom/media/eme/MediaKeyStatusMap.h
index 396ae500e..8bfbd4d07 100644
--- a/dom/media/eme/MediaKeyStatusMap.h
+++ b/dom/media/eme/MediaKeyStatusMap.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaKeys.cpp b/dom/media/eme/MediaKeys.cpp
index fea548698..a1d22fdd5 100644
--- a/dom/media/eme/MediaKeys.cpp
+++ b/dom/media/eme/MediaKeys.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/MediaKeys.h b/dom/media/eme/MediaKeys.h
index a3dbf37df..491963934 100644
--- a/dom/media/eme/MediaKeys.h
+++ b/dom/media/eme/MediaKeys.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp b/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp
index ee57afae9..300093b84 100644
--- a/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp
+++ b/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h b/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h
index 29f9c8192..c7a0810ee 100644
--- a/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h
+++ b/dom/media/eme/mediadrm/MediaDrmCDMCallbackProxy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp b/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
index a57d764e7..f64d0afdb 100644
--- a/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
+++ b/dom/media/eme/mediadrm/MediaDrmCDMProxy.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/mediadrm/MediaDrmCDMProxy.h b/dom/media/eme/mediadrm/MediaDrmCDMProxy.h
index c7cb3000f..a25af5dbf 100644
--- a/dom/media/eme/mediadrm/MediaDrmCDMProxy.h
+++ b/dom/media/eme/mediadrm/MediaDrmCDMProxy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/mediadrm/MediaDrmProxySupport.cpp b/dom/media/eme/mediadrm/MediaDrmProxySupport.cpp
index 192769470..83f0529d2 100644
--- a/dom/media/eme/mediadrm/MediaDrmProxySupport.cpp
+++ b/dom/media/eme/mediadrm/MediaDrmProxySupport.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/mediadrm/MediaDrmProxySupport.h b/dom/media/eme/mediadrm/MediaDrmProxySupport.h
index e43b71bc1..b119633f5 100644
--- a/dom/media/eme/mediadrm/MediaDrmProxySupport.h
+++ b/dom/media/eme/mediadrm/MediaDrmProxySupport.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/eme/mediadrm/moz.build b/dom/media/eme/mediadrm/moz.build
index 83479d670..e425ff5bb 100644
--- a/dom/media/eme/mediadrm/moz.build
+++ b/dom/media/eme/mediadrm/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/eme/moz.build b/dom/media/eme/moz.build
index b55ae3df5..495665dd7 100644
--- a/dom/media/eme/moz.build
+++ b/dom/media/eme/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/encoder/moz.build b/dom/media/encoder/moz.build
index 925c36f90..cabe1624c 100644
--- a/dom/media/encoder/moz.build
+++ b/dom/media/encoder/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/flac/FlacDecoder.cpp b/dom/media/flac/FlacDecoder.cpp
index 3109713db..727615be3 100644
--- a/dom/media/flac/FlacDecoder.cpp
+++ b/dom/media/flac/FlacDecoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/flac/FlacDecoder.h b/dom/media/flac/FlacDecoder.h
index 304ee62f8..4c6bc71bd 100644
--- a/dom/media/flac/FlacDecoder.h
+++ b/dom/media/flac/FlacDecoder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/flac/FlacDemuxer.cpp b/dom/media/flac/FlacDemuxer.cpp
index 6df09cc25..e5914679f 100644
--- a/dom/media/flac/FlacDemuxer.cpp
+++ b/dom/media/flac/FlacDemuxer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/flac/FlacDemuxer.h b/dom/media/flac/FlacDemuxer.h
index 248ae861f..561c30615 100644
--- a/dom/media/flac/FlacDemuxer.h
+++ b/dom/media/flac/FlacDemuxer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/flac/FlacFrameParser.cpp b/dom/media/flac/FlacFrameParser.cpp
index c31161cbc..711d25235 100644
--- a/dom/media/flac/FlacFrameParser.cpp
+++ b/dom/media/flac/FlacFrameParser.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/flac/FlacFrameParser.h b/dom/media/flac/FlacFrameParser.h
index aa1a6e15b..e0fcd4c9e 100644
--- a/dom/media/flac/FlacFrameParser.h
+++ b/dom/media/flac/FlacFrameParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/flac/moz.build b/dom/media/flac/moz.build
index 86427e0dd..21054fde8 100644
--- a/dom/media/flac/moz.build
+++ b/dom/media/flac/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/fmp4/moz.build b/dom/media/fmp4/moz.build
index 535a99253..375c6effe 100644
--- a/dom/media/fmp4/moz.build
+++ b/dom/media/fmp4/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/gmp-plugin-openh264/moz.build b/dom/media/gmp-plugin-openh264/moz.build
index 5ae13a7e6..d47a1d197 100644
--- a/dom/media/gmp-plugin-openh264/moz.build
+++ b/dom/media/gmp-plugin-openh264/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/gmp-plugin/gmp-test-output-protection.h b/dom/media/gmp-plugin/gmp-test-output-protection.h
index 57855ca71..93adf299c 100644
--- a/dom/media/gmp-plugin/gmp-test-output-protection.h
+++ b/dom/media/gmp-plugin/gmp-test-output-protection.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gmp-plugin/moz.build b/dom/media/gmp-plugin/moz.build
index 432d842fc..39061d0c9 100644
--- a/dom/media/gmp-plugin/moz.build
+++ b/dom/media/gmp-plugin/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/gmp/GMPCDMCallbackProxy.cpp b/dom/media/gmp/GMPCDMCallbackProxy.cpp
index 0cbc89fff..a0b490849 100644
--- a/dom/media/gmp/GMPCDMCallbackProxy.cpp
+++ b/dom/media/gmp/GMPCDMCallbackProxy.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gmp/GMPCDMCallbackProxy.h b/dom/media/gmp/GMPCDMCallbackProxy.h
index 3f396f597..d2cc80682 100644
--- a/dom/media/gmp/GMPCDMCallbackProxy.h
+++ b/dom/media/gmp/GMPCDMCallbackProxy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gmp/GMPCDMProxy.cpp b/dom/media/gmp/GMPCDMProxy.cpp
index 58c5596ee..0f1958632 100644
--- a/dom/media/gmp/GMPCDMProxy.cpp
+++ b/dom/media/gmp/GMPCDMProxy.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gmp/GMPCDMProxy.h b/dom/media/gmp/GMPCDMProxy.h
index 84b59d9e4..a7fae235b 100644
--- a/dom/media/gmp/GMPCDMProxy.h
+++ b/dom/media/gmp/GMPCDMProxy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gmp/GMPUtils.cpp b/dom/media/gmp/GMPUtils.cpp
index 6c2147ae2..d5863516a 100644
--- a/dom/media/gmp/GMPUtils.cpp
+++ b/dom/media/gmp/GMPUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gmp/moz.build b/dom/media/gmp/moz.build
index 8595ee0de..6e9e92e8a 100644
--- a/dom/media/gmp/moz.build
+++ b/dom/media/gmp/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
@@ -146,6 +145,9 @@ IPDL_SOURCES += [
'PGMPVideoEncoder.ipdl',
]
+if CONFIG['GKMEDIAS_SHARED_LIBRARY']:
+ NO_VISIBILITY_FLAGS = True
+
# comment this out to use Unsafe Shmem for more performance
DEFINES['GMP_SAFE_SHMEM'] = True
diff --git a/dom/media/gmp/rlz/GMPDeviceBinding.cpp b/dom/media/gmp/rlz/GMPDeviceBinding.cpp
index 3525f0462..04def8e8e 100644
--- a/dom/media/gmp/rlz/GMPDeviceBinding.cpp
+++ b/dom/media/gmp/rlz/GMPDeviceBinding.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gmp/rlz/GMPDeviceBinding.h b/dom/media/gmp/rlz/GMPDeviceBinding.h
index 835704054..ee1664466 100644
--- a/dom/media/gmp/rlz/GMPDeviceBinding.h
+++ b/dom/media/gmp/rlz/GMPDeviceBinding.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gmp/rlz/moz.build b/dom/media/gmp/rlz/moz.build
index 5e85357f1..aa6f5fece 100644
--- a/dom/media/gmp/rlz/moz.build
+++ b/dom/media/gmp/rlz/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/gmp/widevine-adapter/moz.build b/dom/media/gmp/widevine-adapter/moz.build
index a689a6393..4a3a079ce 100644
--- a/dom/media/gmp/widevine-adapter/moz.build
+++ b/dom/media/gmp/widevine-adapter/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/gtest/GMPTestMonitor.h b/dom/media/gtest/GMPTestMonitor.h
index 8ce6f8ddd..13d662b17 100644
--- a/dom/media/gtest/GMPTestMonitor.h
+++ b/dom/media/gtest/GMPTestMonitor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gtest/TestAudioCompactor.cpp b/dom/media/gtest/TestAudioCompactor.cpp
index 9a28254b3..73c339f16 100644
--- a/dom/media/gtest/TestAudioCompactor.cpp
+++ b/dom/media/gtest/TestAudioCompactor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gtest/TestGMPCrossOrigin.cpp b/dom/media/gtest/TestGMPCrossOrigin.cpp
index 33ac98388..eb8b48d67 100644
--- a/dom/media/gtest/TestGMPCrossOrigin.cpp
+++ b/dom/media/gtest/TestGMPCrossOrigin.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gtest/TestGMPRemoveAndDelete.cpp b/dom/media/gtest/TestGMPRemoveAndDelete.cpp
index 4ac92e34e..31049bb1d 100644
--- a/dom/media/gtest/TestGMPRemoveAndDelete.cpp
+++ b/dom/media/gtest/TestGMPRemoveAndDelete.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gtest/TestGMPUtils.cpp b/dom/media/gtest/TestGMPUtils.cpp
index 75d7eba53..00f09f812 100644
--- a/dom/media/gtest/TestGMPUtils.cpp
+++ b/dom/media/gtest/TestGMPUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/gtest/moz.build b/dom/media/gtest/moz.build
index ae059962c..512d0a087 100644
--- a/dom/media/gtest/moz.build
+++ b/dom/media/gtest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
@@ -28,11 +27,6 @@ UNIFIED_SOURCES += [
'TestWebMBuffered.cpp',
]
-if CONFIG['MOZ_EME']:
- UNIFIED_SOURCES += [
- 'TestEME.cpp',
- ]
-
if CONFIG['MOZ_WEBM_ENCODER']:
UNIFIED_SOURCES += [
'TestVideoTrackEncoder.cpp',
diff --git a/dom/media/imagecapture/moz.build b/dom/media/imagecapture/moz.build
index c1a58ff37..55f6fcfc3 100644
--- a/dom/media/imagecapture/moz.build
+++ b/dom/media/imagecapture/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/ipc/MediaIPCUtils.h b/dom/media/ipc/MediaIPCUtils.h
index 14b8ee751..88fd0b719 100644
--- a/dom/media/ipc/MediaIPCUtils.h
+++ b/dom/media/ipc/MediaIPCUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/ipc/RemoteVideoDecoder.cpp b/dom/media/ipc/RemoteVideoDecoder.cpp
index c6131bb91..8aed52551 100644
--- a/dom/media/ipc/RemoteVideoDecoder.cpp
+++ b/dom/media/ipc/RemoteVideoDecoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/RemoteVideoDecoder.h b/dom/media/ipc/RemoteVideoDecoder.h
index 3c8e86bba..1383e0d57 100644
--- a/dom/media/ipc/RemoteVideoDecoder.h
+++ b/dom/media/ipc/RemoteVideoDecoder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/VideoDecoderChild.cpp b/dom/media/ipc/VideoDecoderChild.cpp
index f01d3c659..1066b9c3e 100644
--- a/dom/media/ipc/VideoDecoderChild.cpp
+++ b/dom/media/ipc/VideoDecoderChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/VideoDecoderChild.h b/dom/media/ipc/VideoDecoderChild.h
index a38e3e31c..7c374971a 100644
--- a/dom/media/ipc/VideoDecoderChild.h
+++ b/dom/media/ipc/VideoDecoderChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/VideoDecoderManagerChild.cpp b/dom/media/ipc/VideoDecoderManagerChild.cpp
index e444fae15..8a266cad6 100644
--- a/dom/media/ipc/VideoDecoderManagerChild.cpp
+++ b/dom/media/ipc/VideoDecoderManagerChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/VideoDecoderManagerChild.h b/dom/media/ipc/VideoDecoderManagerChild.h
index 1e67a590e..d7ea90eee 100644
--- a/dom/media/ipc/VideoDecoderManagerChild.h
+++ b/dom/media/ipc/VideoDecoderManagerChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/VideoDecoderManagerParent.cpp b/dom/media/ipc/VideoDecoderManagerParent.cpp
index 4ff9acf19..186ce255b 100644
--- a/dom/media/ipc/VideoDecoderManagerParent.cpp
+++ b/dom/media/ipc/VideoDecoderManagerParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/VideoDecoderManagerParent.h b/dom/media/ipc/VideoDecoderManagerParent.h
index b140c7ce3..c879b1cc4 100644
--- a/dom/media/ipc/VideoDecoderManagerParent.h
+++ b/dom/media/ipc/VideoDecoderManagerParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/VideoDecoderParent.cpp b/dom/media/ipc/VideoDecoderParent.cpp
index c96edb044..b9c223924 100644
--- a/dom/media/ipc/VideoDecoderParent.cpp
+++ b/dom/media/ipc/VideoDecoderParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/VideoDecoderParent.h b/dom/media/ipc/VideoDecoderParent.h
index ea99d0a10..dda566d25 100644
--- a/dom/media/ipc/VideoDecoderParent.h
+++ b/dom/media/ipc/VideoDecoderParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=99: */
/* 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/. */
diff --git a/dom/media/ipc/moz.build b/dom/media/ipc/moz.build
index 2e78460b5..8580ec671 100644
--- a/dom/media/ipc/moz.build
+++ b/dom/media/ipc/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/mediasink/AudioSinkWrapper.cpp b/dom/media/mediasink/AudioSinkWrapper.cpp
index a2dfcd8fb..8e23f349c 100644
--- a/dom/media/mediasink/AudioSinkWrapper.cpp
+++ b/dom/media/mediasink/AudioSinkWrapper.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/AudioSinkWrapper.h b/dom/media/mediasink/AudioSinkWrapper.h
index 46d402ee6..f4ffb3946 100644
--- a/dom/media/mediasink/AudioSinkWrapper.h
+++ b/dom/media/mediasink/AudioSinkWrapper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/DecodedStream.cpp b/dom/media/mediasink/DecodedStream.cpp
index 54161be5c..eb388cf2f 100644
--- a/dom/media/mediasink/DecodedStream.cpp
+++ b/dom/media/mediasink/DecodedStream.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/DecodedStream.h b/dom/media/mediasink/DecodedStream.h
index f2c606bc4..be7c01151 100644
--- a/dom/media/mediasink/DecodedStream.h
+++ b/dom/media/mediasink/DecodedStream.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/MediaSink.h b/dom/media/mediasink/MediaSink.h
index 09b79149e..9de884d42 100644
--- a/dom/media/mediasink/MediaSink.h
+++ b/dom/media/mediasink/MediaSink.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/OutputStreamManager.cpp b/dom/media/mediasink/OutputStreamManager.cpp
index 7ecc203ed..cb6a11af4 100644
--- a/dom/media/mediasink/OutputStreamManager.cpp
+++ b/dom/media/mediasink/OutputStreamManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/OutputStreamManager.h b/dom/media/mediasink/OutputStreamManager.h
index 941a86cf0..34cb19508 100644
--- a/dom/media/mediasink/OutputStreamManager.h
+++ b/dom/media/mediasink/OutputStreamManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/VideoSink.cpp b/dom/media/mediasink/VideoSink.cpp
index a438cf8a4..b2c8b98de 100644
--- a/dom/media/mediasink/VideoSink.cpp
+++ b/dom/media/mediasink/VideoSink.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/VideoSink.h b/dom/media/mediasink/VideoSink.h
index 2612f0e07..08190a345 100644
--- a/dom/media/mediasink/VideoSink.h
+++ b/dom/media/mediasink/VideoSink.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasink/moz.build b/dom/media/mediasink/moz.build
index 34c78a749..ce6ed95be 100644
--- a/dom/media/mediasink/moz.build
+++ b/dom/media/mediasink/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/mediasource/AsyncEventRunner.h b/dom/media/mediasource/AsyncEventRunner.h
index a1b6265f7..56a61570c 100644
--- a/dom/media/mediasource/AsyncEventRunner.h
+++ b/dom/media/mediasource/AsyncEventRunner.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/AutoTaskQueue.h b/dom/media/mediasource/AutoTaskQueue.h
index 1726ad5be..fda82397e 100644
--- a/dom/media/mediasource/AutoTaskQueue.h
+++ b/dom/media/mediasource/AutoTaskQueue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/ContainerParser.cpp b/dom/media/mediasource/ContainerParser.cpp
index 9711d4fb6..49e341545 100644
--- a/dom/media/mediasource/ContainerParser.cpp
+++ b/dom/media/mediasource/ContainerParser.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/ContainerParser.h b/dom/media/mediasource/ContainerParser.h
index e31ed7579..0e5b80d0e 100644
--- a/dom/media/mediasource/ContainerParser.h
+++ b/dom/media/mediasource/ContainerParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/MediaSource.cpp b/dom/media/mediasource/MediaSource.cpp
index 1c276cdc1..7d22d50a3 100644
--- a/dom/media/mediasource/MediaSource.cpp
+++ b/dom/media/mediasource/MediaSource.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/MediaSource.h b/dom/media/mediasource/MediaSource.h
index 0d2dc0588..e7531a19c 100644
--- a/dom/media/mediasource/MediaSource.h
+++ b/dom/media/mediasource/MediaSource.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/MediaSourceDecoder.cpp b/dom/media/mediasource/MediaSourceDecoder.cpp
index 2e83bfd23..6507b320a 100644
--- a/dom/media/mediasource/MediaSourceDecoder.cpp
+++ b/dom/media/mediasource/MediaSourceDecoder.cpp
@@ -1,5 +1,4 @@
/* -*- mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/MediaSourceDecoder.h b/dom/media/mediasource/MediaSourceDecoder.h
index 2bf0ad831..f4d84bc40 100644
--- a/dom/media/mediasource/MediaSourceDecoder.h
+++ b/dom/media/mediasource/MediaSourceDecoder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/MediaSourceResource.h b/dom/media/mediasource/MediaSourceResource.h
index 3ce4ebb52..223944514 100644
--- a/dom/media/mediasource/MediaSourceResource.h
+++ b/dom/media/mediasource/MediaSourceResource.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/MediaSourceUtils.cpp b/dom/media/mediasource/MediaSourceUtils.cpp
index 49cb39a18..3f478d53d 100644
--- a/dom/media/mediasource/MediaSourceUtils.cpp
+++ b/dom/media/mediasource/MediaSourceUtils.cpp
@@ -1,5 +1,4 @@
/* -*- mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/MediaSourceUtils.h b/dom/media/mediasource/MediaSourceUtils.h
index 2bda99f1b..5c3836976 100644
--- a/dom/media/mediasource/MediaSourceUtils.h
+++ b/dom/media/mediasource/MediaSourceUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/ResourceQueue.cpp b/dom/media/mediasource/ResourceQueue.cpp
index 5ca29ad37..1e6b353ee 100644
--- a/dom/media/mediasource/ResourceQueue.cpp
+++ b/dom/media/mediasource/ResourceQueue.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/ResourceQueue.h b/dom/media/mediasource/ResourceQueue.h
index 0617890c8..f2b4119b6 100644
--- a/dom/media/mediasource/ResourceQueue.h
+++ b/dom/media/mediasource/ResourceQueue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/SourceBuffer.cpp b/dom/media/mediasource/SourceBuffer.cpp
index de14efb58..26ea93707 100644
--- a/dom/media/mediasource/SourceBuffer.cpp
+++ b/dom/media/mediasource/SourceBuffer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/SourceBuffer.h b/dom/media/mediasource/SourceBuffer.h
index 440e8f60e..579ab6ba6 100644
--- a/dom/media/mediasource/SourceBuffer.h
+++ b/dom/media/mediasource/SourceBuffer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/SourceBufferAttributes.h b/dom/media/mediasource/SourceBufferAttributes.h
index 0af80a4fe..876657681 100644
--- a/dom/media/mediasource/SourceBufferAttributes.h
+++ b/dom/media/mediasource/SourceBufferAttributes.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/SourceBufferList.cpp b/dom/media/mediasource/SourceBufferList.cpp
index cf7a7ed9d..c816ff83c 100644
--- a/dom/media/mediasource/SourceBufferList.cpp
+++ b/dom/media/mediasource/SourceBufferList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/SourceBufferList.h b/dom/media/mediasource/SourceBufferList.h
index 03dc5c80b..ddd9e224a 100644
--- a/dom/media/mediasource/SourceBufferList.h
+++ b/dom/media/mediasource/SourceBufferList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/SourceBufferResource.cpp b/dom/media/mediasource/SourceBufferResource.cpp
index bb11072ae..3d761880b 100644
--- a/dom/media/mediasource/SourceBufferResource.cpp
+++ b/dom/media/mediasource/SourceBufferResource.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/SourceBufferResource.h b/dom/media/mediasource/SourceBufferResource.h
index 26ed74602..9b61e016a 100644
--- a/dom/media/mediasource/SourceBufferResource.h
+++ b/dom/media/mediasource/SourceBufferResource.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/SourceBufferTask.h b/dom/media/mediasource/SourceBufferTask.h
index 868b60859..438a9b42c 100644
--- a/dom/media/mediasource/SourceBufferTask.h
+++ b/dom/media/mediasource/SourceBufferTask.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/TrackBuffersManager.cpp b/dom/media/mediasource/TrackBuffersManager.cpp
index b9cf19492..8663c1a8f 100644
--- a/dom/media/mediasource/TrackBuffersManager.cpp
+++ b/dom/media/mediasource/TrackBuffersManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/TrackBuffersManager.h b/dom/media/mediasource/TrackBuffersManager.h
index de6b115f5..11bcb353a 100644
--- a/dom/media/mediasource/TrackBuffersManager.h
+++ b/dom/media/mediasource/TrackBuffersManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/mediasource/gtest/moz.build b/dom/media/mediasource/gtest/moz.build
index 5aa597d8d..2cccc80a2 100644
--- a/dom/media/mediasource/gtest/moz.build
+++ b/dom/media/mediasource/gtest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/mediasource/moz.build b/dom/media/mediasource/moz.build
index dfa227a86..775090cb2 100644
--- a/dom/media/mediasource/moz.build
+++ b/dom/media/mediasource/moz.build
@@ -1,4 +1,3 @@
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/moz.build b/dom/media/moz.build
index 4cb514a08..40d90b599 100644
--- a/dom/media/moz.build
+++ b/dom/media/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/mp3/moz.build b/dom/media/mp3/moz.build
index 838a5a854..349cd6b67 100644
--- a/dom/media/mp3/moz.build
+++ b/dom/media/mp3/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/ogg/moz.build b/dom/media/ogg/moz.build
index c47abf690..13a8d1ddc 100644
--- a/dom/media/ogg/moz.build
+++ b/dom/media/ogg/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/PlatformDecoderModule.h b/dom/media/platforms/PlatformDecoderModule.h
index 5684dea2d..62855335f 100644
--- a/dom/media/platforms/PlatformDecoderModule.h
+++ b/dom/media/platforms/PlatformDecoderModule.h
@@ -7,8 +7,8 @@
#if !defined(PlatformDecoderModule_h_)
#define PlatformDecoderModule_h_
-#include "ImageContainer.h"
#include "DecoderDoctorDiagnostics.h"
+#include "ImageContainer.h"
#include "MediaDecoderReader.h"
#include "MediaInfo.h"
#include "mozilla/MozPromise.h"
diff --git a/dom/media/platforms/agnostic/eme/SamplesWaitingForKey.cpp b/dom/media/platforms/agnostic/eme/SamplesWaitingForKey.cpp
index 58098c2b3..532fc63c0 100644
--- a/dom/media/platforms/agnostic/eme/SamplesWaitingForKey.cpp
+++ b/dom/media/platforms/agnostic/eme/SamplesWaitingForKey.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/platforms/agnostic/eme/moz.build b/dom/media/platforms/agnostic/eme/moz.build
index e48d49d80..97156f33a 100644
--- a/dom/media/platforms/agnostic/eme/moz.build
+++ b/dom/media/platforms/agnostic/eme/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/agnostic/gmp/moz.build b/dom/media/platforms/agnostic/gmp/moz.build
index 644df47a3..64e258620 100644
--- a/dom/media/platforms/agnostic/gmp/moz.build
+++ b/dom/media/platforms/agnostic/gmp/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/android/AndroidDecoderModule.cpp b/dom/media/platforms/android/AndroidDecoderModule.cpp
deleted file mode 100644
index 3bf5cbf09..000000000
--- a/dom/media/platforms/android/AndroidDecoderModule.cpp
+++ /dev/null
@@ -1,227 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "AndroidDecoderModule.h"
-#include "AndroidBridge.h"
-
-#include "MediaCodecDataDecoder.h"
-#include "RemoteDataDecoder.h"
-
-#include "MediaInfo.h"
-#include "VPXDecoder.h"
-
-#include "MediaPrefs.h"
-#include "OpusDecoder.h"
-#include "VorbisDecoder.h"
-
-#include "nsPromiseFlatString.h"
-#include "nsIGfxInfo.h"
-
-#include "prlog.h"
-
-#include <jni.h>
-
-#undef LOG
-#define LOG(arg, ...) MOZ_LOG(sAndroidDecoderModuleLog, \
- mozilla::LogLevel::Debug, ("AndroidDecoderModule(%p)::%s: " arg, \
- this, __func__, ##__VA_ARGS__))
-
-using namespace mozilla;
-using namespace mozilla::gl;
-using namespace mozilla::java::sdk;
-using media::TimeUnit;
-
-namespace mozilla {
-
-mozilla::LazyLogModule sAndroidDecoderModuleLog("AndroidDecoderModule");
-
-static const char*
-TranslateMimeType(const nsACString& aMimeType)
-{
- if (VPXDecoder::IsVPX(aMimeType, VPXDecoder::VP8)) {
- return "video/x-vnd.on2.vp8";
- } else if (VPXDecoder::IsVPX(aMimeType, VPXDecoder::VP9)) {
- return "video/x-vnd.on2.vp9";
- }
- return PromiseFlatCString(aMimeType).get();
-}
-
-static bool
-GetFeatureStatus(int32_t aFeature)
-{
- nsCOMPtr<nsIGfxInfo> gfxInfo = services::GetGfxInfo();
- int32_t status = nsIGfxInfo::FEATURE_STATUS_UNKNOWN;
- nsCString discardFailureId;
- if (!gfxInfo || NS_FAILED(gfxInfo->GetFeatureStatus(aFeature, discardFailureId, &status))) {
- return false;
- }
- return status == nsIGfxInfo::FEATURE_STATUS_OK;
-};
-
-CryptoInfo::LocalRef
-GetCryptoInfoFromSample(const MediaRawData* aSample)
-{
- auto& cryptoObj = aSample->mCrypto;
-
- if (!cryptoObj.mValid) {
- return nullptr;
- }
-
- CryptoInfo::LocalRef cryptoInfo;
- nsresult rv = CryptoInfo::New(&cryptoInfo);
- NS_ENSURE_SUCCESS(rv, nullptr);
-
- uint32_t numSubSamples =
- std::min<uint32_t>(cryptoObj.mPlainSizes.Length(), cryptoObj.mEncryptedSizes.Length());
-
- uint32_t totalSubSamplesSize = 0;
- for (auto& size : cryptoObj.mEncryptedSizes) {
- totalSubSamplesSize += size;
- }
-
- // mPlainSizes is uint16_t, need to transform to uint32_t first.
- nsTArray<uint32_t> plainSizes;
- for (auto& size : cryptoObj.mPlainSizes) {
- totalSubSamplesSize += size;
- plainSizes.AppendElement(size);
- }
-
- uint32_t codecSpecificDataSize = aSample->Size() - totalSubSamplesSize;
- // Size of codec specific data("CSD") for Android MediaCodec usage should be
- // included in the 1st plain size.
- plainSizes[0] += codecSpecificDataSize;
-
- static const int kExpectedIVLength = 16;
- auto tempIV(cryptoObj.mIV);
- auto tempIVLength = tempIV.Length();
- MOZ_ASSERT(tempIVLength <= kExpectedIVLength);
- for (size_t i = tempIVLength; i < kExpectedIVLength; i++) {
- // Padding with 0
- tempIV.AppendElement(0);
- }
-
- auto numBytesOfPlainData = mozilla::jni::IntArray::New(
- reinterpret_cast<int32_t*>(&plainSizes[0]),
- plainSizes.Length());
-
- auto numBytesOfEncryptedData =
- mozilla::jni::IntArray::New(reinterpret_cast<const int32_t*>(&cryptoObj.mEncryptedSizes[0]),
- cryptoObj.mEncryptedSizes.Length());
- auto iv = mozilla::jni::ByteArray::New(reinterpret_cast<int8_t*>(&tempIV[0]),
- tempIV.Length());
- auto keyId = mozilla::jni::ByteArray::New(reinterpret_cast<const int8_t*>(&cryptoObj.mKeyId[0]),
- cryptoObj.mKeyId.Length());
- cryptoInfo->Set(numSubSamples,
- numBytesOfPlainData,
- numBytesOfEncryptedData,
- keyId,
- iv,
- MediaCodec::CRYPTO_MODE_AES_CTR);
-
- return cryptoInfo;
-}
-
-bool
-AndroidDecoderModule::SupportsMimeType(const nsACString& aMimeType,
- DecoderDoctorDiagnostics* aDiagnostics) const
-{
- if (!AndroidBridge::Bridge() ||
- AndroidBridge::Bridge()->GetAPIVersion() < 16) {
- return false;
- }
-
- if (aMimeType.EqualsLiteral("video/mp4") ||
- aMimeType.EqualsLiteral("video/avc")) {
- return true;
- }
-
- // When checking "audio/x-wav", CreateDecoder can cause a JNI ERROR by
- // Accessing a stale local reference leading to a SIGSEGV crash.
- // To avoid this we check for wav types here.
- if (aMimeType.EqualsLiteral("audio/x-wav") ||
- aMimeType.EqualsLiteral("audio/wave; codecs=1") ||
- aMimeType.EqualsLiteral("audio/wave; codecs=6") ||
- aMimeType.EqualsLiteral("audio/wave; codecs=7") ||
- aMimeType.EqualsLiteral("audio/wave; codecs=65534")) {
- return false;
- }
-
- if ((VPXDecoder::IsVPX(aMimeType, VPXDecoder::VP8) &&
- !GetFeatureStatus(nsIGfxInfo::FEATURE_VP8_HW_DECODE)) ||
- (VPXDecoder::IsVPX(aMimeType, VPXDecoder::VP9) &&
- !GetFeatureStatus(nsIGfxInfo::FEATURE_VP9_HW_DECODE))) {
- return false;
- }
-
- // Prefer the gecko decoder for opus and vorbis; stagefright crashes
- // on content demuxed from mp4.
- if (OpusDataDecoder::IsOpus(aMimeType) ||
- VorbisDataDecoder::IsVorbis(aMimeType)) {
- LOG("Rejecting audio of type %s", aMimeType.Data());
- return false;
- }
-
- return java::HardwareCodecCapabilityUtils::FindDecoderCodecInfoForMimeType(
- nsCString(TranslateMimeType(aMimeType)));
-}
-
-already_AddRefed<MediaDataDecoder>
-AndroidDecoderModule::CreateVideoDecoder(const CreateDecoderParams& aParams)
-{
- MediaFormat::LocalRef format;
-
- const VideoInfo& config = aParams.VideoConfig();
- NS_ENSURE_SUCCESS(MediaFormat::CreateVideoFormat(
- TranslateMimeType(config.mMimeType),
- config.mDisplay.width,
- config.mDisplay.height,
- &format), nullptr);
-
- RefPtr<MediaDataDecoder> decoder = MediaPrefs::PDMAndroidRemoteCodecEnabled() ?
- RemoteDataDecoder::CreateVideoDecoder(config,
- format,
- aParams.mCallback,
- aParams.mImageContainer) :
- MediaCodecDataDecoder::CreateVideoDecoder(config,
- format,
- aParams.mCallback,
- aParams.mImageContainer);
-
- return decoder.forget();
-}
-
-already_AddRefed<MediaDataDecoder>
-AndroidDecoderModule::CreateAudioDecoder(const CreateDecoderParams& aParams)
-{
- const AudioInfo& config = aParams.AudioConfig();
- MOZ_ASSERT(config.mBitDepth == 16, "We only handle 16-bit audio!");
-
- MediaFormat::LocalRef format;
-
- LOG("CreateAudioFormat with mimeType=%s, mRate=%d, channels=%d",
- config.mMimeType.Data(), config.mRate, config.mChannels);
-
- NS_ENSURE_SUCCESS(MediaFormat::CreateAudioFormat(
- config.mMimeType,
- config.mRate,
- config.mChannels,
- &format), nullptr);
-
- RefPtr<MediaDataDecoder> decoder = MediaPrefs::PDMAndroidRemoteCodecEnabled() ?
- RemoteDataDecoder::CreateAudioDecoder(config, format, aParams.mCallback) :
- MediaCodecDataDecoder::CreateAudioDecoder(config, format, aParams.mCallback);
-
- return decoder.forget();
-}
-
-PlatformDecoderModule::ConversionRequired
-AndroidDecoderModule::DecoderNeedsConversion(const TrackInfo& aConfig) const
-{
- if (aConfig.IsVideo()) {
- return ConversionRequired::kNeedAnnexB;
- }
- return ConversionRequired::kNeedNone;
-}
-
-} // mozilla
diff --git a/dom/media/platforms/android/AndroidDecoderModule.h b/dom/media/platforms/android/AndroidDecoderModule.h
deleted file mode 100644
index 339cbb311..000000000
--- a/dom/media/platforms/android/AndroidDecoderModule.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef AndroidDecoderModule_h_
-#define AndroidDecoderModule_h_
-
-#include "PlatformDecoderModule.h"
-
-namespace mozilla {
-
-class AndroidDecoderModule : public PlatformDecoderModule {
-public:
- already_AddRefed<MediaDataDecoder>
- CreateVideoDecoder(const CreateDecoderParams& aParams) override;
-
- already_AddRefed<MediaDataDecoder>
- CreateAudioDecoder(const CreateDecoderParams& aParams) override;
-
- AndroidDecoderModule() {}
- virtual ~AndroidDecoderModule() {}
-
- bool SupportsMimeType(const nsACString& aMimeType,
- DecoderDoctorDiagnostics* aDiagnostics) const override;
-
- ConversionRequired
- DecoderNeedsConversion(const TrackInfo& aConfig) const override;
-};
-
-extern LazyLogModule sAndroidDecoderModuleLog;
-
-} // namespace mozilla
-
-#endif
diff --git a/dom/media/platforms/android/MediaCodecDataDecoder.cpp b/dom/media/platforms/android/MediaCodecDataDecoder.cpp
deleted file mode 100644
index 3c5df54ee..000000000
--- a/dom/media/platforms/android/MediaCodecDataDecoder.cpp
+++ /dev/null
@@ -1,698 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "MediaCodecDataDecoder.h"
-
-#include "AndroidBridge.h"
-#include "AndroidSurfaceTexture.h"
-#include "GeneratedJNINatives.h"
-#include "GLImages.h"
-
-#include "MediaData.h"
-#include "MediaInfo.h"
-#include "VPXDecoder.h"
-
-#include "nsThreadUtils.h"
-#include "nsPromiseFlatString.h"
-#include "nsIGfxInfo.h"
-
-#include "prlog.h"
-
-#include <jni.h>
-
-#undef LOG
-#define LOG(arg, ...) MOZ_LOG(sAndroidDecoderModuleLog, \
- mozilla::LogLevel::Debug, ("MediaCodecDataDecoder(%p)::%s: " arg, \
- this, __func__, ##__VA_ARGS__))
-
-using namespace mozilla;
-using namespace mozilla::gl;
-using namespace mozilla::java;
-using namespace mozilla::java::sdk;
-using media::TimeUnit;
-
-namespace mozilla {
-
-#define INVOKE_CALLBACK(Func, ...) \
- if (mCallback) { \
- mCallback->Func(__VA_ARGS__); \
- } else { \
- NS_WARNING("Callback not set"); \
- }
-
-static MediaCodec::LocalRef
-CreateDecoder(const nsACString& aMimeType)
-{
- MediaCodec::LocalRef codec;
- NS_ENSURE_SUCCESS(MediaCodec::CreateDecoderByType(TranslateMimeType(aMimeType),
- &codec), nullptr);
- return codec;
-}
-
-class VideoDataDecoder : public MediaCodecDataDecoder
-{
-public:
- VideoDataDecoder(const VideoInfo& aConfig,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback,
- layers::ImageContainer* aImageContainer)
- : MediaCodecDataDecoder(MediaData::Type::VIDEO_DATA, aConfig.mMimeType,
- aFormat, aCallback)
- , mImageContainer(aImageContainer)
- , mConfig(aConfig)
- {
-
- }
-
- const char* GetDescriptionName() const override
- {
- return "Android MediaCodec video decoder";
- }
-
- RefPtr<InitPromise> Init() override
- {
- mSurfaceTexture = AndroidSurfaceTexture::Create();
- if (!mSurfaceTexture) {
- NS_WARNING("Failed to create SurfaceTexture for video decode\n");
- return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
- }
-
- if (NS_FAILED(InitDecoder(mSurfaceTexture->JavaSurface()))) {
- return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
- }
-
- return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
- }
-
- void Cleanup() override
- {
- }
-
- nsresult PostOutput(BufferInfo::Param aInfo, MediaFormat::Param aFormat,
- const TimeUnit& aDuration) override
- {
- RefPtr<layers::Image> img =
- new SurfaceTextureImage(mSurfaceTexture.get(), mConfig.mDisplay,
- gl::OriginPos::BottomLeft);
-
- nsresult rv;
- int32_t flags;
- NS_ENSURE_SUCCESS(rv = aInfo->Flags(&flags), rv);
-
- bool isSync = !!(flags & MediaCodec::BUFFER_FLAG_SYNC_FRAME);
-
- int32_t offset;
- NS_ENSURE_SUCCESS(rv = aInfo->Offset(&offset), rv);
-
- int64_t presentationTimeUs;
- NS_ENSURE_SUCCESS(rv = aInfo->PresentationTimeUs(&presentationTimeUs), rv);
-
- RefPtr<VideoData> v =
- VideoData::CreateFromImage(mConfig,
- offset,
- presentationTimeUs,
- aDuration.ToMicroseconds(),
- img,
- isSync,
- presentationTimeUs,
- gfx::IntRect(0, 0,
- mConfig.mDisplay.width,
- mConfig.mDisplay.height));
- INVOKE_CALLBACK(Output, v);
- return NS_OK;
- }
-
-protected:
- layers::ImageContainer* mImageContainer;
- const VideoInfo& mConfig;
- RefPtr<AndroidSurfaceTexture> mSurfaceTexture;
-};
-
-class AudioDataDecoder : public MediaCodecDataDecoder
-{
-public:
- AudioDataDecoder(const AudioInfo& aConfig, MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback)
- : MediaCodecDataDecoder(MediaData::Type::AUDIO_DATA, aConfig.mMimeType,
- aFormat, aCallback)
- {
- JNIEnv* const env = jni::GetEnvForThread();
-
- jni::ByteBuffer::LocalRef buffer(env);
- NS_ENSURE_SUCCESS_VOID(aFormat->GetByteBuffer(NS_LITERAL_STRING("csd-0"),
- &buffer));
-
- if (!buffer && aConfig.mCodecSpecificConfig->Length() >= 2) {
- buffer = jni::ByteBuffer::New(
- aConfig.mCodecSpecificConfig->Elements(),
- aConfig.mCodecSpecificConfig->Length());
- NS_ENSURE_SUCCESS_VOID(aFormat->SetByteBuffer(NS_LITERAL_STRING("csd-0"),
- buffer));
- }
- }
-
- const char* GetDescriptionName() const override
- {
- return "android audio decoder";
- }
-
- nsresult Output(BufferInfo::Param aInfo, void* aBuffer,
- MediaFormat::Param aFormat, const TimeUnit& aDuration)
- {
- // The output on Android is always 16-bit signed
- nsresult rv;
- int32_t numChannels;
- NS_ENSURE_SUCCESS(rv =
- aFormat->GetInteger(NS_LITERAL_STRING("channel-count"), &numChannels), rv);
- AudioConfig::ChannelLayout layout(numChannels);
- if (!layout.IsValid()) {
- return NS_ERROR_FAILURE;
- }
-
- int32_t sampleRate;
- NS_ENSURE_SUCCESS(rv =
- aFormat->GetInteger(NS_LITERAL_STRING("sample-rate"), &sampleRate), rv);
-
- int32_t size;
- NS_ENSURE_SUCCESS(rv = aInfo->Size(&size), rv);
-
- int32_t offset;
- NS_ENSURE_SUCCESS(rv = aInfo->Offset(&offset), rv);
-
-#ifdef MOZ_SAMPLE_TYPE_S16
- const int32_t numSamples = size / 2;
-#else
-#error We only support 16-bit integer PCM
-#endif
-
- const int32_t numFrames = numSamples / numChannels;
- AlignedAudioBuffer audio(numSamples);
- if (!audio) {
- return NS_ERROR_OUT_OF_MEMORY;
- }
-
- const uint8_t* bufferStart = static_cast<uint8_t*>(aBuffer) + offset;
- PodCopy(audio.get(), reinterpret_cast<const AudioDataValue*>(bufferStart),
- numSamples);
-
- int64_t presentationTimeUs;
- NS_ENSURE_SUCCESS(rv = aInfo->PresentationTimeUs(&presentationTimeUs), rv);
-
- RefPtr<AudioData> data = new AudioData(0, presentationTimeUs,
- aDuration.ToMicroseconds(),
- numFrames,
- Move(audio),
- numChannels,
- sampleRate);
- INVOKE_CALLBACK(Output, data);
- return NS_OK;
- }
-};
-
-MediaDataDecoder*
-MediaCodecDataDecoder::CreateAudioDecoder(const AudioInfo& aConfig,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback)
-{
- return new AudioDataDecoder(aConfig, aFormat, aCallback);
-}
-
-MediaDataDecoder*
-MediaCodecDataDecoder::CreateVideoDecoder(const VideoInfo& aConfig,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback,
- layers::ImageContainer* aImageContainer)
-{
- return new VideoDataDecoder(aConfig, aFormat, aCallback, aImageContainer);
-}
-
-MediaCodecDataDecoder::MediaCodecDataDecoder(MediaData::Type aType,
- const nsACString& aMimeType,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback)
- : mType(aType)
- , mMimeType(aMimeType)
- , mFormat(aFormat)
- , mCallback(aCallback)
- , mInputBuffers(nullptr)
- , mOutputBuffers(nullptr)
- , mMonitor("MediaCodecDataDecoder::mMonitor")
- , mState(ModuleState::kDecoding)
-{
-
-}
-
-MediaCodecDataDecoder::~MediaCodecDataDecoder()
-{
- Shutdown();
-}
-
-RefPtr<MediaDataDecoder::InitPromise>
-MediaCodecDataDecoder::Init()
-{
- nsresult rv = InitDecoder(nullptr);
-
- TrackInfo::TrackType type =
- (mType == MediaData::AUDIO_DATA ? TrackInfo::TrackType::kAudioTrack
- : TrackInfo::TrackType::kVideoTrack);
-
- return NS_SUCCEEDED(rv) ?
- InitPromise::CreateAndResolve(type, __func__) :
- InitPromise::CreateAndReject(
- NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
-}
-
-nsresult
-MediaCodecDataDecoder::InitDecoder(Surface::Param aSurface)
-{
- mDecoder = CreateDecoder(mMimeType);
- if (!mDecoder) {
- INVOKE_CALLBACK(Error,
- MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__));
- return NS_ERROR_FAILURE;
- }
-
- nsresult rv;
- NS_ENSURE_SUCCESS(rv = mDecoder->Configure(mFormat, aSurface, nullptr, 0), rv);
- NS_ENSURE_SUCCESS(rv = mDecoder->Start(), rv);
-
- NS_ENSURE_SUCCESS(rv = ResetInputBuffers(), rv);
- NS_ENSURE_SUCCESS(rv = ResetOutputBuffers(), rv);
-
- nsCOMPtr<nsIRunnable> r = NewRunnableMethod(this, &MediaCodecDataDecoder::DecoderLoop);
- rv = NS_NewNamedThread("MC Decoder", getter_AddRefs(mThread), r);
-
- return rv;
-}
-
-// This is in usec, so that's 10ms.
-static const int64_t kDecoderTimeout = 10000;
-
-#define BREAK_ON_DECODER_ERROR() \
- if (NS_FAILED(res)) { \
- NS_WARNING("Exiting decoder loop due to exception"); \
- if (mState == ModuleState::kDrainDecoder) { \
- INVOKE_CALLBACK(DrainComplete); \
- SetState(ModuleState::kDecoding); \
- } \
- INVOKE_CALLBACK(Error, MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__)); \
- break; \
- }
-
-nsresult
-MediaCodecDataDecoder::GetInputBuffer(
- JNIEnv* aEnv, int aIndex, jni::Object::LocalRef* aBuffer)
-{
- MOZ_ASSERT(aEnv);
- MOZ_ASSERT(!*aBuffer);
-
- int numTries = 2;
-
- while (numTries--) {
- *aBuffer = jni::Object::LocalRef::Adopt(
- aEnv->GetObjectArrayElement(mInputBuffers.Get(), aIndex));
- if (*aBuffer) {
- return NS_OK;
- }
- nsresult res = ResetInputBuffers();
- if (NS_FAILED(res)) {
- return res;
- }
- }
- return NS_ERROR_FAILURE;
-}
-
-bool
-MediaCodecDataDecoder::WaitForInput()
-{
- MonitorAutoLock lock(mMonitor);
-
- while (mState == ModuleState::kDecoding && mQueue.empty()) {
- // Signal that we require more input.
- INVOKE_CALLBACK(InputExhausted);
- lock.Wait();
- }
-
- return mState != ModuleState::kStopping;
-}
-
-
-already_AddRefed<MediaRawData>
-MediaCodecDataDecoder::PeekNextSample()
-{
- MonitorAutoLock lock(mMonitor);
-
- if (mState == ModuleState::kFlushing) {
- mDecoder->Flush();
- ClearQueue();
- SetState(ModuleState::kDecoding);
- lock.Notify();
- return nullptr;
- }
-
- if (mQueue.empty()) {
- if (mState == ModuleState::kDrainQueue) {
- SetState(ModuleState::kDrainDecoder);
- }
- return nullptr;
- }
-
- // We're not stopping or flushing, so try to get a sample.
- return RefPtr<MediaRawData>(mQueue.front()).forget();
-}
-
-nsresult
-MediaCodecDataDecoder::QueueSample(const MediaRawData* aSample)
-{
- MOZ_ASSERT(aSample);
- AutoLocalJNIFrame frame(jni::GetEnvForThread(), 1);
-
- // We have a sample, try to feed it to the decoder.
- int32_t inputIndex = -1;
- nsresult res = mDecoder->DequeueInputBuffer(kDecoderTimeout, &inputIndex);
- if (NS_FAILED(res)) {
- return res;
- }
-
- if (inputIndex < 0) {
- // There is no valid input buffer available.
- return NS_ERROR_FAILURE;
- }
-
- jni::Object::LocalRef buffer(frame.GetEnv());
- res = GetInputBuffer(frame.GetEnv(), inputIndex, &buffer);
- if (NS_FAILED(res)) {
- return res;
- }
-
- void* directBuffer = frame.GetEnv()->GetDirectBufferAddress(buffer.Get());
-
- MOZ_ASSERT(frame.GetEnv()->GetDirectBufferCapacity(buffer.Get()) >=
- aSample->Size(),
- "Decoder buffer is not large enough for sample");
-
- PodCopy(static_cast<uint8_t*>(directBuffer), aSample->Data(), aSample->Size());
-
- CryptoInfo::LocalRef cryptoInfo = GetCryptoInfoFromSample(aSample);
- if (cryptoInfo) {
- res = mDecoder->QueueSecureInputBuffer(inputIndex, 0, cryptoInfo,
- aSample->mTime, 0);
- } else {
- res = mDecoder->QueueInputBuffer(inputIndex, 0, aSample->Size(),
- aSample->mTime, 0);
- }
-
- if (NS_FAILED(res)) {
- return res;
- }
-
- mDurations.push_back(TimeUnit::FromMicroseconds(aSample->mDuration));
- return NS_OK;
-}
-
-nsresult
-MediaCodecDataDecoder::QueueEOS()
-{
- mMonitor.AssertCurrentThreadOwns();
-
- nsresult res = NS_OK;
- int32_t inputIndex = -1;
- res = mDecoder->DequeueInputBuffer(kDecoderTimeout, &inputIndex);
- if (NS_FAILED(res) || inputIndex < 0) {
- return res;
- }
-
- res = mDecoder->QueueInputBuffer(inputIndex, 0, 0, 0,
- MediaCodec::BUFFER_FLAG_END_OF_STREAM);
- if (NS_SUCCEEDED(res)) {
- SetState(ModuleState::kDrainWaitEOS);
- mMonitor.Notify();
- }
- return res;
-}
-
-void
-MediaCodecDataDecoder::HandleEOS(int32_t aOutputStatus)
-{
- MonitorAutoLock lock(mMonitor);
-
- if (mState == ModuleState::kDrainWaitEOS) {
- SetState(ModuleState::kDecoding);
- mMonitor.Notify();
-
- INVOKE_CALLBACK(DrainComplete);
- }
-
- mDecoder->ReleaseOutputBuffer(aOutputStatus, false);
-}
-
-Maybe<TimeUnit>
-MediaCodecDataDecoder::GetOutputDuration()
-{
- if (mDurations.empty()) {
- return Nothing();
- }
- const Maybe<TimeUnit> duration = Some(mDurations.front());
- mDurations.pop_front();
- return duration;
-}
-
-nsresult
-MediaCodecDataDecoder::ProcessOutput(
- BufferInfo::Param aInfo, MediaFormat::Param aFormat, int32_t aStatus)
-{
- AutoLocalJNIFrame frame(jni::GetEnvForThread(), 1);
-
- const Maybe<TimeUnit> duration = GetOutputDuration();
- if (!duration) {
- // Some devices report failure in QueueSample while actually succeeding at
- // it, in which case we get an output buffer without having a cached duration
- // (bug 1273523).
- return NS_OK;
- }
-
- const auto buffer = jni::Object::LocalRef::Adopt(
- frame.GetEnv()->GetObjectArrayElement(mOutputBuffers.Get(), aStatus));
-
- if (buffer) {
- // The buffer will be null on Android L if we are decoding to a Surface.
- void* directBuffer = frame.GetEnv()->GetDirectBufferAddress(buffer.Get());
- Output(aInfo, directBuffer, aFormat, duration.value());
- }
-
- // The Surface will be updated at this point (for video).
- mDecoder->ReleaseOutputBuffer(aStatus, true);
- PostOutput(aInfo, aFormat, duration.value());
-
- return NS_OK;
-}
-
-void
-MediaCodecDataDecoder::DecoderLoop()
-{
- bool isOutputDone = false;
- AutoLocalJNIFrame frame(jni::GetEnvForThread(), 1);
- MediaFormat::LocalRef outputFormat(frame.GetEnv());
- nsresult res = NS_OK;
-
- while (WaitForInput()) {
- RefPtr<MediaRawData> sample = PeekNextSample();
-
- {
- MonitorAutoLock lock(mMonitor);
- if (mState == ModuleState::kDrainDecoder) {
- MOZ_ASSERT(!sample, "Shouldn't have a sample when pushing EOF frame");
- res = QueueEOS();
- BREAK_ON_DECODER_ERROR();
- }
- }
-
- if (sample) {
- res = QueueSample(sample);
- if (NS_SUCCEEDED(res)) {
- // We've fed this into the decoder, so remove it from the queue.
- MonitorAutoLock lock(mMonitor);
- MOZ_RELEASE_ASSERT(mQueue.size(), "Queue may not be empty");
- mQueue.pop_front();
- isOutputDone = false;
- }
- }
-
- if (isOutputDone) {
- continue;
- }
-
- BufferInfo::LocalRef bufferInfo;
- nsresult res = BufferInfo::New(&bufferInfo);
- BREAK_ON_DECODER_ERROR();
-
- int32_t outputStatus = -1;
- res = mDecoder->DequeueOutputBuffer(bufferInfo, kDecoderTimeout,
- &outputStatus);
- BREAK_ON_DECODER_ERROR();
-
- if (outputStatus == MediaCodec::INFO_TRY_AGAIN_LATER) {
- // We might want to call mCallback->InputExhausted() here, but there seems
- // to be some possible bad interactions here with the threading.
- } else if (outputStatus == MediaCodec::INFO_OUTPUT_BUFFERS_CHANGED) {
- res = ResetOutputBuffers();
- BREAK_ON_DECODER_ERROR();
- } else if (outputStatus == MediaCodec::INFO_OUTPUT_FORMAT_CHANGED) {
- res = mDecoder->GetOutputFormat(ReturnTo(&outputFormat));
- BREAK_ON_DECODER_ERROR();
- } else if (outputStatus < 0) {
- NS_WARNING("Unknown error from decoder!");
- INVOKE_CALLBACK(Error,
- MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR,
- __func__));
- // Don't break here just in case it's recoverable. If it's not, other
- // stuff will fail later and we'll bail out.
- } else {
- // We have a valid buffer index >= 0 here.
- int32_t flags;
- nsresult res = bufferInfo->Flags(&flags);
- BREAK_ON_DECODER_ERROR();
-
- if (flags & MediaCodec::BUFFER_FLAG_END_OF_STREAM) {
- HandleEOS(outputStatus);
- isOutputDone = true;
- // We only queue empty EOF frames, so we're done for now.
- continue;
- }
-
- res = ProcessOutput(bufferInfo, outputFormat, outputStatus);
- BREAK_ON_DECODER_ERROR();
- }
- }
-
- Cleanup();
-
- // We're done.
- MonitorAutoLock lock(mMonitor);
- SetState(ModuleState::kShutdown);
- mMonitor.Notify();
-}
-
-const char*
-MediaCodecDataDecoder::ModuleStateStr(ModuleState aState) {
- switch (aState) {
- case ModuleState::kDecoding: return "Decoding";
- case ModuleState::kFlushing: return "Flushing";
- case ModuleState::kDrainQueue: return "DrainQueue";
- case ModuleState::kDrainDecoder: return "DrainDecoder";
- case ModuleState::kDrainWaitEOS: return "DrainWaitEOS";
- case ModuleState::kStopping: return "Stopping";
- case ModuleState::kShutdown: return "Shutdown";
- default: MOZ_ASSERT_UNREACHABLE("Invalid state.");
- }
- return "Unknown";
-}
-
-bool
-MediaCodecDataDecoder::SetState(ModuleState aState)
-{
- bool ok = true;
-
- if (mState == ModuleState::kShutdown) {
- ok = false;
- } else if (mState == ModuleState::kStopping) {
- ok = aState == ModuleState::kShutdown;
- } else if (aState == ModuleState::kDrainDecoder) {
- ok = mState == ModuleState::kDrainQueue;
- } else if (aState == ModuleState::kDrainWaitEOS) {
- ok = mState == ModuleState::kDrainDecoder;
- }
-
- if (ok) {
- LOG("%s -> %s", ModuleStateStr(mState), ModuleStateStr(aState));
- mState = aState;
- } else {
- LOG("Fail to transit from %s to %s state", ModuleStateStr(mState), ModuleStateStr(aState));
- }
-
- return ok;
-}
-
-void
-MediaCodecDataDecoder::ClearQueue()
-{
- mMonitor.AssertCurrentThreadOwns();
-
- mQueue.clear();
- mDurations.clear();
-}
-
-void
-MediaCodecDataDecoder::Input(MediaRawData* aSample)
-{
- MonitorAutoLock lock(mMonitor);
- mQueue.push_back(aSample);
- lock.NotifyAll();
-}
-
-nsresult
-MediaCodecDataDecoder::ResetInputBuffers()
-{
- return mDecoder->GetInputBuffers(ReturnTo(&mInputBuffers));
-}
-
-nsresult
-MediaCodecDataDecoder::ResetOutputBuffers()
-{
- return mDecoder->GetOutputBuffers(ReturnTo(&mOutputBuffers));
-}
-
-void
-MediaCodecDataDecoder::Flush()
-{
- MonitorAutoLock lock(mMonitor);
- if (!SetState(ModuleState::kFlushing)) {
- return;
- }
- lock.Notify();
-
- while (mState == ModuleState::kFlushing) {
- lock.Wait();
- }
-}
-
-void
-MediaCodecDataDecoder::Drain()
-{
- MonitorAutoLock lock(mMonitor);
- if (mState == ModuleState::kDrainDecoder ||
- mState == ModuleState::kDrainQueue) {
- return;
- }
-
- SetState(ModuleState::kDrainQueue);
- lock.Notify();
-}
-
-
-void
-MediaCodecDataDecoder::Shutdown()
-{
- MonitorAutoLock lock(mMonitor);
-
- SetState(ModuleState::kStopping);
- lock.Notify();
-
- while (mThread && mState != ModuleState::kShutdown) {
- lock.Wait();
- }
-
- if (mThread) {
- mThread->Shutdown();
- mThread = nullptr;
- }
-
- if (mDecoder) {
- mDecoder->Stop();
- mDecoder->Release();
- mDecoder = nullptr;
- }
-}
-
-} // mozilla
diff --git a/dom/media/platforms/android/MediaCodecDataDecoder.h b/dom/media/platforms/android/MediaCodecDataDecoder.h
deleted file mode 100644
index 0db6407bf..000000000
--- a/dom/media/platforms/android/MediaCodecDataDecoder.h
+++ /dev/null
@@ -1,126 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef MediaCodecDataDecoder_h_
-#define MediaCodecDataDecoder_h_
-
-#include "AndroidDecoderModule.h"
-
-#include "MediaCodec.h"
-#include "SurfaceTexture.h"
-#include "TimeUnits.h"
-#include "mozilla/Monitor.h"
-#include "mozilla/Maybe.h"
-
-#include <deque>
-
-namespace mozilla {
-
-typedef std::deque<RefPtr<MediaRawData>> SampleQueue;
-
-class MediaCodecDataDecoder : public MediaDataDecoder {
-public:
- static MediaDataDecoder* CreateAudioDecoder(const AudioInfo& aConfig,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback);
-
- static MediaDataDecoder* CreateVideoDecoder(const VideoInfo& aConfig,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback,
- layers::ImageContainer* aImageContainer);
-
- virtual ~MediaCodecDataDecoder();
-
- RefPtr<MediaDataDecoder::InitPromise> Init() override;
- void Flush() override;
- void Drain() override;
- void Shutdown() override;
- void Input(MediaRawData* aSample) override;
- const char* GetDescriptionName() const override
- {
- return "Android MediaCodec decoder";
- }
-
-protected:
- enum class ModuleState : uint8_t {
- kDecoding = 0,
- kFlushing,
- kDrainQueue,
- kDrainDecoder,
- kDrainWaitEOS,
- kStopping,
- kShutdown
- };
-
- friend class AndroidDecoderModule;
-
- MediaCodecDataDecoder(MediaData::Type aType,
- const nsACString& aMimeType,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback);
-
- static const char* ModuleStateStr(ModuleState aState);
-
- virtual nsresult InitDecoder(java::sdk::Surface::Param aSurface);
-
- virtual nsresult Output(java::sdk::BufferInfo::Param aInfo, void* aBuffer,
- java::sdk::MediaFormat::Param aFormat, const media::TimeUnit& aDuration)
- {
- return NS_OK;
- }
-
- virtual nsresult PostOutput(java::sdk::BufferInfo::Param aInfo,
- java::sdk::MediaFormat::Param aFormat, const media::TimeUnit& aDuration)
- {
- return NS_OK;
- }
-
- virtual void Cleanup() {};
-
- nsresult ResetInputBuffers();
- nsresult ResetOutputBuffers();
-
- nsresult GetInputBuffer(JNIEnv* env, int index, jni::Object::LocalRef* buffer);
- bool WaitForInput();
- already_AddRefed<MediaRawData> PeekNextSample();
- nsresult QueueSample(const MediaRawData* aSample);
- nsresult QueueEOS();
- void HandleEOS(int32_t aOutputStatus);
- Maybe<media::TimeUnit> GetOutputDuration();
- nsresult ProcessOutput(java::sdk::BufferInfo::Param aInfo,
- java::sdk::MediaFormat::Param aFormat,
- int32_t aStatus);
- // Sets decoder state and returns whether the new state has become effective.
- bool SetState(ModuleState aState);
- void DecoderLoop();
-
- virtual void ClearQueue();
-
- MediaData::Type mType;
-
- nsAutoCString mMimeType;
- java::sdk::MediaFormat::GlobalRef mFormat;
-
- MediaDataDecoderCallback* mCallback;
-
- java::sdk::MediaCodec::GlobalRef mDecoder;
-
- jni::ObjectArray::GlobalRef mInputBuffers;
- jni::ObjectArray::GlobalRef mOutputBuffers;
-
- nsCOMPtr<nsIThread> mThread;
-
- // Only these members are protected by mMonitor.
- Monitor mMonitor;
-
- ModuleState mState;
-
- SampleQueue mQueue;
- // Durations are stored in microseconds.
- std::deque<media::TimeUnit> mDurations;
-};
-
-} // namespace mozilla
-
-#endif
diff --git a/dom/media/platforms/android/RemoteDataDecoder.cpp b/dom/media/platforms/android/RemoteDataDecoder.cpp
deleted file mode 100644
index 56af2601f..000000000
--- a/dom/media/platforms/android/RemoteDataDecoder.cpp
+++ /dev/null
@@ -1,489 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#include "AndroidDecoderModule.h"
-#include "AndroidBridge.h"
-#include "AndroidSurfaceTexture.h"
-#include "FennecJNINatives.h"
-#include "GLImages.h"
-
-#include "MediaData.h"
-#include "MediaInfo.h"
-#include "VideoUtils.h"
-#include "VPXDecoder.h"
-
-#include "nsThreadUtils.h"
-#include "nsPromiseFlatString.h"
-#include "nsIGfxInfo.h"
-
-#include "prlog.h"
-
-#include <jni.h>
-
-#include <deque>
-
-#undef LOG
-#define LOG(arg, ...) MOZ_LOG(sAndroidDecoderModuleLog, \
- mozilla::LogLevel::Debug, ("RemoteDataDecoder(%p)::%s: " arg, \
- this, __func__, ##__VA_ARGS__))
-
-using namespace mozilla;
-using namespace mozilla::gl;
-using namespace mozilla::java;
-using namespace mozilla::java::sdk;
-using media::TimeUnit;
-
-namespace mozilla {
-
-class JavaCallbacksSupport
- : public CodecProxy::NativeCallbacks::Natives<JavaCallbacksSupport>
-{
-public:
- typedef CodecProxy::NativeCallbacks::Natives<JavaCallbacksSupport> Base;
- using Base::AttachNative;
-
- JavaCallbacksSupport(MediaDataDecoderCallback* aDecoderCallback)
- : mDecoderCallback(aDecoderCallback)
- {
- MOZ_ASSERT(aDecoderCallback);
- }
-
- virtual ~JavaCallbacksSupport() {}
-
- void OnInputExhausted()
- {
- if (mDecoderCallback) {
- mDecoderCallback->InputExhausted();
- }
- }
-
- virtual void HandleOutput(Sample::Param aSample) = 0;
-
- void OnOutput(jni::Object::Param aSample)
- {
- if (mDecoderCallback) {
- HandleOutput(Sample::Ref::From(aSample));
- }
- }
-
- virtual void HandleOutputFormatChanged(MediaFormat::Param aFormat) {};
-
- void OnOutputFormatChanged(jni::Object::Param aFormat)
- {
- if (mDecoderCallback) {
- HandleOutputFormatChanged(MediaFormat::Ref::From(aFormat));
- }
- }
-
- void OnError(bool aIsFatal)
- {
- if (mDecoderCallback) {
- mDecoderCallback->Error(aIsFatal ?
- MediaResult(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__) :
- MediaResult(NS_ERROR_DOM_MEDIA_DECODE_ERR, __func__));
- }
- }
-
- void DisposeNative()
- {
- // TODO
- }
-
- void Cancel()
- {
- mDecoderCallback = nullptr;
- }
-
-protected:
- MediaDataDecoderCallback* mDecoderCallback;
-};
-
-struct SampleTime final
-{
- SampleTime(int64_t aStart, int64_t aDuration)
- : mStart(aStart)
- , mDuration(aDuration)
- {}
-
- int64_t mStart;
- int64_t mDuration;
-};
-
-
-class RemoteVideoDecoder final : public RemoteDataDecoder
-{
-public:
- class CallbacksSupport final : public JavaCallbacksSupport
- {
- public:
- CallbacksSupport(RemoteVideoDecoder* aDecoder, MediaDataDecoderCallback* aCallback)
- : JavaCallbacksSupport(aCallback)
- , mDecoder(aDecoder)
- {}
-
- virtual ~CallbacksSupport() {}
-
- void HandleOutput(Sample::Param aSample) override
- {
- Maybe<int64_t> durationUs = mDecoder->mInputDurations.Get();
- if (!durationUs) {
- return;
- }
-
- BufferInfo::LocalRef info = aSample->Info();
-
- int32_t flags;
- bool ok = NS_SUCCEEDED(info->Flags(&flags));
- MOZ_ASSERT(ok);
-
- int32_t offset;
- ok |= NS_SUCCEEDED(info->Offset(&offset));
- MOZ_ASSERT(ok);
-
- int64_t presentationTimeUs;
- ok |= NS_SUCCEEDED(info->PresentationTimeUs(&presentationTimeUs));
- MOZ_ASSERT(ok);
-
- int32_t size;
- ok |= NS_SUCCEEDED(info->Size(&size));
- MOZ_ASSERT(ok);
-
- NS_ENSURE_TRUE_VOID(ok);
-
- if (size > 0) {
- RefPtr<layers::Image> img =
- new SurfaceTextureImage(mDecoder->mSurfaceTexture.get(), mDecoder->mConfig.mDisplay,
- gl::OriginPos::BottomLeft);
-
- RefPtr<VideoData> v =
- VideoData::CreateFromImage(mDecoder->mConfig,
- offset,
- presentationTimeUs,
- durationUs.value(),
- img,
- !!(flags & MediaCodec::BUFFER_FLAG_SYNC_FRAME),
- presentationTimeUs,
- gfx::IntRect(0, 0,
- mDecoder->mConfig.mDisplay.width,
- mDecoder->mConfig.mDisplay.height));
-
- mDecoderCallback->Output(v);
- }
-
- if ((flags & MediaCodec::BUFFER_FLAG_END_OF_STREAM) != 0) {
- mDecoderCallback->DrainComplete();
- }
- }
-
- friend class RemoteDataDecoder;
-
- private:
- RemoteVideoDecoder* mDecoder;
- };
-
- RemoteVideoDecoder(const VideoInfo& aConfig,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback,
- layers::ImageContainer* aImageContainer)
- : RemoteDataDecoder(MediaData::Type::VIDEO_DATA, aConfig.mMimeType,
- aFormat, aCallback)
- , mImageContainer(aImageContainer)
- , mConfig(aConfig)
- {
- }
-
- RefPtr<InitPromise> Init() override
- {
- mSurfaceTexture = AndroidSurfaceTexture::Create();
- if (!mSurfaceTexture) {
- NS_WARNING("Failed to create SurfaceTexture for video decode\n");
- return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
- }
-
- if (!jni::IsFennec()) {
- NS_WARNING("Remote decoding not supported in non-Fennec environment\n");
- return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
- }
-
- // Register native methods.
- JavaCallbacksSupport::Init();
-
- mJavaCallbacks = CodecProxy::NativeCallbacks::New();
- JavaCallbacksSupport::AttachNative(mJavaCallbacks,
- mozilla::MakeUnique<CallbacksSupport>(this, mCallback));
-
- mJavaDecoder = CodecProxy::Create(mFormat, mSurfaceTexture->JavaSurface(), mJavaCallbacks);
- if (mJavaDecoder == nullptr) {
- return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
- }
-
- mInputDurations.Clear();
-
- return InitPromise::CreateAndResolve(TrackInfo::kVideoTrack, __func__);
- }
-
- void Flush() override
- {
- mInputDurations.Clear();
- RemoteDataDecoder::Flush();
- }
-
- void Drain() override
- {
- RemoteDataDecoder::Drain();
- mInputDurations.Put(0);
- }
-
- void Input(MediaRawData* aSample) override
- {
- RemoteDataDecoder::Input(aSample);
- mInputDurations.Put(aSample->mDuration);
- }
-
-private:
- class DurationQueue {
- public:
-
- void Clear()
- {
- mValues.clear();
- }
-
- void Put(int64_t aDurationUs)
- {
- mValues.emplace_back(aDurationUs);
- }
-
- Maybe<int64_t> Get()
- {
- if (mValues.empty()) {
- return Nothing();
- }
-
- auto value = Some(mValues.front());
- mValues.pop_front();
-
- return value;
- }
-
- private:
- std::deque<int64_t> mValues;
- };
-
- layers::ImageContainer* mImageContainer;
- const VideoInfo& mConfig;
- RefPtr<AndroidSurfaceTexture> mSurfaceTexture;
- DurationQueue mInputDurations;
-};
-
-class RemoteAudioDecoder final : public RemoteDataDecoder
-{
-public:
- RemoteAudioDecoder(const AudioInfo& aConfig,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback)
- : RemoteDataDecoder(MediaData::Type::AUDIO_DATA, aConfig.mMimeType,
- aFormat, aCallback)
- , mConfig(aConfig)
- {
- JNIEnv* const env = jni::GetEnvForThread();
-
- bool formatHasCSD = false;
- NS_ENSURE_SUCCESS_VOID(aFormat->ContainsKey(NS_LITERAL_STRING("csd-0"), &formatHasCSD));
-
- if (!formatHasCSD && aConfig.mCodecSpecificConfig->Length() >= 2) {
- jni::ByteBuffer::LocalRef buffer(env);
- buffer = jni::ByteBuffer::New(
- aConfig.mCodecSpecificConfig->Elements(),
- aConfig.mCodecSpecificConfig->Length());
- NS_ENSURE_SUCCESS_VOID(aFormat->SetByteBuffer(NS_LITERAL_STRING("csd-0"),
- buffer));
- }
- }
-
- RefPtr<InitPromise> Init() override
- {
- // Register native methods.
- JavaCallbacksSupport::Init();
-
- mJavaCallbacks = CodecProxy::NativeCallbacks::New();
- JavaCallbacksSupport::AttachNative(mJavaCallbacks,
- mozilla::MakeUnique<CallbacksSupport>(this, mCallback));
-
- mJavaDecoder = CodecProxy::Create(mFormat, nullptr, mJavaCallbacks);
- if (mJavaDecoder == nullptr) {
- return InitPromise::CreateAndReject(NS_ERROR_DOM_MEDIA_FATAL_ERR, __func__);
- }
-
- return InitPromise::CreateAndResolve(TrackInfo::kAudioTrack, __func__);
- }
-
-private:
- class CallbacksSupport final : public JavaCallbacksSupport
- {
- public:
- CallbacksSupport(RemoteAudioDecoder* aDecoder, MediaDataDecoderCallback* aCallback)
- : JavaCallbacksSupport(aCallback)
- , mDecoder(aDecoder)
- {}
-
- virtual ~CallbacksSupport() {}
-
- void HandleOutput(Sample::Param aSample) override
- {
- BufferInfo::LocalRef info = aSample->Info();
-
- int32_t flags;
- bool ok = NS_SUCCEEDED(info->Flags(&flags));
- MOZ_ASSERT(ok);
-
- int32_t offset;
- ok |= NS_SUCCEEDED(info->Offset(&offset));
- MOZ_ASSERT(ok);
-
- int64_t presentationTimeUs;
- ok |= NS_SUCCEEDED(info->PresentationTimeUs(&presentationTimeUs));
- MOZ_ASSERT(ok);
-
- int32_t size;
- ok |= NS_SUCCEEDED(info->Size(&size));
- MOZ_ASSERT(ok);
-
- NS_ENSURE_TRUE_VOID(ok);
-
- if (size > 0) {
-#ifdef MOZ_SAMPLE_TYPE_S16
- const int32_t numSamples = size / 2;
-#else
-#error We only support 16-bit integer PCM
-#endif
-
- const int32_t numFrames = numSamples / mOutputChannels;
- AlignedAudioBuffer audio(numSamples);
- if (!audio) {
- return;
- }
-
- jni::ByteBuffer::LocalRef dest = jni::ByteBuffer::New(audio.get(), size);
- aSample->WriteToByteBuffer(dest);
-
- RefPtr<AudioData> data = new AudioData(0, presentationTimeUs,
- FramesToUsecs(numFrames, mOutputSampleRate).value(),
- numFrames,
- Move(audio),
- mOutputChannels,
- mOutputSampleRate);
-
- mDecoderCallback->Output(data);
- }
-
- if ((flags & MediaCodec::BUFFER_FLAG_END_OF_STREAM) != 0) {
- mDecoderCallback->DrainComplete();
- return;
- }
- }
-
- void HandleOutputFormatChanged(MediaFormat::Param aFormat) override
- {
- aFormat->GetInteger(NS_LITERAL_STRING("channel-count"), &mOutputChannels);
- AudioConfig::ChannelLayout layout(mOutputChannels);
- if (!layout.IsValid()) {
- mDecoderCallback->Error(MediaResult(
- NS_ERROR_DOM_MEDIA_FATAL_ERR,
- RESULT_DETAIL("Invalid channel layout:%d", mOutputChannels)));
- return;
- }
- aFormat->GetInteger(NS_LITERAL_STRING("sample-rate"), &mOutputSampleRate);
- LOG("Audio output format changed: channels:%d sample rate:%d", mOutputChannels, mOutputSampleRate);
- }
-
- private:
- RemoteAudioDecoder* mDecoder;
- int32_t mOutputChannels;
- int32_t mOutputSampleRate;
- };
-
- const AudioInfo& mConfig;
-};
-
-MediaDataDecoder*
-RemoteDataDecoder::CreateAudioDecoder(const AudioInfo& aConfig,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback)
-{
- return new RemoteAudioDecoder(aConfig, aFormat, aCallback);
-}
-
-MediaDataDecoder*
-RemoteDataDecoder::CreateVideoDecoder(const VideoInfo& aConfig,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback,
- layers::ImageContainer* aImageContainer)
-{
- return new RemoteVideoDecoder(aConfig, aFormat, aCallback, aImageContainer);
-}
-
-RemoteDataDecoder::RemoteDataDecoder(MediaData::Type aType,
- const nsACString& aMimeType,
- MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback)
- : mType(aType)
- , mMimeType(aMimeType)
- , mFormat(aFormat)
- , mCallback(aCallback)
-{
-}
-
-void
-RemoteDataDecoder::Flush()
-{
- mJavaDecoder->Flush();
-}
-
-void
-RemoteDataDecoder::Drain()
-{
- BufferInfo::LocalRef bufferInfo;
- nsresult rv = BufferInfo::New(&bufferInfo);
- NS_ENSURE_SUCCESS_VOID(rv);
- bufferInfo->Set(0, 0, -1, MediaCodec::BUFFER_FLAG_END_OF_STREAM);
-
- mJavaDecoder->Input(nullptr, bufferInfo, nullptr);
-}
-
-void
-RemoteDataDecoder::Shutdown()
-{
- LOG("");
- MOZ_ASSERT(mJavaDecoder && mJavaCallbacks);
-
- mJavaDecoder->Release();
- mJavaDecoder = nullptr;
-
- JavaCallbacksSupport::GetNative(mJavaCallbacks)->Cancel();
- mJavaCallbacks = nullptr;
-
- mFormat = nullptr;
-}
-
-void
-RemoteDataDecoder::Input(MediaRawData* aSample)
-{
- MOZ_ASSERT(aSample != nullptr);
-
- jni::ByteBuffer::LocalRef bytes = jni::ByteBuffer::New(const_cast<uint8_t*>(aSample->Data()),
- aSample->Size());
-
- BufferInfo::LocalRef bufferInfo;
- nsresult rv = BufferInfo::New(&bufferInfo);
- if (NS_FAILED(rv)) {
- mCallback->Error(MediaResult(NS_ERROR_OUT_OF_MEMORY, __func__));
- return;
- }
- bufferInfo->Set(0, aSample->Size(), aSample->mTime, 0);
-
- mJavaDecoder->Input(bytes, bufferInfo, GetCryptoInfoFromSample(aSample));
-}
-
-} // mozilla
diff --git a/dom/media/platforms/android/RemoteDataDecoder.h b/dom/media/platforms/android/RemoteDataDecoder.h
deleted file mode 100644
index 219539a0a..000000000
--- a/dom/media/platforms/android/RemoteDataDecoder.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
-
-#ifndef RemoteDataDecoder_h_
-#define RemoteDataDecoder_h_
-
-#include "AndroidDecoderModule.h"
-
-#include "FennecJNIWrappers.h"
-
-#include "SurfaceTexture.h"
-#include "TimeUnits.h"
-#include "mozilla/Monitor.h"
-#include "mozilla/Maybe.h"
-
-#include <deque>
-
-namespace mozilla {
-
-class RemoteDataDecoder : public MediaDataDecoder {
-public:
- static MediaDataDecoder* CreateAudioDecoder(const AudioInfo& aConfig,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback);
-
- static MediaDataDecoder* CreateVideoDecoder(const VideoInfo& aConfig,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback,
- layers::ImageContainer* aImageContainer);
-
- virtual ~RemoteDataDecoder() {}
-
- void Flush() override;
- void Drain() override;
- void Shutdown() override;
- void Input(MediaRawData* aSample) override;
- const char* GetDescriptionName() const override
- {
- return "android remote decoder";
- }
-
-protected:
- RemoteDataDecoder(MediaData::Type aType,
- const nsACString& aMimeType,
- java::sdk::MediaFormat::Param aFormat,
- MediaDataDecoderCallback* aCallback);
-
- MediaData::Type mType;
-
- nsAutoCString mMimeType;
- java::sdk::MediaFormat::GlobalRef mFormat;
-
- MediaDataDecoderCallback* mCallback;
-
- java::CodecProxy::GlobalRef mJavaDecoder;
- java::CodecProxy::NativeCallbacks::GlobalRef mJavaCallbacks;
-};
-
-} // namespace mozilla
-
-#endif
diff --git a/dom/media/platforms/ffmpeg/ffmpeg57/moz.build b/dom/media/platforms/ffmpeg/ffmpeg57/moz.build
index 7a55d7685..9e4ac60b7 100644
--- a/dom/media/platforms/ffmpeg/ffmpeg57/moz.build
+++ b/dom/media/platforms/ffmpeg/ffmpeg57/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
index 7a55d7685..9e4ac60b7 100644
--- a/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
+++ b/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/ffmpeg/ffvpx/moz.build b/dom/media/platforms/ffmpeg/ffvpx/moz.build
index 95f8eec65..c060efbd7 100644
--- a/dom/media/platforms/ffmpeg/ffvpx/moz.build
+++ b/dom/media/platforms/ffmpeg/ffvpx/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/ffmpeg/libav53/moz.build b/dom/media/platforms/ffmpeg/libav53/moz.build
index 471edd701..0ed3423e1 100644
--- a/dom/media/platforms/ffmpeg/libav53/moz.build
+++ b/dom/media/platforms/ffmpeg/libav53/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/ffmpeg/libav54/moz.build b/dom/media/platforms/ffmpeg/libav54/moz.build
index 471edd701..0ed3423e1 100644
--- a/dom/media/platforms/ffmpeg/libav54/moz.build
+++ b/dom/media/platforms/ffmpeg/libav54/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/ffmpeg/libav55/moz.build b/dom/media/platforms/ffmpeg/libav55/moz.build
index 7a55d7685..9e4ac60b7 100644
--- a/dom/media/platforms/ffmpeg/libav55/moz.build
+++ b/dom/media/platforms/ffmpeg/libav55/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/ffmpeg/moz.build b/dom/media/platforms/ffmpeg/moz.build
index e42a8aa4d..ac1e56634 100644
--- a/dom/media/platforms/ffmpeg/moz.build
+++ b/dom/media/platforms/ffmpeg/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/moz.build b/dom/media/platforms/moz.build
index 23bea20dd..a32476133 100644
--- a/dom/media/platforms/moz.build
+++ b/dom/media/platforms/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
@@ -81,16 +80,6 @@ if CONFIG['MOZ_APPLEMEDIA']:
include('/ipc/chromium/chromium-config.mozbuild')
-if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android':
- EXPORTS += [
- 'android/AndroidDecoderModule.h',
- ]
- SOURCES += [
- 'android/AndroidDecoderModule.cpp',
- 'android/MediaCodecDataDecoder.cpp',
- 'android/RemoteDataDecoder.cpp',
- ]
-
FINAL_LIBRARY = 'xul'
if CONFIG['GNU_CXX']:
diff --git a/dom/media/platforms/omx/moz.build b/dom/media/platforms/omx/moz.build
index ee7202bd3..c69cff780 100644
--- a/dom/media/platforms/omx/moz.build
+++ b/dom/media/platforms/omx/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/platforms/wmf/moz.build b/dom/media/platforms/wmf/moz.build
index 83c2249e1..fef9335bd 100644
--- a/dom/media/platforms/wmf/moz.build
+++ b/dom/media/platforms/wmf/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/standalone/moz.build b/dom/media/standalone/moz.build
index a3cc3545f..7ef15adaa 100644
--- a/dom/media/standalone/moz.build
+++ b/dom/media/standalone/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/systemservices/CamerasChild.cpp b/dom/media/systemservices/CamerasChild.cpp
index a3fbec850..abbcc9e22 100644
--- a/dom/media/systemservices/CamerasChild.cpp
+++ b/dom/media/systemservices/CamerasChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/CamerasChild.h b/dom/media/systemservices/CamerasChild.h
index 9ca125cfd..6d67089c0 100644
--- a/dom/media/systemservices/CamerasChild.h
+++ b/dom/media/systemservices/CamerasChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/CamerasParent.cpp b/dom/media/systemservices/CamerasParent.cpp
index 808a076d7..92ebcf155 100644
--- a/dom/media/systemservices/CamerasParent.cpp
+++ b/dom/media/systemservices/CamerasParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/CamerasParent.h b/dom/media/systemservices/CamerasParent.h
index 2c1869410..958d57237 100644
--- a/dom/media/systemservices/CamerasParent.h
+++ b/dom/media/systemservices/CamerasParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/CamerasTypes.h b/dom/media/systemservices/CamerasTypes.h
index 9ae564e9a..8cc51d431 100644
--- a/dom/media/systemservices/CamerasTypes.h
+++ b/dom/media/systemservices/CamerasTypes.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/DeviceChangeCallback.h b/dom/media/systemservices/DeviceChangeCallback.h
index d153e9cd4..c1f87fa08 100644
--- a/dom/media/systemservices/DeviceChangeCallback.h
+++ b/dom/media/systemservices/DeviceChangeCallback.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/MediaChild.cpp b/dom/media/systemservices/MediaChild.cpp
index 327ea3c4a..21eefd116 100644
--- a/dom/media/systemservices/MediaChild.cpp
+++ b/dom/media/systemservices/MediaChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/MediaChild.h b/dom/media/systemservices/MediaChild.h
index b013c4a5f..603d2825b 100644
--- a/dom/media/systemservices/MediaChild.h
+++ b/dom/media/systemservices/MediaChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/MediaParent.cpp b/dom/media/systemservices/MediaParent.cpp
index 16c399f37..f211756f9 100644
--- a/dom/media/systemservices/MediaParent.cpp
+++ b/dom/media/systemservices/MediaParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/MediaParent.h b/dom/media/systemservices/MediaParent.h
index b5dcd84ad..12a6f1d9b 100644
--- a/dom/media/systemservices/MediaParent.h
+++ b/dom/media/systemservices/MediaParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/MediaTaskUtils.h b/dom/media/systemservices/MediaTaskUtils.h
index c9b64fd2a..c4aefbd20 100644
--- a/dom/media/systemservices/MediaTaskUtils.h
+++ b/dom/media/systemservices/MediaTaskUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/MediaUtils.cpp b/dom/media/systemservices/MediaUtils.cpp
index a77e3404a..7feabf9f9 100644
--- a/dom/media/systemservices/MediaUtils.cpp
+++ b/dom/media/systemservices/MediaUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/MediaUtils.h b/dom/media/systemservices/MediaUtils.h
index 18f7d3e41..0a0bb51f7 100644
--- a/dom/media/systemservices/MediaUtils.h
+++ b/dom/media/systemservices/MediaUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/ShmemPool.cpp b/dom/media/systemservices/ShmemPool.cpp
index 334a94e35..0945be7ac 100644
--- a/dom/media/systemservices/ShmemPool.cpp
+++ b/dom/media/systemservices/ShmemPool.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/ShmemPool.h b/dom/media/systemservices/ShmemPool.h
index 95901ffa0..c209f2f63 100644
--- a/dom/media/systemservices/ShmemPool.h
+++ b/dom/media/systemservices/ShmemPool.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/systemservices/moz.build b/dom/media/systemservices/moz.build
index c582b7ba1..aa07b291a 100644
--- a/dom/media/systemservices/moz.build
+++ b/dom/media/systemservices/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/test/dash_detect_stream_switch.sjs b/dom/media/test/dash_detect_stream_switch.sjs
index 378db10ca..fb4c8a30e 100644
--- a/dom/media/test/dash_detect_stream_switch.sjs
+++ b/dom/media/test/dash_detect_stream_switch.sjs
@@ -1,5 +1,4 @@
/* -*- Mode: JavaScript; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/wave/moz.build b/dom/media/wave/moz.build
index d62d3bea4..9c3920570 100644
--- a/dom/media/wave/moz.build
+++ b/dom/media/wave/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webaudio/BufferDecoder.cpp b/dom/media/webaudio/BufferDecoder.cpp
index 053a13bec..ddd9e7d1b 100644
--- a/dom/media/webaudio/BufferDecoder.cpp
+++ b/dom/media/webaudio/BufferDecoder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webaudio/BufferDecoder.h b/dom/media/webaudio/BufferDecoder.h
index 52cb92489..2c6c49454 100644
--- a/dom/media/webaudio/BufferDecoder.h
+++ b/dom/media/webaudio/BufferDecoder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webaudio/blink/moz.build b/dom/media/webaudio/blink/moz.build
index 385614de7..99067248d 100644
--- a/dom/media/webaudio/blink/moz.build
+++ b/dom/media/webaudio/blink/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webaudio/gtest/TestAudioEventTimeline.cpp b/dom/media/webaudio/gtest/TestAudioEventTimeline.cpp
index cc731d3e2..661b6cbd2 100644
--- a/dom/media/webaudio/gtest/TestAudioEventTimeline.cpp
+++ b/dom/media/webaudio/gtest/TestAudioEventTimeline.cpp
@@ -9,17 +9,6 @@
#include <limits>
#include "gtest/gtest.h"
-// Mock the MediaStream class
-namespace mozilla {
-class MediaStream
-{
- NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MediaStream)
-private:
- ~MediaStream() {
- };
-};
-}
-
using namespace mozilla;
using namespace mozilla::dom;
using std::numeric_limits;
diff --git a/dom/media/webaudio/gtest/moz.build b/dom/media/webaudio/gtest/moz.build
index 2cc13b038..200cd4a7e 100644
--- a/dom/media/webaudio/gtest/moz.build
+++ b/dom/media/webaudio/gtest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webaudio/moz.build b/dom/media/webaudio/moz.build
index c4bfcea60..fa97fd20f 100644
--- a/dom/media/webaudio/moz.build
+++ b/dom/media/webaudio/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webm/moz.build b/dom/media/webm/moz.build
index 4dacfe095..dc9f30668 100644
--- a/dom/media/webm/moz.build
+++ b/dom/media/webm/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webrtc/MediaEngineRemoteVideoSource.h b/dom/media/webrtc/MediaEngineRemoteVideoSource.h
index 923e65654..712761f97 100644
--- a/dom/media/webrtc/MediaEngineRemoteVideoSource.h
+++ b/dom/media/webrtc/MediaEngineRemoteVideoSource.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/webrtc/MediaEngineWebRTC.cpp b/dom/media/webrtc/MediaEngineWebRTC.cpp
index a77800424..6697ca56a 100644
--- a/dom/media/webrtc/MediaEngineWebRTC.cpp
+++ b/dom/media/webrtc/MediaEngineWebRTC.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et ft=cpp : */
/* 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/. */
diff --git a/dom/media/webrtc/RTCCertificate.cpp b/dom/media/webrtc/RTCCertificate.cpp
index 9f5e27c56..9e87044d6 100644
--- a/dom/media/webrtc/RTCCertificate.cpp
+++ b/dom/media/webrtc/RTCCertificate.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webrtc/RTCCertificate.h b/dom/media/webrtc/RTCCertificate.h
index 63869849c..043edddb4 100644
--- a/dom/media/webrtc/RTCCertificate.h
+++ b/dom/media/webrtc/RTCCertificate.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webrtc/moz.build b/dom/media/webrtc/moz.build
index 5b76e17cb..4c53406e0 100644
--- a/dom/media/webrtc/moz.build
+++ b/dom/media/webrtc/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webspeech/moz.build b/dom/media/webspeech/moz.build
index c61c63b72..2f7c58fcb 100644
--- a/dom/media/webspeech/moz.build
+++ b/dom/media/webspeech/moz.build
@@ -1,4 +1,3 @@
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerModule.cpp b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerModule.cpp
index bc80eb06e..ef6917000 100644
--- a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerModule.cpp
+++ b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerModule.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.h b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.h
index 18f52e59e..ba04f0fec 100644
--- a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.h
+++ b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
index df6c5eaa0..ec752e00f 100644
--- a/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
+++ b/dom/media/webspeech/synth/cocoa/OSXSpeechSynthesizerService.mm
@@ -1,5 +1,4 @@
/* -*- Mode: Objective-C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 sw=2 et tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/cocoa/moz.build b/dom/media/webspeech/synth/cocoa/moz.build
index b48680c7a..6953a81e9 100644
--- a/dom/media/webspeech/synth/cocoa/moz.build
+++ b/dom/media/webspeech/synth/cocoa/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webspeech/synth/ipc/PSpeechSynthesis.ipdl b/dom/media/webspeech/synth/ipc/PSpeechSynthesis.ipdl
index 7b66034e4..8d203efa8 100644
--- a/dom/media/webspeech/synth/ipc/PSpeechSynthesis.ipdl
+++ b/dom/media/webspeech/synth/ipc/PSpeechSynthesis.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/ipc/PSpeechSynthesisRequest.ipdl b/dom/media/webspeech/synth/ipc/PSpeechSynthesisRequest.ipdl
index 9ffea29f5..4b71eadc7 100644
--- a/dom/media/webspeech/synth/ipc/PSpeechSynthesisRequest.ipdl
+++ b/dom/media/webspeech/synth/ipc/PSpeechSynthesisRequest.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/moz.build b/dom/media/webspeech/synth/moz.build
index 3f4e363db..660368926 100644
--- a/dom/media/webspeech/synth/moz.build
+++ b/dom/media/webspeech/synth/moz.build
@@ -1,4 +1,3 @@
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webspeech/synth/pico/moz.build b/dom/media/webspeech/synth/pico/moz.build
index 8c360bc85..a889f891d 100644
--- a/dom/media/webspeech/synth/pico/moz.build
+++ b/dom/media/webspeech/synth/pico/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webspeech/synth/speechd/SpeechDispatcherModule.cpp b/dom/media/webspeech/synth/speechd/SpeechDispatcherModule.cpp
index a7f7ad535..e9a309401 100644
--- a/dom/media/webspeech/synth/speechd/SpeechDispatcherModule.cpp
+++ b/dom/media/webspeech/synth/speechd/SpeechDispatcherModule.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/speechd/SpeechDispatcherService.cpp b/dom/media/webspeech/synth/speechd/SpeechDispatcherService.cpp
index 77a8f7cd9..234d61dd0 100644
--- a/dom/media/webspeech/synth/speechd/SpeechDispatcherService.cpp
+++ b/dom/media/webspeech/synth/speechd/SpeechDispatcherService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/speechd/SpeechDispatcherService.h b/dom/media/webspeech/synth/speechd/SpeechDispatcherService.h
index 07798ceda..f1f226a0a 100644
--- a/dom/media/webspeech/synth/speechd/SpeechDispatcherService.h
+++ b/dom/media/webspeech/synth/speechd/SpeechDispatcherService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/speechd/moz.build b/dom/media/webspeech/synth/speechd/moz.build
index 552ccf856..9cea481fb 100644
--- a/dom/media/webspeech/synth/speechd/moz.build
+++ b/dom/media/webspeech/synth/speechd/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webspeech/synth/windows/SapiModule.cpp b/dom/media/webspeech/synth/windows/SapiModule.cpp
index f9d7c9a89..f3fb5ae43 100644
--- a/dom/media/webspeech/synth/windows/SapiModule.cpp
+++ b/dom/media/webspeech/synth/windows/SapiModule.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/windows/SapiService.cpp b/dom/media/webspeech/synth/windows/SapiService.cpp
index 95f35ebff..2aa4bcc4b 100644
--- a/dom/media/webspeech/synth/windows/SapiService.cpp
+++ b/dom/media/webspeech/synth/windows/SapiService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/windows/SapiService.h b/dom/media/webspeech/synth/windows/SapiService.h
index cde743cc2..ff692b92e 100644
--- a/dom/media/webspeech/synth/windows/SapiService.h
+++ b/dom/media/webspeech/synth/windows/SapiService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/media/webspeech/synth/windows/moz.build b/dom/media/webspeech/synth/windows/moz.build
index 2ab20c05a..9d8bb3ac6 100644
--- a/dom/media/webspeech/synth/windows/moz.build
+++ b/dom/media/webspeech/synth/windows/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/media/webvtt/moz.build b/dom/media/webvtt/moz.build
index bd65114ce..dea747dbd 100644
--- a/dom/media/webvtt/moz.build
+++ b/dom/media/webvtt/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/messagechannel/MessageChannel.cpp b/dom/messagechannel/MessageChannel.cpp
index a0604ae4a..64508f687 100644
--- a/dom/messagechannel/MessageChannel.cpp
+++ b/dom/messagechannel/MessageChannel.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/messagechannel/MessageChannel.h b/dom/messagechannel/MessageChannel.h
index a9c952181..f29236e0d 100644
--- a/dom/messagechannel/MessageChannel.h
+++ b/dom/messagechannel/MessageChannel.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/messagechannel/MessagePort.cpp b/dom/messagechannel/MessagePort.cpp
index fcbe36a72..6f7a1abc1 100644
--- a/dom/messagechannel/MessagePort.cpp
+++ b/dom/messagechannel/MessagePort.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/messagechannel/MessagePort.h b/dom/messagechannel/MessagePort.h
index afa909195..0ed2af11c 100644
--- a/dom/messagechannel/MessagePort.h
+++ b/dom/messagechannel/MessagePort.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/messagechannel/MessagePortService.cpp b/dom/messagechannel/MessagePortService.cpp
index a2d495d77..c76d9382b 100644
--- a/dom/messagechannel/MessagePortService.cpp
+++ b/dom/messagechannel/MessagePortService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/messagechannel/moz.build b/dom/messagechannel/moz.build
index 6ace4d77f..adeca8625 100644
--- a/dom/messagechannel/moz.build
+++ b/dom/messagechannel/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/messagechannel/tests/moz.build b/dom/messagechannel/tests/moz.build
index 42fcbb69e..83596a46c 100644
--- a/dom/messagechannel/tests/moz.build
+++ b/dom/messagechannel/tests/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/moz.build b/dom/moz.build
index e232f3443..f02a4a5d6 100644
--- a/dom/moz.build
+++ b/dom/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/network/Connection.cpp b/dom/network/Connection.cpp
index 3bf6f4038..0344435b6 100644
--- a/dom/network/Connection.cpp
+++ b/dom/network/Connection.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/Connection.h b/dom/network/Connection.h
index 907aea144..398d6c199 100644
--- a/dom/network/Connection.h
+++ b/dom/network/Connection.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/Constants.h b/dom/network/Constants.h
index 08ce9d29e..7ee6150cb 100644
--- a/dom/network/Constants.h
+++ b/dom/network/Constants.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/PTCPServerSocket.ipdl b/dom/network/PTCPServerSocket.ipdl
index fc92f0146..07443e342 100644
--- a/dom/network/PTCPServerSocket.ipdl
+++ b/dom/network/PTCPServerSocket.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et tw=80 ft=cpp : */
/* 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
diff --git a/dom/network/PTCPSocket.ipdl b/dom/network/PTCPSocket.ipdl
index 5c9c1c862..aa7c51e45 100644
--- a/dom/network/PTCPSocket.ipdl
+++ b/dom/network/PTCPSocket.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et tw=80 ft=cpp : */
/* 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
diff --git a/dom/network/PUDPSocket.ipdl b/dom/network/PUDPSocket.ipdl
index a104de308..b96f4b7de 100644
--- a/dom/network/PUDPSocket.ipdl
+++ b/dom/network/PUDPSocket.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set sw=2 ts=8 et tw=80 ft=cpp : */
/* 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
diff --git a/dom/network/TCPServerSocketChild.cpp b/dom/network/TCPServerSocketChild.cpp
index f3218ced6..80677115a 100644
--- a/dom/network/TCPServerSocketChild.cpp
+++ b/dom/network/TCPServerSocketChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/TCPServerSocketChild.h b/dom/network/TCPServerSocketChild.h
index 77dbc59c6..c3a5f78fe 100644
--- a/dom/network/TCPServerSocketChild.h
+++ b/dom/network/TCPServerSocketChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/TCPServerSocketParent.cpp b/dom/network/TCPServerSocketParent.cpp
index aec0ad198..8e05c6088 100644
--- a/dom/network/TCPServerSocketParent.cpp
+++ b/dom/network/TCPServerSocketParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/TCPServerSocketParent.h b/dom/network/TCPServerSocketParent.h
index 071183366..bd88fd45b 100644
--- a/dom/network/TCPServerSocketParent.h
+++ b/dom/network/TCPServerSocketParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/TCPSocketChild.cpp b/dom/network/TCPSocketChild.cpp
index 72581ca9d..9e1dce276 100644
--- a/dom/network/TCPSocketChild.cpp
+++ b/dom/network/TCPSocketChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/TCPSocketChild.h b/dom/network/TCPSocketChild.h
index af233d311..7e9b59e8b 100644
--- a/dom/network/TCPSocketChild.h
+++ b/dom/network/TCPSocketChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/TCPSocketParent.cpp b/dom/network/TCPSocketParent.cpp
index 5fd53067d..313d13f75 100644
--- a/dom/network/TCPSocketParent.cpp
+++ b/dom/network/TCPSocketParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/TCPSocketParent.h b/dom/network/TCPSocketParent.h
index e44e340bb..07112f1e2 100644
--- a/dom/network/TCPSocketParent.h
+++ b/dom/network/TCPSocketParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/Types.h b/dom/network/Types.h
index 5f81a8440..4c1b38ac6 100644
--- a/dom/network/Types.h
+++ b/dom/network/Types.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/UDPSocket.cpp b/dom/network/UDPSocket.cpp
index 3e18463ae..e6f0566a6 100644
--- a/dom/network/UDPSocket.cpp
+++ b/dom/network/UDPSocket.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/UDPSocket.h b/dom/network/UDPSocket.h
index 12427d1dd..29677ce17 100644
--- a/dom/network/UDPSocket.h
+++ b/dom/network/UDPSocket.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/UDPSocketChild.cpp b/dom/network/UDPSocketChild.cpp
index 9d6ec0978..98aeb4f6b 100644
--- a/dom/network/UDPSocketChild.cpp
+++ b/dom/network/UDPSocketChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/UDPSocketChild.h b/dom/network/UDPSocketChild.h
index 5794b7d46..2269c7863 100644
--- a/dom/network/UDPSocketChild.h
+++ b/dom/network/UDPSocketChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/UDPSocketParent.cpp b/dom/network/UDPSocketParent.cpp
index 2f258badb..5e75d01d3 100644
--- a/dom/network/UDPSocketParent.cpp
+++ b/dom/network/UDPSocketParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/UDPSocketParent.h b/dom/network/UDPSocketParent.h
index 4b828e013..ddad9b912 100644
--- a/dom/network/UDPSocketParent.h
+++ b/dom/network/UDPSocketParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/network/interfaces/moz.build b/dom/network/interfaces/moz.build
index ad2e56bd6..6b7a1829c 100644
--- a/dom/network/interfaces/moz.build
+++ b/dom/network/interfaces/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/network/moz.build b/dom/network/moz.build
index 79f8fe009..cc60ac790 100644
--- a/dom/network/moz.build
+++ b/dom/network/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/notification/DesktopNotification.cpp b/dom/notification/DesktopNotification.cpp
index 76f1c5afb..fcb638571 100644
--- a/dom/notification/DesktopNotification.cpp
+++ b/dom/notification/DesktopNotification.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/notification/DesktopNotification.h b/dom/notification/DesktopNotification.h
index 5fd5e4c03..4d389fe89 100644
--- a/dom/notification/DesktopNotification.h
+++ b/dom/notification/DesktopNotification.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/notification/Notification.cpp b/dom/notification/Notification.cpp
index a5aa48b00..9a7c83379 100644
--- a/dom/notification/Notification.cpp
+++ b/dom/notification/Notification.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/notification/Notification.h b/dom/notification/Notification.h
index 11958f6ad..d8a17de0f 100644
--- a/dom/notification/Notification.h
+++ b/dom/notification/Notification.h
@@ -1,4 +1,4 @@
-/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- *//* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* -*- Mode: C++; tab-width: 8; 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/. */
diff --git a/dom/notification/NotificationEvent.cpp b/dom/notification/NotificationEvent.cpp
index 765dd68cb..7b64efb23 100644
--- a/dom/notification/NotificationEvent.cpp
+++ b/dom/notification/NotificationEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/notification/moz.build b/dom/notification/moz.build
index 8297daa6b..b5bbd23ab 100644
--- a/dom/notification/moz.build
+++ b/dom/notification/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/offline/moz.build b/dom/offline/moz.build
index 2baa12496..b35f27bc9 100644
--- a/dom/offline/moz.build
+++ b/dom/offline/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/offline/nsDOMOfflineResourceList.cpp b/dom/offline/nsDOMOfflineResourceList.cpp
index fa3409ff4..55acfddd9 100644
--- a/dom/offline/nsDOMOfflineResourceList.cpp
+++ b/dom/offline/nsDOMOfflineResourceList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/offline/nsDOMOfflineResourceList.h b/dom/offline/nsDOMOfflineResourceList.h
index 94c4ba775..72ac52bb2 100644
--- a/dom/offline/nsDOMOfflineResourceList.h
+++ b/dom/offline/nsDOMOfflineResourceList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/Performance.cpp b/dom/performance/Performance.cpp
index a1e28bc55..020dc0d89 100755
--- a/dom/performance/Performance.cpp
+++ b/dom/performance/Performance.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/Performance.h b/dom/performance/Performance.h
index c40dd8aff..2574fcdd3 100644
--- a/dom/performance/Performance.h
+++ b/dom/performance/Performance.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceEntry.cpp b/dom/performance/PerformanceEntry.cpp
index 8a4bc4c71..5a7ed6903 100644
--- a/dom/performance/PerformanceEntry.cpp
+++ b/dom/performance/PerformanceEntry.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceEntry.h b/dom/performance/PerformanceEntry.h
index 0af9f669e..71b363852 100644
--- a/dom/performance/PerformanceEntry.h
+++ b/dom/performance/PerformanceEntry.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceMainThread.cpp b/dom/performance/PerformanceMainThread.cpp
index 60eccf595..acb69ea35 100644
--- a/dom/performance/PerformanceMainThread.cpp
+++ b/dom/performance/PerformanceMainThread.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceMainThread.h b/dom/performance/PerformanceMainThread.h
index a90a53520..35fd4ab0e 100644
--- a/dom/performance/PerformanceMainThread.h
+++ b/dom/performance/PerformanceMainThread.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceMark.cpp b/dom/performance/PerformanceMark.cpp
index 30abde65d..c37d057b6 100644
--- a/dom/performance/PerformanceMark.cpp
+++ b/dom/performance/PerformanceMark.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceMark.h b/dom/performance/PerformanceMark.h
index 52ad49805..a080af6a8 100644
--- a/dom/performance/PerformanceMark.h
+++ b/dom/performance/PerformanceMark.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceMeasure.cpp b/dom/performance/PerformanceMeasure.cpp
index d91589fda..2e429e681 100644
--- a/dom/performance/PerformanceMeasure.cpp
+++ b/dom/performance/PerformanceMeasure.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceMeasure.h b/dom/performance/PerformanceMeasure.h
index 241ec0d5b..5e70420d9 100644
--- a/dom/performance/PerformanceMeasure.h
+++ b/dom/performance/PerformanceMeasure.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceNavigation.cpp b/dom/performance/PerformanceNavigation.cpp
index 474e6c261..24b3af11f 100644
--- a/dom/performance/PerformanceNavigation.cpp
+++ b/dom/performance/PerformanceNavigation.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceNavigation.h b/dom/performance/PerformanceNavigation.h
index ee49b6b12..1a2f4c1e5 100644
--- a/dom/performance/PerformanceNavigation.h
+++ b/dom/performance/PerformanceNavigation.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceNavigationTiming.cpp b/dom/performance/PerformanceNavigationTiming.cpp
index d7e16725a..37d54366c 100644
--- a/dom/performance/PerformanceNavigationTiming.cpp
+++ b/dom/performance/PerformanceNavigationTiming.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceNavigationTiming.h b/dom/performance/PerformanceNavigationTiming.h
index 8555f1987..f528c5337 100644
--- a/dom/performance/PerformanceNavigationTiming.h
+++ b/dom/performance/PerformanceNavigationTiming.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceObserver.cpp b/dom/performance/PerformanceObserver.cpp
index 7bf194bb7..26f93e8fc 100644
--- a/dom/performance/PerformanceObserver.cpp
+++ b/dom/performance/PerformanceObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceObserver.h b/dom/performance/PerformanceObserver.h
index a02c960cd..283000d58 100644
--- a/dom/performance/PerformanceObserver.h
+++ b/dom/performance/PerformanceObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceObserverEntryList.cpp b/dom/performance/PerformanceObserverEntryList.cpp
index 20e818f3d..d5c1ecb19 100644
--- a/dom/performance/PerformanceObserverEntryList.cpp
+++ b/dom/performance/PerformanceObserverEntryList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceObserverEntryList.h b/dom/performance/PerformanceObserverEntryList.h
index e78ce7dfb..9955b5813 100644
--- a/dom/performance/PerformanceObserverEntryList.h
+++ b/dom/performance/PerformanceObserverEntryList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceResourceTiming.cpp b/dom/performance/PerformanceResourceTiming.cpp
index 9c5475041..6f84896af 100644
--- a/dom/performance/PerformanceResourceTiming.cpp
+++ b/dom/performance/PerformanceResourceTiming.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceResourceTiming.h b/dom/performance/PerformanceResourceTiming.h
index 98a03327e..61ad8f0c6 100644
--- a/dom/performance/PerformanceResourceTiming.h
+++ b/dom/performance/PerformanceResourceTiming.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceService.cpp b/dom/performance/PerformanceService.cpp
index 21d1aaa26..c613db30d 100644
--- a/dom/performance/PerformanceService.cpp
+++ b/dom/performance/PerformanceService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceService.h b/dom/performance/PerformanceService.h
index 9abbd674d..c74816047 100644
--- a/dom/performance/PerformanceService.h
+++ b/dom/performance/PerformanceService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceTiming.cpp b/dom/performance/PerformanceTiming.cpp
index f1d75ca03..5c33457d0 100755
--- a/dom/performance/PerformanceTiming.cpp
+++ b/dom/performance/PerformanceTiming.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceTiming.h b/dom/performance/PerformanceTiming.h
index 435e1bca1..c0d4b6237 100755
--- a/dom/performance/PerformanceTiming.h
+++ b/dom/performance/PerformanceTiming.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceWorker.cpp b/dom/performance/PerformanceWorker.cpp
index f10c58446..1fa8cd935 100644
--- a/dom/performance/PerformanceWorker.cpp
+++ b/dom/performance/PerformanceWorker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/PerformanceWorker.h b/dom/performance/PerformanceWorker.h
index ffe2a1998..3604e6874 100644
--- a/dom/performance/PerformanceWorker.h
+++ b/dom/performance/PerformanceWorker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/performance/moz.build b/dom/performance/moz.build
index 454f8f544..276d4625f 100644
--- a/dom/performance/moz.build
+++ b/dom/performance/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/permission/PermissionObserver.cpp b/dom/permission/PermissionObserver.cpp
index beda385e7..7eee386af 100644
--- a/dom/permission/PermissionObserver.cpp
+++ b/dom/permission/PermissionObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/permission/PermissionObserver.h b/dom/permission/PermissionObserver.h
index e92452b8d..7862e13bb 100644
--- a/dom/permission/PermissionObserver.h
+++ b/dom/permission/PermissionObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/permission/PermissionStatus.cpp b/dom/permission/PermissionStatus.cpp
index 680ece1d0..eaea96789 100644
--- a/dom/permission/PermissionStatus.cpp
+++ b/dom/permission/PermissionStatus.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/permission/PermissionStatus.h b/dom/permission/PermissionStatus.h
index e10f86aaa..e5797779c 100644
--- a/dom/permission/PermissionStatus.h
+++ b/dom/permission/PermissionStatus.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/permission/PermissionUtils.cpp b/dom/permission/PermissionUtils.cpp
index a1d4fea43..1facf6b8d 100644
--- a/dom/permission/PermissionUtils.cpp
+++ b/dom/permission/PermissionUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/permission/PermissionUtils.h b/dom/permission/PermissionUtils.h
index 34bf7573d..1f804ce72 100644
--- a/dom/permission/PermissionUtils.h
+++ b/dom/permission/PermissionUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/permission/Permissions.cpp b/dom/permission/Permissions.cpp
index 99654055a..67b2a4de6 100644
--- a/dom/permission/Permissions.cpp
+++ b/dom/permission/Permissions.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/permission/Permissions.h b/dom/permission/Permissions.h
index 4fcaa5734..ac9f09e0e 100644
--- a/dom/permission/Permissions.h
+++ b/dom/permission/Permissions.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/permission/moz.build b/dom/permission/moz.build
index ea17c738f..0da359437 100644
--- a/dom/permission/moz.build
+++ b/dom/permission/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/base/moz.build b/dom/plugins/base/moz.build
index d63ca51ce..08f87d56a 100644
--- a/dom/plugins/base/moz.build
+++ b/dom/plugins/base/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/ipc/MiniShmParent.cpp b/dom/plugins/ipc/MiniShmParent.cpp
index eb0b16c8a..d3e75ad9c 100644
--- a/dom/plugins/ipc/MiniShmParent.cpp
+++ b/dom/plugins/ipc/MiniShmParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/MiniShmParent.h b/dom/plugins/ipc/MiniShmParent.h
index dc6cd8b18..d6a7ccccd 100644
--- a/dom/plugins/ipc/MiniShmParent.h
+++ b/dom/plugins/ipc/MiniShmParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/NPEventOSX.h b/dom/plugins/ipc/NPEventOSX.h
index ca1736a8a..efb6845d0 100644
--- a/dom/plugins/ipc/NPEventOSX.h
+++ b/dom/plugins/ipc/NPEventOSX.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/plugins/ipc/NPEventUnix.h b/dom/plugins/ipc/NPEventUnix.h
index 4cc9a5456..2a1945837 100644
--- a/dom/plugins/ipc/NPEventUnix.h
+++ b/dom/plugins/ipc/NPEventUnix.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/plugins/ipc/NPEventWindows.h b/dom/plugins/ipc/NPEventWindows.h
index faf93a601..e3462dd93 100644
--- a/dom/plugins/ipc/NPEventWindows.h
+++ b/dom/plugins/ipc/NPEventWindows.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/plugins/ipc/PluginAsyncSurrogate.cpp b/dom/plugins/ipc/PluginAsyncSurrogate.cpp
index 3fe4c7168..9e41cb561 100644
--- a/dom/plugins/ipc/PluginAsyncSurrogate.cpp
+++ b/dom/plugins/ipc/PluginAsyncSurrogate.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/PluginAsyncSurrogate.h b/dom/plugins/ipc/PluginAsyncSurrogate.h
index 8e69a57a4..f413cdf11 100644
--- a/dom/plugins/ipc/PluginAsyncSurrogate.h
+++ b/dom/plugins/ipc/PluginAsyncSurrogate.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/PluginDataResolver.h b/dom/plugins/ipc/PluginDataResolver.h
index 8371c4df7..f700552e1 100644
--- a/dom/plugins/ipc/PluginDataResolver.h
+++ b/dom/plugins/ipc/PluginDataResolver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/PluginHangUIParent.cpp b/dom/plugins/ipc/PluginHangUIParent.cpp
index 908182a22..abffc7b10 100644
--- a/dom/plugins/ipc/PluginHangUIParent.cpp
+++ b/dom/plugins/ipc/PluginHangUIParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/PluginHangUIParent.h b/dom/plugins/ipc/PluginHangUIParent.h
index 8a6b2e6cb..6e22036df 100644
--- a/dom/plugins/ipc/PluginHangUIParent.h
+++ b/dom/plugins/ipc/PluginHangUIParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/PluginMessageUtils.cpp b/dom/plugins/ipc/PluginMessageUtils.cpp
index 5b1d1667f..be1b2d15a 100644
--- a/dom/plugins/ipc/PluginMessageUtils.cpp
+++ b/dom/plugins/ipc/PluginMessageUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8; -*- */
-/* vim: set sw=2 ts=8 et tw=80 : */
/* 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/. */
diff --git a/dom/plugins/ipc/PluginModuleChild.cpp b/dom/plugins/ipc/PluginModuleChild.cpp
index 98c9cd494..1e65345fd 100644
--- a/dom/plugins/ipc/PluginModuleChild.cpp
+++ b/dom/plugins/ipc/PluginModuleChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set sw=4 ts=4 et : */
/* 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/. */
diff --git a/dom/plugins/ipc/StreamNotifyChild.h b/dom/plugins/ipc/StreamNotifyChild.h
index b43a76111..c9b5790ce 100644
--- a/dom/plugins/ipc/StreamNotifyChild.h
+++ b/dom/plugins/ipc/StreamNotifyChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=2 ts=2 et : */
/* 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/. */
diff --git a/dom/plugins/ipc/StreamNotifyParent.h b/dom/plugins/ipc/StreamNotifyParent.h
index dac5f1c28..655ce0fed 100644
--- a/dom/plugins/ipc/StreamNotifyParent.h
+++ b/dom/plugins/ipc/StreamNotifyParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=2 ts=2 et : */
/* 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/. */
diff --git a/dom/plugins/ipc/hangui/HangUIDlg.h b/dom/plugins/ipc/hangui/HangUIDlg.h
index 47339acc2..f99f0d64a 100644
--- a/dom/plugins/ipc/hangui/HangUIDlg.h
+++ b/dom/plugins/ipc/hangui/HangUIDlg.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/hangui/MiniShmBase.h b/dom/plugins/ipc/hangui/MiniShmBase.h
index 0ac8840dd..077442bd0 100644
--- a/dom/plugins/ipc/hangui/MiniShmBase.h
+++ b/dom/plugins/ipc/hangui/MiniShmBase.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/hangui/MiniShmChild.cpp b/dom/plugins/ipc/hangui/MiniShmChild.cpp
index 0683340a1..92e8ca395 100644
--- a/dom/plugins/ipc/hangui/MiniShmChild.cpp
+++ b/dom/plugins/ipc/hangui/MiniShmChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/hangui/MiniShmChild.h b/dom/plugins/ipc/hangui/MiniShmChild.h
index 19c9deea7..1aa3754b7 100644
--- a/dom/plugins/ipc/hangui/MiniShmChild.h
+++ b/dom/plugins/ipc/hangui/MiniShmChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/hangui/PluginHangUI.h b/dom/plugins/ipc/hangui/PluginHangUI.h
index 2c6df78bb..7500601e6 100644
--- a/dom/plugins/ipc/hangui/PluginHangUI.h
+++ b/dom/plugins/ipc/hangui/PluginHangUI.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/hangui/PluginHangUIChild.cpp b/dom/plugins/ipc/hangui/PluginHangUIChild.cpp
index c1730a207..31012851e 100644
--- a/dom/plugins/ipc/hangui/PluginHangUIChild.cpp
+++ b/dom/plugins/ipc/hangui/PluginHangUIChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/hangui/PluginHangUIChild.h b/dom/plugins/ipc/hangui/PluginHangUIChild.h
index 000e003ec..09c57c211 100644
--- a/dom/plugins/ipc/hangui/PluginHangUIChild.h
+++ b/dom/plugins/ipc/hangui/PluginHangUIChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/plugins/ipc/hangui/moz.build b/dom/plugins/ipc/hangui/moz.build
index 52c2f1495..8e24249d3 100644
--- a/dom/plugins/ipc/hangui/moz.build
+++ b/dom/plugins/ipc/hangui/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/ipc/interpose/moz.build b/dom/plugins/ipc/interpose/moz.build
index 10171afd0..319c325a7 100644
--- a/dom/plugins/ipc/interpose/moz.build
+++ b/dom/plugins/ipc/interpose/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/ipc/moz.build b/dom/plugins/ipc/moz.build
index 182a11562..9190d1927 100644
--- a/dom/plugins/ipc/moz.build
+++ b/dom/plugins/ipc/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/mochitest/mochitest.ini b/dom/plugins/test/mochitest/mochitest.ini
index 0e8587f34..64aefcd12 100644
--- a/dom/plugins/test/mochitest/mochitest.ini
+++ b/dom/plugins/test/mochitest/mochitest.ini
@@ -23,7 +23,6 @@ support-files =
pluginstream.js
post.sjs
plugin-utils.js
- !/toolkit/components/passwordmgr/test/authenticate.sjs
[test_bug406541.html]
[test_bug532208.html]
diff --git a/dom/plugins/test/moz.build b/dom/plugins/test/moz.build
index c7f7b01ed..37bfc6f7a 100644
--- a/dom/plugins/test/moz.build
+++ b/dom/plugins/test/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/testaddon/moz.build b/dom/plugins/test/testaddon/moz.build
index 568f361a5..3d1554f86 100644
--- a/dom/plugins/test/testaddon/moz.build
+++ b/dom/plugins/test/testaddon/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/testplugin/flashplugin/moz.build b/dom/plugins/test/testplugin/flashplugin/moz.build
index 3df524a2b..2b58f4d23 100644
--- a/dom/plugins/test/testplugin/flashplugin/moz.build
+++ b/dom/plugins/test/testplugin/flashplugin/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/testplugin/javaplugin/moz.build b/dom/plugins/test/testplugin/javaplugin/moz.build
index 4e2abb3ed..223b28690 100644
--- a/dom/plugins/test/testplugin/javaplugin/moz.build
+++ b/dom/plugins/test/testplugin/javaplugin/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/testplugin/moz.build b/dom/plugins/test/testplugin/moz.build
index a79e58c1d..2e9949892 100644
--- a/dom/plugins/test/testplugin/moz.build
+++ b/dom/plugins/test/testplugin/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/testplugin/secondplugin/moz.build b/dom/plugins/test/testplugin/secondplugin/moz.build
index f95ed4190..f731dc4d5 100644
--- a/dom/plugins/test/testplugin/secondplugin/moz.build
+++ b/dom/plugins/test/testplugin/secondplugin/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/testplugin/silverlightplugin/moz.build b/dom/plugins/test/testplugin/silverlightplugin/moz.build
index 6050e0473..187156b0c 100644
--- a/dom/plugins/test/testplugin/silverlightplugin/moz.build
+++ b/dom/plugins/test/testplugin/silverlightplugin/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/testplugin/testplugin.mozbuild b/dom/plugins/test/testplugin/testplugin.mozbuild
index 9ed4f8966..12bbb3c7e 100644
--- a/dom/plugins/test/testplugin/testplugin.mozbuild
+++ b/dom/plugins/test/testplugin/testplugin.mozbuild
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/plugins/test/testplugin/thirdplugin/moz.build b/dom/plugins/test/testplugin/thirdplugin/moz.build
index f0d7b1a5b..bee18c820 100644
--- a/dom/plugins/test/testplugin/thirdplugin/moz.build
+++ b/dom/plugins/test/testplugin/thirdplugin/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/power/PowerManager.cpp b/dom/power/PowerManager.cpp
index 64534976d..4afa2fb78 100644
--- a/dom/power/PowerManager.cpp
+++ b/dom/power/PowerManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/power/PowerManager.h b/dom/power/PowerManager.h
index d8f9b5d79..6f15cce2a 100644
--- a/dom/power/PowerManager.h
+++ b/dom/power/PowerManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/power/PowerManagerService.cpp b/dom/power/PowerManagerService.cpp
index 40110aa67..057d5c992 100644
--- a/dom/power/PowerManagerService.cpp
+++ b/dom/power/PowerManagerService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/power/PowerManagerService.h b/dom/power/PowerManagerService.h
index 9d176f1dc..0fbc31890 100644
--- a/dom/power/PowerManagerService.h
+++ b/dom/power/PowerManagerService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/power/Types.h b/dom/power/Types.h
index f1ea022f4..40c92961a 100644
--- a/dom/power/Types.h
+++ b/dom/power/Types.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/power/WakeLock.cpp b/dom/power/WakeLock.cpp
index 9d93bad0f..9555a54e0 100644
--- a/dom/power/WakeLock.cpp
+++ b/dom/power/WakeLock.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/power/WakeLock.h b/dom/power/WakeLock.h
index fc8919946..3f15efb66 100644
--- a/dom/power/WakeLock.h
+++ b/dom/power/WakeLock.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/power/moz.build b/dom/power/moz.build
index 5474ebada..90f2ccbcf 100644
--- a/dom/power/moz.build
+++ b/dom/power/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/promise/Promise.cpp b/dom/promise/Promise.cpp
index e5279345d..4b9736d79 100644
--- a/dom/promise/Promise.cpp
+++ b/dom/promise/Promise.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/promise/Promise.h b/dom/promise/Promise.h
index 2fe365c46..31f7bcae9 100644
--- a/dom/promise/Promise.h
+++ b/dom/promise/Promise.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/promise/PromiseDebugging.cpp b/dom/promise/PromiseDebugging.cpp
index f3ec33e8b..14ad69bdc 100644
--- a/dom/promise/PromiseDebugging.cpp
+++ b/dom/promise/PromiseDebugging.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/promise/PromiseDebugging.h b/dom/promise/PromiseDebugging.h
index 77397b841..e4b9cbc4b 100644
--- a/dom/promise/PromiseDebugging.h
+++ b/dom/promise/PromiseDebugging.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/promise/PromiseNativeHandler.h b/dom/promise/PromiseNativeHandler.h
index 6ba7142aa..5ccd2905e 100644
--- a/dom/promise/PromiseNativeHandler.h
+++ b/dom/promise/PromiseNativeHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/promise/PromiseWorkerProxy.h b/dom/promise/PromiseWorkerProxy.h
index bcb44d38f..3b0e443a4 100644
--- a/dom/promise/PromiseWorkerProxy.h
+++ b/dom/promise/PromiseWorkerProxy.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/promise/moz.build b/dom/promise/moz.build
index c0e3d79a7..258d234cd 100644
--- a/dom/promise/moz.build
+++ b/dom/promise/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/push/PushManager.cpp b/dom/push/PushManager.cpp
index 2cb5a3877..d58501c8d 100644
--- a/dom/push/PushManager.cpp
+++ b/dom/push/PushManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/push/PushManager.h b/dom/push/PushManager.h
index 8b4753648..e61ffc8fb 100644
--- a/dom/push/PushManager.h
+++ b/dom/push/PushManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/push/moz.build b/dom/push/moz.build
index ca72c5f5d..657b59e75 100644
--- a/dom/push/moz.build
+++ b/dom/push/moz.build
@@ -1,4 +1,3 @@
-# vim: set filetype=python:
# 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/.
diff --git a/dom/quota/ActorsChild.cpp b/dom/quota/ActorsChild.cpp
index 03ed10981..43d3ef33e 100644
--- a/dom/quota/ActorsChild.cpp
+++ b/dom/quota/ActorsChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/ActorsChild.h b/dom/quota/ActorsChild.h
index 7aa4616f5..a3914c024 100644
--- a/dom/quota/ActorsChild.h
+++ b/dom/quota/ActorsChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/ActorsParent.cpp b/dom/quota/ActorsParent.cpp
index afdd0e6df..c240cbf20 100644
--- a/dom/quota/ActorsParent.cpp
+++ b/dom/quota/ActorsParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/ActorsParent.h b/dom/quota/ActorsParent.h
index 06ed9d342..526bb2423 100644
--- a/dom/quota/ActorsParent.h
+++ b/dom/quota/ActorsParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/Client.h b/dom/quota/Client.h
index ecbddebdf..67f0f6d10 100644
--- a/dom/quota/Client.h
+++ b/dom/quota/Client.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/FileStreams.cpp b/dom/quota/FileStreams.cpp
index 785a7db2e..8773854bd 100644
--- a/dom/quota/FileStreams.cpp
+++ b/dom/quota/FileStreams.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/FileStreams.h b/dom/quota/FileStreams.h
index 67b09fa7d..03a69bbc3 100644
--- a/dom/quota/FileStreams.h
+++ b/dom/quota/FileStreams.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/OriginScope.h b/dom/quota/OriginScope.h
index e57f2dd76..6bc104f51 100644
--- a/dom/quota/OriginScope.h
+++ b/dom/quota/OriginScope.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/PersistenceType.h b/dom/quota/PersistenceType.h
index 3e749e16c..299a93497 100644
--- a/dom/quota/PersistenceType.h
+++ b/dom/quota/PersistenceType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaCommon.h b/dom/quota/QuotaCommon.h
index d07d64293..2e88407b7 100644
--- a/dom/quota/QuotaCommon.h
+++ b/dom/quota/QuotaCommon.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaManager.h b/dom/quota/QuotaManager.h
index 206c3c665..06a54f761 100644
--- a/dom/quota/QuotaManager.h
+++ b/dom/quota/QuotaManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaManagerService.cpp b/dom/quota/QuotaManagerService.cpp
index 22b5d17b1..90db59ba0 100644
--- a/dom/quota/QuotaManagerService.cpp
+++ b/dom/quota/QuotaManagerService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaManagerService.h b/dom/quota/QuotaManagerService.h
index bbf249e69..862d2f004 100644
--- a/dom/quota/QuotaManagerService.h
+++ b/dom/quota/QuotaManagerService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaObject.h b/dom/quota/QuotaObject.h
index 370d04da1..51d33f47f 100644
--- a/dom/quota/QuotaObject.h
+++ b/dom/quota/QuotaObject.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaRequests.cpp b/dom/quota/QuotaRequests.cpp
index 7d1c37731..83ada8f6b 100644
--- a/dom/quota/QuotaRequests.cpp
+++ b/dom/quota/QuotaRequests.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaRequests.h b/dom/quota/QuotaRequests.h
index cb483753b..af7e5fadf 100644
--- a/dom/quota/QuotaRequests.h
+++ b/dom/quota/QuotaRequests.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaResults.cpp b/dom/quota/QuotaResults.cpp
index f5dbbd657..a0a0a73d5 100644
--- a/dom/quota/QuotaResults.cpp
+++ b/dom/quota/QuotaResults.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/QuotaResults.h b/dom/quota/QuotaResults.h
index 246bfe9c9..bd392d6af 100644
--- a/dom/quota/QuotaResults.h
+++ b/dom/quota/QuotaResults.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/SerializationHelpers.h b/dom/quota/SerializationHelpers.h
index e3a79e4e9..7e89e1361 100644
--- a/dom/quota/SerializationHelpers.h
+++ b/dom/quota/SerializationHelpers.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/StorageManager.cpp b/dom/quota/StorageManager.cpp
index 3aad3c3e7..39d9e3fc3 100644
--- a/dom/quota/StorageManager.cpp
+++ b/dom/quota/StorageManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/StorageManager.h b/dom/quota/StorageManager.h
index 11dc01b6f..2cd90a0cc 100644
--- a/dom/quota/StorageManager.h
+++ b/dom/quota/StorageManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/UsageInfo.h b/dom/quota/UsageInfo.h
index 9d34f1bff..478c8094f 100644
--- a/dom/quota/UsageInfo.h
+++ b/dom/quota/UsageInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/moz.build b/dom/quota/moz.build
index 182696569..97d961cb1 100644
--- a/dom/quota/moz.build
+++ b/dom/quota/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/quota/nsIQuotaCallbacks.idl b/dom/quota/nsIQuotaCallbacks.idl
index 7c53db20c..75a9f73b3 100644
--- a/dom/quota/nsIQuotaCallbacks.idl
+++ b/dom/quota/nsIQuotaCallbacks.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/nsIQuotaManagerService.idl b/dom/quota/nsIQuotaManagerService.idl
index f24ce2833..a19471898 100644
--- a/dom/quota/nsIQuotaManagerService.idl
+++ b/dom/quota/nsIQuotaManagerService.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/nsIQuotaRequests.idl b/dom/quota/nsIQuotaRequests.idl
index 155486217..2dd20e6b2 100644
--- a/dom/quota/nsIQuotaRequests.idl
+++ b/dom/quota/nsIQuotaRequests.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/quota/nsIQuotaResults.idl b/dom/quota/nsIQuotaResults.idl
index cd7ffd3a0..6f12f3da5 100644
--- a/dom/quota/nsIQuotaResults.idl
+++ b/dom/quota/nsIQuotaResults.idl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ModuleLoadRequest.cpp b/dom/script/ModuleLoadRequest.cpp
index 743f30fb9..ec924ea7a 100644
--- a/dom/script/ModuleLoadRequest.cpp
+++ b/dom/script/ModuleLoadRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ModuleLoadRequest.h b/dom/script/ModuleLoadRequest.h
index 4eac65090..ad6573cf3 100644
--- a/dom/script/ModuleLoadRequest.h
+++ b/dom/script/ModuleLoadRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ModuleScript.cpp b/dom/script/ModuleScript.cpp
index 1bf9d0b0f..9f7fe9ab9 100644
--- a/dom/script/ModuleScript.cpp
+++ b/dom/script/ModuleScript.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ModuleScript.h b/dom/script/ModuleScript.h
index f765aa0fa..7a4a7d3d4 100644
--- a/dom/script/ModuleScript.h
+++ b/dom/script/ModuleScript.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ScriptElement.cpp b/dom/script/ScriptElement.cpp
index eb20dbf32..2891a0865 100644
--- a/dom/script/ScriptElement.cpp
+++ b/dom/script/ScriptElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ScriptElement.h b/dom/script/ScriptElement.h
index 0babda674..52dc7469c 100644
--- a/dom/script/ScriptElement.h
+++ b/dom/script/ScriptElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ScriptLoadHandler.cpp b/dom/script/ScriptLoadHandler.cpp
index 80fb70f6a..9182eda1d 100644
--- a/dom/script/ScriptLoadHandler.cpp
+++ b/dom/script/ScriptLoadHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ScriptLoadHandler.h b/dom/script/ScriptLoadHandler.h
index b70f87397..25219f317 100644
--- a/dom/script/ScriptLoadHandler.h
+++ b/dom/script/ScriptLoadHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp
index 362c27f3e..5b7bea8d2 100644
--- a/dom/script/ScriptLoader.cpp
+++ b/dom/script/ScriptLoader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ScriptLoader.h b/dom/script/ScriptLoader.h
index 73f2a9258..ec9524f14 100644
--- a/dom/script/ScriptLoader.h
+++ b/dom/script/ScriptLoader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ScriptSettings.cpp b/dom/script/ScriptSettings.cpp
index 92ab221c9..514b5cf85 100644
--- a/dom/script/ScriptSettings.cpp
+++ b/dom/script/ScriptSettings.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/ScriptSettings.h b/dom/script/ScriptSettings.h
index 05e62f55e..f6cfb6c3e 100644
--- a/dom/script/ScriptSettings.h
+++ b/dom/script/ScriptSettings.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/script/nsIScriptElement.h b/dom/script/nsIScriptElement.h
index e3e1bc49a..ba3c7dd45 100644
--- a/dom/script/nsIScriptElement.h
+++ b/dom/script/nsIScriptElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/secureelement/moz.build b/dom/secureelement/moz.build
index 973000512..be04e4734 100644
--- a/dom/secureelement/moz.build
+++ b/dom/secureelement/moz.build
@@ -1,4 +1,3 @@
-# vim: set filetype=python:
# 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/.
diff --git a/dom/security/SRICheck.cpp b/dom/security/SRICheck.cpp
index 534909f81..7c3f8c7aa 100644
--- a/dom/security/SRICheck.cpp
+++ b/dom/security/SRICheck.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/SRICheck.h b/dom/security/SRICheck.h
index 46de0532f..947fb9541 100644
--- a/dom/security/SRICheck.h
+++ b/dom/security/SRICheck.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/SRILogHelper.h b/dom/security/SRILogHelper.h
index 90638136d..bbfd46bbf 100644
--- a/dom/security/SRILogHelper.h
+++ b/dom/security/SRILogHelper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/SRIMetadata.cpp b/dom/security/SRIMetadata.cpp
index 801ff0477..f81092704 100644
--- a/dom/security/SRIMetadata.cpp
+++ b/dom/security/SRIMetadata.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/SRIMetadata.h b/dom/security/SRIMetadata.h
index 4b6bdb47a..3802d78c6 100644
--- a/dom/security/SRIMetadata.h
+++ b/dom/security/SRIMetadata.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/moz.build b/dom/security/moz.build
index 587e1e898..a106216dc 100644
--- a/dom/security/moz.build
+++ b/dom/security/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/security/nsCSPContext.cpp b/dom/security/nsCSPContext.cpp
index 56a119e1a..a553680fe 100644
--- a/dom/security/nsCSPContext.cpp
+++ b/dom/security/nsCSPContext.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsCSPContext.h b/dom/security/nsCSPContext.h
index 729f440ce..3530c74c5 100644
--- a/dom/security/nsCSPContext.h
+++ b/dom/security/nsCSPContext.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsCSPParser.cpp b/dom/security/nsCSPParser.cpp
index a0eba6918..12dcb9dc4 100644
--- a/dom/security/nsCSPParser.cpp
+++ b/dom/security/nsCSPParser.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsCSPParser.h b/dom/security/nsCSPParser.h
index 59f5d2d6d..03ef2bb41 100644
--- a/dom/security/nsCSPParser.h
+++ b/dom/security/nsCSPParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsCSPService.cpp b/dom/security/nsCSPService.cpp
index 4807c9aa4..5e5066b73 100644
--- a/dom/security/nsCSPService.cpp
+++ b/dom/security/nsCSPService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsCSPService.h b/dom/security/nsCSPService.h
index 0eb991233..e9c82d438 100644
--- a/dom/security/nsCSPService.h
+++ b/dom/security/nsCSPService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsCSPUtils.cpp b/dom/security/nsCSPUtils.cpp
index e9f218c14..5f0bac1cd 100644
--- a/dom/security/nsCSPUtils.cpp
+++ b/dom/security/nsCSPUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsCSPUtils.h b/dom/security/nsCSPUtils.h
index 91096712a..84dcbb7fc 100644
--- a/dom/security/nsCSPUtils.h
+++ b/dom/security/nsCSPUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsContentSecurityManager.cpp b/dom/security/nsContentSecurityManager.cpp
index 298dc810e..d33f962ec 100644
--- a/dom/security/nsContentSecurityManager.cpp
+++ b/dom/security/nsContentSecurityManager.cpp
@@ -149,8 +149,16 @@ nsContentSecurityManager::CheckFTPSubresourceLoad(nsIChannel* aChannel)
nsIPrincipal* triggeringPrincipal = loadInfo->TriggeringPrincipal();
nsCOMPtr<nsIURI> tURI;
triggeringPrincipal->GetURI(getter_AddRefs(tURI));
+ if (!tURI) {
+ // We don't have a triggering principal URI, meaning this isn't actually
+ // a subresource, but rather a top-level document, i.e. something we can
+ // display in-browser and might be saving as-is. Allow the load.
+ return NS_OK;
+ }
bool isTrigFtpURI = (NS_SUCCEEDED(tURI->SchemeIs("ftp", &isTrigFtpURI)) && isTrigFtpURI);
if (isTrigFtpURI) {
+ // The document loading this resource is also on FTP, satisfying the SOP.
+ // Allow the load.
return NS_OK;
}
diff --git a/dom/security/nsContentSecurityManager.h b/dom/security/nsContentSecurityManager.h
index 750dd8803..0451f643b 100644
--- a/dom/security/nsContentSecurityManager.h
+++ b/dom/security/nsContentSecurityManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsMixedContentBlocker.cpp b/dom/security/nsMixedContentBlocker.cpp
index 85fb06d8d..031bc27db 100644
--- a/dom/security/nsMixedContentBlocker.cpp
+++ b/dom/security/nsMixedContentBlocker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/nsMixedContentBlocker.h b/dom/security/nsMixedContentBlocker.h
index 068068b25..6d343fba0 100644
--- a/dom/security/nsMixedContentBlocker.h
+++ b/dom/security/nsMixedContentBlocker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/test/gtest/TestCSPParser.cpp b/dom/security/test/gtest/TestCSPParser.cpp
index 893e02db5..7964bf43a 100644
--- a/dom/security/test/gtest/TestCSPParser.cpp
+++ b/dom/security/test/gtest/TestCSPParser.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/security/test/gtest/moz.build b/dom/security/test/gtest/moz.build
index e927e7bfa..2ed0a56a4 100644
--- a/dom/security/test/gtest/moz.build
+++ b/dom/security/test/gtest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/security/test/moz.build b/dom/security/test/moz.build
index 759e76c73..b8829463b 100644
--- a/dom/security/test/moz.build
+++ b/dom/security/test/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/settings/moz.build b/dom/settings/moz.build
index 580a55e6a..aa413eef5 100644
--- a/dom/settings/moz.build
+++ b/dom/settings/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/smil/SMILBoolType.cpp b/dom/smil/SMILBoolType.cpp
index f6ae19b79..1ec7827c4 100644
--- a/dom/smil/SMILBoolType.cpp
+++ b/dom/smil/SMILBoolType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/SMILBoolType.h b/dom/smil/SMILBoolType.h
index d0bbcf5ea..ab204d266 100644
--- a/dom/smil/SMILBoolType.h
+++ b/dom/smil/SMILBoolType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/SMILEnumType.cpp b/dom/smil/SMILEnumType.cpp
index 2aa7a04c1..64b22e878 100644
--- a/dom/smil/SMILEnumType.cpp
+++ b/dom/smil/SMILEnumType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/SMILEnumType.h b/dom/smil/SMILEnumType.h
index 070ae60bb..d79140751 100644
--- a/dom/smil/SMILEnumType.h
+++ b/dom/smil/SMILEnumType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/SMILIntegerType.cpp b/dom/smil/SMILIntegerType.cpp
index 194653e1b..354fccdc4 100644
--- a/dom/smil/SMILIntegerType.cpp
+++ b/dom/smil/SMILIntegerType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/SMILIntegerType.h b/dom/smil/SMILIntegerType.h
index bf8030b6e..5117c7159 100644
--- a/dom/smil/SMILIntegerType.h
+++ b/dom/smil/SMILIntegerType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/SMILStringType.cpp b/dom/smil/SMILStringType.cpp
index d67323b7e..28e043328 100644
--- a/dom/smil/SMILStringType.cpp
+++ b/dom/smil/SMILStringType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/SMILStringType.h b/dom/smil/SMILStringType.h
index 6fb51b7d9..ec264dd7c 100644
--- a/dom/smil/SMILStringType.h
+++ b/dom/smil/SMILStringType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/TimeEvent.cpp b/dom/smil/TimeEvent.cpp
index 8a58c6750..cc5671d38 100644
--- a/dom/smil/TimeEvent.cpp
+++ b/dom/smil/TimeEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/TimeEvent.h b/dom/smil/TimeEvent.h
index b5af5747e..75ab649b6 100644
--- a/dom/smil/TimeEvent.h
+++ b/dom/smil/TimeEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/moz.build b/dom/smil/moz.build
index 3c432898f..333adf560 100644
--- a/dom/smil/moz.build
+++ b/dom/smil/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/smil/nsISMILAttr.h b/dom/smil/nsISMILAttr.h
index de65a42bb..fcd5c1e87 100644
--- a/dom/smil/nsISMILAttr.h
+++ b/dom/smil/nsISMILAttr.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsISMILType.h b/dom/smil/nsISMILType.h
index f923a9c77..d8cbec801 100644
--- a/dom/smil/nsISMILType.h
+++ b/dom/smil/nsISMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILAnimationController.cpp b/dom/smil/nsSMILAnimationController.cpp
index 69956203e..e1aed4e32 100644
--- a/dom/smil/nsSMILAnimationController.cpp
+++ b/dom/smil/nsSMILAnimationController.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILAnimationController.h b/dom/smil/nsSMILAnimationController.h
index 9c565b78b..6aa5d1f73 100644
--- a/dom/smil/nsSMILAnimationController.h
+++ b/dom/smil/nsSMILAnimationController.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILAnimationFunction.cpp b/dom/smil/nsSMILAnimationFunction.cpp
index cd57054fb..442e61975 100644
--- a/dom/smil/nsSMILAnimationFunction.cpp
+++ b/dom/smil/nsSMILAnimationFunction.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILAnimationFunction.h b/dom/smil/nsSMILAnimationFunction.h
index 2380b64ef..a4b6c5194 100644
--- a/dom/smil/nsSMILAnimationFunction.h
+++ b/dom/smil/nsSMILAnimationFunction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILCSSProperty.cpp b/dom/smil/nsSMILCSSProperty.cpp
index 070f3489e..bbe91b540 100644
--- a/dom/smil/nsSMILCSSProperty.cpp
+++ b/dom/smil/nsSMILCSSProperty.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILCSSProperty.h b/dom/smil/nsSMILCSSProperty.h
index 028a9aaa2..b0398ee56 100644
--- a/dom/smil/nsSMILCSSProperty.h
+++ b/dom/smil/nsSMILCSSProperty.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILCSSValueType.cpp b/dom/smil/nsSMILCSSValueType.cpp
index 2940c1367..71ef27cd6 100644
--- a/dom/smil/nsSMILCSSValueType.cpp
+++ b/dom/smil/nsSMILCSSValueType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILCSSValueType.h b/dom/smil/nsSMILCSSValueType.h
index 0303e69e3..2e7608d33 100644
--- a/dom/smil/nsSMILCSSValueType.h
+++ b/dom/smil/nsSMILCSSValueType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILCompositor.cpp b/dom/smil/nsSMILCompositor.cpp
index e7bf60932..f3a9329eb 100644
--- a/dom/smil/nsSMILCompositor.cpp
+++ b/dom/smil/nsSMILCompositor.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILCompositor.h b/dom/smil/nsSMILCompositor.h
index ed87ffa8c..e9cc87fd2 100644
--- a/dom/smil/nsSMILCompositor.h
+++ b/dom/smil/nsSMILCompositor.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILCompositorTable.h b/dom/smil/nsSMILCompositorTable.h
index b35d50117..6f3b079b7 100644
--- a/dom/smil/nsSMILCompositorTable.h
+++ b/dom/smil/nsSMILCompositorTable.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILFloatType.cpp b/dom/smil/nsSMILFloatType.cpp
index d3e298043..5ad111265 100644
--- a/dom/smil/nsSMILFloatType.cpp
+++ b/dom/smil/nsSMILFloatType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILFloatType.h b/dom/smil/nsSMILFloatType.h
index 470e935d3..7b3eefb2c 100644
--- a/dom/smil/nsSMILFloatType.h
+++ b/dom/smil/nsSMILFloatType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILInstanceTime.cpp b/dom/smil/nsSMILInstanceTime.cpp
index f5d27fdee..97ce0eb15 100644
--- a/dom/smil/nsSMILInstanceTime.cpp
+++ b/dom/smil/nsSMILInstanceTime.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILInstanceTime.h b/dom/smil/nsSMILInstanceTime.h
index 4602c9127..41e2e68e9 100644
--- a/dom/smil/nsSMILInstanceTime.h
+++ b/dom/smil/nsSMILInstanceTime.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILInterval.cpp b/dom/smil/nsSMILInterval.cpp
index 956efd626..b2476ff7c 100644
--- a/dom/smil/nsSMILInterval.cpp
+++ b/dom/smil/nsSMILInterval.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILInterval.h b/dom/smil/nsSMILInterval.h
index d30728821..63ff243cd 100644
--- a/dom/smil/nsSMILInterval.h
+++ b/dom/smil/nsSMILInterval.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILKeySpline.cpp b/dom/smil/nsSMILKeySpline.cpp
index 716437aab..9059211fd 100644
--- a/dom/smil/nsSMILKeySpline.cpp
+++ b/dom/smil/nsSMILKeySpline.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILKeySpline.h b/dom/smil/nsSMILKeySpline.h
index 36c14fec1..aa7c355df 100644
--- a/dom/smil/nsSMILKeySpline.h
+++ b/dom/smil/nsSMILKeySpline.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILMappedAttribute.cpp b/dom/smil/nsSMILMappedAttribute.cpp
index b43469fac..8519b5a82 100644
--- a/dom/smil/nsSMILMappedAttribute.cpp
+++ b/dom/smil/nsSMILMappedAttribute.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILMappedAttribute.h b/dom/smil/nsSMILMappedAttribute.h
index 212b65c92..4c18ace1b 100644
--- a/dom/smil/nsSMILMappedAttribute.h
+++ b/dom/smil/nsSMILMappedAttribute.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILMilestone.h b/dom/smil/nsSMILMilestone.h
index e5f330114..cd148ff5b 100644
--- a/dom/smil/nsSMILMilestone.h
+++ b/dom/smil/nsSMILMilestone.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILNullType.cpp b/dom/smil/nsSMILNullType.cpp
index b51c135af..1b8698b9b 100644
--- a/dom/smil/nsSMILNullType.cpp
+++ b/dom/smil/nsSMILNullType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILNullType.h b/dom/smil/nsSMILNullType.h
index c668773ce..8fa68538b 100644
--- a/dom/smil/nsSMILNullType.h
+++ b/dom/smil/nsSMILNullType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILParserUtils.cpp b/dom/smil/nsSMILParserUtils.cpp
index 9174bdd4a..05b8fd7ba 100644
--- a/dom/smil/nsSMILParserUtils.cpp
+++ b/dom/smil/nsSMILParserUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILParserUtils.h b/dom/smil/nsSMILParserUtils.h
index c80fd98a2..d86daa2b0 100644
--- a/dom/smil/nsSMILParserUtils.h
+++ b/dom/smil/nsSMILParserUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILRepeatCount.cpp b/dom/smil/nsSMILRepeatCount.cpp
index d5c61fe53..83e86eef8 100644
--- a/dom/smil/nsSMILRepeatCount.cpp
+++ b/dom/smil/nsSMILRepeatCount.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILRepeatCount.h b/dom/smil/nsSMILRepeatCount.h
index be36badee..80caa9161 100644
--- a/dom/smil/nsSMILRepeatCount.h
+++ b/dom/smil/nsSMILRepeatCount.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILSetAnimationFunction.cpp b/dom/smil/nsSMILSetAnimationFunction.cpp
index d636f9aff..04d23117a 100644
--- a/dom/smil/nsSMILSetAnimationFunction.cpp
+++ b/dom/smil/nsSMILSetAnimationFunction.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILSetAnimationFunction.h b/dom/smil/nsSMILSetAnimationFunction.h
index 6401a3bf5..508b79e0a 100644
--- a/dom/smil/nsSMILSetAnimationFunction.h
+++ b/dom/smil/nsSMILSetAnimationFunction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTargetIdentifier.h b/dom/smil/nsSMILTargetIdentifier.h
index 56fb08f34..e700e6af9 100644
--- a/dom/smil/nsSMILTargetIdentifier.h
+++ b/dom/smil/nsSMILTargetIdentifier.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimeContainer.cpp b/dom/smil/nsSMILTimeContainer.cpp
index e3ebf5b09..6b84fdf44 100644
--- a/dom/smil/nsSMILTimeContainer.cpp
+++ b/dom/smil/nsSMILTimeContainer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimeContainer.h b/dom/smil/nsSMILTimeContainer.h
index 50c9709db..052a44c02 100644
--- a/dom/smil/nsSMILTimeContainer.h
+++ b/dom/smil/nsSMILTimeContainer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimeValue.cpp b/dom/smil/nsSMILTimeValue.cpp
index ddd5b3ce7..5a0ce6917 100644
--- a/dom/smil/nsSMILTimeValue.cpp
+++ b/dom/smil/nsSMILTimeValue.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimeValue.h b/dom/smil/nsSMILTimeValue.h
index de694bdbf..e6bce1656 100644
--- a/dom/smil/nsSMILTimeValue.h
+++ b/dom/smil/nsSMILTimeValue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimeValueSpec.cpp b/dom/smil/nsSMILTimeValueSpec.cpp
index 6948b5d58..1b2191315 100644
--- a/dom/smil/nsSMILTimeValueSpec.cpp
+++ b/dom/smil/nsSMILTimeValueSpec.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimeValueSpec.h b/dom/smil/nsSMILTimeValueSpec.h
index d0817c15f..709decdef 100644
--- a/dom/smil/nsSMILTimeValueSpec.h
+++ b/dom/smil/nsSMILTimeValueSpec.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimeValueSpecParams.h b/dom/smil/nsSMILTimeValueSpecParams.h
index 7a5ada626..b6bc23778 100644
--- a/dom/smil/nsSMILTimeValueSpecParams.h
+++ b/dom/smil/nsSMILTimeValueSpecParams.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimedElement.cpp b/dom/smil/nsSMILTimedElement.cpp
index 120536be0..3680ba3fe 100644
--- a/dom/smil/nsSMILTimedElement.cpp
+++ b/dom/smil/nsSMILTimedElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTimedElement.h b/dom/smil/nsSMILTimedElement.h
index 1831deeb0..e690c1505 100644
--- a/dom/smil/nsSMILTimedElement.h
+++ b/dom/smil/nsSMILTimedElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILTypes.h b/dom/smil/nsSMILTypes.h
index 82153c867..fb57c4e53 100644
--- a/dom/smil/nsSMILTypes.h
+++ b/dom/smil/nsSMILTypes.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILValue.cpp b/dom/smil/nsSMILValue.cpp
index cd881b0b0..9ac9e819c 100644
--- a/dom/smil/nsSMILValue.cpp
+++ b/dom/smil/nsSMILValue.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/nsSMILValue.h b/dom/smil/nsSMILValue.h
index c0998d61d..e8f9ebecf 100644
--- a/dom/smil/nsSMILValue.h
+++ b/dom/smil/nsSMILValue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/smil/test/db_smilAnimateMotion.js b/dom/smil/test/db_smilAnimateMotion.js
index c4dfb4e24..426afefeb 100644
--- a/dom/smil/test/db_smilAnimateMotion.js
+++ b/dom/smil/test/db_smilAnimateMotion.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set ts=2 sw=2 sts=2 et: */
/* 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/. */
diff --git a/dom/smil/test/db_smilCSSFromBy.js b/dom/smil/test/db_smilCSSFromBy.js
index f8b36e70a..d6fb6bc2f 100644
--- a/dom/smil/test/db_smilCSSFromBy.js
+++ b/dom/smil/test/db_smilCSSFromBy.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set ts=2 sw=2 sts=2 et: */
/* 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/. */
diff --git a/dom/smil/test/db_smilCSSFromTo.js b/dom/smil/test/db_smilCSSFromTo.js
index fe9cecd6c..a53e2e8fd 100644
--- a/dom/smil/test/db_smilCSSFromTo.js
+++ b/dom/smil/test/db_smilCSSFromTo.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set ts=2 sw=2 sts=2 et: */
/* 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/. */
diff --git a/dom/smil/test/db_smilCSSPaced.js b/dom/smil/test/db_smilCSSPaced.js
index 3f069691f..890cf4ed5 100644
--- a/dom/smil/test/db_smilCSSPaced.js
+++ b/dom/smil/test/db_smilCSSPaced.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 4 -*- */
-/* vim: set shiftwidth=4 tabstop=4 autoindent cindent noexpandtab: */
/* 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/. */
diff --git a/dom/smil/test/db_smilCSSPropertyList.js b/dom/smil/test/db_smilCSSPropertyList.js
index f9f3de62e..ef92202af 100644
--- a/dom/smil/test/db_smilCSSPropertyList.js
+++ b/dom/smil/test/db_smilCSSPropertyList.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set ts=2 sw=2 sts=2 et: */
/* 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/. */
diff --git a/dom/smil/test/db_smilMappedAttrList.js b/dom/smil/test/db_smilMappedAttrList.js
index ede5dc23b..5eded8113 100644
--- a/dom/smil/test/db_smilMappedAttrList.js
+++ b/dom/smil/test/db_smilMappedAttrList.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set ts=2 sw=2 sts=2 et: */
/* 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/. */
diff --git a/dom/smil/test/smilAnimateMotionValueLists.js b/dom/smil/test/smilAnimateMotionValueLists.js
index 364bc250e..b4cd50fda 100644
--- a/dom/smil/test/smilAnimateMotionValueLists.js
+++ b/dom/smil/test/smilAnimateMotionValueLists.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set ts=2 sw=2 sts=2 et: */
/* 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/. */
diff --git a/dom/smil/test/smilTestUtils.js b/dom/smil/test/smilTestUtils.js
index 2304d499b..27625f7b3 100644
--- a/dom/smil/test/smilTestUtils.js
+++ b/dom/smil/test/smilTestUtils.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set ts=2 sw=2 sts=2 et: */
/* 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/. */
diff --git a/dom/storage/DOMStorage.cpp b/dom/storage/DOMStorage.cpp
index 026959dce..7af377fe0 100644
--- a/dom/storage/DOMStorage.cpp
+++ b/dom/storage/DOMStorage.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorage.h b/dom/storage/DOMStorage.h
index d956ac3ed..f414c266f 100644
--- a/dom/storage/DOMStorage.h
+++ b/dom/storage/DOMStorage.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageCache.cpp b/dom/storage/DOMStorageCache.cpp
index ee9a22e96..34a50259d 100644
--- a/dom/storage/DOMStorageCache.cpp
+++ b/dom/storage/DOMStorageCache.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageCache.h b/dom/storage/DOMStorageCache.h
index 4469152a2..c1201998d 100644
--- a/dom/storage/DOMStorageCache.h
+++ b/dom/storage/DOMStorageCache.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageDBThread.cpp b/dom/storage/DOMStorageDBThread.cpp
index f86dbad9c..9c19c9f73 100644
--- a/dom/storage/DOMStorageDBThread.cpp
+++ b/dom/storage/DOMStorageDBThread.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageDBThread.h b/dom/storage/DOMStorageDBThread.h
index 0efaebaa3..cfaee45b5 100644
--- a/dom/storage/DOMStorageDBThread.h
+++ b/dom/storage/DOMStorageDBThread.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageDBUpdater.cpp b/dom/storage/DOMStorageDBUpdater.cpp
index 61d86ca6c..f7aa0310f 100644
--- a/dom/storage/DOMStorageDBUpdater.cpp
+++ b/dom/storage/DOMStorageDBUpdater.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageDBUpdater.h b/dom/storage/DOMStorageDBUpdater.h
index 6ab4622bc..aec753615 100644
--- a/dom/storage/DOMStorageDBUpdater.h
+++ b/dom/storage/DOMStorageDBUpdater.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageIPC.cpp b/dom/storage/DOMStorageIPC.cpp
index 9d87a5788..442941a7a 100644
--- a/dom/storage/DOMStorageIPC.cpp
+++ b/dom/storage/DOMStorageIPC.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageIPC.h b/dom/storage/DOMStorageIPC.h
index b3508a588..391b3addf 100644
--- a/dom/storage/DOMStorageIPC.h
+++ b/dom/storage/DOMStorageIPC.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageManager.cpp b/dom/storage/DOMStorageManager.cpp
index 55a360e16..6605f6e49 100644
--- a/dom/storage/DOMStorageManager.cpp
+++ b/dom/storage/DOMStorageManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageManager.h b/dom/storage/DOMStorageManager.h
index 0bfd21975..431d925c8 100644
--- a/dom/storage/DOMStorageManager.h
+++ b/dom/storage/DOMStorageManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageObserver.cpp b/dom/storage/DOMStorageObserver.cpp
index fbbab8e54..295cee4ab 100644
--- a/dom/storage/DOMStorageObserver.cpp
+++ b/dom/storage/DOMStorageObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/DOMStorageObserver.h b/dom/storage/DOMStorageObserver.h
index 2efce96a3..0cdc97a52 100644
--- a/dom/storage/DOMStorageObserver.h
+++ b/dom/storage/DOMStorageObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/storage/PStorage.ipdl b/dom/storage/PStorage.ipdl
index 22b85f795..cb792460c 100644
--- a/dom/storage/PStorage.ipdl
+++ b/dom/storage/PStorage.ipdl
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/storage/moz.build b/dom/storage/moz.build
index 7d52d6d7b..6a8934c8e 100644
--- a/dom/storage/moz.build
+++ b/dom/storage/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/svg/DOMSVGAnimatedLengthList.cpp b/dom/svg/DOMSVGAnimatedLengthList.cpp
index 955d59602..56fe97c37 100644
--- a/dom/svg/DOMSVGAnimatedLengthList.cpp
+++ b/dom/svg/DOMSVGAnimatedLengthList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGAnimatedLengthList.h b/dom/svg/DOMSVGAnimatedLengthList.h
index cb502058d..21a4eca3a 100644
--- a/dom/svg/DOMSVGAnimatedLengthList.h
+++ b/dom/svg/DOMSVGAnimatedLengthList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGAnimatedNumberList.cpp b/dom/svg/DOMSVGAnimatedNumberList.cpp
index 938216f2a..57506c692 100644
--- a/dom/svg/DOMSVGAnimatedNumberList.cpp
+++ b/dom/svg/DOMSVGAnimatedNumberList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGAnimatedNumberList.h b/dom/svg/DOMSVGAnimatedNumberList.h
index b26076634..b2c1ee121 100644
--- a/dom/svg/DOMSVGAnimatedNumberList.h
+++ b/dom/svg/DOMSVGAnimatedNumberList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGLength.cpp b/dom/svg/DOMSVGLength.cpp
index c72c3e383..60b1cd87b 100644
--- a/dom/svg/DOMSVGLength.cpp
+++ b/dom/svg/DOMSVGLength.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGLength.h b/dom/svg/DOMSVGLength.h
index d20c0ffa8..fa50ba8fe 100644
--- a/dom/svg/DOMSVGLength.h
+++ b/dom/svg/DOMSVGLength.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGLengthList.cpp b/dom/svg/DOMSVGLengthList.cpp
index 88ecd6007..edefb54fd 100644
--- a/dom/svg/DOMSVGLengthList.cpp
+++ b/dom/svg/DOMSVGLengthList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGLengthList.h b/dom/svg/DOMSVGLengthList.h
index 842d29134..e8bb5754c 100644
--- a/dom/svg/DOMSVGLengthList.h
+++ b/dom/svg/DOMSVGLengthList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGNumber.cpp b/dom/svg/DOMSVGNumber.cpp
index 6b9528606..14efa2d56 100644
--- a/dom/svg/DOMSVGNumber.cpp
+++ b/dom/svg/DOMSVGNumber.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGNumber.h b/dom/svg/DOMSVGNumber.h
index 36bbc489c..8c33a1532 100644
--- a/dom/svg/DOMSVGNumber.h
+++ b/dom/svg/DOMSVGNumber.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGNumberList.cpp b/dom/svg/DOMSVGNumberList.cpp
index 85322688f..c4b7f8294 100644
--- a/dom/svg/DOMSVGNumberList.cpp
+++ b/dom/svg/DOMSVGNumberList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGNumberList.h b/dom/svg/DOMSVGNumberList.h
index 5cbfb57da..67994fe85 100644
--- a/dom/svg/DOMSVGNumberList.h
+++ b/dom/svg/DOMSVGNumberList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGPathSeg.cpp b/dom/svg/DOMSVGPathSeg.cpp
index a15bf42e9..24e1aceea 100644
--- a/dom/svg/DOMSVGPathSeg.cpp
+++ b/dom/svg/DOMSVGPathSeg.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGPathSeg.h b/dom/svg/DOMSVGPathSeg.h
index 33efe719b..cf1ecd008 100644
--- a/dom/svg/DOMSVGPathSeg.h
+++ b/dom/svg/DOMSVGPathSeg.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGPathSegList.cpp b/dom/svg/DOMSVGPathSegList.cpp
index 36768ea34..ed8db1bff 100644
--- a/dom/svg/DOMSVGPathSegList.cpp
+++ b/dom/svg/DOMSVGPathSegList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGPathSegList.h b/dom/svg/DOMSVGPathSegList.h
index 150c92035..44e5b2262 100644
--- a/dom/svg/DOMSVGPathSegList.h
+++ b/dom/svg/DOMSVGPathSegList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGPoint.cpp b/dom/svg/DOMSVGPoint.cpp
index fa87ee189..f3abc0b71 100644
--- a/dom/svg/DOMSVGPoint.cpp
+++ b/dom/svg/DOMSVGPoint.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGPoint.h b/dom/svg/DOMSVGPoint.h
index 3c8780a20..de2711108 100644
--- a/dom/svg/DOMSVGPoint.h
+++ b/dom/svg/DOMSVGPoint.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGPointList.cpp b/dom/svg/DOMSVGPointList.cpp
index ca06bd270..4d0907de4 100644
--- a/dom/svg/DOMSVGPointList.cpp
+++ b/dom/svg/DOMSVGPointList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGPointList.h b/dom/svg/DOMSVGPointList.h
index 499a49cf5..cfeb75675 100644
--- a/dom/svg/DOMSVGPointList.h
+++ b/dom/svg/DOMSVGPointList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGStringList.cpp b/dom/svg/DOMSVGStringList.cpp
index df358d990..662e910d3 100644
--- a/dom/svg/DOMSVGStringList.cpp
+++ b/dom/svg/DOMSVGStringList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGStringList.h b/dom/svg/DOMSVGStringList.h
index 642f07180..96aa85a66 100644
--- a/dom/svg/DOMSVGStringList.h
+++ b/dom/svg/DOMSVGStringList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGTransformList.cpp b/dom/svg/DOMSVGTransformList.cpp
index e4bde9aeb..545e234ae 100644
--- a/dom/svg/DOMSVGTransformList.cpp
+++ b/dom/svg/DOMSVGTransformList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/DOMSVGTransformList.h b/dom/svg/DOMSVGTransformList.h
index 6825151ca..384955e83 100644
--- a/dom/svg/DOMSVGTransformList.h
+++ b/dom/svg/DOMSVGTransformList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAElement.cpp b/dom/svg/SVGAElement.cpp
index a69c60ee4..c4ea00c30 100644
--- a/dom/svg/SVGAElement.cpp
+++ b/dom/svg/SVGAElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -84,12 +83,12 @@ SVGAElement::Href()
// nsINode methods
nsresult
-SVGAElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+SVGAElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
- nsresult rv = Element::PreHandleEvent(aVisitor);
+ nsresult rv = Element::GetEventTargetParent(aVisitor);
NS_ENSURE_SUCCESS(rv, rv);
- return PreHandleEventForLinks(aVisitor);
+ return GetEventTargetParentForLinks(aVisitor);
}
nsresult
diff --git a/dom/svg/SVGAElement.h b/dom/svg/SVGAElement.h
index 4f7df9e50..6ded0d117 100644
--- a/dom/svg/SVGAElement.h
+++ b/dom/svg/SVGAElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -37,7 +36,8 @@ public:
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(SVGAElement, SVGAElementBase)
// nsINode interface methods
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual nsresult PostHandleEvent(
EventChainPostVisitor& aVisitor) override;
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
diff --git a/dom/svg/SVGAngle.cpp b/dom/svg/SVGAngle.cpp
index 83d5f7ce1..938cf3455 100644
--- a/dom/svg/SVGAngle.cpp
+++ b/dom/svg/SVGAngle.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAngle.h b/dom/svg/SVGAngle.h
index d91fd6c57..39c33984a 100644
--- a/dom/svg/SVGAngle.h
+++ b/dom/svg/SVGAngle.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimateElement.cpp b/dom/svg/SVGAnimateElement.cpp
index 2ba4c5703..22c72efe7 100644
--- a/dom/svg/SVGAnimateElement.cpp
+++ b/dom/svg/SVGAnimateElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimateElement.h b/dom/svg/SVGAnimateElement.h
index ed029ef49..423269c97 100644
--- a/dom/svg/SVGAnimateElement.h
+++ b/dom/svg/SVGAnimateElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimateMotionElement.cpp b/dom/svg/SVGAnimateMotionElement.cpp
index ed8eb7ccd..8856e2991 100644
--- a/dom/svg/SVGAnimateMotionElement.cpp
+++ b/dom/svg/SVGAnimateMotionElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimateMotionElement.h b/dom/svg/SVGAnimateMotionElement.h
index 7cc055630..2a0842217 100644
--- a/dom/svg/SVGAnimateMotionElement.h
+++ b/dom/svg/SVGAnimateMotionElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimateTransformElement.cpp b/dom/svg/SVGAnimateTransformElement.cpp
index d3355cf80..b699c99d2 100644
--- a/dom/svg/SVGAnimateTransformElement.cpp
+++ b/dom/svg/SVGAnimateTransformElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimateTransformElement.h b/dom/svg/SVGAnimateTransformElement.h
index eacfe06c8..8c2b26309 100644
--- a/dom/svg/SVGAnimateTransformElement.h
+++ b/dom/svg/SVGAnimateTransformElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedAngle.cpp b/dom/svg/SVGAnimatedAngle.cpp
index febc8ead3..726461b2c 100644
--- a/dom/svg/SVGAnimatedAngle.cpp
+++ b/dom/svg/SVGAnimatedAngle.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedAngle.h b/dom/svg/SVGAnimatedAngle.h
index 50ea1d618..c2579516e 100644
--- a/dom/svg/SVGAnimatedAngle.h
+++ b/dom/svg/SVGAnimatedAngle.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedBoolean.cpp b/dom/svg/SVGAnimatedBoolean.cpp
index 102846e36..5cc121666 100644
--- a/dom/svg/SVGAnimatedBoolean.cpp
+++ b/dom/svg/SVGAnimatedBoolean.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedBoolean.h b/dom/svg/SVGAnimatedBoolean.h
index b5d4d7993..b636b801b 100644
--- a/dom/svg/SVGAnimatedBoolean.h
+++ b/dom/svg/SVGAnimatedBoolean.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedEnumeration.cpp b/dom/svg/SVGAnimatedEnumeration.cpp
index 103985f06..07fa1cfc8 100644
--- a/dom/svg/SVGAnimatedEnumeration.cpp
+++ b/dom/svg/SVGAnimatedEnumeration.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedEnumeration.h b/dom/svg/SVGAnimatedEnumeration.h
index e65169b7b..d407dfb57 100644
--- a/dom/svg/SVGAnimatedEnumeration.h
+++ b/dom/svg/SVGAnimatedEnumeration.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedInteger.cpp b/dom/svg/SVGAnimatedInteger.cpp
index b7eb41ec0..6ddfe7ab2 100644
--- a/dom/svg/SVGAnimatedInteger.cpp
+++ b/dom/svg/SVGAnimatedInteger.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedInteger.h b/dom/svg/SVGAnimatedInteger.h
index d0b562679..7c492d204 100644
--- a/dom/svg/SVGAnimatedInteger.h
+++ b/dom/svg/SVGAnimatedInteger.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedLength.cpp b/dom/svg/SVGAnimatedLength.cpp
index 9efea0c48..12fac5117 100644
--- a/dom/svg/SVGAnimatedLength.cpp
+++ b/dom/svg/SVGAnimatedLength.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedLength.h b/dom/svg/SVGAnimatedLength.h
index b1e02fa4e..13e3c15b3 100644
--- a/dom/svg/SVGAnimatedLength.h
+++ b/dom/svg/SVGAnimatedLength.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedLengthList.cpp b/dom/svg/SVGAnimatedLengthList.cpp
index 91702a16b..bfb080cf0 100644
--- a/dom/svg/SVGAnimatedLengthList.cpp
+++ b/dom/svg/SVGAnimatedLengthList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedLengthList.h b/dom/svg/SVGAnimatedLengthList.h
index 447e947a0..d70e33166 100644
--- a/dom/svg/SVGAnimatedLengthList.h
+++ b/dom/svg/SVGAnimatedLengthList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedNumber.cpp b/dom/svg/SVGAnimatedNumber.cpp
index b14bfb558..baa57b5a3 100644
--- a/dom/svg/SVGAnimatedNumber.cpp
+++ b/dom/svg/SVGAnimatedNumber.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedNumber.h b/dom/svg/SVGAnimatedNumber.h
index c992b2e54..2fb247947 100644
--- a/dom/svg/SVGAnimatedNumber.h
+++ b/dom/svg/SVGAnimatedNumber.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedNumberList.cpp b/dom/svg/SVGAnimatedNumberList.cpp
index 9be7ffadd..998a012bd 100644
--- a/dom/svg/SVGAnimatedNumberList.cpp
+++ b/dom/svg/SVGAnimatedNumberList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedNumberList.h b/dom/svg/SVGAnimatedNumberList.h
index 6ef713c9d..45c1d894f 100644
--- a/dom/svg/SVGAnimatedNumberList.h
+++ b/dom/svg/SVGAnimatedNumberList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedPathSegList.cpp b/dom/svg/SVGAnimatedPathSegList.cpp
index 4f07d2040..7c0fa8930 100644
--- a/dom/svg/SVGAnimatedPathSegList.cpp
+++ b/dom/svg/SVGAnimatedPathSegList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedPathSegList.h b/dom/svg/SVGAnimatedPathSegList.h
index 42136db92..02145656f 100644
--- a/dom/svg/SVGAnimatedPathSegList.h
+++ b/dom/svg/SVGAnimatedPathSegList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedPointList.cpp b/dom/svg/SVGAnimatedPointList.cpp
index 13031901d..a4cb27e08 100644
--- a/dom/svg/SVGAnimatedPointList.cpp
+++ b/dom/svg/SVGAnimatedPointList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedPointList.h b/dom/svg/SVGAnimatedPointList.h
index 57f9bc06b..83b3e19f8 100644
--- a/dom/svg/SVGAnimatedPointList.h
+++ b/dom/svg/SVGAnimatedPointList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedPreserveAspectRatio.cpp b/dom/svg/SVGAnimatedPreserveAspectRatio.cpp
index 3676d0e82..53a57080c 100644
--- a/dom/svg/SVGAnimatedPreserveAspectRatio.cpp
+++ b/dom/svg/SVGAnimatedPreserveAspectRatio.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedPreserveAspectRatio.h b/dom/svg/SVGAnimatedPreserveAspectRatio.h
index 6b0a08b7a..307f11528 100644
--- a/dom/svg/SVGAnimatedPreserveAspectRatio.h
+++ b/dom/svg/SVGAnimatedPreserveAspectRatio.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedRect.cpp b/dom/svg/SVGAnimatedRect.cpp
index f2406a726..023c63547 100644
--- a/dom/svg/SVGAnimatedRect.cpp
+++ b/dom/svg/SVGAnimatedRect.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedRect.h b/dom/svg/SVGAnimatedRect.h
index 1f39c21c7..a987c1a93 100644
--- a/dom/svg/SVGAnimatedRect.h
+++ b/dom/svg/SVGAnimatedRect.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedString.cpp b/dom/svg/SVGAnimatedString.cpp
index 040d6484e..eea63701b 100644
--- a/dom/svg/SVGAnimatedString.cpp
+++ b/dom/svg/SVGAnimatedString.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedString.h b/dom/svg/SVGAnimatedString.h
index c730bb8ef..3ec5272ce 100644
--- a/dom/svg/SVGAnimatedString.h
+++ b/dom/svg/SVGAnimatedString.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedTransformList.cpp b/dom/svg/SVGAnimatedTransformList.cpp
index 1e4451a98..eb9b99db6 100644
--- a/dom/svg/SVGAnimatedTransformList.cpp
+++ b/dom/svg/SVGAnimatedTransformList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimatedTransformList.h b/dom/svg/SVGAnimatedTransformList.h
index 245d8d52d..7bef84d2f 100644
--- a/dom/svg/SVGAnimatedTransformList.h
+++ b/dom/svg/SVGAnimatedTransformList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAnimationElement.cpp b/dom/svg/SVGAnimationElement.cpp
index d6550c96e..984ffa648 100644
--- a/dom/svg/SVGAnimationElement.cpp
+++ b/dom/svg/SVGAnimationElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -299,11 +298,12 @@ SVGAnimationElement::ParseAttribute(int32_t aNamespaceID,
nsresult
SVGAnimationElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
nsresult rv =
SVGAnimationElementBase::AfterSetAttr(aNamespaceID, aName, aValue,
- aNotify);
+ aOldValue, aNotify);
if (SVGTests::IsConditionalProcessingAttribute(aName)) {
bool isDisabled = !SVGTests::PassesConditionalProcessingTests();
diff --git a/dom/svg/SVGAnimationElement.h b/dom/svg/SVGAnimationElement.h
index 9bcbdf0c2..5c75e060c 100644
--- a/dom/svg/SVGAnimationElement.h
+++ b/dom/svg/SVGAnimationElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -58,7 +57,9 @@ public:
const nsAString& aValue,
nsAttrValue& aResult) override;
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
const nsAttrValue* GetAnimAttr(nsIAtom* aName) const;
bool GetAnimAttr(nsIAtom* aAttName, nsAString& aResult) const;
diff --git a/dom/svg/SVGAttrValueWrapper.cpp b/dom/svg/SVGAttrValueWrapper.cpp
index 5561397dc..2f951d6d2 100644
--- a/dom/svg/SVGAttrValueWrapper.cpp
+++ b/dom/svg/SVGAttrValueWrapper.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGAttrValueWrapper.h b/dom/svg/SVGAttrValueWrapper.h
index 27ec9cb30..aa67b6fb9 100644
--- a/dom/svg/SVGAttrValueWrapper.h
+++ b/dom/svg/SVGAttrValueWrapper.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGCircleElement.cpp b/dom/svg/SVGCircleElement.cpp
index fa04824f1..5f0873c49 100644
--- a/dom/svg/SVGCircleElement.cpp
+++ b/dom/svg/SVGCircleElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGCircleElement.h b/dom/svg/SVGCircleElement.h
index ff7bfe902..64518b4d9 100644
--- a/dom/svg/SVGCircleElement.h
+++ b/dom/svg/SVGCircleElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGClipPathElement.cpp b/dom/svg/SVGClipPathElement.cpp
index 682d1271e..abf67e0e0 100644
--- a/dom/svg/SVGClipPathElement.cpp
+++ b/dom/svg/SVGClipPathElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGClipPathElement.h b/dom/svg/SVGClipPathElement.h
index 2d9f4c15e..9c72a5473 100644
--- a/dom/svg/SVGClipPathElement.h
+++ b/dom/svg/SVGClipPathElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGComponentTransferFunctionElement.h b/dom/svg/SVGComponentTransferFunctionElement.h
index 5dd32ce4c..6f628d068 100644
--- a/dom/svg/SVGComponentTransferFunctionElement.h
+++ b/dom/svg/SVGComponentTransferFunctionElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGContentUtils.cpp b/dom/svg/SVGContentUtils.cpp
index ed3b6032e..7f372c9b4 100644
--- a/dom/svg/SVGContentUtils.cpp
+++ b/dom/svg/SVGContentUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGContentUtils.h b/dom/svg/SVGContentUtils.h
index 373adf9f0..7415cfe65 100644
--- a/dom/svg/SVGContentUtils.h
+++ b/dom/svg/SVGContentUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGDefsElement.cpp b/dom/svg/SVGDefsElement.cpp
index c0491e976..b1561897e 100644
--- a/dom/svg/SVGDefsElement.cpp
+++ b/dom/svg/SVGDefsElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGDefsElement.h b/dom/svg/SVGDefsElement.h
index 260459090..00a8cfc29 100644
--- a/dom/svg/SVGDefsElement.h
+++ b/dom/svg/SVGDefsElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGDescElement.cpp b/dom/svg/SVGDescElement.cpp
index 2a6e1434d..fd5e184fd 100644
--- a/dom/svg/SVGDescElement.cpp
+++ b/dom/svg/SVGDescElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGDescElement.h b/dom/svg/SVGDescElement.h
index 8cf7171b6..2ed3384ea 100644
--- a/dom/svg/SVGDescElement.h
+++ b/dom/svg/SVGDescElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGDocument.cpp b/dom/svg/SVGDocument.cpp
index 8b677d2e3..12a5619f4 100644
--- a/dom/svg/SVGDocument.cpp
+++ b/dom/svg/SVGDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGDocument.h b/dom/svg/SVGDocument.h
index 5ec7143da..693aa7a62 100644
--- a/dom/svg/SVGDocument.h
+++ b/dom/svg/SVGDocument.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGElementFactory.cpp b/dom/svg/SVGElementFactory.cpp
index 3738275f3..fe0abae01 100644
--- a/dom/svg/SVGElementFactory.cpp
+++ b/dom/svg/SVGElementFactory.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -13,31 +12,28 @@ using namespace mozilla;
using namespace mozilla::dom;
// Hash table that maps nsIAtom* SVG tags to an offset index
-// within the array sContentCreatorCallbacks (offset by TABLE_VALUE_OFFSET)
+// within the array sSVGContentCreatorFunctions (offset by TABLE_VALUE_OFFSET)
static PLHashTable* sTagAtomTable = nullptr;
// We don't want to store 0 in the hash table as a return value of 0 from
// PL_HashTableLookupConst indicates that the value is not found
#define TABLE_VALUE_OFFSET 1
-#define SVG_TAG(_tag, _classname) \
-nsresult \
-NS_NewSVG##_classname##Element(nsIContent** aResult, \
- already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); \
-\
-static inline nsresult \
-Create##_classname##Element(nsIContent** aResult, \
- already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \
- FromParser aFromParser) \
-{ \
- return NS_NewSVG##_classname##Element(aResult, mozilla::Move(aNodeInfo)); \
-}
+#define SVG_TAG(_tag, _classname) \
+ nsresult NS_NewSVG##_classname##Element( \
+ nsIContent** aResult, \
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo); \
+ \
+ nsresult NS_NewSVG##_classname##Element( \
+ nsIContent** aResult, \
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \
+ FromParser aFromParser) \
+ { \
+ return NS_NewSVG##_classname##Element(aResult, mozilla::Move(aNodeInfo)); \
+ }
+
+#define SVG_FROM_PARSER_TAG(_tag, _classname)
-#define SVG_FROM_PARSER_TAG(_tag, _classname) \
-nsresult \
-NS_NewSVG##_classname##Element(nsIContent** aResult, \
- already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \
- FromParser aFromParser);
#include "SVGTagList.h"
#undef SVG_TAG
#undef SVG_FROM_PARSER_TAG
@@ -46,13 +42,8 @@ nsresult
NS_NewSVGElement(Element** aResult,
already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo);
-typedef nsresult
- (*contentCreatorCallback)(nsIContent** aResult,
- already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
- FromParser aFromParser);
-
-static const contentCreatorCallback sContentCreatorCallbacks[] = {
-#define SVG_TAG(_tag, _classname) Create##_classname##Element,
+static const SVGContentCreatorFunction sSVGContentCreatorFunctions[] = {
+#define SVG_TAG(_tag, _classname) NS_NewSVG##_classname##Element,
#define SVG_FROM_PARSER_TAG(_tag, _classname) NS_NewSVG##_classname##Element,
#include "SVGTagList.h"
#undef SVG_TAG
@@ -122,7 +113,7 @@ NS_NewSVGElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& a
MOZ_CRASH();
}
- contentCreatorCallback cb = sContentCreatorCallbacks[index];
+ SVGContentCreatorFunction cb = sSVGContentCreatorFunctions[index];
nsCOMPtr<nsIContent> content;
nsresult rv = cb(getter_AddRefs(content), ni.forget(), aFromParser);
@@ -133,3 +124,15 @@ NS_NewSVGElement(Element** aResult, already_AddRefed<mozilla::dom::NodeInfo>&& a
// if we don't know what to create, just create a standard svg element:
return NS_NewSVGElement(aResult, ni.forget());
}
+
+nsresult
+NS_NewSVGUnknownElement(nsIContent** aResult,
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
+ FromParser aFromParser)
+{
+ RefPtr<mozilla::dom::NodeInfo> ni = aNodeInfo;
+ nsCOMPtr<Element> element;
+ nsresult rv = NS_NewSVGElement(getter_AddRefs(element), ni.forget());
+ element.forget(aResult);
+ return rv;
+}
diff --git a/dom/svg/SVGElementFactory.h b/dom/svg/SVGElementFactory.h
index 4c57b296d..eded39661 100644
--- a/dom/svg/SVGElementFactory.h
+++ b/dom/svg/SVGElementFactory.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -23,7 +22,32 @@ public:
static void Shutdown();
};
+typedef nsresult (*SVGContentCreatorFunction)(
+ nsIContent** aResult,
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
+ mozilla::dom::FromParser aFromParser);
+
} // namespace dom
} // namespace mozilla
+#define SVG_TAG(_tag, _classname) \
+ nsresult NS_NewSVG##_classname##Element( \
+ nsIContent** aResult, \
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \
+ mozilla::dom::FromParser aFromParser);
+
+#define SVG_FROM_PARSER_TAG(_tag, _classname) \
+ nsresult NS_NewSVG##_classname##Element( \
+ nsIContent** aResult, \
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo, \
+ mozilla::dom::FromParser aFromParser);
+#include "SVGTagList.h"
+#undef SVG_TAG
+#undef SVG_FROM_PARSER_TAG
+
+nsresult
+NS_NewSVGUnknownElement(nsIContent** aResult,
+ already_AddRefed<mozilla::dom::NodeInfo>&& aNodeInfo,
+ mozilla::dom::FromParser aFromParser);
+
#endif /* mozilla_dom_SVGElementFactory_h */
diff --git a/dom/svg/SVGEllipseElement.cpp b/dom/svg/SVGEllipseElement.cpp
index f841e9646..47528af36 100644
--- a/dom/svg/SVGEllipseElement.cpp
+++ b/dom/svg/SVGEllipseElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGEllipseElement.h b/dom/svg/SVGEllipseElement.h
index 27c132fd9..0b1904a32 100644
--- a/dom/svg/SVGEllipseElement.h
+++ b/dom/svg/SVGEllipseElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEBlendElement.cpp b/dom/svg/SVGFEBlendElement.cpp
index 7fea66b61..f969fed21 100644
--- a/dom/svg/SVGFEBlendElement.cpp
+++ b/dom/svg/SVGFEBlendElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEBlendElement.h b/dom/svg/SVGFEBlendElement.h
index 3c5c84523..d0f8a308a 100644
--- a/dom/svg/SVGFEBlendElement.h
+++ b/dom/svg/SVGFEBlendElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEColorMatrixElement.cpp b/dom/svg/SVGFEColorMatrixElement.cpp
index 0402a6dea..9efeb2ed1 100644
--- a/dom/svg/SVGFEColorMatrixElement.cpp
+++ b/dom/svg/SVGFEColorMatrixElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEColorMatrixElement.h b/dom/svg/SVGFEColorMatrixElement.h
index 54f290964..737a77ab0 100644
--- a/dom/svg/SVGFEColorMatrixElement.h
+++ b/dom/svg/SVGFEColorMatrixElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEComponentTransferElement.cpp b/dom/svg/SVGFEComponentTransferElement.cpp
index 25764f418..54f3f494a 100644
--- a/dom/svg/SVGFEComponentTransferElement.cpp
+++ b/dom/svg/SVGFEComponentTransferElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEComponentTransferElement.h b/dom/svg/SVGFEComponentTransferElement.h
index 7881e8ced..43287a186 100644
--- a/dom/svg/SVGFEComponentTransferElement.h
+++ b/dom/svg/SVGFEComponentTransferElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFECompositeElement.cpp b/dom/svg/SVGFECompositeElement.cpp
index 07a1e2934..72df1b56a 100644
--- a/dom/svg/SVGFECompositeElement.cpp
+++ b/dom/svg/SVGFECompositeElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFECompositeElement.h b/dom/svg/SVGFECompositeElement.h
index 4718a8c01..5d970232d 100644
--- a/dom/svg/SVGFECompositeElement.h
+++ b/dom/svg/SVGFECompositeElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEConvolveMatrixElement.cpp b/dom/svg/SVGFEConvolveMatrixElement.cpp
index 3d387ca6a..1f4479821 100644
--- a/dom/svg/SVGFEConvolveMatrixElement.cpp
+++ b/dom/svg/SVGFEConvolveMatrixElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEConvolveMatrixElement.h b/dom/svg/SVGFEConvolveMatrixElement.h
index f1f95c504..73a12c0a9 100644
--- a/dom/svg/SVGFEConvolveMatrixElement.h
+++ b/dom/svg/SVGFEConvolveMatrixElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEDiffuseLightingElement.cpp b/dom/svg/SVGFEDiffuseLightingElement.cpp
index 010cf605f..a02b9501b 100644
--- a/dom/svg/SVGFEDiffuseLightingElement.cpp
+++ b/dom/svg/SVGFEDiffuseLightingElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEDiffuseLightingElement.h b/dom/svg/SVGFEDiffuseLightingElement.h
index 584ab5649..af808f9c2 100644
--- a/dom/svg/SVGFEDiffuseLightingElement.h
+++ b/dom/svg/SVGFEDiffuseLightingElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEDisplacementMapElement.cpp b/dom/svg/SVGFEDisplacementMapElement.cpp
index 84e59d75d..0c2a61d6c 100644
--- a/dom/svg/SVGFEDisplacementMapElement.cpp
+++ b/dom/svg/SVGFEDisplacementMapElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEDisplacementMapElement.h b/dom/svg/SVGFEDisplacementMapElement.h
index 941eda199..a01b3fe7b 100644
--- a/dom/svg/SVGFEDisplacementMapElement.h
+++ b/dom/svg/SVGFEDisplacementMapElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEDistantLightElement.cpp b/dom/svg/SVGFEDistantLightElement.cpp
index 2a4dd446f..05232c46f 100644
--- a/dom/svg/SVGFEDistantLightElement.cpp
+++ b/dom/svg/SVGFEDistantLightElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEDistantLightElement.h b/dom/svg/SVGFEDistantLightElement.h
index f069a9cb1..d4b01a4de 100644
--- a/dom/svg/SVGFEDistantLightElement.h
+++ b/dom/svg/SVGFEDistantLightElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEDropShadowElement.cpp b/dom/svg/SVGFEDropShadowElement.cpp
index f15d43fad..5430f14b6 100644
--- a/dom/svg/SVGFEDropShadowElement.cpp
+++ b/dom/svg/SVGFEDropShadowElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEDropShadowElement.h b/dom/svg/SVGFEDropShadowElement.h
index fcaf701bd..b632c8d2a 100644
--- a/dom/svg/SVGFEDropShadowElement.h
+++ b/dom/svg/SVGFEDropShadowElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEFloodElement.cpp b/dom/svg/SVGFEFloodElement.cpp
index 5cacda78e..25b6fba1d 100644
--- a/dom/svg/SVGFEFloodElement.cpp
+++ b/dom/svg/SVGFEFloodElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEFloodElement.h b/dom/svg/SVGFEFloodElement.h
index 1390e58aa..3c5ac998b 100644
--- a/dom/svg/SVGFEFloodElement.h
+++ b/dom/svg/SVGFEFloodElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEGaussianBlurElement.cpp b/dom/svg/SVGFEGaussianBlurElement.cpp
index 7d9beeec5..79462861a 100644
--- a/dom/svg/SVGFEGaussianBlurElement.cpp
+++ b/dom/svg/SVGFEGaussianBlurElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEGaussianBlurElement.h b/dom/svg/SVGFEGaussianBlurElement.h
index e8a49044f..596a93879 100644
--- a/dom/svg/SVGFEGaussianBlurElement.h
+++ b/dom/svg/SVGFEGaussianBlurElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEImageElement.cpp b/dom/svg/SVGFEImageElement.cpp
index f235d5ccb..1599cd9ea 100644
--- a/dom/svg/SVGFEImageElement.cpp
+++ b/dom/svg/SVGFEImageElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -119,7 +118,8 @@ SVGFEImageElement::IsAttributeMapped(const nsIAtom* name) const
nsresult
SVGFEImageElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aName == nsGkAtoms::href &&
(aNamespaceID == kNameSpaceID_XLink ||
@@ -139,7 +139,7 @@ SVGFEImageElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
}
return SVGFEImageElementBase::AfterSetAttr(aNamespaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
void
diff --git a/dom/svg/SVGFEImageElement.h b/dom/svg/SVGFEImageElement.h
index edf6f065d..970dd569d 100644
--- a/dom/svg/SVGFEImageElement.h
+++ b/dom/svg/SVGFEImageElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -58,7 +57,9 @@ public:
virtual nsresult Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const override;
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsIContent* aBindingParent,
bool aCompileEventHandlers) override;
diff --git a/dom/svg/SVGFEMergeElement.cpp b/dom/svg/SVGFEMergeElement.cpp
index 3147648b5..373626e71 100644
--- a/dom/svg/SVGFEMergeElement.cpp
+++ b/dom/svg/SVGFEMergeElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEMergeElement.h b/dom/svg/SVGFEMergeElement.h
index 07305c28d..d44e6797f 100644
--- a/dom/svg/SVGFEMergeElement.h
+++ b/dom/svg/SVGFEMergeElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEMergeNodeElement.cpp b/dom/svg/SVGFEMergeNodeElement.cpp
index 5a567ef8a..db1b4a7c6 100644
--- a/dom/svg/SVGFEMergeNodeElement.cpp
+++ b/dom/svg/SVGFEMergeNodeElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEMergeNodeElement.h b/dom/svg/SVGFEMergeNodeElement.h
index 04c623ea4..4433676b9 100644
--- a/dom/svg/SVGFEMergeNodeElement.h
+++ b/dom/svg/SVGFEMergeNodeElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEMorphologyElement.cpp b/dom/svg/SVGFEMorphologyElement.cpp
index 3d2de3a0f..6690b9fc6 100644
--- a/dom/svg/SVGFEMorphologyElement.cpp
+++ b/dom/svg/SVGFEMorphologyElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEMorphologyElement.h b/dom/svg/SVGFEMorphologyElement.h
index bc137eaab..cb10ee9c2 100644
--- a/dom/svg/SVGFEMorphologyElement.h
+++ b/dom/svg/SVGFEMorphologyElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEOffsetElement.cpp b/dom/svg/SVGFEOffsetElement.cpp
index f7d9b9cbe..c747c56ef 100644
--- a/dom/svg/SVGFEOffsetElement.cpp
+++ b/dom/svg/SVGFEOffsetElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEOffsetElement.h b/dom/svg/SVGFEOffsetElement.h
index 4e61d95aa..246cf58b5 100644
--- a/dom/svg/SVGFEOffsetElement.h
+++ b/dom/svg/SVGFEOffsetElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEPointLightElement.cpp b/dom/svg/SVGFEPointLightElement.cpp
index 8f80bb71f..1ff261081 100644
--- a/dom/svg/SVGFEPointLightElement.cpp
+++ b/dom/svg/SVGFEPointLightElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFEPointLightElement.h b/dom/svg/SVGFEPointLightElement.h
index 89918bec6..fa00cb858 100644
--- a/dom/svg/SVGFEPointLightElement.h
+++ b/dom/svg/SVGFEPointLightElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFESpecularLightingElement.cpp b/dom/svg/SVGFESpecularLightingElement.cpp
index ae583352e..a59fb5c7e 100644
--- a/dom/svg/SVGFESpecularLightingElement.cpp
+++ b/dom/svg/SVGFESpecularLightingElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFESpecularLightingElement.h b/dom/svg/SVGFESpecularLightingElement.h
index 0d81a4c91..074b14ea1 100644
--- a/dom/svg/SVGFESpecularLightingElement.h
+++ b/dom/svg/SVGFESpecularLightingElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFESpotLightElement.cpp b/dom/svg/SVGFESpotLightElement.cpp
index 222421cfd..92eb53967 100644
--- a/dom/svg/SVGFESpotLightElement.cpp
+++ b/dom/svg/SVGFESpotLightElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFESpotLightElement.h b/dom/svg/SVGFESpotLightElement.h
index 829ae63f1..21c5c9067 100644
--- a/dom/svg/SVGFESpotLightElement.h
+++ b/dom/svg/SVGFESpotLightElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFETileElement.cpp b/dom/svg/SVGFETileElement.cpp
index b649ee636..3fb3b1191 100644
--- a/dom/svg/SVGFETileElement.cpp
+++ b/dom/svg/SVGFETileElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFETileElement.h b/dom/svg/SVGFETileElement.h
index 52efde472..719ae783e 100644
--- a/dom/svg/SVGFETileElement.h
+++ b/dom/svg/SVGFETileElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFETurbulenceElement.cpp b/dom/svg/SVGFETurbulenceElement.cpp
index 908e73506..aab7da6ed 100644
--- a/dom/svg/SVGFETurbulenceElement.cpp
+++ b/dom/svg/SVGFETurbulenceElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFETurbulenceElement.h b/dom/svg/SVGFETurbulenceElement.h
index d6ca2bc47..f87942292 100644
--- a/dom/svg/SVGFETurbulenceElement.h
+++ b/dom/svg/SVGFETurbulenceElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFilterElement.cpp b/dom/svg/SVGFilterElement.cpp
index 65b32dfb7..487a1dcd9 100644
--- a/dom/svg/SVGFilterElement.cpp
+++ b/dom/svg/SVGFilterElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFilterElement.h b/dom/svg/SVGFilterElement.h
index 126865590..4699dafa7 100644
--- a/dom/svg/SVGFilterElement.h
+++ b/dom/svg/SVGFilterElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGForeignObjectElement.cpp b/dom/svg/SVGForeignObjectElement.cpp
index 8a643d79a..4ad0ed61b 100644
--- a/dom/svg/SVGForeignObjectElement.cpp
+++ b/dom/svg/SVGForeignObjectElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGForeignObjectElement.h b/dom/svg/SVGForeignObjectElement.h
index 095bcd56c..7b33929be 100644
--- a/dom/svg/SVGForeignObjectElement.h
+++ b/dom/svg/SVGForeignObjectElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFragmentIdentifier.cpp b/dom/svg/SVGFragmentIdentifier.cpp
index 3adad5444..8b1a55855 100644
--- a/dom/svg/SVGFragmentIdentifier.cpp
+++ b/dom/svg/SVGFragmentIdentifier.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGFragmentIdentifier.h b/dom/svg/SVGFragmentIdentifier.h
index 0fb6fb1a7..dfdc06bfa 100644
--- a/dom/svg/SVGFragmentIdentifier.h
+++ b/dom/svg/SVGFragmentIdentifier.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGGElement.cpp b/dom/svg/SVGGElement.cpp
index 9b052eea5..95d122843 100644
--- a/dom/svg/SVGGElement.cpp
+++ b/dom/svg/SVGGElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGGElement.h b/dom/svg/SVGGElement.h
index ee0d9c9da..78c066665 100644
--- a/dom/svg/SVGGElement.h
+++ b/dom/svg/SVGGElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGGradientElement.cpp b/dom/svg/SVGGradientElement.cpp
index 93767c934..d5c705714 100644
--- a/dom/svg/SVGGradientElement.cpp
+++ b/dom/svg/SVGGradientElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGGradientElement.h b/dom/svg/SVGGradientElement.h
index ce9f3b4b1..7d2709d4e 100644
--- a/dom/svg/SVGGradientElement.h
+++ b/dom/svg/SVGGradientElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGGraphicsElement.cpp b/dom/svg/SVGGraphicsElement.cpp
index 4b85c9abb..32979371a 100644
--- a/dom/svg/SVGGraphicsElement.cpp
+++ b/dom/svg/SVGGraphicsElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGGraphicsElement.h b/dom/svg/SVGGraphicsElement.h
index a6437dba9..04da3d53e 100644
--- a/dom/svg/SVGGraphicsElement.h
+++ b/dom/svg/SVGGraphicsElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGIRect.h b/dom/svg/SVGIRect.h
index d34860095..f46fc40af 100644
--- a/dom/svg/SVGIRect.h
+++ b/dom/svg/SVGIRect.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGImageElement.cpp b/dom/svg/SVGImageElement.cpp
index 524485dee..e6d8cc44c 100644
--- a/dom/svg/SVGImageElement.cpp
+++ b/dom/svg/SVGImageElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -150,7 +149,8 @@ SVGImageElement::AsyncEventRunning(AsyncEventDispatcher* aEvent)
nsresult
SVGImageElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aName == nsGkAtoms::href &&
(aNamespaceID == kNameSpaceID_None ||
@@ -169,7 +169,7 @@ SVGImageElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
}
}
return SVGImageElementBase::AfterSetAttr(aNamespaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
void
diff --git a/dom/svg/SVGImageElement.h b/dom/svg/SVGImageElement.h
index 85730212b..62e826f96 100644
--- a/dom/svg/SVGImageElement.h
+++ b/dom/svg/SVGImageElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -46,7 +45,9 @@ public:
// nsIContent interface
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsIContent* aBindingParent,
bool aCompileEventHandlers) override;
diff --git a/dom/svg/SVGIntegerPairSMILType.cpp b/dom/svg/SVGIntegerPairSMILType.cpp
index e13fae3f5..9ce02e88c 100644
--- a/dom/svg/SVGIntegerPairSMILType.cpp
+++ b/dom/svg/SVGIntegerPairSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGIntegerPairSMILType.h b/dom/svg/SVGIntegerPairSMILType.h
index ae62781fd..984e70a64 100644
--- a/dom/svg/SVGIntegerPairSMILType.h
+++ b/dom/svg/SVGIntegerPairSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGLength.cpp b/dom/svg/SVGLength.cpp
index 988c1e89a..3ae90cf85 100644
--- a/dom/svg/SVGLength.cpp
+++ b/dom/svg/SVGLength.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGLength.h b/dom/svg/SVGLength.h
index 5cfcf9472..2275d0b29 100644
--- a/dom/svg/SVGLength.h
+++ b/dom/svg/SVGLength.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGLengthList.cpp b/dom/svg/SVGLengthList.cpp
index 0c5b7752e..d7a5e7e78 100644
--- a/dom/svg/SVGLengthList.cpp
+++ b/dom/svg/SVGLengthList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGLengthList.h b/dom/svg/SVGLengthList.h
index 7ca07d1da..641cd1e2e 100644
--- a/dom/svg/SVGLengthList.h
+++ b/dom/svg/SVGLengthList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGLengthListSMILType.cpp b/dom/svg/SVGLengthListSMILType.cpp
index 8664965a2..d48872249 100644
--- a/dom/svg/SVGLengthListSMILType.cpp
+++ b/dom/svg/SVGLengthListSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGLengthListSMILType.h b/dom/svg/SVGLengthListSMILType.h
index 2fbb84488..c5e5966f8 100644
--- a/dom/svg/SVGLengthListSMILType.h
+++ b/dom/svg/SVGLengthListSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGLineElement.cpp b/dom/svg/SVGLineElement.cpp
index e4ebd741d..776c6b04a 100644
--- a/dom/svg/SVGLineElement.cpp
+++ b/dom/svg/SVGLineElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGLineElement.h b/dom/svg/SVGLineElement.h
index f2bafa4a3..7ff652424 100644
--- a/dom/svg/SVGLineElement.h
+++ b/dom/svg/SVGLineElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMPathElement.cpp b/dom/svg/SVGMPathElement.cpp
index 4a137f8fc..f9c743c81 100644
--- a/dom/svg/SVGMPathElement.cpp
+++ b/dom/svg/SVGMPathElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMPathElement.h b/dom/svg/SVGMPathElement.h
index fe0894a54..5c80aa18f 100644
--- a/dom/svg/SVGMPathElement.h
+++ b/dom/svg/SVGMPathElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMarkerElement.cpp b/dom/svg/SVGMarkerElement.cpp
index b1f207196..147c1f412 100644
--- a/dom/svg/SVGMarkerElement.cpp
+++ b/dom/svg/SVGMarkerElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMarkerElement.h b/dom/svg/SVGMarkerElement.h
index 04eabafa4..e615b743d 100644
--- a/dom/svg/SVGMarkerElement.h
+++ b/dom/svg/SVGMarkerElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMaskElement.cpp b/dom/svg/SVGMaskElement.cpp
index c22896d1e..9750c2e0c 100644
--- a/dom/svg/SVGMaskElement.cpp
+++ b/dom/svg/SVGMaskElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMaskElement.h b/dom/svg/SVGMaskElement.h
index f0eb8869d..e83d790d7 100644
--- a/dom/svg/SVGMaskElement.h
+++ b/dom/svg/SVGMaskElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMatrix.cpp b/dom/svg/SVGMatrix.cpp
index 3fb0de5fa..07f047cfa 100644
--- a/dom/svg/SVGMatrix.cpp
+++ b/dom/svg/SVGMatrix.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMatrix.h b/dom/svg/SVGMatrix.h
index 14646b5fa..ce681de22 100644
--- a/dom/svg/SVGMatrix.h
+++ b/dom/svg/SVGMatrix.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMetadataElement.cpp b/dom/svg/SVGMetadataElement.cpp
index 92ee9ddf1..9f59b489f 100644
--- a/dom/svg/SVGMetadataElement.cpp
+++ b/dom/svg/SVGMetadataElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMetadataElement.h b/dom/svg/SVGMetadataElement.h
index 322552790..f15cb6439 100644
--- a/dom/svg/SVGMetadataElement.h
+++ b/dom/svg/SVGMetadataElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMotionSMILAnimationFunction.cpp b/dom/svg/SVGMotionSMILAnimationFunction.cpp
index 972d1b627..6b273d1ad 100644
--- a/dom/svg/SVGMotionSMILAnimationFunction.cpp
+++ b/dom/svg/SVGMotionSMILAnimationFunction.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMotionSMILAnimationFunction.h b/dom/svg/SVGMotionSMILAnimationFunction.h
index a9855b372..13512c9d9 100644
--- a/dom/svg/SVGMotionSMILAnimationFunction.h
+++ b/dom/svg/SVGMotionSMILAnimationFunction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMotionSMILAttr.cpp b/dom/svg/SVGMotionSMILAttr.cpp
index 278a018be..adcc589ac 100644
--- a/dom/svg/SVGMotionSMILAttr.cpp
+++ b/dom/svg/SVGMotionSMILAttr.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMotionSMILAttr.h b/dom/svg/SVGMotionSMILAttr.h
index 9fcf52dc2..a00836331 100644
--- a/dom/svg/SVGMotionSMILAttr.h
+++ b/dom/svg/SVGMotionSMILAttr.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMotionSMILPathUtils.cpp b/dom/svg/SVGMotionSMILPathUtils.cpp
index e31c6a386..9793e906c 100644
--- a/dom/svg/SVGMotionSMILPathUtils.cpp
+++ b/dom/svg/SVGMotionSMILPathUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMotionSMILPathUtils.h b/dom/svg/SVGMotionSMILPathUtils.h
index 8616d1dae..367048700 100644
--- a/dom/svg/SVGMotionSMILPathUtils.h
+++ b/dom/svg/SVGMotionSMILPathUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMotionSMILType.cpp b/dom/svg/SVGMotionSMILType.cpp
index 2e91d1774..5ef29f888 100644
--- a/dom/svg/SVGMotionSMILType.cpp
+++ b/dom/svg/SVGMotionSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGMotionSMILType.h b/dom/svg/SVGMotionSMILType.h
index 768c90093..97c63e335 100644
--- a/dom/svg/SVGMotionSMILType.h
+++ b/dom/svg/SVGMotionSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGNumberList.cpp b/dom/svg/SVGNumberList.cpp
index bd30fd3f8..31ef94b14 100644
--- a/dom/svg/SVGNumberList.cpp
+++ b/dom/svg/SVGNumberList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGNumberList.h b/dom/svg/SVGNumberList.h
index b6845ffd5..a739c46d3 100644
--- a/dom/svg/SVGNumberList.h
+++ b/dom/svg/SVGNumberList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGNumberListSMILType.cpp b/dom/svg/SVGNumberListSMILType.cpp
index 51bc27a68..18b6261da 100644
--- a/dom/svg/SVGNumberListSMILType.cpp
+++ b/dom/svg/SVGNumberListSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGNumberListSMILType.h b/dom/svg/SVGNumberListSMILType.h
index efdabdb14..2b0a438f8 100644
--- a/dom/svg/SVGNumberListSMILType.h
+++ b/dom/svg/SVGNumberListSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGNumberPairSMILType.cpp b/dom/svg/SVGNumberPairSMILType.cpp
index e314dfcf1..bf0be0cd3 100644
--- a/dom/svg/SVGNumberPairSMILType.cpp
+++ b/dom/svg/SVGNumberPairSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGNumberPairSMILType.h b/dom/svg/SVGNumberPairSMILType.h
index a88a0f5ac..6cdb942fb 100644
--- a/dom/svg/SVGNumberPairSMILType.h
+++ b/dom/svg/SVGNumberPairSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGOrientSMILType.cpp b/dom/svg/SVGOrientSMILType.cpp
index 8e69ef132..bb185fb1f 100644
--- a/dom/svg/SVGOrientSMILType.cpp
+++ b/dom/svg/SVGOrientSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGOrientSMILType.h b/dom/svg/SVGOrientSMILType.h
index 904b37680..6c6405a91 100644
--- a/dom/svg/SVGOrientSMILType.h
+++ b/dom/svg/SVGOrientSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPathData.cpp b/dom/svg/SVGPathData.cpp
index 2020798b4..493f4d821 100644
--- a/dom/svg/SVGPathData.cpp
+++ b/dom/svg/SVGPathData.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPathData.h b/dom/svg/SVGPathData.h
index 60dffc253..55a14433a 100644
--- a/dom/svg/SVGPathData.h
+++ b/dom/svg/SVGPathData.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPathElement.cpp b/dom/svg/SVGPathElement.cpp
index 85fce0072..204eb04bd 100644
--- a/dom/svg/SVGPathElement.cpp
+++ b/dom/svg/SVGPathElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPathElement.h b/dom/svg/SVGPathElement.h
index 20af44905..c7fc238ce 100644
--- a/dom/svg/SVGPathElement.h
+++ b/dom/svg/SVGPathElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPathSegListSMILType.cpp b/dom/svg/SVGPathSegListSMILType.cpp
index 845781f9f..ba42f494e 100644
--- a/dom/svg/SVGPathSegListSMILType.cpp
+++ b/dom/svg/SVGPathSegListSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPathSegListSMILType.h b/dom/svg/SVGPathSegListSMILType.h
index 5e4e89141..81bfcfa22 100644
--- a/dom/svg/SVGPathSegListSMILType.h
+++ b/dom/svg/SVGPathSegListSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPathSegUtils.cpp b/dom/svg/SVGPathSegUtils.cpp
index 97d34a650..ed6ef33a5 100644
--- a/dom/svg/SVGPathSegUtils.cpp
+++ b/dom/svg/SVGPathSegUtils.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPathSegUtils.h b/dom/svg/SVGPathSegUtils.h
index 9600f5ca1..3bae205bb 100644
--- a/dom/svg/SVGPathSegUtils.h
+++ b/dom/svg/SVGPathSegUtils.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPatternElement.cpp b/dom/svg/SVGPatternElement.cpp
index e94064459..bfb8e8703 100644
--- a/dom/svg/SVGPatternElement.cpp
+++ b/dom/svg/SVGPatternElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPatternElement.h b/dom/svg/SVGPatternElement.h
index 3a89ddd64..d791e3dd4 100644
--- a/dom/svg/SVGPatternElement.h
+++ b/dom/svg/SVGPatternElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPoint.h b/dom/svg/SVGPoint.h
index 2f3b74c4a..fcb9540df 100644
--- a/dom/svg/SVGPoint.h
+++ b/dom/svg/SVGPoint.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPointList.cpp b/dom/svg/SVGPointList.cpp
index c41a109c2..00f640956 100644
--- a/dom/svg/SVGPointList.cpp
+++ b/dom/svg/SVGPointList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPointList.h b/dom/svg/SVGPointList.h
index 7f4008c6d..71977e605 100644
--- a/dom/svg/SVGPointList.h
+++ b/dom/svg/SVGPointList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPointListSMILType.cpp b/dom/svg/SVGPointListSMILType.cpp
index 4b8c6abe7..c1384691c 100644
--- a/dom/svg/SVGPointListSMILType.cpp
+++ b/dom/svg/SVGPointListSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPointListSMILType.h b/dom/svg/SVGPointListSMILType.h
index 053959553..fd6008c1d 100644
--- a/dom/svg/SVGPointListSMILType.h
+++ b/dom/svg/SVGPointListSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPolygonElement.cpp b/dom/svg/SVGPolygonElement.cpp
index a3feaff6f..62c769edc 100644
--- a/dom/svg/SVGPolygonElement.cpp
+++ b/dom/svg/SVGPolygonElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPolygonElement.h b/dom/svg/SVGPolygonElement.h
index 113ff5820..f2d68f1d9 100644
--- a/dom/svg/SVGPolygonElement.h
+++ b/dom/svg/SVGPolygonElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPolylineElement.cpp b/dom/svg/SVGPolylineElement.cpp
index df8d49fec..4c339216d 100644
--- a/dom/svg/SVGPolylineElement.cpp
+++ b/dom/svg/SVGPolylineElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPolylineElement.h b/dom/svg/SVGPolylineElement.h
index d5e1052d8..cf223fd74 100644
--- a/dom/svg/SVGPolylineElement.h
+++ b/dom/svg/SVGPolylineElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPreserveAspectRatio.cpp b/dom/svg/SVGPreserveAspectRatio.cpp
index 1bf338849..e6bbcbb04 100644
--- a/dom/svg/SVGPreserveAspectRatio.cpp
+++ b/dom/svg/SVGPreserveAspectRatio.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGPreserveAspectRatio.h b/dom/svg/SVGPreserveAspectRatio.h
index 69fe860df..77ce4da19 100644
--- a/dom/svg/SVGPreserveAspectRatio.h
+++ b/dom/svg/SVGPreserveAspectRatio.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGRect.cpp b/dom/svg/SVGRect.cpp
index 966b0ff4e..0a82b1064 100644
--- a/dom/svg/SVGRect.cpp
+++ b/dom/svg/SVGRect.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGRect.h b/dom/svg/SVGRect.h
index b2e820b91..b6b448047 100644
--- a/dom/svg/SVGRect.h
+++ b/dom/svg/SVGRect.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGRectElement.cpp b/dom/svg/SVGRectElement.cpp
index 808c7d819..d201311a5 100644
--- a/dom/svg/SVGRectElement.cpp
+++ b/dom/svg/SVGRectElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGRectElement.h b/dom/svg/SVGRectElement.h
index fe32414ee..847a1504a 100644
--- a/dom/svg/SVGRectElement.h
+++ b/dom/svg/SVGRectElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGSVGElement.cpp b/dom/svg/SVGSVGElement.cpp
index 90c3c3fff..70800cff0 100644
--- a/dom/svg/SVGSVGElement.cpp
+++ b/dom/svg/SVGSVGElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -589,7 +588,7 @@ SVGSVGElement::IsAttributeMapped(const nsIAtom* name) const
// nsIContent methods:
nsresult
-SVGSVGElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+SVGSVGElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
if (aVisitor.mEvent->mMessage == eSVGLoad) {
if (mTimedDocumentRoot) {
@@ -600,7 +599,7 @@ SVGSVGElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
AnimationNeedsResample();
}
}
- return SVGSVGElementBase::PreHandleEvent(aVisitor);
+ return SVGSVGElementBase::GetEventTargetParent(aVisitor);
}
bool
diff --git a/dom/svg/SVGSVGElement.h b/dom/svg/SVGSVGElement.h
index da08ad770..18a2d9764 100644
--- a/dom/svg/SVGSVGElement.h
+++ b/dom/svg/SVGSVGElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -152,7 +151,8 @@ public:
// nsIContent interface
NS_IMETHOD_(bool) IsAttributeMapped(const nsIAtom* aAttribute) const override;
- virtual nsresult PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ virtual nsresult GetEventTargetParent(
+ EventChainPreVisitor& aVisitor) override;
virtual bool IsEventAttributeName(nsIAtom* aName) override;
diff --git a/dom/svg/SVGScriptElement.cpp b/dom/svg/SVGScriptElement.cpp
index 1e0647104..101b72125 100644
--- a/dom/svg/SVGScriptElement.cpp
+++ b/dom/svg/SVGScriptElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -211,7 +210,8 @@ SVGScriptElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsresult
SVGScriptElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if ((aNamespaceID == kNameSpaceID_XLink ||
aNamespaceID == kNameSpaceID_None) &&
@@ -219,7 +219,7 @@ SVGScriptElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
MaybeProcessScript();
}
return SVGScriptElementBase::AfterSetAttr(aNamespaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
bool
diff --git a/dom/svg/SVGScriptElement.h b/dom/svg/SVGScriptElement.h
index d89f860fb..6ca691230 100644
--- a/dom/svg/SVGScriptElement.h
+++ b/dom/svg/SVGScriptElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -55,7 +54,9 @@ public:
nsIContent* aBindingParent,
bool aCompileEventHandlers) override;
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual bool ParseAttribute(int32_t aNamespaceID,
nsIAtom* aAttribute,
const nsAString& aValue,
diff --git a/dom/svg/SVGSetElement.cpp b/dom/svg/SVGSetElement.cpp
index 5073d17b4..3fd156c41 100644
--- a/dom/svg/SVGSetElement.cpp
+++ b/dom/svg/SVGSetElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGSetElement.h b/dom/svg/SVGSetElement.h
index cc7611401..51ffb0360 100644
--- a/dom/svg/SVGSetElement.h
+++ b/dom/svg/SVGSetElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGStopElement.cpp b/dom/svg/SVGStopElement.cpp
index b10ae5ffd..7d1828943 100644
--- a/dom/svg/SVGStopElement.cpp
+++ b/dom/svg/SVGStopElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGStopElement.h b/dom/svg/SVGStopElement.h
index cdf5204f4..eb770f650 100644
--- a/dom/svg/SVGStopElement.h
+++ b/dom/svg/SVGStopElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGStringList.cpp b/dom/svg/SVGStringList.cpp
index dc00bc5b8..4b61c5748 100644
--- a/dom/svg/SVGStringList.cpp
+++ b/dom/svg/SVGStringList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGStringList.h b/dom/svg/SVGStringList.h
index e10ac5da4..eacea2496 100644
--- a/dom/svg/SVGStringList.h
+++ b/dom/svg/SVGStringList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGStyleElement.cpp b/dom/svg/SVGStyleElement.cpp
index 7655c1198..853122221 100644
--- a/dom/svg/SVGStyleElement.cpp
+++ b/dom/svg/SVGStyleElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGStyleElement.h b/dom/svg/SVGStyleElement.h
index e637dfb18..8852d60ba 100644
--- a/dom/svg/SVGStyleElement.h
+++ b/dom/svg/SVGStyleElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGSwitchElement.cpp b/dom/svg/SVGSwitchElement.cpp
index a0358dc15..41e594010 100644
--- a/dom/svg/SVGSwitchElement.cpp
+++ b/dom/svg/SVGSwitchElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGSwitchElement.h b/dom/svg/SVGSwitchElement.h
index 1fbf5fd92..960cd156b 100644
--- a/dom/svg/SVGSwitchElement.h
+++ b/dom/svg/SVGSwitchElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGSymbolElement.cpp b/dom/svg/SVGSymbolElement.cpp
index a1b52bfab..d224b28de 100644
--- a/dom/svg/SVGSymbolElement.cpp
+++ b/dom/svg/SVGSymbolElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGSymbolElement.h b/dom/svg/SVGSymbolElement.h
index 427840f3f..dfeed0013 100644
--- a/dom/svg/SVGSymbolElement.h
+++ b/dom/svg/SVGSymbolElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTSpanElement.cpp b/dom/svg/SVGTSpanElement.cpp
index 29a0fbe11..2b8d4ee3f 100644
--- a/dom/svg/SVGTSpanElement.cpp
+++ b/dom/svg/SVGTSpanElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTSpanElement.h b/dom/svg/SVGTSpanElement.h
index 5f7670fd1..9bcd45404 100644
--- a/dom/svg/SVGTSpanElement.h
+++ b/dom/svg/SVGTSpanElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTagList.h b/dom/svg/SVGTagList.h
index 219cafc43..ce2ebd27b 100644
--- a/dom/svg/SVGTagList.h
+++ b/dom/svg/SVGTagList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -9,7 +8,14 @@
This file contains the list of all SVG tags.
It is designed to be used as inline input to SVGElementFactory.cpp
- *only* through the magic of C preprocessing.
+ through the magic of C preprocessing.
+
+ Additionally, it is consumed by the self-regeneration code in
+ ElementName.java from which nsHtml5ElementName.cpp/h is translated.
+ See parser/html/java/README.txt.
+
+ If you edit this list, you need to re-run ElementName.java
+ self-regeneration and the HTML parser Java to C++ translation.
All entries must be enclosed in the macro SVG_TAG or SVG_FROM_PARSER_TAG
which will have cruel and unusual things done to them.
diff --git a/dom/svg/SVGTests.cpp b/dom/svg/SVGTests.cpp
index 03b205f67..d762e0c33 100644
--- a/dom/svg/SVGTests.cpp
+++ b/dom/svg/SVGTests.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTests.h b/dom/svg/SVGTests.h
index 1e0de76e3..34f26023b 100644
--- a/dom/svg/SVGTests.h
+++ b/dom/svg/SVGTests.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTextContentElement.cpp b/dom/svg/SVGTextContentElement.cpp
index a3e813e7e..d471b8c4b 100644
--- a/dom/svg/SVGTextContentElement.cpp
+++ b/dom/svg/SVGTextContentElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTextContentElement.h b/dom/svg/SVGTextContentElement.h
index 5f126c811..7239e8fe7 100644
--- a/dom/svg/SVGTextContentElement.h
+++ b/dom/svg/SVGTextContentElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTextElement.cpp b/dom/svg/SVGTextElement.cpp
index 3d1d1c230..8fff29a43 100644
--- a/dom/svg/SVGTextElement.cpp
+++ b/dom/svg/SVGTextElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTextElement.h b/dom/svg/SVGTextElement.h
index 76388cc91..0e752ebb9 100644
--- a/dom/svg/SVGTextElement.h
+++ b/dom/svg/SVGTextElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTextPathElement.cpp b/dom/svg/SVGTextPathElement.cpp
index 7acfbbd88..90bf1b6e1 100644
--- a/dom/svg/SVGTextPathElement.cpp
+++ b/dom/svg/SVGTextPathElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTextPathElement.h b/dom/svg/SVGTextPathElement.h
index 39cf72e80..cf93c249d 100644
--- a/dom/svg/SVGTextPathElement.h
+++ b/dom/svg/SVGTextPathElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTextPositioningElement.cpp b/dom/svg/SVGTextPositioningElement.cpp
index e4a3cbf4f..811528e28 100644
--- a/dom/svg/SVGTextPositioningElement.cpp
+++ b/dom/svg/SVGTextPositioningElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTextPositioningElement.h b/dom/svg/SVGTextPositioningElement.h
index b58bba84a..48a01568a 100644
--- a/dom/svg/SVGTextPositioningElement.h
+++ b/dom/svg/SVGTextPositioningElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTitleElement.cpp b/dom/svg/SVGTitleElement.cpp
index bd7217781..5432de9ff 100644
--- a/dom/svg/SVGTitleElement.cpp
+++ b/dom/svg/SVGTitleElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTitleElement.h b/dom/svg/SVGTitleElement.h
index ca9151d60..2d216a5e4 100644
--- a/dom/svg/SVGTitleElement.h
+++ b/dom/svg/SVGTitleElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransform.cpp b/dom/svg/SVGTransform.cpp
index 1cba997eb..7ca5498ed 100644
--- a/dom/svg/SVGTransform.cpp
+++ b/dom/svg/SVGTransform.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransform.h b/dom/svg/SVGTransform.h
index 49c0b03ed..458ef2f94 100644
--- a/dom/svg/SVGTransform.h
+++ b/dom/svg/SVGTransform.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransformList.cpp b/dom/svg/SVGTransformList.cpp
index c6c4eefaf..81147c08b 100644
--- a/dom/svg/SVGTransformList.cpp
+++ b/dom/svg/SVGTransformList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransformList.h b/dom/svg/SVGTransformList.h
index ed8202bce..31dcdabb1 100644
--- a/dom/svg/SVGTransformList.h
+++ b/dom/svg/SVGTransformList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransformListParser.cpp b/dom/svg/SVGTransformListParser.cpp
index 635c96b11..77f9fcbbb 100644
--- a/dom/svg/SVGTransformListParser.cpp
+++ b/dom/svg/SVGTransformListParser.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransformListParser.h b/dom/svg/SVGTransformListParser.h
index 784297963..50757a57b 100644
--- a/dom/svg/SVGTransformListParser.h
+++ b/dom/svg/SVGTransformListParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransformListSMILType.cpp b/dom/svg/SVGTransformListSMILType.cpp
index 40777b026..12a28dd48 100644
--- a/dom/svg/SVGTransformListSMILType.cpp
+++ b/dom/svg/SVGTransformListSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransformListSMILType.h b/dom/svg/SVGTransformListSMILType.h
index 6572815a1..85994179e 100644
--- a/dom/svg/SVGTransformListSMILType.h
+++ b/dom/svg/SVGTransformListSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransformableElement.cpp b/dom/svg/SVGTransformableElement.cpp
index a9028fc49..84c100dad 100644
--- a/dom/svg/SVGTransformableElement.cpp
+++ b/dom/svg/SVGTransformableElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGTransformableElement.h b/dom/svg/SVGTransformableElement.h
index e356373f1..26ce17803 100644
--- a/dom/svg/SVGTransformableElement.h
+++ b/dom/svg/SVGTransformableElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGUseElement.cpp b/dom/svg/SVGUseElement.cpp
index 9212ab1aa..aceac1bb8 100644
--- a/dom/svg/SVGUseElement.cpp
+++ b/dom/svg/SVGUseElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGUseElement.h b/dom/svg/SVGUseElement.h
index 7630e9af6..559b06625 100644
--- a/dom/svg/SVGUseElement.h
+++ b/dom/svg/SVGUseElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGViewBoxSMILType.cpp b/dom/svg/SVGViewBoxSMILType.cpp
index d11ca1a82..8f88cf44c 100644
--- a/dom/svg/SVGViewBoxSMILType.cpp
+++ b/dom/svg/SVGViewBoxSMILType.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGViewBoxSMILType.h b/dom/svg/SVGViewBoxSMILType.h
index 54b171263..cb156a757 100644
--- a/dom/svg/SVGViewBoxSMILType.h
+++ b/dom/svg/SVGViewBoxSMILType.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGViewElement.cpp b/dom/svg/SVGViewElement.cpp
index a9c5c1621..93bcccf86 100644
--- a/dom/svg/SVGViewElement.cpp
+++ b/dom/svg/SVGViewElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGViewElement.h b/dom/svg/SVGViewElement.h
index 9b2db262e..2c76890e9 100644
--- a/dom/svg/SVGViewElement.h
+++ b/dom/svg/SVGViewElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGZoomEvent.cpp b/dom/svg/SVGZoomEvent.cpp
index 4856f2c38..e57c8fa66 100644
--- a/dom/svg/SVGZoomEvent.cpp
+++ b/dom/svg/SVGZoomEvent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/SVGZoomEvent.h b/dom/svg/SVGZoomEvent.h
index c0937309b..a1374e7f8 100644
--- a/dom/svg/SVGZoomEvent.h
+++ b/dom/svg/SVGZoomEvent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/moz.build b/dom/svg/moz.build
index 3bbb26dd8..7c05513e3 100644
--- a/dom/svg/moz.build
+++ b/dom/svg/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
@@ -14,6 +13,7 @@ EXPORTS += [
'SVGContentUtils.h',
'SVGPreserveAspectRatio.h',
'SVGStringList.h',
+ 'SVGTagList.h',
]
EXPORTS.mozilla.dom += [
@@ -39,6 +39,7 @@ EXPORTS.mozilla.dom += [
'SVGDefsElement.h',
'SVGDescElement.h',
'SVGDocument.h',
+ 'SVGElementFactory.h',
'SVGEllipseElement.h',
'SVGFEBlendElement.h',
'SVGFEColorMatrixElement.h',
diff --git a/dom/svg/nsISVGPoint.cpp b/dom/svg/nsISVGPoint.cpp
index f4fdb9dd0..6f383a6ff 100644
--- a/dom/svg/nsISVGPoint.cpp
+++ b/dom/svg/nsISVGPoint.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsISVGPoint.h b/dom/svg/nsISVGPoint.h
index 4c075e8d3..010c1350d 100644
--- a/dom/svg/nsISVGPoint.h
+++ b/dom/svg/nsISVGPoint.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGAngle.cpp b/dom/svg/nsSVGAngle.cpp
index 848ecb04e..7fb2042e5 100644
--- a/dom/svg/nsSVGAngle.cpp
+++ b/dom/svg/nsSVGAngle.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGAngle.h b/dom/svg/nsSVGAngle.h
index 29b7d066a..95a3eaebd 100644
--- a/dom/svg/nsSVGAngle.h
+++ b/dom/svg/nsSVGAngle.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGAnimatedTransformList.cpp b/dom/svg/nsSVGAnimatedTransformList.cpp
index b5933faef..561773d7e 100644
--- a/dom/svg/nsSVGAnimatedTransformList.cpp
+++ b/dom/svg/nsSVGAnimatedTransformList.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGAnimatedTransformList.h b/dom/svg/nsSVGAnimatedTransformList.h
index 8b7b299ed..1370280e8 100644
--- a/dom/svg/nsSVGAnimatedTransformList.h
+++ b/dom/svg/nsSVGAnimatedTransformList.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGAttrTearoffTable.h b/dom/svg/nsSVGAttrTearoffTable.h
index ff907caa2..76cea4624 100644
--- a/dom/svg/nsSVGAttrTearoffTable.h
+++ b/dom/svg/nsSVGAttrTearoffTable.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGBoolean.cpp b/dom/svg/nsSVGBoolean.cpp
index 10b800475..c6281e8bb 100644
--- a/dom/svg/nsSVGBoolean.cpp
+++ b/dom/svg/nsSVGBoolean.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGBoolean.h b/dom/svg/nsSVGBoolean.h
index 95bfced32..5d74dabd3 100644
--- a/dom/svg/nsSVGBoolean.h
+++ b/dom/svg/nsSVGBoolean.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGClass.cpp b/dom/svg/nsSVGClass.cpp
index 6b64c3be7..76b3dd2bf 100644
--- a/dom/svg/nsSVGClass.cpp
+++ b/dom/svg/nsSVGClass.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -70,7 +69,7 @@ nsSVGClass::SetBaseValue(const nsAString& aValue,
{
NS_ASSERTION(aSVGElement, "Null element passed to SetBaseValue");
- aSVGElement->SetFlags(NODE_MAY_HAVE_CLASS);
+ aSVGElement->SetMayHaveClass();
if (aDoSetAttr) {
aSVGElement->SetAttr(kNameSpaceID_None, nsGkAtoms::_class, aValue, true);
}
@@ -106,7 +105,7 @@ nsSVGClass::SetAnimValue(const nsAString& aValue, nsSVGElement *aSVGElement)
mAnimVal = new nsString();
}
*mAnimVal = aValue;
- aSVGElement->SetFlags(NODE_MAY_HAVE_CLASS);
+ aSVGElement->SetMayHaveClass();
aSVGElement->DidAnimateClass();
}
diff --git a/dom/svg/nsSVGClass.h b/dom/svg/nsSVGClass.h
index 8f38ba39f..12be7689a 100644
--- a/dom/svg/nsSVGClass.h
+++ b/dom/svg/nsSVGClass.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGDataParser.cpp b/dom/svg/nsSVGDataParser.cpp
index ce81ce4be..b7d774ea4 100644
--- a/dom/svg/nsSVGDataParser.cpp
+++ b/dom/svg/nsSVGDataParser.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGDataParser.h b/dom/svg/nsSVGDataParser.h
index 1d28cae8d..040b560f9 100644
--- a/dom/svg/nsSVGDataParser.h
+++ b/dom/svg/nsSVGDataParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGElement.cpp b/dom/svg/nsSVGElement.cpp
index ce849acf0..3596235ce 100644
--- a/dom/svg/nsSVGElement.cpp
+++ b/dom/svg/nsSVGElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -18,6 +17,7 @@
#include "nsIDOMMutationEvent.h"
#include "nsSVGPathGeometryElement.h"
#include "mozilla/InternalMutationEvent.h"
+#include "mozAutoDocUpdate.h"
#include "nsError.h"
#include "nsIPresShell.h"
#include "nsGkAtoms.h"
@@ -272,7 +272,9 @@ nsSVGElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
ParseStyleAttribute(stringValue, attrValue, true);
// Don't bother going through SetInlineStyleDeclaration; we don't
// want to fire off mutation events or document notifications anyway
- rv = mAttrsAndChildren.SetAndSwapAttr(nsGkAtoms::style, attrValue);
+ bool oldValueSet;
+ rv = mAttrsAndChildren.SetAndSwapAttr(nsGkAtoms::style, attrValue,
+ &oldValueSet);
NS_ENSURE_SUCCESS(rv, rv);
}
@@ -281,7 +283,8 @@ nsSVGElement::BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsresult
nsSVGElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
// We don't currently use nsMappedAttributes within SVG. If this changes, we
// need to be very careful because some nsAttrValues used by SVG point to
@@ -309,7 +312,8 @@ nsSVGElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
NS_ENSURE_SUCCESS(rv, rv);
}
- return nsSVGElementBase::AfterSetAttr(aNamespaceID, aName, aValue, aNotify);
+ return nsSVGElementBase::AfterSetAttr(aNamespaceID, aName, aValue, aOldValue,
+ aNotify);
}
bool
@@ -1441,27 +1445,16 @@ nsSVGElement::WillChangeValue(nsIAtom* aName)
// We need an empty attr value:
// a) to pass to BeforeSetAttr when GetParsedAttr returns nullptr
// b) to store the old value in the case we have mutation listeners
- // We can use the same value for both purposes since (a) happens before (b).
+ //
+ // We can use the same value for both purposes, because if GetParsedAttr
+ // returns non-null its return value is what will get passed to BeforeSetAttr,
+ // not matter what our mutation listener situation is.
+ //
// Also, we should be careful to always return this value to benefit from
// return value optimization.
nsAttrValue emptyOrOldAttrValue;
const nsAttrValue* attrValue = GetParsedAttr(aName);
- // This is not strictly correct--the attribute value parameter for
- // BeforeSetAttr should reflect the value that *will* be set but that implies
- // allocating, e.g. an extra nsSVGLength2, and isn't necessary at the moment
- // since no SVG elements overload BeforeSetAttr. For now we just pass the
- // current value.
- nsAttrValueOrString attrStringOrValue(attrValue ? *attrValue
- : emptyOrOldAttrValue);
- DebugOnly<nsresult> rv =
- BeforeSetAttr(kNameSpaceID_None, aName, &attrStringOrValue,
- kNotifyDocumentObservers);
- // SVG elements aren't expected to overload BeforeSetAttr in such a way that
- // it may fail. So long as this is the case we don't need to check and pass on
- // the return value which simplifies the calling code significantly.
- MOZ_ASSERT(NS_SUCCEEDED(rv), "Unexpected failure from BeforeSetAttr");
-
// We only need to set the old value if we have listeners since otherwise it
// isn't used.
if (attrValue &&
@@ -1477,6 +1470,21 @@ nsSVGElement::WillChangeValue(nsIAtom* aName)
nsNodeUtils::AttributeWillChange(this, kNameSpaceID_None, aName, modType,
nullptr);
+ // This is not strictly correct--the attribute value parameter for
+ // BeforeSetAttr should reflect the value that *will* be set but that implies
+ // allocating, e.g. an extra nsSVGLength2, and isn't necessary at the moment
+ // since no SVG elements overload BeforeSetAttr. For now we just pass the
+ // current value.
+ nsAttrValueOrString attrStringOrValue(attrValue ? *attrValue
+ : emptyOrOldAttrValue);
+ DebugOnly<nsresult> rv =
+ BeforeSetAttr(kNameSpaceID_None, aName, &attrStringOrValue,
+ kNotifyDocumentObservers);
+ // SVG elements aren't expected to overload BeforeSetAttr in such a way that
+ // it may fail. So long as this is the case we don't need to check and pass on
+ // the return value which simplifies the calling code significantly.
+ MOZ_ASSERT(NS_SUCCEEDED(rv), "Unexpected failure from BeforeSetAttr");
+
return emptyOrOldAttrValue;
}
@@ -1505,9 +1513,17 @@ nsSVGElement::DidChangeValue(nsIAtom* aName,
uint8_t modType = HasAttr(kNameSpaceID_None, aName)
? static_cast<uint8_t>(nsIDOMMutationEvent::MODIFICATION)
: static_cast<uint8_t>(nsIDOMMutationEvent::ADDITION);
- SetAttrAndNotify(kNameSpaceID_None, aName, nullptr, aEmptyOrOldValue,
+
+ nsIDocument* document = GetComposedDoc();
+ mozAutoDocUpdate updateBatch(document, UPDATE_CONTENT_MODEL,
+ kNotifyDocumentObservers);
+ // XXX Really, the fourth argument to SetAttrAndNotify should be null if
+ // aEmptyOrOldValue does not represent the actual previous value of the
+ // attribute, but currently SVG elements do not even use the old attribute
+ // value in |AfterSetAttr|, so this should be ok.
+ SetAttrAndNotify(kNameSpaceID_None, aName, nullptr, &aEmptyOrOldValue,
aNewValue, modType, hasListeners, kNotifyDocumentObservers,
- kCallAfterSetAttr);
+ kCallAfterSetAttr, document, updateBatch);
}
void
@@ -1527,7 +1543,8 @@ nsSVGElement::MaybeSerializeAttrBeforeRemoval(nsIAtom* aName, bool aNotify)
nsAutoString serializedValue;
attrValue->ToString(serializedValue);
nsAttrValue oldAttrValue(serializedValue);
- mAttrsAndChildren.SetAndSwapAttr(aName, oldAttrValue);
+ bool oldValueSet;
+ mAttrsAndChildren.SetAndSwapAttr(aName, oldAttrValue, &oldValueSet);
}
/* static */
diff --git a/dom/svg/nsSVGElement.h b/dom/svg/nsSVGElement.h
index 257ed7a2e..08f0aaaa1 100644
--- a/dom/svg/nsSVGElement.h
+++ b/dom/svg/nsSVGElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -329,14 +328,16 @@ protected:
// BeforeSetAttr since it would involve allocating extra SVG value types.
// See the comment in nsSVGElement::WillChangeValue.
virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override final
{
return nsSVGElementBase::BeforeSetAttr(aNamespaceID, aName, aValue, aNotify);
}
#endif // DEBUG
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual bool ParseAttribute(int32_t aNamespaceID, nsIAtom* aAttribute,
const nsAString& aValue, nsAttrValue& aResult) override;
static nsresult ReportAttributeParseFailure(nsIDocument* aDocument,
diff --git a/dom/svg/nsSVGEnum.cpp b/dom/svg/nsSVGEnum.cpp
index cb6c7c450..cf27bd2bb 100644
--- a/dom/svg/nsSVGEnum.cpp
+++ b/dom/svg/nsSVGEnum.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGEnum.h b/dom/svg/nsSVGEnum.h
index 780285384..1c7560cc9 100644
--- a/dom/svg/nsSVGEnum.h
+++ b/dom/svg/nsSVGEnum.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGFeatures.cpp b/dom/svg/nsSVGFeatures.cpp
index c7d3bf22a..79c92c92f 100644
--- a/dom/svg/nsSVGFeatures.cpp
+++ b/dom/svg/nsSVGFeatures.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGFeatures.h b/dom/svg/nsSVGFeatures.h
index 9c0421deb..72ed5c104 100644
--- a/dom/svg/nsSVGFeatures.h
+++ b/dom/svg/nsSVGFeatures.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGFilters.cpp b/dom/svg/nsSVGFilters.cpp
index c677156c9..7f7ec7c60 100644
--- a/dom/svg/nsSVGFilters.cpp
+++ b/dom/svg/nsSVGFilters.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGFilters.h b/dom/svg/nsSVGFilters.h
index 4d845b244..ebbe1aa21 100644
--- a/dom/svg/nsSVGFilters.h
+++ b/dom/svg/nsSVGFilters.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGInteger.cpp b/dom/svg/nsSVGInteger.cpp
index c0eb9c85e..8fd773a24 100644
--- a/dom/svg/nsSVGInteger.cpp
+++ b/dom/svg/nsSVGInteger.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGInteger.h b/dom/svg/nsSVGInteger.h
index cc237e463..13647cb2a 100644
--- a/dom/svg/nsSVGInteger.h
+++ b/dom/svg/nsSVGInteger.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGIntegerPair.cpp b/dom/svg/nsSVGIntegerPair.cpp
index 5a3998c2b..5c3d362d9 100644
--- a/dom/svg/nsSVGIntegerPair.cpp
+++ b/dom/svg/nsSVGIntegerPair.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGIntegerPair.h b/dom/svg/nsSVGIntegerPair.h
index b3eec328a..3cd5216fd 100644
--- a/dom/svg/nsSVGIntegerPair.h
+++ b/dom/svg/nsSVGIntegerPair.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGLength2.cpp b/dom/svg/nsSVGLength2.cpp
index 1deec1006..329af9a7f 100644
--- a/dom/svg/nsSVGLength2.cpp
+++ b/dom/svg/nsSVGLength2.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGLength2.h b/dom/svg/nsSVGLength2.h
index d67bbdaad..6bdd32798 100644
--- a/dom/svg/nsSVGLength2.h
+++ b/dom/svg/nsSVGLength2.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGNumber2.cpp b/dom/svg/nsSVGNumber2.cpp
index ece721ee0..1883d64a1 100644
--- a/dom/svg/nsSVGNumber2.cpp
+++ b/dom/svg/nsSVGNumber2.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGNumber2.h b/dom/svg/nsSVGNumber2.h
index 7a39a5699..4f478fa3c 100644
--- a/dom/svg/nsSVGNumber2.h
+++ b/dom/svg/nsSVGNumber2.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGNumberPair.cpp b/dom/svg/nsSVGNumberPair.cpp
index fd1532546..c44a12efa 100644
--- a/dom/svg/nsSVGNumberPair.cpp
+++ b/dom/svg/nsSVGNumberPair.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGNumberPair.h b/dom/svg/nsSVGNumberPair.h
index 54e28b486..af2a3ef67 100644
--- a/dom/svg/nsSVGNumberPair.h
+++ b/dom/svg/nsSVGNumberPair.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGPathDataParser.cpp b/dom/svg/nsSVGPathDataParser.cpp
index 8ab526820..d2a11d2a9 100644
--- a/dom/svg/nsSVGPathDataParser.cpp
+++ b/dom/svg/nsSVGPathDataParser.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGPathDataParser.h b/dom/svg/nsSVGPathDataParser.h
index 3a880218d..26efff80c 100644
--- a/dom/svg/nsSVGPathDataParser.h
+++ b/dom/svg/nsSVGPathDataParser.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGPathGeometryElement.cpp b/dom/svg/nsSVGPathGeometryElement.cpp
index ea2e1c7c4..726ee9578 100644
--- a/dom/svg/nsSVGPathGeometryElement.cpp
+++ b/dom/svg/nsSVGPathGeometryElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -26,7 +25,8 @@ nsSVGPathGeometryElement::nsSVGPathGeometryElement(already_AddRefed<mozilla::dom
nsresult
nsSVGPathGeometryElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (mCachedPath &&
aNamespaceID == kNameSpaceID_None &&
@@ -34,7 +34,7 @@ nsSVGPathGeometryElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
mCachedPath = nullptr;
}
return nsSVGPathGeometryElementBase::AfterSetAttr(aNamespaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
bool
diff --git a/dom/svg/nsSVGPathGeometryElement.h b/dom/svg/nsSVGPathGeometryElement.h
index 1091fa0dc..517d74096 100644
--- a/dom/svg/nsSVGPathGeometryElement.h
+++ b/dom/svg/nsSVGPathGeometryElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -45,7 +44,9 @@ public:
explicit nsSVGPathGeometryElement(already_AddRefed<mozilla::dom::NodeInfo>& aNodeInfo);
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
/**
* Causes this element to discard any Path object that GetOrBuildPath may
diff --git a/dom/svg/nsSVGPolyElement.cpp b/dom/svg/nsSVGPolyElement.cpp
index 441f8aa51..ec45dcb03 100644
--- a/dom/svg/nsSVGPolyElement.cpp
+++ b/dom/svg/nsSVGPolyElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGPolyElement.h b/dom/svg/nsSVGPolyElement.h
index 1dcde0078..69c3fac5f 100644
--- a/dom/svg/nsSVGPolyElement.h
+++ b/dom/svg/nsSVGPolyElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGString.cpp b/dom/svg/nsSVGString.cpp
index 637a03dee..71b667ff5 100644
--- a/dom/svg/nsSVGString.cpp
+++ b/dom/svg/nsSVGString.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGString.h b/dom/svg/nsSVGString.h
index a27743b66..9e1f68e0e 100644
--- a/dom/svg/nsSVGString.h
+++ b/dom/svg/nsSVGString.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGTransform.cpp b/dom/svg/nsSVGTransform.cpp
index 3a07fa21f..f55961803 100644
--- a/dom/svg/nsSVGTransform.cpp
+++ b/dom/svg/nsSVGTransform.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGTransform.h b/dom/svg/nsSVGTransform.h
index be55d3e2e..52b51eb19 100644
--- a/dom/svg/nsSVGTransform.h
+++ b/dom/svg/nsSVGTransform.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGViewBox.cpp b/dom/svg/nsSVGViewBox.cpp
index f0e6b0092..34f6a74f8 100644
--- a/dom/svg/nsSVGViewBox.cpp
+++ b/dom/svg/nsSVGViewBox.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/svg/nsSVGViewBox.h b/dom/svg/nsSVGViewBox.h
index 9b046a965..606ef2494 100644
--- a/dom/svg/nsSVGViewBox.h
+++ b/dom/svg/nsSVGViewBox.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/OSFileConstants.cpp b/dom/system/OSFileConstants.cpp
index ec84d784b..7fde5824c 100644
--- a/dom/system/OSFileConstants.cpp
+++ b/dom/system/OSFileConstants.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/OSFileConstants.h b/dom/system/OSFileConstants.h
index 855184d4d..94aa53777 100644
--- a/dom/system/OSFileConstants.h
+++ b/dom/system/OSFileConstants.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/android/AndroidLocationProvider.cpp b/dom/system/android/AndroidLocationProvider.cpp
index 187918d72..48694012a 100644
--- a/dom/system/android/AndroidLocationProvider.cpp
+++ b/dom/system/android/AndroidLocationProvider.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/android/AndroidLocationProvider.h b/dom/system/android/AndroidLocationProvider.h
index 4c24f8c9a..f6dc905b7 100644
--- a/dom/system/android/AndroidLocationProvider.h
+++ b/dom/system/android/AndroidLocationProvider.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/android/moz.build b/dom/system/android/moz.build
index 53ac80f89..ad4a7c234 100644
--- a/dom/system/android/moz.build
+++ b/dom/system/android/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/system/android/nsHapticFeedback.cpp b/dom/system/android/nsHapticFeedback.cpp
index 4cf01aaa3..37b51767a 100644
--- a/dom/system/android/nsHapticFeedback.cpp
+++ b/dom/system/android/nsHapticFeedback.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/android/nsHapticFeedback.h b/dom/system/android/nsHapticFeedback.h
index bac3490b7..3b5c01c44 100644
--- a/dom/system/android/nsHapticFeedback.h
+++ b/dom/system/android/nsHapticFeedback.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/linux/GpsdLocationProvider.cpp b/dom/system/linux/GpsdLocationProvider.cpp
index eeee806dc..c11718869 100644
--- a/dom/system/linux/GpsdLocationProvider.cpp
+++ b/dom/system/linux/GpsdLocationProvider.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/linux/GpsdLocationProvider.h b/dom/system/linux/GpsdLocationProvider.h
index c49bad9f4..1bfc3238c 100644
--- a/dom/system/linux/GpsdLocationProvider.h
+++ b/dom/system/linux/GpsdLocationProvider.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/linux/moz.build b/dom/system/linux/moz.build
index d9e50cb31..70499b67c 100644
--- a/dom/system/linux/moz.build
+++ b/dom/system/linux/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/system/mac/CoreLocationLocationProvider.h b/dom/system/mac/CoreLocationLocationProvider.h
index 1c5fc2667..979bc916d 100644
--- a/dom/system/mac/CoreLocationLocationProvider.h
+++ b/dom/system/mac/CoreLocationLocationProvider.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/mac/moz.build b/dom/system/mac/moz.build
index 596ab0191..08b7c2151 100644
--- a/dom/system/mac/moz.build
+++ b/dom/system/mac/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/system/moz.build b/dom/system/moz.build
index cb0818b34..bde685e4f 100644
--- a/dom/system/moz.build
+++ b/dom/system/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/system/nsDeviceSensors.cpp b/dom/system/nsDeviceSensors.cpp
index 739f67a07..3b6babc67 100644
--- a/dom/system/nsDeviceSensors.cpp
+++ b/dom/system/nsDeviceSensors.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/nsDeviceSensors.h b/dom/system/nsDeviceSensors.h
index bed6cd69d..fec77cfcc 100644
--- a/dom/system/nsDeviceSensors.h
+++ b/dom/system/nsDeviceSensors.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/nsIOSFileConstantsService.idl b/dom/system/nsIOSFileConstantsService.idl
index 2cdde3de9..608e455a9 100644
--- a/dom/system/nsIOSFileConstantsService.idl
+++ b/dom/system/nsIOSFileConstantsService.idl
@@ -1,5 +1,4 @@
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
-/* vim: set ts=2 et sw=2 tw=40: */
/* 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/. */
diff --git a/dom/system/windows/WindowsLocationProvider.cpp b/dom/system/windows/WindowsLocationProvider.cpp
index 9da7bcc30..d111e7035 100644
--- a/dom/system/windows/WindowsLocationProvider.cpp
+++ b/dom/system/windows/WindowsLocationProvider.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/windows/WindowsLocationProvider.h b/dom/system/windows/WindowsLocationProvider.h
index e91ea89ba..4ff7d5469 100644
--- a/dom/system/windows/WindowsLocationProvider.h
+++ b/dom/system/windows/WindowsLocationProvider.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/windows/moz.build b/dom/system/windows/moz.build
index 547652996..5d8f5f1c2 100644
--- a/dom/system/windows/moz.build
+++ b/dom/system/windows/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/system/windows/nsHapticFeedback.cpp b/dom/system/windows/nsHapticFeedback.cpp
index 685dbe377..4603e8c80 100644
--- a/dom/system/windows/nsHapticFeedback.cpp
+++ b/dom/system/windows/nsHapticFeedback.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/system/windows/nsHapticFeedback.h b/dom/system/windows/nsHapticFeedback.h
index 7815f244c..6ef4123f7 100644
--- a/dom/system/windows/nsHapticFeedback.h
+++ b/dom/system/windows/nsHapticFeedback.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/tests/browser/browser_frame_elements.js b/dom/tests/browser/browser_frame_elements.js
index e26fe95ec..c6771e253 100644
--- a/dom/tests/browser/browser_frame_elements.js
+++ b/dom/tests/browser/browser_frame_elements.js
@@ -1,5 +1,4 @@
/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/tests/mochitest/beacon/beacon-handler.sjs b/dom/tests/mochitest/beacon/beacon-handler.sjs
index a3b6f2593..4c51d371d 100644
--- a/dom/tests/mochitest/beacon/beacon-handler.sjs
+++ b/dom/tests/mochitest/beacon/beacon-handler.sjs
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/tests/mochitest/bugs/file_redirector.sjs b/dom/tests/mochitest/bugs/file_redirector.sjs
index 70478e69a..6d7d14d95 100644
--- a/dom/tests/mochitest/bugs/file_redirector.sjs
+++ b/dom/tests/mochitest/bugs/file_redirector.sjs
@@ -1,4 +1,3 @@
-/* vim: set ft=javascript: */
/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
function handleRequest(request, response) {
diff --git a/dom/tests/mochitest/notification/desktop-notification/moz.build b/dom/tests/mochitest/notification/desktop-notification/moz.build
index 28919c271..83ed8d9d9 100644
--- a/dom/tests/mochitest/notification/desktop-notification/moz.build
+++ b/dom/tests/mochitest/notification/desktop-notification/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/tests/mochitest/webcomponents/chrome.ini b/dom/tests/mochitest/webcomponents/chrome.ini
new file mode 100644
index 000000000..5e25c2123
--- /dev/null
+++ b/dom/tests/mochitest/webcomponents/chrome.ini
@@ -0,0 +1,9 @@
+[DEFAULT]
+support-files =
+ dummy_page.html
+
+[test_custom_element_htmlconstructor_chrome.html]
+skip-if = os == 'android' # bug 1323645
+support-files =
+ htmlconstructor_autonomous_tests.js
+ htmlconstructor_builtin_tests.js
diff --git a/dom/tests/mochitest/webcomponents/dummy_page.html b/dom/tests/mochitest/webcomponents/dummy_page.html
new file mode 100644
index 000000000..fd238954c
--- /dev/null
+++ b/dom/tests/mochitest/webcomponents/dummy_page.html
@@ -0,0 +1,10 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<title>Dummy test page</title>
+<meta charset="utf-8"/>
+</head>
+<body>
+<p>Dummy test page</p>
+</body>
+</html>
diff --git a/dom/tests/mochitest/webcomponents/htmlconstructor_autonomous_tests.js b/dom/tests/mochitest/webcomponents/htmlconstructor_autonomous_tests.js
new file mode 100644
index 000000000..636d9aff6
--- /dev/null
+++ b/dom/tests/mochitest/webcomponents/htmlconstructor_autonomous_tests.js
@@ -0,0 +1,81 @@
+promises.push(test_with_new_window((testWindow) => {
+ // Test calling the HTMLElement constructor.
+ (() => {
+ SimpleTest.doesThrow(() => {
+ testWindow.HTMLElement();
+ }, 'calling the HTMLElement constructor should throw a TypeError');
+ })();
+
+ // Test constructing a HTMLELement.
+ (() => {
+ SimpleTest.doesThrow(() => {
+ new testWindow.HTMLElement();
+ }, 'constructing a HTMLElement should throw a TypeError');
+ })();
+
+ // Test constructing a custom element with defining HTMLElement as entry.
+ (() => {
+ testWindow.customElements.define('x-defining-html-element',
+ testWindow.HTMLElement);
+ SimpleTest.doesThrow(() => {
+ new testWindow.HTMLElement();
+ }, 'constructing a custom element with defining HTMLElement as registry ' +
+ 'entry should throw a TypeError');
+ })();
+
+ // Test calling a custom element constructor and constructing an autonomous
+ // custom element.
+ (() => {
+ let num_constructor_invocations = 0;
+ class X extends testWindow.HTMLElement {
+ constructor() {
+ super();
+ num_constructor_invocations++;
+ }
+ }
+ testWindow.customElements.define('x-element', X);
+ SimpleTest.doesThrow(() => {
+ X();
+ }, 'calling an autonomous custom element constructor should throw a TypeError');
+
+ let element = new X();
+ SimpleTest.is(Object.getPrototypeOf(Cu.waiveXrays(element)), X.prototype,
+ 'constructing an autonomous custom element; ' +
+ 'the element should be a registered constructor');
+ SimpleTest.is(element.localName, 'x-element',
+ 'constructing an autonomous custom element; ' +
+ 'the element tag name should be "x-element"');
+ SimpleTest.is(element.namespaceURI, 'http://www.w3.org/1999/xhtml',
+ 'constructing an autonomous custom element; ' +
+ 'the element should be in the HTML namespace');
+ SimpleTest.is(element.prefix, null,
+ 'constructing an autonomous custom element; ' +
+ 'the element name should not have a prefix');
+ SimpleTest.is(element.ownerDocument, testWindow.document,
+ 'constructing an autonomous custom element; ' +
+ 'the element should be owned by the registry\'s associated ' +
+ 'document');
+ SimpleTest.is(num_constructor_invocations, 1,
+ 'constructing an autonomous custom element; ' +
+ 'the constructor should have been invoked once');
+ })();
+
+ // Test if prototype is no an object.
+ (() => {
+ function ElementWithNonObjectPrototype() {
+ let o = Reflect.construct(testWindow.HTMLElement, [], new.target);
+ SimpleTest.is(Object.getPrototypeOf(Cu.waiveXrays(o)), window.HTMLElement.prototype,
+ 'constructing an autonomous custom element; ' +
+ 'if prototype is not object, fallback from NewTarget\'s realm');
+ }
+
+ // Prototype have to be an object during define(), otherwise define will
+ // throw an TypeError exception.
+ ElementWithNonObjectPrototype.prototype = {};
+ testWindow.customElements.define('x-non-object-prototype',
+ ElementWithNonObjectPrototype);
+
+ ElementWithNonObjectPrototype.prototype = "string";
+ new ElementWithNonObjectPrototype();
+ })();
+}));
diff --git a/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js b/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js
new file mode 100644
index 000000000..0b04971e3
--- /dev/null
+++ b/dom/tests/mochitest/webcomponents/htmlconstructor_builtin_tests.js
@@ -0,0 +1,246 @@
+[
+ // [TagName, InterfaceName]
+ ['a', 'Anchor'],
+ ['abbr', ''],
+ ['acronym', ''],
+ ['address', ''],
+ ['area', 'Area'],
+ ['article', ''],
+ ['aside', ''],
+ ['audio', 'Audio'],
+ ['b', ''],
+ ['base', 'Base'],
+ ['basefont', ''],
+ ['bdo', ''],
+ ['big', ''],
+ ['blockquote', 'Quote'],
+ ['body', 'Body'],
+ ['br', 'BR'],
+ ['button', 'Button'],
+ ['canvas', 'Canvas'],
+ ['caption', 'TableCaption'],
+ ['center', ''],
+ ['cite', ''],
+ ['code', ''],
+ ['col', 'TableCol'],
+ ['colgroup', 'TableCol'],
+ ['data', 'Data'],
+ ['datalist', 'DataList'],
+ ['dd', ''],
+ ['del', 'Mod'],
+ ['details', 'Details'],
+ ['dfn', ''],
+ ['dir', 'Directory'],
+ ['div', 'Div'],
+ ['dl', 'DList'],
+ ['dt', ''],
+ ['em', ''],
+ ['embed', 'Embed'],
+ ['fieldset', 'FieldSet'],
+ ['figcaption', ''],
+ ['figure', ''],
+ ['font', 'Font'],
+ ['footer', ''],
+ ['form', 'Form'],
+ ['frame', 'Frame'],
+ ['frameset', 'FrameSet'],
+ ['h1', 'Heading'],
+ ['h2', 'Heading'],
+ ['h3', 'Heading'],
+ ['h4', 'Heading'],
+ ['h5', 'Heading'],
+ ['h6', 'Heading'],
+ ['head', 'Head'],
+ ['header', ''],
+ ['hgroup', ''],
+ ['hr', 'HR'],
+ ['html', 'Html'],
+ ['i', ''],
+ ['iframe', 'IFrame'],
+ ['image', ''],
+ ['img', 'Image'],
+ ['input', 'Input'],
+ ['ins', 'Mod'],
+ ['kbd', ''],
+ ['label', 'Label'],
+ ['legend', 'Legend'],
+ ['li', 'LI'],
+ ['link', 'Link'],
+ ['listing', 'Pre'],
+ ['main', ''],
+ ['map', 'Map'],
+ ['mark', ''],
+ ['menu', 'Menu'],
+ ['menuitem', 'MenuItem'],
+ ['meta', 'Meta'],
+ ['meter', 'Meter'],
+ ['nav', ''],
+ ['nobr', ''],
+ ['noembed', ''],
+ ['noframes', ''],
+ ['noscript', ''],
+ ['object', 'Object'],
+ ['ol', 'OList'],
+ ['optgroup', 'OptGroup'],
+ ['option', 'Option'],
+ ['output', 'Output'],
+ ['p', 'Paragraph'],
+ ['param', 'Param'],
+ ['picture', 'Picture'],
+ ['plaintext', ''],
+ ['pre', 'Pre'],
+ ['progress', 'Progress'],
+ ['q', 'Quote'],
+ ['rb', ''],
+ ['rp', ''],
+ ['rt', ''],
+ ['rtc', ''],
+ ['ruby', ''],
+ ['s', ''],
+ ['samp', ''],
+ ['script', 'Script'],
+ ['section', ''],
+ ['select', 'Select'],
+ ['small', ''],
+ ['source', 'Source'],
+ ['span', 'Span'],
+ ['strike', ''],
+ ['strong', ''],
+ ['style', 'Style'],
+ ['sub', ''],
+ ['summary', ''],
+ ['sup', ''],
+ ['table', 'Table'],
+ ['tbody', 'TableSection'],
+ ['td', 'TableCell'],
+ ['textarea', 'TextArea'],
+ ['tfoot', 'TableSection'],
+ ['th', 'TableCell'],
+ ['thead', 'TableSection'],
+ ['template', 'Template'],
+ ['time', 'Time'],
+ ['title', 'Title'],
+ ['tr', 'TableRow'],
+ ['track', 'Track'],
+ ['tt', ''],
+ ['u', ''],
+ ['ul', 'UList'],
+ ['var', ''],
+ ['video', 'Video'],
+ ['wbr', ''],
+ ['xmp', 'Pre'],
+].forEach((e) => {
+ let tagName = e[0];
+ let interfaceName = 'HTML' + e[1] + 'Element';
+ promises.push(test_with_new_window((testWindow) => {
+ // Use window from iframe to isolate the test.
+ // Test calling the HTML*Element constructor.
+ (() => {
+ SimpleTest.doesThrow(() => {
+ testWindow[interfaceName]();
+ }, 'calling the ' + interfaceName + ' constructor should throw a TypeError');
+ })();
+
+ // Test constructing a HTML*ELement.
+ (() => {
+ SimpleTest.doesThrow(() => {
+ new testWindow[interfaceName]();
+ }, 'constructing a ' + interfaceName + ' should throw a TypeError');
+ })();
+
+ // Test constructing a custom element with defining HTML*Element as entry.
+ (() => {
+ testWindow.customElements.define('x-defining-' + tagName,
+ testWindow[interfaceName]);
+ SimpleTest.doesThrow(() => {
+ new testWindow[interfaceName]();
+ }, 'constructing a custom element with defining ' + interfaceName +
+ ' as registry entry should throw a TypeError');
+ })();
+
+ // Since HTMLElement can be registered without specifying "extends", skip
+ // testing HTMLElement tags.
+ if (interfaceName !== "HTMLElement") {
+ // Test constructing a customized HTML*Element with defining a registry entry
+ // without specifying "extends".
+ (() => {
+ class X extends testWindow[interfaceName] {}
+ testWindow.customElements.define('x-defining-invalid-' + tagName, X);
+ SimpleTest.doesThrow(() => {
+ new X();
+ }, 'constructing a customized ' + interfaceName + ' with defining a ' +
+ 'registry entry without specifying "extends" should throw a TypeError');
+ })();
+ }
+
+ // Test constructing a built-in custom element with defining a registry entry
+ // with incorrect "extends" information.
+ (() => {
+ class X extends testWindow[interfaceName] {}
+ testWindow.customElements.define('x-defining-incorrect-' + tagName, X,
+ { extends: tagName === 'img' ? 'p' : 'img' });
+ SimpleTest.doesThrow(() => {
+ new X();
+ }, 'constructing a customized ' + interfaceName + ' with defining a ' +
+ 'registry entry with incorrect "extends" should throw a TypeError');
+ })();
+
+ // Test calling a custom element constructor and constructing a built-in
+ // custom element.
+ (() => {
+ let num_constructor_invocations = 0;
+ class X extends testWindow[interfaceName] {
+ constructor() {
+ super();
+ num_constructor_invocations++;
+ }
+ }
+ testWindow.customElements.define('x-' + tagName, X, { extends: tagName });
+ SimpleTest.doesThrow(() => {
+ X();
+ }, 'calling a customized ' + interfaceName + ' constructor should throw a TypeError');
+
+ let element = new X();
+
+ SimpleTest.is(Object.getPrototypeOf(Cu.waiveXrays(element)), X.prototype,
+ 'constructing a customized ' + interfaceName +
+ '; the element should be a registered constructor');
+ SimpleTest.is(element.localName, tagName,
+ 'constructing a customized ' + interfaceName +
+ '; the element tag name should be "' + tagName + '"');
+ SimpleTest.is(element.namespaceURI, 'http://www.w3.org/1999/xhtml',
+ 'constructing a customized ' + interfaceName +
+ '; the element should be in the HTML namespace');
+ SimpleTest.is(element.prefix, null,
+ 'constructing a customized ' + interfaceName +
+ '; the element name should not have a prefix');
+ SimpleTest.is(element.ownerDocument, testWindow.document,
+ 'constructing a customized ' + interfaceName +
+ '; the element should be owned by the registry\'s associated ' +
+ 'document');
+ SimpleTest.is(num_constructor_invocations, 1,
+ 'constructing a customized ' + interfaceName +
+ '; the constructor should have been invoked once');
+ })();
+
+ // Test if prototype is no an object.
+ (() => {
+ function ElementWithNonObjectPrototype() {
+ let o = Reflect.construct(testWindow[interfaceName], [], new.target);
+ SimpleTest.is(Object.getPrototypeOf(Cu.waiveXrays(o)), window[interfaceName].prototype,
+ 'constructing a customized ' + interfaceName +
+ '; if prototype is not object, fallback from NewTarget\'s realm');
+ }
+
+ // Prototype have to be an object during define(), otherwise define will
+ // throw an TypeError exception.
+ ElementWithNonObjectPrototype.prototype = {};
+ testWindow.customElements.define('x-non-object-prototype-' + tagName,
+ ElementWithNonObjectPrototype,
+ { extends: tagName });
+
+ ElementWithNonObjectPrototype.prototype = "string";
+ new ElementWithNonObjectPrototype();
+ })();
+ }));
+});
diff --git a/dom/tests/mochitest/webcomponents/mochitest.ini b/dom/tests/mochitest/webcomponents/mochitest.ini
index f05140c57..7b6ec9724 100644
--- a/dom/tests/mochitest/webcomponents/mochitest.ini
+++ b/dom/tests/mochitest/webcomponents/mochitest.ini
@@ -1,49 +1,43 @@
[DEFAULT]
support-files =
inert_style.css
+ dummy_page.html
[test_bug900724.html]
[test_bug1017896.html]
[test_bug1176757.html]
[test_bug1276240.html]
[test_content_element.html]
-[test_custom_element_adopt_callbacks.html]
[test_custom_element_callback_innerhtml.html]
-[test_custom_element_clone_callbacks.html]
-[test_custom_element_clone_callbacks_extended.html]
-[test_custom_element_import_node_created_callback.html]
+skip-if = true # disabled - See bug 1390396
+[test_custom_element_htmlconstructor.html]
+skip-if = os == 'android' # bug 1323645
+support-files =
+ htmlconstructor_autonomous_tests.js
+ htmlconstructor_builtin_tests.js
[test_custom_element_in_shadow.html]
-[test_custom_element_register_invalid_callbacks.html]
+skip-if = true || stylo # disabled - See bug 1390396 and 1293844
+[test_custom_element_throw_on_dynamic_markup_insertion.html]
[test_custom_element_get.html]
[test_custom_element_when_defined.html]
-[test_nested_content_element.html]
-[test_dest_insertion_points.html]
-[test_dest_insertion_points_shadow.html]
-[test_fallback_dest_insertion_points.html]
+[test_custom_element_uncatchable_exception.html]
+skip-if = !debug # TestFunctions only applied in debug builds
[test_detached_style.html]
-[test_dynamic_content_element_matching.html]
[test_document_adoptnode.html]
[test_document_importnode.html]
[test_document_register.html]
-[test_document_register_base_queue.html]
[test_document_register_lifecycle.html]
-[test_document_register_parser.html]
+skip-if = true # disabled - See bug 1390396
[test_document_register_stack.html]
-[test_document_shared_registry.html]
-[test_event_dispatch.html]
+skip-if = true # disabled - See bug 1390396
[test_event_retarget.html]
[test_event_stopping.html]
[test_template.html]
[test_template_xhtml.html]
-[test_template_custom_elements.html]
[test_shadowroot.html]
[test_shadowroot_inert_element.html]
-[test_shadowroot_host.html]
[test_shadowroot_style.html]
-[test_shadowroot_style_multiple_shadow.html]
[test_shadowroot_style_order.html]
-[test_shadowroot_youngershadowroot.html]
[test_style_fallback_content.html]
-[test_unresolved_pseudo_class.html]
[test_link_prefetch.html]
[test_bug1269155.html]
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_adopt_callbacks.html b/dom/tests/mochitest/webcomponents/test_custom_element_adopt_callbacks.html
deleted file mode 100644
index 28597b7c6..000000000
--- a/dom/tests/mochitest/webcomponents/test_custom_element_adopt_callbacks.html
+++ /dev/null
@@ -1,29 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1081039
--->
-<head>
- <title>Test callbacks for adopted custom elements.</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<template id="template"><x-foo></x-foo></template>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1081039">Bug 1081039</a>
-<script>
-
-var p = Object.create(HTMLElement.prototype);
-p.createdCallback = function() {
- ok(false, "Created callback should not be called for adopted node.");
-};
-
-document.registerElement("x-foo", { prototype: p });
-
-var template = document.getElementById("template");
-var adoptedFoo = document.adoptNode(template.content.firstChild);
-is(adoptedFoo.nodeName, "X-FOO");
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html b/dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html
index 94b02032f..22d957117 100644
--- a/dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html
+++ b/dom/tests/mochitest/webcomponents/test_custom_element_callback_innerhtml.html
@@ -16,25 +16,21 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1102502
SimpleTest.waitForExplicitFinish();
-var attachedCallbackCount = 0;
-
-var p = Object.create(HTMLElement.prototype);
-
-p.createdCallback = function() {
- ok(true, "createdCallback called.");
-};
-
-p.attachedCallback = function() {
- ok(true, "attachedCallback should be called when the parser creates an element in the document.");
- attachedCallbackCount++;
- // attachedCallback should be called twice, once for the element created for innerHTML and
- // once for the element created in this document.
- if (attachedCallbackCount == 2) {
- SimpleTest.finish();
+var connectedCallbackCount = 0;
+
+class Foo extends HTMLElement {
+ connectedCallback() {
+ ok(true, "connectedCallback should be called when the parser creates an element in the document.");
+ connectedCallbackCount++;
+ // connectedCallback should be called twice, once for the element created for innerHTML and
+ // once for the element created in this document.
+ if (connectedCallbackCount == 2) {
+ SimpleTest.finish();
+ }
}
-}
+};
-document.registerElement("x-foo", { prototype: p });
+customElements.define("x-foo", Foo);
var container = document.getElementById("container");
container.innerHTML = '<x-foo></x-foo>';
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks.html b/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks.html
deleted file mode 100644
index eea9bafe0..000000000
--- a/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks.html
+++ /dev/null
@@ -1,54 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1081039
--->
-<head>
- <title>Test callbacks for cloned custom elements.</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1081039">Bug 1081039</a>
-<script>
-
-SimpleTest.waitForExplicitFinish();
-
-// Test to make sure created callback is called on clones that are upgraded and clones
-// created after registering the custom element.
-
-var callbackCalledOnUpgrade = false;
-var callbackCalledOnClone = false;
-
-var foo = document.createElement("x-foo");
-var fooClone = foo.cloneNode(true);
-
-var p = Object.create(HTMLElement.prototype);
-p.createdCallback = function() {
- is(this.__proto__, p, "Correct prototype should be set on custom elements.");
-
- if (this == fooClone) {
- // Callback called for the element created before registering the custom element.
- // Should be called on element upgrade.
- is(callbackCalledOnUpgrade, false, "Upgrade should only be called once per clone.");
- callbackCalledOnUpgrade = true;
- } else if (this != foo) {
- // Callback called for the element created after registering the custom element.
- is(callbackCalledOnClone, false, "Upgrade should only be called once per clone.");
- callbackCalledOnClone = true;
- }
-
- if (callbackCalledOnUpgrade && callbackCalledOnClone) {
- SimpleTest.finish();
- }
-};
-
-document.registerElement("x-foo", { prototype: p });
-
-var anotherFooClone = foo.cloneNode(true);
-
-SimpleTest.waitForExplicitFinish();
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks_extended.html b/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks_extended.html
deleted file mode 100644
index b3531b0ea..000000000
--- a/dom/tests/mochitest/webcomponents/test_custom_element_clone_callbacks_extended.html
+++ /dev/null
@@ -1,40 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1081039
--->
-<head>
- <title>Test callbacks for cloned extended custom elements.</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1081039">Bug 1081039</a>
-<script>
-
-SimpleTest.waitForExplicitFinish();
-
-// Test to make sure created callback is called on clones created after
-// registering the custom element.
-
-var count = 0;
-var p = Object.create(HTMLButtonElement.prototype);
-p.createdCallback = function() { // should be called by createElement and cloneNode
- is(this.__proto__, p, "Correct prototype should be set on custom elements.");
-
- if (++count == 2) {
- SimpleTest.finish();
- }
-};
-
-document.registerElement("x-foo", { prototype: p, extends: "button" });
-var foo = document.createElement("button", {is: "x-foo"});
-is(foo.getAttribute("is"), "x-foo");
-
-var fooClone = foo.cloneNode(true);
-
-SimpleTest.waitForExplicitFinish();
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor.html b/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor.html
new file mode 100644
index 000000000..b022a7887
--- /dev/null
+++ b/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor.html
@@ -0,0 +1,42 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1274159
+-->
+<head>
+ <title>Test HTMLConstructor for custom elements.</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1274159">Bug 1274159</a>
+<script type="text/javascript">
+function test_with_new_window(f) {
+ return new Promise((aResolve) => {
+ let iframe = document.createElement('iframe');
+ iframe.setAttribute('type', 'content');
+ iframe.setAttribute('src', 'dummy_page.html');
+ iframe.onload = function() {
+ f(iframe.contentWindow);
+ aResolve();
+ };
+ document.body.appendChild(iframe);
+ });
+}
+
+// Fake the Cu.waiveXrays, so that we can share the tests with mochitest chrome.
+var Cu = { waiveXrays: (obj) => obj };
+var promises = [];
+SimpleTest.waitForExplicitFinish();
+</script>
+<!-- Test cases for autonomous element -->
+<script type="text/javascript" src="htmlconstructor_autonomous_tests.js"></script>
+<!-- Test cases for customized built-in element -->
+<script type="text/javascript" src="htmlconstructor_builtin_tests.js"></script>
+<script type="text/javascript">
+Promise.all(promises).then(() => {
+ SimpleTest.finish();
+});
+</script>
+</body>
+</html>
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor_chrome.html b/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor_chrome.html
new file mode 100644
index 000000000..8c7ec0ac6
--- /dev/null
+++ b/dom/tests/mochitest/webcomponents/test_custom_element_htmlconstructor_chrome.html
@@ -0,0 +1,41 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1274159
+-->
+<head>
+ <title>Test HTMLConstructor for custom elements.</title>
+ <script type="text/javascript" src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="chrome://mochikit/content/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1274159">Bug 1274159</a>
+<script type="text/javascript">
+function test_with_new_window(f) {
+ return new Promise((aResolve) => {
+ let iframe = document.createElement('iframe');
+ iframe.setAttribute('type', 'content');
+ iframe.setAttribute('src', 'http://example.org/tests/dom/tests/mochitest/webcomponents/dummy_page.html');
+ iframe.onload = function() {
+ f(iframe.contentWindow);
+ aResolve();
+ };
+ document.body.appendChild(iframe);
+ });
+}
+
+var Cu = Components.utils;
+var promises = [];
+SimpleTest.waitForExplicitFinish();
+</script>
+<!-- Test cases for autonomous element -->
+<script type="text/javascript" src="htmlconstructor_autonomous_tests.js"></script>
+<!-- Test cases for customized built-in element -->
+<script type="text/javascript" src="htmlconstructor_builtin_tests.js"></script>
+<script type="text/javascript">
+Promise.all(promises).then(() => {
+ SimpleTest.finish();
+});
+</script>
+</body>
+</html>
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_import_node_created_callback.html b/dom/tests/mochitest/webcomponents/test_custom_element_import_node_created_callback.html
deleted file mode 100644
index f533b507c..000000000
--- a/dom/tests/mochitest/webcomponents/test_custom_element_import_node_created_callback.html
+++ /dev/null
@@ -1,34 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1093680
--->
-<head>
- <title>Test created callback order for imported custom element.</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<template id="template"><x-foo><span></span></x-foo></template>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1093680">Bug 1093680</a>
-<script>
-
-var fooProtoCreatedCallbackCalled = false;
-var fooProto = Object.create(HTMLElement.prototype);
-fooProto.createdCallback = function() {
- ok(this.firstElementChild, "When the created callback is called, the element should already have a child because the callback should only be called after cloning all the contents.");
- fooProtoCreatedCallbackCalled = true;
-};
-
-document.registerElement("x-foo", { prototype: fooProto });
-
-var template = document.getElementById("template");
-
-// Importing node will implicityly clone the conent in the main document.
-var adoptedFoo = document.importNode(template.content, true);
-
-ok(fooProtoCreatedCallbackCalled, "Created callback should be called after importing custom element into document");
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_register_invalid_callbacks.html b/dom/tests/mochitest/webcomponents/test_custom_element_register_invalid_callbacks.html
deleted file mode 100644
index a349f4aa5..000000000
--- a/dom/tests/mochitest/webcomponents/test_custom_element_register_invalid_callbacks.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1275835
--->
-<head>
- <title>Test registering invalid lifecycle callbacks for custom elements.</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1275835">Bug 1275835</a>
-<iframe id="iframe"></iframe>
-<script>
-
-// Use window from iframe to isolate the test.
-const testWindow = iframe.contentDocument.defaultView;
-
-// This is for backward compatibility.
-// We should do the same checks for the callbacks from v0 spec.
-[
- 'createdCallback',
- 'attachedCallback',
- 'detachedCallback',
- 'attributeChangedCallback',
-].forEach(callback => {
- var c = class {};
- var p = c.prototype;
-
- // Test getting callback throws exception.
- Object.defineProperty(p, callback, {
- get() {
- const e = new Error('this is rethrown');
- e.name = 'rethrown';
- throw e;
- }
- });
-
- SimpleTest.doesThrow(() => {
- testWindow.document.registerElement(`test-register-${callback}-rethrown`,
- { prototype: p });
- }, `document.registerElement should throw exception if prototype.${callback} throws`);
-
- SimpleTest.doesThrow(() => {
- testWindow.customElements.define(`test-define-${callback}-rethrown`, c);
- }, `customElements.define should throw exception if constructor.${callback} throws`);
-
- // Test callback is not callable.
- [
- { name: 'null', value: null },
- { name: 'object', value: {} },
- { name: 'integer', value: 1 },
- ].forEach(data => {
- var c = class {};
- var p = c.prototype;
-
- p[callback] = data.value;
-
- SimpleTest.doesThrow(() => {
- testWindow.document.registerElement(`test-register-${callback}-${data.name}`,
- { prototype: p });
- }, `document.registerElement should throw exception if ${callback} is ${data.name}`);
-
- SimpleTest.doesThrow(() => {
- testWindow.customElements.define(`test-define-${callback}-${data.name}`, c);
- }, `customElements.define should throw exception if ${callback} is ${data.name}`);
- });
-});
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_throw_on_dynamic_markup_insertion.html b/dom/tests/mochitest/webcomponents/test_custom_element_throw_on_dynamic_markup_insertion.html
new file mode 100644
index 000000000..b5ef66860
--- /dev/null
+++ b/dom/tests/mochitest/webcomponents/test_custom_element_throw_on_dynamic_markup_insertion.html
@@ -0,0 +1,66 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1378079
+-->
+<head>
+ <title>Test throw on dynamic markup insertion when creating element synchronously from parser</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1378079">Bug 1378079</a>
+<div id="container"></div>
+
+<script>
+
+class DoDocumentOpenInCtor extends HTMLElement {
+ constructor() {
+ super();
+ document.open();
+ }
+};
+customElements.define('x-document-open-in-ctor', DoDocumentOpenInCtor);
+
+class DoDocumentWriteInCtor extends HTMLElement {
+ constructor() {
+ super();
+ document.write('<div>This should not be shown</div>');
+ }
+};
+customElements.define('x-document-write-in-ctor', DoDocumentWriteInCtor);
+
+class DoDocumentCloseInCtor extends HTMLElement {
+ constructor() {
+ super();
+ document.close();
+ }
+};
+customElements.define('x-document-close-in-ctor', DoDocumentCloseInCtor);
+
+window.errors = [];
+window.onerror = function(message, url, lineNumber, columnNumber, error) {
+ errors.push(error.name);
+ return true;
+}
+var expectedErrorCount = 0;
+
+document.write("<x-document-open-in-ctor></x-document-open-in-ctor>");
+expectedErrorCount++;
+is(window.errors.length, expectedErrorCount, "expectedErrorCount should be " + expectedErrorCount);
+is(window.errors[expectedErrorCount - 1], 'InvalidStateError', "Error name should be 'InvalidStateError'");
+
+document.write("<x-document-write-in-ctor></x-document-write-in-ctor>");
+expectedErrorCount++;
+is(window.errors.length, expectedErrorCount, "expectedErrorCount should be " + expectedErrorCount);
+is(window.errors[expectedErrorCount - 1], 'InvalidStateError', "Error name should be 'InvalidStateError'");
+
+document.write("<x-document-close-in-ctor></x-document-close-in-ctor>");
+expectedErrorCount++;
+is(window.errors.length, expectedErrorCount, "expectedErrorCount should be " + expectedErrorCount);
+is(window.errors[expectedErrorCount - 1], 'InvalidStateError', "Error name should be 'InvalidStateError'");
+
+</script>
+
+</body>
+</html>
diff --git a/dom/tests/mochitest/webcomponents/test_custom_element_uncatchable_exception.html b/dom/tests/mochitest/webcomponents/test_custom_element_uncatchable_exception.html
new file mode 100644
index 000000000..f60bf1674
--- /dev/null
+++ b/dom/tests/mochitest/webcomponents/test_custom_element_uncatchable_exception.html
@@ -0,0 +1,37 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=1407669
+-->
+<head>
+ <title>Test custom elements runtime exception</title>
+ <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1407669">Bug 1407669</a>
+<script type="text/javascript">
+
+SimpleTest.waitForExplicitFinish();
+SpecialPowers.pushPrefEnv({set: [['dom.expose_test_interfaces', true]]}, function() {
+ window.onerror = function (e) {
+ ok(false, "How did we get here!?");
+ }
+
+ class Foo extends HTMLElement {
+ constructor() {
+ super()
+ TestFunctions.throwUncatchableException();
+ }
+ }
+
+ customElements.define("test-custom-element", Foo);
+ let element = document.createElement("test-custom-element");
+ is(element instanceof HTMLUnknownElement, true, "It should be a HTMLUnknownElement when uncatchable exception throws in constructor");
+ ok(true, "Uncatchable exception should not report");
+ SimpleTest.finish();
+});
+
+</script>
+</body>
+</html>
diff --git a/dom/tests/mochitest/webcomponents/test_dest_insertion_points.html b/dom/tests/mochitest/webcomponents/test_dest_insertion_points.html
deleted file mode 100644
index 2d4a92ed2..000000000
--- a/dom/tests/mochitest/webcomponents/test_dest_insertion_points.html
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=999999
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 999999</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=999999">Mozilla Bug 999999</a>
-<p id="display"></p>
-<div id="content">
-<div id="shadowhost">
-</div>
-</div>
-<pre id="test">
-</pre>
-<script type="application/javascript">
-
-/** Test for Bug 999999 **/
-var host = document.getElementById("shadowhost");
-
-// Test destination insertion points of node distributed to content element.
-var shadowRoot = host.createShadowRoot();
-shadowRoot.innerHTML = '<div id="innerhost"><content id="innercontent" select=".red"></content></div>';
-var innerContent = shadowRoot.getElementById("innercontent");
-
-var span = document.createElement("span");
-span.setAttribute("class", "red blue");
-is(host.getDestinationInsertionPoints().length, 0, "Destination insertion points should be empty when not being distributed.");
-
-host.appendChild(span);
-
-is(span.getDestinationInsertionPoints().length, 1, "Destination insertion points should only contain a single content insertion point.");
-is(span.getDestinationInsertionPoints()[0], innerContent, "Content element should contain destination insertion point.");
-
-// Test destination insertion points of redistributed node.
-var innerHost = shadowRoot.getElementById("innerhost");
-var innerShadowRoot = innerHost.createShadowRoot();
-innerShadowRoot.innerHTML = '<content id="innerinnercontent" select=".blue"></content>';
-
-var innerInnerContent = innerShadowRoot.getElementById("innerinnercontent");
-
-is(span.getDestinationInsertionPoints().length, 2, "Redistributed node should have 2 destination insertion points.");
-is(span.getDestinationInsertionPoints()[1], innerInnerContent, "Nested content insertion point should be in list of destination insertion points.");
-
-// Test destination insertion points after removing reprojection onto second content element.
-span.setAttribute("class", "red");
-is(span.getDestinationInsertionPoints().length, 1, "Destination insertion points should only contain 1 insertion point after removing reprojection.");
-is(span.getDestinationInsertionPoints()[0], innerContent, "First content element should be only insertion point after removing reprojection.");
-
-// Test destination insertion points after removing the projected content from the host.
-host.removeChild(span);
-is(span.getDestinationInsertionPoints().length, 0, "Destination insertion points should be empty after being removed from the shadow host.");
-
-// Test destination insertion points of distributed content after removing insertion point.
-var div = document.createElement("div");
-div.setAttribute("class", "red blue");
-host.appendChild(div);
-
-is(div.getDestinationInsertionPoints().length, 2, "Div should be distributed into 2 insertion points.");
-
-innerShadowRoot.removeChild(innerInnerContent);
-
-is(div.getDestinationInsertionPoints().length, 1, "Div should be distributed into insertion point in one ShadowRoot.");
-is(div.getDestinationInsertionPoints()[0], innerContent, "Destination insertion points should only contain content insertion point in first ShadowRoot.");
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_dest_insertion_points_shadow.html b/dom/tests/mochitest/webcomponents/test_dest_insertion_points_shadow.html
deleted file mode 100644
index 75286463e..000000000
--- a/dom/tests/mochitest/webcomponents/test_dest_insertion_points_shadow.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=999999
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 999999</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=999999">Mozilla Bug 999999</a>
-<p id="display"></p>
-<div id="content">
-<div id="shadowhost"></div>
-</div>
-<pre id="test">
-</pre>
-<script type="application/javascript">
-
-/** Test for Bug 999999 **/
-var host = document.getElementById("shadowhost");
-
-// Test destination insertion points of node distributed to shadow element.
-var olderShadowRoot = host.createShadowRoot();
-var youngerShadowRoot = host.createShadowRoot();
-
-var shadowElem = document.createElement("shadow");
-youngerShadowRoot.appendChild(shadowElem);
-
-var span = document.createElement("span");
-olderShadowRoot.appendChild(span);
-
-is(span.getDestinationInsertionPoints().length, 1, "Child of ShadowRoot should be distributed to shadow insertion point.");
-is(span.getDestinationInsertionPoints()[0], shadowElem, "Shadow element should be in destination insertion point list.");
-
-// Test destination insertion points of node removed from tree.
-olderShadowRoot.removeChild(span);
-is(span.getDestinationInsertionPoints().length, 0, "Node removed from tree should no longer be distributed.");
-
-// Test destination insertion points of fallback content being reprojected into a shadow element.
-var content = document.createElement("content");
-var fallback = document.createElement("span");
-
-content.appendChild(fallback);
-olderShadowRoot.appendChild(content);
-
-is(fallback.getDestinationInsertionPoints().length, 2, "The fallback content should have 2 destination insertion points, the parent content and the shadow element to which it is reprojected.");
-is(fallback.getDestinationInsertionPoints()[0], content, "First destination of the fallback content should be the parent content element.");
-is(fallback.getDestinationInsertionPoints()[1], shadowElem, "Second destination of the fallback content should be the shadow element to which the element is reprojected.");
-
-// Test destination insertion points of fallback content being removed from tree.
-content.removeChild(fallback);
-is(fallback.getDestinationInsertionPoints().length, 0, "The content should no longer be distributed to any nodes because it is no longer fallback content.");
-
-// Test destination insertion points of distributed content after removing shadow insertion point.
-var div = document.createElement("div");
-olderShadowRoot.appendChild(div);
-is(div.getDestinationInsertionPoints().length, 1, "Children in older shadow root should be distributed to shadow insertion point.");
-is(div.getDestinationInsertionPoints()[0], shadowElem, "Destination insertion point should include shadow element.");
-
-youngerShadowRoot.removeChild(shadowElem);
-is(div.getDestinationInsertionPoints().length, 0, "Destination insertion points should be empty after removing shadow element.");
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_document_register.html b/dom/tests/mochitest/webcomponents/test_document_register.html
index a9c194b60..aa80fef5f 100644
--- a/dom/tests/mochitest/webcomponents/test_document_register.html
+++ b/dom/tests/mochitest/webcomponents/test_document_register.html
@@ -103,52 +103,12 @@ function startTest() {
is(extendedButton.getAttribute("is"), "x-extended-button", "The |is| attribute of the created element should be the extended type.");
is(extendedButton.type, "submit", "Created element should be a button with type of \"submit\"");
- // document.createElementNS with different namespace than definition.
- try {
- var svgButton = document.createElementNS("http://www.w3.org/2000/svg", "button", {is: "x-extended-button"});
- ok(false, "An exception should've been thrown");
- } catch(err) {
- is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown");
- }
-
- // document.createElementNS with no namespace.
- try {
- var noNamespaceButton = document.createElementNS("", "button", {is: "x-extended-button"});
- ok(false, "An exception should've been thrown");
- } catch(err) {
- is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown");
- }
-
- // document.createElement with non-existant extended type.
- try {
- var normalButton = document.createElement("button", {is: "x-non-existant"});
- ok(false, "An exception should've been thrown");
- } catch(err) {
- is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown");
- }
-
- // document.createElement with exteneded type that does not match with local name of element.
- try {
- var normalDiv = document.createElement("div", {is: "x-extended-button"});
- ok(false, "An exception should've been thrown");
- } catch(err) {
- is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown");
- }
-
// Custom element constructor.
var constructedButton = new buttonConstructor();
is(constructedButton.tagName, "BUTTON", "Created element should have local name of BUTTON");
is(constructedButton.__proto__, extendedProto, "Created element should have the prototype of the extended type.");
is(constructedButton.getAttribute("is"), "x-extended-button", "The |is| attribute of the created element should be the extended type.");
- // document.createElement with different namespace than definition for extended element.
- try {
- var htmlText = document.createElement("text", {is: "x-extended-text"});
- ok(false, "An exception should've been thrown");
- } catch(err) {
- is(err.name, "NotFoundError", "A NotFoundError exception should've been thrown");
- }
-
// Try creating an element with a custom element name, but not in the html namespace.
var htmlNamespaceProto = Object.create(HTMLElement.prototype);
document.registerElement("x-in-html-namespace", { prototype: htmlNamespaceProto });
diff --git a/dom/tests/mochitest/webcomponents/test_document_register_base_queue.html b/dom/tests/mochitest/webcomponents/test_document_register_base_queue.html
deleted file mode 100644
index c839857b4..000000000
--- a/dom/tests/mochitest/webcomponents/test_document_register_base_queue.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=783129
--->
-<head>
- <title>Test for document.registerElement lifecycle callback</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-<script>
-var p = Object.create(HTMLElement.prototype);
-
-var createdCallbackCallCount = 0;
-
-// By the time the base element queue is processed via the microtask,
-// both x-hello elements should be in the document.
-p.createdCallback = function() {
- var one = document.getElementById("one");
- var two = document.getElementById("two");
- isnot(one, null, "First x-hello element should be in the tree.");
- isnot(two, null, "Second x-hello element should be in the tree.");
- createdCallbackCallCount++;
- if (createdCallbackCallCount == 2) {
- SimpleTest.finish();
- }
-
- if (createdCallbackCallCount > 2) {
- ok(false, "Created callback called too much.");
- }
-};
-
-p.attributeChangedCallback = function(name, oldValue, newValue) {
- ok(false, "Attribute changed callback should not be called because callbacks should not be queued until created callback invoked.");
-};
-
-document.registerElement("x-hello", { prototype: p });
-
-SimpleTest.waitForExplicitFinish();
-</script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=783129">Bug 783129</a>
-<x-hello id="one"></x-hello>
-<x-hello id="two"></x-hello>
-<script>
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_document_register_parser.html b/dom/tests/mochitest/webcomponents/test_document_register_parser.html
deleted file mode 100644
index bc4cdcbac..000000000
--- a/dom/tests/mochitest/webcomponents/test_document_register_parser.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=783129
--->
-<head>
- <title>Test for document.registerElement for elements created by the parser</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
-<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-<script>
-
-var extendedButtonProto = Object.create(HTMLButtonElement.prototype);
-var buttonCallbackCalled = false;
-extendedButtonProto.createdCallback = function() {
- is(buttonCallbackCalled, false, "created callback for x-button should only be called once.");
- is(this.tagName, "BUTTON", "Only the <button> element should be upgraded.");
- buttonCallbackCalled = true;
-};
-
-document.registerElement("x-button", { prototype: extendedButtonProto, extends: "button" });
-
-var divProto = Object.create(HTMLDivElement.prototype);
-var divCallbackCalled = false;
-divProto.createdCallback = function() {
- is(divCallbackCalled, false, "created callback for x-div should only be called once.");
- is(buttonCallbackCalled, true, "crated callback should be called for x-button before x-div.");
- is(this.tagName, "X-DIV", "Only the <x-div> element should be upgraded.");
- divCallbackCalled = true;
- SimpleTest.finish();
-};
-
-document.registerElement("x-div", { prototype: divProto });
-
-SimpleTest.waitForExplicitFinish();
-</script>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=783129">Bug 783129</a>
-<button is="x-button"></button><!-- should be upgraded -->
-<x-button></x-button><!-- should not be upgraded -->
-<span is="x-button"></span><!-- should not be upgraded -->
-<div is="x-div"></div><!-- should not be upgraded -->
-<x-div></x-div><!-- should be upgraded -->
-<script>
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_document_register_stack.html b/dom/tests/mochitest/webcomponents/test_document_register_stack.html
index 34f108654..b1c61af11 100644
--- a/dom/tests/mochitest/webcomponents/test_document_register_stack.html
+++ b/dom/tests/mochitest/webcomponents/test_document_register_stack.html
@@ -28,7 +28,8 @@ function testChangeAttributeInCreatedCallback() {
createdCallbackCalled = true;
is(attributeChangedCallbackCalled, false, "Attribute changed callback should not have been called prior to setting the attribute.");
this.setAttribute("foo", "bar");
- is(attributeChangedCallbackCalled, false, "While element is being created, element should not be added to the current element callback queue.");
+ is(attributeChangedCallbackCalled, true, "While element is being created, element should be added to the current element callback queue.");
+ runNextTest();
};
p.attributeChangedCallback = function(name, oldValue, newValue) {
@@ -36,7 +37,6 @@ function testChangeAttributeInCreatedCallback() {
is(attributeChangedCallbackCalled, false, "attributeChanged callback should only be called once in this tests.");
is(newValue, "bar", "The new value should be 'bar'");
attributeChangedCallbackCalled = true;
- runNextTest();
};
document.registerElement("x-one", { prototype: p });
diff --git a/dom/tests/mochitest/webcomponents/test_document_shared_registry.html b/dom/tests/mochitest/webcomponents/test_document_shared_registry.html
deleted file mode 100644
index 76c2ea8ec..000000000
--- a/dom/tests/mochitest/webcomponents/test_document_shared_registry.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=783129
--->
-<head>
- <title>Test shared registry for associated HTML documents.</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<div id="container"></div>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=783129">Bug 783129</a>
-<script>
-var container = document.getElementById("container");
-
-function createdCallbackFromMainDoc() {
- var createdCallbackCalled = false;
- var assocDoc = document.implementation.createHTMLDocument();
-
- var proto = Object.create(HTMLElement.prototype);
- proto.createdCallback = function() {
- is(createdCallbackCalled, false, "created callback should only be called once in this tests.");
- createdCallbackCalled = true;
- runNextTest();
- };
-
- assocDoc.registerElement("x-associated-doc-callback-elem", { prototype: proto });
- document.createElement("x-associated-doc-callback-elem");
-}
-
-function createdCallbackFromDocHTMLNamespace() {
- var createdCallbackCalled = false;
- var assocDoc = document.implementation.createDocument("http://www.w3.org/1999/xhtml", "html", null);
- var somediv = assocDoc.createElement("div");
-
- var proto = Object.create(HTMLElement.prototype);
- proto.createdCallback = function() {
- is(createdCallbackCalled, false, "created callback should only be called once in this tests.");
- createdCallbackCalled = true;
- runNextTest();
- };
-
- assocDoc.registerElement("x-assoc-doc-with-ns-callback-elem", { prototype: proto });
- document.createElement("x-assoc-doc-with-ns-callback-elem");
-}
-
-function registerNoRegistryDoc() {
- var assocDoc = document.implementation.createDocument(null, "html");
- try {
- assocDoc.registerElement("x-dummy", { prototype: Object.create(HTMLElement.prototype) });
- ok(false, "Registring element in document without registry should throw.");
- } catch (ex) {
- ok(true, "Registring element in document without registry should throw.");
- }
-
- runNextTest();
-}
-
-function runNextTest() {
- if (testFunctions.length > 0) {
- var nextTestFunction = testFunctions.shift();
- nextTestFunction();
- }
-}
-
-var testFunctions = [
- createdCallbackFromMainDoc,
- createdCallbackFromDocHTMLNamespace,
- registerNoRegistryDoc,
- SimpleTest.finish
-];
-
-SimpleTest.waitForExplicitFinish();
-
-runNextTest();
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_dynamic_content_element_matching.html b/dom/tests/mochitest/webcomponents/test_dynamic_content_element_matching.html
deleted file mode 100644
index c9af76610..000000000
--- a/dom/tests/mochitest/webcomponents/test_dynamic_content_element_matching.html
+++ /dev/null
@@ -1,50 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=806506
--->
-<head>
- <title>Test for dynamic changes to content matching content elements</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<div class="tall" id="bodydiv"></div>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=806506">Bug 806506</a>
-<script>
-// Create ShadowRoot.
-var elem = document.createElement("div");
-var root = elem.createShadowRoot();
-
-var redInsertionPoint = document.createElement("content");
-redInsertionPoint.select = "*[data-color=red]";
-
-var blueInsertionPoint = document.createElement("content");
-blueInsertionPoint.select = "*[data-color=blue]";
-
-root.appendChild(redInsertionPoint);
-root.appendChild(blueInsertionPoint);
-
-is(blueInsertionPoint.getDistributedNodes().length, 0, "Blue insertion point should have no distributed nodes.");
-is(redInsertionPoint.getDistributedNodes().length, 0, "Red insertion point should have no distrubted nodes.");
-
-var matchElement = document.createElement("div");
-matchElement.setAttribute("data-color", "red");
-elem.appendChild(matchElement);
-
-is(blueInsertionPoint.getDistributedNodes().length, 0, "Blue insertion point should have no distributed nodes.");
-is(redInsertionPoint.getDistributedNodes().length, 1, "Red insertion point should match recently inserted div.");
-
-matchElement.setAttribute("data-color", "blue");
-is(blueInsertionPoint.getDistributedNodes().length, 1, "Blue insertion point should match element after changing attribute value.");
-is(redInsertionPoint.getDistributedNodes().length, 0, "Red insertion point should not match element after changing attribute value.");
-
-matchElement.removeAttribute("data-color");
-
-is(blueInsertionPoint.getDistributedNodes().length, 0, "Blue insertion point should have no distributed nodes after removing the matching attribute.");
-is(redInsertionPoint.getDistributedNodes().length, 0, "Red insertion point should have no distrubted nodes after removing the matching attribute.");
-
-</script>
-</body>
-</html>
-
diff --git a/dom/tests/mochitest/webcomponents/test_event_dispatch.html b/dom/tests/mochitest/webcomponents/test_event_dispatch.html
deleted file mode 100644
index c73bfb214..000000000
--- a/dom/tests/mochitest/webcomponents/test_event_dispatch.html
+++ /dev/null
@@ -1,458 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=887541
--->
-<head>
- <title>Test for event model in web components</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=887541">Bug 887541</a>
-<script>
-
-var els = SpecialPowers.Cc["@mozilla.org/eventlistenerservice;1"]
- .getService(SpecialPowers.Ci.nsIEventListenerService);
-
-function eventListener(e) {
- eventChain.push(this);
-}
-
-function isEventChain(actual, expected, msg) {
- is(actual.length, expected.length, msg);
- for (var i = 0; i < expected.length; i++) {
- is(actual[i], expected[i], msg + " at " + i);
- }
-
- // Check to make sure the event chain matches what we get back from nsIEventListenerService.getEventTargetChainFor
- if (0 < actual.length) {
- var chain = els.getEventTargetChainFor(actual[0], true); // Events should be dispatched on actual[0].
- for (var i = 0; i < expected.length; i++) {
- ok(SpecialPowers.compare(chain[i], expected[i]), msg + " at " + i + " for nsIEventListenerService");
- }
- }
-}
-
-/*
- * Test 1: Test of event dispatch through a basic ShadowRoot with content a insertion point.
- *
- * <div elemOne> ------ <shadow-root shadowOne>
- * | |
- * <div elemTwo> <span elemThree>
- * |
- * <content elemFour>
- */
-
-var elemOne = document.createElement("div");
-elemOne.addEventListener("custom", eventListener);
-
-var elemTwo = document.createElement("div");
-elemTwo.addEventListener("custom", eventListener);
-
-var elemThree = document.createElement("span");
-elemThree.addEventListener("custom", eventListener);
-
-var elemFour = document.createElement("content");
-elemFour.addEventListener("custom", eventListener);
-
-var shadowOne = elemOne.createShadowRoot();
-shadowOne.addEventListener("custom", eventListener);
-
-elemThree.appendChild(elemFour);
-shadowOne.appendChild(elemThree);
-elemOne.appendChild(elemTwo);
-
-var eventChain = [];
-var customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemTwo.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemTwo, elemFour, elemThree, shadowOne, elemOne], "Event path for test 1 for event dispatched on elemTwo.");
-
-/*
- * Test 2: Test of event dispatch through a nested ShadowRoots with content insertion points.
- *
- * <div elemFive> --- <shadow-root shadowTwo>
- * | |
- * <div elemOne> <div elemFour> ----- <shadow-root shadowOne>
- * | |
- * <content elemTwo> <p elemSix>
- * |
- * <content elemThree>
- */
-
-elemOne = document.createElement("div");
-elemOne.addEventListener("custom", eventListener);
-
-elemTwo = document.createElement("content");
-elemTwo.addEventListener("custom", eventListener);
-
-elemThree = document.createElement("content");
-elemThree.addEventListener("custom", eventListener);
-
-var elemFour = document.createElement("div");
-elemFour.addEventListener("custom", eventListener);
-
-var elemFive = document.createElement("div");
-elemFive.addEventListener("custom", eventListener);
-
-var elemSix = document.createElement("p");
-elemSix.addEventListener("custom", eventListener);
-
-var shadowOne = elemFour.createShadowRoot();
-shadowOne.addEventListener("custom", eventListener);
-
-var shadowTwo = elemFive.createShadowRoot();
-shadowTwo.addEventListener("custom", eventListener);
-
-elemFive.appendChild(elemOne);
-shadowTwo.appendChild(elemFour);
-elemFour.appendChild(elemTwo);
-shadowOne.appendChild(elemSix);
-elemSix.appendChild(elemThree);
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemOne.dispatchEvent(customEvent);
-is(elemOne.getDestinationInsertionPoints().length, 2, "yes");
-isEventChain(eventChain, [elemOne, elemThree, elemSix, shadowOne, elemTwo, elemFour, shadowTwo, elemFive], "Event path for test 2 for event dispatched on elemOne.");
-
-/*
- * Test 3: Test of event dispatch through nested ShadowRoot with content insertion points.
- *
- * <div elemOne> ------- <shadow-root shadowOne>
- * | |
- * <span elemTwo> <span elemThree> ------------ <shadow-root shadowTwo>
- * | |
- * <span elemFour> <content elemSix>
- * |
- * <content elemFive>
- */
-
-elemOne = document.createElement("div");
-elemOne.addEventListener("custom", eventListener);
-
-elemTwo = document.createElement("span");
-elemTwo.addEventListener("custom", eventListener);
-
-elemThree = document.createElement("span");
-elemThree.addEventListener("custom", eventListener);
-
-elemFour = document.createElement("span");
-elemFour.addEventListener("custom", eventListener);
-
-elemFive = document.createElement("content");
-elemFive.addEventListener("custom", eventListener);
-
-elemSix = document.createElement("content");
-elemSix.addEventListener("custom", eventListener);
-
-shadowOne = elemOne.createShadowRoot();
-shadowOne.addEventListener("custom", eventListener);
-
-shadowTwo = elemThree.createShadowRoot();
-shadowTwo.addEventListener("custom", eventListener);
-
-elemOne.appendChild(elemTwo);
-shadowOne.appendChild(elemThree);
-elemThree.appendChild(elemFour);
-elemFour.appendChild(elemFive);
-shadowTwo.appendChild(elemSix);
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemTwo.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemTwo, elemFive, elemFour, elemSix, shadowTwo, elemThree, shadowOne, elemOne], "Event path for test 3 for event dispatched on elemTwo.");
-
-/*
- * Test 4: Test of event dispatch through host with multiple ShadowRoots with shadow insertion point.
- *
- * <div elemSeven> --- <shadow-root shadowTwo> (younger ShadowRoot)
- * | | |
- * <div elemOne> | <div elemSix> -------- <shadow-root shadowOne>
- * | | |
- * | <shadow elemFour> <content elemFive>
- * | |
- * | <content elemTwo>
- * |
- * --- <shadow-root shadowThree> (older ShadowRoot)
- * | |
- * | <content elemThree>
- * |
- * <div elemEight>
- */
-
-elemOne = document.createElement("div");
-elemOne.addEventListener("custom", eventListener);
-
-elemTwo = document.createElement("content");
-elemTwo.addEventListener("custom", eventListener);
-
-elemThree = document.createElement("content");
-elemThree.addEventListener("custom", eventListener);
-
-elemFour = document.createElement("shadow");
-elemFour.addEventListener("custom", eventListener);
-
-elemFive = document.createElement("content");
-elemFive.addEventListener("custom", eventListener);
-
-elemSix = document.createElement("div");
-elemSix.addEventListener("custom", eventListener);
-
-var elemSeven = document.createElement("div");
-elemSeven.addEventListener("custom", eventListener);
-
-var elemEight = document.createElement("div");
-elemEight.addEventListener("custom", eventListener);
-
-var shadowThree = elemSeven.createShadowRoot();
-shadowThree.addEventListener("custom", eventListener);
-
-shadowTwo = elemSeven.createShadowRoot();
-shadowTwo.addEventListener("custom", eventListener);
-
-shadowOne = elemSix.createShadowRoot();
-shadowOne.addEventListener("custom", eventListener);
-
-elemSeven.appendChild(elemOne);
-shadowTwo.appendChild(elemSix);
-elemSix.appendChild(elemFour);
-elemFour.appendChild(elemTwo);
-shadowThree.appendChild(elemEight);
-shadowThree.appendChild(elemThree);
-shadowOne.appendChild(elemFive);
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemOne.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemOne, elemFive, shadowOne, elemThree, shadowThree, elemTwo, elemFour, elemSix, shadowTwo, elemSeven], "Event path for test 4 for event dispatched on elemOne.");
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemEight.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemEight, elemFive, shadowOne, elemSix, shadowTwo, elemSeven], "Event path for test 4 for event dispatched on elemEight.");
-
-/*
- * Test 5: Test of event dispatch through nested shadowroot with insertion points that match specific tags.
- *
- * <div elemOne> --------- <shadow-root shadowOne>
- * | | |
- * | <p elemThree> <span elemFour> ------------------------ <shadow-root shadowTwo>
- * | | | |
- * <span elemTwo> | <content select="p" elemFive> <content elemSeven>
- * |
- * <content select="span" elemSix>
- */
-
-elemOne = document.createElement("div");
-elemOne.addEventListener("custom", eventListener);
-
-elemTwo = document.createElement("span");
-elemTwo.addEventListener("custom", eventListener);
-
-elemThree = document.createElement("p");
-elemThree.addEventListener("custom", eventListener);
-
-elemFour = document.createElement("span");
-elemFour.addEventListener("custom", eventListener);
-
-elemFive = document.createElement("content");
-elemFive.select = "p";
-elemFive.addEventListener("custom", eventListener);
-
-elemSix = document.createElement("content");
-elemSix.select = "span";
-elemSix.addEventListener("custom", eventListener);
-
-elemSeven = document.createElement("content");
-elemSeven.addEventListener("custom", eventListener);
-
-shadowTwo = elemFour.createShadowRoot();
-shadowTwo.addEventListener("custom", eventListener);
-
-shadowOne = elemOne.createShadowRoot();
-shadowOne.addEventListener("custom", eventListener);
-
-elemOne.appendChild(elemTwo);
-elemOne.appendChild(elemThree);
-shadowOne.appendChild(elemFour);
-elemFour.appendChild(elemSix);
-elemFour.appendChild(elemFive);
-shadowTwo.appendChild(elemSeven);
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemTwo.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemTwo, elemSeven, shadowTwo, elemSix, elemFour, shadowOne, elemOne], "Event path for test 5 for event dispatched on elemTwo.");
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemThree.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemThree, elemSeven, shadowTwo, elemFive, elemFour, shadowOne, elemOne], "Event path for test 5 for event dispatched on elemThree.");
-
-/*
- * Test 6: Test of event dispatch through nested shadowroot with insertion points that match specific tags.
- *
- * <div elemOne> --------- <shadow-root shadowOne>;
- * | | |
- * | <p elemThree> <span elemFour> ------ <shadow-root shadowTwo>
- * | | | |
- * <span elemTwo> <content elemFive> | <content select="p" elemSeven>
- * |
- * <content select="span" elemSix>
- */
-
-elemOne = document.createElement("div");
-elemOne.addEventListener("custom", eventListener);
-
-elemTwo = document.createElement("span");
-elemTwo.addEventListener("custom", eventListener);
-
-elemThree = document.createElement("p");
-elemThree.addEventListener("custom", eventListener);
-
-elemFour = document.createElement("span");
-elemFour.addEventListener("custom", eventListener);
-
-elemFive = document.createElement("content");
-elemFive.addEventListener("custom", eventListener);
-
-elemSix = document.createElement("content");
-elemSix.select = "span";
-elemSix.addEventListener("custom", eventListener);
-
-elemSeven = document.createElement("content");
-elemSeven.select = "p";
-elemSeven.addEventListener("custom", eventListener);
-
-shadowTwo = elemFour.createShadowRoot();
-shadowTwo.addEventListener("custom", eventListener);
-
-shadowOne = elemOne.createShadowRoot();
-shadowOne.addEventListener("custom", eventListener);
-
-elemOne.appendChild(elemTwo);
-elemOne.appendChild(elemThree);
-shadowOne.appendChild(elemFour);
-elemFour.appendChild(elemFive);
-shadowTwo.appendChild(elemSix);
-shadowTwo.appendChild(elemSeven);
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemTwo.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemTwo, elemSix, shadowTwo, elemFive, elemFour, shadowOne, elemOne], "Event path for test 6 for event dispatched on elemTwo.");
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemThree.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemThree, elemSeven, shadowTwo, elemFive, elemFour, shadowOne, elemOne], "Event path for test 6 for event dispatched on elemThree.");
-
-/*
- * Test 7: Test of event dispatch through nested shadowroot with insertion points that match specific tags.
- *
- * <div elemOne> --------- <shadow-root shadowOne>
- * | | |
- * | <p elemThree> <span elemFour> ------ <shadow-root shadowTwo>
- * | | |
- * <span elemTwo> <content elemFive> <span elemEight>
- * | |
- * | <content select="p" elemSeven>
- * |
- * <content select="span" elemSix>
- */
-
-elemOne = document.createElement("div");
-elemOne.addEventListener("custom", eventListener);
-
-elemTwo = document.createElement("span");
-elemTwo.addEventListener("custom", eventListener);
-
-elemThree = document.createElement("p");
-elemThree.addEventListener("custom", eventListener);
-
-elemFour = document.createElement("span");
-elemFour.addEventListener("custom", eventListener);
-
-elemFive = document.createElement("content");
-elemFive.addEventListener("custom", eventListener);
-
-elemSix = document.createElement("content");
-elemSix.select = "span";
-elemSix.addEventListener("custom", eventListener);
-
-elemSeven = document.createElement("content");
-elemSeven.select = "p";
-elemSeven.addEventListener("custom", eventListener);
-
-elemEight = document.createElement("span");
-elemEight.addEventListener("custom", eventListener);
-
-shadowTwo = elemFour.createShadowRoot();
-shadowTwo.addEventListener("custom", eventListener);
-
-shadowOne = elemOne.createShadowRoot();
-shadowOne.addEventListener("custom", eventListener);
-
-elemOne.appendChild(elemTwo);
-elemOne.appendChild(elemThree);
-shadowOne.appendChild(elemFour);
-elemFour.appendChild(elemFive);
-shadowTwo.appendChild(elemEight);
-elemEight.appendChild(elemSix);
-elemEight.appendChild(elemSeven);
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemTwo.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemTwo, elemSix, elemEight, shadowTwo, elemFive, elemFour, shadowOne, elemOne], "Event path for test 7 for event dispatched on elemTwo.");
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemThree.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemThree, elemSeven, elemEight, shadowTwo, elemFive, elemFour, shadowOne, elemOne], "Event path for test 7 for event dispatched on elemThree.");
-
-/*
- * Test 8: Test of event dispatch through host with multiple ShadowRoots with shadow insertion point.
- *
- * <div elemOne> --- <shadow-root shadowOne> (younger ShadowRoot)
- * | |
- * | <div elemFour>
- * | |
- * | <shadow elemTwo>
- * |
- * --- <shadow-root shadowTwo> (older ShadowRoot)
- * |
- * <div elemThree>
- */
-
-elemOne = document.createElement("div");
-elemOne.addEventListener("custom", eventListener);
-
-elemTwo = document.createElement("shadow");
-elemTwo.addEventListener("custom", eventListener);
-
-elemThree = document.createElement("div");
-elemThree.addEventListener("custom", eventListener);
-
-elemFour = document.createElement("div");
-elemFour.addEventListener("custom", eventListener);
-
-shadowTwo = elemOne.createShadowRoot();
-shadowTwo.addEventListener("custom", eventListener);
-
-shadowOne = elemOne.createShadowRoot();
-shadowOne.addEventListener("custom", eventListener);
-
-shadowOne.appendChild(elemFour);
-elemFour.appendChild(elemTwo);
-shadowTwo.appendChild(elemThree);
-
-eventChain = [];
-customEvent = new CustomEvent("custom", { "bubbles" : true, "composed" : true });
-elemThree.dispatchEvent(customEvent);
-isEventChain(eventChain, [elemThree, shadowTwo, elemTwo, elemFour, shadowOne, elemOne], "Event path for test 8 for event dispatched on elemThree.");
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_fallback_dest_insertion_points.html b/dom/tests/mochitest/webcomponents/test_fallback_dest_insertion_points.html
deleted file mode 100644
index 4eefa165f..000000000
--- a/dom/tests/mochitest/webcomponents/test_fallback_dest_insertion_points.html
+++ /dev/null
@@ -1,71 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=999999
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 999999</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=999999">Mozilla Bug 999999</a>
-<p id="display"></p>
-<div id="content">
-<div id="shadowhost"></div>
-</div>
-<pre id="test">
-</pre>
-<script type="application/javascript">
-
-/** Test for Bug 999999 **/
-var host = document.getElementById("shadowhost");
-
-// Test destination insertion points of node distributed to content element.
-var shadowRoot = host.createShadowRoot();
-shadowRoot.innerHTML = '<div id="innerhost"><content id="innercontent"></content></div>';
-
-var fallback = document.createElement("span");
-var innerContent = shadowRoot.getElementById("innercontent");
-
-innerContent.appendChild(fallback);
-
-is(fallback.getDestinationInsertionPoints().length, 1, "Active fallback content should be distributed to insertion point.");
-is(fallback.getDestinationInsertionPoints()[0], innerContent, "Insertion point should be in list of destination insertion points.");
-
-// Test destination insertion points of reprojected fallback content.
-var innerHost = shadowRoot.getElementById("innerhost");
-var innerShadowRoot = innerHost.createShadowRoot();
-innerShadowRoot.innerHTML = '<content id="innerinnercontent"></content>';
-
-var innerInnerContent = innerShadowRoot.getElementById("innerinnercontent");
-
-is(fallback.getDestinationInsertionPoints().length, 2, "Fallback content should have been distributed into parent and reprojected into another insertion point.");
-is(fallback.getDestinationInsertionPoints()[1], innerInnerContent, "Destination insertion points should contain content element to which the node was reprojected.");
-
-// Test destination insertion points of fallback content that was dropped due to content element matching a node in the host.
-var span = document.createElement("span");
-host.appendChild(span);
-
-is(fallback.getDestinationInsertionPoints().length, 0, "After dropping insertion points, fallback content should not have any nodes in destination insertion points list.");
-
-// Test destination insertion points of fallback content after reactivating by dropping matched content on host.
-host.removeChild(span);
-is(fallback.getDestinationInsertionPoints().length, 2, "Fallback content should have 2 destination insertion points after being reactivated.");
-is(fallback.getDestinationInsertionPoints()[0], innerContent, "First destination insertion point should be the parent content");
-is(fallback.getDestinationInsertionPoints()[1], innerInnerContent, "Second destination insertion point should be the content to which the node is reprojected.");
-
-// Test destination insertion points of fallback content after removed from the tree.
-innerContent.removeChild(fallback);
-is(fallback.getDestinationInsertionPoints().length, 0, "Fallback content is no longer fallback content, destination insertion points should be empty.");
-
-// Test destination insertion points of child of non-insertion point content element.
-var notInsertionPointContent = document.createElement("content");
-var notFallback = document.createElement("span");
-notInsertionPointContent.appendChild(notFallback);
-is(notFallback.getDestinationInsertionPoints().length, 0, "Child of non-insertion point content should not be distributed to any nodes.");
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_nested_content_element.html b/dom/tests/mochitest/webcomponents/test_nested_content_element.html
deleted file mode 100644
index 1d98d2996..000000000
--- a/dom/tests/mochitest/webcomponents/test_nested_content_element.html
+++ /dev/null
@@ -1,127 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=806506
--->
-<head>
- <title>Test for HTMLContent element</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<div id="grabme"></div>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=806506">Bug 806506</a>
-<script>
-
-/**
- * Constructs a node with a nested ShadowRoot with the following structure:
- * <span> - - - - - - - - - - <ShadowRoot>
- * <span> <span> - - - - - - - - - - <ShadowRoot>
- * id=one id=four <span>
- * data-color=red data-color=orange id=eleven
- * <span> <span> <content>
- * id=two id=five id=twelve
- * data-color=blue data-color=purple select=secondSelect
- * <span> <content> <span>
- * id=three id=six id=thirteen
- * data-color=green select=firstSelect
- * <span>
- * id=seven
- * <content>
- * id=eight
- * <span>
- * id=nine
- * <span>
- * id=ten
- * data-color=grey
- */
-function constructTree(firstSelect, secondSelect) {
- var rootSpan = document.createElement("span");
- rootSpan.innerHTML = '<span id="one" data-color="red"></span><span id="two" data-color="blue"></span><span id="three" data-color="green"></span>';
- var firstShadow = rootSpan.createShadowRoot();
- firstShadow.innerHTML = '<span id="four" data-color="orange"><span id="five" data-color="purple"></span><content id="six" select="' + firstSelect + '"><span id="seven"></span><content id="eight"></content><span id="nine"></span></content><span id="ten"></span></span>';
- var secondShadow = firstShadow.firstChild.createShadowRoot();
- secondShadow.innerHTML = '<span id="eleven"></span><content id="twelve" select="' + secondSelect + '"></content><span id="thirteen"></span>';
- return rootSpan;
-}
-
-// Create a tree with content that matches on everything and check node distribution.
-var allSpan = constructTree("*", "*");
-var firstContent = allSpan.shadowRoot.getElementById("six");
-var firstDistNodes = firstContent.getDistributedNodes();
-is(firstDistNodes.length, 3, "Universal selector should match all nodes.");
-// Check the order of the distributed nodes.
-is(firstDistNodes.item(0).id, "one", "First distributed node should have id of 'one'");
-is(firstDistNodes.item(1).id, "two", "Second distributed node should have id of 'two'");
-is(firstDistNodes.item(2).id, "three", "Third distributed node should have id of 'three'");
-var secondContent = allSpan.shadowRoot.firstChild.shadowRoot.getElementById("twelve");
-var secondDistNodes = secondContent.getDistributedNodes();
-is(secondDistNodes.length, 5, "Universial selector should match all nodes including those distributed into content.");
-// Check the order of the distribute nodes.
-is(secondDistNodes.item(0).id, "five", "First distributed node should have id of 'five'");
-is(secondDistNodes.item(1).id, "one", "Second distributed (reprojected) node should have id of 'one'");
-is(secondDistNodes.item(2).id, "two", "Third distributed (reprojected) node should have id of 'two'");
-is(secondDistNodes.item(3).id, "three", "Fourth distributed (reprojected) node should have id of 'three'");
-is(secondDistNodes.item(4).id, "ten", "Fifth distributed node should have id of 'ten'");
-
-// Append an element after id=two and make sure that it is inserted into the corrent
-// position in the insertion points.
-var additionalSpan = document.createElement("span");
-additionalSpan.id = "additional";
-
-// Insert the additional span in the third position, before the span with id=three.
-allSpan.insertBefore(additionalSpan, allSpan.childNodes.item(2));
-firstDistNodes = firstContent.getDistributedNodes();
-secondDistNodes = secondContent.getDistributedNodes();
-is(firstDistNodes.length, 4, "First insertion point should match one more node.");
-is(firstDistNodes.item(2).id, "additional", "Additional span should have been inserted into the third position of the first insertion point.");
-
-is(secondDistNodes.length, 6, "Second insertion point should match one more node.");
-is(secondDistNodes.item(3).id, "additional", "Additional span should have been inserted into the fourth position of the second insertion point.");
-
-function nodeListDoesNotContain(nodeList, element) {
- for (var i = 0; i < nodeList.length; i++) {
- if (nodeList[i] == element) {
- return false;
- }
- }
- return true;
-}
-
-// Remove the span with id=one and check that it is removed from all insertion points.
-allSpan = constructTree("*", "*");
-var spanOne = allSpan.firstChild;
-allSpan.removeChild(spanOne);
-firstContent = allSpan.shadowRoot.getElementById("six");
-ok(nodeListDoesNotContain(firstContent.getDistributedNodes(), spanOne), "Child removed from host should not appear in insertion point node list.");
-secondContent = allSpan.shadowRoot.firstChild.shadowRoot.getElementById("twelve");
-ok(nodeListDoesNotContain(secondContent.getDistributedNodes(), spanOne), "Child removed from host should not appear in nested insertion point node list.");
-
-// Make sure <content> in fallback content is inactive.
-// First insertion point will not match anything and will use fallback content.
-allSpan = constructTree("#nomatch", "*");
-var fallbackInsertionPoint = allSpan.shadowRoot.getElementById("eight");
-is(fallbackInsertionPoint.getDistributedNodes().length, 0, "Insertion points in default content should be inactive.");
-
-// Insertion points with non-universal selectors.
-allSpan = constructTree("span[data-color=blue]", "*");
-firstContent = allSpan.shadowRoot.getElementById("six");
-is(firstContent.getDistributedNodes().length, 1, "Insertion point selector should only match one node.");
-is(firstContent.getDistributedNodes()[0].dataset.color, "blue", "Projected node should match selector.");
-secondContent = allSpan.shadowRoot.firstChild.shadowRoot.getElementById("twelve");
-is(secondContent.getDistributedNodes().length, 3, "Second insertion point should match two children and one reprojected node.");
-is(secondContent.getDistributedNodes()[1].dataset.color, "blue", "Projected node should match selector.");
-
-allSpan = constructTree("span[data-color=blue]", "span[data-color=blue]");
-firstContent = allSpan.shadowRoot.getElementById("six");
-is(firstContent.getDistributedNodes().length, 1, "Insertion point selector should only match one node.");
-is(firstContent.getDistributedNodes()[0].dataset.color, "blue", "Projected node should match selector.");
-secondContent = allSpan.shadowRoot.firstChild.shadowRoot.getElementById("twelve");
-is(secondContent.getDistributedNodes().length, 1, "Insertion point should only match reprojected node.");
-is(secondContent.getDistributedNodes()[0].dataset.color, "blue", "Projected node should match selector.");
-
-// Make sure that dynamically appended default content will get distributed.
-</script>
-</body>
-</html>
-
diff --git a/dom/tests/mochitest/webcomponents/test_shadowroot_host.html b/dom/tests/mochitest/webcomponents/test_shadowroot_host.html
deleted file mode 100644
index f48d63e87..000000000
--- a/dom/tests/mochitest/webcomponents/test_shadowroot_host.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1083587
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1083587</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1083587">Mozilla Bug 1083587</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<div id="host"></div>
-</div>
-<pre id="test">
-</pre>
-<script type="application/javascript">
-
-/** Test for Bug 1083587 **/
-var hostInDoc = document.getElementById("host");
-var shadowOne = hostInDoc.createShadowRoot();
-is(shadowOne.host, hostInDoc);
-
-var shadowTwo = hostInDoc.createShadowRoot();
-is(shadowOne.host, hostInDoc);
-is(shadowTwo.host, hostInDoc);
-
-var hostNotInDoc = document.createElement("div");
-var shadowThree = hostNotInDoc.createShadowRoot();
-is(shadowThree.host, hostNotInDoc);
-
-var shadowFour = hostNotInDoc.createShadowRoot();
-is(shadowThree.host, hostNotInDoc);
-is(shadowFour.host, hostNotInDoc);
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_shadowroot_style_multiple_shadow.html b/dom/tests/mochitest/webcomponents/test_shadowroot_style_multiple_shadow.html
deleted file mode 100644
index 7a606bcd7..000000000
--- a/dom/tests/mochitest/webcomponents/test_shadowroot_style_multiple_shadow.html
+++ /dev/null
@@ -1,57 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=806506
--->
-<head>
- <title>Test for ShadowRoot styles with multiple ShadowRoot on host.</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<div class="tall" id="bodydiv"></div>
-<div id="container"></div>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=806506">Bug 806506</a>
-<script>
-// Create ShadowRoot.
-var container = document.getElementById("container");
-var elem = document.createElement("div");
-container.appendChild(elem); // Put ShadowRoot host in document.
-var firstRoot = elem.createShadowRoot();
-var secondRoot = elem.createShadowRoot();
-var thirdRoot = elem.createShadowRoot();
-
-// A style element that will be appended into the ShadowRoot.
-var firstStyle = document.createElement("style");
-firstRoot.appendChild(firstStyle);
-is(firstRoot.styleSheets.length, 1, "firstStyle should be the only style in firstRoot.");
-is(firstRoot.styleSheets[0].ownerNode, firstStyle, "firstStyle should in the ShadowRoot styleSheets.");
-
-var secondStyle = document.createElement("style");
-secondRoot.appendChild(secondStyle);
-is(secondRoot.styleSheets.length, 1, "secondStyle should be the only style in secondRoot.");
-is(secondRoot.styleSheets[0].ownerNode, secondStyle, "secondStyle should in the ShadowRoot styleSheets.");
-
-var thirdStyle = document.createElement("style");
-thirdRoot.appendChild(thirdStyle);
-is(thirdRoot.styleSheets.length, 1, "thirdStyle should be the only style in thirdRoot.");
-is(thirdRoot.styleSheets[0].ownerNode, thirdStyle, "thirdStyle should in the ShadowRoot styleSheets.");
-
-// Check the stylesheet counts again to make sure that none of the style sheets leaked into the older ShadowRoots.
-is(firstRoot.styleSheets.length, 1, "Adding a stylesheet to a younger ShadowRoot should not affect stylesheets in the older ShadowRoot.");
-is(secondRoot.styleSheets.length, 1, "Adding a stylesheet to a younger ShadowRoot should not affect stylesheets in the older ShadowRoot.");
-
-// Remove styles and make sure they are removed from the correct ShadowRoot.
-firstRoot.removeChild(firstStyle);
-is(firstRoot.styleSheets.length, 0, "firstRoot should no longer have any styles.");
-
-thirdRoot.removeChild(thirdStyle);
-is(thirdRoot.styleSheets.length, 0, "thirdRoot should no longer have any styles.");
-
-secondRoot.removeChild(secondStyle);
-is(secondRoot.styleSheets.length, 0, "secondRoot should no longer have any styles.");
-
-</script>
-</body>
-</html>
-
diff --git a/dom/tests/mochitest/webcomponents/test_shadowroot_youngershadowroot.html b/dom/tests/mochitest/webcomponents/test_shadowroot_youngershadowroot.html
deleted file mode 100644
index 17743321b..000000000
--- a/dom/tests/mochitest/webcomponents/test_shadowroot_youngershadowroot.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1083587
--->
-<head>
- <meta charset="utf-8">
- <title>Test for Bug 1083587</title>
- <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1083587">Mozilla Bug 1083587</a>
-<p id="display"></p>
-<div id="content" style="display: none">
-<div id="host"></div>
-</div>
-<pre id="test">
-</pre>
-<script type="application/javascript">
-
-/** Test for Bug 1083587 **/
-var hostInDoc = document.getElementById("host");
-var shadowOne = hostInDoc.createShadowRoot();
-is(shadowOne.olderShadowRoot, null);
-
-var shadowTwo = hostInDoc.createShadowRoot();
-is(shadowOne.olderShadowRoot, null);
-is(shadowTwo.olderShadowRoot, shadowOne);
-
-var hostNotInDoc = document.createElement("div");
-var shadowThree = hostNotInDoc.createShadowRoot();
-is(shadowThree.olderShadowRoot, null);
-
-var shadowFour = hostNotInDoc.createShadowRoot();
-is(shadowThree.olderShadowRoot, null);
-is(shadowFour.olderShadowRoot, shadowThree);
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_template_custom_elements.html b/dom/tests/mochitest/webcomponents/test_template_custom_elements.html
deleted file mode 100644
index f7f4340cf..000000000
--- a/dom/tests/mochitest/webcomponents/test_template_custom_elements.html
+++ /dev/null
@@ -1,32 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1091425
--->
-<head>
- <title>Test for custom elements in template</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
-</head>
-<body>
-<template>
- <x-foo></x-foo>
-</template>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1091425">Bug 1091425</a>
-<script>
-
-var p = {};
-p.createdCallback = function() {
- ok(false, "Created callback should not be called for custom elements in templates.");
-};
-
-document.registerElement("x-foo", { prototype: p });
-
-ok(true, "Created callback should not be called for custom elements in templates.");
-
-</script>
-<template>
- <x-foo></x-foo>
-</template>
-</body>
-</html>
diff --git a/dom/tests/mochitest/webcomponents/test_unresolved_pseudo_class.html b/dom/tests/mochitest/webcomponents/test_unresolved_pseudo_class.html
deleted file mode 100644
index 3e1fae8ee..000000000
--- a/dom/tests/mochitest/webcomponents/test_unresolved_pseudo_class.html
+++ /dev/null
@@ -1,99 +0,0 @@
-<!DOCTYPE HTML>
-<html>
-<!--
-https://bugzilla.mozilla.org/show_bug.cgi?id=1111633
--->
-<head>
- <title>Test template element in stale document.</title>
- <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
- <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
- <style>
- :unresolved {
- color: rgb(0, 0, 255);
- background-color: rgb(0, 0, 255);
- }
-
- x-foo { color: rgb(255, 0, 0); }
-
- [is="x-del"]:not(:unresolved) { color: rgb(255, 0, 0); }
-
- [is="x-bar"]:not(:unresolved) { color: rgb(255, 0, 0); }
-
- [is="x-bar"]:unresolved { background-color: rgb(255, 0, 0); }
-
- x-baz:not(:unresolved) {
- color: rgb(255, 0, 0);
- background-color: rgb(255, 0, 0);
- }
-
- span { color: rgb(0,255,0); }
-
- x-foo:unresolved + span { color: rgb(255,0,0); }
-
- </style>
-</head>
-<body>
-<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1111633">Bug 1111633</a>
-<div id="container"></div>
-<x-foo id="foo"></x-foo>
-<span id="span1">This text should be green</span>
-<span id="bar" is="x-bar"></span>
-<x-baz id="baz"></x-baz>
-<span id="del" is="x-del"></span>
-<script>
-
-// Before registerElement
-var foo = document.querySelector('#foo');
-is(getComputedStyle(foo).color, "rgb(0, 0, 255)", "foo - color");
-is(getComputedStyle(foo).backgroundColor, "rgb(0, 0, 255)", "foo - backgroundColor");
-
-var bar = document.querySelector('#bar');
-is(getComputedStyle(bar).color, "rgb(0, 0, 255)", "bar - color");
-is(getComputedStyle(bar).backgroundColor, "rgb(255, 0, 0)", "bar - backgroundColor");
-
-var baz = document.querySelector('#baz');
-is(getComputedStyle(baz).color, "rgb(0, 0, 255)", "baz - color");
-is(getComputedStyle(baz).backgroundColor, "rgb(0, 0, 255)", "baz - backgroundColor");
-
-var span1 = document.querySelector('#span1');
-is(getComputedStyle(span1).color, "rgb(255, 0, 0)", "span1 - color");
-
-var Foo = document.registerElement('x-foo', { prototype: Object.create(HTMLElement.prototype) });
-
-var Bar = document.registerElement('x-bar', { extends: 'span', prototype: Object.create(HTMLSpanElement.prototype) });
-
-var Baz = document.registerElement('x-baz', { prototype: Object.create(HTMLElement.prototype) });
-
-// After registerElement
-is(getComputedStyle(foo).color, "rgb(255, 0, 0)",
- "foo - color (after registerElement)");
-
-is(getComputedStyle(bar).color,
- "rgb(255, 0, 0)", "bar - color (after registerElement)");
-
-is(getComputedStyle(baz).color,
- "rgb(255, 0, 0)", "baz - color (after registerElement)");
-is(getComputedStyle(baz).backgroundColor,
- "rgb(255, 0, 0)", "baz - backgroundColor (after registerElement)");
-
-is(getComputedStyle(span1).color, "rgb(0, 255, 0)", "span1 - color (after registerElement)");
-
-// After tree removal
-var del = document.querySelector('#del');
-is(getComputedStyle(del).color, "rgb(0, 0, 255)", "del - color");
-var par = del.parentNode;
-par.removeChild(del);
-// Changing is attribute after creation should not change the type
-// of a custom element, even if the element was removed and re-append to the tree.
-del.setAttribute("is", "foobar");
-par.appendChild(del);
-is(getComputedStyle(del).color, "rgb(0, 0, 255)", "del - color (after reappend)");
-var Del = document.registerElement('x-del', { extends: 'span', prototype: Object.create(HTMLSpanElement.prototype) });
-// [is="x-del"] will not match any longer so the rule of span will apply
-is(getComputedStyle(del).color, "rgb(0, 255, 0)", "del - color (after registerElement)");
-// but the element should have been upgraded:
-ok(del instanceof Del, "element was upgraded correctly after changing |is|");
-
-</script>
-</body>
-</html>
diff --git a/dom/tests/moz.build b/dom/tests/moz.build
index f7c3e2437..340157416 100644
--- a/dom/tests/moz.build
+++ b/dom/tests/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
@@ -37,6 +36,7 @@ MOCHITEST_CHROME_MANIFESTS += [
'mochitest/geolocation/chrome.ini',
'mochitest/localstorage/chrome.ini',
'mochitest/sessionstorage/chrome.ini',
+ 'mochitest/webcomponents/chrome.ini',
'mochitest/whatwg/chrome.ini',
]
diff --git a/dom/time/DateCacheCleaner.cpp b/dom/time/DateCacheCleaner.cpp
index a55f8cb26..932c2a146 100644
--- a/dom/time/DateCacheCleaner.cpp
+++ b/dom/time/DateCacheCleaner.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/time/DateCacheCleaner.h b/dom/time/DateCacheCleaner.h
index 5d734b2c4..7da2b057f 100644
--- a/dom/time/DateCacheCleaner.h
+++ b/dom/time/DateCacheCleaner.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/time/TimeChangeObserver.cpp b/dom/time/TimeChangeObserver.cpp
index 8d002cfcd..67f1fe9ca 100644
--- a/dom/time/TimeChangeObserver.cpp
+++ b/dom/time/TimeChangeObserver.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/time/TimeChangeObserver.h b/dom/time/TimeChangeObserver.h
index 65945cbff..1a25b3dcf 100644
--- a/dom/time/TimeChangeObserver.h
+++ b/dom/time/TimeChangeObserver.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/time/TimeManager.cpp b/dom/time/TimeManager.cpp
index 0fb7f1623..e7788e829 100644
--- a/dom/time/TimeManager.cpp
+++ b/dom/time/TimeManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/time/TimeManager.h b/dom/time/TimeManager.h
index 8c58342b9..588dea188 100644
--- a/dom/time/TimeManager.h
+++ b/dom/time/TimeManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/time/TimeService.cpp b/dom/time/TimeService.cpp
index edbd97d51..6bacca15c 100644
--- a/dom/time/TimeService.cpp
+++ b/dom/time/TimeService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/time/TimeService.h b/dom/time/TimeService.h
index 4c802cf05..abf935f81 100644
--- a/dom/time/TimeService.h
+++ b/dom/time/TimeService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/time/moz.build b/dom/time/moz.build
index b68f5c089..e40187c9d 100644
--- a/dom/time/moz.build
+++ b/dom/time/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/u2f/NSSU2FTokenRemote.cpp b/dom/u2f/NSSU2FTokenRemote.cpp
index 7158af322..730f971a4 100644
--- a/dom/u2f/NSSU2FTokenRemote.cpp
+++ b/dom/u2f/NSSU2FTokenRemote.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/u2f/NSSU2FTokenRemote.h b/dom/u2f/NSSU2FTokenRemote.h
index 2ccf61274..e419a4beb 100644
--- a/dom/u2f/NSSU2FTokenRemote.h
+++ b/dom/u2f/NSSU2FTokenRemote.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/u2f/moz.build b/dom/u2f/moz.build
index 19325205a..92edac66d 100644
--- a/dom/u2f/moz.build
+++ b/dom/u2f/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/url/URL.cpp b/dom/url/URL.cpp
index 04f5ec137..f594c0f32 100644
--- a/dom/url/URL.cpp
+++ b/dom/url/URL.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/url/URL.h b/dom/url/URL.h
index 45e4dd289..a0afd8b8b 100644
--- a/dom/url/URL.h
+++ b/dom/url/URL.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/url/URLSearchParams.cpp b/dom/url/URLSearchParams.cpp
index e2172ea0e..3a0311aab 100644
--- a/dom/url/URLSearchParams.cpp
+++ b/dom/url/URLSearchParams.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/url/URLSearchParams.h b/dom/url/URLSearchParams.h
index e02c1179f..e1a21da4c 100644
--- a/dom/url/URLSearchParams.h
+++ b/dom/url/URLSearchParams.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/url/moz.build b/dom/url/moz.build
index 4e88f2723..7571f4d5e 100644
--- a/dom/url/moz.build
+++ b/dom/url/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/webidl/Animatable.webidl b/dom/webidl/Animatable.webidl
index 4c1396c99..decc13960 100644
--- a/dom/webidl/Animatable.webidl
+++ b/dom/webidl/Animatable.webidl
@@ -23,6 +23,6 @@ interface Animatable {
[Func="nsDocument::IsElementAnimateEnabled", Throws]
Animation animate(object? keyframes,
optional UnrestrictedDoubleOrKeyframeAnimationOptions options);
- [Func="nsDocument::IsWebAnimationsEnabled"]
+ [Func="nsDocument::IsWebAnimationsGetAnimationsEnabled"]
sequence<Animation> getAnimations(optional AnimationFilter filter);
};
diff --git a/dom/webidl/Animation.webidl b/dom/webidl/Animation.webidl
index 615084f75..9fdea5ade 100644
--- a/dom/webidl/Animation.webidl
+++ b/dom/webidl/Animation.webidl
@@ -19,7 +19,7 @@ interface Animation : EventTarget {
attribute DOMString id;
[Func="nsDocument::IsWebAnimationsEnabled", Pure]
attribute AnimationEffectReadOnly? effect;
- [Func="nsDocument::IsWebAnimationsEnabled"]
+ [Func="nsDocument::AreWebAnimationsTimelinesEnabled"]
attribute AnimationTimeline? timeline;
[BinaryName="startTimeAsDouble"]
attribute double? startTime;
diff --git a/dom/webidl/AnimationTimeline.webidl b/dom/webidl/AnimationTimeline.webidl
index fe3d0fb49..4cf5567ce 100644
--- a/dom/webidl/AnimationTimeline.webidl
+++ b/dom/webidl/AnimationTimeline.webidl
@@ -10,7 +10,7 @@
* liability, trademark and document use rules apply.
*/
-[Func="nsDocument::IsWebAnimationsEnabled"]
+[Func="nsDocument::AreWebAnimationsTimelinesEnabled"]
interface AnimationTimeline {
[BinaryName="currentTimeAsDouble"]
readonly attribute double? currentTime;
diff --git a/dom/webidl/AnonymousContent.webidl b/dom/webidl/AnonymousContent.webidl
index 6755fe598..8be69cd26 100644
--- a/dom/webidl/AnonymousContent.webidl
+++ b/dom/webidl/AnonymousContent.webidl
@@ -77,4 +77,12 @@ interface AnonymousContent {
[Throws]
void setCutoutRectsForElement(DOMString elementId,
sequence<DOMRect> rects);
+
+ /**
+ * Get the computed value of a property on an element inside this custom
+ * anonymous content.
+ */
+ [Throws]
+ DOMString? getComputedStylePropertyValue(DOMString elementId,
+ DOMString propertyName);
};
diff --git a/dom/webidl/ArchiveRequest.webidl b/dom/webidl/ArchiveRequest.webidl
index 24b79cf33..e836c9d7a 100644
--- a/dom/webidl/ArchiveRequest.webidl
+++ b/dom/webidl/ArchiveRequest.webidl
@@ -1,5 +1,4 @@
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/webidl/Attr.webidl b/dom/webidl/Attr.webidl
index c836afd9b..763ed02ef 100644
--- a/dom/webidl/Attr.webidl
+++ b/dom/webidl/Attr.webidl
@@ -12,7 +12,7 @@
interface Attr : Node {
readonly attribute DOMString localName;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString value;
[Constant]
diff --git a/dom/webidl/CSSPseudoElement.webidl b/dom/webidl/CSSPseudoElement.webidl
index 96d191e3a..250bef03c 100644
--- a/dom/webidl/CSSPseudoElement.webidl
+++ b/dom/webidl/CSSPseudoElement.webidl
@@ -15,7 +15,7 @@
// this interface.
// What we implement here is a minimal subset of the two definitions which we
// ship behind a pref until the specification issues have been resolved.
-[Func="nsDocument::IsWebAnimationsEnabled"]
+[Func="nsDocument::IsWebAnimationsGetAnimationsEnabled"]
interface CSSPseudoElement {
readonly attribute DOMString type;
readonly attribute Element parentElement;
diff --git a/dom/webidl/CSSStyleDeclaration.webidl b/dom/webidl/CSSStyleDeclaration.webidl
index d9b2511de..561e5cce1 100644
--- a/dom/webidl/CSSStyleDeclaration.webidl
+++ b/dom/webidl/CSSStyleDeclaration.webidl
@@ -10,7 +10,7 @@
interface CSSRule;
interface CSSStyleDeclaration {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString cssText;
readonly attribute unsigned long length;
@@ -22,9 +22,9 @@ interface CSSStyleDeclaration {
[Throws]
CSSValue? getPropertyCSSValue(DOMString property);
DOMString getPropertyPriority(DOMString property);
- [Throws]
+ [CEReactions, Throws]
void setProperty(DOMString property, [TreatNullAs=EmptyString] DOMString value, [TreatNullAs=EmptyString] optional DOMString priority = "");
- [Throws]
+ [CEReactions, Throws]
DOMString removeProperty(DOMString property);
readonly attribute CSSRule? parentRule;
diff --git a/dom/webidl/ChildNode.webidl b/dom/webidl/ChildNode.webidl
index fcf388059..ae36cd93e 100644
--- a/dom/webidl/ChildNode.webidl
+++ b/dom/webidl/ChildNode.webidl
@@ -9,13 +9,13 @@
[NoInterfaceObject]
interface ChildNode {
- [Throws, Unscopable]
+ [CEReactions, Throws, Unscopable]
void before((Node or DOMString)... nodes);
- [Throws, Unscopable]
+ [CEReactions, Throws, Unscopable]
void after((Node or DOMString)... nodes);
- [Throws, Unscopable]
+ [CEReactions, Throws, Unscopable]
void replaceWith((Node or DOMString)... nodes);
- [Unscopable]
+ [CEReactions, Unscopable]
void remove();
};
diff --git a/dom/webidl/Console.webidl b/dom/webidl/Console.webidl
index 2e8d6b1cf..c41c10383 100644
--- a/dom/webidl/Console.webidl
+++ b/dom/webidl/Console.webidl
@@ -1,5 +1,4 @@
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/webidl/CustomElementRegistry.webidl b/dom/webidl/CustomElementRegistry.webidl
index dff612174..788b6a4ed 100644
--- a/dom/webidl/CustomElementRegistry.webidl
+++ b/dom/webidl/CustomElementRegistry.webidl
@@ -5,7 +5,7 @@
// https://html.spec.whatwg.org/#dom-window-customelements
[Func="CustomElementRegistry::IsCustomElementEnabled"]
interface CustomElementRegistry {
- [Throws]
+ [CEReactions, Throws]
void define(DOMString name, Function functionConstructor,
optional ElementDefinitionOptions options);
any get(DOMString name);
diff --git a/dom/webidl/DOMStringMap.webidl b/dom/webidl/DOMStringMap.webidl
index 0ed98e148..a59910e0b 100644
--- a/dom/webidl/DOMStringMap.webidl
+++ b/dom/webidl/DOMStringMap.webidl
@@ -14,7 +14,8 @@
[OverrideBuiltins]
interface DOMStringMap {
getter DOMString (DOMString name);
- [Throws]
+ [CEReactions, Throws]
setter creator void (DOMString name, DOMString value);
+ [CEReactions]
deleter void (DOMString name);
};
diff --git a/dom/webidl/DOMTokenList.webidl b/dom/webidl/DOMTokenList.webidl
index a1ea243b3..69663d055 100644
--- a/dom/webidl/DOMTokenList.webidl
+++ b/dom/webidl/DOMTokenList.webidl
@@ -14,17 +14,17 @@ interface DOMTokenList {
readonly attribute unsigned long length;
getter DOMString? item(unsigned long index);
boolean contains(DOMString token);
- [Throws]
+ [CEReactions, Throws]
void add(DOMString... tokens);
- [Throws]
+ [CEReactions, Throws]
void remove(DOMString... tokens);
- [Throws]
+ [CEReactions, Throws]
void replace(DOMString token, DOMString newToken);
- [Throws]
+ [CEReactions, Throws]
boolean toggle(DOMString token, optional boolean force);
- [Throws]
+ [CEReactions, Throws]
boolean supports(DOMString token);
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString value;
stringifier DOMString ();
iterable<DOMString?>;
diff --git a/dom/webidl/Document.webidl b/dom/webidl/Document.webidl
index 904b1fb77..2ade9a2c9 100644
--- a/dom/webidl/Document.webidl
+++ b/dom/webidl/Document.webidl
@@ -17,6 +17,9 @@ enum VisibilityState { "hidden", "visible", "prerender" };
/* https://dom.spec.whatwg.org/#dictdef-elementcreationoptions */
dictionary ElementCreationOptions {
DOMString is;
+
+ [ChromeOnly]
+ DOMString pseudo;
};
/* http://dom.spec.whatwg.org/#interface-document */
@@ -65,9 +68,9 @@ interface Document : Node {
[NewObject, Throws]
ProcessingInstruction createProcessingInstruction(DOMString target, DOMString data);
- [Throws]
+ [CEReactions, Throws]
Node importNode(Node node, optional boolean deep = false);
- [Throws]
+ [CEReactions, Throws]
Node adoptNode(Node node);
[NewObject, Throws]
@@ -108,9 +111,9 @@ partial interface Document {
// DOM tree accessors
//(Not proxy yet)getter object (DOMString name);
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString title;
- [Pure]
+ [CEReactions, Pure]
attribute DOMString dir;
//(HTML only) attribute HTMLElement? body;
//(HTML only)readonly attribute HTMLHeadElement? head;
@@ -133,7 +136,6 @@ partial interface Document {
// user interaction
[Pure]
readonly attribute WindowProxy? defaultView;
- readonly attribute Element? activeElement;
[Throws]
boolean hasFocus();
//(HTML only) attribute DOMString designMode;
@@ -268,13 +270,6 @@ partial interface Document {
attribute EventHandler onpointerlockerror;
};
-//http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/custom/index.html#dfn-document-register
-partial interface Document {
- // this is deprecated from CustomElements v0
- [Throws, Func="CustomElementRegistry::IsCustomElementEnabled"]
- object registerElement(DOMString name, optional ElementRegistrationOptions options);
-};
-
// https://w3c.github.io/page-visibility/#extensions-to-the-document-interface
partial interface Document {
[Pref="dom.visibilityAPI.enabled"]
@@ -287,8 +282,6 @@ partial interface Document {
// http://dev.w3.org/csswg/cssom/#extensions-to-the-document-interface
partial interface Document {
- [Constant]
- readonly attribute StyleSheetList styleSheets;
attribute DOMString? selectedStyleSheetSet;
readonly attribute DOMString? lastStyleSheetSet;
readonly attribute DOMString? preferredStyleSheetSet;
@@ -319,9 +312,9 @@ partial interface Document {
// http://w3c.github.io/web-animations/#extensions-to-the-document-interface
partial interface Document {
- [Func="nsDocument::IsWebAnimationsEnabled"]
+ [Func="nsDocument::AreWebAnimationsTimelinesEnabled"]
readonly attribute DocumentTimeline timeline;
- [Func="nsDocument::IsWebAnimationsEnabled"]
+ [Func="nsDocument::IsWebAnimationsGetAnimationsEnabled"]
sequence<Animation> getAnimations();
};
@@ -460,3 +453,4 @@ Document implements ParentNode;
Document implements OnErrorEventHandlerForNodes;
Document implements GeometryUtils;
Document implements FontFaceSource;
+Document implements DocumentOrShadowRoot;
diff --git a/dom/webidl/DocumentOrShadowRoot.webidl b/dom/webidl/DocumentOrShadowRoot.webidl
new file mode 100644
index 000000000..16388d126
--- /dev/null
+++ b/dom/webidl/DocumentOrShadowRoot.webidl
@@ -0,0 +1,29 @@
+/* -*- Mode: IDL; 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/.
+ *
+ * The origin of this IDL file is
+ * https://dom.spec.whatwg.org/#documentorshadowroot
+ * http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-the-documentorshadowroot-mixin
+ */
+
+[NoInterfaceObject]
+interface DocumentOrShadowRoot {
+ // Not implemented yet: bug 1430308.
+ // Selection? getSelection();
+ // Not implemented yet: bug 1430301.
+ // Element? elementFromPoint (float x, float y);
+ // Not implemented yet: bug 1430301.
+ // sequence<Element> elementsFromPoint (float x, float y);
+ // Not implemented yet: bug 1430307.
+ // CaretPosition? caretPositionFromPoint (float x, float y);
+
+ readonly attribute Element? activeElement;
+ readonly attribute StyleSheetList styleSheets;
+
+ // Not implemented yet: bug 1430303.
+ // readonly attribute Element? pointerLockElement;
+ // Not implemented yet: bug 1430305.
+ // readonly attribute Element? fullscreenElement;
+};
diff --git a/dom/webidl/DocumentTimeline.webidl b/dom/webidl/DocumentTimeline.webidl
index 916b1a491..f10e2b365 100644
--- a/dom/webidl/DocumentTimeline.webidl
+++ b/dom/webidl/DocumentTimeline.webidl
@@ -14,7 +14,7 @@ dictionary DocumentTimelineOptions {
DOMHighResTimeStamp originTime = 0;
};
-[Func="nsDocument::IsWebAnimationsEnabled",
+[Func="nsDocument::AreWebAnimationsTimelinesEnabled",
Constructor (optional DocumentTimelineOptions options)]
interface DocumentTimeline : AnimationTimeline {
};
diff --git a/dom/webidl/Element.webidl b/dom/webidl/Element.webidl
index cf17523a5..d5cac7c64 100644
--- a/dom/webidl/Element.webidl
+++ b/dom/webidl/Element.webidl
@@ -25,9 +25,9 @@ interface Element : Node {
[Pure]
readonly attribute DOMString tagName;
- [Pure]
+ [CEReactions, Pure]
attribute DOMString id;
- [Pure]
+ [CEReactions, Pure]
attribute DOMString className;
[Constant, PutForwards=value]
readonly attribute DOMTokenList classList;
@@ -40,15 +40,15 @@ interface Element : Node {
DOMString? getAttribute(DOMString name);
[Pure]
DOMString? getAttributeNS(DOMString? namespace, DOMString localName);
- [Throws]
+ [CEReactions, Throws]
boolean toggleAttribute(DOMString name, optional boolean force);
- [Throws]
+ [CEReactions, Throws]
void setAttribute(DOMString name, DOMString value);
- [Throws]
+ [CEReactions, Throws]
void setAttributeNS(DOMString? namespace, DOMString name, DOMString value);
- [Throws]
+ [CEReactions, Throws]
void removeAttribute(DOMString name);
- [Throws]
+ [CEReactions, Throws]
void removeAttributeNS(DOMString? namespace, DOMString localName);
[Pure]
boolean hasAttribute(DOMString name);
@@ -72,7 +72,7 @@ interface Element : Node {
[Pure]
HTMLCollection getElementsByClassName(DOMString classNames);
- [Throws, Pure]
+ [CEReactions, Throws, Pure]
Element? insertAdjacentElement(DOMString where, Element element); // historical
[Throws]
@@ -137,12 +137,12 @@ interface Element : Node {
// Obsolete methods.
Attr? getAttributeNode(DOMString name);
- [Throws]
+ [CEReactions, Throws]
Attr? setAttributeNode(Attr newAttr);
- [Throws]
+ [CEReactions, Throws]
Attr? removeAttributeNode(Attr oldAttr);
Attr? getAttributeNodeNS(DOMString? namespaceURI, DOMString localName);
- [Throws]
+ [CEReactions, Throws]
Attr? setAttributeNodeNS(Attr newAttr);
[ChromeOnly]
@@ -212,11 +212,11 @@ partial interface Element {
// http://domparsing.spec.whatwg.org/#extensions-to-the-element-interface
partial interface Element {
- [Pure,SetterThrows,TreatNullAs=EmptyString]
+ [CEReactions, Pure,SetterThrows,TreatNullAs=EmptyString]
attribute DOMString innerHTML;
- [Pure,SetterThrows,TreatNullAs=EmptyString]
+ [CEReactions, Pure,SetterThrows,TreatNullAs=EmptyString]
attribute DOMString outerHTML;
- [Throws]
+ [CEReactions, Throws]
void insertAdjacentHTML(DOMString position, DOMString text);
};
@@ -228,14 +228,26 @@ partial interface Element {
NodeList querySelectorAll(DOMString selectors);
};
-// http://w3c.github.io/webcomponents/spec/shadow/#extensions-to-element-interface
+// https://dom.spec.whatwg.org/#dictdef-shadowrootinit
+dictionary ShadowRootInit {
+ required ShadowRootMode mode;
+};
+
+// https://dom.spec.whatwg.org/#element
partial interface Element {
- [Throws,Func="nsDocument::IsWebComponentsEnabled"]
- ShadowRoot createShadowRoot();
- [Func="nsDocument::IsWebComponentsEnabled"]
- NodeList getDestinationInsertionPoints();
- [Func="nsDocument::IsWebComponentsEnabled"]
+ // Shadow DOM v1
+ [Throws, Func="nsDocument::IsWebComponentsEnabled"]
+ ShadowRoot attachShadow(ShadowRootInit shadowRootInitDict);
+ [BinaryName="shadowRootByMode", Func="nsDocument::IsWebComponentsEnabled"]
readonly attribute ShadowRoot? shadowRoot;
+ [BinaryName="assignedSlotByMode", Func="nsDocument::IsWebComponentsEnabled"]
+ readonly attribute HTMLSlotElement? assignedSlot;
+ [CEReactions, Unscopable, SetterThrows, Func="nsDocument::IsWebComponentsEnabled"]
+ attribute DOMString slot;
+
+ // [deprecated] Shadow DOM v0
+ [Throws, Func="nsDocument::IsWebComponentsEnabled"]
+ ShadowRoot createShadowRoot();
};
Element implements ChildNode;
diff --git a/dom/webidl/Event.webidl b/dom/webidl/Event.webidl
index a5d7da7d4..8a8e71c43 100644
--- a/dom/webidl/Event.webidl
+++ b/dom/webidl/Event.webidl
@@ -22,6 +22,8 @@ interface Event {
[Pure]
readonly attribute EventTarget? currentTarget;
+ sequence<EventTarget> composedPath();
+
const unsigned short NONE = 0;
const unsigned short CAPTURING_PHASE = 1;
const unsigned short AT_TARGET = 2;
diff --git a/dom/webidl/EventHandler.webidl b/dom/webidl/EventHandler.webidl
index b92e3a2bb..484a8e95c 100644
--- a/dom/webidl/EventHandler.webidl
+++ b/dom/webidl/EventHandler.webidl
@@ -94,7 +94,6 @@ interface GlobalEventHandlers {
[Pref="dom.select_events.enabled"]
attribute EventHandler onselectstart;
- [Pref="dom.details_element.enabled"]
attribute EventHandler ontoggle;
// Pointer events handlers
diff --git a/dom/webidl/HTMLAnchorElement.webidl b/dom/webidl/HTMLAnchorElement.webidl
index 0b8ded6d7..0326dff6a 100644
--- a/dom/webidl/HTMLAnchorElement.webidl
+++ b/dom/webidl/HTMLAnchorElement.webidl
@@ -12,25 +12,26 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-a-element
+[HTMLConstructor]
interface HTMLAnchorElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString target;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString download;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString ping;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString rel;
- [SetterThrows, Pref="network.http.enablePerElementReferrer"]
+ [CEReactions, SetterThrows, Pref="network.http.enablePerElementReferrer"]
attribute DOMString referrerPolicy;
[PutForwards=value]
readonly attribute DOMTokenList relList;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString hreflang;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString type;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString text;
};
@@ -38,14 +39,14 @@ HTMLAnchorElement implements HTMLHyperlinkElementUtils;
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLAnchorElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString coords;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString charset;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString name;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString rev;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString shape;
};
diff --git a/dom/webidl/HTMLAreaElement.webidl b/dom/webidl/HTMLAreaElement.webidl
index be3f37885..0980d178a 100644
--- a/dom/webidl/HTMLAreaElement.webidl
+++ b/dom/webidl/HTMLAreaElement.webidl
@@ -13,20 +13,21 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-area-element
+[HTMLConstructor]
interface HTMLAreaElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString alt;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString coords;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString shape;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString target;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString download;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString ping;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString rel;
[SetterThrows, Pref="network.http.enablePerElementReferrer"]
attribute DOMString referrerPolicy;
@@ -38,6 +39,6 @@ HTMLAreaElement implements HTMLHyperlinkElementUtils;
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLAreaElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean noHref;
};
diff --git a/dom/webidl/HTMLAudioElement.webidl b/dom/webidl/HTMLAudioElement.webidl
index 8537453c0..725669839 100644
--- a/dom/webidl/HTMLAudioElement.webidl
+++ b/dom/webidl/HTMLAudioElement.webidl
@@ -11,6 +11,6 @@
* and create derivative works of this document.
*/
-[NamedConstructor=Audio(optional DOMString src)]
+[HTMLConstructor, NamedConstructor=Audio(optional DOMString src)]
interface HTMLAudioElement : HTMLMediaElement {};
diff --git a/dom/webidl/HTMLBRElement.webidl b/dom/webidl/HTMLBRElement.webidl
index cf5cb8a67..b0b0f80ed 100644
--- a/dom/webidl/HTMLBRElement.webidl
+++ b/dom/webidl/HTMLBRElement.webidl
@@ -13,11 +13,12 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-br-element
+[HTMLConstructor]
interface HTMLBRElement : HTMLElement {};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLBRElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString clear;
};
diff --git a/dom/webidl/HTMLBaseElement.webidl b/dom/webidl/HTMLBaseElement.webidl
index d982f4654..ed86f8c77 100644
--- a/dom/webidl/HTMLBaseElement.webidl
+++ b/dom/webidl/HTMLBaseElement.webidl
@@ -12,10 +12,11 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-base-element
+[HTMLConstructor]
interface HTMLBaseElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString href;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString target;
};
diff --git a/dom/webidl/HTMLBodyElement.webidl b/dom/webidl/HTMLBodyElement.webidl
index 95df2d43a..f89c287d7 100644
--- a/dom/webidl/HTMLBodyElement.webidl
+++ b/dom/webidl/HTMLBodyElement.webidl
@@ -11,16 +11,23 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLBodyElement : HTMLElement {
};
partial interface HTMLBodyElement {
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString text;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString link;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString vLink;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString aLink;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor;
- [SetterThrows] attribute DOMString background;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString text;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString link;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString vLink;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString aLink;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString bgColor;
+ [CEReactions, SetterThrows]
+ attribute DOMString background;
};
HTMLBodyElement implements WindowEventHandlers;
diff --git a/dom/webidl/HTMLButtonElement.webidl b/dom/webidl/HTMLButtonElement.webidl
index 579efa39c..f129dbd7b 100644
--- a/dom/webidl/HTMLButtonElement.webidl
+++ b/dom/webidl/HTMLButtonElement.webidl
@@ -11,28 +11,29 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-button-element
+[HTMLConstructor]
interface HTMLButtonElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean autofocus;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean disabled;
[Pure]
readonly attribute HTMLFormElement? form;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString formAction;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString formEnctype;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString formMethod;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean formNoValidate;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString formTarget;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString name;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString type;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString value;
// Not yet implemented:
// attribute HTMLMenuElement? menu;
diff --git a/dom/webidl/HTMLCanvasElement.webidl b/dom/webidl/HTMLCanvasElement.webidl
index 15e94f154..b567c69eb 100644
--- a/dom/webidl/HTMLCanvasElement.webidl
+++ b/dom/webidl/HTMLCanvasElement.webidl
@@ -13,10 +13,11 @@
interface nsISupports;
interface Variant;
+[HTMLConstructor]
interface HTMLCanvasElement : HTMLElement {
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute unsigned long width;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute unsigned long height;
[Throws]
diff --git a/dom/webidl/HTMLDListElement.webidl b/dom/webidl/HTMLDListElement.webidl
index 08020a497..4cf1c2183 100644
--- a/dom/webidl/HTMLDListElement.webidl
+++ b/dom/webidl/HTMLDListElement.webidl
@@ -13,11 +13,12 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-dl-element
+[HTMLConstructor]
interface HTMLDListElement : HTMLElement {
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLDListElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean compact;
};
diff --git a/dom/webidl/HTMLDataElement.webidl b/dom/webidl/HTMLDataElement.webidl
index 821b8b483..d24537871 100644
--- a/dom/webidl/HTMLDataElement.webidl
+++ b/dom/webidl/HTMLDataElement.webidl
@@ -7,7 +7,8 @@
* http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-data-element
*/
+[HTMLConstructor]
interface HTMLDataElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString value;
};
diff --git a/dom/webidl/HTMLDataListElement.webidl b/dom/webidl/HTMLDataListElement.webidl
index 83b20cd2b..4c38fddf3 100644
--- a/dom/webidl/HTMLDataListElement.webidl
+++ b/dom/webidl/HTMLDataListElement.webidl
@@ -11,6 +11,7 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLDataListElement : HTMLElement {
readonly attribute HTMLCollection options;
};
diff --git a/dom/webidl/HTMLDetailsElement.webidl b/dom/webidl/HTMLDetailsElement.webidl
index 133ecf125..04df82e30 100644
--- a/dom/webidl/HTMLDetailsElement.webidl
+++ b/dom/webidl/HTMLDetailsElement.webidl
@@ -11,8 +11,8 @@
* and create derivative works of this document.
*/
-[Pref="dom.details_element.enabled"]
+[HTMLConstructor]
interface HTMLDetailsElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean open;
};
diff --git a/dom/webidl/HTMLDialogElement.webidl b/dom/webidl/HTMLDialogElement.webidl
index b6cdbacf6..563740c87 100644
--- a/dom/webidl/HTMLDialogElement.webidl
+++ b/dom/webidl/HTMLDialogElement.webidl
@@ -13,11 +13,13 @@
[Pref="dom.dialog_element.enabled"]
interface HTMLDialogElement : HTMLElement {
- [SetterThrows] attribute boolean open;
+ [CEReactions, SetterThrows]
+ attribute boolean open;
attribute DOMString returnValue;
-
+ [CEReactions]
void show();
- [Throws] void showModal();
-
+ [CEReactions, Throws]
+ void showModal();
+ [CEReactions]
void close(optional DOMString returnValue);
};
diff --git a/dom/webidl/HTMLDirectoryElement.webidl b/dom/webidl/HTMLDirectoryElement.webidl
index 9d5160af1..65becbb60 100644
--- a/dom/webidl/HTMLDirectoryElement.webidl
+++ b/dom/webidl/HTMLDirectoryElement.webidl
@@ -12,8 +12,9 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
+[HTMLConstructor]
interface HTMLDirectoryElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean compact;
};
diff --git a/dom/webidl/HTMLDivElement.webidl b/dom/webidl/HTMLDivElement.webidl
index f50e2aad0..2b762c6fa 100644
--- a/dom/webidl/HTMLDivElement.webidl
+++ b/dom/webidl/HTMLDivElement.webidl
@@ -11,9 +11,10 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLDivElement : HTMLElement {};
partial interface HTMLDivElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
};
diff --git a/dom/webidl/HTMLDocument.webidl b/dom/webidl/HTMLDocument.webidl
index ffb61ccdd..ffa38d97d 100644
--- a/dom/webidl/HTMLDocument.webidl
+++ b/dom/webidl/HTMLDocument.webidl
@@ -13,7 +13,7 @@ interface HTMLDocument : Document {
// DOM tree accessors
[Throws]
getter object (DOMString name);
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute HTMLElement? body;
[Pure]
readonly attribute HTMLHeadElement? head;
@@ -32,20 +32,20 @@ interface HTMLDocument : Document {
NodeList getElementsByName(DOMString elementName);
// dynamic markup insertion
- [Throws]
+ [CEReactions, Throws]
Document open(optional DOMString type = "text/html", optional DOMString replace = "");
- [Throws]
+ [CEReactions, Throws]
WindowProxy? open(DOMString url, DOMString name, DOMString features, optional boolean replace = false);
- [Throws]
+ [CEReactions, Throws]
void close();
- [Throws]
+ [CEReactions, Throws]
void write(DOMString... text);
- [Throws]
+ [CEReactions, Throws]
void writeln(DOMString... text);
- [SetterThrows, NeedsSubjectPrincipal]
+ [CEReactions, SetterThrows, NeedsSubjectPrincipal]
attribute DOMString designMode;
- [Throws]
+ [CEReactions, Throws]
boolean execCommand(DOMString commandId, optional boolean showUI = false,
optional DOMString value = "");
[Throws]
@@ -58,11 +58,11 @@ interface HTMLDocument : Document {
[Throws]
DOMString queryCommandValue(DOMString commandId);
- [TreatNullAs=EmptyString] attribute DOMString fgColor;
- [TreatNullAs=EmptyString] attribute DOMString linkColor;
- [TreatNullAs=EmptyString] attribute DOMString vlinkColor;
- [TreatNullAs=EmptyString] attribute DOMString alinkColor;
- [TreatNullAs=EmptyString] attribute DOMString bgColor;
+ [CEReactions, TreatNullAs=EmptyString] attribute DOMString fgColor;
+ [CEReactions, TreatNullAs=EmptyString] attribute DOMString linkColor;
+ [CEReactions, TreatNullAs=EmptyString] attribute DOMString vlinkColor;
+ [CEReactions, TreatNullAs=EmptyString] attribute DOMString alinkColor;
+ [CEReactions, TreatNullAs=EmptyString] attribute DOMString bgColor;
[Pure]
readonly attribute HTMLCollection anchors;
diff --git a/dom/webidl/HTMLElement.webidl b/dom/webidl/HTMLElement.webidl
index 5ce5024e6..815f4a3bd 100644
--- a/dom/webidl/HTMLElement.webidl
+++ b/dom/webidl/HTMLElement.webidl
@@ -12,34 +12,37 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLElement : Element {
// metadata attributes
+ [CEReactions]
attribute DOMString title;
+ [CEReactions]
attribute DOMString lang;
// attribute boolean translate;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString dir;
[Constant]
readonly attribute DOMStringMap dataset;
- [GetterThrows, Pure, TreatNullAs=EmptyString]
+ [CEReactions, GetterThrows, Pure, TreatNullAs=EmptyString]
attribute DOMString innerText;
// user interaction
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean hidden;
void click();
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute long tabIndex;
[Throws]
void focus();
[Throws]
void blur();
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString accessKey;
[Pure]
readonly attribute DOMString accessKeyLabel;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean draggable;
//[PutForwards=value] readonly attribute DOMTokenList dropzone;
[SetterThrows, Pure]
@@ -50,7 +53,7 @@ interface HTMLElement : Element {
readonly attribute HTMLMenuElement? contextMenu;
//[SetterThrows]
// attribute HTMLMenuElement? contextMenu;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean spellcheck;
// command API
diff --git a/dom/webidl/HTMLEmbedElement.webidl b/dom/webidl/HTMLEmbedElement.webidl
index 36668595b..9c5361221 100644
--- a/dom/webidl/HTMLEmbedElement.webidl
+++ b/dom/webidl/HTMLEmbedElement.webidl
@@ -13,15 +13,15 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-embed-element
-[NeedResolve]
+[HTMLConstructor, NeedResolve]
interface HTMLEmbedElement : HTMLElement {
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString src;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString type;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString width;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString height;
[Throws]
legacycaller any (any... arguments);
@@ -29,9 +29,9 @@ interface HTMLEmbedElement : HTMLElement {
// http://www.whatwg.org/specs/web-apps/current-work/#HTMLEmbedElement-partial
partial interface HTMLEmbedElement {
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString align;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString name;
};
diff --git a/dom/webidl/HTMLFieldSetElement.webidl b/dom/webidl/HTMLFieldSetElement.webidl
index 6c9eee52b..63393bf42 100644
--- a/dom/webidl/HTMLFieldSetElement.webidl
+++ b/dom/webidl/HTMLFieldSetElement.webidl
@@ -11,11 +11,12 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLFieldSetElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean disabled;
readonly attribute HTMLFormElement? form;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString name;
readonly attribute DOMString type;
diff --git a/dom/webidl/HTMLFontElement.webidl b/dom/webidl/HTMLFontElement.webidl
index 781dabb88..8db6d3246 100644
--- a/dom/webidl/HTMLFontElement.webidl
+++ b/dom/webidl/HTMLFontElement.webidl
@@ -11,8 +11,9 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLFontElement : HTMLElement {
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString color;
- [SetterThrows] attribute DOMString face;
- [SetterThrows] attribute DOMString size;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows] attribute DOMString color;
+ [CEReactions, SetterThrows] attribute DOMString face;
+ [CEReactions, SetterThrows] attribute DOMString size;
};
diff --git a/dom/webidl/HTMLFormElement.webidl b/dom/webidl/HTMLFormElement.webidl
index 8d248e1a5..064fe9fad 100644
--- a/dom/webidl/HTMLFormElement.webidl
+++ b/dom/webidl/HTMLFormElement.webidl
@@ -11,25 +11,25 @@
* and create derivative works of this document.
*/
-[OverrideBuiltins, LegacyUnenumerableNamedProperties]
+[OverrideBuiltins, LegacyUnenumerableNamedProperties, HTMLConstructor]
interface HTMLFormElement : HTMLElement {
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString acceptCharset;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString action;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString autocomplete;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString enctype;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString encoding;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString method;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString name;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean noValidate;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString target;
[Constant]
@@ -43,6 +43,7 @@ interface HTMLFormElement : HTMLElement {
[Throws]
void submit();
+ [CEReactions]
void reset();
boolean checkValidity();
boolean reportValidity();
diff --git a/dom/webidl/HTMLFrameElement.webidl b/dom/webidl/HTMLFrameElement.webidl
index 9c5aca7c4..c3ba0de63 100644
--- a/dom/webidl/HTMLFrameElement.webidl
+++ b/dom/webidl/HTMLFrameElement.webidl
@@ -11,25 +11,28 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#htmlframeelement
+[HTMLConstructor]
interface HTMLFrameElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString name;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString scrolling;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString src;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString frameBorder;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString longDesc;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean noResize;
[NeedsSubjectPrincipal]
readonly attribute Document? contentDocument;
readonly attribute WindowProxy? contentWindow;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString marginHeight;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString marginWidth;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString marginHeight;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString marginWidth;
};
HTMLFrameElement implements MozFrameLoaderOwner;
diff --git a/dom/webidl/HTMLFrameSetElement.webidl b/dom/webidl/HTMLFrameSetElement.webidl
index ce00d487f..afc4465d1 100644
--- a/dom/webidl/HTMLFrameSetElement.webidl
+++ b/dom/webidl/HTMLFrameSetElement.webidl
@@ -11,10 +11,11 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLFrameSetElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString cols;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString rows;
};
diff --git a/dom/webidl/HTMLHRElement.webidl b/dom/webidl/HTMLHRElement.webidl
index 0495e43b3..24ba3112a 100644
--- a/dom/webidl/HTMLHRElement.webidl
+++ b/dom/webidl/HTMLHRElement.webidl
@@ -12,19 +12,20 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-hr-element
+[HTMLConstructor]
interface HTMLHRElement : HTMLElement {
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLHRElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString color;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean noShade;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString size;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString width;
};
diff --git a/dom/webidl/HTMLHeadElement.webidl b/dom/webidl/HTMLHeadElement.webidl
index 0ad45e384..b649712a6 100644
--- a/dom/webidl/HTMLHeadElement.webidl
+++ b/dom/webidl/HTMLHeadElement.webidl
@@ -12,5 +12,6 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-head-element
+[HTMLConstructor]
interface HTMLHeadElement : HTMLElement {};
diff --git a/dom/webidl/HTMLHeadingElement.webidl b/dom/webidl/HTMLHeadingElement.webidl
index c07e5cb99..a39e24cfb 100644
--- a/dom/webidl/HTMLHeadingElement.webidl
+++ b/dom/webidl/HTMLHeadingElement.webidl
@@ -12,11 +12,12 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-h1,-h2,-h3,-h4,-h5,-and-h6-elements
+[HTMLConstructor]
interface HTMLHeadingElement : HTMLElement {
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLHeadingElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
};
diff --git a/dom/webidl/HTMLHtmlElement.webidl b/dom/webidl/HTMLHtmlElement.webidl
index b06de7761..5b2a9a926 100644
--- a/dom/webidl/HTMLHtmlElement.webidl
+++ b/dom/webidl/HTMLHtmlElement.webidl
@@ -13,10 +13,11 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-html-element
+[HTMLConstructor]
interface HTMLHtmlElement : HTMLElement {};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLHtmlElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString version;
};
diff --git a/dom/webidl/HTMLHyperlinkElementUtils.webidl b/dom/webidl/HTMLHyperlinkElementUtils.webidl
index 25f175db9..ae53fd75e 100644
--- a/dom/webidl/HTMLHyperlinkElementUtils.webidl
+++ b/dom/webidl/HTMLHyperlinkElementUtils.webidl
@@ -18,17 +18,26 @@ interface HTMLHyperlinkElementUtils {
// Bug 824857 should remove this.
stringifier;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute USVString href;
readonly attribute USVString origin;
+ [CEReactions]
attribute USVString protocol;
+ [CEReactions]
attribute USVString username;
+ [CEReactions]
attribute USVString password;
+ [CEReactions]
attribute USVString host;
+ [CEReactions]
attribute USVString hostname;
+ [CEReactions]
attribute USVString port;
+ [CEReactions]
attribute USVString pathname;
+ [CEReactions]
attribute USVString search;
+ [CEReactions]
attribute USVString hash;
};
diff --git a/dom/webidl/HTMLIFrameElement.webidl b/dom/webidl/HTMLIFrameElement.webidl
index 0a1b49aff..d2859c6db 100644
--- a/dom/webidl/HTMLIFrameElement.webidl
+++ b/dom/webidl/HTMLIFrameElement.webidl
@@ -11,22 +11,23 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLIFrameElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString src;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString srcdoc;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString name;
[PutForwards=value] readonly attribute DOMTokenList sandbox;
// attribute boolean seamless;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean allowFullscreen;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString width;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString height;
- [SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"]
+ [CEReactions, SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"]
attribute DOMString referrerPolicy;
[NeedsSubjectPrincipal]
readonly attribute Document? contentDocument;
@@ -35,17 +36,19 @@ interface HTMLIFrameElement : HTMLElement {
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLIFrameElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString align;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString scrolling;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString frameBorder;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString longDesc;
- [TreatNullAs=EmptyString,SetterThrows,Pure] attribute DOMString marginHeight;
- [TreatNullAs=EmptyString,SetterThrows,Pure] attribute DOMString marginWidth;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows, Pure]
+ attribute DOMString marginHeight;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows, Pure]
+ attribute DOMString marginWidth;
};
partial interface HTMLIFrameElement {
diff --git a/dom/webidl/HTMLImageElement.webidl b/dom/webidl/HTMLImageElement.webidl
index 243c65509..e50a9ef8e 100644
--- a/dom/webidl/HTMLImageElement.webidl
+++ b/dom/webidl/HTMLImageElement.webidl
@@ -16,25 +16,26 @@ interface imgIRequest;
interface URI;
interface nsIStreamListener;
-[NamedConstructor=Image(optional unsigned long width, optional unsigned long height)]
+[HTMLConstructor,
+ NamedConstructor=Image(optional unsigned long width, optional unsigned long height)]
interface HTMLImageElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString alt;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString src;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString srcset;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString? crossOrigin;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString useMap;
- [SetterThrows, Pref="network.http.enablePerElementReferrer"]
+ [CEReactions, SetterThrows, Pref="network.http.enablePerElementReferrer"]
attribute DOMString referrerPolicy;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean isMap;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long width;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long height;
readonly attribute unsigned long naturalWidth;
readonly attribute unsigned long naturalHeight;
@@ -43,30 +44,31 @@ interface HTMLImageElement : HTMLElement {
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLImageElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString name;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long hspace;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long vspace;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString longDesc;
- [TreatNullAs=EmptyString,SetterThrows] attribute DOMString border;
+ [CEReactions, TreatNullAs=EmptyString,SetterThrows] attribute DOMString border;
};
// [Update me: not in whatwg spec yet]
// http://picture.responsiveimages.org/#the-img-element
partial interface HTMLImageElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString sizes;
readonly attribute DOMString currentSrc;
};
// Mozilla extensions.
partial interface HTMLImageElement {
+ [CEReactions]
attribute DOMString lowsrc;
// These attributes are offsets from the closest view (to mimic
diff --git a/dom/webidl/HTMLInputElement.webidl b/dom/webidl/HTMLInputElement.webidl
index cf3e9a4c7..93ad90f45 100644
--- a/dom/webidl/HTMLInputElement.webidl
+++ b/dom/webidl/HTMLInputElement.webidl
@@ -21,79 +21,81 @@ enum SelectionMode {
interface nsIControllers;
+[HTMLConstructor]
interface HTMLInputElement : HTMLElement {
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString accept;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString alt;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString autocomplete;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean autofocus;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean defaultChecked;
[Pure]
attribute boolean checked;
// Bug 850337 - attribute DOMString dirName;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean disabled;
readonly attribute HTMLFormElement? form;
[Pure]
readonly attribute FileList? files;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString formAction;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString formEnctype;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString formMethod;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean formNoValidate;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString formTarget;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute unsigned long height;
[Pure]
attribute boolean indeterminate;
- [Pure, SetterThrows, Pref="dom.forms.inputmode"]
+ [CEReactions, Pure, SetterThrows, Pref="dom.forms.inputmode"]
attribute DOMString inputMode;
[Pure]
readonly attribute HTMLElement? list;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString max;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute long maxLength;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString min;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute long minLength;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean multiple;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString name;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString pattern;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString placeholder;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean readOnly;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean required;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute unsigned long size;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString src;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString step;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString type;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString defaultValue;
- [Pure, TreatNullAs=EmptyString, Throws]
+ [CEReactions, Pure, TreatNullAs=EmptyString, Throws]
attribute DOMString value;
[Throws, Func="HTMLInputElement::ValueAsDateEnabled"]
attribute Date? valueAsDate;
[Pure, SetterThrows]
attribute unrestricted double valueAsNumber;
+ [CEReactions]
attribute unsigned long width;
[Throws]
@@ -132,9 +134,9 @@ interface HTMLInputElement : HTMLElement {
};
partial interface HTMLInputElement {
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString align;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString useMap;
};
diff --git a/dom/webidl/HTMLLIElement.webidl b/dom/webidl/HTMLLIElement.webidl
index c20e00846..3f104d09e 100644
--- a/dom/webidl/HTMLLIElement.webidl
+++ b/dom/webidl/HTMLLIElement.webidl
@@ -13,13 +13,14 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-li-element
+[HTMLConstructor]
interface HTMLLIElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute long value;
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLLIElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString type;
};
diff --git a/dom/webidl/HTMLLabelElement.webidl b/dom/webidl/HTMLLabelElement.webidl
index f44a56219..4b624dfaf 100644
--- a/dom/webidl/HTMLLabelElement.webidl
+++ b/dom/webidl/HTMLLabelElement.webidl
@@ -11,8 +11,10 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLLabelElement : HTMLElement {
readonly attribute HTMLFormElement? form;
+ [CEReactions]
attribute DOMString htmlFor;
readonly attribute HTMLElement? control;
};
diff --git a/dom/webidl/HTMLLegendElement.webidl b/dom/webidl/HTMLLegendElement.webidl
index 0ce4ae88b..6f03ecf1b 100644
--- a/dom/webidl/HTMLLegendElement.webidl
+++ b/dom/webidl/HTMLLegendElement.webidl
@@ -13,12 +13,13 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-legend-element
+[HTMLConstructor]
interface HTMLLegendElement : HTMLElement {
readonly attribute HTMLFormElement? form;
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLLegendElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
};
diff --git a/dom/webidl/HTMLLinkElement.webidl b/dom/webidl/HTMLLinkElement.webidl
index 588f15bfd..4fa40d04d 100644
--- a/dom/webidl/HTMLLinkElement.webidl
+++ b/dom/webidl/HTMLLinkElement.webidl
@@ -12,24 +12,25 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-link-element
+[HTMLConstructor]
interface HTMLLinkElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean disabled;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString href;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString? crossOrigin;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString rel;
[PutForwards=value]
readonly attribute DOMTokenList relList;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString media;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString hreflang;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString type;
- [SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"]
+ [CEReactions, SetterThrows, Pure, Pref="network.http.enablePerElementReferrer"]
attribute DOMString referrerPolicy;
[PutForwards=value] readonly attribute DOMTokenList sizes;
};
@@ -37,11 +38,11 @@ HTMLLinkElement implements LinkStyle;
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLLinkElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString charset;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString rev;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString target;
};
@@ -53,6 +54,6 @@ partial interface HTMLLinkElement {
// https://w3c.github.io/webappsec/specs/subresourceintegrity/#htmllinkelement-1
partial interface HTMLLinkElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString integrity;
};
diff --git a/dom/webidl/HTMLMapElement.webidl b/dom/webidl/HTMLMapElement.webidl
index 88fe4e54c..199c70876 100644
--- a/dom/webidl/HTMLMapElement.webidl
+++ b/dom/webidl/HTMLMapElement.webidl
@@ -11,8 +11,9 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-map-element
+[HTMLConstructor]
interface HTMLMapElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString name;
[Constant]
readonly attribute HTMLCollection areas;
diff --git a/dom/webidl/HTMLMediaElement.webidl b/dom/webidl/HTMLMediaElement.webidl
index be79d8679..ad31f38cb 100644
--- a/dom/webidl/HTMLMediaElement.webidl
+++ b/dom/webidl/HTMLMediaElement.webidl
@@ -17,18 +17,18 @@ interface HTMLMediaElement : HTMLElement {
readonly attribute MediaError? error;
// network state
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString src;
readonly attribute DOMString currentSrc;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString? crossOrigin;
const unsigned short NETWORK_EMPTY = 0;
const unsigned short NETWORK_IDLE = 1;
const unsigned short NETWORK_LOADING = 2;
const unsigned short NETWORK_NO_SOURCE = 3;
readonly attribute unsigned short networkState;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString preload;
[NewObject]
readonly attribute TimeRanges buffered;
@@ -63,9 +63,9 @@ interface HTMLMediaElement : HTMLElement {
[NewObject]
readonly attribute TimeRanges seekable;
readonly attribute boolean ended;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean autoplay;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean loop;
[Throws]
Promise<void> play();
@@ -78,12 +78,12 @@ interface HTMLMediaElement : HTMLElement {
// attribute MediaController? controller;
// controls
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean controls;
[SetterThrows]
attribute double volume;
attribute boolean muted;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean defaultMuted;
// TODO: Bug 847379
diff --git a/dom/webidl/HTMLMenuElement.webidl b/dom/webidl/HTMLMenuElement.webidl
index ff81a7c80..1194226c5 100644
--- a/dom/webidl/HTMLMenuElement.webidl
+++ b/dom/webidl/HTMLMenuElement.webidl
@@ -15,16 +15,17 @@
interface MenuBuilder;
// http://www.whatwg.org/specs/web-apps/current-work/#the-menu-element
+[HTMLConstructor]
interface HTMLMenuElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString type;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString label;
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLMenuElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean compact;
};
diff --git a/dom/webidl/HTMLMenuItemElement.webidl b/dom/webidl/HTMLMenuItemElement.webidl
index 7064885a1..f09104501 100644
--- a/dom/webidl/HTMLMenuItemElement.webidl
+++ b/dom/webidl/HTMLMenuItemElement.webidl
@@ -12,23 +12,24 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-menuitem-element
+[HTMLConstructor]
interface HTMLMenuItemElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString type;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString label;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString icon;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean disabled;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean checked;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString radiogroup;
// This should be 'default' but in the IDL implementation
// this has been renamed 'defaultChecked'.
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean defaultChecked;
// Currently not implemented.
diff --git a/dom/webidl/HTMLMetaElement.webidl b/dom/webidl/HTMLMetaElement.webidl
index 5b7b0f92c..30014a955 100644
--- a/dom/webidl/HTMLMetaElement.webidl
+++ b/dom/webidl/HTMLMetaElement.webidl
@@ -12,17 +12,18 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-meta-element
+[HTMLConstructor]
interface HTMLMetaElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString name;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString httpEquiv;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString content;
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLMetaElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString scheme;
};
diff --git a/dom/webidl/HTMLMeterElement.webidl b/dom/webidl/HTMLMeterElement.webidl
index 104e00353..8f93bd71e 100644
--- a/dom/webidl/HTMLMeterElement.webidl
+++ b/dom/webidl/HTMLMeterElement.webidl
@@ -12,18 +12,19 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-meter-element
+[HTMLConstructor]
interface HTMLMeterElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute double value;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute double min;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute double max;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute double low;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute double high;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute double optimum;
readonly attribute NodeList labels;
diff --git a/dom/webidl/HTMLModElement.webidl b/dom/webidl/HTMLModElement.webidl
index 45086cceb..8ed8b994b 100644
--- a/dom/webidl/HTMLModElement.webidl
+++ b/dom/webidl/HTMLModElement.webidl
@@ -11,9 +11,10 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#attributes-common-to-ins-and-del-elements
+[HTMLConstructor]
interface HTMLModElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString cite;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString dateTime;
};
diff --git a/dom/webidl/HTMLOListElement.webidl b/dom/webidl/HTMLOListElement.webidl
index f41abf3ea..93084c227 100644
--- a/dom/webidl/HTMLOListElement.webidl
+++ b/dom/webidl/HTMLOListElement.webidl
@@ -13,17 +13,18 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-ol-element
+[HTMLConstructor]
interface HTMLOListElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean reversed;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute long start;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString type;
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLOListElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean compact;
};
diff --git a/dom/webidl/HTMLObjectElement.webidl b/dom/webidl/HTMLObjectElement.webidl
index ebb95ab09..7c9f7f8bc 100644
--- a/dom/webidl/HTMLObjectElement.webidl
+++ b/dom/webidl/HTMLObjectElement.webidl
@@ -13,23 +13,23 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-object-element
-[NeedResolve, UnsafeInPrerendering]
+[HTMLConstructor, NeedResolve, UnsafeInPrerendering]
interface HTMLObjectElement : HTMLElement {
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString data;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString type;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean typeMustMatch;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString name;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString useMap;
[Pure]
readonly attribute HTMLFormElement? form;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString width;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString height;
// Not pure: can trigger about:blank instantiation
[NeedsSubjectPrincipal]
@@ -51,26 +51,26 @@ interface HTMLObjectElement : HTMLElement {
// http://www.whatwg.org/specs/web-apps/current-work/#HTMLObjectElement-partial
partial interface HTMLObjectElement {
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString align;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString archive;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString code;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute boolean declare;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute unsigned long hspace;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString standby;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute unsigned long vspace;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString codeBase;
- [Pure, SetterThrows]
+ [CEReactions, Pure, SetterThrows]
attribute DOMString codeType;
- [TreatNullAs=EmptyString, Pure, SetterThrows]
+ [CEReactions, TreatNullAs=EmptyString, Pure, SetterThrows]
attribute DOMString border;
};
diff --git a/dom/webidl/HTMLOptGroupElement.webidl b/dom/webidl/HTMLOptGroupElement.webidl
index a23aee30d..d46fb869d 100644
--- a/dom/webidl/HTMLOptGroupElement.webidl
+++ b/dom/webidl/HTMLOptGroupElement.webidl
@@ -11,9 +11,10 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLOptGroupElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean disabled;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString label;
};
diff --git a/dom/webidl/HTMLOptionElement.webidl b/dom/webidl/HTMLOptionElement.webidl
index c80bedeef..b94afa3e9 100644
--- a/dom/webidl/HTMLOptionElement.webidl
+++ b/dom/webidl/HTMLOptionElement.webidl
@@ -11,21 +11,21 @@
* and create derivative works of this document.
*/
-[NamedConstructor=Option(optional DOMString text, optional DOMString value, optional boolean defaultSelected, optional boolean selected)]
+[HTMLConstructor, NamedConstructor=Option(optional DOMString text, optional DOMString value, optional boolean defaultSelected, optional boolean selected)]
interface HTMLOptionElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean disabled;
readonly attribute HTMLFormElement? form;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString label;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean defaultSelected;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean selected;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString value;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString text;
readonly attribute long index;
};
diff --git a/dom/webidl/HTMLOptionsCollection.webidl b/dom/webidl/HTMLOptionsCollection.webidl
index 4d4385d82..d8d1046ad 100644
--- a/dom/webidl/HTMLOptionsCollection.webidl
+++ b/dom/webidl/HTMLOptionsCollection.webidl
@@ -11,13 +11,14 @@
*/
interface HTMLOptionsCollection : HTMLCollection {
+ [CEReactions]
attribute unsigned long length;
- [Throws]
+ [CEReactions, Throws]
setter creator void (unsigned long index, HTMLOptionElement? option);
- [Throws]
+ [CEReactions, Throws]
void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
- [Throws]
+ [CEReactions, Throws]
void remove(long index);
- [Throws]
+ [CEReactions, Throws]
attribute long selectedIndex;
};
diff --git a/dom/webidl/HTMLOutputElement.webidl b/dom/webidl/HTMLOutputElement.webidl
index d0e4ecbe6..4d65209a9 100644
--- a/dom/webidl/HTMLOutputElement.webidl
+++ b/dom/webidl/HTMLOutputElement.webidl
@@ -12,18 +12,19 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-output-element
+[HTMLConstructor]
interface HTMLOutputElement : HTMLElement {
[PutForwards=value, Constant]
readonly attribute DOMTokenList htmlFor;
readonly attribute HTMLFormElement? form;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString name;
[Constant]
readonly attribute DOMString type;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString defaultValue;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString value;
readonly attribute boolean willValidate;
diff --git a/dom/webidl/HTMLParagraphElement.webidl b/dom/webidl/HTMLParagraphElement.webidl
index 2a626d257..289af4c9f 100644
--- a/dom/webidl/HTMLParagraphElement.webidl
+++ b/dom/webidl/HTMLParagraphElement.webidl
@@ -12,11 +12,12 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-p-element
+[HTMLConstructor]
interface HTMLParagraphElement : HTMLElement {
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLParagraphElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
};
diff --git a/dom/webidl/HTMLParamElement.webidl b/dom/webidl/HTMLParamElement.webidl
index e2c7e8d7f..cf6b5a35a 100644
--- a/dom/webidl/HTMLParamElement.webidl
+++ b/dom/webidl/HTMLParamElement.webidl
@@ -13,17 +13,18 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-param-element
+[HTMLConstructor]
interface HTMLParamElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString name;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString value;
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLParamElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString type;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString valueType;
};
diff --git a/dom/webidl/HTMLPictureElement.webidl b/dom/webidl/HTMLPictureElement.webidl
index eff30f750..387eee78d 100644
--- a/dom/webidl/HTMLPictureElement.webidl
+++ b/dom/webidl/HTMLPictureElement.webidl
@@ -4,5 +4,6 @@
* You can obtain one at http://mozilla.org/MPL/2.0/.
*/
+[HTMLConstructor]
interface HTMLPictureElement : HTMLElement {
};
diff --git a/dom/webidl/HTMLPreElement.webidl b/dom/webidl/HTMLPreElement.webidl
index db220b74c..6929cd533 100644
--- a/dom/webidl/HTMLPreElement.webidl
+++ b/dom/webidl/HTMLPreElement.webidl
@@ -12,11 +12,12 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-pre-element
+[HTMLConstructor]
interface HTMLPreElement : HTMLElement {
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLPreElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute long width;
};
diff --git a/dom/webidl/HTMLProgressElement.webidl b/dom/webidl/HTMLProgressElement.webidl
index 028728e22..564b9f2a4 100644
--- a/dom/webidl/HTMLProgressElement.webidl
+++ b/dom/webidl/HTMLProgressElement.webidl
@@ -11,10 +11,11 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLProgressElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute double value;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute double max;
readonly attribute double position;
readonly attribute NodeList labels;
diff --git a/dom/webidl/HTMLQuoteElement.webidl b/dom/webidl/HTMLQuoteElement.webidl
index a266dd353..c999b1478 100644
--- a/dom/webidl/HTMLQuoteElement.webidl
+++ b/dom/webidl/HTMLQuoteElement.webidl
@@ -12,8 +12,9 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-blockquote-element
+[HTMLConstructor]
interface HTMLQuoteElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString cite;
};
diff --git a/dom/webidl/HTMLScriptElement.webidl b/dom/webidl/HTMLScriptElement.webidl
index 5b64c42d7..286c0673d 100644
--- a/dom/webidl/HTMLScriptElement.webidl
+++ b/dom/webidl/HTMLScriptElement.webidl
@@ -8,35 +8,36 @@
* http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
*/
+[HTMLConstructor]
interface HTMLScriptElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString src;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString type;
- [SetterThrows, Pref="dom.moduleScripts.enabled"]
+ [CEReactions, SetterThrows, Pref="dom.moduleScripts.enabled"]
attribute boolean noModule;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString charset;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean async;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean defer;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString? crossOrigin;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString text;
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLScriptElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString event;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString htmlFor;
};
// https://w3c.github.io/webappsec/specs/subresourceintegrity/#htmlscriptelement-1
partial interface HTMLScriptElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString integrity;
};
diff --git a/dom/webidl/HTMLSelectElement.webidl b/dom/webidl/HTMLSelectElement.webidl
index b18ca3634..537e9d84f 100644
--- a/dom/webidl/HTMLSelectElement.webidl
+++ b/dom/webidl/HTMLSelectElement.webidl
@@ -7,22 +7,23 @@
* http://www.whatwg.org/html/#the-select-element
*/
+[HTMLConstructor]
interface HTMLSelectElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean autofocus;
- [Pref="dom.forms.autocomplete.experimental", SetterThrows, Pure]
+ [CEReactions, Pref="dom.forms.autocomplete.experimental", SetterThrows, Pure]
attribute DOMString autocomplete;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean disabled;
[Pure]
readonly attribute HTMLFormElement? form;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean multiple;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString name;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean required;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute unsigned long size;
[Pure]
@@ -30,14 +31,15 @@ interface HTMLSelectElement : HTMLElement {
[Constant]
readonly attribute HTMLOptionsCollection options;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute unsigned long length;
getter Element? item(unsigned long index);
HTMLOptionElement? namedItem(DOMString name);
- [Throws]
+ [CEReactions, Throws]
void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
+ [CEReactions]
void remove(long index);
- [Throws]
+ [CEReactions, Throws]
setter creator void (unsigned long index, HTMLOptionElement? option);
readonly attribute HTMLCollection selectedOptions;
@@ -56,6 +58,7 @@ interface HTMLSelectElement : HTMLElement {
readonly attribute NodeList labels;
// https://www.w3.org/Bugs/Public/show_bug.cgi?id=20720
+ [CEReactions]
void remove();
};
diff --git a/dom/webidl/HTMLShadowElement.webidl b/dom/webidl/HTMLShadowElement.webidl
deleted file mode 100644
index f72cd06e1..000000000
--- a/dom/webidl/HTMLShadowElement.webidl
+++ /dev/null
@@ -1,19 +0,0 @@
-/* -*- Mode: IDL; 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/.
- *
- * The origin of this IDL file is
- * https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html
- *
- * © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and
- * Opera Software ASA. You are granted a license to use, reproduce
- * and create derivative works of this document.
- */
-
-[Func="nsDocument::IsWebComponentsEnabled"]
-interface HTMLShadowElement : HTMLElement
-{
- readonly attribute ShadowRoot? olderShadowRoot;
-};
-
diff --git a/dom/webidl/HTMLContentElement.webidl b/dom/webidl/HTMLSlotElement.webidl
index ea809f120..9fd2da628 100644
--- a/dom/webidl/HTMLContentElement.webidl
+++ b/dom/webidl/HTMLSlotElement.webidl
@@ -4,17 +4,20 @@
* You can obtain one at http://mozilla.org/MPL/2.0/.
*
* The origin of this IDL file is
- * https://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/shadow/index.html
+ * https://html.spec.whatwg.org/multipage/forms.html#the-dialog-element
*
* © Copyright 2004-2011 Apple Computer, Inc., Mozilla Foundation, and
* Opera Software ASA. You are granted a license to use, reproduce
* and create derivative works of this document.
*/
-[Func="nsDocument::IsWebComponentsEnabled"]
-interface HTMLContentElement : HTMLElement
-{
- attribute DOMString select;
- NodeList getDistributedNodes();
+[Func="nsDocument::IsWebComponentsEnabled", Exposed=Window, HTMLConstructor]
+interface HTMLSlotElement : HTMLElement {
+ [CEReactions, SetterThrows] attribute DOMString name;
+ sequence<Node> assignedNodes(optional AssignedNodesOptions options);
+ sequence<Element> assignedElements(optional AssignedNodesOptions options);
};
+dictionary AssignedNodesOptions {
+ boolean flatten = false;
+}; \ No newline at end of file
diff --git a/dom/webidl/HTMLSourceElement.webidl b/dom/webidl/HTMLSourceElement.webidl
index 10b8e6fd5..55f25e469 100644
--- a/dom/webidl/HTMLSourceElement.webidl
+++ b/dom/webidl/HTMLSourceElement.webidl
@@ -11,18 +11,19 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLSourceElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString src;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString type;
};
partial interface HTMLSourceElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString srcset;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString sizes;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString media;
};
diff --git a/dom/webidl/HTMLSpanElement.webidl b/dom/webidl/HTMLSpanElement.webidl
index 43a2d97f2..6f65cdfb3 100644
--- a/dom/webidl/HTMLSpanElement.webidl
+++ b/dom/webidl/HTMLSpanElement.webidl
@@ -12,4 +12,5 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-span-element
+[HTMLConstructor]
interface HTMLSpanElement : HTMLElement {};
diff --git a/dom/webidl/HTMLStyleElement.webidl b/dom/webidl/HTMLStyleElement.webidl
index 7ed01a8f1..3cacbf62f 100644
--- a/dom/webidl/HTMLStyleElement.webidl
+++ b/dom/webidl/HTMLStyleElement.webidl
@@ -8,12 +8,13 @@
* http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
*/
+[HTMLConstructor]
interface HTMLStyleElement : HTMLElement {
[Pure]
attribute boolean disabled;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString media;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString type;
[SetterThrows, Pure]
attribute boolean scoped;
diff --git a/dom/webidl/HTMLTableCaptionElement.webidl b/dom/webidl/HTMLTableCaptionElement.webidl
index 688b9f925..48c9d354a 100644
--- a/dom/webidl/HTMLTableCaptionElement.webidl
+++ b/dom/webidl/HTMLTableCaptionElement.webidl
@@ -11,9 +11,10 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLTableCaptionElement : HTMLElement {};
partial interface HTMLTableCaptionElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
};
diff --git a/dom/webidl/HTMLTableCellElement.webidl b/dom/webidl/HTMLTableCellElement.webidl
index e970a5040..aff94914f 100644
--- a/dom/webidl/HTMLTableCellElement.webidl
+++ b/dom/webidl/HTMLTableCellElement.webidl
@@ -11,41 +11,43 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLTableCellElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long colSpan;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long rowSpan;
//[PutForwards=value] readonly attribute DOMTokenList headers;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString headers;
readonly attribute long cellIndex;
// Mozilla-specific extensions
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString abbr;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString scope;
};
partial interface HTMLTableCellElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString axis;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString height;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString width;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString ch;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString chOff;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean noWrap;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString vAlign;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString bgColor;
};
diff --git a/dom/webidl/HTMLTableColElement.webidl b/dom/webidl/HTMLTableColElement.webidl
index c927541a3..02be4590a 100644
--- a/dom/webidl/HTMLTableColElement.webidl
+++ b/dom/webidl/HTMLTableColElement.webidl
@@ -11,20 +11,21 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLTableColElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long span;
};
partial interface HTMLTableColElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString ch;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString chOff;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString vAlign;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString width;
};
diff --git a/dom/webidl/HTMLTableElement.webidl b/dom/webidl/HTMLTableElement.webidl
index a06f590e0..f81e00041 100644
--- a/dom/webidl/HTMLTableElement.webidl
+++ b/dom/webidl/HTMLTableElement.webidl
@@ -11,45 +11,52 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLTableElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute HTMLTableCaptionElement? caption;
HTMLElement createCaption();
+ [CEReactions]
void deleteCaption();
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute HTMLTableSectionElement? tHead;
HTMLElement createTHead();
+ [CEReactions]
void deleteTHead();
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute HTMLTableSectionElement? tFoot;
HTMLElement createTFoot();
+ [CEReactions]
void deleteTFoot();
readonly attribute HTMLCollection tBodies;
HTMLElement createTBody();
readonly attribute HTMLCollection rows;
[Throws]
HTMLElement insertRow(optional long index = -1);
- [Throws]
+ [CEReactions, Throws]
void deleteRow(long index);
// attribute boolean sortable;
//void stopSorting();
};
partial interface HTMLTableElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString border;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString frame;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString rules;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString summary;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString width;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString cellPadding;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString cellSpacing;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString bgColor;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString cellPadding;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString cellSpacing;
};
diff --git a/dom/webidl/HTMLTableRowElement.webidl b/dom/webidl/HTMLTableRowElement.webidl
index 2a356a20e..153d271f1 100644
--- a/dom/webidl/HTMLTableRowElement.webidl
+++ b/dom/webidl/HTMLTableRowElement.webidl
@@ -11,25 +11,27 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLTableRowElement : HTMLElement {
readonly attribute long rowIndex;
readonly attribute long sectionRowIndex;
readonly attribute HTMLCollection cells;
- [Throws]
+ [CEReactions, Throws]
HTMLElement insertCell(optional long index = -1);
[Throws]
void deleteCell(long index);
};
partial interface HTMLTableRowElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString ch;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString chOff;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString vAlign;
- [TreatNullAs=EmptyString, SetterThrows] attribute DOMString bgColor;
+ [CEReactions, TreatNullAs=EmptyString, SetterThrows]
+ attribute DOMString bgColor;
};
diff --git a/dom/webidl/HTMLTableSectionElement.webidl b/dom/webidl/HTMLTableSectionElement.webidl
index 310d0ece6..a71682fc1 100644
--- a/dom/webidl/HTMLTableSectionElement.webidl
+++ b/dom/webidl/HTMLTableSectionElement.webidl
@@ -11,21 +11,22 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLTableSectionElement : HTMLElement {
readonly attribute HTMLCollection rows;
[Throws]
HTMLElement insertRow(optional long index = -1);
- [Throws]
+ [CEReactions, Throws]
void deleteRow(long index);
};
partial interface HTMLTableSectionElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString align;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString ch;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString chOff;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString vAlign;
};
diff --git a/dom/webidl/HTMLTemplateElement.webidl b/dom/webidl/HTMLTemplateElement.webidl
index c518995f6..f77eeaa42 100644
--- a/dom/webidl/HTMLTemplateElement.webidl
+++ b/dom/webidl/HTMLTemplateElement.webidl
@@ -9,6 +9,7 @@
* liability, trademark and document use rules apply.
*/
+[HTMLConstructor]
interface HTMLTemplateElement : HTMLElement {
readonly attribute DocumentFragment content;
};
diff --git a/dom/webidl/HTMLTextAreaElement.webidl b/dom/webidl/HTMLTextAreaElement.webidl
index 4df687a0b..7a181bf39 100644
--- a/dom/webidl/HTMLTextAreaElement.webidl
+++ b/dom/webidl/HTMLTextAreaElement.webidl
@@ -14,40 +14,41 @@
interface nsIEditor;
interface MozControllers;
+[HTMLConstructor]
interface HTMLTextAreaElement : HTMLElement {
// attribute DOMString autocomplete;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean autofocus;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute unsigned long cols;
// attribute DOMString dirName;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean disabled;
[Pure]
readonly attribute HTMLFormElement? form;
// attribute DOMString inputMode;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute long maxLength;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute long minLength;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString name;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString placeholder;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean readOnly;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean required;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute unsigned long rows;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString wrap;
[Constant]
readonly attribute DOMString type;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString defaultValue;
- [TreatNullAs=EmptyString] attribute DOMString value;
+ [CEReactions, TreatNullAs=EmptyString] attribute DOMString value;
readonly attribute unsigned long textLength;
readonly attribute boolean willValidate;
diff --git a/dom/webidl/HTMLTimeElement.webidl b/dom/webidl/HTMLTimeElement.webidl
index 517ca9981..35c06fef3 100644
--- a/dom/webidl/HTMLTimeElement.webidl
+++ b/dom/webidl/HTMLTimeElement.webidl
@@ -7,7 +7,8 @@
* http://www.whatwg.org/specs/web-apps/current-work/multipage/text-level-semantics.html#the-time-element
*/
+[HTMLConstructor]
interface HTMLTimeElement : HTMLElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString dateTime;
};
diff --git a/dom/webidl/HTMLTitleElement.webidl b/dom/webidl/HTMLTitleElement.webidl
index e6c8f2c61..bbce70bb2 100644
--- a/dom/webidl/HTMLTitleElement.webidl
+++ b/dom/webidl/HTMLTitleElement.webidl
@@ -7,7 +7,8 @@
* http://www.whatwg.org/specs/web-apps/current-work/#the-title-element
*/
+[HTMLConstructor]
interface HTMLTitleElement : HTMLElement {
- [Throws]
+ [CEReactions, Throws]
attribute DOMString text;
};
diff --git a/dom/webidl/HTMLTrackElement.webidl b/dom/webidl/HTMLTrackElement.webidl
index dd88e9beb..cbb70db2a 100644
--- a/dom/webidl/HTMLTrackElement.webidl
+++ b/dom/webidl/HTMLTrackElement.webidl
@@ -7,16 +7,17 @@
* http://www.whatwg.org/specs/web-apps/current-work/#the-track-element
*/
+[HTMLConstructor]
interface HTMLTrackElement : HTMLElement {
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString kind;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString src;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString srclang;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString label;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute boolean default;
const unsigned short NONE = 0;
diff --git a/dom/webidl/HTMLUListElement.webidl b/dom/webidl/HTMLUListElement.webidl
index 0528198c9..725437494 100644
--- a/dom/webidl/HTMLUListElement.webidl
+++ b/dom/webidl/HTMLUListElement.webidl
@@ -13,13 +13,14 @@
*/
// http://www.whatwg.org/specs/web-apps/current-work/#the-ul-element
+[HTMLConstructor]
interface HTMLUListElement : HTMLElement {
};
// http://www.whatwg.org/specs/web-apps/current-work/#other-elements,-attributes-and-apis
partial interface HTMLUListElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute boolean compact;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString type;
};
diff --git a/dom/webidl/HTMLVideoElement.webidl b/dom/webidl/HTMLVideoElement.webidl
index af28d5418..5ae4c016f 100644
--- a/dom/webidl/HTMLVideoElement.webidl
+++ b/dom/webidl/HTMLVideoElement.webidl
@@ -11,14 +11,15 @@
* and create derivative works of this document.
*/
+[HTMLConstructor]
interface HTMLVideoElement : HTMLMediaElement {
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long width;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute unsigned long height;
readonly attribute unsigned long videoWidth;
readonly attribute unsigned long videoHeight;
- [SetterThrows]
+ [CEReactions, SetterThrows]
attribute DOMString poster;
};
diff --git a/dom/webidl/Headers.webidl b/dom/webidl/Headers.webidl
index eef552a7f..f99741501 100644
--- a/dom/webidl/Headers.webidl
+++ b/dom/webidl/Headers.webidl
@@ -1,5 +1,4 @@
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/webidl/IDBFileRequest.webidl b/dom/webidl/IDBFileRequest.webidl
index fc3a8c5b6..c48963068 100644
--- a/dom/webidl/IDBFileRequest.webidl
+++ b/dom/webidl/IDBFileRequest.webidl
@@ -1,5 +1,4 @@
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/webidl/MozWakeLock.webidl b/dom/webidl/MozWakeLock.webidl
index d5041ea04..f08ee30fe 100644
--- a/dom/webidl/MozWakeLock.webidl
+++ b/dom/webidl/MozWakeLock.webidl
@@ -1,5 +1,4 @@
/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/webidl/NamedNodeMap.webidl b/dom/webidl/NamedNodeMap.webidl
index 41fbfcbb4..88e2ff51f 100644
--- a/dom/webidl/NamedNodeMap.webidl
+++ b/dom/webidl/NamedNodeMap.webidl
@@ -6,17 +6,17 @@
[LegacyUnenumerableNamedProperties]
interface NamedNodeMap {
getter Attr? getNamedItem(DOMString name);
- [Throws, BinaryName="setNamedItemNS"]
+ [CEReactions, Throws, BinaryName="setNamedItemNS"]
Attr? setNamedItem(Attr arg);
- [Throws]
+ [CEReactions, Throws]
Attr removeNamedItem(DOMString name);
getter Attr? item(unsigned long index);
readonly attribute unsigned long length;
Attr? getNamedItemNS(DOMString? namespaceURI, DOMString localName);
- [Throws]
+ [CEReactions, Throws]
Attr? setNamedItemNS(Attr arg);
- [Throws]
+ [CEReactions, Throws]
Attr removeNamedItemNS(DOMString? namespaceURI, DOMString localName);
};
diff --git a/dom/webidl/Node.webidl b/dom/webidl/Node.webidl
index 128efcb50..bf2c1c4de 100644
--- a/dom/webidl/Node.webidl
+++ b/dom/webidl/Node.webidl
@@ -57,21 +57,21 @@ interface Node : EventTarget {
[Pure]
readonly attribute Node? nextSibling;
- [SetterThrows, Pure]
+ [CEReactions, SetterThrows, Pure]
attribute DOMString? nodeValue;
- [Throws, Pure]
+ [CEReactions, Throws, Pure]
attribute DOMString? textContent;
- [Throws]
+ [CEReactions, Throws]
Node insertBefore(Node node, Node? child);
- [Throws]
+ [CEReactions, Throws]
Node appendChild(Node node);
- [Throws]
+ [CEReactions, Throws]
Node replaceChild(Node node, Node child);
- [Throws]
+ [CEReactions, Throws]
Node removeChild(Node child);
void normalize();
- [Throws]
+ [CEReactions, Throws]
Node cloneNode(optional boolean deep = false);
[Pure]
boolean isSameNode(Node? node);
diff --git a/dom/webidl/ParentNode.webidl b/dom/webidl/ParentNode.webidl
index 5834b9be3..aa6ca5db2 100644
--- a/dom/webidl/ParentNode.webidl
+++ b/dom/webidl/ParentNode.webidl
@@ -18,8 +18,8 @@ interface ParentNode {
[Pure]
readonly attribute unsigned long childElementCount;
- [Throws, Unscopable]
+ [CEReactions, Throws, Unscopable]
void prepend((Node or DOMString)... nodes);
- [Throws, Unscopable]
+ [CEReactions, Throws, Unscopable]
void append((Node or DOMString)... nodes);
};
diff --git a/dom/webidl/Range.webidl b/dom/webidl/Range.webidl
index ac8e1ebf0..6b8be970b 100644
--- a/dom/webidl/Range.webidl
+++ b/dom/webidl/Range.webidl
@@ -50,15 +50,15 @@ interface Range {
const unsigned short END_TO_START = 3;
[Throws]
short compareBoundaryPoints(unsigned short how, Range sourceRange);
- [Throws]
+ [CEReactions, Throws]
void deleteContents();
- [Throws]
+ [CEReactions, Throws]
DocumentFragment extractContents();
- [Throws]
+ [CEReactions, Throws]
DocumentFragment cloneContents();
- [Throws]
+ [CEReactions, Throws]
void insertNode(Node node);
- [Throws]
+ [CEReactions, Throws]
void surroundContents(Node newParent);
Range cloneRange();
@@ -77,7 +77,7 @@ interface Range {
// http://domparsing.spec.whatwg.org/#dom-range-createcontextualfragment
partial interface Range {
- [Throws]
+ [CEReactions, Throws]
DocumentFragment createContextualFragment(DOMString fragment);
};
diff --git a/dom/webidl/ShadowRoot.webidl b/dom/webidl/ShadowRoot.webidl
index a6c6de254..83acd4161 100644
--- a/dom/webidl/ShadowRoot.webidl
+++ b/dom/webidl/ShadowRoot.webidl
@@ -10,18 +10,27 @@
* liability, trademark and document use rules apply.
*/
+// https://dom.spec.whatwg.org/#enumdef-shadowrootmode
+enum ShadowRootMode {
+ "open",
+ "closed"
+};
+
+// https://dom.spec.whatwg.org/#shadowroot
[Func="nsDocument::IsWebComponentsEnabled"]
interface ShadowRoot : DocumentFragment
{
+ // Shadow DOM v1
+ readonly attribute ShadowRootMode mode;
+ readonly attribute Element host;
+
+ // [deprecated] Shadow DOM v0
Element? getElementById(DOMString elementId);
HTMLCollection getElementsByTagName(DOMString localName);
HTMLCollection getElementsByTagNameNS(DOMString? namespace, DOMString localName);
HTMLCollection getElementsByClassName(DOMString classNames);
- [SetterThrows,TreatNullAs=EmptyString]
+ [CEReactions, SetterThrows, TreatNullAs=EmptyString]
attribute DOMString innerHTML;
- readonly attribute Element host;
- readonly attribute ShadowRoot? olderShadowRoot;
attribute boolean applyAuthorStyles;
- readonly attribute StyleSheetList styleSheets;
};
diff --git a/dom/webidl/Text.webidl b/dom/webidl/Text.webidl
index dcd25cec3..fb7b5d685 100644
--- a/dom/webidl/Text.webidl
+++ b/dom/webidl/Text.webidl
@@ -18,4 +18,9 @@ interface Text : CharacterData {
readonly attribute DOMString wholeText;
};
+partial interface Text {
+ [BinaryName="assignedSlotByMode", Func="nsTextNode::IsWebComponentsEnabled"]
+ readonly attribute HTMLSlotElement? assignedSlot;
+};
+
Text implements GeometryUtils;
diff --git a/dom/webidl/WebComponents.webidl b/dom/webidl/WebComponents.webidl
index 3dfb960bc..9c5e53131 100644
--- a/dom/webidl/WebComponents.webidl
+++ b/dom/webidl/WebComponents.webidl
@@ -10,19 +10,18 @@
* liability, trademark and document use rules apply.
*/
-callback LifecycleCreatedCallback = void();
-callback LifecycleAttachedCallback = void();
-callback LifecycleDetachedCallback = void();
-callback LifecycleAttributeChangedCallback = void(DOMString attrName, DOMString? oldValue, DOMString? newValue);
+callback LifecycleConnectedCallback = void();
+callback LifecycleDisconnectedCallback = void();
+callback LifecycleAdoptedCallback = void(Document? oldDocument,
+ Document? newDocment);
+callback LifecycleAttributeChangedCallback = void(DOMString attrName,
+ DOMString? oldValue,
+ DOMString? newValue,
+ DOMString? namespaceURI);
dictionary LifecycleCallbacks {
- LifecycleCreatedCallback? createdCallback;
- LifecycleAttachedCallback? attachedCallback;
- LifecycleDetachedCallback? detachedCallback;
+ LifecycleConnectedCallback? connectedCallback;
+ LifecycleDisconnectedCallback? disconnectedCallback;
+ LifecycleAdoptedCallback? adoptedCallback;
LifecycleAttributeChangedCallback? attributeChangedCallback;
};
-
-dictionary ElementRegistrationOptions {
- object? prototype = null;
- DOMString? extends = null;
-};
diff --git a/dom/webidl/XSLTProcessor.webidl b/dom/webidl/XSLTProcessor.webidl
index ce9ed846f..276e1b3fa 100644
--- a/dom/webidl/XSLTProcessor.webidl
+++ b/dom/webidl/XSLTProcessor.webidl
@@ -30,7 +30,7 @@ interface XSLTProcessor {
* @param output This document is used to generate the output
* @return DocumentFragment The result of the transformation
*/
- [Throws]
+ [CEReactions, Throws]
DocumentFragment transformToFragment(Node source,
Document output);
@@ -41,7 +41,7 @@ interface XSLTProcessor {
* @param source The node to be transformed
* @return Document The result of the transformation
*/
- [Throws]
+ [CEReactions, Throws]
Document transformToDocument(Node source);
/**
diff --git a/dom/webidl/moz.build b/dom/webidl/moz.build
index a4214caea..dfb7e6b7b 100644
--- a/dom/webidl/moz.build
+++ b/dom/webidl/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
@@ -112,6 +111,7 @@ WEBIDL_FILES = [
'Directory.webidl',
'Document.webidl',
'DocumentFragment.webidl',
+ 'DocumentOrShadowRoot.webidl',
'DocumentTimeline.webidl',
'DocumentType.webidl',
'DOMCursor.webidl',
@@ -179,7 +179,6 @@ WEBIDL_FILES = [
'HTMLButtonElement.webidl',
'HTMLCanvasElement.webidl',
'HTMLCollection.webidl',
- 'HTMLContentElement.webidl',
'HTMLDataElement.webidl',
'HTMLDataListElement.webidl',
'HTMLDetailsElement.webidl',
@@ -228,7 +227,7 @@ WEBIDL_FILES = [
'HTMLQuoteElement.webidl',
'HTMLScriptElement.webidl',
'HTMLSelectElement.webidl',
- 'HTMLShadowElement.webidl',
+ 'HTMLSlotElement.webidl',
'HTMLSourceElement.webidl',
'HTMLSpanElement.webidl',
'HTMLStyleElement.webidl',
@@ -651,10 +650,10 @@ WEBIDL_FILES += [
# We only expose our prefable test interfaces in debug builds, just to be on
# the safe side.
if CONFIG['MOZ_DEBUG']:
- WEBIDL_FILES += ['TestFunctions.webidl',
- 'TestInterfaceJS.webidl',
- 'TestInterfaceJSDictionaries.webidl',
- 'TestInterfaceJSMaplikeSetlikeIterable.webidl']
+ WEBIDL_FILES += [
+ 'TestInterfaceJS.webidl',
+ 'TestInterfaceJSDictionaries.webidl',
+ ]
if CONFIG['MOZ_SECUREELEMENT']:
WEBIDL_FILES += [
diff --git a/dom/workers/ChromeWorkerScope.cpp b/dom/workers/ChromeWorkerScope.cpp
index 68ebebfc3..a7a0658ab 100644
--- a/dom/workers/ChromeWorkerScope.cpp
+++ b/dom/workers/ChromeWorkerScope.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ChromeWorkerScope.h b/dom/workers/ChromeWorkerScope.h
index 306397b66..7893196d2 100644
--- a/dom/workers/ChromeWorkerScope.h
+++ b/dom/workers/ChromeWorkerScope.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/FileReaderSync.cpp b/dom/workers/FileReaderSync.cpp
index 18efcb194..21df781a9 100644
--- a/dom/workers/FileReaderSync.cpp
+++ b/dom/workers/FileReaderSync.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/FileReaderSync.h b/dom/workers/FileReaderSync.h
index db8f9d574..27bdcf840 100644
--- a/dom/workers/FileReaderSync.h
+++ b/dom/workers/FileReaderSync.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/Principal.cpp b/dom/workers/Principal.cpp
index 8fcd9ed10..d2afc0cef 100644
--- a/dom/workers/Principal.cpp
+++ b/dom/workers/Principal.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/Principal.h b/dom/workers/Principal.h
index 5bfe19443..b4937a46d 100644
--- a/dom/workers/Principal.h
+++ b/dom/workers/Principal.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/Queue.h b/dom/workers/Queue.h
index c7a99158b..aa673f587 100644
--- a/dom/workers/Queue.h
+++ b/dom/workers/Queue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/RegisterBindings.cpp b/dom/workers/RegisterBindings.cpp
index b6c1e9cfd..f6f3dd98b 100644
--- a/dom/workers/RegisterBindings.cpp
+++ b/dom/workers/RegisterBindings.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/RuntimeService.cpp b/dom/workers/RuntimeService.cpp
index 19c4ded2a..239207efc 100644
--- a/dom/workers/RuntimeService.cpp
+++ b/dom/workers/RuntimeService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/RuntimeService.h b/dom/workers/RuntimeService.h
index 2ab8cbabe..02a1b8bf8 100644
--- a/dom/workers/RuntimeService.h
+++ b/dom/workers/RuntimeService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ScriptLoader.cpp b/dom/workers/ScriptLoader.cpp
index 8f2023609..35d5ba627 100644
--- a/dom/workers/ScriptLoader.cpp
+++ b/dom/workers/ScriptLoader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ScriptLoader.h b/dom/workers/ScriptLoader.h
index c92c369ad..5ed32dce2 100644
--- a/dom/workers/ScriptLoader.h
+++ b/dom/workers/ScriptLoader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorker.cpp b/dom/workers/ServiceWorker.cpp
index 6a6995d59..16dd28b8a 100644
--- a/dom/workers/ServiceWorker.cpp
+++ b/dom/workers/ServiceWorker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorker.h b/dom/workers/ServiceWorker.h
index e49f334e6..3a3cce826 100644
--- a/dom/workers/ServiceWorker.h
+++ b/dom/workers/ServiceWorker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerClient.cpp b/dom/workers/ServiceWorkerClient.cpp
index 6ed3a6ea4..1f845a947 100644
--- a/dom/workers/ServiceWorkerClient.cpp
+++ b/dom/workers/ServiceWorkerClient.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/workers/ServiceWorkerClient.h b/dom/workers/ServiceWorkerClient.h
index 36a9cc168..46bcdbc4c 100644
--- a/dom/workers/ServiceWorkerClient.h
+++ b/dom/workers/ServiceWorkerClient.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/workers/ServiceWorkerClients.cpp b/dom/workers/ServiceWorkerClients.cpp
index 38f49e355..f7f35919c 100644
--- a/dom/workers/ServiceWorkerClients.cpp
+++ b/dom/workers/ServiceWorkerClients.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerClients.h b/dom/workers/ServiceWorkerClients.h
index 3c507516f..298e5a276 100644
--- a/dom/workers/ServiceWorkerClients.h
+++ b/dom/workers/ServiceWorkerClients.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/workers/ServiceWorkerCommon.h b/dom/workers/ServiceWorkerCommon.h
index d7e2ec21b..24c2b747f 100644
--- a/dom/workers/ServiceWorkerCommon.h
+++ b/dom/workers/ServiceWorkerCommon.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerContainer.cpp b/dom/workers/ServiceWorkerContainer.cpp
index 274d72d50..114484e2e 100644
--- a/dom/workers/ServiceWorkerContainer.cpp
+++ b/dom/workers/ServiceWorkerContainer.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerContainer.h b/dom/workers/ServiceWorkerContainer.h
index efd70a601..5d64d8b22 100644
--- a/dom/workers/ServiceWorkerContainer.h
+++ b/dom/workers/ServiceWorkerContainer.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerEvents.cpp b/dom/workers/ServiceWorkerEvents.cpp
index a8b69bc48..ce2e5e7aa 100644
--- a/dom/workers/ServiceWorkerEvents.cpp
+++ b/dom/workers/ServiceWorkerEvents.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerEvents.h b/dom/workers/ServiceWorkerEvents.h
index 25702f8f3..875a4f0ce 100644
--- a/dom/workers/ServiceWorkerEvents.h
+++ b/dom/workers/ServiceWorkerEvents.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerInfo.cpp b/dom/workers/ServiceWorkerInfo.cpp
index 04fba7f8e..719d06932 100644
--- a/dom/workers/ServiceWorkerInfo.cpp
+++ b/dom/workers/ServiceWorkerInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerInfo.h b/dom/workers/ServiceWorkerInfo.h
index 8c3220c1a..16230082c 100644
--- a/dom/workers/ServiceWorkerInfo.h
+++ b/dom/workers/ServiceWorkerInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerJob.cpp b/dom/workers/ServiceWorkerJob.cpp
index d80dddfb6..f3a2e71a8 100644
--- a/dom/workers/ServiceWorkerJob.cpp
+++ b/dom/workers/ServiceWorkerJob.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerJob.h b/dom/workers/ServiceWorkerJob.h
index 56802ed97..170bd2087 100644
--- a/dom/workers/ServiceWorkerJob.h
+++ b/dom/workers/ServiceWorkerJob.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerJobQueue.cpp b/dom/workers/ServiceWorkerJobQueue.cpp
index 15a798a4d..cf2cebf39 100644
--- a/dom/workers/ServiceWorkerJobQueue.cpp
+++ b/dom/workers/ServiceWorkerJobQueue.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerJobQueue.h b/dom/workers/ServiceWorkerJobQueue.h
index 2af8682b3..7133080d6 100644
--- a/dom/workers/ServiceWorkerJobQueue.h
+++ b/dom/workers/ServiceWorkerJobQueue.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerManager.cpp b/dom/workers/ServiceWorkerManager.cpp
index 306ef6b23..6686e212c 100644
--- a/dom/workers/ServiceWorkerManager.cpp
+++ b/dom/workers/ServiceWorkerManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerManager.h b/dom/workers/ServiceWorkerManager.h
index f99bc4248..bbf185ff8 100644
--- a/dom/workers/ServiceWorkerManager.h
+++ b/dom/workers/ServiceWorkerManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerManagerChild.cpp b/dom/workers/ServiceWorkerManagerChild.cpp
index 47a39d1c2..d4926b872 100644
--- a/dom/workers/ServiceWorkerManagerChild.cpp
+++ b/dom/workers/ServiceWorkerManagerChild.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerManagerChild.h b/dom/workers/ServiceWorkerManagerChild.h
index d32f3ed10..e6a81793d 100644
--- a/dom/workers/ServiceWorkerManagerChild.h
+++ b/dom/workers/ServiceWorkerManagerChild.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerManagerParent.cpp b/dom/workers/ServiceWorkerManagerParent.cpp
index bd9afad7a..1a64c8f7b 100644
--- a/dom/workers/ServiceWorkerManagerParent.cpp
+++ b/dom/workers/ServiceWorkerManagerParent.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerManagerParent.h b/dom/workers/ServiceWorkerManagerParent.h
index 83a0a97aa..755c23dd7 100644
--- a/dom/workers/ServiceWorkerManagerParent.h
+++ b/dom/workers/ServiceWorkerManagerParent.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerManagerService.cpp b/dom/workers/ServiceWorkerManagerService.cpp
index 983bd77db..794229b74 100644
--- a/dom/workers/ServiceWorkerManagerService.cpp
+++ b/dom/workers/ServiceWorkerManagerService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerManagerService.h b/dom/workers/ServiceWorkerManagerService.h
index 3f3f760e4..81f9526b2 100644
--- a/dom/workers/ServiceWorkerManagerService.h
+++ b/dom/workers/ServiceWorkerManagerService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerPrivate.cpp b/dom/workers/ServiceWorkerPrivate.cpp
index 571ceca37..2f5b8f750 100644
--- a/dom/workers/ServiceWorkerPrivate.cpp
+++ b/dom/workers/ServiceWorkerPrivate.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerPrivate.h b/dom/workers/ServiceWorkerPrivate.h
index 911b07a11..8ce021c8c 100644
--- a/dom/workers/ServiceWorkerPrivate.h
+++ b/dom/workers/ServiceWorkerPrivate.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegisterJob.cpp b/dom/workers/ServiceWorkerRegisterJob.cpp
index 595c029e1..30f0772ea 100644
--- a/dom/workers/ServiceWorkerRegisterJob.cpp
+++ b/dom/workers/ServiceWorkerRegisterJob.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegisterJob.h b/dom/workers/ServiceWorkerRegisterJob.h
index a459e25b6..5c7698228 100644
--- a/dom/workers/ServiceWorkerRegisterJob.h
+++ b/dom/workers/ServiceWorkerRegisterJob.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegistrar.cpp b/dom/workers/ServiceWorkerRegistrar.cpp
index 7df129c2b..b795a0083 100644
--- a/dom/workers/ServiceWorkerRegistrar.cpp
+++ b/dom/workers/ServiceWorkerRegistrar.cpp
@@ -1,6 +1,5 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegistrar.h b/dom/workers/ServiceWorkerRegistrar.h
index 0c476ad9b..6868599f2 100644
--- a/dom/workers/ServiceWorkerRegistrar.h
+++ b/dom/workers/ServiceWorkerRegistrar.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegistrarTypes.ipdlh b/dom/workers/ServiceWorkerRegistrarTypes.ipdlh
index 7754a19e6..9f456f5fd 100644
--- a/dom/workers/ServiceWorkerRegistrarTypes.ipdlh
+++ b/dom/workers/ServiceWorkerRegistrarTypes.ipdlh
@@ -1,5 +1,4 @@
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
-/* vim: set sw=4 ts=8 et tw=80 ft=cpp : */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegistration.cpp b/dom/workers/ServiceWorkerRegistration.cpp
index b3cda2c10..3d91e400a 100644
--- a/dom/workers/ServiceWorkerRegistration.cpp
+++ b/dom/workers/ServiceWorkerRegistration.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegistration.h b/dom/workers/ServiceWorkerRegistration.h
index 5b0847e7b..c3225d905 100644
--- a/dom/workers/ServiceWorkerRegistration.h
+++ b/dom/workers/ServiceWorkerRegistration.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegistrationInfo.cpp b/dom/workers/ServiceWorkerRegistrationInfo.cpp
index 28d9fa9de..1e8d81811 100644
--- a/dom/workers/ServiceWorkerRegistrationInfo.cpp
+++ b/dom/workers/ServiceWorkerRegistrationInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerRegistrationInfo.h b/dom/workers/ServiceWorkerRegistrationInfo.h
index a7175ef58..54eda6266 100644
--- a/dom/workers/ServiceWorkerRegistrationInfo.h
+++ b/dom/workers/ServiceWorkerRegistrationInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerScriptCache.cpp b/dom/workers/ServiceWorkerScriptCache.cpp
index 3db58e694..05be250da 100644
--- a/dom/workers/ServiceWorkerScriptCache.cpp
+++ b/dom/workers/ServiceWorkerScriptCache.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerScriptCache.h b/dom/workers/ServiceWorkerScriptCache.h
index 113ed0983..33aeaecc0 100644
--- a/dom/workers/ServiceWorkerScriptCache.h
+++ b/dom/workers/ServiceWorkerScriptCache.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerUnregisterJob.cpp b/dom/workers/ServiceWorkerUnregisterJob.cpp
index 9fd377700..b30cf4d1a 100644
--- a/dom/workers/ServiceWorkerUnregisterJob.cpp
+++ b/dom/workers/ServiceWorkerUnregisterJob.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerUnregisterJob.h b/dom/workers/ServiceWorkerUnregisterJob.h
index 976f15a2c..9f37c4cde 100644
--- a/dom/workers/ServiceWorkerUnregisterJob.h
+++ b/dom/workers/ServiceWorkerUnregisterJob.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerUpdateJob.cpp b/dom/workers/ServiceWorkerUpdateJob.cpp
index 38f58a3f9..023193252 100644
--- a/dom/workers/ServiceWorkerUpdateJob.cpp
+++ b/dom/workers/ServiceWorkerUpdateJob.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerUpdateJob.h b/dom/workers/ServiceWorkerUpdateJob.h
index e5bfdc81d..ca906486b 100644
--- a/dom/workers/ServiceWorkerUpdateJob.h
+++ b/dom/workers/ServiceWorkerUpdateJob.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/ServiceWorkerWindowClient.cpp b/dom/workers/ServiceWorkerWindowClient.cpp
index bf22a7b28..2602b5416 100644
--- a/dom/workers/ServiceWorkerWindowClient.cpp
+++ b/dom/workers/ServiceWorkerWindowClient.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/workers/ServiceWorkerWindowClient.h b/dom/workers/ServiceWorkerWindowClient.h
index 0e2441294..1bf4891fe 100644
--- a/dom/workers/ServiceWorkerWindowClient.h
+++ b/dom/workers/ServiceWorkerWindowClient.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/.
diff --git a/dom/workers/SharedWorker.cpp b/dom/workers/SharedWorker.cpp
index a9192e626..97df0f57f 100644
--- a/dom/workers/SharedWorker.cpp
+++ b/dom/workers/SharedWorker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -182,7 +181,7 @@ SharedWorker::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto)
}
nsresult
-SharedWorker::PreHandleEvent(EventChainPreVisitor& aVisitor)
+SharedWorker::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
AssertIsOnMainThread();
@@ -197,9 +196,9 @@ SharedWorker::PreHandleEvent(EventChainPreVisitor& aVisitor)
QueueEvent(event);
aVisitor.mCanHandle = false;
- aVisitor.mParentTarget = nullptr;
+ aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
}
- return DOMEventTargetHelper::PreHandleEvent(aVisitor);
+ return DOMEventTargetHelper::GetEventTargetParent(aVisitor);
}
diff --git a/dom/workers/SharedWorker.h b/dom/workers/SharedWorker.h
index 220436e4d..4820b4e7c 100644
--- a/dom/workers/SharedWorker.h
+++ b/dom/workers/SharedWorker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -76,7 +75,7 @@ public:
WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenProto) override;
virtual nsresult
- PreHandleEvent(EventChainPreVisitor& aVisitor) override;
+ GetEventTargetParent(EventChainPreVisitor& aVisitor) override;
WorkerPrivate*
GetWorkerPrivate() const
diff --git a/dom/workers/WorkerDebuggerManager.cpp b/dom/workers/WorkerDebuggerManager.cpp
index dfd7e5acc..ac2d997d7 100644
--- a/dom/workers/WorkerDebuggerManager.cpp
+++ b/dom/workers/WorkerDebuggerManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerDebuggerManager.h b/dom/workers/WorkerDebuggerManager.h
index 6c4c943b1..7c7790de2 100644
--- a/dom/workers/WorkerDebuggerManager.h
+++ b/dom/workers/WorkerDebuggerManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerHolder.cpp b/dom/workers/WorkerHolder.cpp
index 6383ae5a1..5a8c5c4d8 100644
--- a/dom/workers/WorkerHolder.cpp
+++ b/dom/workers/WorkerHolder.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerHolder.h b/dom/workers/WorkerHolder.h
index d0eb22f29..050c6f8e2 100644
--- a/dom/workers/WorkerHolder.h
+++ b/dom/workers/WorkerHolder.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerInlines.h b/dom/workers/WorkerInlines.h
index 4fd7fd9a4..2031561d6 100644
--- a/dom/workers/WorkerInlines.h
+++ b/dom/workers/WorkerInlines.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerLocation.cpp b/dom/workers/WorkerLocation.cpp
index 469bf84bf..863174f86 100644
--- a/dom/workers/WorkerLocation.cpp
+++ b/dom/workers/WorkerLocation.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerLocation.h b/dom/workers/WorkerLocation.h
index 73137efff..20125034a 100644
--- a/dom/workers/WorkerLocation.h
+++ b/dom/workers/WorkerLocation.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerNavigator.cpp b/dom/workers/WorkerNavigator.cpp
index f79896881..c4ca41469 100644
--- a/dom/workers/WorkerNavigator.cpp
+++ b/dom/workers/WorkerNavigator.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerNavigator.h b/dom/workers/WorkerNavigator.h
index 64338e46b..5617b7351 100644
--- a/dom/workers/WorkerNavigator.h
+++ b/dom/workers/WorkerNavigator.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerPrefs.h b/dom/workers/WorkerPrefs.h
index b552d8956..215b375dd 100644
--- a/dom/workers/WorkerPrefs.h
+++ b/dom/workers/WorkerPrefs.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp
index c6ef21f2c..860bf8468 100644
--- a/dom/workers/WorkerPrivate.cpp
+++ b/dom/workers/WorkerPrivate.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerPrivate.h b/dom/workers/WorkerPrivate.h
index 885abccd5..ee8444806 100644
--- a/dom/workers/WorkerPrivate.h
+++ b/dom/workers/WorkerPrivate.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerRunnable.cpp b/dom/workers/WorkerRunnable.cpp
index 8944c751c..be0171b76 100644
--- a/dom/workers/WorkerRunnable.cpp
+++ b/dom/workers/WorkerRunnable.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerRunnable.h b/dom/workers/WorkerRunnable.h
index 2c9fb3b1d..7484ba685 100644
--- a/dom/workers/WorkerRunnable.h
+++ b/dom/workers/WorkerRunnable.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerScope.cpp b/dom/workers/WorkerScope.cpp
index ace1a09fc..195df5c9e 100644
--- a/dom/workers/WorkerScope.cpp
+++ b/dom/workers/WorkerScope.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerScope.h b/dom/workers/WorkerScope.h
index 53d0a578e..43b6d633c 100644
--- a/dom/workers/WorkerScope.h
+++ b/dom/workers/WorkerScope.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerThread.cpp b/dom/workers/WorkerThread.cpp
index 7a7cb7ac3..3b34093fe 100644
--- a/dom/workers/WorkerThread.cpp
+++ b/dom/workers/WorkerThread.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/WorkerThread.h b/dom/workers/WorkerThread.h
index f1287023d..332607363 100644
--- a/dom/workers/WorkerThread.h
+++ b/dom/workers/WorkerThread.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/Workers.h b/dom/workers/Workers.h
index cd15a4d7c..b7d75b09c 100644
--- a/dom/workers/Workers.h
+++ b/dom/workers/Workers.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/moz.build b/dom/workers/moz.build
index 0ba7d9ad6..5c4093f40 100644
--- a/dom/workers/moz.build
+++ b/dom/workers/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/workers/test/extensions/bootstrap/moz.build b/dom/workers/test/extensions/bootstrap/moz.build
index aec5c249c..a19d03c0c 100644
--- a/dom/workers/test/extensions/bootstrap/moz.build
+++ b/dom/workers/test/extensions/bootstrap/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/workers/test/extensions/moz.build b/dom/workers/test/extensions/moz.build
index 51cf80fa2..17760d226 100644
--- a/dom/workers/test/extensions/moz.build
+++ b/dom/workers/test/extensions/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/workers/test/extensions/traditional/moz.build b/dom/workers/test/extensions/traditional/moz.build
index d0920420d..06fb515bc 100644
--- a/dom/workers/test/extensions/traditional/moz.build
+++ b/dom/workers/test/extensions/traditional/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/workers/test/extensions/traditional/nsIWorkerTest.idl b/dom/workers/test/extensions/traditional/nsIWorkerTest.idl
index 32a952038..81c5f91df 100644
--- a/dom/workers/test/extensions/traditional/nsIWorkerTest.idl
+++ b/dom/workers/test/extensions/traditional/nsIWorkerTest.idl
@@ -1,5 +1,4 @@
/* -*- Mode: c++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 40 -*- */
-/* vim: set ts=2 et sw=2 tw=40: */
/* 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/. */
diff --git a/dom/workers/test/gtest/TestReadWrite.cpp b/dom/workers/test/gtest/TestReadWrite.cpp
index d59888e24..d59337dc1 100644
--- a/dom/workers/test/gtest/TestReadWrite.cpp
+++ b/dom/workers/test/gtest/TestReadWrite.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/workers/test/gtest/moz.build b/dom/workers/test/gtest/moz.build
index 5f1f185a9..4b3b0ddb6 100644
--- a/dom/workers/test/gtest/moz.build
+++ b/dom/workers/test/gtest/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/worklet/Worklet.cpp b/dom/worklet/Worklet.cpp
index 1b71916ab..7a76fcd1c 100644
--- a/dom/worklet/Worklet.cpp
+++ b/dom/worklet/Worklet.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/worklet/Worklet.h b/dom/worklet/Worklet.h
index 228d2a5ae..cb6946f5c 100644
--- a/dom/worklet/Worklet.h
+++ b/dom/worklet/Worklet.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/worklet/WorkletGlobalScope.cpp b/dom/worklet/WorkletGlobalScope.cpp
index 8c05a0abe..be3e975ac 100644
--- a/dom/worklet/WorkletGlobalScope.cpp
+++ b/dom/worklet/WorkletGlobalScope.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -8,6 +7,7 @@
#include "mozilla/dom/WorkletGlobalScopeBinding.h"
#include "mozilla/dom/Console.h"
#include "nsContentUtils.h"
+#include "nsWrapperCacheInlines.h"
namespace mozilla {
namespace dom {
diff --git a/dom/worklet/WorkletGlobalScope.h b/dom/worklet/WorkletGlobalScope.h
index 7cf44d2e7..d9833795a 100644
--- a/dom/worklet/WorkletGlobalScope.h
+++ b/dom/worklet/WorkletGlobalScope.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/worklet/moz.build b/dom/worklet/moz.build
index 7903dcf88..de29159fd 100644
--- a/dom/worklet/moz.build
+++ b/dom/worklet/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xbl/XBLChildrenElement.cpp b/dom/xbl/XBLChildrenElement.cpp
index e4058a789..fbb29ee1c 100644
--- a/dom/xbl/XBLChildrenElement.cpp
+++ b/dom/xbl/XBLChildrenElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -7,6 +6,7 @@
#include "mozilla/dom/XBLChildrenElement.h"
#include "nsCharSeparatedTokenizer.h"
#include "mozilla/dom/NodeListBinding.h"
+#include "nsAttrValueOrString.h"
namespace mozilla {
namespace dom {
@@ -27,34 +27,24 @@ NS_INTERFACE_MAP_END_INHERITING(Element)
NS_IMPL_ELEMENT_CLONE(XBLChildrenElement)
nsresult
-XBLChildrenElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify)
+XBLChildrenElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify)
{
- if (aAttribute == nsGkAtoms::includes &&
- aNameSpaceID == kNameSpaceID_None) {
- mIncludes.Clear();
- }
-
- return Element::UnsetAttr(aNameSpaceID, aAttribute, aNotify);
-}
-
-bool
-XBLChildrenElement::ParseAttribute(int32_t aNamespaceID,
- nsIAtom* aAttribute,
- const nsAString& aValue,
- nsAttrValue& aResult)
-{
- if (aAttribute == nsGkAtoms::includes &&
- aNamespaceID == kNameSpaceID_None) {
- mIncludes.Clear();
- nsCharSeparatedTokenizer tok(aValue, '|',
- nsCharSeparatedTokenizer::SEPARATOR_OPTIONAL);
- while (tok.hasMoreTokens()) {
- mIncludes.AppendElement(NS_Atomize(tok.nextToken()));
+ if (aNamespaceID == kNameSpaceID_None) {
+ if (aName == nsGkAtoms::includes) {
+ mIncludes.Clear();
+ if (aValue) {
+ nsCharSeparatedTokenizer tok(aValue->String(), '|',
+ nsCharSeparatedTokenizer::SEPARATOR_OPTIONAL);
+ while (tok.hasMoreTokens()) {
+ mIncludes.AppendElement(NS_Atomize(tok.nextToken()));
+ }
+ }
}
}
- return false;
+ return nsXMLElement::BeforeSetAttr(aNamespaceID, aName, aValue, aNotify);
}
} // namespace dom
diff --git a/dom/xbl/XBLChildrenElement.h b/dom/xbl/XBLChildrenElement.h
index 4714da4a8..3f60224ee 100644
--- a/dom/xbl/XBLChildrenElement.h
+++ b/dom/xbl/XBLChildrenElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -37,14 +36,6 @@ public:
virtual nsIDOMNode* AsDOMNode() override { return this; }
- // nsIContent interface methods
- virtual nsresult UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
- bool aNotify) override;
- virtual bool ParseAttribute(int32_t aNamespaceID,
- nsIAtom* aAttribute,
- const nsAString& aValue,
- nsAttrValue& aResult) override;
-
void AppendInsertedChild(nsIContent* aChild)
{
mInsertedChildren.AppendElement(aChild);
@@ -147,6 +138,10 @@ public:
protected:
~XBLChildrenElement();
+ virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
+ const nsAttrValueOrString* aValue,
+ bool aNotify) override;
+
private:
nsTArray<nsIContent*> mInsertedChildren; // WEAK
nsTArray<nsCOMPtr<nsIAtom> > mIncludes;
diff --git a/dom/xbl/builtin/android/moz.build b/dom/xbl/builtin/android/moz.build
index eb4454d28..635fa39c9 100644
--- a/dom/xbl/builtin/android/moz.build
+++ b/dom/xbl/builtin/android/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xbl/builtin/emacs/moz.build b/dom/xbl/builtin/emacs/moz.build
index eb4454d28..635fa39c9 100644
--- a/dom/xbl/builtin/emacs/moz.build
+++ b/dom/xbl/builtin/emacs/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xbl/builtin/mac/moz.build b/dom/xbl/builtin/mac/moz.build
index eb4454d28..635fa39c9 100644
--- a/dom/xbl/builtin/mac/moz.build
+++ b/dom/xbl/builtin/mac/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xbl/builtin/moz.build b/dom/xbl/builtin/moz.build
index 09574b363..23e3285d4 100644
--- a/dom/xbl/builtin/moz.build
+++ b/dom/xbl/builtin/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xbl/builtin/unix/moz.build b/dom/xbl/builtin/unix/moz.build
index eb4454d28..635fa39c9 100644
--- a/dom/xbl/builtin/unix/moz.build
+++ b/dom/xbl/builtin/unix/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xbl/builtin/win/moz.build b/dom/xbl/builtin/win/moz.build
index eb4454d28..635fa39c9 100644
--- a/dom/xbl/builtin/win/moz.build
+++ b/dom/xbl/builtin/win/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xbl/moz.build b/dom/xbl/moz.build
index 7a8814878..24a9f003e 100644
--- a/dom/xbl/moz.build
+++ b/dom/xbl/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xbl/nsBindingManager.cpp b/dom/xbl/nsBindingManager.cpp
index 405c7aac7..a2c18bcb9 100644
--- a/dom/xbl/nsBindingManager.cpp
+++ b/dom/xbl/nsBindingManager.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsBindingManager.h b/dom/xbl/nsBindingManager.h
index a71ff2188..cb15aa57f 100644
--- a/dom/xbl/nsBindingManager.h
+++ b/dom/xbl/nsBindingManager.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLBinding.cpp b/dom/xbl/nsXBLBinding.cpp
index b8174f6c2..b7e0d9094 100644
--- a/dom/xbl/nsXBLBinding.cpp
+++ b/dom/xbl/nsXBLBinding.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLBinding.h b/dom/xbl/nsXBLBinding.h
index b977c3e87..5eb743398 100644
--- a/dom/xbl/nsXBLBinding.h
+++ b/dom/xbl/nsXBLBinding.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLContentSink.cpp b/dom/xbl/nsXBLContentSink.cpp
index 4d5c9fb74..0f54d62b4 100644
--- a/dom/xbl/nsXBLContentSink.cpp
+++ b/dom/xbl/nsXBLContentSink.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLContentSink.h b/dom/xbl/nsXBLContentSink.h
index 3c220c0f3..93c1454a4 100644
--- a/dom/xbl/nsXBLContentSink.h
+++ b/dom/xbl/nsXBLContentSink.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLDocumentInfo.cpp b/dom/xbl/nsXBLDocumentInfo.cpp
index 73b08d7e1..764c5cc05 100644
--- a/dom/xbl/nsXBLDocumentInfo.cpp
+++ b/dom/xbl/nsXBLDocumentInfo.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLDocumentInfo.h b/dom/xbl/nsXBLDocumentInfo.h
index 79ea005e0..c9f3efa27 100644
--- a/dom/xbl/nsXBLDocumentInfo.h
+++ b/dom/xbl/nsXBLDocumentInfo.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLEventHandler.cpp b/dom/xbl/nsXBLEventHandler.cpp
index 6a873cf3b..dcf89b013 100644
--- a/dom/xbl/nsXBLEventHandler.cpp
+++ b/dom/xbl/nsXBLEventHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLEventHandler.h b/dom/xbl/nsXBLEventHandler.h
index 8c74cabdb..40587c93c 100644
--- a/dom/xbl/nsXBLEventHandler.h
+++ b/dom/xbl/nsXBLEventHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLMaybeCompiled.h b/dom/xbl/nsXBLMaybeCompiled.h
index ba66ec5d5..4bd7f8396 100644
--- a/dom/xbl/nsXBLMaybeCompiled.h
+++ b/dom/xbl/nsXBLMaybeCompiled.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImpl.cpp b/dom/xbl/nsXBLProtoImpl.cpp
index 5efcb71e0..752d5a635 100644
--- a/dom/xbl/nsXBLProtoImpl.cpp
+++ b/dom/xbl/nsXBLProtoImpl.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImpl.h b/dom/xbl/nsXBLProtoImpl.h
index d65637ac2..b2e2270e4 100644
--- a/dom/xbl/nsXBLProtoImpl.h
+++ b/dom/xbl/nsXBLProtoImpl.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImplField.cpp b/dom/xbl/nsXBLProtoImplField.cpp
index 9c9857f1d..b7c04c25a 100644
--- a/dom/xbl/nsXBLProtoImplField.cpp
+++ b/dom/xbl/nsXBLProtoImplField.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImplField.h b/dom/xbl/nsXBLProtoImplField.h
index 667f03a61..6b84e5fef 100644
--- a/dom/xbl/nsXBLProtoImplField.h
+++ b/dom/xbl/nsXBLProtoImplField.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImplMember.h b/dom/xbl/nsXBLProtoImplMember.h
index 4a2789d93..e77366d58 100644
--- a/dom/xbl/nsXBLProtoImplMember.h
+++ b/dom/xbl/nsXBLProtoImplMember.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImplMethod.cpp b/dom/xbl/nsXBLProtoImplMethod.cpp
index 31b215ab3..dec4194db 100644
--- a/dom/xbl/nsXBLProtoImplMethod.cpp
+++ b/dom/xbl/nsXBLProtoImplMethod.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImplMethod.h b/dom/xbl/nsXBLProtoImplMethod.h
index 8a616e11e..d048239ab 100644
--- a/dom/xbl/nsXBLProtoImplMethod.h
+++ b/dom/xbl/nsXBLProtoImplMethod.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImplProperty.cpp b/dom/xbl/nsXBLProtoImplProperty.cpp
index 557a836da..9c603d482 100644
--- a/dom/xbl/nsXBLProtoImplProperty.cpp
+++ b/dom/xbl/nsXBLProtoImplProperty.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLProtoImplProperty.h b/dom/xbl/nsXBLProtoImplProperty.h
index cf203294f..d1821213d 100644
--- a/dom/xbl/nsXBLProtoImplProperty.h
+++ b/dom/xbl/nsXBLProtoImplProperty.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLPrototypeBinding.cpp b/dom/xbl/nsXBLPrototypeBinding.cpp
index c470d887b..25c33d534 100644
--- a/dom/xbl/nsXBLPrototypeBinding.cpp
+++ b/dom/xbl/nsXBLPrototypeBinding.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLPrototypeBinding.h b/dom/xbl/nsXBLPrototypeBinding.h
index 4c51a2083..797b0ce3c 100644
--- a/dom/xbl/nsXBLPrototypeBinding.h
+++ b/dom/xbl/nsXBLPrototypeBinding.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLPrototypeHandler.cpp b/dom/xbl/nsXBLPrototypeHandler.cpp
index 2591a72fd..963e6835c 100644
--- a/dom/xbl/nsXBLPrototypeHandler.cpp
+++ b/dom/xbl/nsXBLPrototypeHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLPrototypeHandler.h b/dom/xbl/nsXBLPrototypeHandler.h
index 6898b73ed..d351789f5 100644
--- a/dom/xbl/nsXBLPrototypeHandler.h
+++ b/dom/xbl/nsXBLPrototypeHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLPrototypeResources.cpp b/dom/xbl/nsXBLPrototypeResources.cpp
index a1ec42663..091d7ead7 100644
--- a/dom/xbl/nsXBLPrototypeResources.cpp
+++ b/dom/xbl/nsXBLPrototypeResources.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLPrototypeResources.h b/dom/xbl/nsXBLPrototypeResources.h
index 5ac1923ac..cc0bf14d3 100644
--- a/dom/xbl/nsXBLPrototypeResources.h
+++ b/dom/xbl/nsXBLPrototypeResources.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLResourceLoader.cpp b/dom/xbl/nsXBLResourceLoader.cpp
index e930e6f98..b9b2208be 100644
--- a/dom/xbl/nsXBLResourceLoader.cpp
+++ b/dom/xbl/nsXBLResourceLoader.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLResourceLoader.h b/dom/xbl/nsXBLResourceLoader.h
index 1311f11f7..1202df601 100644
--- a/dom/xbl/nsXBLResourceLoader.h
+++ b/dom/xbl/nsXBLResourceLoader.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLSerialize.cpp b/dom/xbl/nsXBLSerialize.cpp
index b08c25965..c2a8e34fd 100644
--- a/dom/xbl/nsXBLSerialize.cpp
+++ b/dom/xbl/nsXBLSerialize.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLSerialize.h b/dom/xbl/nsXBLSerialize.h
index 2c1dedc33..134fa6f8f 100644
--- a/dom/xbl/nsXBLSerialize.h
+++ b/dom/xbl/nsXBLSerialize.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLService.cpp b/dom/xbl/nsXBLService.cpp
index 1475b1368..55839afd2 100644
--- a/dom/xbl/nsXBLService.cpp
+++ b/dom/xbl/nsXBLService.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -115,45 +114,19 @@ public:
if (!doc)
return;
- // Destroy the frames for mBoundElement.
- nsIContent* destroyedFramesFor = nullptr;
- nsIPresShell* shell = doc->GetShell();
- if (shell) {
- shell->DestroyFramesFor(mBoundElement, &destroyedFramesFor);
- }
- MOZ_ASSERT(!mBoundElement->GetPrimaryFrame());
-
// Get the binding.
bool ready = false;
nsXBLService::GetInstance()->BindingReady(mBoundElement, mBindingURI, &ready);
if (!ready)
return;
- // If |mBoundElement| is (in addition to having binding |mBinding|)
- // also a descendant of another element with binding |mBinding|,
- // then we might have just constructed it due to the
- // notification of its parent. (We can know about both if the
- // binding loads were triggered from the DOM rather than frame
- // construction.) So we have to check both whether the element
- // has a primary frame and whether it's in the frame manager maps
- // before sending a ContentInserted notification, or bad things
- // will happen.
- MOZ_ASSERT(shell == doc->GetShell());
- if (shell) {
- nsIFrame* childFrame = mBoundElement->GetPrimaryFrame();
- if (!childFrame) {
- // Check to see if it's in the undisplayed content map...
- nsFrameManager* fm = shell->FrameManager();
- nsStyleContext* sc = fm->GetUndisplayedContent(mBoundElement);
- if (!sc) {
- // or in the display:contents map.
- sc = fm->GetDisplayContentsStyleFor(mBoundElement);
- }
- if (!sc) {
- shell->CreateFramesFor(destroyedFramesFor);
- }
- }
+ // Destroy the frames for mBoundElement. Do this after getting the binding,
+ // since if the binding fetch fails then we don't want to destroy the
+ // frames.
+ if (nsIPresShell* shell = doc->GetShell()) {
+ shell->DestroyFramesForAndRestyle(mBoundElement->AsElement());
}
+ MOZ_ASSERT(!mBoundElement->GetPrimaryFrame());
}
nsXBLBindingRequest(nsIURI* aURI, nsIContent* aBoundElement)
diff --git a/dom/xbl/nsXBLService.h b/dom/xbl/nsXBLService.h
index 5082bc42b..b7787b97e 100644
--- a/dom/xbl/nsXBLService.h
+++ b/dom/xbl/nsXBLService.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLWindowKeyHandler.cpp b/dom/xbl/nsXBLWindowKeyHandler.cpp
index 011b5c36b..ec9f2996a 100644
--- a/dom/xbl/nsXBLWindowKeyHandler.cpp
+++ b/dom/xbl/nsXBLWindowKeyHandler.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xbl/nsXBLWindowKeyHandler.h b/dom/xbl/nsXBLWindowKeyHandler.h
index 0509e85e4..d1386f0f0 100644
--- a/dom/xbl/nsXBLWindowKeyHandler.h
+++ b/dom/xbl/nsXBLWindowKeyHandler.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequest.cpp b/dom/xhr/XMLHttpRequest.cpp
index 36abb3835..4dc1acf4b 100644
--- a/dom/xhr/XMLHttpRequest.cpp
+++ b/dom/xhr/XMLHttpRequest.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequest.h b/dom/xhr/XMLHttpRequest.h
index a0dd0dbf6..5f7a7e6e2 100644
--- a/dom/xhr/XMLHttpRequest.h
+++ b/dom/xhr/XMLHttpRequest.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestEventTarget.cpp b/dom/xhr/XMLHttpRequestEventTarget.cpp
index b6e65001a..834b1cbc8 100644
--- a/dom/xhr/XMLHttpRequestEventTarget.cpp
+++ b/dom/xhr/XMLHttpRequestEventTarget.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestEventTarget.h b/dom/xhr/XMLHttpRequestEventTarget.h
index 6f48d5758..9fcb930be 100644
--- a/dom/xhr/XMLHttpRequestEventTarget.h
+++ b/dom/xhr/XMLHttpRequestEventTarget.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestMainThread.cpp b/dom/xhr/XMLHttpRequestMainThread.cpp
index 613008ad5..8a1c1f0ad 100644
--- a/dom/xhr/XMLHttpRequestMainThread.cpp
+++ b/dom/xhr/XMLHttpRequestMainThread.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestMainThread.h b/dom/xhr/XMLHttpRequestMainThread.h
index 68499874a..5f1a72901 100644
--- a/dom/xhr/XMLHttpRequestMainThread.h
+++ b/dom/xhr/XMLHttpRequestMainThread.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestString.cpp b/dom/xhr/XMLHttpRequestString.cpp
index c2bde5e0e..0a29780f4 100644
--- a/dom/xhr/XMLHttpRequestString.cpp
+++ b/dom/xhr/XMLHttpRequestString.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestString.h b/dom/xhr/XMLHttpRequestString.h
index 5709c1aa2..b02040b7e 100644
--- a/dom/xhr/XMLHttpRequestString.h
+++ b/dom/xhr/XMLHttpRequestString.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestUpload.cpp b/dom/xhr/XMLHttpRequestUpload.cpp
index 4de85c46c..42192bc0e 100644
--- a/dom/xhr/XMLHttpRequestUpload.cpp
+++ b/dom/xhr/XMLHttpRequestUpload.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestUpload.h b/dom/xhr/XMLHttpRequestUpload.h
index fc83f5eac..d374d17d8 100644
--- a/dom/xhr/XMLHttpRequestUpload.h
+++ b/dom/xhr/XMLHttpRequestUpload.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestWorker.cpp b/dom/xhr/XMLHttpRequestWorker.cpp
index 7bec379aa..8c68c4477 100644
--- a/dom/xhr/XMLHttpRequestWorker.cpp
+++ b/dom/xhr/XMLHttpRequestWorker.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/XMLHttpRequestWorker.h b/dom/xhr/XMLHttpRequestWorker.h
index c6647f8f3..6b17aa892 100644
--- a/dom/xhr/XMLHttpRequestWorker.h
+++ b/dom/xhr/XMLHttpRequestWorker.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xhr/moz.build b/dom/xhr/moz.build
index d4803015f..0eb01eabc 100644
--- a/dom/xhr/moz.build
+++ b/dom/xhr/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xml/CDATASection.cpp b/dom/xml/CDATASection.cpp
index fcc6a4ade..f645a7dc0 100644
--- a/dom/xml/CDATASection.cpp
+++ b/dom/xml/CDATASection.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/CDATASection.h b/dom/xml/CDATASection.h
index 2e99b1abf..cc983d856 100644
--- a/dom/xml/CDATASection.h
+++ b/dom/xml/CDATASection.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/ProcessingInstruction.cpp b/dom/xml/ProcessingInstruction.cpp
index c341ff4e3..6398dd552 100644
--- a/dom/xml/ProcessingInstruction.cpp
+++ b/dom/xml/ProcessingInstruction.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/ProcessingInstruction.h b/dom/xml/ProcessingInstruction.h
index ce1a780c9..3e33617ae 100644
--- a/dom/xml/ProcessingInstruction.h
+++ b/dom/xml/ProcessingInstruction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/XMLDocument.cpp b/dom/xml/XMLDocument.cpp
index 26b88a39b..ad11f5de8 100644
--- a/dom/xml/XMLDocument.cpp
+++ b/dom/xml/XMLDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/XMLDocument.h b/dom/xml/XMLDocument.h
index a948c1852..60c4ed684 100644
--- a/dom/xml/XMLDocument.h
+++ b/dom/xml/XMLDocument.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/XMLStylesheetProcessingInstruction.cpp b/dom/xml/XMLStylesheetProcessingInstruction.cpp
index 43e45131a..52b87b2f9 100644
--- a/dom/xml/XMLStylesheetProcessingInstruction.cpp
+++ b/dom/xml/XMLStylesheetProcessingInstruction.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/XMLStylesheetProcessingInstruction.h b/dom/xml/XMLStylesheetProcessingInstruction.h
index 28061834a..3581d16bf 100644
--- a/dom/xml/XMLStylesheetProcessingInstruction.h
+++ b/dom/xml/XMLStylesheetProcessingInstruction.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/moz.build b/dom/xml/moz.build
index 0eb3ee686..e40e18e49 100644
--- a/dom/xml/moz.build
+++ b/dom/xml/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xml/nsIXMLContentSink.h b/dom/xml/nsIXMLContentSink.h
index 19fc7889b..039f6f850 100644
--- a/dom/xml/nsIXMLContentSink.h
+++ b/dom/xml/nsIXMLContentSink.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/nsXMLContentSink.cpp b/dom/xml/nsXMLContentSink.cpp
index daf1dbf27..1e6f35eb8 100644
--- a/dom/xml/nsXMLContentSink.cpp
+++ b/dom/xml/nsXMLContentSink.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/nsXMLContentSink.h b/dom/xml/nsXMLContentSink.h
index 5e9880b08..f08f99a3a 100644
--- a/dom/xml/nsXMLContentSink.h
+++ b/dom/xml/nsXMLContentSink.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/nsXMLElement.cpp b/dom/xml/nsXMLElement.cpp
index 45163a1c4..e0642f59b 100644
--- a/dom/xml/nsXMLElement.cpp
+++ b/dom/xml/nsXMLElement.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -9,6 +8,7 @@
#include "mozilla/dom/ElementInlines.h"
#include "nsContentUtils.h" // nsAutoScriptBlocker
+using namespace mozilla;
using namespace mozilla::dom;
nsresult
@@ -29,4 +29,26 @@ nsXMLElement::WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto)
return ElementBinding::Wrap(aCx, this, aGivenProto);
}
+void
+nsXMLElement::UnbindFromTree(bool aDeep, bool aNullParent)
+{
+ CSSPseudoElementType pseudoType = GetPseudoElementType();
+ bool isBefore = pseudoType == CSSPseudoElementType::before;
+ nsIAtom* property = isBefore
+ ? nsGkAtoms::beforePseudoProperty : nsGkAtoms::afterPseudoProperty;
+
+ switch (pseudoType) {
+ case CSSPseudoElementType::before:
+ case CSSPseudoElementType::after: {
+ MOZ_ASSERT(GetParent());
+ MOZ_ASSERT(GetParent()->IsElement());
+ GetParent()->DeleteProperty(property);
+ break;
+ }
+ default:
+ break;
+ }
+ Element::UnbindFromTree(aDeep, aNullParent);
+}
+
NS_IMPL_ELEMENT_CLONE(nsXMLElement)
diff --git a/dom/xml/nsXMLElement.h b/dom/xml/nsXMLElement.h
index d16b82f39..7c05a8532 100644
--- a/dom/xml/nsXMLElement.h
+++ b/dom/xml/nsXMLElement.h
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
@@ -35,6 +34,9 @@ public:
virtual nsIDOMNode* AsDOMNode() override { return this; }
+ virtual void UnbindFromTree(bool aDeep = true,
+ bool aNullParent = true) override;
+
protected:
virtual ~nsXMLElement() {}
diff --git a/dom/xml/nsXMLFragmentContentSink.cpp b/dom/xml/nsXMLFragmentContentSink.cpp
index 7d9f86987..04d688c81 100644
--- a/dom/xml/nsXMLFragmentContentSink.cpp
+++ b/dom/xml/nsXMLFragmentContentSink.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xml/resources/moz.build b/dom/xml/resources/moz.build
index eb4454d28..635fa39c9 100644
--- a/dom/xml/resources/moz.build
+++ b/dom/xml/resources/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xslt/base/moz.build b/dom/xslt/base/moz.build
index d08db4935..64908a1c1 100644
--- a/dom/xslt/base/moz.build
+++ b/dom/xslt/base/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xslt/moz.build b/dom/xslt/moz.build
index 32ece0b53..051f4d075 100644
--- a/dom/xslt/moz.build
+++ b/dom/xslt/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xslt/tests/mochitest/test_bug1135764.html b/dom/xslt/tests/mochitest/test_bug1135764.html
index 5a7410e37..b1f627c87 100644
--- a/dom/xslt/tests/mochitest/test_bug1135764.html
+++ b/dom/xslt/tests/mochitest/test_bug1135764.html
@@ -27,7 +27,7 @@ https://bugzilla.mozilla.org/show_bug.cgi?id=1135764
}
addLoadEvent(function() {
SpecialPowers.pushPrefEnv(
- { "set": [[ "dom.animations-api.core.enabled", true]] },
+ { "set": [[ "dom.animations-api.timelines.enabled", true]] },
function() {
var ifr = document.querySelector("iframe");
ifr.onload = function() {
diff --git a/dom/xslt/xml/moz.build b/dom/xslt/xml/moz.build
index 967035466..ff085df13 100644
--- a/dom/xslt/xml/moz.build
+++ b/dom/xslt/xml/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xslt/xpath/moz.build b/dom/xslt/xpath/moz.build
index aa989ee91..a987b2508 100644
--- a/dom/xslt/xpath/moz.build
+++ b/dom/xslt/xpath/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xslt/xslt/moz.build b/dom/xslt/xslt/moz.build
index 8c9e98a0a..760a09087 100644
--- a/dom/xslt/xslt/moz.build
+++ b/dom/xslt/xslt/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xslt/xslt/txMozillaXSLTProcessor.cpp b/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
index 24c0595dd..6aec6052f 100644
--- a/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
+++ b/dom/xslt/xslt/txMozillaXSLTProcessor.cpp
@@ -1286,6 +1286,11 @@ txMozillaXSLTProcessor::WrapObject(JSContext* aCx, JS::Handle<JSObject*> aGivenP
return XSLTProcessorBinding::Wrap(aCx, this, aGivenProto);
}
+DocGroup*
+txMozillaXSLTProcessor::GetDocGroup() const
+{
+ return mStylesheetDocument ? mStylesheetDocument->GetDocGroup() : nullptr;
+}
/* static */ already_AddRefed<txMozillaXSLTProcessor>
txMozillaXSLTProcessor::Constructor(const GlobalObject& aGlobal,
diff --git a/dom/xslt/xslt/txMozillaXSLTProcessor.h b/dom/xslt/xslt/txMozillaXSLTProcessor.h
index 93d3c2c30..fc76585f2 100644
--- a/dom/xslt/xslt/txMozillaXSLTProcessor.h
+++ b/dom/xslt/xslt/txMozillaXSLTProcessor.h
@@ -29,6 +29,7 @@ class txIGlobalParameter;
namespace mozilla {
namespace dom {
+class DocGroup;
class Document;
class DocumentFragment;
class GlobalObject;
@@ -103,6 +104,8 @@ public:
return mOwner;
}
+ mozilla::dom::DocGroup* GetDocGroup() const;
+
static already_AddRefed<txMozillaXSLTProcessor>
Constructor(const mozilla::dom::GlobalObject& aGlobal,
mozilla::ErrorResult& aRv);
diff --git a/dom/xul/XULDocument.cpp b/dom/xul/XULDocument.cpp
index 36481f989..72a62b6e0 100644
--- a/dom/xul/XULDocument.cpp
+++ b/dom/xul/XULDocument.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=4 sw=4 et tw=80: */
/* 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/. */
@@ -66,7 +65,6 @@
#include "nsContentUtils.h"
#include "nsIParser.h"
#include "nsCharsetSource.h"
-#include "nsIParserService.h"
#include "mozilla/StyleSheetInlines.h"
#include "mozilla/css/Loader.h"
#include "nsIScriptError.h"
@@ -1579,24 +1577,13 @@ XULDocument::GetCommandDispatcher(nsIDOMXULCommandDispatcher** aTracker)
}
Element*
-XULDocument::GetElementById(const nsAString& aId)
+XULDocument::GetRefById(const nsAString& aID)
{
- if (!CheckGetElementByIdArg(aId))
- return nullptr;
-
- nsIdentifierMapEntry *entry = mIdentifierMap.GetEntry(aId);
- if (entry) {
- Element* element = entry->GetIdElement();
- if (element)
- return element;
- }
-
- nsRefMapEntry* refEntry = mRefMap.GetEntry(aId);
- if (refEntry) {
- NS_ASSERTION(refEntry->GetFirstElement(),
- "nsRefMapEntries should have nonempty content lists");
+ if (nsRefMapEntry* refEntry = mRefMap.GetEntry(aID)) {
+ MOZ_ASSERT(refEntry->GetFirstElement());
return refEntry->GetFirstElement();
}
+
return nullptr;
}
diff --git a/dom/xul/XULDocument.h b/dom/xul/XULDocument.h
index e72edfeed..5c4dad42e 100644
--- a/dom/xul/XULDocument.h
+++ b/dom/xul/XULDocument.h
@@ -148,6 +148,7 @@ public:
using nsDocument::CreateElementNS;
NS_FORWARD_NSIDOMDOCUMENT(XMLDocument::)
// And explicitly import the things from nsDocument that we just shadowed
+ using mozilla::dom::DocumentOrShadowRoot::GetElementById;
using nsDocument::GetImplementation;
using nsDocument::GetTitle;
using nsDocument::SetTitle;
@@ -156,8 +157,8 @@ public:
using nsDocument::GetMozFullScreenElement;
using nsIDocument::GetLocation;
- // nsDocument interface overrides
- virtual Element* GetElementById(const nsAString & elementId) override;
+ // Helper for StyleScope::GetElementById.
+ Element* GetRefById(const nsAString & elementId);
// nsIDOMXULDocument interface
NS_DECL_NSIDOMXULDOCUMENT
diff --git a/dom/xul/moz.build b/dom/xul/moz.build
index dad38a2c4..50742f924 100644
--- a/dom/xul/moz.build
+++ b/dom/xul/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.
diff --git a/dom/xul/nsXULCommandDispatcher.cpp b/dom/xul/nsXULCommandDispatcher.cpp
index 2d222c240..d8053efdf 100644
--- a/dom/xul/nsXULCommandDispatcher.cpp
+++ b/dom/xul/nsXULCommandDispatcher.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=2 sw=2 et tw=80: */
/* 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/. */
diff --git a/dom/xul/nsXULContentSink.cpp b/dom/xul/nsXULContentSink.cpp
index 94560e70d..c631e0424 100644
--- a/dom/xul/nsXULContentSink.cpp
+++ b/dom/xul/nsXULContentSink.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/* vim: set ts=8 sts=4 et sw=4 tw=80: */
/* 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/. */
diff --git a/dom/xul/nsXULElement.cpp b/dom/xul/nsXULElement.cpp
index e351a46eb..2ae03e0b1 100644
--- a/dom/xul/nsXULElement.cpp
+++ b/dom/xul/nsXULElement.cpp
@@ -126,6 +126,8 @@ uint32_t nsXULPrototypeAttribute::gNumCacheSets;
uint32_t nsXULPrototypeAttribute::gNumCacheFills;
#endif
+#define NS_DISPATCH_XUL_COMMAND (1 << 0)
+
class nsXULElementTearoff final : public nsIFrameLoaderOwner
{
~nsXULElementTearoff() {}
@@ -174,33 +176,6 @@ nsXULElement::~nsXULElement()
{
}
-nsXULElement::nsXULSlots::nsXULSlots()
- : nsXULElement::nsDOMSlots()
-{
-}
-
-nsXULElement::nsXULSlots::~nsXULSlots()
-{
- NS_IF_RELEASE(mControllers); // Forces release
- nsCOMPtr<nsIFrameLoader> frameLoader = do_QueryInterface(mFrameLoaderOrOpener);
- if (frameLoader) {
- static_cast<nsFrameLoader*>(frameLoader.get())->Destroy();
- }
-}
-
-void
-nsXULElement::nsXULSlots::Traverse(nsCycleCollectionTraversalCallback &cb)
-{
- NS_CYCLE_COLLECTION_NOTE_EDGE_NAME(cb, "mSlots->mFrameLoaderOrOpener");
- cb.NoteXPCOMChild(mFrameLoaderOrOpener);
-}
-
-nsINode::nsSlots*
-nsXULElement::CreateSlots()
-{
- return new nsXULSlots();
-}
-
void
nsXULElement::MaybeUpdatePrivateLifetime()
{
@@ -229,7 +204,7 @@ nsXULElement::Create(nsXULPrototypeElement* aPrototype, mozilla::dom::NodeInfo *
element->SetHasID();
}
if (aPrototype->mHasClassAttribute) {
- element->SetFlags(NODE_MAY_HAVE_CLASS);
+ element->SetMayHaveClass();
}
if (aPrototype->mHasStyleAttribute) {
element->SetMayHaveStyle();
@@ -326,12 +301,7 @@ NS_IMPL_CYCLE_COLLECTION_CLASS(nsXULElement)
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(nsXULElement,
nsStyledElement)
- {
- nsXULSlots* slots = static_cast<nsXULSlots*>(tmp->GetExistingSlots());
- if (slots) {
- slots->Traverse(cb);
- }
- }
+
NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END
NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(nsXULElement,
@@ -390,12 +360,15 @@ nsXULElement::Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const
attrValue.SetTo(*originalValue);
}
+ bool oldValueSet;
if (originalName->IsAtom()) {
rv = element->mAttrsAndChildren.SetAndSwapAttr(originalName->Atom(),
- attrValue);
+ attrValue,
+ &oldValueSet);
} else {
rv = element->mAttrsAndChildren.SetAndSwapAttr(originalName->NodeInfo(),
- attrValue);
+ attrValue,
+ &oldValueSet);
}
NS_ENSURE_SUCCESS(rv, rv);
element->AddListenerFor(*originalName, true);
@@ -404,7 +377,7 @@ nsXULElement::Clone(mozilla::dom::NodeInfo *aNodeInfo, nsINode **aResult) const
element->SetHasID();
}
if (originalName->Equals(nsGkAtoms::_class)) {
- element->SetFlags(NODE_MAY_HAVE_CLASS);
+ element->SetMayHaveClass();
}
if (originalName->Equals(nsGkAtoms::style)) {
element->SetMayHaveStyle();
@@ -895,9 +868,9 @@ nsXULElement::UnbindFromTree(bool aDeep, bool aNullParent)
// mDocument in nsGlobalWindow::SetDocShell, but I'm not
// sure whether that would fix all possible cycles through
// mControllers.)
- nsXULSlots* slots = static_cast<nsXULSlots*>(GetExistingDOMSlots());
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
- NS_IF_RELEASE(slots->mControllers);
+ slots->mControllers = nullptr;
RefPtr<nsFrameLoader> frameLoader = GetFrameLoader();
if (frameLoader) {
frameLoader->Destroy();
@@ -1037,7 +1010,7 @@ nsXULElement::UnregisterAccessKey(const nsAString& aOldValue)
nsresult
nsXULElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue, bool aNotify)
+ const nsAttrValueOrString* aValue, bool aNotify)
{
if (aNamespaceID == kNameSpaceID_None && aName == nsGkAtoms::accesskey &&
IsInUncomposedDoc()) {
@@ -1083,7 +1056,8 @@ nsXULElement::BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
nsresult
nsXULElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify)
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue, bool aNotify)
{
if (aNamespaceID == kNameSpaceID_None) {
if (aValue) {
@@ -1204,7 +1178,7 @@ nsXULElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
}
return nsStyledElement::AfterSetAttr(aNamespaceID, aName,
- aValue, aNotify);
+ aValue, aOldValue, aNotify);
}
bool
@@ -1241,9 +1215,9 @@ nsXULElement::RemoveBroadcaster(const nsAString & broadcasterId)
void
nsXULElement::DestroyContent()
{
- nsXULSlots* slots = static_cast<nsXULSlots*>(GetExistingDOMSlots());
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (slots) {
- NS_IF_RELEASE(slots->mControllers);
+ slots->mControllers = nullptr;
RefPtr<nsFrameLoader> frameLoader = GetFrameLoader();
if (frameLoader) {
frameLoader->Destroy();
@@ -1268,20 +1242,68 @@ nsXULElement::List(FILE* out, int32_t aIndent) const
}
#endif
+bool
+nsXULElement::IsEventStoppedFromAnonymousScrollbar(EventMessage aMessage)
+{
+ return (IsRootOfNativeAnonymousSubtree() &&
+ IsAnyOfXULElements(nsGkAtoms::scrollbar, nsGkAtoms::scrollcorner) &&
+ (aMessage == eMouseClick || aMessage == eMouseDoubleClick ||
+ aMessage == eXULCommand || aMessage == eContextMenu ||
+ aMessage == eDragStart));
+}
+
nsresult
-nsXULElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
+nsXULElement::DispatchXULCommand(const EventChainVisitor& aVisitor,
+ nsAutoString& aCommand)
+{
+ // XXX sXBL/XBL2 issue! Owner or current document?
+ nsCOMPtr<nsIDOMDocument> domDoc(do_QueryInterface(GetUncomposedDoc()));
+ NS_ENSURE_STATE(domDoc);
+ nsCOMPtr<nsIDOMElement> commandElt;
+ domDoc->GetElementById(aCommand, getter_AddRefs(commandElt));
+ nsCOMPtr<nsIContent> commandContent(do_QueryInterface(commandElt));
+ if (commandContent) {
+ // Create a new command event to dispatch to the element
+ // pointed to by the command attribute. The new event's
+ // sourceEvent will be the original command event that we're
+ // handling.
+ nsCOMPtr<nsIDOMEvent> domEvent = aVisitor.mDOMEvent;
+ while (domEvent) {
+ Event* event = domEvent->InternalDOMEvent();
+ NS_ENSURE_STATE(!SameCOMIdentity(event->GetOriginalTarget(),
+ commandContent));
+ nsCOMPtr<nsIDOMXULCommandEvent> commandEvent =
+ do_QueryInterface(domEvent);
+ if (commandEvent) {
+ commandEvent->GetSourceEvent(getter_AddRefs(domEvent));
+ } else {
+ domEvent = nullptr;
+ }
+ }
+ WidgetInputEvent* orig = aVisitor.mEvent->AsInputEvent();
+ nsContentUtils::DispatchXULCommand(
+ commandContent,
+ orig->IsTrusted(),
+ aVisitor.mDOMEvent,
+ nullptr,
+ orig->IsControl(),
+ orig->IsAlt(),
+ orig->IsShift(),
+ orig->IsMeta());
+ } else {
+ NS_WARNING("A XUL element is attached to a command that doesn't exist!\n");
+ }
+ return NS_OK;
+}
+
+nsresult
+nsXULElement::GetEventTargetParent(EventChainPreVisitor& aVisitor)
{
aVisitor.mForceContentDispatch = true; //FIXME! Bug 329119
- if (IsRootOfNativeAnonymousSubtree() &&
- (IsAnyOfXULElements(nsGkAtoms::scrollbar, nsGkAtoms::scrollcorner)) &&
- (aVisitor.mEvent->mMessage == eMouseClick ||
- aVisitor.mEvent->mMessage == eMouseDoubleClick ||
- aVisitor.mEvent->mMessage == eXULCommand ||
- aVisitor.mEvent->mMessage == eContextMenu ||
- aVisitor.mEvent->mMessage == eDragStart)) {
+ if (IsEventStoppedFromAnonymousScrollbar(aVisitor.mEvent->mMessage)) {
// Don't propagate these events from native anonymous scrollbar.
aVisitor.mCanHandle = true;
- aVisitor.mParentTarget = nullptr;
+ aVisitor.SetParentTarget(nullptr, false);
return NS_OK;
}
if (aVisitor.mEvent->mMessage == eXULCommand &&
@@ -1295,55 +1317,33 @@ nsXULElement::PreHandleEvent(EventChainPreVisitor& aVisitor)
// See if we have a command elt. If so, we execute on the command
// instead of on our content element.
nsAutoString command;
- if (xulEvent && GetAttr(kNameSpaceID_None, nsGkAtoms::command, command) &&
+ if (xulEvent &&
+ GetAttr(kNameSpaceID_None, nsGkAtoms::command, command) &&
!command.IsEmpty()) {
// Stop building the event target chain for the original event.
// We don't want it to propagate to any DOM nodes.
aVisitor.mCanHandle = false;
aVisitor.mAutomaticChromeDispatch = false;
-
- // XXX sXBL/XBL2 issue! Owner or current document?
- nsCOMPtr<nsIDOMDocument> domDoc(do_QueryInterface(GetUncomposedDoc()));
- NS_ENSURE_STATE(domDoc);
- nsCOMPtr<nsIDOMElement> commandElt;
- domDoc->GetElementById(command, getter_AddRefs(commandElt));
- nsCOMPtr<nsIContent> commandContent(do_QueryInterface(commandElt));
- if (commandContent) {
- // Create a new command event to dispatch to the element
- // pointed to by the command attribute. The new event's
- // sourceEvent will be the original command event that we're
- // handling.
- nsCOMPtr<nsIDOMEvent> domEvent = aVisitor.mDOMEvent;
- while (domEvent) {
- Event* event = domEvent->InternalDOMEvent();
- NS_ENSURE_STATE(!SameCOMIdentity(event->GetOriginalTarget(),
- commandContent));
- nsCOMPtr<nsIDOMXULCommandEvent> commandEvent =
- do_QueryInterface(domEvent);
- if (commandEvent) {
- commandEvent->GetSourceEvent(getter_AddRefs(domEvent));
- } else {
- domEvent = nullptr;
- }
- }
-
- WidgetInputEvent* orig = aVisitor.mEvent->AsInputEvent();
- nsContentUtils::DispatchXULCommand(
- commandContent,
- aVisitor.mEvent->IsTrusted(),
- aVisitor.mDOMEvent,
- nullptr,
- orig->IsControl(),
- orig->IsAlt(),
- orig->IsShift(),
- orig->IsMeta());
- } else {
- NS_WARNING("A XUL element is attached to a command that doesn't exist!\n");
- }
+ // Dispatch XUL command in PreHandleEvent to prevent it breaks event
+ // target chain creation
+ aVisitor.mWantsPreHandleEvent = true;
+ aVisitor.mItemFlags |= NS_DISPATCH_XUL_COMMAND;
return NS_OK;
}
}
+ return nsStyledElement::GetEventTargetParent(aVisitor);
+}
+
+nsresult
+nsXULElement::PreHandleEvent(EventChainVisitor& aVisitor)
+{
+ if (aVisitor.mItemFlags & NS_DISPATCH_XUL_COMMAND) {
+ nsAutoString command;
+ GetAttr(kNameSpaceID_None, nsGkAtoms::command, command);
+ MOZ_ASSERT(!command.IsEmpty());
+ return DispatchXULCommand(aVisitor, command);
+ }
return nsStyledElement::PreHandleEvent(aVisitor);
}
@@ -1473,7 +1473,7 @@ nsIControllers*
nsXULElement::GetControllers(ErrorResult& rv)
{
if (! Controllers()) {
- nsDOMSlots* slots = DOMSlots();
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
rv = NS_NewXULControllers(nullptr, NS_GET_IID(nsIControllers),
reinterpret_cast<void**>(&slots->mControllers));
@@ -1578,7 +1578,7 @@ nsXULElement::LoadSrc()
RefPtr<nsFrameLoader> frameLoader = GetFrameLoader();
if (!frameLoader) {
// Check if we have an opener we need to be setting
- nsXULSlots* slots = static_cast<nsXULSlots*>(Slots());
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
nsCOMPtr<nsPIDOMWindowOuter> opener = do_QueryInterface(slots->mFrameLoaderOrOpener);
if (!opener) {
// If we are a content-primary xul-browser, we want to take the opener property!
@@ -1624,7 +1624,7 @@ nsXULElement::GetFrameLoaderXPCOM(nsIFrameLoader **aFrameLoader)
already_AddRefed<nsFrameLoader>
nsXULElement::GetFrameLoader()
{
- nsXULSlots* slots = static_cast<nsXULSlots*>(GetExistingSlots());
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
if (!slots)
return nullptr;
@@ -1646,7 +1646,7 @@ nsXULElement::GetParentApplication(mozIApplication** aApplication)
void
nsXULElement::PresetOpenerWindow(mozIDOMWindowProxy* aWindow, ErrorResult& aRv)
{
- nsXULSlots* slots = static_cast<nsXULSlots*>(Slots());
+ nsExtendedDOMSlots* slots = ExtendedDOMSlots();
MOZ_ASSERT(!slots->mFrameLoaderOrOpener, "A frameLoader or opener is present when calling PresetOpenerWindow");
slots->mFrameLoaderOrOpener = aWindow;
@@ -1662,7 +1662,7 @@ nsXULElement::SetIsPrerendered()
void
nsXULElement::InternalSetFrameLoader(nsIFrameLoader* aNewFrameLoader)
{
- nsXULSlots* slots = static_cast<nsXULSlots*>(GetExistingDOMSlots());
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
MOZ_ASSERT(slots);
slots->mFrameLoaderOrOpener = aNewFrameLoader;
@@ -1912,12 +1912,14 @@ nsXULElement::MakeHeavyweight(nsXULPrototypeElement* aPrototype)
attrValue.SetTo(protoattr->mValue);
}
+ bool oldValueSet;
// XXX we might wanna have a SetAndTakeAttr that takes an nsAttrName
if (protoattr->mName.IsAtom()) {
- rv = mAttrsAndChildren.SetAndSwapAttr(protoattr->mName.Atom(), attrValue);
+ rv = mAttrsAndChildren.SetAndSwapAttr(protoattr->mName.Atom(),
+ attrValue, &oldValueSet);
} else {
rv = mAttrsAndChildren.SetAndSwapAttr(protoattr->mName.NodeInfo(),
- attrValue);
+ attrValue, &oldValueSet);
}
NS_ENSURE_SUCCESS(rv, rv);
}
diff --git a/dom/xul/nsXULElement.h b/dom/xul/nsXULElement.h
index 164afacd3..a30714145 100644
--- a/dom/xul/nsXULElement.h
+++ b/dom/xul/nsXULElement.h
@@ -355,9 +355,10 @@ public:
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsXULElement, nsStyledElement)
// nsINode
- virtual nsresult PreHandleEvent(
+ virtual nsresult GetEventTargetParent(
mozilla::EventChainPreVisitor& aVisitor) override;
-
+ virtual nsresult PreHandleEvent(
+ mozilla::EventChainVisitor& aVisitor) override;
// nsIContent
virtual nsresult BindToTree(nsIDocument* aDocument, nsIContent* aParent,
nsIContent* aBindingParent,
@@ -609,19 +610,6 @@ protected:
nsresult AddPopupListener(nsIAtom* aName);
- class nsXULSlots : public mozilla::dom::Element::nsDOMSlots
- {
- public:
- nsXULSlots();
- virtual ~nsXULSlots();
-
- void Traverse(nsCycleCollectionTraversalCallback &cb);
-
- nsCOMPtr<nsISupports> mFrameLoaderOrOpener;
- };
-
- virtual nsINode::nsSlots* CreateSlots() override;
-
nsresult LoadSrc();
/**
@@ -636,10 +624,12 @@ protected:
nsresult MakeHeavyweight(nsXULPrototypeElement* aPrototype);
virtual nsresult BeforeSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- nsAttrValueOrString* aValue,
+ const nsAttrValueOrString* aValue,
bool aNotify) override;
virtual nsresult AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
- const nsAttrValue* aValue, bool aNotify) override;
+ const nsAttrValue* aValue,
+ const nsAttrValue* aOldValue,
+ bool aNotify) override;
virtual void UpdateEditableState(bool aNotify) override;
@@ -677,8 +667,8 @@ protected:
// Internal accessor. This shadows the 'Slots', and returns
// appropriate value.
nsIControllers *Controllers() {
- nsDOMSlots* slots = GetExistingDOMSlots();
- return slots ? slots->mControllers : nullptr;
+ nsExtendedDOMSlots* slots = GetExistingExtendedDOMSlots();
+ return slots ? slots->mControllers.get() : nullptr;
}
void UnregisterAccessKey(const nsAString& aOldValue);
@@ -702,6 +692,11 @@ protected:
virtual JSObject* WrapNode(JSContext *aCx, JS::Handle<JSObject*> aGivenProto) override;
void MaybeUpdatePrivateLifetime();
+
+ bool IsEventStoppedFromAnonymousScrollbar(mozilla::EventMessage aMessage);
+
+ nsresult DispatchXULCommand(const mozilla::EventChainVisitor& aVisitor,
+ nsAutoString& aCommand);
};
#endif // nsXULElement_h__
diff --git a/dom/xul/nsXULPrototypeCache.cpp b/dom/xul/nsXULPrototypeCache.cpp
index 2c3454860..a73e2f8f0 100644
--- a/dom/xul/nsXULPrototypeCache.cpp
+++ b/dom/xul/nsXULPrototypeCache.cpp
@@ -1,5 +1,4 @@
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
diff --git a/dom/xul/templates/moz.build b/dom/xul/templates/moz.build
index 780f01941..54811df44 100644
--- a/dom/xul/templates/moz.build
+++ b/dom/xul/templates/moz.build
@@ -1,5 +1,4 @@
# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-# vim: set filetype=python:
# 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/.