1. 09 May, 2013 1 commit
    • 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
  2. 06 Feb, 2013 1 commit
    • tommyw@google.com's avatar
      MediaStream API: Implement DTMF support in RTCPeerConnection · 3dbbd139
      tommyw@google.com authored
      https://bugs.webkit.org/show_bug.cgi?id=106782
      
      Reviewed by Adam Barth.
      
      Source/Platform:
      
      The WebRTC specification have added support for DTMF:
      http://dev.w3.org/2011/webrtc/editor/webrtc.html#peer-to-peer-dtmf
      
      Implementation wise this is implemented using the same pattern as RTCDataChannel;
      where a RTCDTMFSenderHandler is created by the UA through a new method on
      RTCPeerConnectionHandler.
      
      * Platform.gypi:
      * chromium/public/WebMediaStreamTrack.h:
      (WebMediaStreamTrack):
      * chromium/public/WebRTCDTMFSenderHandler.h: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (WebKit):
      (WebRTCDTMFSenderHandler):
      (WebKit::WebRTCDTMFSenderHandler::~WebRTCDTMFSenderHandler):
      * chromium/public/WebRTCDTMFSenderHandlerClient.h: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (WebKit):
      (WebRTCDTMFSenderHandlerClient):
      (WebKit::WebRTCDTMFSenderHandlerClient::~WebRTCDTMFSenderHandlerClient):
      * chromium/public/WebRTCPeerConnectionHandler.h:
      (WebKit):
      (WebKit::WebRTCPeerConnectionHandler::createDTMFSender):
      
      Source/WebCore:
      
      The WebRTC specification have added support for DTMF:
      http://dev.w3.org/2011/webrtc/editor/webrtc.html#peer-to-peer-dtmf
      
      Implementation wise this is implemented using the same pattern as RTCDataChannel;
      where a RTCDTMFSenderHandler is created by the UA through a new method on
      RTCPeerConnectionHandler.
      
      Test: fast/mediastream/RTCPeerConnection-dtmf.html
      
      * CMakeLists.txt:
      * GNUmakefile.list.am:
      * Modules/mediastream/RTCDTMFSender.cpp: Added.
      (WebCore):
      (WebCore::RTCDTMFSender::create):
      (WebCore::RTCDTMFSender::RTCDTMFSender):
      (WebCore::RTCDTMFSender::~RTCDTMFSender):
      (WebCore::RTCDTMFSender::canInsertDTMF):
      (WebCore::RTCDTMFSender::track):
      (WebCore::RTCDTMFSender::toneBuffer):
      (WebCore::RTCDTMFSender::insertDTMF):
      (WebCore::RTCDTMFSender::didPlayTone):
      (WebCore::RTCDTMFSender::interfaceName):
      (WebCore::RTCDTMFSender::scriptExecutionContext):
      (WebCore::RTCDTMFSender::stop):
      (WebCore::RTCDTMFSender::eventTargetData):
      (WebCore::RTCDTMFSender::ensureEventTargetData):
      (WebCore::RTCDTMFSender::scheduleDispatchEvent):
      (WebCore::RTCDTMFSender::scheduledEventTimerFired):
      * Modules/mediastream/RTCDTMFSender.h: Added.
      (WebCore):
      (RTCDTMFSender):
      (WebCore::RTCDTMFSender::duration):
      (WebCore::RTCDTMFSender::interToneGap):
      * Modules/mediastream/RTCDTMFSender.idl: Added.
      * Modules/mediastream/RTCDTMFToneChangeEvent.cpp: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (WebCore):
      (WebCore::RTCDTMFToneChangeEvent::create):
      (WebCore::RTCDTMFToneChangeEvent::RTCDTMFToneChangeEvent):
      (WebCore::RTCDTMFToneChangeEvent::~RTCDTMFToneChangeEvent):
      (WebCore::RTCDTMFToneChangeEvent::tone):
      (WebCore::RTCDTMFToneChangeEvent::interfaceName):
      * Modules/mediastream/RTCDTMFToneChangeEvent.h: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (WebCore):
      (RTCDTMFToneChangeEventInit):
      (RTCDTMFToneChangeEvent):
      * Modules/mediastream/RTCDTMFToneChangeEvent.idl: Added.
      * Modules/mediastream/RTCPeerConnection.cpp:
      (WebCore::RTCPeerConnection::createDataChannel):
      (WebCore):
      (WebCore::RTCPeerConnection::getStreamByTrackId):
      (WebCore::RTCPeerConnection::createDTMFSender):
      * Modules/mediastream/RTCPeerConnection.h:
      (WebCore):
      (RTCPeerConnection):
      * Modules/mediastream/RTCPeerConnection.idl:
      * WebCore.gypi:
      * dom/EventNames.h:
      (WebCore):
      * dom/EventNames.in:
      * dom/EventTargetFactory.in:
      * platform/chromium/support/WebMediaStreamTrack.cpp:
      (WebKit::WebMediaStreamTrack::WebMediaStreamTrack):
      (WebKit):
      * platform/mediastream/RTCDTMFSenderHandler.h: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (WebCore):
      (RTCDTMFSenderHandler):
      (WebCore::RTCDTMFSenderHandler::~RTCDTMFSenderHandler):
      * platform/mediastream/RTCDTMFSenderHandlerClient.h: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (WebCore):
      (RTCDTMFSenderHandlerClient):
      (WebCore::RTCDTMFSenderHandlerClient::~RTCDTMFSenderHandlerClient):
      * platform/mediastream/RTCPeerConnectionHandler.h:
      (WebCore):
      (RTCPeerConnectionHandler):
      * platform/mediastream/chromium/RTCDTMFSenderHandlerChromium.cpp: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (WebCore):
      (WebCore::RTCDTMFSenderHandlerChromium::create):
      (WebCore::RTCDTMFSenderHandlerChromium::RTCDTMFSenderHandlerChromium):
      (WebCore::RTCDTMFSenderHandlerChromium::~RTCDTMFSenderHandlerChromium):
      (WebCore::RTCDTMFSenderHandlerChromium::setClient):
      (WebCore::RTCDTMFSenderHandlerChromium::currentToneBuffer):
      (WebCore::RTCDTMFSenderHandlerChromium::canInsertDTMF):
      (WebCore::RTCDTMFSenderHandlerChromium::insertDTMF):
      (WebCore::RTCDTMFSenderHandlerChromium::didPlayTone):
      * platform/mediastream/chromium/RTCDTMFSenderHandlerChromium.h: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (WebCore):
      (RTCDTMFSenderHandlerChromium):
      * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.cpp:
      (WebCore::RTCPeerConnectionHandlerChromium::createDTMFSender):
      (WebCore):
      * platform/mediastream/chromium/RTCPeerConnectionHandlerChromium.h:
      (RTCPeerConnectionHandlerChromium):
      
      Tools:
      
      Adding Mock functionality for the DTMFSender.
      
      * DumpRenderTree/DumpRenderTree.gypi:
      * DumpRenderTree/chromium/MockWebRTCDTMFSenderHandler.cpp: Added.
      (DTMFSenderToneTask):
      (DTMFSenderToneTask::DTMFSenderToneTask):
      (MockWebRTCDTMFSenderHandler::MockWebRTCDTMFSenderHandler):
      (MockWebRTCDTMFSenderHandler::setClient):
      (MockWebRTCDTMFSenderHandler::currentToneBuffer):
      (MockWebRTCDTMFSenderHandler::canInsertDTMF):
      (MockWebRTCDTMFSenderHandler::insertDTMF):
      * DumpRenderTree/chromium/MockWebRTCDTMFSenderHandler.h: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
      (MockWebRTCDTMFSenderHandler):
      (MockWebRTCDTMFSenderHandler::taskList):
      (MockWebRTCDTMFSenderHandler::clearToneBuffer):
      * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
      (MockWebRTCPeerConnectionHandler::createDTMFSender):
      * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
      (MockWebRTCPeerConnectionHandler):
      
      LayoutTests:
      
      * fast/mediastream/RTCPeerConnection-dtmf-expected.txt: Added.
      * fast/mediastream/RTCPeerConnection-dtmf.html: Added.
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@141984 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3dbbd139