Rename ExceptionCode-based exception handling to "legacy"
authordarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 2 Oct 2016 21:28:31 +0000 (21:28 +0000)
committerdarin@apple.com <darin@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 2 Oct 2016 21:28:31 +0000 (21:28 +0000)
https://bugs.webkit.org/show_bug.cgi?id=162859

Reviewed by Chris Dumez.

Source/WebCore:

RaisesException is now MayThrowLegacyException.

A follow-up patch soon will add MayThrowException for the new style,
where we use ExceptionOr<> as the return type instead of an ExceptionCode
out argument.

* bindings/scripts/CodeGeneratorJS.pm:
Removed the quotation marks from the syntax object->{PropertyName} so the
renaming script could handle it. Tweaked various comments and logic for clarity.
Changed to use the perl "x if y" syntax for brevity in many places.
Renamed with the script and by hand. Added code to skip including the same header
in both the implementation file and the header, just to make generated bindings
slightly smaller and faster to compile. Used "using" instead of "typedef".

* bindings/scripts/IDLAttributes.txt: Updated from old names to new ones.

* Modules/applepay/ApplePaySession.idl:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/encryptedmedia/MediaKeys.idl:
* Modules/fetch/FetchHeaders.idl:
* Modules/fetch/FetchRequest.idl:
* Modules/fetch/FetchResponse.idl:
* Modules/indexeddb/IDBCursor.idl:
* Modules/indexeddb/IDBDatabase.idl:
* Modules/indexeddb/IDBFactory.idl:
* Modules/indexeddb/IDBIndex.idl:
* Modules/indexeddb/IDBKeyRange.idl:
* Modules/indexeddb/IDBObjectStore.idl:
* Modules/indexeddb/IDBRequest.idl:
* Modules/indexeddb/IDBTransaction.idl:
* Modules/mediasource/MediaSource.idl:
* Modules/mediasource/SourceBuffer.idl:
* Modules/mediastream/MediaDevices.idl:
* Modules/mediastream/RTCDTMFSender.idl:
* Modules/mediastream/RTCDataChannel.idl:
* Modules/mediastream/RTCIceCandidate.idl:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/mediastream/RTCRtpSender.idl:
* Modules/mediastream/RTCSessionDescription.idl:
* Modules/navigatorcontentutils/NavigatorContentUtils.idl:
* Modules/notifications/NotificationCenter.idl:
* Modules/webaudio/AnalyserNode.idl:
* Modules/webaudio/AudioBuffer.idl:
* Modules/webaudio/AudioBufferSourceNode.idl:
* Modules/webaudio/AudioContext.idl:
* Modules/webaudio/AudioNode.idl:
* Modules/webaudio/ConvolverNode.idl:
* Modules/webaudio/OfflineAudioContext.idl:
* Modules/webaudio/OscillatorNode.idl:
* Modules/webdatabase/DOMWindowWebDatabase.idl:
* Modules/webdatabase/SQLResultSet.idl:
* Modules/websockets/WebSocket.idl:
* bindings/scripts/test/TestImplements.idl:
* bindings/scripts/test/TestInterface.idl:
* bindings/scripts/test/TestNamedConstructor.idl:
* bindings/scripts/test/TestNondeterministic.idl:
* bindings/scripts/test/TestObj.idl:
* bindings/scripts/test/TestSupplemental.idl:
* bindings/scripts/test/TestTypedefs.idl:
* css/CSSCharsetRule.idl:
* css/CSSMediaRule.idl:
* css/CSSPrimitiveValue.idl:
* css/CSSRule.idl:
* css/CSSStyleDeclaration.idl:
* css/CSSStyleSheet.idl:
* css/CSSSupportsRule.idl:
* css/CSSValue.idl:
* css/FontFace.idl:
* css/FontFaceSet.idl:
* css/MediaList.idl:
* css/WebKitCSSMatrix.idl:
* dom/CharacterData.idl:
* dom/ChildNode.idl:
* dom/CustomElementRegistry.idl:
* dom/DataTransferItemList.idl:
* dom/Document.idl:
* dom/Element.idl:
* dom/EventTarget.idl:
* dom/MessagePort.idl:
* dom/MutationObserver.idl:
* dom/NamedNodeMap.idl:
* dom/Node.idl:
* dom/ParentNode.idl:
* dom/Range.idl:
* dom/ShadowRoot.idl:
* dom/Text.idl:
* fileapi/FileReader.idl:
* fileapi/FileReaderSync.idl:
* html/DOMTokenList.idl:
* html/DOMURL.idl:
* html/HTMLCanvasElement.idl:
* html/HTMLElement.idl:
* html/HTMLEmbedElement.idl:
* html/HTMLFrameElement.idl:
* html/HTMLIFrameElement.idl:
* html/HTMLInputElement.idl:
* html/HTMLMarqueeElement.idl:
* html/HTMLMediaElement.idl:
* html/HTMLObjectElement.idl:
* html/HTMLOptionElement.idl:
* html/HTMLOptionsCollection.idl:
* html/HTMLProgressElement.idl:
* html/HTMLSelectElement.idl:
* html/HTMLTableElement.idl:
* html/HTMLTableRowElement.idl:
* html/HTMLTableSectionElement.idl:
* html/HTMLTextAreaElement.idl:
* html/HTMLVideoElement.idl:
* html/ImageData.idl:
* html/MediaController.idl:
* html/TimeRanges.idl:
* html/URLUtils.idl:
* html/canvas/CanvasGradient.idl:
* html/canvas/CanvasPath.idl:
* html/canvas/CanvasRenderingContext2D.idl:
* html/canvas/OESVertexArrayObject.idl:
* html/canvas/WebGLRenderingContextBase.idl:
* html/track/DataCue.idl:
* html/track/TextTrack.idl:
* html/track/TextTrackCue.idl:
* html/track/VTTCue.idl:
* html/track/VTTRegion.idl:
* loader/appcache/DOMApplicationCache.idl:
* page/Crypto.idl:
* page/DOMSelection.idl:
* page/DOMWindow.idl:
* page/EventSource.idl:
* page/History.idl:
* page/Location.idl:
* page/Performance.idl:
* page/UserMessageHandler.idl:
* page/WindowOrWorkerGlobalScope.idl:
* storage/Storage.idl:
* svg/SVGAltGlyphElement.idl:
* svg/SVGAngle.idl:
* svg/SVGAnimatedBoolean.idl:
* svg/SVGAnimatedEnumeration.idl:
* svg/SVGAnimatedInteger.idl:
* svg/SVGAnimatedNumber.idl:
* svg/SVGAnimatedString.idl:
* svg/SVGAnimationElement.idl:
* svg/SVGColor.idl:
* svg/SVGGlyphRefElement.idl:
* svg/SVGGraphicsElement.idl:
* svg/SVGLength.idl:
* svg/SVGLengthList.idl:
* svg/SVGMatrix.idl:
* svg/SVGNumberList.idl:
* svg/SVGPaint.idl:
* svg/SVGPathSegList.idl:
* svg/SVGPointList.idl:
* svg/SVGPreserveAspectRatio.idl:
* svg/SVGStringList.idl:
* svg/SVGStyleElement.idl:
* svg/SVGTextContentElement.idl:
* svg/SVGTransformList.idl:
* svg/SVGViewSpec.idl:
* testing/InternalSettings.idl:
* testing/Internals.idl:
* workers/DedicatedWorkerGlobalScope.idl:
* workers/Worker.idl:
* xml/DOMParser.idl:
* xml/XMLHttpRequest.idl:
* xml/XPathEvaluator.idl:
* xml/XPathExpression.idl:
* xml/XPathResult.idl:
Allowed the rename script to rename the exception-related extended attributes.

* bindings/scripts/test/JS/JSInterfaceName.cpp:
* bindings/scripts/test/JS/JSInterfaceName.h:
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
* bindings/scripts/test/JS/JSTestActiveDOMObject.h:
* bindings/scripts/test/JS/JSTestCallback.cpp:
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
* bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
* bindings/scripts/test/JS/JSTestEventConstructor.h:
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
* bindings/scripts/test/JS/JSTestEventTarget.h:
* bindings/scripts/test/JS/JSTestException.cpp:
* bindings/scripts/test/JS/JSTestException.h:
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
* bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
* bindings/scripts/test/JS/JSTestGlobalObject.h:
* bindings/scripts/test/JS/JSTestInterface.cpp:
* bindings/scripts/test/JS/JSTestInterface.h:
* bindings/scripts/test/JS/JSTestIterable.cpp:
* bindings/scripts/test/JS/JSTestIterable.h:
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
* bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
* bindings/scripts/test/JS/JSTestNamedConstructor.h:
* bindings/scripts/test/JS/JSTestNode.cpp:
* bindings/scripts/test/JS/JSTestNode.h:
* bindings/scripts/test/JS/JSTestNondeterministic.cpp:
* bindings/scripts/test/JS/JSTestNondeterministic.h:
* bindings/scripts/test/JS/JSTestObj.cpp:
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
* bindings/scripts/test/JS/JSTestTypedefs.h:
* bindings/scripts/test/JS/JSattribute.cpp:
* bindings/scripts/test/JS/JSattribute.h:
* bindings/scripts/test/JS/JSreadonly.cpp:
* bindings/scripts/test/JS/JSreadonly.h:
Regenerated.

Source/WebKit/win:

* Interfaces/DOMEvents.idl: Let the script rename here (in a comment).

Tools:

* Scripts/do-webcore-rename: Updated script to do this round of renames.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@206723 268f45cc-cd09-0410-ab3c-d52691b4dbfc

208 files changed:
Source/WebCore/ChangeLog
Source/WebCore/Modules/applepay/ApplePaySession.idl
Source/WebCore/Modules/encryptedmedia/MediaKeySession.idl
Source/WebCore/Modules/encryptedmedia/MediaKeys.idl
Source/WebCore/Modules/fetch/FetchHeaders.idl
Source/WebCore/Modules/fetch/FetchRequest.idl
Source/WebCore/Modules/fetch/FetchResponse.idl
Source/WebCore/Modules/indexeddb/IDBCursor.idl
Source/WebCore/Modules/indexeddb/IDBDatabase.idl
Source/WebCore/Modules/indexeddb/IDBFactory.idl
Source/WebCore/Modules/indexeddb/IDBIndex.idl
Source/WebCore/Modules/indexeddb/IDBKeyRange.idl
Source/WebCore/Modules/indexeddb/IDBObjectStore.idl
Source/WebCore/Modules/indexeddb/IDBRequest.idl
Source/WebCore/Modules/indexeddb/IDBTransaction.idl
Source/WebCore/Modules/mediasource/MediaSource.idl
Source/WebCore/Modules/mediasource/SourceBuffer.idl
Source/WebCore/Modules/mediastream/MediaDevices.idl
Source/WebCore/Modules/mediastream/RTCDTMFSender.idl
Source/WebCore/Modules/mediastream/RTCDataChannel.idl
Source/WebCore/Modules/mediastream/RTCIceCandidate.idl
Source/WebCore/Modules/mediastream/RTCPeerConnection.idl
Source/WebCore/Modules/mediastream/RTCRtpSender.idl
Source/WebCore/Modules/mediastream/RTCSessionDescription.idl
Source/WebCore/Modules/navigatorcontentutils/NavigatorContentUtils.idl
Source/WebCore/Modules/notifications/NotificationCenter.idl
Source/WebCore/Modules/webaudio/AnalyserNode.idl
Source/WebCore/Modules/webaudio/AudioBuffer.idl
Source/WebCore/Modules/webaudio/AudioBufferSourceNode.idl
Source/WebCore/Modules/webaudio/AudioContext.idl
Source/WebCore/Modules/webaudio/AudioNode.idl
Source/WebCore/Modules/webaudio/ConvolverNode.idl
Source/WebCore/Modules/webaudio/OfflineAudioContext.idl
Source/WebCore/Modules/webaudio/OscillatorNode.idl
Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.idl
Source/WebCore/Modules/webdatabase/SQLResultSet.idl
Source/WebCore/Modules/websockets/WebSocket.idl
Source/WebCore/bindings/scripts/CodeGeneratorJS.pm
Source/WebCore/bindings/scripts/IDLAttributes.txt
Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp
Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h
Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h
Source/WebCore/bindings/scripts/test/JS/JSTestCallback.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h
Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h
Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h
Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.h
Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h
Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestException.h
Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h
Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h
Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h
Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h
Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h
Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h
Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h
Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNode.h
Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestNondeterministic.h
Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestObj.h
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h
Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h
Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp
Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h
Source/WebCore/bindings/scripts/test/JS/JSattribute.cpp
Source/WebCore/bindings/scripts/test/JS/JSattribute.h
Source/WebCore/bindings/scripts/test/JS/JSreadonly.cpp
Source/WebCore/bindings/scripts/test/JS/JSreadonly.h
Source/WebCore/bindings/scripts/test/TestImplements.idl
Source/WebCore/bindings/scripts/test/TestInterface.idl
Source/WebCore/bindings/scripts/test/TestNamedConstructor.idl
Source/WebCore/bindings/scripts/test/TestNondeterministic.idl
Source/WebCore/bindings/scripts/test/TestObj.idl
Source/WebCore/bindings/scripts/test/TestSupplemental.idl
Source/WebCore/bindings/scripts/test/TestTypedefs.idl
Source/WebCore/css/CSSCharsetRule.idl
Source/WebCore/css/CSSMediaRule.idl
Source/WebCore/css/CSSPrimitiveValue.idl
Source/WebCore/css/CSSRule.idl
Source/WebCore/css/CSSStyleDeclaration.idl
Source/WebCore/css/CSSStyleSheet.idl
Source/WebCore/css/CSSSupportsRule.idl
Source/WebCore/css/CSSValue.idl
Source/WebCore/css/FontFace.idl
Source/WebCore/css/FontFaceSet.idl
Source/WebCore/css/MediaList.idl
Source/WebCore/css/WebKitCSSMatrix.idl
Source/WebCore/dom/CharacterData.idl
Source/WebCore/dom/ChildNode.idl
Source/WebCore/dom/CustomElementRegistry.idl
Source/WebCore/dom/DataTransferItemList.idl
Source/WebCore/dom/Document.idl
Source/WebCore/dom/Element.idl
Source/WebCore/dom/EventTarget.idl
Source/WebCore/dom/MessagePort.idl
Source/WebCore/dom/MutationObserver.idl
Source/WebCore/dom/NamedNodeMap.idl
Source/WebCore/dom/Node.idl
Source/WebCore/dom/ParentNode.idl
Source/WebCore/dom/Range.idl
Source/WebCore/dom/ShadowRoot.idl
Source/WebCore/dom/Text.idl
Source/WebCore/fileapi/FileReader.idl
Source/WebCore/fileapi/FileReaderSync.idl
Source/WebCore/html/DOMTokenList.idl
Source/WebCore/html/DOMURL.idl
Source/WebCore/html/HTMLCanvasElement.idl
Source/WebCore/html/HTMLElement.idl
Source/WebCore/html/HTMLEmbedElement.idl
Source/WebCore/html/HTMLFrameElement.idl
Source/WebCore/html/HTMLIFrameElement.idl
Source/WebCore/html/HTMLInputElement.idl
Source/WebCore/html/HTMLMarqueeElement.idl
Source/WebCore/html/HTMLMediaElement.idl
Source/WebCore/html/HTMLObjectElement.idl
Source/WebCore/html/HTMLOptionElement.idl
Source/WebCore/html/HTMLOptionsCollection.idl
Source/WebCore/html/HTMLProgressElement.idl
Source/WebCore/html/HTMLSelectElement.idl
Source/WebCore/html/HTMLTableElement.idl
Source/WebCore/html/HTMLTableRowElement.idl
Source/WebCore/html/HTMLTableSectionElement.idl
Source/WebCore/html/HTMLTextAreaElement.idl
Source/WebCore/html/HTMLVideoElement.idl
Source/WebCore/html/ImageData.idl
Source/WebCore/html/MediaController.idl
Source/WebCore/html/TimeRanges.idl
Source/WebCore/html/URLUtils.idl
Source/WebCore/html/canvas/CanvasGradient.idl
Source/WebCore/html/canvas/CanvasPath.idl
Source/WebCore/html/canvas/CanvasRenderingContext2D.idl
Source/WebCore/html/canvas/OESVertexArrayObject.idl
Source/WebCore/html/canvas/WebGLRenderingContextBase.idl
Source/WebCore/html/track/DataCue.idl
Source/WebCore/html/track/TextTrack.idl
Source/WebCore/html/track/TextTrackCue.idl
Source/WebCore/html/track/VTTCue.idl
Source/WebCore/html/track/VTTRegion.idl
Source/WebCore/loader/appcache/DOMApplicationCache.idl
Source/WebCore/page/Crypto.idl
Source/WebCore/page/DOMSelection.idl
Source/WebCore/page/DOMWindow.idl
Source/WebCore/page/EventSource.idl
Source/WebCore/page/History.idl
Source/WebCore/page/Location.idl
Source/WebCore/page/Performance.idl
Source/WebCore/page/UserMessageHandler.idl
Source/WebCore/page/WindowOrWorkerGlobalScope.idl
Source/WebCore/storage/Storage.idl
Source/WebCore/svg/SVGAltGlyphElement.idl
Source/WebCore/svg/SVGAngle.idl
Source/WebCore/svg/SVGAnimatedBoolean.idl
Source/WebCore/svg/SVGAnimatedEnumeration.idl
Source/WebCore/svg/SVGAnimatedInteger.idl
Source/WebCore/svg/SVGAnimatedNumber.idl
Source/WebCore/svg/SVGAnimatedString.idl
Source/WebCore/svg/SVGAnimationElement.idl
Source/WebCore/svg/SVGColor.idl
Source/WebCore/svg/SVGGlyphRefElement.idl
Source/WebCore/svg/SVGGraphicsElement.idl
Source/WebCore/svg/SVGLength.idl
Source/WebCore/svg/SVGLengthList.idl
Source/WebCore/svg/SVGMatrix.idl
Source/WebCore/svg/SVGNumberList.idl
Source/WebCore/svg/SVGPaint.idl
Source/WebCore/svg/SVGPathSegList.idl
Source/WebCore/svg/SVGPointList.idl
Source/WebCore/svg/SVGPreserveAspectRatio.idl
Source/WebCore/svg/SVGStringList.idl
Source/WebCore/svg/SVGStyleElement.idl
Source/WebCore/svg/SVGTextContentElement.idl
Source/WebCore/svg/SVGTransformList.idl
Source/WebCore/svg/SVGViewSpec.idl
Source/WebCore/testing/InternalSettings.idl
Source/WebCore/testing/Internals.idl
Source/WebCore/workers/DedicatedWorkerGlobalScope.idl
Source/WebCore/workers/Worker.idl
Source/WebCore/xml/DOMParser.idl
Source/WebCore/xml/XMLHttpRequest.idl
Source/WebCore/xml/XPathEvaluator.idl
Source/WebCore/xml/XPathExpression.idl
Source/WebCore/xml/XPathResult.idl
Source/WebKit/win/ChangeLog
Source/WebKit/win/Interfaces/DOMEvents.idl
Tools/ChangeLog
Tools/Scripts/do-webcore-rename

index 26bb63e..b06a77d 100644 (file)
@@ -1,3 +1,232 @@
+2016-10-02  Darin Adler  <darin@apple.com>
+
+        Rename ExceptionCode-based exception handling to "legacy"
+        https://bugs.webkit.org/show_bug.cgi?id=162859
+
+        Reviewed by Chris Dumez.
+
+        RaisesException is now MayThrowLegacyException.
+
+        A follow-up patch soon will add MayThrowException for the new style,
+        where we use ExceptionOr<> as the return type instead of an ExceptionCode
+        out argument.
+
+        * bindings/scripts/CodeGeneratorJS.pm:
+        Removed the quotation marks from the syntax object->{PropertyName} so the
+        renaming script could handle it. Tweaked various comments and logic for clarity.
+        Changed to use the perl "x if y" syntax for brevity in many places.
+        Renamed with the script and by hand. Added code to skip including the same header
+        in both the implementation file and the header, just to make generated bindings
+        slightly smaller and faster to compile. Used "using" instead of "typedef".
+
+        * bindings/scripts/IDLAttributes.txt: Updated from old names to new ones.
+
+        * Modules/applepay/ApplePaySession.idl:
+        * Modules/encryptedmedia/MediaKeySession.idl:
+        * Modules/encryptedmedia/MediaKeys.idl:
+        * Modules/fetch/FetchHeaders.idl:
+        * Modules/fetch/FetchRequest.idl:
+        * Modules/fetch/FetchResponse.idl:
+        * Modules/indexeddb/IDBCursor.idl:
+        * Modules/indexeddb/IDBDatabase.idl:
+        * Modules/indexeddb/IDBFactory.idl:
+        * Modules/indexeddb/IDBIndex.idl:
+        * Modules/indexeddb/IDBKeyRange.idl:
+        * Modules/indexeddb/IDBObjectStore.idl:
+        * Modules/indexeddb/IDBRequest.idl:
+        * Modules/indexeddb/IDBTransaction.idl:
+        * Modules/mediasource/MediaSource.idl:
+        * Modules/mediasource/SourceBuffer.idl:
+        * Modules/mediastream/MediaDevices.idl:
+        * Modules/mediastream/RTCDTMFSender.idl:
+        * Modules/mediastream/RTCDataChannel.idl:
+        * Modules/mediastream/RTCIceCandidate.idl:
+        * Modules/mediastream/RTCPeerConnection.idl:
+        * Modules/mediastream/RTCRtpSender.idl:
+        * Modules/mediastream/RTCSessionDescription.idl:
+        * Modules/navigatorcontentutils/NavigatorContentUtils.idl:
+        * Modules/notifications/NotificationCenter.idl:
+        * Modules/webaudio/AnalyserNode.idl:
+        * Modules/webaudio/AudioBuffer.idl:
+        * Modules/webaudio/AudioBufferSourceNode.idl:
+        * Modules/webaudio/AudioContext.idl:
+        * Modules/webaudio/AudioNode.idl:
+        * Modules/webaudio/ConvolverNode.idl:
+        * Modules/webaudio/OfflineAudioContext.idl:
+        * Modules/webaudio/OscillatorNode.idl:
+        * Modules/webdatabase/DOMWindowWebDatabase.idl:
+        * Modules/webdatabase/SQLResultSet.idl:
+        * Modules/websockets/WebSocket.idl:
+        * bindings/scripts/test/TestImplements.idl:
+        * bindings/scripts/test/TestInterface.idl:
+        * bindings/scripts/test/TestNamedConstructor.idl:
+        * bindings/scripts/test/TestNondeterministic.idl:
+        * bindings/scripts/test/TestObj.idl:
+        * bindings/scripts/test/TestSupplemental.idl:
+        * bindings/scripts/test/TestTypedefs.idl:
+        * css/CSSCharsetRule.idl:
+        * css/CSSMediaRule.idl:
+        * css/CSSPrimitiveValue.idl:
+        * css/CSSRule.idl:
+        * css/CSSStyleDeclaration.idl:
+        * css/CSSStyleSheet.idl:
+        * css/CSSSupportsRule.idl:
+        * css/CSSValue.idl:
+        * css/FontFace.idl:
+        * css/FontFaceSet.idl:
+        * css/MediaList.idl:
+        * css/WebKitCSSMatrix.idl:
+        * dom/CharacterData.idl:
+        * dom/ChildNode.idl:
+        * dom/CustomElementRegistry.idl:
+        * dom/DataTransferItemList.idl:
+        * dom/Document.idl:
+        * dom/Element.idl:
+        * dom/EventTarget.idl:
+        * dom/MessagePort.idl:
+        * dom/MutationObserver.idl:
+        * dom/NamedNodeMap.idl:
+        * dom/Node.idl:
+        * dom/ParentNode.idl:
+        * dom/Range.idl:
+        * dom/ShadowRoot.idl:
+        * dom/Text.idl:
+        * fileapi/FileReader.idl:
+        * fileapi/FileReaderSync.idl:
+        * html/DOMTokenList.idl:
+        * html/DOMURL.idl:
+        * html/HTMLCanvasElement.idl:
+        * html/HTMLElement.idl:
+        * html/HTMLEmbedElement.idl:
+        * html/HTMLFrameElement.idl:
+        * html/HTMLIFrameElement.idl:
+        * html/HTMLInputElement.idl:
+        * html/HTMLMarqueeElement.idl:
+        * html/HTMLMediaElement.idl:
+        * html/HTMLObjectElement.idl:
+        * html/HTMLOptionElement.idl:
+        * html/HTMLOptionsCollection.idl:
+        * html/HTMLProgressElement.idl:
+        * html/HTMLSelectElement.idl:
+        * html/HTMLTableElement.idl:
+        * html/HTMLTableRowElement.idl:
+        * html/HTMLTableSectionElement.idl:
+        * html/HTMLTextAreaElement.idl:
+        * html/HTMLVideoElement.idl:
+        * html/ImageData.idl:
+        * html/MediaController.idl:
+        * html/TimeRanges.idl:
+        * html/URLUtils.idl:
+        * html/canvas/CanvasGradient.idl:
+        * html/canvas/CanvasPath.idl:
+        * html/canvas/CanvasRenderingContext2D.idl:
+        * html/canvas/OESVertexArrayObject.idl:
+        * html/canvas/WebGLRenderingContextBase.idl:
+        * html/track/DataCue.idl:
+        * html/track/TextTrack.idl:
+        * html/track/TextTrackCue.idl:
+        * html/track/VTTCue.idl:
+        * html/track/VTTRegion.idl:
+        * loader/appcache/DOMApplicationCache.idl:
+        * page/Crypto.idl:
+        * page/DOMSelection.idl:
+        * page/DOMWindow.idl:
+        * page/EventSource.idl:
+        * page/History.idl:
+        * page/Location.idl:
+        * page/Performance.idl:
+        * page/UserMessageHandler.idl:
+        * page/WindowOrWorkerGlobalScope.idl:
+        * storage/Storage.idl:
+        * svg/SVGAltGlyphElement.idl:
+        * svg/SVGAngle.idl:
+        * svg/SVGAnimatedBoolean.idl:
+        * svg/SVGAnimatedEnumeration.idl:
+        * svg/SVGAnimatedInteger.idl:
+        * svg/SVGAnimatedNumber.idl:
+        * svg/SVGAnimatedString.idl:
+        * svg/SVGAnimationElement.idl:
+        * svg/SVGColor.idl:
+        * svg/SVGGlyphRefElement.idl:
+        * svg/SVGGraphicsElement.idl:
+        * svg/SVGLength.idl:
+        * svg/SVGLengthList.idl:
+        * svg/SVGMatrix.idl:
+        * svg/SVGNumberList.idl:
+        * svg/SVGPaint.idl:
+        * svg/SVGPathSegList.idl:
+        * svg/SVGPointList.idl:
+        * svg/SVGPreserveAspectRatio.idl:
+        * svg/SVGStringList.idl:
+        * svg/SVGStyleElement.idl:
+        * svg/SVGTextContentElement.idl:
+        * svg/SVGTransformList.idl:
+        * svg/SVGViewSpec.idl:
+        * testing/InternalSettings.idl:
+        * testing/Internals.idl:
+        * workers/DedicatedWorkerGlobalScope.idl:
+        * workers/Worker.idl:
+        * xml/DOMParser.idl:
+        * xml/XMLHttpRequest.idl:
+        * xml/XPathEvaluator.idl:
+        * xml/XPathExpression.idl:
+        * xml/XPathResult.idl:
+        Allowed the rename script to rename the exception-related extended attributes.
+
+        * bindings/scripts/test/JS/JSInterfaceName.cpp:
+        * bindings/scripts/test/JS/JSInterfaceName.h:
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+        * bindings/scripts/test/JS/JSTestActiveDOMObject.h:
+        * bindings/scripts/test/JS/JSTestCallback.cpp:
+        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
+        * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
+        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
+        * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
+        * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
+        * bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
+        * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
+        * bindings/scripts/test/JS/JSTestEventConstructor.h:
+        * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+        * bindings/scripts/test/JS/JSTestEventTarget.h:
+        * bindings/scripts/test/JS/JSTestException.cpp:
+        * bindings/scripts/test/JS/JSTestException.h:
+        * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
+        * bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
+        * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
+        * bindings/scripts/test/JS/JSTestGlobalObject.h:
+        * bindings/scripts/test/JS/JSTestInterface.cpp:
+        * bindings/scripts/test/JS/JSTestInterface.h:
+        * bindings/scripts/test/JS/JSTestIterable.cpp:
+        * bindings/scripts/test/JS/JSTestIterable.h:
+        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
+        * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.h:
+        * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
+        * bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
+        * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
+        * bindings/scripts/test/JS/JSTestNamedConstructor.h:
+        * bindings/scripts/test/JS/JSTestNode.cpp:
+        * bindings/scripts/test/JS/JSTestNode.h:
+        * bindings/scripts/test/JS/JSTestNondeterministic.cpp:
+        * bindings/scripts/test/JS/JSTestNondeterministic.h:
+        * bindings/scripts/test/JS/JSTestObj.cpp:
+        * bindings/scripts/test/JS/JSTestObj.h:
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
+        * bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
+        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
+        * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
+        * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+        * bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+        * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
+        * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+        * bindings/scripts/test/JS/JSTestTypedefs.h:
+        * bindings/scripts/test/JS/JSattribute.cpp:
+        * bindings/scripts/test/JS/JSattribute.h:
+        * bindings/scripts/test/JS/JSreadonly.cpp:
+        * bindings/scripts/test/JS/JSreadonly.h:
+        Regenerated.
+
+
 2016-10-02  Wenson Hsieh  <wenson_hsieh@apple.com>
 
         Media controls for Soundcloud easily falls out of sync with what's actually playing
index 97936f9..8fa6cc7 100644 (file)
@@ -28,7 +28,7 @@
     Conditional=APPLE_PAY,
     Constructor(unsigned long version, Dictionary paymentRequest),
     ConstructorCallWith=Document,
-    ConstructorRaisesException,
+    ConstructorMayThrowLegacyException,
     EnabledBySetting=ApplePay,
 ] interface ApplePaySession : EventTarget {
     const unsigned short STATUS_SUCCESS = 0;
     const unsigned short STATUS_PIN_INCORRECT = 6;
     const unsigned short STATUS_PIN_LOCKOUT = 7;
 
-    [CallWith=ScriptExecutionContext, RaisesException] static boolean supportsVersion(unsigned long version);
-    [CallWith=ScriptExecutionContext, RaisesException] static boolean canMakePayments();
-    [CallWith=ScriptExecutionContext, RaisesException] static Promise canMakePaymentsWithActiveCard(DOMString merchantIdentifier);
-    [CallWith=ScriptExecutionContext, RaisesException] static Promise openPaymentSetup(DOMString merchantIdentifier);
+    [CallWith=ScriptExecutionContext, MayThrowLegacyException] static boolean supportsVersion(unsigned long version);
+    [CallWith=ScriptExecutionContext, MayThrowLegacyException] static boolean canMakePayments();
+    [CallWith=ScriptExecutionContext, MayThrowLegacyException] static Promise canMakePaymentsWithActiveCard(DOMString merchantIdentifier);
+    [CallWith=ScriptExecutionContext, MayThrowLegacyException] static Promise openPaymentSetup(DOMString merchantIdentifier);
 
-    [RaisesException] void begin();
-    [RaisesException] void abort();
-    [RaisesException] void completeMerchantValidation(Dictionary merchantSession);
-    [Custom, RaisesException] void completeShippingMethodSelection(unsigned short status, Dictionary newTotal, sequence<Dictionary> newLineItems);
-    [Custom, RaisesException] void completeShippingContactSelection(unsigned short status, sequence<Dictionary> newShippingMethods, Dictionary newTotal, sequence<Dictionary> newLineItems);
-    [Custom, RaisesException] void completePaymentMethodSelection(Dictionary newTotal, sequence<Dictionary> newLineItems);
-    [RaisesException] void completePayment(unsigned short status);
+    [MayThrowLegacyException] void begin();
+    [MayThrowLegacyException] void abort();
+    [MayThrowLegacyException] void completeMerchantValidation(Dictionary merchantSession);
+    [Custom, MayThrowLegacyException] void completeShippingMethodSelection(unsigned short status, Dictionary newTotal, sequence<Dictionary> newLineItems);
+    [Custom, MayThrowLegacyException] void completeShippingContactSelection(unsigned short status, sequence<Dictionary> newShippingMethods, Dictionary newTotal, sequence<Dictionary> newLineItems);
+    [Custom, MayThrowLegacyException] void completePaymentMethodSelection(Dictionary newTotal, sequence<Dictionary> newLineItems);
+    [MayThrowLegacyException] void completePayment(unsigned short status);
 
     attribute EventHandler onvalidatemerchant;
     attribute EventHandler onpaymentmethodselected;
index 59559cf..c736cc5 100644 (file)
@@ -36,7 +36,7 @@
     readonly attribute DOMString sessionId;
 
     // session operations
-    [RaisesException] void update(Uint8Array key);
+    [MayThrowLegacyException] void update(Uint8Array key);
     void close();
     
     attribute EventHandler onwebkitkeyadded;
index c8688fe..05b5195 100644 (file)
 [
     Conditional=ENCRYPTED_MEDIA_V2,
     Constructor(DOMString keySystem),
-    ConstructorRaisesException,
+    ConstructorMayThrowLegacyException,
     InterfaceName=WebKitMediaKeys,
 ] interface MediaKeys {
-    [CallWith=ScriptExecutionContext, RaisesException] MediaKeySession createSession(DOMString type, Uint8Array initData);
+    [CallWith=ScriptExecutionContext, MayThrowLegacyException] MediaKeySession createSession(DOMString type, Uint8Array initData);
     static boolean isTypeSupported(DOMString keySystem, optional DOMString type);
     readonly attribute DOMString keySystem;
 };
index a733c54..153ddbb 100644 (file)
     PrivateIdentifier,
     PublicIdentifier]
 interface FetchHeaders {
-    [RaisesException] void append(DOMString name, DOMString value);
-    [RaisesException, ImplementedAs=remove] void delete(DOMString name);
-    [RaisesException] DOMString? get(DOMString name);
-    [RaisesException] boolean has(DOMString name);
-    [RaisesException] void set(DOMString name, DOMString value);
+    [MayThrowLegacyException] void append(DOMString name, DOMString value);
+    [MayThrowLegacyException, ImplementedAs=remove] void delete(DOMString name);
+    [MayThrowLegacyException] DOMString? get(DOMString name);
+    [MayThrowLegacyException] boolean has(DOMString name);
+    [MayThrowLegacyException] void set(DOMString name, DOMString value);
 
     [EnabledAtRuntime=DOMIterator] iterable<DOMString, DOMString>;
 
-    [PrivateIdentifier, RaisesException, ImplementedAs=append] void appendFromJS(DOMString name, DOMString value);
+    [PrivateIdentifier, MayThrowLegacyException, ImplementedAs=append] void appendFromJS(DOMString name, DOMString value);
     [PrivateIdentifier, ImplementedAs=fill] void fillFromJS(FetchHeaders? headers);
 };
index e79e177..5cfe1d2 100644 (file)
@@ -60,10 +60,10 @@ interface FetchRequest {
     readonly attribute RequestRedirect redirect;
     readonly attribute DOMString integrity;
 
-    [NewObject, CallWith=ScriptExecutionContext, RaisesException] FetchRequest clone();
+    [NewObject, CallWith=ScriptExecutionContext, MayThrowLegacyException] FetchRequest clone();
 
-    [PrivateIdentifier, RaisesException] FetchHeaders initializeWith(FetchRequest input, Dictionary init);
-    [PrivateIdentifier, RaisesException] FetchHeaders initializeWith(DOMString input, Dictionary init);
-    [PrivateIdentifier, RaisesException, CallWith=ScriptState] void setBody(any body, FetchRequest? request);
+    [PrivateIdentifier, MayThrowLegacyException] FetchHeaders initializeWith(FetchRequest input, Dictionary init);
+    [PrivateIdentifier, MayThrowLegacyException] FetchHeaders initializeWith(DOMString input, Dictionary init);
+    [PrivateIdentifier, MayThrowLegacyException, CallWith=ScriptState] void setBody(any body, FetchRequest? request);
 };
 FetchRequest implements FetchBody;
index 42815d3..925b5bf 100644 (file)
@@ -40,7 +40,7 @@ enum ResponseType { "basic", "cors", "default", "error", "opaque", "opaqueredire
 ]
 interface FetchResponse {
     [NewObject, CallWith=ScriptExecutionContext] static FetchResponse error();
-    [NewObject, CallWith=ScriptExecutionContext, RaisesException] static FetchResponse redirect(DOMString url, optional unsigned short status = 302);
+    [NewObject, CallWith=ScriptExecutionContext, MayThrowLegacyException] static FetchResponse redirect(DOMString url, optional unsigned short status = 302);
 
     readonly attribute ResponseType type;
 
@@ -71,7 +71,7 @@ interface FetchResponse {
 
     [PrivateIdentifier] Promise consume(unsigned short type);
     [PrivateIdentifier] boolean isLoading();
-    [PrivateIdentifier, RaisesException] void setStatus(unsigned short status, DOMString statusText);
+    [PrivateIdentifier, MayThrowLegacyException] void setStatus(unsigned short status, DOMString statusText);
     [CallWith=ScriptState, PrivateIdentifier] void initializeWith(any body);
     [PrivateIdentifier, NewObject] ReadableStreamSource createReadableStreamSource();
     [PrivateIdentifier] boolean isDisturbed();
index 8d44d2c..00e7e6e 100644 (file)
@@ -36,8 +36,8 @@
     readonly attribute any key;
     readonly attribute any primaryKey;
 
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest update(any value);
-    [RaisesExceptionWithMessage] void advance([EnforceRange] unsigned long count);
-    [CallWith=ScriptState, ImplementedAs=continueFunction, RaisesExceptionWithMessage] void continue(optional any key);
-    [CallWith=ScriptState, ImplementedAs=deleteFunction, RaisesExceptionWithMessage] IDBRequest delete();
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest update(any value);
+    [MayThrowLegacyExceptionWithMessage] void advance([EnforceRange] unsigned long count);
+    [CallWith=ScriptState, ImplementedAs=continueFunction, MayThrowLegacyExceptionWithMessage] void continue(optional any key);
+    [CallWith=ScriptState, ImplementedAs=deleteFunction, MayThrowLegacyExceptionWithMessage] IDBRequest delete();
 };
index 2445d55..9cf1621 100644 (file)
     readonly attribute unsigned long long version;
     readonly attribute DOMStringList objectStoreNames;
 
-    [Custom, RaisesExceptionWithMessage] IDBObjectStore createObjectStore(DOMString name, optional Dictionary options);
-    [RaisesExceptionWithMessage] void deleteObjectStore(DOMString name);
-    [RaisesExceptionWithMessage] IDBTransaction transaction(DOMString storeName, optional DOMString mode = "readonly");
-    [RaisesExceptionWithMessage] IDBTransaction transaction(sequence<DOMString> storeNames, optional DOMString mode = "readonly");
+    [Custom, MayThrowLegacyExceptionWithMessage] IDBObjectStore createObjectStore(DOMString name, optional Dictionary options);
+    [MayThrowLegacyExceptionWithMessage] void deleteObjectStore(DOMString name);
+    [MayThrowLegacyExceptionWithMessage] IDBTransaction transaction(DOMString storeName, optional DOMString mode = "readonly");
+    [MayThrowLegacyExceptionWithMessage] IDBTransaction transaction(sequence<DOMString> storeNames, optional DOMString mode = "readonly");
     // FIXME: This is not part of the spec, but is needed for compatibility.
     // See https://github.com/w3c/IndexedDB/issues/85
-    [RaisesExceptionWithMessage] IDBTransaction transaction(DOMStringList storeNames, optional DOMString mode = "readonly");
+    [MayThrowLegacyExceptionWithMessage] IDBTransaction transaction(DOMStringList storeNames, optional DOMString mode = "readonly");
     void close();
 
     attribute EventHandler onabort;
index 351ba80..3c605a2 100644 (file)
@@ -28,8 +28,8 @@
     EnabledAtRuntime=IndexedDB,
     SkipVTableValidation,
 ] interface IDBFactory {
-    [CallWith=ScriptExecutionContext, RaisesExceptionWithMessage] IDBOpenDBRequest open(DOMString name, [EnforceRange] optional unsigned long long version);
-    [CallWith=ScriptExecutionContext, RaisesExceptionWithMessage] IDBOpenDBRequest deleteDatabase(DOMString name);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] short cmp(any first, any second);
+    [CallWith=ScriptExecutionContext, MayThrowLegacyExceptionWithMessage] IDBOpenDBRequest open(DOMString name, [EnforceRange] optional unsigned long long version);
+    [CallWith=ScriptExecutionContext, MayThrowLegacyExceptionWithMessage] IDBOpenDBRequest deleteDatabase(DOMString name);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] short cmp(any first, any second);
 };
 
index 87bd045..6ffd6d0 100644 (file)
     readonly attribute boolean multiEntry;
     readonly attribute boolean unique;
 
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest openCursor(optional IDBKeyRange? range = null, optional DOMString direction = "next");
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest openCursor(any key, optional DOMString direction = "next");
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest openCursor(optional IDBKeyRange? range = null, optional DOMString direction = "next");
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest openCursor(any key, optional DOMString direction = "next");
 
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest openKeyCursor(optional IDBKeyRange? range = null, optional DOMString direction = "next");
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest openKeyCursor(any key, optional DOMString direction = "next");
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest openKeyCursor(optional IDBKeyRange? range = null, optional DOMString direction = "next");
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest openKeyCursor(any key, optional DOMString direction = "next");
 
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest get(IDBKeyRange? key);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest get(any key);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest getKey(IDBKeyRange? key);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest getKey(any key);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest count(optional IDBKeyRange? range = null);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest count(any key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest get(IDBKeyRange? key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest get(any key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest getKey(IDBKeyRange? key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest getKey(any key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest count(optional IDBKeyRange? range = null);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest count(any key);
 };
 
index 5a0754d..4ac4591 100644 (file)
@@ -33,8 +33,8 @@
     readonly attribute boolean lowerOpen;
     readonly attribute boolean upperOpen;
 
-    [CallWith=ScriptState, RaisesException] static IDBKeyRange only(any value);
-    [CallWith=ScriptState, RaisesException] static IDBKeyRange lowerBound(any lower, optional boolean open = false);
-    [CallWith=ScriptState, RaisesException] static IDBKeyRange upperBound(any upper, optional boolean open = false);
-    [CallWith=ScriptState, RaisesException] static IDBKeyRange bound(any lower, any upper, optional boolean lowerOpen = false, optional boolean upperOpen = false);
+    [CallWith=ScriptState, MayThrowLegacyException] static IDBKeyRange only(any value);
+    [CallWith=ScriptState, MayThrowLegacyException] static IDBKeyRange lowerBound(any lower, optional boolean open = false);
+    [CallWith=ScriptState, MayThrowLegacyException] static IDBKeyRange upperBound(any upper, optional boolean open = false);
+    [CallWith=ScriptState, MayThrowLegacyException] static IDBKeyRange bound(any lower, any upper, optional boolean lowerOpen = false, optional boolean upperOpen = false);
 };
index db08796..1559d31 100644 (file)
     readonly attribute IDBTransaction transaction;
     readonly attribute boolean autoIncrement;
 
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest put(any value, optional any key);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest add(any value, optional any key);
-    [CallWith=ScriptState, ImplementedAs=deleteFunction, RaisesExceptionWithMessage] IDBRequest delete(IDBKeyRange? keyRange);
-    [CallWith=ScriptState, ImplementedAs=deleteFunction, RaisesExceptionWithMessage] IDBRequest delete(any key);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest get(IDBKeyRange? key);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest get(any key);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest clear();
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest openCursor(optional IDBKeyRange? range = null, optional DOMString direction = "next");
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest openCursor(any key, optional DOMString direction = "next");
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBIndex createIndex(DOMString name, sequence<DOMString> keyPath, optional IDBIndexParameters options);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBIndex createIndex(DOMString name, DOMString keyPath, optional IDBIndexParameters options);
-    [RaisesExceptionWithMessage] IDBIndex index(DOMString name);
-    [RaisesExceptionWithMessage] void deleteIndex(DOMString name);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest count(optional IDBKeyRange? range = null);
-    [CallWith=ScriptState, RaisesExceptionWithMessage] IDBRequest count(any key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest put(any value, optional any key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest add(any value, optional any key);
+    [CallWith=ScriptState, ImplementedAs=deleteFunction, MayThrowLegacyExceptionWithMessage] IDBRequest delete(IDBKeyRange? keyRange);
+    [CallWith=ScriptState, ImplementedAs=deleteFunction, MayThrowLegacyExceptionWithMessage] IDBRequest delete(any key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest get(IDBKeyRange? key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest get(any key);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest clear();
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest openCursor(optional IDBKeyRange? range = null, optional DOMString direction = "next");
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest openCursor(any key, optional DOMString direction = "next");
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBIndex createIndex(DOMString name, sequence<DOMString> keyPath, optional IDBIndexParameters options);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBIndex createIndex(DOMString name, DOMString keyPath, optional IDBIndexParameters options);
+    [MayThrowLegacyExceptionWithMessage] IDBIndex index(DOMString name);
+    [MayThrowLegacyExceptionWithMessage] void deleteIndex(DOMString name);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest count(optional IDBKeyRange? range = null);
+    [CallWith=ScriptState, MayThrowLegacyExceptionWithMessage] IDBRequest count(any key);
 };
 
 dictionary IDBIndexParameters {
index a2bea16..398e165 100644 (file)
@@ -35,7 +35,7 @@
     SkipVTableValidation,
 ] interface IDBRequest : EventTarget {
     [CustomGetter] readonly attribute any result;
-    [GetterRaisesExceptionWithMessage] readonly attribute DOMError error;
+    [GetterMayThrowLegacyExceptionWithMessage] readonly attribute DOMError error;
     [CustomGetter] readonly attribute any source;
     readonly attribute IDBTransaction transaction;
     readonly attribute DOMString readyState;
index eeb0896..57a2c70 100644 (file)
@@ -34,8 +34,8 @@
     readonly attribute IDBDatabase db;
     readonly attribute DOMError error;
 
-    [RaisesExceptionWithMessage] IDBObjectStore objectStore (DOMString name);
-    [RaisesExceptionWithMessage] void abort ();
+    [MayThrowLegacyExceptionWithMessage] IDBObjectStore objectStore (DOMString name);
+    [MayThrowLegacyExceptionWithMessage] void abort ();
 
     attribute EventHandler onabort;
     attribute EventHandler oncomplete;
index 20229ce..37e9da4 100644 (file)
@@ -46,19 +46,19 @@ enum EndOfStreamError {
     // Subset of sourceBuffers that provide data for the selected/enabled tracks.
     readonly attribute SourceBufferList activeSourceBuffers;
 
-    [SetterRaisesException] attribute unrestricted double duration;
+    [SetterMayThrowLegacyException] attribute unrestricted double duration;
 
-    [RaisesException] SourceBuffer addSourceBuffer(DOMString type);
-    [RaisesException] void removeSourceBuffer(SourceBuffer buffer);
+    [MayThrowLegacyException] SourceBuffer addSourceBuffer(DOMString type);
+    [MayThrowLegacyException] void removeSourceBuffer(SourceBuffer buffer);
 
     readonly attribute DOMString readyState;
     
-    [RaisesException] void endOfStream(optional EndOfStreamError error);
+    [MayThrowLegacyException] void endOfStream(optional EndOfStreamError error);
 
     static boolean isTypeSupported (DOMString type);
 
-    [RaisesException] void setLiveSeekableRange(double start, double end);
-    [RaisesException] void clearLiveSeekableRange();
+    [MayThrowLegacyException] void setLiveSeekableRange(double start, double end);
+    [MayThrowLegacyException] void clearLiveSeekableRange();
 
     attribute EventHandler onsourceopen;
     attribute EventHandler onsourceended;
index 3219a77..e45b7c3 100644 (file)
     ExportMacro=WEBCORE_EXPORT,
 ] interface SourceBuffer : EventTarget {
 
-    [SetterRaisesException] attribute AppendMode mode;
+    [SetterMayThrowLegacyException] attribute AppendMode mode;
 
     readonly attribute boolean updating;
   
     // Returns the time ranges buffered.
-    [GetterRaisesException] readonly attribute TimeRanges buffered;
+    [GetterMayThrowLegacyException] readonly attribute TimeRanges buffered;
 
     // Applies an offset to media segment timestamps.
-    [SetterRaisesException] attribute double timestampOffset;
+    [SetterMayThrowLegacyException] attribute double timestampOffset;
 
     // Track support
     [Conditional=VIDEO_TRACK] readonly attribute AudioTrackList audioTracks;
     [Conditional=VIDEO_TRACK] readonly attribute VideoTrackList videoTracks;
     [Conditional=VIDEO_TRACK] readonly attribute TextTrackList textTracks;
 
-    [SetterRaisesException] attribute double appendWindowStart;
-    [SetterRaisesException] attribute unrestricted double appendWindowEnd;
+    [SetterMayThrowLegacyException] attribute double appendWindowStart;
+    [SetterMayThrowLegacyException] attribute unrestricted double appendWindowEnd;
 
     // Append segment data.
-    [RaisesException] void appendBuffer(ArrayBuffer data);
-    [RaisesException] void appendBuffer(ArrayBufferView data);
+    [MayThrowLegacyException] void appendBuffer(ArrayBuffer data);
+    [MayThrowLegacyException] void appendBuffer(ArrayBufferView data);
 
     // Abort the current segment append sequence.
-    [RaisesException] void abort();
-    [RaisesException] void remove(unrestricted double start, unrestricted double end);
+    [MayThrowLegacyException] void abort();
+    [MayThrowLegacyException] void remove(unrestricted double start, unrestricted double end);
 
     attribute EventHandler onupdatestart;
     attribute EventHandler onupdate;
index 3d16820..1657ab9 100644 (file)
@@ -35,5 +35,5 @@
     MediaTrackSupportedConstraints getSupportedConstraints();
 
     [Custom, PrivateIdentifier, PublicIdentifier] Promise getUserMedia(Dictionary options);
-    [RaisesException] Promise enumerateDevices();
+    [MayThrowLegacyException] Promise enumerateDevices();
 };
index 04434ca..795b939 100644 (file)
@@ -34,7 +34,7 @@
     readonly attribute long duration;
     readonly attribute long interToneGap;
 
-    [RaisesException] void insertDTMF(DOMString tones, optional long duration, optional long interToneGap);
+    [MayThrowLegacyException] void insertDTMF(DOMString tones, optional long duration, optional long interToneGap);
 
     attribute EventHandler ontonechange;
 };
index 55e0d86..5fe6ded 100644 (file)
     readonly attribute DOMString readyState;
     readonly attribute unsigned long bufferedAmount;
 
-    [SetterRaisesException] attribute DOMString binaryType;
+    [SetterMayThrowLegacyException] attribute DOMString binaryType;
 
-    [RaisesException] void send(ArrayBuffer data);
-    [RaisesException] void send(ArrayBufferView data);
-    [RaisesException] void send(Blob data);
-    [RaisesException] void send(DOMString data);
+    [MayThrowLegacyException] void send(ArrayBuffer data);
+    [MayThrowLegacyException] void send(ArrayBufferView data);
+    [MayThrowLegacyException] void send(Blob data);
+    [MayThrowLegacyException] void send(DOMString data);
 
     void close();
 
index 8c2d9be..ac4fdc4 100644 (file)
@@ -32,7 +32,7 @@
 [
     Conditional=WEB_RTC,
     Constructor(Dictionary dictionary),
-    ConstructorRaisesException,
+    ConstructorMayThrowLegacyException,
     PrivateIdentifier,
     PublicIdentifier
 ] interface RTCIceCandidate {
index 2ad1394..f9ee228 100644 (file)
     InterfaceName=webkitRTCPeerConnection,
 ] interface RTCPeerConnection : EventTarget {
     // Private initializer
-    [PrivateIdentifier, CallWith=Document, RaisesException] void initializeWith(Dictionary parameters);
+    [PrivateIdentifier, CallWith=Document, MayThrowLegacyException] void initializeWith(Dictionary parameters);
 
     // RTP Media API extensions
     [PrivateIdentifier, PublicIdentifier] sequence<RTCRtpSender> getSenders();
     sequence<RTCRtpReceiver> getReceivers();
     sequence<RTCRtpTransceiver> getTransceivers();
 
-    [PrivateIdentifier, PublicIdentifier, RaisesException] RTCRtpSender addTrack(MediaStreamTrack track, MediaStream... streams);
-    [PrivateIdentifier, PublicIdentifier, RaisesException] void removeTrack(RTCRtpSender sender);
+    [PrivateIdentifier, PublicIdentifier, MayThrowLegacyException] RTCRtpSender addTrack(MediaStreamTrack track, MediaStream... streams);
+    [PrivateIdentifier, PublicIdentifier, MayThrowLegacyException] void removeTrack(RTCRtpSender sender);
 
-    [RaisesException] RTCRtpTransceiver addTransceiver(MediaStreamTrack track, optional RTCRtpTransceiverInit init);
-    [RaisesException] RTCRtpTransceiver addTransceiver(DOMString kind, optional RTCRtpTransceiverInit init);
+    [MayThrowLegacyException] RTCRtpTransceiver addTransceiver(MediaStreamTrack track, optional RTCRtpTransceiverInit init);
+    [MayThrowLegacyException] RTCRtpTransceiver addTransceiver(DOMString kind, optional RTCRtpTransceiverInit init);
 
     // Legacy MediaSream-based API (implemented on top of the RTP Media API)
     [JSBuiltin] sequence<MediaStream> getLocalStreams();
@@ -98,7 +98,7 @@
     readonly attribute DOMString iceConnectionState;
 
     RTCConfiguration getConfiguration();
-    [RaisesException] void setConfiguration(Dictionary configuration);
+    [MayThrowLegacyException] void setConfiguration(Dictionary configuration);
 
     [JSBuiltin] Promise getStats(optional MediaStreamTrack? selector = null);
     // Legacy signature: Promise getStats(MediaStreamTrack? selector
     [PrivateIdentifier] Promise queuedAddIceCandidate(RTCIceCandidate candidate);
     [PrivateIdentifier] Promise privateGetStats(MediaStreamTrack? selector);
 
-    [RaisesException] RTCDataChannel createDataChannel([TreatNullAs=EmptyString] DOMString label, optional Dictionary options);
+    [MayThrowLegacyException] RTCDataChannel createDataChannel([TreatNullAs=EmptyString] DOMString label, optional Dictionary options);
 
     void close();
 
index e5a3478..0db5a90 100644 (file)
@@ -33,5 +33,5 @@
 ] interface RTCRtpSender {
     readonly attribute MediaStreamTrack? track;
 
-    [RaisesException] Promise replaceTrack(MediaStreamTrack withTrack);
+    [MayThrowLegacyException] Promise replaceTrack(MediaStreamTrack withTrack);
 };
index 735092b..3a028d7 100644 (file)
 [
     Conditional=WEB_RTC,
     Constructor(Dictionary dictionary),
-    ConstructorRaisesException,
+    ConstructorMayThrowLegacyException,
     PrivateIdentifier,
     PublicIdentifier
 ] interface RTCSessionDescription {
-    [SetterRaisesException] readonly attribute RTCSdpType type;
+    [SetterMayThrowLegacyException] readonly attribute RTCSdpType type;
     readonly attribute DOMString sdp;
 
     serializer = {type, sdp};
index a9f4b31..313a0ee 100644 (file)
@@ -20,8 +20,8 @@
 
 // http://www.w3.org/TR/html5/system-state-and-capabilities.html#custom-handlers
 partial interface Navigator {
-    [Conditional=NAVIGATOR_CONTENT_UTILS, RaisesException] void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title);
-    [Conditional=NAVIGATOR_CONTENT_UTILS&CUSTOM_SCHEME_HANDLER, RaisesException] DOMString isProtocolHandlerRegistered(DOMString scheme, DOMString url);
-    [Conditional=NAVIGATOR_CONTENT_UTILS&CUSTOM_SCHEME_HANDLER, RaisesException] void unregisterProtocolHandler(DOMString scheme, DOMString url);
+    [Conditional=NAVIGATOR_CONTENT_UTILS, MayThrowLegacyException] void registerProtocolHandler(DOMString scheme, DOMString url, DOMString title);
+    [Conditional=NAVIGATOR_CONTENT_UTILS&CUSTOM_SCHEME_HANDLER, MayThrowLegacyException] DOMString isProtocolHandlerRegistered(DOMString scheme, DOMString url);
+    [Conditional=NAVIGATOR_CONTENT_UTILS&CUSTOM_SCHEME_HANDLER, MayThrowLegacyException] void unregisterProtocolHandler(DOMString scheme, DOMString url);
 };
 
index ae5b5b6..36cb239 100644 (file)
@@ -34,7 +34,7 @@
     Conditional=LEGACY_NOTIFICATIONS,
     NoInterfaceObject,
 ] interface NotificationCenter {
-   [RaisesException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
+   [MayThrowLegacyException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
 
    long checkPermission();
    void requestPermission(optional VoidCallback? callback);
index bb06a98..33d5fb6 100644 (file)
     Conditional=WEB_AUDIO,
     JSGenerateToJSObject,
 ] interface AnalyserNode : AudioNode {
-    [SetterRaisesException] attribute unsigned long fftSize;
+    [SetterMayThrowLegacyException] attribute unsigned long fftSize;
     readonly attribute unsigned long frequencyBinCount;
 
     // minDecibels / maxDecibels represent the range to scale the FFT analysis data for conversion to unsigned byte values.
-    [SetterRaisesException] attribute unrestricted double minDecibels;
-    [SetterRaisesException] attribute unrestricted double maxDecibels;
+    [SetterMayThrowLegacyException] attribute unrestricted double minDecibels;
+    [SetterMayThrowLegacyException] attribute unrestricted double maxDecibels;
 
     // A value from 0.0 -> 1.0 where 0.0 represents no time averaging with the last analysis frame.
-    [SetterRaisesException] attribute unrestricted double smoothingTimeConstant;
+    [SetterMayThrowLegacyException] attribute unrestricted double smoothingTimeConstant;
 
     // Copies the current frequency data into the passed array.
     // If the array has fewer elements than the frequencyBinCount, the excess elements will be dropped.
index 87e24e8..7b8e0e2 100644 (file)
@@ -39,5 +39,5 @@
 
     // Channel access
     readonly attribute unsigned long numberOfChannels;
-    [RaisesException] Float32Array getChannelData(unsigned long channelIndex);
+    [MayThrowLegacyException] Float32Array getChannelData(unsigned long channelIndex);
 };
index 5ec9d54..0709e06 100644 (file)
@@ -44,8 +44,8 @@
     attribute unrestricted double loopStart;
     attribute unrestricted double loopEnd;
 
-    [RaisesException] void start(optional unrestricted double when = 0, optional unrestricted double grainOffset = 0, optional unrestricted double grainDuration);
-    [RaisesException] void stop(optional unrestricted double when = 0);
+    [MayThrowLegacyException] void start(optional unrestricted double when = 0, optional unrestricted double grainOffset = 0, optional unrestricted double grainDuration);
+    [MayThrowLegacyException] void stop(optional unrestricted double when = 0);
 
     attribute EventHandler onended;
 };
index f3f6f82..82698a9 100644 (file)
@@ -61,8 +61,8 @@ enum AudioContextState {
     // Number of AudioBufferSourceNodes that are currently playing.
     readonly attribute unsigned long activeSourceCount;
     
-    [RaisesException] AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long numberOfFrames, unrestricted float sampleRate);
-    [RaisesException] AudioBuffer createBuffer(ArrayBuffer buffer, boolean mixToMono);
+    [MayThrowLegacyException] AudioBuffer createBuffer(unsigned long numberOfChannels, unsigned long numberOfFrames, unrestricted float sampleRate);
+    [MayThrowLegacyException] AudioBuffer createBuffer(ArrayBuffer buffer, boolean mixToMono);
 
     // Asynchronous audio file data decoding.
     // FIXME: successCallback should be optional and the callbacks should not be nullable. This should also return a Promise.
@@ -71,27 +71,27 @@ enum AudioContextState {
     // Sources
     AudioBufferSourceNode createBufferSource();
 
-    [Conditional=VIDEO, RaisesException] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement);
+    [Conditional=VIDEO, MayThrowLegacyException] MediaElementAudioSourceNode createMediaElementSource(HTMLMediaElement mediaElement);
 
-    [Conditional=MEDIA_STREAM, RaisesException] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream);
+    [Conditional=MEDIA_STREAM, MayThrowLegacyException] MediaStreamAudioSourceNode createMediaStreamSource(MediaStream mediaStream);
     [Conditional=MEDIA_STREAM] MediaStreamAudioDestinationNode createMediaStreamDestination();
 
     // Processing nodes
     GainNode createGain();
-    [RaisesException] DelayNode createDelay(optional unrestricted double maxDelayTime = 1);
+    [MayThrowLegacyException] DelayNode createDelay(optional unrestricted double maxDelayTime = 1);
     BiquadFilterNode createBiquadFilter();
     WaveShaperNode createWaveShaper();
     PannerNode createPanner();
     ConvolverNode createConvolver();
     DynamicsCompressorNode createDynamicsCompressor();
     AnalyserNode createAnalyser();
-    [RaisesException] ScriptProcessorNode createScriptProcessor(unsigned long bufferSize, optional unsigned long numberOfInputChannels = 2, optional unsigned long numberOfOutputChannels = 2);
+    [MayThrowLegacyException] ScriptProcessorNode createScriptProcessor(unsigned long bufferSize, optional unsigned long numberOfInputChannels = 2, optional unsigned long numberOfOutputChannels = 2);
     OscillatorNode createOscillator();
-    [RaisesException] PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag);
+    [MayThrowLegacyException] PeriodicWave createPeriodicWave(Float32Array real, Float32Array imag);
 
     // Channel splitting and merging
-    [RaisesException] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs = 6);
-    [RaisesException] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6);
+    [MayThrowLegacyException] ChannelSplitterNode createChannelSplitter(optional unsigned long numberOfOutputs = 6);
+    [MayThrowLegacyException] ChannelMergerNode createChannelMerger(optional unsigned long numberOfInputs = 6);
 
     // Offline rendering
     // void prepareOfflineBufferRendering(unsigned long numberOfChannels, unsigned long numberOfFrames, unrestricted float sampleRate);
index 9923a10..8533dfc 100644 (file)
     readonly attribute unsigned long numberOfInputs;
     readonly attribute unsigned long numberOfOutputs;
 
-    [SetterRaisesException] attribute unsigned long channelCount;
-    [SetterRaisesException] attribute DOMString channelCountMode;
-    [SetterRaisesException] attribute DOMString channelInterpretation;
+    [SetterMayThrowLegacyException] attribute unsigned long channelCount;
+    [SetterMayThrowLegacyException] attribute DOMString channelCountMode;
+    [SetterMayThrowLegacyException] attribute DOMString channelInterpretation;
 
-    [RaisesException] void connect(AudioNode? destination, optional unsigned long output = 0, optional unsigned long input = 0);
-    [RaisesException] void connect(AudioParam? destination, optional unsigned long output = 0);
-    [RaisesException] void disconnect(optional unsigned long output = 0);
+    [MayThrowLegacyException] void connect(AudioNode? destination, optional unsigned long output = 0, optional unsigned long input = 0);
+    [MayThrowLegacyException] void connect(AudioParam? destination, optional unsigned long output = 0);
+    [MayThrowLegacyException] void disconnect(optional unsigned long output = 0);
 };
index f0d3f74..c9e97e0 100644 (file)
@@ -27,6 +27,6 @@
     Conditional=WEB_AUDIO,
     JSGenerateToJSObject
 ] interface ConvolverNode : AudioNode {
-    [SetterRaisesException] attribute AudioBuffer? buffer;
+    [SetterMayThrowLegacyException] attribute AudioBuffer? buffer;
     attribute boolean normalize;
 };
index e1d1f55..75f9380 100644 (file)
@@ -26,7 +26,7 @@
     Conditional=WEB_AUDIO,
     JSGenerateToJSObject,
     Constructor(unsigned long numberOfChannels, unsigned long numberOfFrames, unrestricted float sampleRate),
-    ConstructorRaisesException,
+    ConstructorMayThrowLegacyException,
     ConstructorCallWith=ScriptExecutionContext,
     InterfaceName=webkitOfflineAudioContext
 ] interface OfflineAudioContext : AudioContext {
index 33f7342..263ac7c 100644 (file)
@@ -35,7 +35,7 @@ enum OscillatorType {
     Conditional=WEB_AUDIO,
     JSGenerateToJSObject,
 ] interface OscillatorNode : AudioNode {
-    [SetterRaisesException] attribute OscillatorType type;
+    [SetterMayThrowLegacyException] attribute OscillatorType type;
 
     // Playback state constants.
     const unsigned short UNSCHEDULED_STATE = 0;
@@ -48,8 +48,8 @@ enum OscillatorType {
     readonly attribute AudioParam frequency; // in Hertz
     readonly attribute AudioParam detune; // in Cents
 
-    [RaisesException] void start(optional unrestricted double when = 0);
-    [RaisesException] void stop(optional unrestricted double when = 0);
+    [MayThrowLegacyException] void start(optional unrestricted double when = 0);
+    [MayThrowLegacyException] void stop(optional unrestricted double when = 0);
 
     void setPeriodicWave(PeriodicWave? wave); // FIXME: The parameter should not be nullable.
 
index 7a536d4..08634f1 100644 (file)
@@ -26,6 +26,6 @@
 
 [
 ] partial interface DOMWindow {
-    [RaisesException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback? creationCallback);
+    [MayThrowLegacyException] Database openDatabase(DOMString name, DOMString version, DOMString displayName, unsigned long estimatedSize, optional DatabaseCallback? creationCallback);
 };
 
index f2ccd45..4f1c2d1 100644 (file)
@@ -30,6 +30,6 @@
     ImplementationLacksVTable
 ] interface SQLResultSet {
     readonly attribute SQLResultSetRowList rows;
-    [GetterRaisesException] readonly attribute long insertId;
+    [GetterMayThrowLegacyException] readonly attribute long insertId;
     readonly attribute long rowsAffected;
 };
index c71881e..f514e6b 100644 (file)
@@ -34,7 +34,7 @@
     Conditional=WEB_SOCKETS,
     Constructor(USVString url, optional sequence<DOMString> protocols = []),
     Constructor(USVString url, DOMString protocol),
-    ConstructorRaisesException,
+    ConstructorMayThrowLegacyException,
     ConstructorCallWith=ScriptExecutionContext,
     EnabledAtRuntime,
     Exposed=(Window,Worker),
     readonly attribute DOMString? protocol;
     readonly attribute DOMString? extensions;
 
-    [SetterRaisesException] attribute DOMString binaryType;
+    [SetterMayThrowLegacyException] attribute DOMString binaryType;
 
-    [RaisesException] void send(ArrayBuffer data);
-    [RaisesException] void send(ArrayBufferView data);
-    [RaisesException] void send(Blob data);
-    [RaisesException] void send(USVString data);
+    [MayThrowLegacyException] void send(ArrayBuffer data);
+    [MayThrowLegacyException] void send(ArrayBufferView data);
+    [MayThrowLegacyException] void send(Blob data);
+    [MayThrowLegacyException] void send(USVString data);
 
-    [RaisesException] void close([Clamp] optional unsigned short code, optional DOMString reason);
+    [MayThrowLegacyException] void close([Clamp] optional unsigned short code, optional DOMString reason);
 };
index 9670c57..d1fd241 100644 (file)
@@ -146,7 +146,7 @@ sub AddStringifierOperationIfNeeded
         my $stringifier = domFunction->new();
         $stringifier->signature(domSignature->new());
         my $extendedAttributeList = {};
-        $extendedAttributeList->{"ImplementedAs"} = $attribute->signature->name;
+        $extendedAttributeList->{ImplementedAs} = $attribute->signature->name;
         $stringifier->signature->extendedAttributes($extendedAttributeList);
         $stringifier->signature->name("toString");
         die "stringifier can only be used on attributes of String types" unless $codeGenerator->IsStringType($attribute->signature->type);
@@ -159,7 +159,7 @@ sub AddStringifierOperationIfNeeded
 sub EventHandlerAttributeEventName
 {
     my $attribute = shift;
-    my $eventType = $attribute->signature->extendedAttributes->{"ImplementedAs"} || $attribute->signature->name;
+    my $eventType = $attribute->signature->extendedAttributes->{ImplementedAs} || $attribute->signature->name;
 
     # Remove the "on" prefix.
     $eventType = substr($eventType, 2);
@@ -171,7 +171,7 @@ sub GetParentClassName
 {
     my $interface = shift;
 
-    return $interface->extendedAttributes->{"JSLegacyParent"} if $interface->extendedAttributes->{"JSLegacyParent"};
+    return $interface->extendedAttributes->{JSLegacyParent} if $interface->extendedAttributes->{JSLegacyParent};
     return "JSDOMObject" unless NeedsImplementationClass($interface);
     return "JSDOMWrapper<" . GetImplClassName($interface->name) . ">" unless $interface->parent;
     return "JS" . $interface->parent;
@@ -188,7 +188,7 @@ sub GetJSCallbackDataType
 {
     my $callbackInterface = shift;
 
-    return $callbackInterface->extendedAttributes->{"IsWeakCallback"} ? "JSCallbackDataWeak" : "JSCallbackDataStrong";
+    return $callbackInterface->extendedAttributes->{IsWeakCallback} ? "JSCallbackDataWeak" : "JSCallbackDataStrong";
 }
 
 sub AddIncludesForTypeInImpl
@@ -211,7 +211,7 @@ sub GetExportMacroForJSClass
 {
     my $interface = shift;
 
-    return $interface->extendedAttributes->{"ExportMacro"} . " " if $interface->extendedAttributes->{"ExportMacro"};
+    return $interface->extendedAttributes->{ExportMacro} . " " if $interface->extendedAttributes->{ExportMacro};
     return "";
 }
 
@@ -257,16 +257,15 @@ sub AddToImplIncludes
 sub IsReadonly
 {
     my $attribute = shift;
-    return $attribute->isReadOnly && !$attribute->signature->extendedAttributes->{"Replaceable"} && !$attribute->signature->extendedAttributes->{"PutForwards"};
+    return $attribute->isReadOnly && !$attribute->signature->extendedAttributes->{Replaceable} && !$attribute->signature->extendedAttributes->{PutForwards};
 }
 
 sub AddClassForwardIfNeeded
 {
     my $interfaceName = shift;
 
-    # SVGAnimatedLength/Number/etc. are typedefs and should not be forward-declared as classes.
+    # SVGAnimatedLength/Number/etc. are not classes so they can't be forward declared as classes.
     return if $codeGenerator->IsSVGAnimatedType($interfaceName);
-
     return if $codeGenerator->IsTypedArrayType($interfaceName);
 
     push(@headerContent, "class $interfaceName;\n\n");
@@ -275,13 +274,13 @@ sub AddClassForwardIfNeeded
 sub GetGenerateIsReachable
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"GenerateIsReachable"};
+    return $interface->extendedAttributes->{GenerateIsReachable};
 }
 
 sub GetCustomIsReachable
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"CustomIsReachable"};
+    return $interface->extendedAttributes->{CustomIsReachable};
 }
 
 sub IsDOMGlobalObject
@@ -336,7 +335,7 @@ sub GenerateGetOwnPropertySlotBody
         }
         push(@getOwnPropertySlotImpl, "        unsigned index = optionalIndex.value();\n");
         # Assume that if there's a setter, the index will be writable
-        if ($interface->extendedAttributes->{"CustomIndexedSetter"}) {
+        if ($interface->extendedAttributes->{CustomIndexedSetter}) {
             push(@getOwnPropertySlotImpl, "        unsigned attributes = 0;\n");
         } else {
             push(@getOwnPropertySlotImpl, "        unsigned attributes = ${namespaceMaybe}ReadOnly;\n");
@@ -346,9 +345,9 @@ sub GenerateGetOwnPropertySlotBody
         push(@getOwnPropertySlotImpl, "    }\n");
     }
 
-    my $hasNamedGetter = $namedGetterFunction || $interface->extendedAttributes->{"CustomNamedGetter"};
+    my $hasNamedGetter = $namedGetterFunction || $interface->extendedAttributes->{CustomNamedGetter};
     if ($hasNamedGetter) {
-        if (!$interface->extendedAttributes->{"OverrideBuiltins"}) {
+        if (!$interface->extendedAttributes->{OverrideBuiltins}) {
             &$ownPropertyCheck();
             &$prototypeCheck();
         }
@@ -375,12 +374,12 @@ sub GenerateGetOwnPropertySlotBody
         }
     }
 
-    if ($interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"}) {
+    if ($interface->extendedAttributes->{JSCustomGetOwnPropertySlotAndDescriptor}) {
         push(@getOwnPropertySlotImpl, "    if (thisObject->getOwnPropertySlotDelegate(state, propertyName, slot))\n");
         push(@getOwnPropertySlotImpl, "        return true;\n");
     }
 
-    if (!$hasNamedGetter || $interface->extendedAttributes->{"OverrideBuiltins"}) {
+    if (!$hasNamedGetter || $interface->extendedAttributes->{OverrideBuiltins}) {
         &$ownPropertyCheck();
     }
 
@@ -395,7 +394,7 @@ sub GenerateHeaderContentHeader
     my $className = "JS" . $interface->name;
 
     my @headerContentHeader;
-    if ($interface->extendedAttributes->{"AppleCopyright"}) {
+    if ($interface->extendedAttributes->{AppleCopyright}) {
         @headerContentHeader = split("\r", $beginAppleCopyrightForHeaderFiles);
     } else {
         @headerContentHeader = split("\r", $headerTemplate);
@@ -414,7 +413,7 @@ sub GenerateImplementationContentHeader
     my $className = "JS" . $interface->name;
 
     my @implContentHeader;
-    if ($interface->extendedAttributes->{"AppleCopyright"}) {
+    if ($interface->extendedAttributes->{AppleCopyright}) {
         @implContentHeader = split("\r", $beginAppleCopyrightForSourceFiles);
     } else {
         @implContentHeader = split("\r", $headerTemplate);
@@ -431,7 +430,7 @@ sub NeedsImplementationClass
 {
     my ($interface) = @_;
 
-    return 0 if $interface->extendedAttributes->{"JSBuiltin"};
+    return 0 if $interface->extendedAttributes->{JSBuiltin};
     return 1;
 }
 
@@ -440,7 +439,7 @@ sub ShouldGenerateToWrapped
     my ($hasParent, $interface) = @_;
 
     return 0 if not NeedsImplementationClass($interface);
-    return 1 if !$hasParent or $interface->extendedAttributes->{"JSGenerateToNativeObject"};
+    return 1 if !$hasParent or $interface->extendedAttributes->{JSGenerateToNativeObject};
     return 1 if $interface->parent && $interface->parent eq "EventTarget";
     return 0;
 }
@@ -450,13 +449,11 @@ sub ShouldGenerateWrapperOwnerCode
     my ($hasParent, $interface) = @_;
 
     return 0 if not NeedsImplementationClass($interface);
-    if (!$hasParent ||
-        GetGenerateIsReachable($interface) ||
-        GetCustomIsReachable($interface) ||
-        $interface->extendedAttributes->{"JSCustomFinalize"} ||
-        $codeGenerator->InheritsExtendedAttribute($interface, "ActiveDOMObject")) {
-        return 1;
-    }
+    return 1 if !$hasParent;
+    return 1 if GetGenerateIsReachable($interface);
+    return 1 if GetCustomIsReachable($interface);
+    return 1 if $interface->extendedAttributes->{JSCustomFinalize};
+    return 1 if $codeGenerator->InheritsExtendedAttribute($interface, "ActiveDOMObject");
     return 0;
 }
 
@@ -464,12 +461,12 @@ sub ShouldGenerateToJSDeclaration
 {
     my ($hasParent, $interface) = @_;
 
-    return 0 if ($interface->extendedAttributes->{"SuppressToJSObject"});
+    return 0 if ($interface->extendedAttributes->{SuppressToJSObject});
     return 0 if not NeedsImplementationClass($interface);
-    return 0 if $interface->extendedAttributes->{"CustomProxyToJSObject"};
-    return 1 if (!$hasParent or $interface->extendedAttributes->{"JSGenerateToJSObject"} or $interface->extendedAttributes->{"CustomToJSObject"});
+    return 0 if $interface->extendedAttributes->{CustomProxyToJSObject};
+    return 1 if (!$hasParent or $interface->extendedAttributes->{JSGenerateToJSObject} or $interface->extendedAttributes->{CustomToJSObject});
     return 1 if $interface->parent && $interface->parent eq "EventTarget";
-    return 1 if $interface->extendedAttributes->{"Constructor"} or $interface->extendedAttributes->{"NamedConstructor"};
+    return 1 if $interface->extendedAttributes->{Constructor} or $interface->extendedAttributes->{NamedConstructor};
     return 0;
 }
 
@@ -478,7 +475,7 @@ sub ShouldGenerateToJSImplementation
     my ($hasParent, $interface) = @_;
 
     return 0 if not ShouldGenerateToJSDeclaration($hasParent, $interface);
-    return 1 if not $interface->extendedAttributes->{"CustomToJSObject"};
+    return 1 if not $interface->extendedAttributes->{CustomToJSObject};
     return 0;
 }
 
@@ -535,21 +532,9 @@ sub GetSpecialAccessorFunctionForType
 sub HasComplexGetOwnProperty
 {
     my $interface = shift;
-
-    my $namedGetterFunction = GetNamedGetterFunction($interface);
-    my $indexedGetterFunction = GetIndexedGetterFunction($interface);
-
-    my $hasNamedGetter = $namedGetterFunction || $interface->extendedAttributes->{"CustomNamedGetter"};
-
-    my $hasComplexGetter = $indexedGetterFunction
-        || $interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"}
-        || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"}
-        || $hasNamedGetter;
-
-    return 1 if $interface->extendedAttributes->{"CheckSecurity"};
-    return 1 if IsDOMGlobalObject($interface);
-    return 1 if $hasComplexGetter;
-    return 0;
+    return $interface->extendedAttributes->{CheckSecurity}
+        || IsDOMGlobalObject($interface)
+        || InstanceOverridesGetOwnPropertySlot($interface);
 }
 
 sub InterfaceRequiresAttributesOnInstance
@@ -559,7 +544,7 @@ sub InterfaceRequiresAttributesOnInstance
 
     # FIXME: All these return 1 if ... should ideally be removed.
     # Some of them are unavoidable due to DOM weirdness, in which case we should
-    # add an IDL attribute for them
+    # add an IDL attribute for them.
 
     # FIXME: We should be able to drop this once <rdar://problem/24466097> is fixed.
     return 1 if $interface->isException;
@@ -576,7 +561,7 @@ sub AttributeShouldBeOnInstance
     my $attribute = shift;
 
     # FIXME: The bindings generator does not support putting runtime-enabled attributes on the instance yet (except for global objects).
-    return 0 if $attribute->signature->extendedAttributes->{"EnabledAtRuntime"} && !IsDOMGlobalObject($interface);
+    return 0 if $attribute->signature->extendedAttributes->{EnabledAtRuntime} && !IsDOMGlobalObject($interface);
 
     return 1 if InterfaceRequiresAttributesOnInstance($interface);
     return 1 if $attribute->signature->type =~ /Constructor$/;
@@ -585,13 +570,12 @@ sub AttributeShouldBeOnInstance
     # https://heycam.github.io/webidl/#Unforgeable
     return 1 if IsUnforgeable($interface, $attribute);
 
-    if ($interface->extendedAttributes->{"CheckSecurity"}) {
-        if ($attribute->signature->extendedAttributes->{"DoNotCheckSecurity"} or
-            $attribute->signature->extendedAttributes->{"DoNotCheckSecurityOnGetter"}) {
-            return 0;
-        }
+    if ($interface->extendedAttributes->{CheckSecurity}) {
+        return 0 if $attribute->signature->extendedAttributes->{DoNotCheckSecurity};
+        return 0 if $attribute->signature->extendedAttributes->{DoNotCheckSecurityOnGetter};
         return 1;
     }
+
     return 0;
 }
 
@@ -605,7 +589,7 @@ sub OperationShouldBeOnInstance
     return 1 if IsDOMGlobalObject($interface) && $interface->name ne "WorkerGlobalScope";
 
     # FIXME: The bindings generator does not support putting runtime-enabled operations on the instance yet (except for global objects).
-    return 0 if $function->signature->extendedAttributes->{"EnabledAtRuntime"};
+    return 0 if $function->signature->extendedAttributes->{EnabledAtRuntime};
 
     # [Unforgeable] operations should be on the instance. https://heycam.github.io/webidl/#Unforgeable
     return 1 if IsUnforgeable($interface, $function);
@@ -623,7 +607,7 @@ sub GetJSCAttributesForAttribute
 
     # As per Web IDL specification, constructor properties on the ECMAScript global object should not be enumerable.
     my $is_global_constructor = $attribute->signature->type =~ /Constructor$/;
-    push(@specials, "DontEnum") if ($attribute->signature->extendedAttributes->{"NotEnumerable"} || $is_global_constructor);
+    push(@specials, "DontEnum") if ($attribute->signature->extendedAttributes->{NotEnumerable} || $is_global_constructor);
     push(@specials, "ReadOnly") if IsReadonly($attribute);
     push(@specials, "CustomAccessor") unless $is_global_constructor or IsJSBuiltin($interface, $attribute);
     push(@specials, "Accessor | Builtin") if  IsJSBuiltin($interface, $attribute);
@@ -695,58 +679,49 @@ sub PrototypePropertyCount
 sub InstanceOverridesGetOwnPropertySlot
 {
     my $interface = shift;
-
-    my $namedGetterFunction = GetNamedGetterFunction($interface);
-    my $indexedGetterFunction = GetIndexedGetterFunction($interface);
-
-    my $hasNamedGetter = $namedGetterFunction
-        || $interface->extendedAttributes->{"CustomNamedGetter"};
-
-    my $hasComplexGetter = $indexedGetterFunction
-        || $interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"}
-        || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"}
-        || $hasNamedGetter;
-
-    return $hasComplexGetter;
+    return $interface->extendedAttributes->{CustomGetOwnPropertySlot}
+        || $interface->extendedAttributes->{CustomNamedGetter}
+        || $interface->extendedAttributes->{JSCustomGetOwnPropertySlotAndDescriptor}
+        || GetIndexedGetterFunction($interface)
+        || GetNamedGetterFunction($interface);
 }
 
 sub PrototypeHasStaticPropertyTable
 {
     my $interface = shift;
-    my $numPrototypeProperties = PrototypePropertyCount($interface);
     my $numConstants = @{$interface->constants};
-    return $numConstants > 0 || $numPrototypeProperties > 0;
+    return $numConstants > 0 || PrototypePropertyCount($interface) > 0;
 }
 
 sub InstanceOverridesPutImplementation
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"CustomNamedSetter"}
-        || $interface->extendedAttributes->{"CustomIndexedSetter"};
+    return $interface->extendedAttributes->{CustomNamedSetter}
+        || $interface->extendedAttributes->{CustomIndexedSetter};
 }
 
 sub InstanceOverridesPutDeclaration
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"CustomPutFunction"}
-        || $interface->extendedAttributes->{"CustomNamedSetter"}
-        || $interface->extendedAttributes->{"CustomIndexedSetter"};
+    return $interface->extendedAttributes->{CustomPutFunction}
+        || $interface->extendedAttributes->{CustomNamedSetter}
+        || $interface->extendedAttributes->{CustomIndexedSetter};
 }
 
 sub InstanceNeedsVisitChildren
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"JSCustomMarkFunction"}
+    return $interface->extendedAttributes->{JSCustomMarkFunction}
         || $codeGenerator->InheritsInterface($interface, "EventTarget")
         || $interface->name eq "EventTarget"
-        || $interface->extendedAttributes->{"ReportExtraMemoryCost"}
+        || $interface->extendedAttributes->{ReportExtraMemoryCost}
         || IsJSBuiltinConstructor($interface)
 }
 
 sub InstanceNeedsEstimatedSize
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"ReportExtraMemoryCost"};
+    return $interface->extendedAttributes->{ReportExtraMemoryCost};
 }
 
 sub GetImplClassName
@@ -1081,7 +1056,7 @@ sub GenerateHeader
     my $className = "JS$interfaceName";
     my %structureFlags = ();
 
-    my $hasLegacyParent = $interface->extendedAttributes->{"JSLegacyParent"};
+    my $hasLegacyParent = $interface->extendedAttributes->{JSLegacyParent};
     my $hasRealParent = $interface->parent;
     my $hasParent = $hasLegacyParent || $hasRealParent;
     my $parentClassName = GetParentClassName($interface);
@@ -1099,14 +1074,10 @@ sub GenerateHeader
         }
     }
 
-    if ($interface->extendedAttributes->{"CustomCall"}) {
-        $headerIncludes{"<runtime/CallData.h>"} = 1;
-    }
+    $headerIncludes{"<runtime/CallData.h>"} = 1 if $interface->extendedAttributes->{CustomCall};
+
+    $headerIncludes{"$interfaceName.h"} = 1 if $hasParent && $interface->extendedAttributes->{JSGenerateToNativeObject};
 
-    if ($hasParent && $interface->extendedAttributes->{"JSGenerateToNativeObject"}) {
-        $headerIncludes{"$interfaceName.h"} = 1;
-    }
-    
     $headerIncludes{"SVGElement.h"} = 1 if $className =~ /^JSSVG/;
 
     my $implType = GetImplClassName($interfaceName);
@@ -1140,8 +1111,8 @@ sub GenerateHeader
 
     # Static create methods
     push(@headerContent, "public:\n");
-    push(@headerContent, "    typedef $parentClassName Base;\n");
-    push(@headerContent, "    typedef $implType DOMWrapped;\n") if $interface->parent;
+    push(@headerContent, "    using Base = $parentClassName;\n");
+    push(@headerContent, "    using DOMWrapped = $implType;\n") if $interface->parent;
 
     if ($interfaceName eq "DOMWindow") {
         push(@headerContent, "    static $className* create(JSC::VM& vm, JSC::Structure* structure, Ref<$implType>&& impl, JSDOMWindowShell* windowShell)\n");
@@ -1159,7 +1130,7 @@ sub GenerateHeader
         push(@headerContent, "        vm.heap.addFinalizer(ptr, destroy);\n");
         push(@headerContent, "        return ptr;\n");
         push(@headerContent, "    }\n\n");
-    } elsif ($interface->extendedAttributes->{"MasqueradesAsUndefined"}) {
+    } elsif ($interface->extendedAttributes->{MasqueradesAsUndefined}) {
         AddIncludesForTypeInHeader($implType) unless $svgPropertyOrListPropertyType;
         push(@headerContent, "    static $className* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<$implType>&& impl)\n");
         push(@headerContent, "    {\n");
@@ -1185,13 +1156,9 @@ sub GenerateHeader
         push(@headerContent, "    }\n\n");
     }
 
-    if (IsDOMGlobalObject($interface)) {
-        push(@headerContent, "    static const bool needsDestruction = false;\n\n");
-    }
+    push(@headerContent, "    static const bool needsDestruction = false;\n\n") if IsDOMGlobalObject($interface);
 
-    if (InstancePropertyCount($interface) > 0) {
-        $structureFlags{"JSC::HasStaticPropertyTable"} = 1;
-    }
+    $structureFlags{"JSC::HasStaticPropertyTable"} = 1 if InstancePropertyCount($interface) > 0;
 
     # Prototype
     unless (ShouldUseGlobalObjectPrototype($interface)) {
@@ -1206,45 +1173,40 @@ sub GenerateHeader
             push(@headerContent, "    static $nativeType toWrapped(JSC::ExecState&, JSC::JSValue);\n");
         } else {
             my $export = "";
-            $export = "WEBCORE_EXPORT " if $interface->extendedAttributes->{"ExportToWrappedFunction"};
+            $export = "WEBCORE_EXPORT " if $interface->extendedAttributes->{ExportToWrappedFunction};
             push(@headerContent, "    static $export$nativeType toWrapped(JSC::JSValue);\n");
         }
     }
 
-    $headerTrailingIncludes{"${className}Custom.h"} = 1 if $interface->extendedAttributes->{"JSCustomHeader"};
+    $headerTrailingIncludes{"${className}Custom.h"} = 1 if $interface->extendedAttributes->{JSCustomHeader};
 
     my $namedGetterFunction = GetNamedGetterFunction($interface);
     my $indexedGetterFunction = GetIndexedGetterFunction($interface);
 
     my $hasNamedGetter = $namedGetterFunction
-        || $interface->extendedAttributes->{"CustomNamedGetter"};
+        || $interface->extendedAttributes->{CustomNamedGetter};
 
-    my $hasComplexGetter =
-        $indexedGetterFunction
-        || $interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"}
-        || $interface->extendedAttributes->{"CustomGetOwnPropertySlot"}
+    my $hasComplexGetter = $indexedGetterFunction
+        || $interface->extendedAttributes->{JSCustomGetOwnPropertySlotAndDescriptor}
+        || $interface->extendedAttributes->{CustomGetOwnPropertySlot}
         || $hasNamedGetter;
-    
+
     my $hasGetter = InstanceOverridesGetOwnPropertySlot($interface);
 
     if ($hasNamedGetter) {
-        if ($interface->extendedAttributes->{"OverrideBuiltins"}) {
+        if ($interface->extendedAttributes->{OverrideBuiltins}) {
             $structureFlags{"JSC::GetOwnPropertySlotIsImpure"} = 1;
         } else {
             $structureFlags{"JSC::GetOwnPropertySlotIsImpureForPropertyAbsence"} = 1;
         }
     }
-    if ($interface->extendedAttributes->{"NewImpurePropertyFiresWatchpoints"}) {
-        $structureFlags{"JSC::NewImpurePropertyFiresWatchpoints"} = 1;
-    }
-    if ($interface->extendedAttributes->{"CustomCall"}) {
-        $structureFlags{"JSC::TypeOfShouldCallGetCallData"} = 1;
-    }
+    $structureFlags{"JSC::NewImpurePropertyFiresWatchpoints"} = 1 if $interface->extendedAttributes->{NewImpurePropertyFiresWatchpoints};
+    $structureFlags{"JSC::TypeOfShouldCallGetCallData"} = 1 if $interface->extendedAttributes->{CustomCall};
 
     # Getters
     if ($hasGetter) {
         push(@headerContent, "    static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);\n");
-        push(@headerContent, "    bool getOwnPropertySlotDelegate(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);\n") if $interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"};
+        push(@headerContent, "    bool getOwnPropertySlotDelegate(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);\n") if $interface->extendedAttributes->{JSCustomGetOwnPropertySlotAndDescriptor};
         $structureFlags{"JSC::OverridesGetOwnPropertySlot"} = 1;
 
         if ($hasComplexGetter) {
@@ -1259,7 +1221,7 @@ sub GenerateHeader
     if ($overridesPut) {
         push(@headerContent, "    static bool put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&);\n");
         push(@headerContent, "    static bool putByIndex(JSC::JSCell*, JSC::ExecState*, unsigned propertyName, JSC::JSValue, bool shouldThrow);\n");
-        push(@headerContent, "    bool putDelegate(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&, bool& putResult);\n") if $interface->extendedAttributes->{"CustomNamedSetter"};
+        push(@headerContent, "    bool putDelegate(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&, bool& putResult);\n") if $interface->extendedAttributes->{CustomNamedSetter};
     }
 
     if (!$hasParent) {
@@ -1277,10 +1239,9 @@ sub GenerateHeader
         push(@headerContent, "\n");
         push(@headerContent, "    DECLARE_INFO;\n\n");
     }
+
     # Structure ID
-    if ($interfaceName eq "DOMWindow") {
-        $structureFlags{"JSC::ImplementsHasInstance | JSC::ImplementsDefaultHasInstance"} = 1;
-    }
+    $structureFlags{"JSC::ImplementsHasInstance | JSC::ImplementsDefaultHasInstance"} = 1 if $interfaceName eq "DOMWindow";
     push(@headerContent, "    static JSC::Structure* createStructure(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::JSValue prototype)\n");
     push(@headerContent, "    {\n");
     if (IsDOMGlobalObject($interface)) {
@@ -1297,14 +1258,14 @@ sub GenerateHeader
     push(@headerContent, "    }\n\n");
 
     # Custom pushEventHandlerScope function
-    push(@headerContent, "    JSC::JSScope* pushEventHandlerScope(JSC::ExecState*, JSC::JSScope*) const;\n\n") if $interface->extendedAttributes->{"JSCustomPushEventHandlerScope"};
+    push(@headerContent, "    JSC::JSScope* pushEventHandlerScope(JSC::ExecState*, JSC::JSScope*) const;\n\n") if $interface->extendedAttributes->{JSCustomPushEventHandlerScope};
 
     # Custom call functions
-    push(@headerContent, "    static JSC::CallType getCallData(JSC::JSCell*, JSC::CallData&);\n\n") if $interface->extendedAttributes->{"CustomCall"};
+    push(@headerContent, "    static JSC::CallType getCallData(JSC::JSCell*, JSC::CallData&);\n\n") if $interface->extendedAttributes->{CustomCall};
 
     # Custom deleteProperty function
-    push(@headerContent, "    static bool deleteProperty(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName);\n") if $interface->extendedAttributes->{"CustomDeleteProperty"};
-    push(@headerContent, "    static bool deletePropertyByIndex(JSC::JSCell*, JSC::ExecState*, unsigned);\n") if $interface->extendedAttributes->{"CustomDeleteProperty"};
+    push(@headerContent, "    static bool deleteProperty(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName);\n") if $interface->extendedAttributes->{CustomDeleteProperty};
+    push(@headerContent, "    static bool deletePropertyByIndex(JSC::JSCell*, JSC::ExecState*, unsigned);\n") if $interface->extendedAttributes->{CustomDeleteProperty};
 
     # Custom getPropertyNames function exists on DOMWindow
     if ($interfaceName eq "DOMWindow") {
@@ -1316,30 +1277,27 @@ sub GenerateHeader
     }
 
     # Custom getOwnPropertyNames function
-    if ($interface->extendedAttributes->{"CustomEnumerateProperty"} || $indexedGetterFunction || $namedGetterFunction) {
+    if ($interface->extendedAttributes->{CustomEnumerateProperty} || $indexedGetterFunction || $namedGetterFunction) {
         push(@headerContent, "    static void getOwnPropertyNames(JSC::JSObject*, JSC::ExecState*, JSC::PropertyNameArray&, JSC::EnumerationMode = JSC::EnumerationMode());\n");
         $structureFlags{"JSC::OverridesGetPropertyNames"} = 1;       
     }
 
     # Custom defineOwnProperty function
-    push(@headerContent, "    static bool defineOwnProperty(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, const JSC::PropertyDescriptor&, bool shouldThrow);\n") if $interface->extendedAttributes->{"JSCustomDefineOwnProperty"};
+    push(@headerContent, "    static bool defineOwnProperty(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, const JSC::PropertyDescriptor&, bool shouldThrow);\n") if $interface->extendedAttributes->{JSCustomDefineOwnProperty};
 
     # Custom getPrototype / setPrototype functions.
-    push (@headerContent, "    static JSC::JSValue getPrototype(JSC::JSObject*, JSC::ExecState*);\n") if $interface->extendedAttributes->{"CustomGetPrototype"};
-    push (@headerContent, "    static bool setPrototype(JSC::JSObject*, JSC::ExecState*, JSC::JSValue, bool shouldThrowIfCantSet);\n") if $interface->extendedAttributes->{"CustomSetPrototype"};
+    push (@headerContent, "    static JSC::JSValue getPrototype(JSC::JSObject*, JSC::ExecState*);\n") if $interface->extendedAttributes->{CustomGetPrototype};
+    push (@headerContent, "    static bool setPrototype(JSC::JSObject*, JSC::ExecState*, JSC::JSValue, bool shouldThrowIfCantSet);\n") if $interface->extendedAttributes->{CustomSetPrototype};
 
     # Custom preventExtensions function.
-    push(@headerContent, "    static bool preventExtensions(JSC::JSObject*, JSC::ExecState*);\n") if $interface->extendedAttributes->{"CustomPreventExtensions"};
+    push(@headerContent, "    static bool preventExtensions(JSC::JSObject*, JSC::ExecState*);\n") if $interface->extendedAttributes->{CustomPreventExtensions};
     
-    # Override toBoolean to return false for objects that want to 'MasqueradesAsUndefined'.
-    if ($interface->extendedAttributes->{"MasqueradesAsUndefined"}) {
-        $structureFlags{"JSC::MasqueradesAsUndefined"} = 1;
-    }
+    $structureFlags{"JSC::MasqueradesAsUndefined"} = 1 if $interface->extendedAttributes->{MasqueradesAsUndefined};
 
     # Constructor object getter
-    unless ($interface->extendedAttributes->{"NoInterfaceObject"}) {
+    unless ($interface->extendedAttributes->{NoInterfaceObject}) {
         push(@headerContent, "    static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);\n");
-        push(@headerContent, "    static JSC::JSValue getNamedConstructor(JSC::VM&, JSC::JSGlobalObject*);\n") if $interface->extendedAttributes->{"NamedConstructor"};
+        push(@headerContent, "    static JSC::JSValue getNamedConstructor(JSC::VM&, JSC::JSGlobalObject*);\n") if $interface->extendedAttributes->{NamedConstructor};
     }
 
     my $numCustomFunctions = 0;
@@ -1354,7 +1312,7 @@ sub GenerateHeader
             my $attribute = $_;
             $numCustomAttributes++ if HasCustomGetter($attribute->signature->extendedAttributes);
             $numCustomAttributes++ if HasCustomSetter($attribute->signature->extendedAttributes);
-            if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) {
+            if ($attribute->signature->extendedAttributes->{CachedAttribute}) {
                 my $conditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
                 push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
                 push(@headerContent, "    mutable JSC::WriteBarrier<JSC::Unknown> m_" . $attribute->signature->name . ";\n");
@@ -1363,16 +1321,14 @@ sub GenerateHeader
                 push(@headerContent, "#endif\n") if $conditionalString;
             }
 
-            if ($attribute->signature->extendedAttributes->{"ForwardDeclareInHeader"}) {
-                $hasForwardDeclaringAttributes = 1;
-            }
+            $hasForwardDeclaringAttributes = 1 if $attribute->signature->extendedAttributes->{ForwardDeclareInHeader};
         }
     }
 
     # visit function
     if ($needsVisitChildren) {
         push(@headerContent, "    static void visitChildren(JSCell*, JSC::SlotVisitor&);\n");
-        push(@headerContent, "    void visitAdditionalChildren(JSC::SlotVisitor&);\n") if $interface->extendedAttributes->{"JSCustomMarkFunction"};
+        push(@headerContent, "    void visitAdditionalChildren(JSC::SlotVisitor&);\n") if $interface->extendedAttributes->{JSCustomMarkFunction};
         push(@headerContent, "\n");
     }
 
@@ -1401,18 +1357,14 @@ sub GenerateHeader
 
     foreach my $function (@{$interface->functions}) {
         $numCustomFunctions++ if HasCustomMethod($function->signature->extendedAttributes);
-
-        if ($function->signature->extendedAttributes->{"ForwardDeclareInHeader"}) {
-            $hasForwardDeclaringFunctions = 1;
-        }
+        $hasForwardDeclaringFunctions = 1 if $function->signature->extendedAttributes->{ForwardDeclareInHeader};
     }
 
     if ($numCustomFunctions > 0) {
         my $inAppleCopyright = 0;
         push(@headerContent, "\n    // Custom functions\n");
         foreach my $function (@{$interface->functions}) {
-            my $needsAppleCopyright = $function->signature->extendedAttributes->{"AppleCopyright"};
-            if ($needsAppleCopyright) {
+            if ($function->signature->extendedAttributes->{AppleCopyright}) {
                 if (!$inAppleCopyright) {
                     push(@headerContent, $beginAppleCopyrightForHeaderFiles);
                     $inAppleCopyright = 1;
@@ -1425,7 +1377,7 @@ sub GenerateHeader
             next if $function->{overloads} && $function->{overloadIndex} != 1;
             my $conditionalString = $codeGenerator->GenerateConditionalString($function->signature);
             push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
-            my $functionImplementationName = $function->signature->extendedAttributes->{"ImplementedAs"} || $codeGenerator->WK_lcfirst($function->signature->name);
+            my $functionImplementationName = $function->signature->extendedAttributes->{ImplementedAs} || $codeGenerator->WK_lcfirst($function->signature->name);
             push(@headerContent, "    " . ($function->isStatic ? "static " : "") . "JSC::JSValue " . $functionImplementationName . "(JSC::ExecState&);\n");
             push(@headerContent, "#endif\n") if $conditionalString;
         }
@@ -1477,12 +1429,9 @@ sub GenerateHeader
         }
     }
 
-    # Index setter
-    if ($interface->extendedAttributes->{"CustomIndexedSetter"}) {
-        push(@headerContent, "    void indexSetter(JSC::ExecState*, unsigned index, JSC::JSValue);\n");
-    }
-    # Name getter
-    if ($namedGetterFunction || $interface->extendedAttributes->{"CustomNamedGetter"}) {
+    push(@headerContent, "    void indexSetter(JSC::ExecState*, unsigned index, JSC::JSValue);\n") if $interface->extendedAttributes->{CustomIndexedSetter};
+
+    if ($namedGetterFunction || $interface->extendedAttributes->{CustomNamedGetter}) {
         push(@headerContent, "private:\n");
         push(@headerContent, "    bool nameGetter(JSC::ExecState*, JSC::PropertyName, JSC::JSValue&);\n");
     }
@@ -1537,10 +1486,9 @@ sub GenerateHeader
         push(@headerContent,"// Functions\n\n");
         foreach my $function (@{$interface->functions}) {
             next if $function->{overloadIndex} && $function->{overloadIndex} > 1;
-            next unless $function->signature->extendedAttributes->{"ForwardDeclareInHeader"};
+            next unless $function->signature->extendedAttributes->{ForwardDeclareInHeader};
 
-            my $needsAppleCopyright = $function->signature->extendedAttributes->{"AppleCopyright"};
-            if ($needsAppleCopyright) {
+            if ($function->signature->extendedAttributes->{AppleCopyright}) {
                 if (!$inAppleCopyright) {
                     push(@headerContent, $beginAppleCopyrightForHeaderFiles);
                     $inAppleCopyright = 1;
@@ -1565,7 +1513,7 @@ sub GenerateHeader
     if ($hasForwardDeclaringAttributes) {
         push(@headerContent,"// Attributes\n\n");
         foreach my $attribute (@{$interface->attributes}) {
-            next unless $attribute->signature->extendedAttributes->{"ForwardDeclareInHeader"};
+            next unless $attribute->signature->extendedAttributes->{ForwardDeclareInHeader};
 
             my $conditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
             push(@headerContent, "#if ${conditionalString}\n") if $conditionalString;
@@ -1598,7 +1546,7 @@ sub GenerateHeader
     push(@headerContent, "\n} // namespace WebCore\n");
     push(@headerContent, "\n#endif // ${conditionalString}\n") if $conditionalString;
 
-    if ($interface->extendedAttributes->{"AppleCopyright"}) {
+    if ($interface->extendedAttributes->{AppleCopyright}) {
         push(@headerContent, "\n");
         push(@headerContent, split("\r", $endAppleCopyright));
     }
@@ -1644,7 +1592,7 @@ sub GeneratePropertiesHashTable
         next if AttributeShouldBeOnInstance($interface, $attribute) != $isInstance;
 
         # Global objects add RuntimeEnabled attributes after creation so do not add them to the static table.
-        if (IsDOMGlobalObject($interface) && $attribute->signature->extendedAttributes->{"EnabledAtRuntime"}) {
+        if (IsDOMGlobalObject($interface) && $attribute->signature->extendedAttributes->{EnabledAtRuntime}) {
             $propertyCount -= 1;
             next;
         }
@@ -1665,17 +1613,12 @@ sub GeneratePropertiesHashTable
             push(@$hashValue2, $setter);
         }
 
-        my $conditional = $attribute->signature->extendedAttributes->{"Conditional"};
-        if ($conditional) {
-            $conditionals->{$name} =  $conditional;
-        }
+        my $conditional = $attribute->signature->extendedAttributes->{Conditional};
+        $conditionals->{$name} = $conditional if $conditional;
 
-        if ($attribute->signature->extendedAttributes->{"EnabledAtRuntime"}) {
-            if ($isInstance) {
-                die "We currently do not support [EnabledAtRuntime] attributes on the instance (except for global objects).";
-            } else {
-                push(@$runtimeEnabledAttributes, $attribute);
-            }
+        if ($attribute->signature->extendedAttributes->{EnabledAtRuntime}) {
+            die "We currently do not support [EnabledAtRuntime] attributes on the instance (except for global objects)." if $isInstance;
+            push(@$runtimeEnabledAttributes, $attribute);
         }
     }
 
@@ -1683,14 +1626,14 @@ sub GeneratePropertiesHashTable
     push(@functions, @{$interface->iterable->functions}) if IsKeyValueIterableInterface($interface);
     push(@functions, @{$interface->serializable->functions}) if $interface->serializable;
     foreach my $function (@functions) {
-        next if ($function->signature->extendedAttributes->{"PrivateIdentifier"} and not $function->signature->extendedAttributes->{"PublicIdentifier"});
+        next if ($function->signature->extendedAttributes->{PrivateIdentifier} and not $function->signature->extendedAttributes->{PublicIdentifier});
         next if ($function->isStatic);
         next if $function->{overloadIndex} && $function->{overloadIndex} > 1;
         next if OperationShouldBeOnInstance($interface, $function) != $isInstance;
         next if $function->signature->name eq "[Symbol.Iterator]";
 
         # Global objects add RuntimeEnabled operations after creation so do not add them to the static table.
-        if (IsDOMGlobalObject($interface) && $function->signature->extendedAttributes->{"EnabledAtRuntime"}) {
+        if (IsDOMGlobalObject($interface) && $function->signature->extendedAttributes->{EnabledAtRuntime}) {
             $propertyCount -= 1;
             next;
         }
@@ -1707,16 +1650,11 @@ sub GeneratePropertiesHashTable
         push(@$hashSpecials, ComputeFunctionSpecial($interface, $function));
 
         my $conditional = getConditionalForFunctionConsideringOverloads($function);
-        if ($conditional) {
-            $conditionals->{$name} = $conditional;
-        }
+        $conditionals->{$name} = $conditional if $conditional;
 
-        if ($function->signature->extendedAttributes->{"EnabledAtRuntime"}) {
-            if ($isInstance) {
-                die "We currently do not support [EnabledAtRuntime] operations on the instance (except for global objects).";
-            } else {
-                push(@$runtimeEnabledFunctions, $function);
-            }
+        if ($function->signature->extendedAttributes->{EnabledAtRuntime}) {
+            die "We currently do not support [EnabledAtRuntime] operations on the instance (except for global objects)." if $isInstance;
+            push(@$runtimeEnabledFunctions, $function);
         }
     }
 
@@ -1864,15 +1802,13 @@ sub getConditionalForFunctionConsideringOverloads
 {
     my $function = shift;
 
-    return $function->signature->extendedAttributes->{"Conditional"} unless $function->{overloads};
+    return $function->signature->extendedAttributes->{Conditional} unless $function->{overloads};
 
     my %conditions;
     foreach my $overload (@{$function->{overloads}}) {
-        if ($overload->signature->extendedAttributes->{"Conditional"}) {
-            $conditions{$overload->signature->extendedAttributes->{"Conditional"}} = 1;
-        } else {
-            return;
-        }
+        my $conditional = $overload->signature->extendedAttributes->{Conditional};
+        return unless $conditional;
+        $conditions{$conditional} = 1;
     }
     return join("|", keys %conditions);
 }
@@ -2202,19 +2138,19 @@ sub GetWinMangledNameForInterface
 sub GetNamespaceForInterface
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"ImplementationNamespace"} || "WebCore";
+    return $interface->extendedAttributes->{ImplementationNamespace} || "WebCore";
 }
 
 sub GetImplementationLacksVTableForInterface
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"ImplementationLacksVTable"};
+    return $interface->extendedAttributes->{ImplementationLacksVTable};
 }
 
 sub GetSkipVTableValidationForInterface
 {
     my $interface = shift;
-    return $interface->extendedAttributes->{"SkipVTableValidation"};
+    return $interface->extendedAttributes->{SkipVTableValidation};
 }
 
 # URL becomes url, but SetURL becomes setURL.
@@ -2244,7 +2180,7 @@ sub GetRuntimeEnableFunctionName
     my $signature = shift;
 
     # If a parameter is given (e.g. "EnabledAtRuntime=FeatureName") return the RuntimeEnabledFeatures::sharedFeatures().{FeatureName}Enabled() method.
-    return "RuntimeEnabledFeatures::sharedFeatures()." . ToMethodName($signature->extendedAttributes->{"EnabledAtRuntime"}) . "Enabled" if ($signature->extendedAttributes->{"EnabledAtRuntime"} && $signature->extendedAttributes->{"EnabledAtRuntime"} ne "VALUE_IS_MISSING");
+    return "RuntimeEnabledFeatures::sharedFeatures()." . ToMethodName($signature->extendedAttributes->{EnabledAtRuntime}) . "Enabled" if ($signature->extendedAttributes->{EnabledAtRuntime} && $signature->extendedAttributes->{EnabledAtRuntime} ne "VALUE_IS_MISSING");
 
     # Otherwise return a function named RuntimeEnabledFeatures::sharedFeatures().{methodName}Enabled().
     return "RuntimeEnabledFeatures::sharedFeatures()." . ToMethodName($signature->name) . "Enabled";
@@ -2278,7 +2214,7 @@ sub addUnscopableProperties
 
     my @unscopables;
     foreach my $functionOrAttribute (@{$interface->functions}, @{$interface->attributes}) {
-        push(@unscopables, $functionOrAttribute->signature->name) if $functionOrAttribute->signature->extendedAttributes->{"Unscopable"};
+        push(@unscopables, $functionOrAttribute->signature->name) if $functionOrAttribute->signature->extendedAttributes->{Unscopable};
     }
     return if scalar(@unscopables) == 0;
 
@@ -2297,7 +2233,7 @@ sub GenerateImplementation
     my $interfaceName = $interface->name;
     my $className = "JS$interfaceName";
 
-    my $hasLegacyParent = $interface->extendedAttributes->{"JSLegacyParent"};
+    my $hasLegacyParent = $interface->extendedAttributes->{JSLegacyParent};
     my $hasRealParent = $interface->parent;
     my $hasParent = $hasLegacyParent || $hasRealParent;
     my $parentClassName = GetParentClassName($interface);
@@ -2340,11 +2276,10 @@ sub GenerateImplementation
         push(@implContent,"// Functions\n\n");
         foreach my $function (@functions) {
             next if $function->{overloadIndex} && $function->{overloadIndex} > 1;
-            next if $function->signature->extendedAttributes->{"ForwardDeclareInHeader"};
+            next if $function->signature->extendedAttributes->{ForwardDeclareInHeader};
             next if IsJSBuiltin($interface, $function);
 
-            my $needsAppleCopyright = $function->signature->extendedAttributes->{"AppleCopyright"};
-            if ($needsAppleCopyright) {
+            if ($function->signature->extendedAttributes->{AppleCopyright}) {
                 if (!$inAppleCopyright) {
                     push(@implContent, $beginAppleCopyrightForHeaderFiles);
                     $inAppleCopyright = 1;
@@ -2370,7 +2305,7 @@ sub GenerateImplementation
     if ($numAttributes > 0 || NeedsConstructorProperty($interface)) {
         push(@implContent, "// Attributes\n\n");
         foreach my $attribute (@{$interface->attributes}) {
-            next if $attribute->signature->extendedAttributes->{"ForwardDeclareInHeader"};
+            next if $attribute->signature->extendedAttributes->{ForwardDeclareInHeader};
             next if IsJSBuiltin($interface, $attribute);
 
             my $conditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
@@ -2439,15 +2374,12 @@ sub GenerateImplementation
             push(@hashValue2, "0");
             push(@hashSpecials, "DontDelete | ReadOnly | ConstantInteger");
 
-            my $implementedBy = $constant->extendedAttributes->{"ImplementedBy"};
-            if ($implementedBy) {
-                $implIncludes{"${implementedBy}.h"} = 1;
-            }
-            my $conditional = $constant->extendedAttributes->{"Conditional"};
-            if ($conditional) {
-                $conditionals{$name} = $conditional;
-            }
-            
+            my $implementedBy = $constant->extendedAttributes->{ImplementedBy};
+            $implIncludes{"${implementedBy}.h"} = 1 if $implementedBy;
+
+            my $conditional = $constant->extendedAttributes->{Conditional};
+            $conditionals{$name} = $conditional if $conditional;
+
             $hashSize++;
         }
 
@@ -2457,7 +2389,7 @@ sub GenerateImplementation
             push(@hashKeys, $name);
 
             my @specials = ();
-            push(@specials, "DontDelete") unless $attribute->signature->extendedAttributes->{"Deletable"};
+            push(@specials, "DontDelete") unless $attribute->signature->extendedAttributes->{Deletable};
             push(@specials, "ReadOnly") if IsReadonly($attribute);
             my $special = (@specials > 0) ? join(" | ", @specials) : "0";
             push(@hashSpecials, $special);
@@ -2472,10 +2404,8 @@ sub GenerateImplementation
                 push(@hashValue2, $setter);
             }
 
-            my $conditional = $attribute->signature->extendedAttributes->{"Conditional"};
-            if ($conditional) {
-                $conditionals{$name} = $conditional;
-            }
+            my $conditional = $attribute->signature->extendedAttributes->{Conditional};
+            $conditionals{$name} = $conditional if $conditional;
 
             $hashSize++;
         }
@@ -2494,11 +2424,9 @@ sub GenerateImplementation
 
             push(@hashSpecials, ComputeFunctionSpecial($interface, $function));
 
-            my $conditional = $function->signature->extendedAttributes->{"Conditional"};
-            if ($conditional) {
-                $conditionals{$name} = $conditional;
-            }
-            
+            my $conditional = $function->signature->extendedAttributes->{Conditional};
+            $conditionals{$name} = $conditional if $conditional;
+
             $hashSize++;
         }
 
@@ -2511,9 +2439,9 @@ sub GenerateImplementation
 
         my $protoClassName = "${className}Prototype";
         GenerateConstructorDefinitions(\@implContent, $className, $protoClassName, $visibleInterfaceName, $interface);
-        if ($interface->extendedAttributes->{"NamedConstructor"}) {
-            GenerateConstructorDefinitions(\@implContent, $className, $protoClassName, $interface->extendedAttributes->{"NamedConstructor"}, $interface, "GeneratingNamedConstructor");
-        }
+
+        my $namedConstructor = $interface->extendedAttributes->{NamedConstructor};
+        GenerateConstructorDefinitions(\@implContent, $className, $protoClassName, $namedConstructor, $interface, "GeneratingNamedConstructor") if $namedConstructor;
     }
 
     # - Add functions and constants to a hashtable definition
@@ -2543,11 +2471,9 @@ sub GenerateImplementation
         push(@hashValue2, "0");
         push(@hashSpecials, "DontDelete | ReadOnly | ConstantInteger");
 
-        my $conditional = $constant->extendedAttributes->{"Conditional"};
-        if ($conditional) {
-            $conditionals{$name} = $conditional;
-        }
-        
+        my $conditional = $constant->extendedAttributes->{Conditional};
+        $conditionals{$name} = $conditional if $conditional;
+
         $hashSize++;
     }
 
@@ -2589,7 +2515,7 @@ sub GenerateImplementation
 
         my $firstPrivateFunction = 1;
         foreach my $function (@{$interface->functions}) {
-            next unless ($function->signature->extendedAttributes->{"PrivateIdentifier"});
+            next unless ($function->signature->extendedAttributes->{PrivateIdentifier});
             AddToImplIncludes("WebCoreJSClientData.h");
             push(@implContent, "    JSVMClientData& clientData = *static_cast<JSVMClientData*>(vm.clientData);\n") if $firstPrivateFunction;
             $firstPrivateFunction = 0;
@@ -2605,7 +2531,7 @@ sub GenerateImplementation
         push(@implContent, "}\n\n");
     }
 
-    if ($interface->extendedAttributes->{"JSCustomNamedGetterOnPrototype"}) {
+    if ($interface->extendedAttributes->{JSCustomNamedGetterOnPrototype}) {
         push(@implContent, "bool ${className}Prototype::put(JSCell* cell, ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot& slot)\n");
         push(@implContent, "{\n");
         push(@implContent, "    auto* thisObject = jsCast<${className}Prototype*>(cell);\n");
@@ -2666,7 +2592,7 @@ sub GenerateImplementation
         }
         # Support for RuntimeEnabled attributes on global objects.
         foreach my $attribute (@{$interface->attributes}) {
-            next unless $attribute->signature->extendedAttributes->{"EnabledAtRuntime"};
+            next unless $attribute->signature->extendedAttributes->{EnabledAtRuntime};
 
             AddToImplIncludes("RuntimeEnabledFeatures.h");
             my $conditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
@@ -2685,7 +2611,7 @@ sub GenerateImplementation
 
         # Support PrivateIdentifier attributes on global objects
         foreach my $attribute (@{$interface->attributes}) {
-            next unless $attribute->signature->extendedAttributes->{"PrivateIdentifier"};
+            next unless $attribute->signature->extendedAttributes->{PrivateIdentifier};
 
             AddToImplIncludes("WebCoreJSClientData.h");
             my $conditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
@@ -2699,7 +2625,7 @@ sub GenerateImplementation
 
         # Support for RuntimeEnabled operations on global objects.
         foreach my $function (@{$interface->functions}) {
-            next unless $function->signature->extendedAttributes->{"EnabledAtRuntime"};
+            next unless $function->signature->extendedAttributes->{EnabledAtRuntime};
             next if $function->{overloadIndex} && $function->{overloadIndex} > 1;
 
             AddToImplIncludes("RuntimeEnabledFeatures.h");
@@ -2713,9 +2639,7 @@ sub GenerateImplementation
             push(@implContent, "    if (${enable_function}())\n");
 
             my $propertyName = "vm.propertyNames->$functionName";
-            if ($function->signature->extendedAttributes->{"PrivateIdentifier"}) {
-                $propertyName = "static_cast<JSVMClientData*>(vm.clientData)->builtinNames()." . $functionName . "PrivateName()";
-            }
+            $propertyName = "static_cast<JSVMClientData*>(vm.clientData)->builtinNames()." . $functionName . "PrivateName()" if $function->signature->extendedAttributes->{PrivateIdentifier};
             if (IsJSBuiltin($interface, $function)) {
                 push(@implContent, "        putDirectBuiltinFunction(vm, this, $propertyName, $implementationFunction(vm), attributesForStructure($jsAttributes));\n");
             } else {
@@ -2756,7 +2680,7 @@ sub GenerateImplementation
 
     # Attributes
     if ($hasGetter) {
-        if (!$interface->extendedAttributes->{"CustomGetOwnPropertySlot"}) {
+        if (!$interface->extendedAttributes->{CustomGetOwnPropertySlot}) {
             push(@implContent, "bool ${className}::getOwnPropertySlot(JSObject* object, ExecState* state, PropertyName propertyName, PropertySlot& slot)\n");
             push(@implContent, "{\n");
             push(@implContent, "    auto* thisObject = jsCast<${className}*>(object);\n");
@@ -2766,8 +2690,8 @@ sub GenerateImplementation
         }
 
         if ($indexedGetterFunction || $namedGetterFunction
-                || $interface->extendedAttributes->{"CustomNamedGetter"}
-                || $interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"}) {
+                || $interface->extendedAttributes->{CustomNamedGetter}
+                || $interface->extendedAttributes->{JSCustomGetOwnPropertySlotAndDescriptor}) {
             push(@implContent, "bool ${className}::getOwnPropertySlotByIndex(JSObject* object, ExecState* state, unsigned index, PropertySlot& slot)\n");
             push(@implContent, "{\n");
             push(@implContent, "    auto* thisObject = jsCast<${className}*>(object);\n");
@@ -2791,7 +2715,7 @@ sub GenerateImplementation
                     push(@implContent, "    if (LIKELY(index < thisObject->wrapped().length())) {\n");
                 }
                 # Assume that if there's a setter, the index will be writable
-                if ($interface->extendedAttributes->{"CustomIndexedSetter"}) {
+                if ($interface->extendedAttributes->{CustomIndexedSetter}) {
                     push(@implContent, "        unsigned attributes = DontDelete;\n");
                 } else {
                     push(@implContent, "        unsigned attributes = DontDelete | ReadOnly;\n");
@@ -2803,7 +2727,7 @@ sub GenerateImplementation
 
             # Indexing an object with an integer that is not a supported property index should not call the named property getter.
             # https://heycam.github.io/webidl/#idl-indexed-properties
-            if (!$indexedGetterFunction && ($namedGetterFunction || $interface->extendedAttributes->{"CustomNamedGetter"})) {
+            if (!$indexedGetterFunction && ($namedGetterFunction || $interface->extendedAttributes->{CustomNamedGetter})) {
                 &$propertyNameGeneration();
 
                 # This condition is to make sure we use the subclass' named getter instead of the base class one when possible.
@@ -2817,7 +2741,7 @@ sub GenerateImplementation
                 $implIncludes{"wtf/text/AtomicString.h"} = 1;
             }
 
-            if ($interface->extendedAttributes->{"JSCustomGetOwnPropertySlotAndDescriptor"}) {
+            if ($interface->extendedAttributes->{JSCustomGetOwnPropertySlotAndDescriptor}) {
                 &$propertyNameGeneration();
                 push(@implContent, "    if (thisObject->getOwnPropertySlotDelegate(state, propertyName, slot))\n");
                 push(@implContent, "        return true;\n");
@@ -2836,13 +2760,11 @@ sub GenerateImplementation
             my $name = $attribute->signature->name;
             my $type = $attribute->signature->type;
             my $getFunctionName = GetAttributeGetterName($interface, $className, $attribute);
-            my $implGetterFunctionName = $codeGenerator->WK_lcfirst($attribute->signature->extendedAttributes->{"ImplementedAs"} || $name);
-            my $getterExceptionsWithMessage = $attribute->signature->extendedAttributes->{"GetterRaisesExceptionWithMessage"};
-            my $getterExceptions = $attribute->signature->extendedAttributes->{"GetterRaisesException"} || $getterExceptionsWithMessage;
+            my $implGetterFunctionName = $codeGenerator->WK_lcfirst($attribute->signature->extendedAttributes->{ImplementedAs} || $name);
+            my $getterMayThrowLegacyExceptionWithMessage = $attribute->signature->extendedAttributes->{GetterMayThrowLegacyExceptionWithMessage};
+            my $getterMayThrowLegacyException = $attribute->signature->extendedAttributes->{GetterMayThrowLegacyException} || $getterMayThrowLegacyExceptionWithMessage;
 
-            if ($getterExceptions) {
-                $implIncludes{"ExceptionCode.h"} = 1;
-            }
+            $implIncludes{"ExceptionCode.h"} = 1 if $getterMayThrowLegacyException;
 
             my $attributeConditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
             push(@implContent, "#if ${attributeConditionalString}\n") if $attributeConditionalString;
@@ -2857,15 +2779,15 @@ sub GenerateImplementation
 
             if (!$attribute->isStatic || $attribute->signature->type =~ /Constructor$/) {
                 push(@implContent, "    JSValue decodedThisValue = JSValue::decode(thisValue);\n");
-                my $castingFunction = $interface->extendedAttributes->{"CustomProxyToJSObject"} ? "to${className}" : GetCastingHelperForThisObject($interface);
+                my $castingFunction = $interface->extendedAttributes->{CustomProxyToJSObject} ? "to${className}" : GetCastingHelperForThisObject($interface);
                 # http://heycam.github.io/webidl/#ImplicitThis
-                if ($interface->extendedAttributes->{"ImplicitThis"}) {
+                if ($interface->extendedAttributes->{ImplicitThis}) {
                     push(@implContent, "    auto* castedThis = decodedThisValue.isUndefinedOrNull() ? $castingFunction(state->thisValue().toThis(state, NotStrictMode)) : $castingFunction(decodedThisValue);\n");
                 } else {
                     push(@implContent, "    auto* castedThis = $castingFunction(decodedThisValue);\n");
                 }
                 push(@implContent, "    if (UNLIKELY(!castedThis)) {\n");
-                if ($attribute->signature->extendedAttributes->{"LenientThis"}) {
+                if ($attribute->signature->extendedAttributes->{LenientThis}) {
                     push(@implContent, "        return JSValue::encode(jsUndefined());\n");
                 } else {
                     push(@implContent, "        return throwGetterTypeError(*state, throwScope, \"$visibleInterfaceName\", \"$name\");\n");
@@ -2874,9 +2796,9 @@ sub GenerateImplementation
             }
 
             my @arguments = ();
-            if ($getterExceptions && !HasCustomGetter($attribute->signature->extendedAttributes)) {
+            if ($getterMayThrowLegacyException && !HasCustomGetter($attribute->signature->extendedAttributes)) {
                 push(@arguments, "ec");
-                if ($getterExceptionsWithMessage) {
+                if ($getterMayThrowLegacyExceptionWithMessage) {
                     push(@implContent, "    ExceptionCodeWithMessage ec;\n");
                 } else {
                     push(@implContent, "    ExceptionCode ec = 0;\n");
@@ -2885,10 +2807,10 @@ sub GenerateImplementation
 
             # Global constructors can be disabled at runtime.
             if ($attribute->signature->type =~ /Constructor$/) {
-                if ($attribute->signature->extendedAttributes->{"EnabledBySetting"}) {
+                if ($attribute->signature->extendedAttributes->{EnabledBySetting}) {
                     AddToImplIncludes("Frame.h");
                     AddToImplIncludes("Settings.h");
-                    my $enable_function = ToMethodName($attribute->signature->extendedAttributes->{"EnabledBySetting"}) . "Enabled";
+                    my $enable_function = ToMethodName($attribute->signature->extendedAttributes->{EnabledBySetting}) . "Enabled";
                     push(@implContent, "    if (UNLIKELY(!castedThis->wrapped().frame()))\n");
                     push(@implContent, "        return JSValue::encode(jsUndefined());\n");
                     push(@implContent, "    Settings& settings = castedThis->wrapped().frame()->settings();\n");
@@ -2897,13 +2819,11 @@ sub GenerateImplementation
                 }
             }
 
-            if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) {
-                $needsVisitChildren = 1;
-            }
+            $needsVisitChildren = 1 if $attribute->signature->extendedAttributes->{CachedAttribute};
 
-            if ($interface->extendedAttributes->{"CheckSecurity"} &&
-                !$attribute->signature->extendedAttributes->{"DoNotCheckSecurity"} &&
-                !$attribute->signature->extendedAttributes->{"DoNotCheckSecurityOnGetter"}) {
+            if ($interface->extendedAttributes->{CheckSecurity} &&
+                !$attribute->signature->extendedAttributes->{DoNotCheckSecurity} &&
+                !$attribute->signature->extendedAttributes->{DoNotCheckSecurityOnGetter}) {
                 if ($interfaceName eq "DOMWindow") {
                     push(@implContent, "    if (!BindingSecurity::shouldAllowAccessToDOMWindow(state, castedThis->wrapped(), ThrowSecurityError))\n");
                 } else {
@@ -2912,7 +2832,7 @@ sub GenerateImplementation
                 push(@implContent, "        return JSValue::encode(jsUndefined());\n");
             }
 
-            if ($attribute->signature->extendedAttributes->{"Nondeterministic"}) {
+            if ($attribute->signature->extendedAttributes->{Nondeterministic}) {
                 AddToImplIncludes("MemoizedDOMResult.h", "WEB_REPLAY");
                 AddToImplIncludes("<replay/InputCursor.h>", "WEB_REPLAY");
                 AddToImplIncludes("<wtf/NeverDestroyed.h>", "WEB_REPLAY");
@@ -2923,13 +2843,13 @@ sub GenerateImplementation
 
                 my $nativeType = GetNativeType($interface, $type);
                 my $memoizedType = GetNativeTypeForMemoization($interface, $type);
-                my $exceptionCode = $getterExceptionsWithMessage ? "ec.code" : ($getterExceptions ? "ec" : "0");
+                my $exceptionCode = $getterMayThrowLegacyExceptionWithMessage ? "ec.code" : ($getterMayThrowLegacyException ? "ec" : "0");
                 push(@implContent, "    static NeverDestroyed<const AtomicString> bindingName(\"$interfaceName.$name\", AtomicString::ConstructFromLiteral);\n");
                 push(@implContent, "    if (cursor.isCapturing()) {\n");
                 push(@implContent, "        $memoizedType memoizedResult = castedThis->wrapped().$implGetterFunctionName(" . join(", ", @arguments) . ");\n");
                 push(@implContent, "        cursor.appendInput<MemoizedDOMResult<$memoizedType>>(bindingName.get().string(), memoizedResult, $exceptionCode);\n");
                 push(@implContent, "        JSValue result = " . NativeToJSValue($attribute->signature, 0, $interface, "memoizedResult", "castedThis") . ";\n");
-                push(@implContent, "        setDOMException(state, throwScope, ec);\n") if $getterExceptions;
+                push(@implContent, "        setDOMException(state, throwScope, ec);\n") if $getterMayThrowLegacyException;
                 push(@implContent, "        return JSValue::encode(result);\n");
                 push(@implContent, "    }\n");
                 push(@implContent, "\n");
@@ -2939,7 +2859,7 @@ sub GenerateImplementation
                 push(@implContent, "        if (input && input->convertTo<$memoizedType>(memoizedResult)) {\n");
                 # FIXME: the generated code should report an error if an input cannot be fetched or converted.
                 push(@implContent, "            JSValue result = " . NativeToJSValue($attribute->signature, 0, $interface, "memoizedResult", "castedThis") . ";\n");
-                push(@implContent, "            setDOMException(state, throwScope, input->exceptionCode());\n") if $getterExceptions;
+                push(@implContent, "            setDOMException(state, throwScope, input->exceptionCode());\n") if $getterMayThrowLegacyException;
                 push(@implContent, "            return JSValue::encode(result);\n");
                 push(@implContent, "        }\n");
                 push(@implContent, "    }\n");
@@ -2948,14 +2868,14 @@ sub GenerateImplementation
 
             if (HasCustomGetter($attribute->signature->extendedAttributes)) {
                 push(@implContent, "    return JSValue::encode(castedThis->$implGetterFunctionName(*state));\n");
-            } elsif ($attribute->signature->extendedAttributes->{"CheckSecurityForNode"}) {
+            } elsif ($attribute->signature->extendedAttributes->{CheckSecurityForNode}) {
                 $implIncludes{"JSDOMBinding.h"} = 1;
                 push(@implContent, "    auto& impl = castedThis->wrapped();\n");
                 push(@implContent, "    return JSValue::encode(shouldAllowAccessToNode(state, impl." . $attribute->signature->name . "()) ? " . NativeToJSValue($attribute->signature, 0, $interface, "impl.$implGetterFunctionName()", "castedThis") . " : jsNull());\n");
             } elsif ($type eq "EventHandler") {
                 $implIncludes{"EventNames.h"} = 1;
-                my $getter = $attribute->signature->extendedAttributes->{"WindowEventHandler"} ? "windowEventHandlerAttribute"
-                    : $attribute->signature->extendedAttributes->{"DocumentEventHandler"} ? "documentEventHandlerAttribute"
+                my $getter = $attribute->signature->extendedAttributes->{WindowEventHandler} ? "windowEventHandlerAttribute"
+                    : $attribute->signature->extendedAttributes->{DocumentEventHandler} ? "documentEventHandlerAttribute"
                     : "eventHandlerAttribute";
                 my $eventName = EventHandlerAttributeEventName($attribute);
                 push(@implContent, "    UNUSED_PARAM(state);\n");
@@ -2970,19 +2890,19 @@ sub GenerateImplementation
                     $constructorType =~ s/Named$//;
                     push(@implContent, "    return JSValue::encode(JS" . $constructorType . "::get${named}Constructor(state->vm(), castedThis));\n");
                 } else {
-                    AddToImplIncludes("JS" . $constructorType . ".h", $attribute->signature->extendedAttributes->{"Conditional"});
+                    AddToImplIncludes("JS" . $constructorType . ".h", $attribute->signature->extendedAttributes->{Conditional});
                     push(@implContent, "    return JSValue::encode(JS" . $constructorType . "::getConstructor(state->vm(), castedThis->globalObject()));\n");
                 }
-            } elsif (!$attribute->signature->extendedAttributes->{"GetterRaisesException"} && !$attribute->signature->extendedAttributes->{"GetterRaisesExceptionWithMessage"}) {
+            } elsif (!$attribute->signature->extendedAttributes->{GetterMayThrowLegacyException} && !$attribute->signature->extendedAttributes->{GetterMayThrowLegacyExceptionWithMessage}) {
                 my $cacheIndex = 0;
-                if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) {
+                if ($attribute->signature->extendedAttributes->{CachedAttribute}) {
                     $cacheIndex = $currentCachedAttribute;
                     $currentCachedAttribute++;
                     push(@implContent, "    if (JSValue cachedValue = castedThis->m_" . $attribute->signature->name . ".get())\n");
                     push(@implContent, "        return JSValue::encode(cachedValue);\n");
                 }
 
-                my @callWithArgs = GenerateCallWith($attribute->signature->extendedAttributes->{"CallWith"}, \@implContent, "JSValue::encode(jsUndefined())");
+                my @callWithArgs = GenerateCallWith($attribute->signature->extendedAttributes->{CallWith}, \@implContent, "JSValue::encode(jsUndefined())");
 
                 if ($svgListPropertyType) {
                     push(@implContent, "    JSValue result =  " . NativeToJSValue($attribute->signature, 0, $interface, "castedThis->wrapped().$implGetterFunctionName(" . (join ", ", @callWithArgs) . ")", "castedThis") . ";\n");
@@ -2996,8 +2916,8 @@ sub GenerateImplementation
                     }
                 } else {
                     my ($functionName, @arguments) = $codeGenerator->GetterExpression(\%implIncludes, $interfaceName, $attribute);
-                    if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) {
-                        my $implementedBy = $attribute->signature->extendedAttributes->{"ImplementedBy"};
+                    my $implementedBy = $attribute->signature->extendedAttributes->{ImplementedBy};
+                    if ($implementedBy) {
                         $implIncludes{"${implementedBy}.h"} = 1;
                         $functionName = "WebCore::${implementedBy}::${functionName}";
                         unshift(@arguments, "impl") if !$attribute->isStatic;
@@ -3018,11 +2938,11 @@ sub GenerateImplementation
                     }
                 }
 
-                push(@implContent, "    castedThis->m_" . $attribute->signature->name . ".set(state->vm(), castedThis, result);\n") if ($attribute->signature->extendedAttributes->{"CachedAttribute"});
+                push(@implContent, "    castedThis->m_" . $attribute->signature->name . ".set(state->vm(), castedThis, result);\n") if $attribute->signature->extendedAttributes->{CachedAttribute};
                 push(@implContent, "    return JSValue::encode(result);\n");
 
             } else {
-                unshift(@arguments, GenerateCallWith($attribute->signature->extendedAttributes->{"CallWith"}, \@implContent, "JSValue::encode(jsUndefined())"));
+                unshift(@arguments, GenerateCallWith($attribute->signature->extendedAttributes->{CallWith}, \@implContent, "JSValue::encode(jsUndefined())"));
 
                 if ($svgPropertyOrListPropertyType) {
                     push(@implContent, "    $svgPropertyOrListPropertyType impl(*castedThis->wrapped());\n");
@@ -3055,7 +2975,7 @@ sub GenerateImplementation
             push(@implContent, "    if (UNLIKELY(!domObject))\n");
             push(@implContent, "        return throwVMTypeError(state, throwScope);\n");
 
-            if (!$interface->extendedAttributes->{"NoInterfaceObject"}) {
+            if (!$interface->extendedAttributes->{NoInterfaceObject}) {
                 push(@implContent, "    return JSValue::encode(${className}::getConstructor(state->vm(), domObject->globalObject()));\n");
             } else {
                 push(@implContent, "    JSValue constructor = ${className}Constructor::create(state->vm(), ${className}Constructor::createStructure(state->vm(), *domObject->globalObject(), domObject->globalObject()->objectPrototype()), *jsCast<JSDOMGlobalObject*>(domObject->globalObject()));\n");
@@ -3084,22 +3004,21 @@ sub GenerateImplementation
         push(@implContent, "    return domObject->putDirect(state->vm(), state->propertyNames().constructor, value);\n");
         push(@implContent, "}\n\n");
     }
-    my $hasCustomSetter = $interface->extendedAttributes->{"CustomNamedSetter"}
-                          || $interface->extendedAttributes->{"CustomIndexedSetter"};
 
+    my $hasCustomSetter = $interface->extendedAttributes->{CustomNamedSetter} || $interface->extendedAttributes->{CustomIndexedSetter};
     if ($hasCustomSetter) {
-        if (!$interface->extendedAttributes->{"CustomPutFunction"}) {
+        if (!$interface->extendedAttributes->{CustomPutFunction}) {
             push(@implContent, "bool ${className}::put(JSCell* cell, ExecState* state, PropertyName propertyName, JSValue value, PutPropertySlot& slot)\n");
             push(@implContent, "{\n");
             push(@implContent, "    auto* thisObject = jsCast<${className}*>(cell);\n");
             push(@implContent, "    ASSERT_GC_OBJECT_INHERITS(thisObject, info());\n");
-            if ($interface->extendedAttributes->{"CustomIndexedSetter"}) {
+            if ($interface->extendedAttributes->{CustomIndexedSetter}) {
                 push(@implContent, "    if (Optional<uint32_t> index = parseIndex(propertyName)) {\n");
                 push(@implContent, "        thisObject->indexSetter(state, index.value(), value);\n");
                 push(@implContent, "        return true;\n");
                 push(@implContent, "    }\n");
             }
-            if ($interface->extendedAttributes->{"CustomNamedSetter"}) {
+            if ($interface->extendedAttributes->{CustomNamedSetter}) {
                 push(@implContent, "    bool putResult = false;\n");
                 push(@implContent, "    if (thisObject->putDelegate(state, propertyName, value, slot, putResult))\n");
                 push(@implContent, "        return putResult;\n");
@@ -3108,20 +3027,20 @@ sub GenerateImplementation
             push(@implContent, "    return Base::put(thisObject, state, propertyName, value, slot);\n");
             push(@implContent, "}\n\n");
 
-            if ($interface->extendedAttributes->{"CustomIndexedSetter"} || $interface->extendedAttributes->{"CustomNamedSetter"}) {
+            if ($interface->extendedAttributes->{CustomIndexedSetter} || $interface->extendedAttributes->{CustomNamedSetter}) {
                 push(@implContent, "bool ${className}::putByIndex(JSCell* cell, ExecState* state, unsigned index, JSValue value, bool shouldThrow)\n");
                 push(@implContent, "{\n");
                 push(@implContent, "    auto* thisObject = jsCast<${className}*>(cell);\n");
                 push(@implContent, "    ASSERT_GC_OBJECT_INHERITS(thisObject, info());\n");
 
-                if ($interface->extendedAttributes->{"CustomIndexedSetter"}) {
+                if ($interface->extendedAttributes->{CustomIndexedSetter}) {
                     push(@implContent, "    if (LIKELY(index <= MAX_ARRAY_INDEX)) {\n");
                     push(@implContent, "        thisObject->indexSetter(state, index, value);\n");
                     push(@implContent, "        return true;\n");
                     push(@implContent, "    }\n");
                 }
 
-                if ($interface->extendedAttributes->{"CustomNamedSetter"}) {
+                if ($interface->extendedAttributes->{CustomNamedSetter}) {
                     push(@implContent, "    Identifier propertyName = Identifier::from(state, index);\n");
                     push(@implContent, "    PutPropertySlot slot(thisObject, shouldThrow);\n");
                     push(@implContent, "    bool putResult = false;\n");
@@ -3143,12 +3062,10 @@ sub GenerateImplementation
             my $type = $attribute->signature->type;
             my $putFunctionName = GetAttributeSetterName($interface, $className, $attribute);
             my $implSetterFunctionName = $codeGenerator->WK_ucfirst($name);
-            my $setterRaisesExceptionWithMessage = $attribute->signature->extendedAttributes->{"SetterRaisesExceptionWithMessage"};
-            my $setterRaisesException = $attribute->signature->extendedAttributes->{"SetterRaisesException"} || $setterRaisesExceptionWithMessage;
+            my $setterMayThrowLegacyExceptionWithMessage = $attribute->signature->extendedAttributes->{SetterMayThrowLegacyExceptionWithMessage};
+            my $setterMayThrowLegacyException = $attribute->signature->extendedAttributes->{SetterMayThrowLegacyException} || $setterMayThrowLegacyExceptionWithMessage;
 
-            if ($setterRaisesException) {
-                $implIncludes{"ExceptionCode.h"} = 1;
-            }
+            $implIncludes{"ExceptionCode.h"} = 1 if $setterMayThrowLegacyException;
 
             my $attributeConditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
             push(@implContent, "#if ${attributeConditionalString}\n") if $attributeConditionalString;
@@ -3161,20 +3078,20 @@ sub GenerateImplementation
             push(@implContent, "    JSValue value = JSValue::decode(encodedValue);\n");
             push(@implContent, "    UNUSED_PARAM(thisValue);\n") if !$attribute->isStatic;
             if (!$attribute->isStatic) {
-                if ($interface->extendedAttributes->{"CustomProxyToJSObject"}) {
+                if ($interface->extendedAttributes->{CustomProxyToJSObject}) {
                     push(@implContent, "    ${className}* castedThis = to${className}(JSValue::decode(thisValue));\n");
                 } else {
                     push(@implContent, "    ${className}* castedThis = " . GetCastingHelperForThisObject($interface) . "(JSValue::decode(thisValue));\n");
                 }
                 push(@implContent, "    if (UNLIKELY(!castedThis)) {\n");
-                if ($attribute->signature->extendedAttributes->{"LenientThis"}) {
+                if ($attribute->signature->extendedAttributes->{LenientThis}) {
                     push(@implContent, "        return false;\n");
                 } else {
                     push(@implContent, "        return throwSetterTypeError(*state, throwScope, \"$visibleInterfaceName\", \"$name\");\n");
                 }
                 push(@implContent, "    }\n");
             }
-            if ($interface->extendedAttributes->{"CheckSecurity"} && !$attribute->signature->extendedAttributes->{"DoNotCheckSecurity"} && !$attribute->signature->extendedAttributes->{"DoNotCheckSecurityOnSetter"}) {
+            if ($interface->extendedAttributes->{CheckSecurity} && !$attribute->signature->extendedAttributes->{DoNotCheckSecurity} && !$attribute->signature->extendedAttributes->{DoNotCheckSecurityOnSetter}) {
                 if ($interfaceName eq "DOMWindow") {
                     push(@implContent, "    if (!BindingSecurity::shouldAllowAccessToDOMWindow(state, castedThis->wrapped(), ThrowSecurityError))\n");
                 } else {
@@ -3195,8 +3112,8 @@ sub GenerateImplementation
                     push(@implContent, "    castedThis->wrapped().setAttributeEventListener($eventName, createJSErrorHandler(state, value, castedThis));\n");
                 } else {
                     $implIncludes{"JSEventListener.h"} = 1;
-                    my $setter = $attribute->signature->extendedAttributes->{"WindowEventHandler"} ? "setWindowEventHandlerAttribute"
-                        : $attribute->signature->extendedAttributes->{"DocumentEventHandler"} ? "setDocumentEventHandlerAttribute"
+                    my $setter = $attribute->signature->extendedAttributes->{WindowEventHandler} ? "setWindowEventHandlerAttribute"
+                        : $attribute->signature->extendedAttributes->{DocumentEventHandler} ? "setDocumentEventHandlerAttribute"
                         : "setEventHandlerAttribute";
                     push(@implContent, "    $setter(*state, *castedThis, castedThis->wrapped(), $eventName, value);\n");
                 }
@@ -3208,11 +3125,11 @@ sub GenerateImplementation
                 # We do not generate the header file for NamedConstructor of class XXXX,
                 # since we generate the NamedConstructor declaration into the header file of class XXXX.
                 if ($constructorType ne "any" and $constructorType !~ /Named$/) {
-                    AddToImplIncludes("JS" . $constructorType . ".h", $attribute->signature->extendedAttributes->{"Conditional"});
+                    AddToImplIncludes("JS" . $constructorType . ".h", $attribute->signature->extendedAttributes->{Conditional});
                 }
                 push(@implContent, "    // Shadowing a built-in constructor.\n");
                 push(@implContent, "    return castedThis->putDirect(state->vm(), Identifier::fromString(state, \"$name\"), value);\n");
-            } elsif ($attribute->signature->extendedAttributes->{"Replaceable"}) {
+            } elsif ($attribute->signature->extendedAttributes->{Replaceable}) {
                 push(@implContent, "    // Shadowing a built-in property.\n");
                 if (AttributeShouldBeOnInstance($interface, $attribute)) {
                     push(@implContent, "    return replaceStaticPropertySlot(state->vm(), castedThis, Identifier::fromString(state, \"$name\"), value);\n");
@@ -3221,9 +3138,9 @@ sub GenerateImplementation
                 }
             } else {
                 if (!$attribute->isStatic) {
-                    my $putForwards = $attribute->signature->extendedAttributes->{"PutForwards"};
+                    my $putForwards = $attribute->signature->extendedAttributes->{PutForwards};
                     if ($putForwards) {
-                        my $implGetterFunctionName = $codeGenerator->WK_lcfirst($attribute->signature->extendedAttributes->{"ImplementedAs"} || $name);
+                        my $implGetterFunctionName = $codeGenerator->WK_lcfirst($attribute->signature->extendedAttributes->{ImplementedAs} || $name);
                         if ($attribute->signature->isNullable) {
                             push(@implContent, "    RefPtr<${type}> forwardedImpl = castedThis->wrapped().${implGetterFunctionName}();\n");
                             push(@implContent, "    if (!forwardedImpl)\n");
@@ -3240,23 +3157,21 @@ sub GenerateImplementation
                         push(@implContent, "    auto& impl = castedThis->wrapped();\n");
                     }
                 }
-                if ($setterRaisesExceptionWithMessage) {
+                if ($setterMayThrowLegacyExceptionWithMessage) {
                     push(@implContent, "    ExceptionCodeWithMessage ec;\n");
-                } elsif ($setterRaisesException) {
+                } elsif ($setterMayThrowLegacyException) {
                     push(@implContent, "    ExceptionCode ec = 0;\n");
                 }
 
                 my $shouldPassByReference = ShouldPassWrapperByReference($attribute->signature, $interface);
 
-                my ($nativeValue, $mayThrowException) = JSValueToNative($interface, $attribute->signature, "value", $attribute->signature->extendedAttributes->{"Conditional"});
+                my ($nativeValue, $mayThrowException) = JSValueToNative($interface, $attribute->signature, "value", $attribute->signature->extendedAttributes->{Conditional});
                 if (!$shouldPassByReference && $codeGenerator->IsWrapperType($type)) {
                     $implIncludes{"<runtime/Error.h>"} = 1;
                     push(@implContent, "    " . GetNativeTypeFromSignature($interface, $attribute->signature) . " nativeValue = nullptr;\n");
                     push(@implContent, "    if (!value.isUndefinedOrNull()) {\n");
                     push(@implContent, "        nativeValue = $nativeValue;\n");
-                    if ($mayThrowException) {
-                        push(@implContent, "        RETURN_IF_EXCEPTION(throwScope, false);\n");
-                    }
+                    push(@implContent, "        RETURN_IF_EXCEPTION(throwScope, false);\n") if $mayThrowException;
                     push(@implContent, "        if (UNLIKELY(!nativeValue)) {\n");
                     push(@implContent, "            throwAttributeTypeError(*state, throwScope, \"$visibleInterfaceName\", \"$name\", \"$type\");\n");
                     push(@implContent, "            return false;\n");
@@ -3264,9 +3179,7 @@ sub GenerateImplementation
                     push(@implContent, "    }\n");
                 } else {
                     push(@implContent, "    auto nativeValue = $nativeValue;\n");
-                    if ($mayThrowException) {
-                        push(@implContent, "    RETURN_IF_EXCEPTION(throwScope, false);\n");
-                    }
+                    push(@implContent, "    RETURN_IF_EXCEPTION(throwScope, false);\n") if $mayThrowException;
                 }
 
                 if ($codeGenerator->IsEnumType($type)) {
@@ -3294,15 +3207,15 @@ sub GenerateImplementation
                         push(@implContent, "    podImpl = nativeValue;\n");
                     } else {
                         push(@implContent, "    podImpl.set$implSetterFunctionName(nativeValue");
-                        push(@implContent, ", ec") if $setterRaisesException;
+                        push(@implContent, ", ec") if $setterMayThrowLegacyException;
                         push(@implContent, ");\n");
-                        push(@implContent, "    setDOMException(state, throwScope, ec);\n") if $setterRaisesException;
+                        push(@implContent, "    setDOMException(state, throwScope, ec);\n") if $setterMayThrowLegacyException;
                     }
                     if ($svgPropertyType) {
-                        if ($setterRaisesExceptionWithMessage) {
+                        if ($setterMayThrowLegacyExceptionWithMessage) {
                             push(@implContent, "    if (LIKELY(!ec.code))\n");
                             push(@implContent, "        impl.commitChange();\n");
-                        } elsif ($setterRaisesException) {
+                        } elsif ($setterMayThrowLegacyException) {
                             push(@implContent, "    if (LIKELY(!ec))\n");
                             push(@implContent, "        impl.commitChange();\n");
                         } else {
@@ -3319,9 +3232,9 @@ sub GenerateImplementation
                     } else {
                         push(@arguments, $shouldPassByReference ? "*nativeValue" : "WTFMove(nativeValue)");
                     }
-                    if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) {
-                        my $implementedBy = $attribute->signature->extendedAttributes->{"ImplementedBy"};
-                        AddToImplIncludes("${implementedBy}.h", $attribute->signature->extendedAttributes->{"Conditional"});
+                    my $implementedBy = $attribute->signature->extendedAttributes->{ImplementedBy};
+                    if ($implementedBy) {
+                        AddToImplIncludes("${implementedBy}.h", $attribute->signature->extendedAttributes->{Conditional});
                         unshift(@arguments, "impl") if !$attribute->isStatic;
                         $functionName = "WebCore::${implementedBy}::${functionName}";
                     } elsif ($attribute->isStatic) {
@@ -3330,12 +3243,12 @@ sub GenerateImplementation
                         $functionName = "impl.${functionName}";
                     }
 
-                    unshift(@arguments, GenerateCallWith($attribute->signature->extendedAttributes->{"SetterCallWith"}, \@implContent, "false"));
-                    unshift(@arguments, GenerateCallWith($attribute->signature->extendedAttributes->{"CallWith"}, \@implContent, "false"));
+                    unshift(@arguments, GenerateCallWith($attribute->signature->extendedAttributes->{SetterCallWith}, \@implContent, "false"));
+                    unshift(@arguments, GenerateCallWith($attribute->signature->extendedAttributes->{CallWith}, \@implContent, "false"));
 
-                    push(@arguments, "ec") if $setterRaisesException;
+                    push(@arguments, "ec") if $setterMayThrowLegacyException;
                     push(@implContent, "    ${functionName}(" . join(", ", @arguments) . ");\n");
-                    push(@implContent, "    setDOMException(state, throwScope, ec);\n") if $setterRaisesException;
+                    push(@implContent, "    setDOMException(state, throwScope, ec);\n") if $setterMayThrowLegacyException;
                     push(@implContent, "    return true;\n");
                 }
             }
@@ -3346,7 +3259,7 @@ sub GenerateImplementation
         }
     }
 
-    if (($indexedGetterFunction || $namedGetterFunction) && !$interface->extendedAttributes->{"CustomEnumerateProperty"}) {
+    if (($indexedGetterFunction || $namedGetterFunction) && !$interface->extendedAttributes->{CustomEnumerateProperty}) {
         push(@implContent, "void ${className}::getOwnPropertyNames(JSObject* object, ExecState* state, PropertyNameArray& propertyNames, EnumerationMode mode)\n");
         push(@implContent, "{\n");
         push(@implContent, "    auto* thisObject = jsCast<${className}*>(object);\n");
@@ -3366,11 +3279,11 @@ sub GenerateImplementation
         push(@implContent, "}\n\n");
     }
 
-    if (!$interface->extendedAttributes->{"NoInterfaceObject"}) {
+    if (!$interface->extendedAttributes->{NoInterfaceObject}) {
         push(@implContent, "JSValue ${className}::getConstructor(VM& vm, const JSGlobalObject* globalObject)\n{\n");
         push(@implContent, "    return getDOMConstructor<${className}Constructor>(vm, *jsCast<const JSDOMGlobalObject*>(globalObject));\n");
         push(@implContent, "}\n\n");
-        if ($interface->extendedAttributes->{"NamedConstructor"}) {
+        if ($interface->extendedAttributes->{NamedConstructor}) {
             push(@implContent, "JSValue ${className}::getNamedConstructor(VM& vm, JSGlobalObject* globalObject)\n{\n");
             push(@implContent, "    return getDOMConstructor<${className}NamedConstructor>(vm, *jsCast<JSDOMGlobalObject*>(globalObject));\n");
             push(@implContent, "}\n\n");
@@ -3382,8 +3295,7 @@ sub GenerateImplementation
         my $inAppleCopyright = 0;
         foreach my $function (@{$interface->functions}) {
             next if IsJSBuiltin($interface, $function);
-            my $needsAppleCopyright = $function->signature->extendedAttributes->{"AppleCopyright"};
-            if ($needsAppleCopyright) {
+            if ($function->signature->extendedAttributes->{AppleCopyright}) {
                 if (!$inAppleCopyright) {
                     push(@implContent, $beginAppleCopyrightForSourceFiles);
                     $inAppleCopyright = 1;
@@ -3396,10 +3308,10 @@ sub GenerateImplementation
             my $isCustom = HasCustomMethod($function->signature->extendedAttributes);
             my $isOverloaded = $function->{overloads} && @{$function->{overloads}} > 1;
 
-            die "RaisesException and RaisesExceptionWithMessage are mutually exclusive" if $function->signature->extendedAttributes->{"RaisesException"} && $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
+            die "MayThrowLegacyException and MayThrowLegacyExceptionWithMessage are mutually exclusive" if $function->signature->extendedAttributes->{MayThrowLegacyException} && $function->signature->extendedAttributes->{MayThrowLegacyExceptionWithMessage};
 
-            my $raisesExceptionWithMessage = $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
-            my $raisesException = $function->signature->extendedAttributes->{"RaisesException"} || $raisesExceptionWithMessage;
+            my $mayThrowLegacyExceptionWithMessage = $function->signature->extendedAttributes->{MayThrowLegacyExceptionWithMessage};
+            my $mayThrowLegacyException = $function->signature->extendedAttributes->{MayThrowLegacyException} || $mayThrowLegacyExceptionWithMessage;
 
             next if $isCustom && $isOverloaded && $function->{overloadIndex} > 1;
 
@@ -3407,7 +3319,7 @@ sub GenerateImplementation
 
             my $functionName = GetFunctionName($interface, $className, $function);
 
-            my $conditional = $function->signature->extendedAttributes->{"Conditional"};
+            my $conditional = $function->signature->extendedAttributes->{Conditional};
             if ($conditional) {
                 my $conditionalString = $codeGenerator->GenerateConditionalStringFromAttributeValue($conditional);
                 push(@implContent, "#if ${conditionalString}\n");
@@ -3421,14 +3333,12 @@ sub GenerateImplementation
                 $functionReturn = "static inline EncodedJSValue";
             }
 
-            my $functionImplementationName = $function->signature->extendedAttributes->{"ImplementedAs"} || $codeGenerator->WK_lcfirst($function->signature->name);
+            my $functionImplementationName = $function->signature->extendedAttributes->{ImplementedAs} || $codeGenerator->WK_lcfirst($function->signature->name);
 
-            if (IsReturningPromise($function)) {
-                AddToImplIncludes("JSDOMPromise.h");
-            }
-            if (IsReturningPromise($function) && !$isCustom) {
+            AddToImplIncludes("JSDOMPromise.h") if IsReturningPromise($function);
 
-                my $scope = $interface->extendedAttributes->{"Exposed"} ? "WindowOrWorker" : "WindowOnly";
+            if (IsReturningPromise($function) && !$isCustom) {
+                my $scope = $interface->extendedAttributes->{Exposed} ? "WindowOrWorker" : "WindowOnly";
                 push(@implContent, <<END);
 static EncodedJSValue ${functionName}Promise(ExecState*, Ref<DeferredPromise>&&);
 
@@ -3440,8 +3350,7 @@ ${functionReturn} ${functionName}(ExecState* state)
 
 static inline EncodedJSValue ${functionName}Promise(ExecState* state, Ref<DeferredPromise>&& promise)
 END
-            }
-            else {
+            } else {
                 push(@implContent, "${functionReturn} ${functionName}(ExecState* state)\n");
             }
 
@@ -3453,7 +3362,7 @@ END
             push(@implContent, "    auto throwScope = DECLARE_THROW_SCOPE(vm);\n");
             push(@implContent, "    UNUSED_PARAM(throwScope);\n");
 
-            if ($function->signature->extendedAttributes->{"CEReactions"}) {
+            if ($function->signature->extendedAttributes->{CEReactions}) {
                 push(@implContent, "#if ENABLE(CUSTOM_ELEMENTS)\n");
                 push(@implContent, "    CustomElementReactionStack customElementReactionStack;\n");
                 push(@implContent, "#endif\n");
@@ -3467,9 +3376,9 @@ END
                 } else {
                     GenerateArgumentsCountCheck(\@implContent, $function, $interface);
 
-                    if ($raisesExceptionWithMessage) {
+                    if ($mayThrowLegacyExceptionWithMessage) {
                         push(@implContent, "    ExceptionCodeWithMessage ec;\n");
-                    } elsif ($raisesException) {
+                    } elsif ($mayThrowLegacyException) {
                         push(@implContent, "    ExceptionCode ec = 0;\n");
                     }
 
@@ -3480,7 +3389,7 @@ END
                 my $shouldRejectCastedThis = $isCustom && IsReturningPromise($function);
                 GenerateFunctionCastedThis($interface, $className, $function, $shouldRejectCastedThis);
 
-                if ($interface->extendedAttributes->{"CheckSecurity"} and !$function->signature->extendedAttributes->{"DoNotCheckSecurity"}) {
+                if ($interface->extendedAttributes->{CheckSecurity} and !$function->signature->extendedAttributes->{DoNotCheckSecurity}) {
                     if ($interfaceName eq "DOMWindow") {
                         push(@implContent, "    if (!BindingSecurity::shouldAllowAccessToDOMWindow(state, castedThis->wrapped(), ThrowSecurityError))\n");
                     } else {
@@ -3513,14 +3422,14 @@ END
 
                     GenerateArgumentsCountCheck(\@implContent, $function, $interface);
 
-                    if ($raisesExceptionWithMessage) {
+                    if ($mayThrowLegacyExceptionWithMessage) {
                         push(@implContent, "    ExceptionCodeWithMessage ec;\n");
-                    } elsif ($raisesException) {
+                    } elsif ($mayThrowLegacyException) {
                         push(@implContent, "    ExceptionCode ec = 0;\n");
                     }
 
-                    if ($function->signature->extendedAttributes->{"CheckSecurityForNode"}) {
-                        push(@implContent, "    if (!shouldAllowAccessToNode(state, impl." . $function->signature->name . "(" . ($raisesException ? "ec" : "") .")))\n");
+                    if ($function->signature->extendedAttributes->{CheckSecurityForNode}) {
+                        push(@implContent, "    if (!shouldAllowAccessToNode(state, impl." . $function->signature->name . "(" . ($mayThrowLegacyException ? "ec" : "") .")))\n");
                         push(@implContent, "        return JSValue::encode(jsNull());\n");
                         $implIncludes{"JSDOMBinding.h"} = 1;
                     }
@@ -3554,10 +3463,10 @@ END
         if ($codeGenerator->InheritsInterface($interface, "EventTarget")) {
             push(@implContent, "    thisObject->wrapped().visitJSEventListeners(visitor);\n");
         }
-        push(@implContent, "    thisObject->visitAdditionalChildren(visitor);\n") if $interface->extendedAttributes->{"JSCustomMarkFunction"};
-        if ($interface->extendedAttributes->{"ReportExtraMemoryCost"}) {
+        push(@implContent, "    thisObject->visitAdditionalChildren(visitor);\n") if $interface->extendedAttributes->{JSCustomMarkFunction};
+        if ($interface->extendedAttributes->{ReportExtraMemoryCost}) {
             push(@implContent, "    visitor.reportExtraMemoryVisited(thisObject->wrapped().memoryCost());\n");
-            if ($interface->extendedAttributes->{"ReportExternalMemoryCost"}) {;
+            if ($interface->extendedAttributes->{ReportExternalMemoryCost}) {;
                 push(@implContent, "#if ENABLE(RESOURCE_USAGE)\n");
                 push(@implContent, "    visitor.reportExternalMemoryVisited(thisObject->wrapped().externalMemoryCost());\n");
                 push(@implContent, "#endif\n");
@@ -3566,7 +3475,7 @@ END
         if ($numCachedAttributes > 0) {
             foreach (@{$interface->attributes}) {
                 my $attribute = $_;
-                if ($attribute->signature->extendedAttributes->{"CachedAttribute"}) {
+                if ($attribute->signature->extendedAttributes->{CachedAttribute}) {
                     push(@implContent, "    visitor.append(&thisObject->m_" . $attribute->signature->name . ");\n");
                 }
             }
@@ -3585,12 +3494,10 @@ END
     # Cached attributes are indeed allowed when there is a custom mark/visitChildren function.
     # The custom function must make sure to account for the cached attribute.
     # Uncomment the below line to temporarily enforce generated mark functions when cached attributes are present.
-    # die "Can't generate binding for class with cached attribute and custom mark." if (($numCachedAttributes > 0) and ($interface->extendedAttributes->{"JSCustomMarkFunction"}));
+    # die "Can't generate binding for class with cached attribute and custom mark." if $numCachedAttributes > 0 and $interface->extendedAttributes->{JSCustomMarkFunction};
 
     if ($indexedGetterFunction) {
-        if ($indexedGetterFunction->signature->type eq "DOMString") {
-            $implIncludes{"URL.h"} = 1;
-        }
+        $implIncludes{"URL.h"} = 1 if $indexedGetterFunction->signature->type eq "DOMString";
         if ($interfaceName =~ /^HTML\w*Collection$/ or $interfaceName eq "RadioNodeList") {
             $implIncludes{"JSNode.h"} = 1;
             $implIncludes{"Node.h"} = 1;
@@ -3680,7 +3587,7 @@ END
         push(@implContent, "}\n\n");
     }
 
-    if (ShouldGenerateWrapperOwnerCode($hasParent, $interface) && !$interface->extendedAttributes->{"JSCustomFinalize"}) {
+    if (ShouldGenerateWrapperOwnerCode($hasParent, $interface) && !$interface->extendedAttributes->{JSCustomFinalize}) {
         push(@implContent, "void JS${interfaceName}Owner::finalize(JSC::Handle<JSC::Unknown> handle, void* context)\n");
         push(@implContent, "{\n");
         push(@implContent, "    auto* js${interfaceName} = jsCast<JS${interfaceName}*>(handle.slot()->asCell());\n");
@@ -3729,7 +3636,7 @@ END
     RELEASE_ASSERT(actualVTablePointer == expectedVTablePointer);
 #endif
 END
-        push(@implContent, <<END) if $interface->extendedAttributes->{"ImplementationLacksVTable"};
+        push(@implContent, <<END) if $interface->extendedAttributes->{ImplementationLacksVTable};
 #if COMPILER(CLANG)
     // If you hit this failure the interface definition has the ImplementationLacksVTable
     // attribute. You should remove that attribute. If the class has subclasses
@@ -3738,7 +3645,7 @@ END
     static_assert(!__is_polymorphic($implType), "${implType} is polymorphic but the IDL claims it is not");
 #endif
 END
-        push(@implContent, <<END) if $interface->extendedAttributes->{"ReportExtraMemoryCost"};
+        push(@implContent, <<END) if $interface->extendedAttributes->{ReportExtraMemoryCost};
     globalObject->vm().heap.reportExtraMemoryAllocated(impl->memoryCost());
 END
 
@@ -3751,7 +3658,7 @@ END
         push(@implContent, "}\n\n");
     }
 
-    if (ShouldGenerateToWrapped($hasParent, $interface) and !$interface->extendedAttributes->{"JSCustomToNativeObject"}) {
+    if (ShouldGenerateToWrapped($hasParent, $interface) and !$interface->extendedAttributes->{JSCustomToNativeObject}) {
         push(@implContent, "$implType* ${className}::toWrapped(JSC::JSValue value)\n");
         push(@implContent, "{\n");
         push(@implContent, "    if (auto* wrapper = " . GetCastingHelperForThisObject($interface) . "(value))\n");
@@ -3802,7 +3709,7 @@ sub GenerateFunctionCastedThis
 {
     my ($interface, $className, $function, $shouldRejectPromise) = @_;
 
-    if ($interface->extendedAttributes->{"CustomProxyToJSObject"}) {
+    if ($interface->extendedAttributes->{CustomProxyToJSObject}) {
         push(@implContent, "    $className* castedThis = to${className}(state->thisValue().toThis(state, NotStrictMode));\n");
         push(@implContent, "    if (UNLIKELY(!castedThis))\n");
         push(@implContent, "        return throwVMTypeError(state, throwScope);\n");
@@ -3949,11 +3856,11 @@ sub GenerateParametersCheck
     my $visibleInterfaceName = $codeGenerator->GetVisibleInterfaceName($interface);
     my @arguments;
     my $functionName;
-    my $implementedBy = $function->signature->extendedAttributes->{"ImplementedBy"};
+    my $implementedBy = $function->signature->extendedAttributes->{ImplementedBy};
     my $numParameters = @{$function->parameters};
 
     if ($implementedBy) {
-        AddToImplIncludes("${implementedBy}.h", $function->signature->extendedAttributes->{"Conditional"});
+        AddToImplIncludes("${implementedBy}.h", $function->signature->extendedAttributes->{Conditional});
         unshift(@arguments, "impl") if !$function->isStatic;
         $functionName = "WebCore::${implementedBy}::${functionImplementationName}";
     } elsif ($function->isStatic) {
@@ -3965,10 +3872,10 @@ sub GenerateParametersCheck
     }
 
     my $quotedFunctionName;
-    if (!$function->signature->extendedAttributes->{"Constructor"}) {
+    if (!$function->signature->extendedAttributes->{Constructor}) {
         my $name = $function->signature->name;
         $quotedFunctionName = "\"$name\"";
-        push(@arguments, GenerateCallWith($function->signature->extendedAttributes->{"CallWith"}, \@$outputArray, "JSValue::encode(jsUndefined())", $function));
+        push(@arguments, GenerateCallWith($function->signature->extendedAttributes->{CallWith}, \@$outputArray, "JSValue::encode(jsUndefined())", $function));
     } else {
         $quotedFunctionName = "nullptr";
     }
@@ -4040,7 +3947,7 @@ sub GenerateParametersCheck
             }
             $value = "WTFMove($name)";
         } elsif ($parameter->isVariadic) {
-            AddToImplIncludes("JS${type}.h", $function->signature->extendedAttributes->{"Conditional"}) unless $codeGenerator->SkipIncludeHeader($type) or !$codeGenerator->IsWrapperType($type);
+            AddToImplIncludes("JS${type}.h", $function->signature->extendedAttributes->{Conditional}) unless $codeGenerator->SkipIncludeHeader($type) or !$codeGenerator->IsWrapperType($type);
             my ($wrapperType, $wrappedType) = GetVariadicType($interface, $type);
             push(@$outputArray, "    auto $name = toArguments<VariadicHelper<$wrapperType, $wrappedType>>(*state, $argumentIndex);\n");
 
@@ -4107,13 +4014,11 @@ sub GenerateParametersCheck
                 $implIncludes{"<runtime/Error.h>"} = 1;
                 my $checkedArgument = "state->$argumentLookupMethod($argumentIndex)";
                 my $uncheckedArgument = "state->uncheckedArgument($argumentIndex)";
-                my ($nativeValue, $mayThrowException) = JSValueToNative($interface, $parameter, $uncheckedArgument, $function->signature->extendedAttributes->{"Conditional"});
+                my ($nativeValue, $mayThrowException) = JSValueToNative($interface, $parameter, $uncheckedArgument, $function->signature->extendedAttributes->{Conditional});
                 push(@$outputArray, "    $nativeType $name = nullptr;\n");
                 push(@$outputArray, "    if (!$checkedArgument.isUndefinedOrNull()) {\n");
                 push(@$outputArray, "        $name = $nativeValue;\n");
-                if ($mayThrowException) {
-                    push(@$outputArray, "        RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n");
-                }
+                push(@$outputArray, "        RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n") if $mayThrowException;
                 push(@$outputArray, "        if (UNLIKELY(!$name))\n");
                 push(@$outputArray, "            return throwArgumentTypeError(*state, throwScope, $argumentIndex, \"$name\", \"$visibleInterfaceName\", $quotedFunctionName, \"$type\");\n");
                 push(@$outputArray, "    }\n");
@@ -4124,7 +4029,7 @@ sub GenerateParametersCheck
 
                     # String-related optimizations.
                     if ($codeGenerator->IsStringType($type)) {
-                        my $useAtomicString = $parameter->extendedAttributes->{"AtomicString"};
+                        my $useAtomicString = $parameter->extendedAttributes->{AtomicString};
                         if ($defaultValue eq "null") {
                             $defaultValue = $useAtomicString ? "nullAtom" : "String()";
                         } elsif ($defaultValue eq "\"\"") {
@@ -4150,12 +4055,10 @@ sub GenerateParametersCheck
                     $inner = "state->$argumentLookupMethod($argumentIndex)";
                 }
 
-                my ($nativeValue, $mayThrowException) = JSValueToNative($interface, $parameter, $inner, $function->signature->extendedAttributes->{"Conditional"});
+                my ($nativeValue, $mayThrowException) = JSValueToNative($interface, $parameter, $inner, $function->signature->extendedAttributes->{Conditional});
                 push(@$outputArray, "    auto $name = ${outer}${nativeValue};\n");
                 $value = "WTFMove($name)";
-                if ($mayThrowException) {
-                    push(@$outputArray, "    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n");
-                }
+                push(@$outputArray, "    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n") if $mayThrowException;
             }
 
             if ($shouldPassByReference) {
@@ -4188,7 +4091,7 @@ sub GenerateReturnParameters
     if (IsReturningPromise($function)) {
         push(@arguments, "WTFMove(promise)");
     }
-    push(@arguments, "ec") if $function->signature->extendedAttributes->{"RaisesException"} || $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
+    push(@arguments, "ec") if $function->signature->extendedAttributes->{MayThrowLegacyException} || $function->signature->extendedAttributes->{MayThrowLegacyExceptionWithMessage};
     return @arguments;
 }
 
@@ -4217,22 +4120,15 @@ sub GenerateCallbackHeader
     push(@headerContent, "        return adoptRef(*new $className(callback, globalObject));\n");
     push(@headerContent, "    }\n\n");
 
-    # ScriptExecutionContext
     push(@headerContent, "    virtual ScriptExecutionContext* scriptExecutionContext() const { return ContextDestructionObserver::scriptExecutionContext(); }\n\n");
 
-    # Destructor
     push(@headerContent, "    virtual ~$className();\n");
 
     push(@headerContent, "    " . GetJSCallbackDataType($interface) . "* callbackData() { return m_data; }\n");
 
-    # Constructor object getter.
-    if (@{$interface->constants}) {
-        push(@headerContent, "    static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);\n");
-    }
+    push(@headerContent, "    static JSC::JSValue getConstructor(JSC::VM&, const JSC::JSGlobalObject*);\n") if @{$interface->constants};
 
-    if ($interface->extendedAttributes->{"CallbackNeedsOperatorEqual"}) {
-        push(@headerContent, "    virtual bool operator==(const $interfaceName&) const;\n\n")
-    }
+    push(@headerContent, "    virtual bool operator==(const $interfaceName&) const;\n\n") if $interface->extendedAttributes->{CallbackNeedsOperatorEqual};
 
     # Functions
     my $numFunctions = @{$interface->functions};
@@ -4289,7 +4185,7 @@ sub GenerateCallbackImplementation
 
     # Constructor
     push(@implContent, "${className}::${className}(JSObject* callback, JSDOMGlobalObject* globalObject)\n");
-    if ($interface->extendedAttributes->{"CallbackNeedsOperatorEqual"}) {
+    if ($interface->extendedAttributes->{CallbackNeedsOperatorEqual}) {
         push(@implContent, "    : ${interfaceName}(${className}Type)\n");
     } else {
         push(@implContent, "    : ${interfaceName}()\n");
@@ -4314,7 +4210,7 @@ sub GenerateCallbackImplementation
     push(@implContent, "#endif\n");
     push(@implContent, "}\n\n");
 
-    if ($interface->extendedAttributes->{"CallbackNeedsOperatorEqual"}) {
+    if ($interface->extendedAttributes->{CallbackNeedsOperatorEqual}) {
         push(@implContent, "bool ${className}::operator==(const ${interfaceName}& other) const\n");
         push(@implContent, "{\n");
         push(@implContent, "    if (other.type() != type())\n");
@@ -4344,29 +4240,23 @@ sub GenerateCallbackImplementation
             push(@hashValue2, "0");
             push(@hashSpecials, "DontDelete | ReadOnly | ConstantInteger");
 
-            my $implementedBy = $constant->extendedAttributes->{"ImplementedBy"};
-            if ($implementedBy) {
-                $implIncludes{"${implementedBy}.h"} = 1;
-            }
-            my $conditional = $constant->extendedAttributes->{"Conditional"};
-            if ($conditional) {
-                $conditionals{$name} = $conditional;
-            }
+            my $implementedBy = $constant->extendedAttributes->{ImplementedBy};
+            $implIncludes{"${implementedBy}.h"} = 1 if $implementedBy;
+
+            my $conditional = $constant->extendedAttributes->{Conditional};
+            $conditionals{$name} = $conditional if $conditional;
 
             $hashSize++;
         }
-        $object->GenerateHashTable($hashName, $hashSize,
-                                   \@hashKeys, \@hashSpecials,
-                                   \@hashValue1, \@hashValue2,
-                                   \%conditionals, 1) if $hashSize > 0;
+        $object->GenerateHashTable($hashName, $hashSize, \@hashKeys, \@hashSpecials, \@hashValue1, \@hashValue2, \%conditionals, 1) if $hashSize > 0;
 
-       push(@implContent, $codeGenerator->GenerateCompileTimeCheckForEnumsIfNeeded($interface));
+        push(@implContent, $codeGenerator->GenerateCompileTimeCheckForEnumsIfNeeded($interface));
 
-       GenerateConstructorDefinitions(\@implContent, $className, "", $visibleInterfaceName, $interface);
+        GenerateConstructorDefinitions(\@implContent, $className, "", $visibleInterfaceName, $interface);
 
-       push(@implContent, "JSValue ${className}::getConstructor(VM& vm, const JSGlobalObject* globalObject)\n{\n");
-       push(@implContent, "    return getDOMConstructor<${className}Constructor>(vm, *jsCast<const JSDOMGlobalObject*>(globalObject));\n");
-       push(@implContent, "}\n\n");
+        push(@implContent, "JSValue ${className}::getConstructor(VM& vm, const JSGlobalObject* globalObject)\n{\n");
+        push(@implContent, "    return getDOMConstructor<${className}Constructor>(vm, *jsCast<const JSDOMGlobalObject*>(globalObject));\n");
+        push(@implContent, "}\n\n");
     }
 
     # Functions.
@@ -4375,7 +4265,7 @@ sub GenerateCallbackImplementation
         push(@implContent, "\n// Functions\n");
         foreach my $function (@{$interface->functions}) {
             my @params = @{$function->parameters};
-            if ($function->signature->extendedAttributes->{"Custom"} || GetNativeType($interface, $function->signature->type) ne "bool") {
+            if ($function->signature->extendedAttributes->{Custom} || GetNativeType($interface, $function->signature->type) ne "bool") {
                 next;
             }
 
@@ -4411,7 +4301,7 @@ sub GenerateCallbackImplementation
 
             my $propertyToLookup = "Identifier::fromString(state, \"${functionName}\")";
             my $invokeMethod = "JSCallbackData::CallbackType::FunctionOrObject";
-            if ($codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{"Callback"}, "FunctionOnly")) {
+            if ($codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{Callback}, "FunctionOnly")) {
                 # For callback functions, do not look up callable property on the user object.
                 # https://heycam.github.io/webidl/#es-callback-function
                 $invokeMethod = "JSCallbackData::CallbackType::Function";
@@ -4446,18 +4336,16 @@ sub GenerateCallbackImplementation
     my $conditionalString = $codeGenerator->GenerateConditionalString($interface);
     push(@implContent, "\n#endif // ${conditionalString}\n") if $conditionalString;
 
-    if ($interface->extendedAttributes->{"AppleCopyright"}) {
-        push(@implContent, split("\r", $endAppleCopyright));
-    }
+    push(@implContent, split("\r", $endAppleCopyright)) if $interface->extendedAttributes->{AppleCopyright};
 }
 
 sub GenerateImplementationFunctionCall()
 {
     my ($function, $functionString, $indent, $svgPropertyType, $interface) = @_;
 
-    my $nondeterministic = $function->signature->extendedAttributes->{"Nondeterministic"};
-    my $raisesExceptionWithMessage = $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"};
-    my $raisesException = $function->signature->extendedAttributes->{"RaisesException"} || $raisesExceptionWithMessage;
+    my $nondeterministic = $function->signature->extendedAttributes->{Nondeterministic};
+    my $mayThrowLegacyExceptionWithMessage = $function->signature->extendedAttributes->{MayThrowLegacyExceptionWithMessage};
+    my $mayThrowLegacyException = $function->signature->extendedAttributes->{MayThrowLegacyException} || $mayThrowLegacyExceptionWithMessage;
 
     if ($function->signature->type eq "void" || IsReturningPromise($function)) {
         if ($nondeterministic) {
@@ -4466,22 +4354,22 @@ sub GenerateImplementationFunctionCall()
             push(@implContent, $indent . "InputCursor& cursor = state->lexicalGlobalObject()->inputCursor();\n");
             push(@implContent, $indent . "if (!cursor.isReplaying()) {\n");
             push(@implContent, $indent . "    $functionString;\n");
-            push(@implContent, $indent . "    setDOMException(state, throwScope, ec);\n") if $raisesException;
+            push(@implContent, $indent . "    setDOMException(state, throwScope, ec);\n") if $mayThrowLegacyException;
             push(@implContent, $indent . "}\n");
             push(@implContent, "#else\n");
             push(@implContent, $indent . "$functionString;\n");
-            push(@implContent, $indent . "setDOMException(state, throwScope, ec);\n") if $raisesException;
+            push(@implContent, $indent . "setDOMException(state, throwScope, ec);\n") if $mayThrowLegacyException;
             push(@implContent, "#endif\n");
         } else {
             push(@implContent, $indent . "$functionString;\n");
-            push(@implContent, $indent . "setDOMException(state, throwScope, ec);\n") if $raisesException;
+            push(@implContent, $indent . "setDOMException(state, throwScope, ec);\n") if $mayThrowLegacyException;
         }
 
         if ($svgPropertyType and !$function->isStatic) {
-            if ($raisesExceptionWithMessage) {
+            if ($mayThrowLegacyExceptionWithMessage) {
                 push(@implContent, $indent . "if (LIKELY(!ec.code))\n");
                 push(@implContent, $indent . "    impl.commitChange();\n");
-            } elsif ($raisesException) {
+            } elsif ($mayThrowLegacyException) {
                 push(@implContent, $indent . "if (LIKELY(!ec))\n");
                 push(@implContent, $indent . "    impl.commitChange();\n");
             } else {
@@ -4506,7 +4394,7 @@ sub GenerateImplementationFunctionCall()
             push(@implContent, $indent . "static NeverDestroyed<const AtomicString> bindingName(\"$bindingName\", AtomicString::ConstructFromLiteral);\n");
             push(@implContent, $indent . "if (cursor.isCapturing()) {\n");
             push(@implContent, $indent . "    $nativeType memoizedResult = $functionString;\n");
-            my $exceptionCode = $raisesExceptionWithMessage ? "ec.code" : ($raisesException ? "ec" : "0");
+            my $exceptionCode = $mayThrowLegacyExceptionWithMessage ? "ec.code" : ($mayThrowLegacyException ? "ec" : "0");
             push(@implContent, $indent . "    cursor.appendInput<MemoizedDOMResult<$memoizedType>>(bindingName.get().string(), memoizedResult, $exceptionCode);\n");
             push(@implContent, $indent . "    result = " . NativeToJSValue($function->signature, 1, $interface, "memoizedResult", $thisObject) . ";\n");
             push(@implContent, $indent . "} else if (cursor.isReplaying()) {\n");
@@ -4515,8 +4403,8 @@ sub GenerateImplementationFunctionCall()
             # FIXME: the generated code should report an error if an input cannot be fetched or converted.
             push(@implContent, $indent . "    if (input && input->convertTo<$memoizedType>(memoizedResult)) {\n");
             push(@implContent, $indent . "        result = " . NativeToJSValue($function->signature, 1, $interface, "memoizedResult", $thisObject) . ";\n");
-            push(@implContent, $indent . "        ec.code = input->exceptionCode();\n") if $raisesExceptionWithMessage;
-            push(@implContent, $indent . "        ec = input->exceptionCode();\n") if $raisesException && !$raisesExceptionWithMessage;
+            push(@implContent, $indent . "        ec.code = input->exceptionCode();\n") if $mayThrowLegacyExceptionWithMessage;
+            push(@implContent, $indent . "        ec = input->exceptionCode();\n") if $mayThrowLegacyException && !$mayThrowLegacyExceptionWithMessage;
             push(@implContent, $indent . "    } else\n");
             push(@implContent, $indent . "        result = " . NativeToJSValue($function->signature, 1, $interface, $functionString, $thisObject) . ";\n");
             push(@implContent, $indent . "} else\n");
@@ -4527,9 +4415,9 @@ sub GenerateImplementationFunctionCall()
         } else {
             push(@implContent, $indent . "JSValue result = " . NativeToJSValue($function->signature, 1, $interface, $functionString, $thisObject) . ";\n");
         }
-        push(@implContent, "\n" . $indent . "setDOMException(state, throwScope, ec);\n") if $raisesException;
+        push(@implContent, "\n" . $indent . "setDOMException(state, throwScope, ec);\n") if $mayThrowLegacyException;
 
-        if ($codeGenerator->ExtendedAttributeContains($function->signature->extendedAttributes->{"CallWith"}, "ScriptState")) {
+        if ($codeGenerator->ExtendedAttributeContains($function->signature->extendedAttributes->{CallWith}, "ScriptState")) {
             push(@implContent, $indent . "RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n");
         }
 
@@ -4612,7 +4500,7 @@ sub addIterableProperties()
     my $interface = shift;
     my $className = shift;
 
-    if ($interface->iterable->extendedAttributes->{"EnabledAtRuntime"}) {
+    if ($interface->iterable->extendedAttributes->{EnabledAtRuntime}) {
         AddToImplIncludes("RuntimeEnabledFeatures.h");
         my $enable_function = GetRuntimeEnableFunctionName($interface->iterable);
         push(@implContent, "    if (${enable_function}()) {\n    ");
@@ -4625,7 +4513,7 @@ sub addIterableProperties()
         push(@implContent, "    addValueIterableMethods(*globalObject(), *this);\n");
     }
 
-    if ($interface->iterable->extendedAttributes->{"EnabledAtRuntime"}) {
+    if ($interface->iterable->extendedAttributes->{EnabledAtRuntime}) {
         push(@implContent, "    }\n");
     }
 
@@ -4772,8 +4660,8 @@ sub GetIntegerConversionConfiguration
 {
     my $signature = shift;
 
-    return "EnforceRange" if $signature->extendedAttributes->{"EnforceRange"};
-    return "Clamp" if $signature->extendedAttributes->{"Clamp"};
+    return "EnforceRange" if $signature->extendedAttributes->{EnforceRange};
+    return "Clamp" if $signature->extendedAttributes->{Clamp};
     return "NormalConversion";
 }
 
@@ -4792,16 +4680,16 @@ sub JSValueToNative
     }
 
     if ($type eq "DOMString") {
-        return ("AtomicString($value.toString(state)->toExistingAtomicString(state))", 1) if $signature->extendedAttributes->{"RequiresExistingAtomicString"};
+        return ("AtomicString($value.toString(state)->toExistingAtomicString(state))", 1) if $signature->extendedAttributes->{RequiresExistingAtomicString};
 
-        my $treatNullAs = $signature->extendedAttributes->{"TreatNullAs"};
+        my $treatNullAs = $signature->extendedAttributes->{TreatNullAs};
         return ("valueToStringTreatingNullAsEmptyString(state, $value)", 1) if $treatNullAs && $treatNullAs eq "EmptyString";
         return ("valueToStringWithUndefinedOrNullCheck(state, $value)", 1) if $signature->isNullable;
-        return ("$value.toString(state)->toAtomicString(state)", 1) if $signature->extendedAttributes->{"AtomicString"};
+        return ("$value.toString(state)->toAtomicString(state)", 1) if $signature->extendedAttributes->{AtomicString};
         return ("$value.toWTFString(state)", 1);
     }
     if ($type eq "USVString") {
-        my $treatNullAs = $signature->extendedAttributes->{"TreatNullAs"};
+        my $treatNullAs = $signature->extendedAttributes->{TreatNullAs};
         return ("valueToUSVStringTreatingNullAsEmptyString(state, $value)", 1) if $treatNullAs && $treatNullAs eq "EmptyString";
         return ("valueToUSVStringWithUndefinedOrNullCheck(state, $value)", 1) if $signature->isNullable;
         return ("valueToUSVString(state, $value)", 1);
@@ -4857,7 +4745,7 @@ sub NativeToJSValue
 {
     my ($signature, $inFunctionCall, $interface, $value, $thisValue) = @_;
 
-    my $conditional = $signature->extendedAttributes->{"Conditional"};
+    my $conditional = $signature->extendedAttributes->{Conditional};
     my $type = $signature->type;
 
     my $globalObject = $thisValue ? "$thisValue->globalObject()" : "jsCast<JSDOMGlobalObject*>(state->lexicalGlobalObject())";
@@ -4873,7 +4761,7 @@ sub NativeToJSValue
         # We could instead overload a function to work with optional as well as non-optional numbers, but this
         # is slightly better because it guarantees we will fail to compile if the IDL file doesn't match the C++.
         my $function = $signature->isNullable ? "toNullableJSNumber" : "jsNumber";
-        if ($signature->extendedAttributes->{"Reflect"} and ($type eq "unsigned long" or $type eq "unsigned short")) {
+        if ($signature->extendedAttributes->{Reflect} and ($type eq "unsigned long" or $type eq "unsigned short")) {
             $value =~ s/getUnsignedIntegralAttribute/getIntegralAttribute/g;
             $value = "std::max(0, $value)";
         }
@@ -4903,7 +4791,7 @@ sub NativeToJSValue
     }
 
     if ($type eq "any") {
-        my $returnType = $signature->extendedAttributes->{"ImplementationReturnType"};
+        my $returnType = $signature->extendedAttributes->{ImplementationReturnType};
         if (defined $returnType and ($returnType eq "IDBKeyPath" or $returnType eq "IDBKey")) {
             AddToImplIncludes("IDBBindingUtilities.h", $conditional);
             return "toJS(*state, *$globalObject, $value)";
@@ -4930,7 +4818,7 @@ sub NativeToJSValue
         $value = "static_cast<" . GetNativeType($interface, $type) . ">($value)";
     } elsif ($codeGenerator->IsSVGTypeNeedingTearOff($type) and not $interface->name =~ /List$/) {
         my $tearOffType = $codeGenerator->GetSVGTypeNeedingTearOff($type);
-        if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($type) and !$inFunctionCall and not defined $signature->extendedAttributes->{"Immutable"}) {
+        if ($codeGenerator->IsSVGTypeWithWritablePropertiesNeedingTearOff($type) and !$inFunctionCall and not defined $signature->extendedAttributes->{Immutable}) {
             my $getter = $value;
             $getter =~ s/impl\.//;
             $getter =~ s/impl->//;
@@ -4955,7 +4843,7 @@ sub NativeToJSValue
         }
     }
 
-    my $function = $signature->extendedAttributes->{"NewObject"} ? "toJSNewlyCreated" : "toJS";
+    my $function = $signature->extendedAttributes->{NewObject} ? "toJSNewlyCreated" : "toJS";
     return "$function(state, $globalObject, $value)";
 }
 
@@ -5140,7 +5028,11 @@ sub WriteData
     my @includes = ();
     my %implIncludeConditions = ();
     foreach my $include (keys %implIncludes) {
+        next if $headerIncludes{$include};
+        next if $headerTrailingIncludes{$include};
+
         my $condition = $implIncludes{$include};
+
         my $checkType = $include;
         $checkType =~ s/\.h//;
         next if $codeGenerator->IsSVGAnimatedType($checkType);
@@ -5220,7 +5112,7 @@ sub GeneratePrototypeDeclaration
     my %structureFlags = ();
     push(@$outputArray, "class ${prototypeClassName} : public JSC::JSNonFinalObject {\n");
     push(@$outputArray, "public:\n");
-    push(@$outputArray, "    typedef JSC::JSNonFinalObject Base;\n");
+    push(@$outputArray, "    using Base = JSC::JSNonFinalObject;\n");
 
     push(@$outputArray, "    static ${prototypeClassName}* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)\n");
     push(@$outputArray, "    {\n");
@@ -5252,14 +5144,14 @@ sub GeneratePrototypeDeclaration
         }
     }
 
-    if ($interface->extendedAttributes->{"JSCustomNamedGetterOnPrototype"}) {
+    if ($interface->extendedAttributes->{JSCustomNamedGetterOnPrototype}) {
         push(@$outputArray, "\n");
         push(@$outputArray, "    static bool put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&);\n");
         push(@$outputArray, "    bool putDelegate(JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&, bool& putResult);\n");
     }
 
     # Custom defineOwnProperty function
-    if ($interface->extendedAttributes->{"JSCustomDefineOwnPropertyOnPrototype"}) {
+    if ($interface->extendedAttributes->{JSCustomDefineOwnPropertyOnPrototype}) {
         push(@$outputArray, "\n");
         push(@$outputArray, "    static bool defineOwnProperty(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, const JSC::PropertyDescriptor&, bool shouldThrow);\n");
     }
@@ -5280,7 +5172,7 @@ sub GeneratePrototypeDeclaration
 sub GetConstructorTemplateClassName
 {
     my $interface = shift;
-    return "JSDOMConstructorNotConstructable" if ($interface->extendedAttributes->{"NamedConstructor"});
+    return "JSDOMConstructorNotConstructable" if $interface->extendedAttributes->{NamedConstructor};
     return "JSDOMConstructorNotConstructable" unless IsConstructable($interface);
     return "JSBuiltinConstructor" if IsJSBuiltinConstructor($interface);
     return "JSDOMConstructor";
@@ -5296,8 +5188,8 @@ sub GenerateConstructorDeclaration
 
     $implIncludes{"JSDOMConstructor.h"} = 1;
 
-    push(@$outputArray, "typedef $templateClassName<$className> ${constructorClassName};\n");
-    push(@$outputArray, "typedef JSDOMNamedConstructor<$className> JS${interfaceName}NamedConstructor;\n") if $interface->extendedAttributes->{"NamedConstructor"};
+    push(@$outputArray, "using $constructorClassName = $templateClassName<$className>;\n");
+    push(@$outputArray, "using JS${interfaceName}NamedConstructor = JSDOMNamedConstructor<$className>;\n") if $interface->extendedAttributes->{NamedConstructor};
     push(@$outputArray, "\n");
 }
 
@@ -5388,9 +5280,9 @@ END
 
             for (my $index = 0; $index < @{$interface->attributes}; $index++) {
                 my $attribute = @{$interface->attributes}[$index];
-                if ($attribute->signature->extendedAttributes->{"InitializedByEventConstructor"}) {
+                if ($attribute->signature->extendedAttributes->{InitializedByEventConstructor}) {
                     my $attributeName = $attribute->signature->name;
-                    my $attributeImplName = $attribute->signature->extendedAttributes->{"ImplementedAs"} || $attributeName;
+                    my $attributeImplName = $attribute->signature->extendedAttributes->{ImplementedAs} || $attributeName;
                     my $conditionalString = $codeGenerator->GenerateConditionalString($attribute->signature);
 
                     push(@implContent, "#if ${conditionalString}\n") if $conditionalString;
@@ -5409,13 +5301,13 @@ END
 }
 
 END
-         } elsif ($interface->extendedAttributes->{"CustomConstructor"}) {
+         } elsif ($interface->extendedAttributes->{CustomConstructor}) {
             push(@$outputArray, "template<> JSC::EncodedJSValue JSC_HOST_CALL ${constructorClassName}::construct(JSC::ExecState* exec)\n");
             push(@$outputArray, "{\n");
             push(@$outputArray, "    ASSERT(exec);\n");
             push(@$outputArray, "    return construct${className}(*exec);\n");
             push(@$outputArray, "}\n\n");
-         } elsif (!HasCustomConstructor($interface) && (!$interface->extendedAttributes->{"NamedConstructor"} || $generatingNamedConstructor)) {
+         } elsif (!HasCustomConstructor($interface) && (!$interface->extendedAttributes->{NamedConstructor} || $generatingNamedConstructor)) {
             my $isOverloaded = $function->{overloads} && @{$function->{overloads}} > 1;
             if ($isOverloaded) {
                 push(@$outputArray, "static inline EncodedJSValue construct${className}$function->{overloadIndex}(ExecState* state)\n");
@@ -5436,9 +5328,9 @@ END
 
             GenerateArgumentsCountCheck($outputArray, $function, $interface);
 
-            if ($function->signature->extendedAttributes->{"RaisesException"} || $function->signature->extendedAttributes->{"RaisesExceptionWithMessage"} || $interface->extendedAttributes->{"ConstructorRaisesException"}) {
+            if ($function->signature->extendedAttributes->{MayThrowLegacyException} || $function->signature->extendedAttributes->{MayThrowLegacyExceptionWithMessage} || $interface->extendedAttributes->{ConstructorMayThrowLegacyException}) {
                 $implIncludes{"ExceptionCode.h"} = 1;
-                if ($function->signature->extendedAttributes->{"RaisesExceptionWithMessage"}) {
+                if ($function->signature->extendedAttributes->{MayThrowLegacyExceptionWithMessage}) {
                     push(@$outputArray, "    ExceptionCodeWithMessage ec;\n");
                 } else {
                     push(@$outputArray, "    ExceptionCode ec = 0;\n");
@@ -5449,16 +5341,16 @@ END
             # FIXME: Currently [Constructor(...)] does not yet support optional arguments without [Default=...]
             my ($dummy, $paramIndex) = GenerateParametersCheck($outputArray, $function, $interface, "constructorCallback", undef, undef, undef);
 
-            if ($codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{"ConstructorCallWith"}, "ScriptState")) {
-                push(@constructorArgList, "*state");
-            }
-            if ($codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{"ConstructorCallWith"}, "ScriptExecutionContext")) {
+            push(@constructorArgList, "*state") if $codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{ConstructorCallWith}, "ScriptState");;
+
+            if ($codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{ConstructorCallWith}, "ScriptExecutionContext")) {
                 push(@constructorArgList, "*context");
                 push(@$outputArray, "    ScriptExecutionContext* context = castedThis->scriptExecutionContext();\n");
                 push(@$outputArray, "    if (UNLIKELY(!context))\n");
                 push(@$outputArray, "        return throwConstructorScriptExecutionContextUnavailableError(*state, throwScope, \"${visibleInterfaceName}\");\n");
             }
-            if ($codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{"ConstructorCallWith"}, "Document")) {
+
+            if ($codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{ConstructorCallWith}, "Document")) {
                 $implIncludes{"Document.h"} = 1;
                 push(@constructorArgList, "document");
                 push(@$outputArray, "    ScriptExecutionContext* context = castedThis->scriptExecutionContext();\n");
@@ -5467,9 +5359,8 @@ END
                 push(@$outputArray, "    ASSERT(context->isDocument());\n");
                 push(@$outputArray, "    auto& document = downcast<Document>(*context);\n");
             }
-            if ($generatingNamedConstructor) {
-                push(@constructorArgList, "*castedThis->document()");
-            }
+
+            push(@constructorArgList, "*castedThis->document()") if $generatingNamedConstructor;
 
             my $index = 0;
             foreach my $parameter (@{$function->parameters}) {
@@ -5484,9 +5375,8 @@ END
                 $index++;
             }
 
-            if ($interface->extendedAttributes->{"ConstructorRaisesException"}) {
-                push(@constructorArgList, "ec");
-            }
+            push(@constructorArgList, "ec") if $interface->extendedAttributes->{ConstructorMayThrowLegacyException};
+
             my $constructorArg = join(", ", @constructorArgList);
             if ($generatingNamedConstructor) {
                 push(@$outputArray, "    auto object = ${interfaceName}::createForJSConstructor(${constructorArg});\n");
@@ -5494,17 +5384,14 @@ END
                 push(@$outputArray, "    auto object = ${interfaceName}::create(${constructorArg});\n");
             }
 
-            if ($interface->extendedAttributes->{"ConstructorRaisesException"}) {
+            if ($interface->extendedAttributes->{ConstructorMayThrowLegacyException}) {
                 push(@$outputArray, "    if (UNLIKELY(ec)) {\n");
                 push(@$outputArray, "        setDOMException(state, throwScope, ec);\n");
                 push(@$outputArray, "        return JSValue::encode(JSValue());\n");
                 push(@$outputArray, "    }\n");
             }
 
-            if ($codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{"ConstructorCallWith"}, "ScriptState")) {
-                 push(@$outputArray, "    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n");
-            }
-
+            push(@$outputArray, "    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n") if $codeGenerator->ExtendedAttributeContains($interface->extendedAttributes->{ConstructorCallWith}, "ScriptState");
             push(@$outputArray, "    return JSValue::encode(toJSNewlyCreated(state, castedThis->globalObject(), WTFMove(object)));\n");
             push(@$outputArray, "}\n\n");
         }
@@ -5540,7 +5427,7 @@ sub GenerateConstructorHelperMethods
     my $leastConstructorLength = 0;
     if ($codeGenerator->IsConstructorTemplate($interface, "Event")) {
         $leastConstructorLength = 1;
-    } elsif ($interface->extendedAttributes->{"Constructor"} || $interface->extendedAttributes->{"CustomConstructor"}) {
+    } elsif ($interface->extendedAttributes->{Constructor} || $interface->extendedAttributes->{CustomConstructor}) {
         my @constructors = @{$interface->constructors};
         my @customConstructors = @{$interface->customConstructors};
         $leastConstructorLength = 255;
@@ -5559,7 +5446,7 @@ sub GenerateConstructorHelperMethods
     # FIXME: IDL does not allow an interface without [NoInterfaceObject] to inherit one that is marked as [NoInterfaceObject]
     # so we should be able to use our parent's interface object no matter what. However, some of our IDL files (e.g. CanvasRenderingContext2D)
     # are not valid so we need this check for now.
-    if ($interface->parent && !$codeGenerator->getInterfaceExtendedAttributesFromName($interface->parent)->{"NoInterfaceObject"}) {
+    if ($interface->parent && !$codeGenerator->getInterfaceExtendedAttributesFromName($interface->parent)->{NoInterfaceObject}) {
         my $parentClassName = "JS" . $interface->parent;
         push(@$outputArray, "    return ${parentClassName}::getConstructor(vm, &globalObject);\n");
     } elsif ($interface->isCallback) {
@@ -5624,62 +5511,60 @@ sub GenerateConstructorHelperMethods
 sub HasCustomConstructor
 {
     my $interface = shift;
-
-    return $interface->extendedAttributes->{"CustomConstructor"};
+    return $interface->extendedAttributes->{CustomConstructor};
 }
 
 sub HasCustomGetter
 {
-    my $attrExt = shift;
-    return $attrExt->{"Custom"} || $attrExt->{"CustomGetter"} ;
+    my $extendedAttributes = shift;
+    return $extendedAttributes->{Custom} || $extendedAttributes->{CustomGetter} ;
 }
 
 sub HasCustomSetter
 {
-    my $attrExt = shift;
-    return $attrExt->{"Custom"} || $attrExt->{"CustomSetter"};
+    my $extendedAttributes = shift;
+    return $extendedAttributes->{Custom} || $extendedAttributes->{CustomSetter};
 }
 
 sub HasCustomMethod
 {
-    my $attrExt = shift;
-    return $attrExt->{"Custom"};
+    my $extendedAttributes = shift;
+    return $extendedAttributes->{Custom};
 }
 
 sub NeedsConstructorProperty
 {
     my $interface = shift;
-
-    return !$interface->extendedAttributes->{"NoInterfaceObject"} || $interface->extendedAttributes->{"CustomConstructor"};
+    return !$interface->extendedAttributes->{NoInterfaceObject} || $interface->extendedAttributes->{CustomConstructor};
 }
 
 sub IsReturningPromise
 {
     my $function = shift;
-
-    return $function->signature->type eq "Promise" if ($function->signature->type);
+    return $function->signature->type && $function->signature->type eq "Promise";
 }
 
 sub IsConstructable
 {
     my $interface = shift;
-
-    return HasCustomConstructor($interface) || $interface->extendedAttributes->{"Constructor"} || $interface->extendedAttributes->{"NamedConstructor"} || $interface->extendedAttributes->{"ConstructorTemplate"} || $interface->extendedAttributes->{"JSBuiltinConstructor"};
+    return HasCustomConstructor($interface)
+        || $interface->extendedAttributes->{Constructor}
+        || $interface->extendedAttributes->{NamedConstructor}
+        || $interface->extendedAttributes->{ConstructorTemplate}
+        || $interface->extendedAttributes->{JSBuiltinConstructor};
 }
 
 sub HeaderNeedsPrototypeDeclaration
 {
     my $interface = shift;
-
-    return IsDOMGlobalObject($interface) || $interface->extendedAttributes->{"JSCustomNamedGetterOnPrototype"} || $interface->extendedAttributes->{"JSCustomDefineOwnPropertyOnPrototype"};
+    return IsDOMGlobalObject($interface) || $interface->extendedAttributes->{JSCustomNamedGetterOnPrototype} || $interface->extendedAttributes->{JSCustomDefineOwnPropertyOnPrototype};
 }
 
 sub IsUnforgeable
 {
     my $interface = shift;
     my $property = shift;
-
-    return $property->signature->extendedAttributes->{"Unforgeable"} || $interface->extendedAttributes->{"Unforgeable"};
+    return $property->signature->extendedAttributes->{Unforgeable} || $interface->extendedAttributes->{Unforgeable};
 }
 
 sub ComputeFunctionSpecial
@@ -5689,7 +5574,7 @@ sub ComputeFunctionSpecial
 
     my @specials = ();
     push(@specials, ("DontDelete", "ReadOnly")) if IsUnforgeable($interface, $function);
-    push(@specials, "DontEnum") if $function->signature->extendedAttributes->{"NotEnumerable"};
+    push(@specials, "DontEnum") if $function->signature->extendedAttributes->{NotEnumerable};
     if (IsJSBuiltin($interface, $function)) {
         push(@specials, "JSC::Builtin");
     }
@@ -5703,12 +5588,12 @@ sub IsJSBuiltin
 {
     my ($interface, $object) = @_;
 
-    return 0 if $object->signature->extendedAttributes->{"Custom"};
-    return 0 if $object->signature->extendedAttributes->{"CustomGetter"};
-    return 0 if $object->signature->extendedAttributes->{"CustomSetter"};
+    return 0 if $object->signature->extendedAttributes->{Custom};
+    return 0 if $object->signature->extendedAttributes->{CustomGetter};
+    return 0 if $object->signature->extendedAttributes->{CustomSetter};
 
-    return 1 if $object->signature->extendedAttributes->{"JSBuiltin"};
-    return 1 if $interface->extendedAttributes->{"JSBuiltin"};
+    return 1 if $object->signature->extendedAttributes->{JSBuiltin};
+    return 1 if $interface->extendedAttributes->{JSBuiltin};
 
     return 0;
 }
@@ -5717,16 +5602,16 @@ sub IsJSBuiltinConstructor
 {
     my ($interface) = @_;
 
-    return 0 if $interface->extendedAttributes->{"CustomConstructor"};
-    return 1 if $interface->extendedAttributes->{"JSBuiltin"};
-    return 1 if $interface->extendedAttributes->{"JSBuiltinConstructor"};
+    return 0 if $interface->extendedAttributes->{CustomConstructor};
+    return 1 if $interface->extendedAttributes->{JSBuiltin};
+    return 1 if $interface->extendedAttributes->{JSBuiltinConstructor};
     return 0;
 }
 
 sub GetJSBuiltinFunctionName
 {
     my ($className, $function) = @_;
-    my $scopeName = $function->signature->extendedAttributes->{"ImplementedBy"};
+    my $scopeName = $function->signature->extendedAttributes->{ImplementedBy};
     $scopeName = substr $className, 2 unless $scopeName;
     return GetJSBuiltinFunctionNameFromString($scopeName, $function->signature->name);
 }
@@ -5739,28 +5624,25 @@ sub GetJSBuiltinFunctionNameFromString
 
 sub GetJSBuiltinScopeName
 {
-    my $interface = shift;
-    my $object = shift;
-
-    return $object->signature->extendedAttributes->{"ImplementedBy"} if $object->signature->extendedAttributes->{"ImplementedBy"};
-    return $interface->name;
+    my ($interface, $object) = @_;
+    return $object->signature->extendedAttributes->{ImplementedBy} || $interface->name;
 }
 
 sub AddJSBuiltinIncludesIfNeeded()
 {
     my $interface = shift;
 
-    if ($interface->extendedAttributes->{"JSBuiltin"} || $interface->extendedAttributes->{"JSBuiltinConstructor"}) {
+    if ($interface->extendedAttributes->{JSBuiltin} || $interface->extendedAttributes->{JSBuiltinConstructor}) {
         AddToImplIncludes($interface->name . "Builtins.h");
         return;
     }
 
     foreach my $function (@{$interface->functions}) {
-        AddToImplIncludes(GetJSBuiltinScopeName($interface, $function) . "Builtins.h", $function->signature->extendedAttributes->{"Conditional"}) if IsJSBuiltin($interface, $function);
+        AddToImplIncludes(GetJSBuiltinScopeName($interface, $function) . "Builtins.h", $function->signature->extendedAttributes->{Conditional}) if IsJSBuiltin($interface, $function);
     }
 
     foreach my $attribute (@{$interface->attributes}) {
-        AddToImplIncludes(GetJSBuiltinScopeName($interface, $attribute) . "Builtins.h", $attribute->signature->extendedAttributes->{"Conditional"}) if IsJSBuiltin($interface, $attribute);
+        AddToImplIncludes(GetJSBuiltinScopeName($interface, $attribute) . "Builtins.h", $attribute->signature->extendedAttributes->{Conditional}) if IsJSBuiltin($interface, $attribute);
     }
 }
 
index d2885a8..3c24a54 100644 (file)
@@ -33,7 +33,7 @@ Conditional=*
 Constructor
 ConstructorCallWith=Document|ScriptExecutionContext|ScriptState
 ConstructorConditional=*
-ConstructorRaisesException
+ConstructorMayThrowLegacyException
 ConstructorTemplate=Event|TypedArray
 Custom
 CustomCall
@@ -68,8 +68,8 @@ ExportToWrappedFunction
 Exposed=*
 ForwardDeclareInHeader
 GenerateIsReachable=|Impl|ImplWebGLRenderingContext|ImplDocument|ImplElementRoot|ImplFrame|ImplOwnerNodeRoot|ImplScriptExecutionContext
-GetterRaisesException
-GetterRaisesExceptionWithMessage
+GetterMayThrowLegacyException
+GetterMayThrowLegacyExceptionWithMessage
 Immutable
 ImplementedAs=*
 ImplementationLacksVTable
@@ -95,6 +95,8 @@ JSGenerateToNativeObject
 JSLegacyParent=*
 LenientThis
 MasqueradesAsUndefined
+MayThrowLegacyException
+MayThrowLegacyExceptionWithMessage
 NamedConstructor=*
 NewImpurePropertyFiresWatchpoints
 NewObject
@@ -106,16 +108,14 @@ PassContext
 PrivateIdentifier
 PublicIdentifier
 PutForwards=*
-RaisesException
-RaisesExceptionWithMessage
 Reflect=*
 Replaceable
 ReportExtraMemoryCost
 ReportExternalMemoryCost
 RequiresExistingAtomicString
-SetterRaisesException
-SetterRaisesExceptionWithMessage
 SetterCallWith=ScriptExecutionContext|ScriptState|ScriptArguments|CallStack|ActiveWindow|FirstWindow
+SetterMayThrowLegacyException
+SetterMayThrowLegacyExceptionWithMessage
 SkipVTableValidation
 SuppressToJSObject
 TreatNullAs=EmptyString
index 5e0fb17..deaae63 100644 (file)
@@ -37,7 +37,7 @@ bool setJSInterfaceNameConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::En
 
 class JSInterfaceNamePrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSInterfaceNamePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSInterfaceNamePrototype* ptr = new (NotNull, JSC::allocateCell<JSInterfaceNamePrototype>(vm.heap)) JSInterfaceNamePrototype(vm, globalObject, structure);
@@ -60,7 +60,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSInterfaceName> JSInterfaceNameConstructor;
+using JSInterfaceNameConstructor = JSDOMConstructorNotConstructable<JSInterfaceName>;
 
 template<> JSValue JSInterfaceNameConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index cbdcb0b..b672951 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSInterfaceName : public JSDOMWrapper<InterfaceName> {
 public:
-    typedef JSDOMWrapper<InterfaceName> Base;
+    using Base = JSDOMWrapper<InterfaceName>;
     static JSInterfaceName* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<InterfaceName>&& impl)
     {
         JSInterfaceName* ptr = new (NotNull, JSC::allocateCell<JSInterfaceName>(globalObject->vm().heap)) JSInterfaceName(structure, *globalObject, WTFMove(impl));
index f18230c..ae7c1dd 100644 (file)
@@ -46,7 +46,7 @@ bool setJSTestActiveDOMObjectConstructor(JSC::ExecState*, JSC::EncodedJSValue, J
 
 class JSTestActiveDOMObjectPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestActiveDOMObjectPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestActiveDOMObjectPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestActiveDOMObjectPrototype>(vm.heap)) JSTestActiveDOMObjectPrototype(vm, globalObject, structure);
@@ -69,7 +69,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestActiveDOMObject> JSTestActiveDOMObjectConstructor;
+using JSTestActiveDOMObjectConstructor = JSDOMConstructorNotConstructable<JSTestActiveDOMObject>;
 
 /* Hash table */
 
index 95ede7b..40d5a27 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestActiveDOMObject : public JSDOMWrapper<TestActiveDOMObject> {
 public:
-    typedef JSDOMWrapper<TestActiveDOMObject> Base;
+    using Base = JSDOMWrapper<TestActiveDOMObject>;
     static JSTestActiveDOMObject* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestActiveDOMObject>&& impl)
     {
         JSTestActiveDOMObject* ptr = new (NotNull, JSC::allocateCell<JSTestActiveDOMObject>(globalObject->vm().heap)) JSTestActiveDOMObject(structure, *globalObject, WTFMove(impl));
index 6582e62..341e3a0 100644 (file)
@@ -59,7 +59,7 @@ JSTestCallback::~JSTestCallback()
 #endif
 }
 
-typedef JSDOMConstructorNotConstructable<JSTestCallback> JSTestCallbackConstructor;
+using JSTestCallbackConstructor = JSDOMConstructorNotConstructable<JSTestCallback>;
 
 /* Hash table for constructor */
 
index 427eb1c..07adddb 100644 (file)
@@ -38,7 +38,7 @@ bool setJSTestClassWithJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::Enc
 
 class JSTestClassWithJSBuiltinConstructorPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestClassWithJSBuiltinConstructorPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestClassWithJSBuiltinConstructorPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestClassWithJSBuiltinConstructorPrototype>(vm.heap)) JSTestClassWithJSBuiltinConstructorPrototype(vm, globalObject, structure);
@@ -61,7 +61,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSBuiltinConstructor<JSTestClassWithJSBuiltinConstructor> JSTestClassWithJSBuiltinConstructorConstructor;
+using JSTestClassWithJSBuiltinConstructorConstructor = JSBuiltinConstructor<JSTestClassWithJSBuiltinConstructor>;
 
 template<> JSValue JSTestClassWithJSBuiltinConstructorConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index aa70916..9c825ab 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestClassWithJSBuiltinConstructor : public JSDOMWrapper<TestClassWithJSBuiltinConstructor> {
 public:
-    typedef JSDOMWrapper<TestClassWithJSBuiltinConstructor> Base;
+    using Base = JSDOMWrapper<TestClassWithJSBuiltinConstructor>;
     static JSTestClassWithJSBuiltinConstructor* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestClassWithJSBuiltinConstructor>&& impl)
     {
         JSTestClassWithJSBuiltinConstructor* ptr = new (NotNull, JSC::allocateCell<JSTestClassWithJSBuiltinConstructor>(globalObject->vm().heap)) JSTestClassWithJSBuiltinConstructor(structure, *globalObject, WTFMove(impl));
index 5bc3d05..a359c54 100644 (file)
@@ -37,7 +37,7 @@ bool setJSTestCustomConstructorWithNoInterfaceObjectConstructor(JSC::ExecState*,
 
 class JSTestCustomConstructorWithNoInterfaceObjectPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestCustomConstructorWithNoInterfaceObjectPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestCustomConstructorWithNoInterfaceObjectPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestCustomConstructorWithNoInterfaceObjectPrototype>(vm.heap)) JSTestCustomConstructorWithNoInterfaceObjectPrototype(vm, globalObject, structure);
@@ -60,7 +60,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructor<JSTestCustomConstructorWithNoInterfaceObject> JSTestCustomConstructorWithNoInterfaceObjectConstructor;
+using JSTestCustomConstructorWithNoInterfaceObjectConstructor = JSDOMConstructor<JSTestCustomConstructorWithNoInterfaceObject>;
 
 template<> JSC::EncodedJSValue JSC_HOST_CALL JSTestCustomConstructorWithNoInterfaceObjectConstructor::construct(JSC::ExecState* exec)
 {
index d075995..17b9ca8 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestCustomConstructorWithNoInterfaceObject : public JSDOMWrapper<TestCustomConstructorWithNoInterfaceObject> {
 public:
-    typedef JSDOMWrapper<TestCustomConstructorWithNoInterfaceObject> Base;
+    using Base = JSDOMWrapper<TestCustomConstructorWithNoInterfaceObject>;
     static JSTestCustomConstructorWithNoInterfaceObject* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestCustomConstructorWithNoInterfaceObject>&& impl)
     {
         JSTestCustomConstructorWithNoInterfaceObject* ptr = new (NotNull, JSC::allocateCell<JSTestCustomConstructorWithNoInterfaceObject>(globalObject->vm().heap)) JSTestCustomConstructorWithNoInterfaceObject(structure, *globalObject, WTFMove(impl));
index f2c00f4..e786445 100644 (file)
@@ -44,7 +44,7 @@ bool setJSTestCustomNamedGetterConstructor(JSC::ExecState*, JSC::EncodedJSValue,
 
 class JSTestCustomNamedGetterPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestCustomNamedGetterPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestCustomNamedGetterPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestCustomNamedGetterPrototype>(vm.heap)) JSTestCustomNamedGetterPrototype(vm, globalObject, structure);
@@ -67,7 +67,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestCustomNamedGetter> JSTestCustomNamedGetterConstructor;
+using JSTestCustomNamedGetterConstructor = JSDOMConstructorNotConstructable<JSTestCustomNamedGetter>;
 
 template<> JSValue JSTestCustomNamedGetterConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index f6435b2..9a2d64d 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestCustomNamedGetter : public JSDOMWrapper<TestCustomNamedGetter> {
 public:
-    typedef JSDOMWrapper<TestCustomNamedGetter> Base;
+    using Base = JSDOMWrapper<TestCustomNamedGetter>;
     static JSTestCustomNamedGetter* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestCustomNamedGetter>&& impl)
     {
         JSTestCustomNamedGetter* ptr = new (NotNull, JSC::allocateCell<JSTestCustomNamedGetter>(globalObject->vm().heap)) JSTestCustomNamedGetter(structure, *globalObject, WTFMove(impl));
index 989dea3..88f835d 100644 (file)
@@ -46,7 +46,7 @@ bool setJSTestEventConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue,
 
 class JSTestEventConstructorPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestEventConstructorPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestEventConstructorPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestEventConstructorPrototype>(vm.heap)) JSTestEventConstructorPrototype(vm, globalObject, structure);
@@ -69,7 +69,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructor<JSTestEventConstructor> JSTestEventConstructorConstructor;
+using JSTestEventConstructorConstructor = JSDOMConstructor<JSTestEventConstructor>;
 
 template<> EncodedJSValue JSC_HOST_CALL JSTestEventConstructorConstructor::construct(ExecState* state)
 {
index 4297e36..d7abe71 100644 (file)
@@ -30,7 +30,7 @@ class JSDictionary;
 
 class JSTestEventConstructor : public JSDOMWrapper<TestEventConstructor> {
 public:
-    typedef JSDOMWrapper<TestEventConstructor> Base;
+    using Base = JSDOMWrapper<TestEventConstructor>;
     static JSTestEventConstructor* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestEventConstructor>&& impl)
     {
         JSTestEventConstructor* ptr = new (NotNull, JSC::allocateCell<JSTestEventConstructor>(globalObject->vm().heap)) JSTestEventConstructor(structure, *globalObject, WTFMove(impl));
index 8f3d877..2e54d7a 100644 (file)
@@ -47,7 +47,7 @@ bool setJSTestEventTargetConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::
 
 class JSTestEventTargetPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestEventTargetPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestEventTargetPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestEventTargetPrototype>(vm.heap)) JSTestEventTargetPrototype(vm, globalObject, structure);
@@ -70,7 +70,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestEventTarget> JSTestEventTargetConstructor;
+using JSTestEventTargetConstructor = JSDOMConstructorNotConstructable<JSTestEventTarget>;
 
 template<> JSValue JSTestEventTargetConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index 134ca73..2231b4b 100644 (file)
@@ -27,8 +27,8 @@ namespace WebCore {
 
 class JSTestEventTarget : public JSEventTarget {
 public:
-    typedef JSEventTarget Base;
-    typedef TestEventTarget DOMWrapped;
+    using Base = JSEventTarget;
+    using DOMWrapped = TestEventTarget;
     static JSTestEventTarget* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestEventTarget>&& impl)
     {
         globalObject->masqueradesAsUndefinedWatchpoint()->fireAll(globalObject->vm(), "Allocated masquerading object");
index 02a81d2..150f2cb 100644 (file)
@@ -40,7 +40,7 @@ bool setJSTestExceptionConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::En
 
 class JSTestExceptionPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestExceptionPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestExceptionPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestExceptionPrototype>(vm.heap)) JSTestExceptionPrototype(vm, globalObject, structure);
@@ -63,7 +63,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestException> JSTestExceptionConstructor;
+using JSTestExceptionConstructor = JSDOMConstructorNotConstructable<JSTestException>;
 
 /* Hash table */
 
index 81ee1a8..372e5d4 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 
 class JSTestException : public JSDOMWrapper<TestException> {
 public:
-    typedef JSDOMWrapper<TestException> Base;
+    using Base = JSDOMWrapper<TestException>;
     static JSTestException* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestException>&& impl)
     {
         JSTestException* ptr = new (NotNull, JSC::allocateCell<JSTestException>(globalObject->vm().heap)) JSTestException(structure, *globalObject, WTFMove(impl));
index 6cd33b0..77f9d35 100644 (file)
@@ -37,7 +37,7 @@ bool setJSTestGenerateIsReachableConstructor(JSC::ExecState*, JSC::EncodedJSValu
 
 class JSTestGenerateIsReachablePrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestGenerateIsReachablePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestGenerateIsReachablePrototype* ptr = new (NotNull, JSC::allocateCell<JSTestGenerateIsReachablePrototype>(vm.heap)) JSTestGenerateIsReachablePrototype(vm, globalObject, structure);
@@ -60,7 +60,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestGenerateIsReachable> JSTestGenerateIsReachableConstructor;
+using JSTestGenerateIsReachableConstructor = JSDOMConstructorNotConstructable<JSTestGenerateIsReachable>;
 
 template<> JSValue JSTestGenerateIsReachableConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index d23786f..6c42c60 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestGenerateIsReachable : public JSDOMWrapper<TestGenerateIsReachable> {
 public:
-    typedef JSDOMWrapper<TestGenerateIsReachable> Base;
+    using Base = JSDOMWrapper<TestGenerateIsReachable>;
     static JSTestGenerateIsReachable* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestGenerateIsReachable>&& impl)
     {
         JSTestGenerateIsReachable* ptr = new (NotNull, JSC::allocateCell<JSTestGenerateIsReachable>(globalObject->vm().heap)) JSTestGenerateIsReachable(structure, *globalObject, WTFMove(impl));
index 4aef412..d1d3c18 100644 (file)
@@ -68,7 +68,7 @@ bool setJSTestGlobalObjectEnabledAtRuntimeAttribute(JSC::ExecState*, JSC::Encode
 JSC::EncodedJSValue jsTestGlobalObjectConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::PropertyName);
 bool setJSTestGlobalObjectConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJSValue);
 
-typedef JSDOMConstructorNotConstructable<JSTestGlobalObject> JSTestGlobalObjectConstructor;
+using JSTestGlobalObjectConstructor = JSDOMConstructorNotConstructable<JSTestGlobalObject>;
 
 /* Hash table */
 
index 54c3c14..27842e1 100644 (file)
@@ -30,7 +30,7 @@ class TestGlobalObject;
 
 class JSTestGlobalObject : public JSDOMWrapper<TestGlobalObject> {
 public:
-    typedef JSDOMWrapper<TestGlobalObject> Base;
+    using Base = JSDOMWrapper<TestGlobalObject>;
     static JSTestGlobalObject* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestGlobalObject>&& impl)
     {
         JSTestGlobalObject* ptr = new (NotNull, JSC::allocateCell<JSTestGlobalObject>(globalObject->vm().heap)) JSTestGlobalObject(structure, *globalObject, WTFMove(impl));
@@ -89,7 +89,7 @@ inline JSC::JSValue toJSNewlyCreated(JSC::ExecState* state, JSDOMGlobalObject* g
 
 class JSTestGlobalObjectPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestGlobalObjectPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestGlobalObjectPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestGlobalObjectPrototype>(vm.heap)) JSTestGlobalObjectPrototype(vm, globalObject, structure);
index e67ecf6..7acc37e 100644 (file)
@@ -126,7 +126,7 @@ bool setJSTestInterfaceConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::En
 
 class JSTestInterfacePrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestInterfacePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestInterfacePrototype* ptr = new (NotNull, JSC::allocateCell<JSTestInterfacePrototype>(vm.heap)) JSTestInterfacePrototype(vm, globalObject, structure);
@@ -149,7 +149,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructor<JSTestInterface> JSTestInterfaceConstructor;
+using JSTestInterfaceConstructor = JSDOMConstructor<JSTestInterface>;
 
 /* Hash table for constructor */
 
index 2433570..bd63a94 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class WEBCORE_EXPORT JSTestInterface : public JSDOMWrapper<TestInterface> {
 public:
-    typedef JSDOMWrapper<TestInterface> Base;
+    using Base = JSDOMWrapper<TestInterface>;
     static JSTestInterface* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestInterface>&& impl)
     {
         JSTestInterface* ptr = new (NotNull, JSC::allocateCell<JSTestInterface>(globalObject->vm().heap)) JSTestInterface(structure, *globalObject, WTFMove(impl));
index 71f05e7..d37dab5 100644 (file)
@@ -46,7 +46,7 @@ bool setJSTestIterableConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::Enc
 
 class JSTestIterablePrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestIterablePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestIterablePrototype* ptr = new (NotNull, JSC::allocateCell<JSTestIterablePrototype>(vm.heap)) JSTestIterablePrototype(vm, globalObject, structure);
@@ -69,7 +69,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestIterable> JSTestIterableConstructor;
+using JSTestIterableConstructor = JSDOMConstructorNotConstructable<JSTestIterable>;
 
 template<> JSValue JSTestIterableConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index b199fbd..87022d5 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestIterable : public JSDOMWrapper<TestIterable> {
 public:
-    typedef JSDOMWrapper<TestIterable> Base;
+    using Base = JSDOMWrapper<TestIterable>;
     static JSTestIterable* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestIterable>&& impl)
     {
         JSTestIterable* ptr = new (NotNull, JSC::allocateCell<JSTestIterable>(globalObject->vm().heap)) JSTestIterable(structure, *globalObject, WTFMove(impl));
index 08af895..8321786 100644 (file)
@@ -46,7 +46,7 @@ bool setJSTestJSBuiltinConstructorConstructor(JSC::ExecState*, JSC::EncodedJSVal
 
 class JSTestJSBuiltinConstructorPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestJSBuiltinConstructorPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestJSBuiltinConstructorPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestJSBuiltinConstructorPrototype>(vm.heap)) JSTestJSBuiltinConstructorPrototype(vm, globalObject, structure);
@@ -69,7 +69,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSBuiltinConstructor<JSTestJSBuiltinConstructor> JSTestJSBuiltinConstructorConstructor;
+using JSTestJSBuiltinConstructorConstructor = JSBuiltinConstructor<JSTestJSBuiltinConstructor>;
 
 template<> JSValue JSTestJSBuiltinConstructorConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index e39f01f..b8c5931 100644 (file)
@@ -26,7 +26,7 @@ namespace WebCore {
 
 class JSTestJSBuiltinConstructor : public JSDOMObject {
 public:
-    typedef JSDOMObject Base;
+    using Base = JSDOMObject;
     static JSTestJSBuiltinConstructor* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject)
     {
         JSTestJSBuiltinConstructor* ptr = new (NotNull, JSC::allocateCell<JSTestJSBuiltinConstructor>(globalObject->vm().heap)) JSTestJSBuiltinConstructor(structure, *globalObject);
index 77af153..6f65efa 100644 (file)
@@ -44,7 +44,7 @@ bool setJSTestMediaQueryListListenerConstructor(JSC::ExecState*, JSC::EncodedJSV
 
 class JSTestMediaQueryListListenerPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestMediaQueryListListenerPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestMediaQueryListListenerPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestMediaQueryListListenerPrototype>(vm.heap)) JSTestMediaQueryListListenerPrototype(vm, globalObject, structure);
@@ -67,7 +67,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestMediaQueryListListener> JSTestMediaQueryListListenerConstructor;
+using JSTestMediaQueryListListenerConstructor = JSDOMConstructorNotConstructable<JSTestMediaQueryListListener>;
 
 template<> JSValue JSTestMediaQueryListListenerConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index 31953d6..3f5f426 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestMediaQueryListListener : public JSDOMWrapper<TestMediaQueryListListener> {
 public:
-    typedef JSDOMWrapper<TestMediaQueryListListener> Base;
+    using Base = JSDOMWrapper<TestMediaQueryListListener>;
     static JSTestMediaQueryListListener* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestMediaQueryListListener>&& impl)
     {
         JSTestMediaQueryListListener* ptr = new (NotNull, JSC::allocateCell<JSTestMediaQueryListListener>(globalObject->vm().heap)) JSTestMediaQueryListListener(structure, *globalObject, WTFMove(impl));
index ed08b2f..787e8dc 100644 (file)
@@ -39,7 +39,7 @@ bool setJSTestNamedConstructorConstructor(JSC::ExecState*, JSC::EncodedJSValue,
 
 class JSTestNamedConstructorPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestNamedConstructorPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestNamedConstructorPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestNamedConstructorPrototype>(vm.heap)) JSTestNamedConstructorPrototype(vm, globalObject, structure);
@@ -62,8 +62,8 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestNamedConstructor> JSTestNamedConstructorConstructor;
-typedef JSDOMNamedConstructor<JSTestNamedConstructor> JSTestNamedConstructorNamedConstructor;
+using JSTestNamedConstructorConstructor = JSDOMConstructorNotConstructable<JSTestNamedConstructor>;
+using JSTestNamedConstructorNamedConstructor = JSDOMNamedConstructor<JSTestNamedConstructor>;
 
 template<> JSValue JSTestNamedConstructorConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index 54e5b01..802415d 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestNamedConstructor : public JSDOMWrapper<TestNamedConstructor> {
 public:
-    typedef JSDOMWrapper<TestNamedConstructor> Base;
+    using Base = JSDOMWrapper<TestNamedConstructor>;
     static JSTestNamedConstructor* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestNamedConstructor>&& impl)
     {
         JSTestNamedConstructor* ptr = new (NotNull, JSC::allocateCell<JSTestNamedConstructor>(globalObject->vm().heap)) JSTestNamedConstructor(structure, *globalObject, WTFMove(impl));
index 8c46c88..4e9a13c 100644 (file)
@@ -56,7 +56,7 @@ bool setJSTestNodeConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::Encoded
 
 class JSTestNodePrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestNodePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestNodePrototype* ptr = new (NotNull, JSC::allocateCell<JSTestNodePrototype>(vm.heap)) JSTestNodePrototype(vm, globalObject, structure);
@@ -79,7 +79,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructor<JSTestNode> JSTestNodeConstructor;
+using JSTestNodeConstructor = JSDOMConstructor<JSTestNode>;
 
 template<> EncodedJSValue JSC_HOST_CALL JSTestNodeConstructor::construct(ExecState* state)
 {
index 4a30ceb..3863dbf 100644 (file)
@@ -27,8 +27,8 @@ namespace WebCore {
 
 class WEBCORE_TESTSUPPORT_EXPORT JSTestNode : public JSNode {
 public:
-    typedef JSNode Base;
-    typedef TestNode DOMWrapped;
+    using Base = JSNode;
+    using DOMWrapped = TestNode;
     static JSTestNode* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestNode>&& impl)
     {
         JSTestNode* ptr = new (NotNull, JSC::allocateCell<JSTestNode>(globalObject->vm().heap)) JSTestNode(structure, *globalObject, WTFMove(impl));
index 76a56c5..b6e25be 100644 (file)
@@ -33,7 +33,6 @@
 #if ENABLE(WEB_REPLAY)
 #include "MemoizedDOMResult.h"
 #include <replay/InputCursor.h>
-#include <wtf/NeverDestroyed.h>
 #endif
 
 using namespace JSC;
@@ -60,7 +59,7 @@ bool setJSTestNondeterministicConstructor(JSC::ExecState*, JSC::EncodedJSValue,
 
 class JSTestNondeterministicPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestNondeterministicPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestNondeterministicPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestNondeterministicPrototype>(vm.heap)) JSTestNondeterministicPrototype(vm, globalObject, structure);
@@ -83,7 +82,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestNondeterministic> JSTestNondeterministicConstructor;
+using JSTestNondeterministicConstructor = JSDOMConstructorNotConstructable<JSTestNondeterministic>;
 
 template<> JSValue JSTestNondeterministicConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index 3b90c68..f96cb76 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestNondeterministic : public JSDOMWrapper<TestNondeterministic> {
 public:
-    typedef JSDOMWrapper<TestNondeterministic> Base;
+    using Base = JSDOMWrapper<TestNondeterministic>;
     static JSTestNondeterministic* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestNondeterministic>&& impl)
     {
         JSTestNondeterministic* ptr = new (NotNull, JSC::allocateCell<JSTestNondeterministic>(globalObject->vm().heap)) JSTestNondeterministic(structure, *globalObject, WTFMove(impl));
index 276b52e..35ccd34 100644 (file)
@@ -60,7 +60,6 @@
 #include "SVGStaticPropertyTearOff.h"
 #include "SerializedScriptValue.h"
 #include "Settings.h"
-#include "TestObj.h"
 #include "URL.h"
 #include "WebCoreJSClientData.h"
 #include <inspector/ScriptArguments.h>
@@ -970,7 +969,7 @@ bool setJSTestObjConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::EncodedJ
 
 class JSTestObjPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestObjPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestObjPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestObjPrototype>(vm.heap)) JSTestObjPrototype(vm, globalObject, structure);
@@ -993,7 +992,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructor<JSTestObj> JSTestObjConstructor;
+using JSTestObjConstructor = JSDOMConstructor<JSTestObj>;
 
 /* Hash table */
 
index a4ae2e0..91d7ea9 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestObj : public JSDOMWrapper<TestObj> {
 public:
-    typedef JSDOMWrapper<TestObj> Base;
+    using Base = JSDOMWrapper<TestObj>;
     static JSTestObj* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestObj>&& impl)
     {
         JSTestObj* ptr = new (NotNull, JSC::allocateCell<JSTestObj>(globalObject->vm().heap)) JSTestObj(structure, *globalObject, WTFMove(impl));
index 08c6da4..6bc71b2 100644 (file)
@@ -40,7 +40,7 @@ bool setJSTestOverloadedConstructorsConstructor(JSC::ExecState*, JSC::EncodedJSV
 
 class JSTestOverloadedConstructorsPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestOverloadedConstructorsPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestOverloadedConstructorsPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestOverloadedConstructorsPrototype>(vm.heap)) JSTestOverloadedConstructorsPrototype(vm, globalObject, structure);
@@ -63,7 +63,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructor<JSTestOverloadedConstructors> JSTestOverloadedConstructorsConstructor;
+using JSTestOverloadedConstructorsConstructor = JSDOMConstructor<JSTestOverloadedConstructors>;
 
 static inline EncodedJSValue constructJSTestOverloadedConstructors1(ExecState* state)
 {
index 8bb3b05..065de5f 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestOverloadedConstructors : public JSDOMWrapper<TestOverloadedConstructors> {
 public:
-    typedef JSDOMWrapper<TestOverloadedConstructors> Base;
+    using Base = JSDOMWrapper<TestOverloadedConstructors>;
     static JSTestOverloadedConstructors* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestOverloadedConstructors>&& impl)
     {
         JSTestOverloadedConstructors* ptr = new (NotNull, JSC::allocateCell<JSTestOverloadedConstructors>(globalObject->vm().heap)) JSTestOverloadedConstructors(structure, *globalObject, WTFMove(impl));
index 57c3014..63977c9 100644 (file)
@@ -39,7 +39,7 @@ bool setJSTestOverloadedConstructorsWithSequenceConstructor(JSC::ExecState*, JSC
 
 class JSTestOverloadedConstructorsWithSequencePrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestOverloadedConstructorsWithSequencePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestOverloadedConstructorsWithSequencePrototype* ptr = new (NotNull, JSC::allocateCell<JSTestOverloadedConstructorsWithSequencePrototype>(vm.heap)) JSTestOverloadedConstructorsWithSequencePrototype(vm, globalObject, structure);
@@ -62,7 +62,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructor<JSTestOverloadedConstructorsWithSequence> JSTestOverloadedConstructorsWithSequenceConstructor;
+using JSTestOverloadedConstructorsWithSequenceConstructor = JSDOMConstructor<JSTestOverloadedConstructorsWithSequence>;
 
 static inline EncodedJSValue constructJSTestOverloadedConstructorsWithSequence1(ExecState* state)
 {
index ca88cbd..a4ce64b 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestOverloadedConstructorsWithSequence : public JSDOMWrapper<TestOverloadedConstructorsWithSequence> {
 public:
-    typedef JSDOMWrapper<TestOverloadedConstructorsWithSequence> Base;
+    using Base = JSDOMWrapper<TestOverloadedConstructorsWithSequence>;
     static JSTestOverloadedConstructorsWithSequence* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestOverloadedConstructorsWithSequence>&& impl)
     {
         JSTestOverloadedConstructorsWithSequence* ptr = new (NotNull, JSC::allocateCell<JSTestOverloadedConstructorsWithSequence>(globalObject->vm().heap)) JSTestOverloadedConstructorsWithSequence(structure, *globalObject, WTFMove(impl));
index 5f6eb00..93124b2 100644 (file)
@@ -46,7 +46,7 @@ bool setJSTestOverrideBuiltinsConstructor(JSC::ExecState*, JSC::EncodedJSValue,
 
 class JSTestOverrideBuiltinsPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestOverrideBuiltinsPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestOverrideBuiltinsPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestOverrideBuiltinsPrototype>(vm.heap)) JSTestOverrideBuiltinsPrototype(vm, globalObject, structure);
@@ -69,7 +69,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestOverrideBuiltins> JSTestOverrideBuiltinsConstructor;
+using JSTestOverrideBuiltinsConstructor = JSDOMConstructorNotConstructable<JSTestOverrideBuiltins>;
 
 template<> JSValue JSTestOverrideBuiltinsConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index 88684bc..fbc23b5 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestOverrideBuiltins : public JSDOMWrapper<TestOverrideBuiltins> {
 public:
-    typedef JSDOMWrapper<TestOverrideBuiltins> Base;
+    using Base = JSDOMWrapper<TestOverrideBuiltins>;
     static JSTestOverrideBuiltins* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestOverrideBuiltins>&& impl)
     {
         JSTestOverrideBuiltins* ptr = new (NotNull, JSC::allocateCell<JSTestOverrideBuiltins>(globalObject->vm().heap)) JSTestOverrideBuiltins(structure, *globalObject, WTFMove(impl));
index ce60eb4..15bf3dc 100644 (file)
@@ -49,7 +49,7 @@ bool setJSTestSerializedScriptValueInterfaceConstructor(JSC::ExecState*, JSC::En
 
 class JSTestSerializedScriptValueInterfacePrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestSerializedScriptValueInterfacePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestSerializedScriptValueInterfacePrototype* ptr = new (NotNull, JSC::allocateCell<JSTestSerializedScriptValueInterfacePrototype>(vm.heap)) JSTestSerializedScriptValueInterfacePrototype(vm, globalObject, structure);
@@ -72,7 +72,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSTestSerializedScriptValueInterface> JSTestSerializedScriptValueInterfaceConstructor;
+using JSTestSerializedScriptValueInterfaceConstructor = JSDOMConstructorNotConstructable<JSTestSerializedScriptValueInterface>;
 
 template<> JSValue JSTestSerializedScriptValueInterfaceConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index 22dc818..49e5b46 100644 (file)
@@ -30,7 +30,7 @@ namespace WebCore {
 
 class JSTestSerializedScriptValueInterface : public JSDOMWrapper<TestSerializedScriptValueInterface> {
 public:
-    typedef JSDOMWrapper<TestSerializedScriptValueInterface> Base;
+    using Base = JSDOMWrapper<TestSerializedScriptValueInterface>;
     static JSTestSerializedScriptValueInterface* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestSerializedScriptValueInterface>&& impl)
     {
         JSTestSerializedScriptValueInterface* ptr = new (NotNull, JSC::allocateCell<JSTestSerializedScriptValueInterface>(globalObject->vm().heap)) JSTestSerializedScriptValueInterface(structure, *globalObject, WTFMove(impl));
index 569a071..9b1a972 100644 (file)
@@ -76,7 +76,7 @@ bool setJSTestTypedefsConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::Enc
 
 class JSTestTypedefsPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSTestTypedefsPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSTestTypedefsPrototype* ptr = new (NotNull, JSC::allocateCell<JSTestTypedefsPrototype>(vm.heap)) JSTestTypedefsPrototype(vm, globalObject, structure);
@@ -99,7 +99,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructor<JSTestTypedefs> JSTestTypedefsConstructor;
+using JSTestTypedefsConstructor = JSDOMConstructor<JSTestTypedefs>;
 
 /* Hash table */
 
index 97a1f65..b1d36bf 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSTestTypedefs : public JSDOMWrapper<TestTypedefs> {
 public:
-    typedef JSDOMWrapper<TestTypedefs> Base;
+    using Base = JSDOMWrapper<TestTypedefs>;
     static JSTestTypedefs* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<TestTypedefs>&& impl)
     {
         JSTestTypedefs* ptr = new (NotNull, JSC::allocateCell<JSTestTypedefs>(globalObject->vm().heap)) JSTestTypedefs(structure, *globalObject, WTFMove(impl));
index 77fb5f6..8c835ae 100644 (file)
@@ -40,7 +40,7 @@ bool setJSattributeConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::Encode
 
 class JSattributePrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSattributePrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSattributePrototype* ptr = new (NotNull, JSC::allocateCell<JSattributePrototype>(vm.heap)) JSattributePrototype(vm, globalObject, structure);
@@ -63,7 +63,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSattribute> JSattributeConstructor;
+using JSattributeConstructor = JSDOMConstructorNotConstructable<JSattribute>;
 
 /* Hash table */
 
index ba93c34..c9c8cd8 100644 (file)
@@ -29,7 +29,7 @@ namespace WebCore {
 
 class JSattribute : public JSDOMWrapper<attribute> {
 public:
-    typedef JSDOMWrapper<attribute> Base;
+    using Base = JSDOMWrapper<attribute>;
     static JSattribute* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<attribute>&& impl)
     {
         JSattribute* ptr = new (NotNull, JSC::allocateCell<JSattribute>(globalObject->vm().heap)) JSattribute(structure, *globalObject, WTFMove(impl));
index 4f17d81..7b0f726 100644 (file)
@@ -37,7 +37,7 @@ bool setJSreadonlyConstructor(JSC::ExecState*, JSC::EncodedJSValue, JSC::Encoded
 
 class JSreadonlyPrototype : public JSC::JSNonFinalObject {
 public:
-    typedef JSC::JSNonFinalObject Base;
+    using Base = JSC::JSNonFinalObject;
     static JSreadonlyPrototype* create(JSC::VM& vm, JSC::JSGlobalObject* globalObject, JSC::Structure* structure)
     {
         JSreadonlyPrototype* ptr = new (NotNull, JSC::allocateCell<JSreadonlyPrototype>(vm.heap)) JSreadonlyPrototype(vm, globalObject, structure);
@@ -60,7 +60,7 @@ private:
     void finishCreation(JSC::VM&);
 };
 
-typedef JSDOMConstructorNotConstructable<JSreadonly> JSreadonlyConstructor;
+using JSreadonlyConstructor = JSDOMConstructorNotConstructable<JSreadonly>;
 
 template<> JSValue JSreadonlyConstructor::prototypeForStructure(JSC::VM& vm, const JSDOMGlobalObject& globalObject)
 {
index 29f8bae..80f3095 100644 (file)
@@ -28,7 +28,7 @@ namespace WebCore {
 
 class JSreadonly : public JSDOMWrapper<readonly> {
 public:
-    typedef JSDOMWrapper<readonly> Base;
+    using Base = JSDOMWrapper<readonly>;
     static JSreadonly* create(JSC::Structure* structure, JSDOMGlobalObject* globalObject, Ref<readonly>&& impl)
     {
         JSreadonly* ptr = new (NotNull, JSC::allocateCell<JSreadonly>(globalObject->vm().heap)) JSreadonly(structure, *globalObject, WTFMove(impl));
index 2665e89..ad8705a 100644 (file)
@@ -41,7 +41,7 @@
     attribute Node implementsNode;
 
     void implementsMethod1();
-    [CallWith=ScriptExecutionContext, RaisesException] TestObj implementsMethod2(DOMString strArg, TestObj objArg);
+    [CallWith=ScriptExecutionContext, MayThrowLegacyException] TestObj implementsMethod2(DOMString strArg, TestObj objArg);
     [Custom] void implementsMethod3();
     static void implementsMethod4();
 
index 001507d..1ea3dc9 100644 (file)
@@ -34,7 +34,7 @@
     Conditional=Condition1|Condition2,
     ConstructorCallWith=ScriptExecutionContext,
     Constructor(DOMString str1, optional DOMString str2 = "defaultString"),
-    ConstructorRaisesException,
+    ConstructorMayThrowLegacyException,
     ConstructorConditional=TEST_INTERFACE,
     ExportMacro=WEBCORE_EXPORT,
     ImplementationLacksVTable
index d20215d..dd54c82 100644 (file)
@@ -31,6 +31,6 @@
 [
     ActiveDOMObject,
     NamedConstructor=Audio(DOMString str1, optional DOMString str2 = "defaultString", optional DOMString str3),
-    ConstructorRaisesException
+    ConstructorMayThrowLegacyException
 ] interface TestNamedConstructor {
 };
index d6e47fd..54b5365 100644 (file)
@@ -32,9 +32,9 @@
 interface TestNondeterministic {
     [Nondeterministic] readonly attribute long nondeterministicReadonlyAttr;
     [Nondeterministic] attribute DOMString nondeterministicWriteableAttr;
-    [Nondeterministic, RaisesException] attribute DOMString nondeterministicExceptionAttr;
-    [Nondeterministic, GetterRaisesException] attribute DOMString nondeterministicGetterExceptionAttr;
-    [Nondeterministic, SetterRaisesException] attribute DOMString nondeterministicSetterExceptionAttr;
+    [Nondeterministic, MayThrowLegacyException] attribute DOMString nondeterministicExceptionAttr;
+    [Nondeterministic, GetterMayThrowLegacyException] attribute DOMString nondeterministicGetterExceptionAttr;
+    [Nondeterministic, SetterMayThrowLegacyException] attribute DOMString nondeterministicSetterExceptionAttr;
 
     [Nondeterministic] boolean nondeterministicZeroArgFunction();
 };
index 0f59a8e..cf4bb88 100644 (file)
@@ -137,7 +137,7 @@ enum TestConfidence { "high", "kinda-low" };
     void methodWithEnumArg(TestEnumType enumArg);
     void methodWithOptionalEnumArg(optional TestEnumType enumArg);
     void methodWithOptionalEnumArgAndDefaultValue(optional TestEnumType enumArg = "EnumValue1");
-    [RaisesException] TestObj methodThatRequiresAllArgsAndThrows(DOMString strArg, TestObj objArg);
+    [MayThrowLegacyException] TestObj methodThatRequiresAllArgsAndThrows(DOMString strArg, TestObj objArg);
 
 #if defined(TESTING_JS)
     void methodWithUSVStringArg(USVString str);
@@ -149,14 +149,14 @@ enum TestConfidence { "high", "kinda-low" };
     void optionsObject(Dictionary oo, optional Dictionary ooo);
 
     // Exceptions
-    [RaisesException] void methodWithException();
-    [RaisesExceptionWithMessage] void methodWithExceptionWithMessage();
-    [GetterRaisesException] attribute long attrWithGetterException;
-    [GetterRaisesExceptionWithMessage] attribute long attrWithGetterExceptionWithMessage;
-    [SetterRaisesException] attribute long attrWithSetterException;
-    [SetterRaisesExceptionWithMessage] attribute long attrWithSetterExceptionWithMessage;
-    [GetterRaisesException] attribute DOMString stringAttrWithGetterException;
-    [SetterRaisesException] attribute DOMString stringAttrWithSetterException;
+    [MayThrowLegacyException] void methodWithException();
+    [MayThrowLegacyExceptionWithMessage] void methodWithExceptionWithMessage();
+    [GetterMayThrowLegacyException] attribute long attrWithGetterException;
+    [GetterMayThrowLegacyExceptionWithMessage] attribute long attrWithGetterExceptionWithMessage;
+    [SetterMayThrowLegacyException] attribute long attrWithSetterException;
+    [SetterMayThrowLegacyExceptionWithMessage] attribute long attrWithSetterExceptionWithMessage;
+    [GetterMayThrowLegacyException] attribute DOMString stringAttrWithGetterException;
+    [SetterMayThrowLegacyException] attribute DOMString stringAttrWithSetterException;
 
     // 'Custom' extended attribute
     [Custom] attribute long            customAttr;
@@ -181,11 +181,11 @@ enum TestConfidence { "high", "kinda-low" };
     // 'CallWith' extended attribute
     [CallWith=ScriptState] void withScriptStateVoid();
     [CallWith=ScriptState] TestObj withScriptStateObj();
-    [CallWith=ScriptState, RaisesException] void withScriptStateVoidException();
-    [CallWith=ScriptState, RaisesException] TestObj withScriptStateObjException();
+    [CallWith=ScriptState, MayThrowLegacyException] void withScriptStateVoidException();
+    [CallWith=ScriptState, MayThrowLegacyException] TestObj withScriptStateObjException();
     [CallWith=ScriptExecutionContext] void withScriptExecutionContext();
     [CallWith=ScriptExecutionContext&ScriptState] void withScriptExecutionContextAndScriptState();
-    [CallWith=ScriptExecutionContext&ScriptState, RaisesException] TestObj withScriptExecutionContextAndScriptStateObjException();
+    [CallWith=ScriptExecutionContext&ScriptState, MayThrowLegacyException] TestObj withScriptExecutionContextAndScriptStateObjException();
     [CallWith=  ScriptExecutionContext  &  ScriptState  ] TestObj withScriptExecutionContextAndScriptStateWithSpaces();
     [CallWith=ScriptArguments&CallStack] void withScriptArgumentsAndCallStack();
     [CallWith=Document] void withDocumentArgument();
@@ -195,10 +195,10 @@ enum TestConfidence { "high", "kinda-low" };
     [CallWith=ScriptState] attribute long withScriptStateAttribute;
     [CallWith=ScriptState, SetterCallWith=ActiveWindow&FirstWindow] attribute long withCallWithAndSetterCallWithAttribute;
     [CallWith=ScriptExecutionContext] attribute TestObj withScriptExecutionContextAttribute;
-    [CallWith=ScriptState, GetterRaisesException] attribute TestObj withScriptStateAttributeRaises;
-    [CallWith=ScriptExecutionContext, GetterRaisesException] attribute TestObj withScriptExecutionContextAttributeRaises;
+    [CallWith=ScriptState, GetterMayThrowLegacyException] attribute TestObj withScriptStateAttributeRaises;
+    [CallWith=ScriptExecutionContext, GetterMayThrowLegacyException] attribute TestObj withScriptExecutionContextAttributeRaises;
     [CallWith=ScriptExecutionContext&ScriptState] attribute TestObj withScriptExecutionContextAndScriptStateAttribute;
-    [CallWith=ScriptExecutionContext&ScriptState,GetterRaisesException] attribute TestObj withScriptExecutionContextAndScriptStateAttributeRaises;
+    [CallWith=ScriptExecutionContext&ScriptState,GetterMayThrowLegacyException] attribute TestObj withScriptExecutionContextAndScriptStateAttributeRaises;
     [CallWith=  ScriptExecutionContext  &  ScriptState  ] attribute TestObj withScriptExecutionContextAndScriptStateWithSpacesAttribute;
     [CallWith=ScriptArguments&CallStack] attribute TestObj withScriptArgumentsAndCallStackAttribute;
 
@@ -312,8 +312,8 @@ enum TestConfidence { "high", "kinda-low" };
 
 #if defined(TESTING_JS)
     void methodWithUnsignedLongSequence(sequence<unsigned long> unsignedLongSequence);
-    [RaisesException] sequence<DOMString> stringArrayFunction(sequence<DOMString> values);
-    [RaisesException] DOMStringList domStringListFunction(DOMStringList values);
+    [MayThrowLegacyException] sequence<DOMString> stringArrayFunction(sequence<DOMString> values);
+    [MayThrowLegacyException] DOMStringList domStringListFunction(DOMStringList values);
 
     void methodWithAndWithoutNullableSequence(sequence<unsigned long> arrayArg, sequence<unsigned long>? nullableArrayArg);
 
@@ -321,7 +321,7 @@ enum TestConfidence { "high", "kinda-low" };
 #endif
 
     [CheckSecurityForNode] readonly attribute Document contentDocument;
-    [CheckSecurityForNode, RaisesException] SVGDocument getSVGDocument();
+    [CheckSecurityForNode, MayThrowLegacyException] SVGDocument getSVGDocument();
 
     void convert1(TestNode value);
     void convert2(TestNode? value);
@@ -372,7 +372,7 @@ enum TestConfidence { "high", "kinda-low" };
     attribute USVString? nullableUSVStringSettableAttribute;
 #endif
 
-    [GetterRaisesException] attribute long? nullableStringValue;
+    [GetterMayThrowLegacyException] attribute long? nullableStringValue;
 
     // Identifiers with a leading underscore, which should be removed.
     const unsigned short               _readonly = 0;
@@ -383,12 +383,12 @@ enum TestConfidence { "high", "kinda-low" };
     // Promise function
     Promise testPromiseFunction();
     Promise testPromiseFunctionWithFloatArgument(float a);
-    [RaisesException] Promise testPromiseFunctionWithException();
+    [MayThrowLegacyException] Promise testPromiseFunctionWithException();
     Promise testPromiseFunctionWithOptionalIntArgument(optional long a);
     Promise testPromiseOverloadedFunction(float a);
     Promise testPromiseOverloadedFunction(FetchRequest request);
     static Promise testStaticPromiseFunction();
-    [RaisesException] static Promise testStaticPromiseFunctionWithException();
+    [MayThrowLegacyException] static Promise testStaticPromiseFunctionWithException();
     [Custom] Promise testCustomPromiseFunction();
 
     // PutForwards
index 19555c2..9cb685e 100644 (file)
@@ -39,7 +39,7 @@
     attribute Node supplementalNode;
 
     void supplementalMethod1();
-    [CallWith=ScriptExecutionContext, RaisesException] TestObj supplementalMethod2(DOMString strArg, TestObj objArg);
+    [CallWith=ScriptExecutionContext, MayThrowLegacyException] TestObj supplementalMethod2(DOMString strArg, TestObj objArg);
     [Custom] void supplementalMethod3();
     static void supplementalMethod4();