Skip to content
  • ch.dumez@sisa.samsung.com's avatar
    Add support for [NoInterfaceObject] Web IDL extended attribute · 077c4e77
    ch.dumez@sisa.samsung.com authored
    https://bugs.webkit.org/show_bug.cgi?id=115714
    
    Reviewed by Kentaro Hara.
    
    .:
    
    Update GENERATE_BINDINGS macro to take an additional _window_constructors_file
    optional argument.
    
    * Source/cmake/WebKitMacros.cmake:
    
    Source/WebCore:
    
    *Constructor attributes on the global DOMWindow object are now automatically
    generated for each non-callback interface that is not declared with the
    [NoInterfaceObject] extended attribute. It is thus no longer needed for
    developers to manually add *Constructor attributes for their new interfaces
    unless they wish to register an "extra" constructor for their interface.
    
    This patch does not modify at all the behavior on JS side. To achieve this,
    [NoInterfaceObject] extended attribute is added to interfaces that should
    not have it according to specification (e.g. History, Location, ...).
    This can be improved later as the behavior should not change with this
    patch.
    
    No new tests, no behavior change.
    
    * CMakeLists.txt:
    * DerivedSources.make:
    * DerivedSources.pri:
    * GNUmakefile.am:
    * GNUmakefile.list.am:
    * Modules/battery/BatteryManager.idl:
    * Modules/encryptedmedia/MediaKeyMessageEvent.idl:
    * Modules/encryptedmedia/MediaKeyNeededEvent.idl:
    * Modules/encryptedmedia/MediaKeySession.idl:
    * Modules/encryptedmedia/MediaKeys.idl:
    * Modules/filesystem/DOMFileSystem.idl:
    * Modules/filesystem/DOMFileSystemSync.idl:
    * Modules/filesystem/DirectoryEntry.idl:
    * Modules/filesystem/DirectoryEntrySync.idl:
    * Modules/filesystem/DirectoryReader.idl:
    * Modules/filesystem/DirectoryReaderSync.idl:
    * Modules/filesystem/Entry.idl:
    * Modules/filesystem/EntryArray.idl:
    * Modules/filesystem/EntryArraySync.idl:
    * Modules/filesystem/EntrySync.idl:
    * Modules/filesystem/FileEntry.idl:
    * Modules/filesystem/FileEntrySync.idl:
    * Modules/filesystem/FileWriter.idl:
    * Modules/filesystem/FileWriterSync.idl:
    * Modules/filesystem/Metadata.idl:
    * Modules/gamepad/Gamepad.idl:
    * Modules/gamepad/GamepadList.idl:
    * Modules/geolocation/Coordinates.idl:
    * Modules/geolocation/Geolocation.idl:
    * Modules/geolocation/Geoposition.idl:
    * Modules/geolocation/PositionError.idl:
    * Modules/indexeddb/DOMWindowIndexedDatabase.idl:
    * Modules/indexeddb/IDBAny.idl:
    * Modules/mediasource/MediaSource.idl:
    * Modules/mediasource/SourceBuffer.idl:
    * Modules/mediasource/SourceBufferList.idl:
    * Modules/mediastream/DOMWindowMediaStream.idl: Removed.
    * Modules/mediastream/MediaStream.idl:
    * Modules/mediastream/MediaStreamTrack.idl:
    * Modules/mediastream/MediaStreamTrackEvent.idl:
    * Modules/mediastream/NavigatorUserMediaError.idl:
    * Modules/mediastream/RTCDTMFSender.idl:
    * Modules/mediastream/RTCDTMFToneChangeEvent.idl:
    * Modules/mediastream/RTCDataChannel.idl:
    * Modules/mediastream/RTCDataChannelEvent.idl:
    * Modules/mediastream/RTCIceCandidateEvent.idl:
    * Modules/mediastream/RTCPeerConnection.idl:
    * Modules/mediastream/RTCStatsReport.idl:
    * Modules/mediastream/RTCStatsResponse.idl:
    * Modules/networkinfo/NetworkInfoConnection.idl:
    * Modules/notifications/DOMWindowNotifications.idl:
    * Modules/notifications/NotificationCenter.idl:
    * Modules/quota/StorageInfo.idl:
    * Modules/quota/StorageQuota.idl:
    * Modules/speech/DOMWindowSpeech.idl: Removed.
    * Modules/speech/DOMWindowSpeechSynthesis.idl:
    * Modules/speech/SpeechGrammar.idl:
    * Modules/speech/SpeechGrammarList.idl:
    * Modules/speech/SpeechRecognition.idl:
    * Modules/speech/SpeechRecognitionAlternative.idl:
    * Modules/speech/SpeechRecognitionError.idl:
    * Modules/speech/SpeechRecognitionEvent.idl:
    * Modules/speech/SpeechRecognitionResult.idl:
    * Modules/speech/SpeechRecognitionResultList.idl:
    * Modules/speech/SpeechSynthesis.idl:
    * Modules/speech/SpeechSynthesisVoice.idl:
    * Modules/webaudio/AnalyserNode.idl:
    * Modules/webaudio/AudioBuffer.idl:
    * Modules/webaudio/AudioBufferSourceNode.idl:
    * Modules/webaudio/AudioContext.idl:
    * Modules/webaudio/AudioDestinationNode.idl:
    * Modules/webaudio/AudioListener.idl:
    * Modules/webaudio/AudioNode.idl:
    * Modules/webaudio/AudioParam.idl:
    * Modules/webaudio/AudioSourceNode.idl:
    * Modules/webaudio/BiquadFilterNode.idl:
    * Modules/webaudio/ChannelMergerNode.idl:
    * Modules/webaudio/ChannelSplitterNode.idl:
    * Modules/webaudio/ConvolverNode.idl:
    * Modules/webaudio/DOMWindowWebAudio.idl: Removed.
    * Modules/webaudio/DelayNode.idl:
    * Modules/webaudio/DynamicsCompressorNode.idl:
    * Modules/webaudio/GainNode.idl:
    * Modules/webaudio/MediaElementAudioSourceNode.idl:
    * Modules/webaudio/MediaStreamAudioDestinationNode.idl:
    * Modules/webaudio/MediaStreamAudioSourceNode.idl:
    * Modules/webaudio/OfflineAudioContext.idl:
    * Modules/webaudio/OscillatorNode.idl:
    * Modules/webaudio/PannerNode.idl:
    * Modules/webaudio/ScriptProcessorNode.idl:
    * Modules/webaudio/WaveShaperNode.idl:
    * Modules/webaudio/WaveTable.idl:
    * Modules/webdatabase/DOMWindowWebDatabase.idl:
    * Modules/webdatabase/Database.idl:
    * Modules/webdatabase/DatabaseSync.idl:
    * Modules/webdatabase/SQLError.idl:
    * Modules/webdatabase/SQLResultSet.idl:
    * Modules/webdatabase/SQLResultSetRowList.idl:
    * Modules/webdatabase/SQLTransaction.idl:
    * Modules/webdatabase/SQLTransactionSync.idl:
    * Modules/websockets/DOMWindowWebSocket.idl: Removed.
    * Modules/websockets/WebSocket.idl:
    * PlatformBlackBerry.cmake:
    * UseJSC.cmake:
    * WebCore.xcodeproj/project.pbxproj:
    * bindings/scripts/IDLAttributes.txt:
    * bindings/scripts/IDLParser.pm:
    (parseTypedef):
    * bindings/scripts/preprocess-idls.pl:
    (GenerateConstructorAttribute):
    (getFileContents):
    (getPartialInterfaceNameFromIDL):
    (isCallbackInterfaceFromIDL):
    (trim):
    (getInterfaceExtendedAttributesFromIDL):
    * css/CSSFontFaceLoadEvent.idl:
    * css/CSSFontFaceRule.idl:
    * css/CSSSupportsRule.idl:
    * css/CSSUnknownRule.idl:
    * css/DOMWindowCSS.idl:
    * css/FontLoader.idl:
    * css/MediaQueryList.idl:
    * css/MediaQueryListListener.idl:
    * css/StyleMedia.idl:
    * dom/CustomElementConstructor.idl:
    * dom/DOMError.idl:
    * dom/DOMNamedFlowCollection.idl:
    * dom/DataTransferItem.idl:
    * dom/DataTransferItemList.idl:
    * dom/EventListener.idl:
    * dom/EventTarget.idl:
    * dom/NodeIterator.idl:
    * dom/ShadowRoot.idl:
    * dom/TreeWalker.idl:
    * dom/WebKitNamedFlow.idl:
    * fileapi/FileException.idl:
    * fileapi/FileReaderSync.idl:
    * html/HTMLAudioElement.idl:
    * html/HTMLDetailsElement.idl:
    * html/HTMLOptionElement.idl:
    * html/MediaError.idl:
    * html/MediaKeyError.idl:
    * html/MicroDataItemValue.idl:
    * html/RadioNodeList.idl:
    * html/ValidityState.idl:
    * html/canvas/CanvasRenderingContext.idl:
    * html/canvas/DOMPath.idl:
    * html/canvas/EXTDrawBuffers.idl:
    * html/canvas/EXTTextureFilterAnisotropic.idl:
    * html/canvas/OESElementIndexUint.idl:
    * html/canvas/OESStandardDerivatives.idl:
    * html/canvas/OESTextureFloat.idl:
    * html/canvas/OESTextureHalfFloat.idl:
    * html/canvas/OESVertexArrayObject.idl:
    * html/canvas/WebGLCompressedTextureATC.idl:
    * html/canvas/WebGLCompressedTexturePVRTC.idl:
    * html/canvas/WebGLCompressedTextureS3TC.idl:
    * html/canvas/WebGLContextAttributes.idl:
    * html/canvas/WebGLDebugRendererInfo.idl:
    * html/canvas/WebGLDebugShaders.idl:
    * html/canvas/WebGLDepthTexture.idl:
    * html/canvas/WebGLLoseContext.idl:
    * html/canvas/WebGLVertexArrayObjectOES.idl:
    * html/track/AudioTrack.idl:
    * html/track/AudioTrackList.idl:
    * html/track/TextTrackRegionList.idl:
    * html/track/VideoTrack.idl:
    * html/track/VideoTrackList.idl:
    * inspector/InjectedScriptHost.idl:
    * inspector/InspectorFrontendHost.idl:
    * inspector/JavaScriptCallFrame.idl:
    * inspector/ScriptProfile.idl:
    * inspector/ScriptProfileNode.idl:
    * loader/appcache/DOMApplicationCache.idl:
    * page/AbstractView.idl:
    * page/BarInfo.idl:
    * page/Console.idl:
    * page/Crypto.idl:
    * page/DOMSecurityPolicy.idl:
    * page/DOMWindow.idl:
    * page/History.idl:
    * page/Location.idl:
    * page/MemoryInfo.idl:
    * page/Navigator.idl:
    * page/PagePopupController.idl:
    * page/Performance.idl:
    * page/PerformanceEntry.idl:
    * page/PerformanceEntryList.idl:
    * page/PerformanceMark.idl:
    * page/PerformanceMeasure.idl:
    * page/PerformanceNavigation.idl:
    * page/PerformanceResourceTiming.idl:
    * page/PerformanceTiming.idl:
    * page/Screen.idl:
    * page/SpeechInputResult.idl:
    * page/SpeechInputResultList.idl:
    * page/WorkerNavigator.idl:
    * page/make_settings.pl:
    (generateInternalSettingsIdlFile):
    * svg/ElementTimeControl.idl:
    * svg/SVGAnimationElement.idl:
    * svg/SVGExternalResourcesRequired.idl:
    * svg/SVGFilterPrimitiveStandardAttributes.idl:
    * svg/SVGFitToViewBox.idl:
    * svg/SVGLangSpace.idl:
    * svg/SVGLocatable.idl:
    * svg/SVGStyledElement.idl:
    * svg/SVGTests.idl:
    * svg/SVGTransformable.idl:
    * svg/SVGURIReference.idl:
    * testing/InternalSettings.idl:
    * testing/Internals.idl:
    * testing/MallocStatistics.idl:
    * testing/TypeConversions.idl:
    * workers/AbstractWorker.idl:
    * workers/DedicatedWorkerContext.idl:
    * workers/SharedWorker.idl:
    * workers/SharedWorkerContext.idl:
    * workers/WorkerContext.idl:
    * workers/WorkerLocation.idl:
    * xml/XPathExpression.idl:
    * xml/XPathNSResolver.idl:
    
    Tools:
    
    Update BindingsTests.generate_supplemental_dependency() to pass an
    additional windowConstructorsFile argument to preprocess-idls.pl.
    
    * Scripts/webkitpy/bindings/main.py:
    (BindingsTests.generate_supplemental_dependency):
    (BindingsTests.main):
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149796 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    077c4e77