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. 30 Apr, 2013 2 commits
    • ch.dumez@sisa.samsung.com's avatar
      Stop using "in" keyword in IDL files · b2986f1d
      ch.dumez@sisa.samsung.com authored
      https://bugs.webkit.org/show_bug.cgi?id=115418
      
      Reviewed by Kentaro Hara.
      
      Source/WebCore:
      
      Stop using "in" keyword in IDL files as this is no longer part of the
      Web IDL specification and it brings no additional information.
      
      For now, the IDL parser will still accept the "in" keyword for operation
      argument to not break anything. However, we should remove support for it
      later on.
      
      No new tests, no behavior change.
      
      * Modules/battery/BatteryManager.idl:
      * Modules/encryptedmedia/MediaKeySession.idl:
      * Modules/encryptedmedia/MediaKeys.idl:
      * Modules/filesystem/DOMWindowFileSystem.idl:
      * Modules/filesystem/DirectoryEntry.idl:
      * Modules/filesystem/DirectoryEntrySync.idl:
      * Modules/filesystem/DirectoryReader.idl:
      * Modules/filesystem/EntriesCallback.idl:
      * Modules/filesystem/Entry.idl:
      * Modules/filesystem/EntryArray.idl:
      * Modules/filesystem/EntryArraySync.idl:
      * Modules/filesystem/EntryCallback.idl:
      * Modules/filesystem/EntrySync.idl:
      * Modules/filesystem/ErrorCallback.idl:
      * Modules/filesystem/FileCallback.idl:
      * Modules/filesystem/FileEntry.idl:
      * Modules/filesystem/FileSystemCallback.idl:
      * Modules/filesystem/FileWriter.idl:
      * Modules/filesystem/FileWriterCallback.idl:
      * Modules/filesystem/FileWriterSync.idl:
      * Modules/filesystem/MetadataCallback.idl:
      * Modules/filesystem/WorkerContextFileSystem.idl:
      * Modules/gamepad/GamepadList.idl:
      * Modules/geolocation/Geolocation.idl:
      * Modules/geolocation/PositionCallback.idl:
      * Modules/geolocation/PositionErrorCallback.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/mediasource/SourceBufferList.idl:
      * Modules/mediastream/MediaStream.idl:
      * Modules/mediastream/MediaStreamTrack.idl:
      * Modules/mediastream/NavigatorMediaStream.idl:
      * Modules/mediastream/NavigatorUserMediaErrorCallback.idl:
      * Modules/mediastream/NavigatorUserMediaSuccessCallback.idl:
      * Modules/mediastream/RTCDTMFSender.idl:
      * Modules/mediastream/RTCDataChannel.idl:
      * Modules/mediastream/RTCErrorCallback.idl:
      * Modules/mediastream/RTCIceCandidate.idl:
      * Modules/mediastream/RTCPeerConnection.idl:
      * Modules/mediastream/RTCSessionDescription.idl:
      * Modules/mediastream/RTCSessionDescriptionCallback.idl:
      * Modules/mediastream/RTCStatsCallback.idl:
      * Modules/mediastream/RTCStatsReport.idl:
      * Modules/mediastream/RTCStatsResponse.idl:
      * Modules/navigatorcontentutils/NavigatorContentUtils.idl:
      * Modules/networkinfo/NetworkInfoConnection.idl:
      * Modules/notifications/Notification.idl:
      * Modules/notifications/NotificationCenter.idl:
      * Modules/notifications/NotificationPermissionCallback.idl:
      * Modules/quota/StorageErrorCallback.idl:
      * Modules/quota/StorageInfo.idl:
      * Modules/quota/StorageQuota.idl:
      * Modules/quota/StorageQuotaCallback.idl:
      * Modules/quota/StorageUsageCallback.idl:
      * Modules/speech/SpeechGrammarList.idl:
      * Modules/speech/SpeechRecognition.idl:
      * Modules/speech/SpeechRecognitionResult.idl:
      * Modules/speech/SpeechRecognitionResultList.idl:
      * Modules/speech/SpeechSynthesisUtterance.idl:
      * Modules/vibration/NavigatorVibration.idl:
      * Modules/webaudio/AnalyserNode.idl:
      * Modules/webaudio/AudioBuffer.idl:
      * Modules/webaudio/AudioBufferCallback.idl:
      * Modules/webaudio/AudioBufferSourceNode.idl:
      * Modules/webaudio/AudioContext.idl:
      * Modules/webaudio/AudioListener.idl:
      * Modules/webaudio/AudioNode.idl:
      * Modules/webaudio/AudioParam.idl:
      * Modules/webaudio/BiquadFilterNode.idl:
      * Modules/webaudio/OfflineAudioContext.idl:
      * Modules/webaudio/OscillatorNode.idl:
      * Modules/webaudio/PannerNode.idl:
      * Modules/webdatabase/DOMWindowWebDatabase.idl:
      * Modules/webdatabase/Database.idl:
      * Modules/webdatabase/DatabaseCallback.idl:
      * Modules/webdatabase/DatabaseSync.idl:
      * Modules/webdatabase/SQLResultSetRowList.idl:
      * Modules/webdatabase/SQLStatementCallback.idl:
      * Modules/webdatabase/SQLStatementErrorCallback.idl:
      * Modules/webdatabase/SQLTransaction.idl:
      * Modules/webdatabase/SQLTransactionCallback.idl:
      * Modules/webdatabase/SQLTransactionErrorCallback.idl:
      * Modules/webdatabase/SQLTransactionSync.idl:
      * Modules/webdatabase/SQLTransactionSyncCallback.idl:
      * Modules/webdatabase/WorkerContextWebDatabase.idl:
      * Modules/websockets/WebSocket.idl:
      * bindings/scripts/test/TestCallback.idl:
      * bindings/scripts/test/TestCustomNamedGetter.idl:
      * bindings/scripts/test/TestDomainSecurity.idl:
      * bindings/scripts/test/TestEventTarget.idl:
      * bindings/scripts/test/TestInterface.idl:
      * bindings/scripts/test/TestMediaQueryListListener.idl:
      * bindings/scripts/test/TestNamedConstructor.idl:
      * bindings/scripts/test/TestObj.idl:
      * bindings/scripts/test/TestOverloadedConstructors.idl:
      * bindings/scripts/test/TestSerializedScriptValueInterface.idl:
      * bindings/scripts/test/TestSupplemental.idl:
      * bindings/scripts/test/TestTypedArray.idl:
      * bindings/scripts/test/TestTypedefs.idl:
      * css/CSSHostRule.idl:
      * css/CSSMediaRule.idl:
      * css/CSSPrimitiveValue.idl:
      * css/CSSRuleList.idl:
      * css/CSSStyleDeclaration.idl:
      * css/CSSStyleSheet.idl:
      * css/CSSSupportsRule.idl:
      * css/CSSValueList.idl:
      * css/FontLoader.idl:
      * css/MediaList.idl:
      * css/MediaQueryList.idl:
      * css/MediaQueryListListener.idl:
      * css/StyleMedia.idl:
      * css/StyleSheetList.idl:
      * css/WebKitCSSKeyframesRule.idl:
      * css/WebKitCSSMatrix.idl:
      * dom/CharacterData.idl:
      * dom/ClientRectList.idl:
      * dom/Clipboard.idl:
      * dom/CompositionEvent.idl:
      * dom/CustomEvent.idl:
      * dom/DOMImplementation.idl:
      * dom/DOMNamedFlowCollection.idl:
      * dom/DOMStringList.idl:
      * dom/DataTransferItem.idl:
      * dom/DataTransferItemList.idl:
      * dom/DeviceMotionEvent.idl:
      * dom/DeviceOrientationEvent.idl:
      * dom/Document.idl:
      * dom/DocumentFragment.idl:
      * dom/Element.idl:
      * dom/Event.idl:
      * dom/EventListener.idl:
      * dom/EventTarget.idl:
      * dom/HashChangeEvent.idl:
      * dom/KeyboardEvent.idl:
      * dom/MessageEvent.idl:
      * dom/MessagePort.idl:
      * dom/MouseEvent.idl:
      * dom/MutationEvent.idl:
      * dom/MutationObserver.idl:
      * dom/NamedNodeMap.idl:
      * dom/Node.idl:
      * dom/NodeFilter.idl:
      * dom/NodeList.idl:
      * dom/OverflowEvent.idl:
      * dom/PropertyNodeList.idl:
      * dom/Range.idl:
      * dom/RequestAnimationFrameCallback.idl:
      * dom/ShadowRoot.idl:
      * dom/StringCallback.idl:
      * dom/Text.idl:
      * dom/TextEvent.idl:
      * dom/TouchEvent.idl:
      * dom/TouchList.idl:
      * dom/UIEvent.idl:
      * dom/WebKitNamedFlow.idl:
      * dom/WheelEvent.idl:
      * fileapi/Blob.idl:
      * fileapi/FileList.idl:
      * fileapi/FileReader.idl:
      * fileapi/FileReaderSync.idl:
      * html/DOMFormData.idl:
      * html/DOMTokenList.idl:
      * html/DOMURL.idl:
      * html/HTMLAllCollection.idl:
      * html/HTMLAudioElement.idl:
      * html/HTMLButtonElement.idl:
      * html/HTMLCanvasElement.idl:
      * html/HTMLCollection.idl:
      * html/HTMLDocument.idl:
      * html/HTMLElement.idl:
      * html/HTMLFieldSetElement.idl:
      * html/HTMLFormControlsCollection.idl:
      * html/HTMLInputElement.idl:
      * html/HTMLKeygenElement.idl:
      * html/HTMLMediaElement.idl:
      * html/HTMLObjectElement.idl:
      * html/HTMLOptionElement.idl:
      * html/HTMLOptionsCollection.idl:
      * html/HTMLOutputElement.idl:
      * html/HTMLPropertiesCollection.idl:
      * html/HTMLSelectElement.idl:
      * html/HTMLTableElement.idl:
      * html/HTMLTableRowElement.idl:
      * html/HTMLTableSectionElement.idl:
      * html/HTMLTextAreaElement.idl:
      * html/MediaController.idl:
      * html/TimeRanges.idl:
      * html/canvas/ArrayBuffer.idl:
      * html/canvas/CanvasGradient.idl:
      * html/canvas/CanvasRenderingContext2D.idl:
      * html/canvas/DOMPath.idl:
      * html/canvas/DataView.idl:
      * html/canvas/EXTDrawBuffers.idl:
      * html/canvas/Float32Array.idl:
      * html/canvas/Float64Array.idl:
      * html/canvas/Int16Array.idl:
      * html/canvas/Int32Array.idl:
      * html/canvas/Int8Array.idl:
      * html/canvas/OESVertexArrayObject.idl:
      * html/canvas/Uint16Array.idl:
      * html/canvas/Uint32Array.idl:
      * html/canvas/Uint8Array.idl:
      * html/canvas/Uint8ClampedArray.idl:
      * html/canvas/WebGLDebugShaders.idl:
      * html/canvas/WebGLRenderingContext.idl:
      * html/track/AudioTrackList.idl:
      * html/track/TextTrack.idl:
      * html/track/TextTrackCue.idl:
      * html/track/TextTrackCueList.idl:
      * html/track/TextTrackList.idl:
      * html/track/TextTrackRegionList.idl:
      * html/track/VideoTrackList.idl:
      * inspector/InjectedScriptHost.idl:
      * inspector/InspectorFrontendHost.idl:
      * inspector/JavaScriptCallFrame.idl:
      * loader/appcache/DOMApplicationCache.idl:
      * page/Console.idl:
      * page/Crypto.idl:
      * page/DOMSecurityPolicy.idl:
      * page/DOMSelection.idl:
      * page/DOMWindow.idl:
      * page/EventSource.idl:
      * page/History.idl:
      * page/Location.idl:
      * page/PagePopupController.idl:
      * page/Performance.idl:
      * page/PerformanceEntryList.idl:
      * page/SpeechInputResultList.idl:
      * plugins/DOMMimeTypeArray.idl:
      * plugins/DOMPlugin.idl:
      * plugins/DOMPluginArray.idl:
      * storage/Storage.idl:
      * storage/StorageEvent.idl:
      * svg/ElementTimeControl.idl:
      * svg/SVGAngle.idl:
      * svg/SVGColor.idl:
      * svg/SVGDocument.idl:
      * svg/SVGElementInstanceList.idl:
      * svg/SVGFEDropShadowElement.idl:
      * svg/SVGFEGaussianBlurElement.idl:
      * svg/SVGFEMorphologyElement.idl:
      * svg/SVGFilterElement.idl:
      * svg/SVGLength.idl:
      * svg/SVGLengthList.idl:
      * svg/SVGLocatable.idl:
      * svg/SVGMarkerElement.idl:
      * svg/SVGMatrix.idl:
      * svg/SVGNumberList.idl:
      * svg/SVGPaint.idl:
      * svg/SVGPathElement.idl:
      * svg/SVGPathSegList.idl:
      * svg/SVGPoint.idl:
      * svg/SVGPointList.idl:
      * svg/SVGSVGElement.idl:
      * svg/SVGStringList.idl:
      * svg/SVGStyledElement.idl:
      * svg/SVGTests.idl:
      * svg/SVGTextContentElement.idl:
      * svg/SVGTransform.idl:
      * svg/SVGTransformList.idl:
      * testing/InternalSettings.idl:
      * testing/Internals.idl:
      * workers/AbstractWorker.idl:
      * workers/DedicatedWorkerContext.idl:
      * workers/SharedWorker.idl:
      * workers/Worker.idl:
      * workers/WorkerContext.idl:
      * xml/DOMParser.idl:
      * xml/XMLHttpRequest.idl:
      * xml/XMLHttpRequestUpload.idl:
      * xml/XMLSerializer.idl:
      * xml/XPathEvaluator.idl:
      * xml/XPathExpression.idl:
      * xml/XPathNSResolver.idl:
      * xml/XPathResult.idl:
      * xml/XSLTProcessor.idl:
      
      Source/WebKit/win:
      
      Remove "in" keyword from IDL files as this is no longer part of the Web
      IDL specification.
      
      * Interfaces/DOMEvents.idl:
      * Interfaces/DOMPrivate.idl:
      * Interfaces/DOMWindow.idl:
      
      Tools:
      
      Remove "in" keyword from IDL files as this is no longer part of the Web
      IDL specification.
      
      * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
      * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityTextMarker.idl:
      * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityTextMarkerRange.idl:
      * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
      * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
      * WebKitTestRunner/InjectedBundle/Bindings/GCController.idl:
      * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
      * WebKitTestRunner/InjectedBundle/Bindings/TextInputController.idl:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149368 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      b2986f1d
    • ch.dumez@sisa.samsung.com's avatar
      Replace "Optional" extended attribute by proper Web IDL "optional" keyword · 3463b187
      ch.dumez@sisa.samsung.com authored
      https://bugs.webkit.org/show_bug.cgi?id=115380
      
      Reviewed by Kentaro Hara.
      
      Source/WebCore:
      
      Replace [Optional] with standard WebIDL optional type prefix:
      http://dev.w3.org/2006/webapi/WebIDL/#dfn-optional-argument
      
      The default behavior now matches WebIDL: [Optional] => optional
      
      Two cases where WebKit has extended bindings behavior still
      require a non-standard IDL attribute:
      [Optional=DefaultIsNullString] => [Default=NullString] optional
      [Optional=DefaultIsUndefined] => [Default=Undefined] optional
      
      Based on corresponding Blink patch from Joshua Bell for compatibility.
      
      No new tests, no behavior change.
      
      * Modules/battery/BatteryManager.idl:
      * Modules/encryptedmedia/MediaKeySession.idl:
      * Modules/encryptedmedia/MediaKeys.idl:
      * Modules/filesystem/DOMWindowFileSystem.idl:
      * Modules/filesystem/DirectoryEntry.idl:
      * Modules/filesystem/DirectoryReader.idl:
      * Modules/filesystem/Entry.idl:
      * Modules/filesystem/FileEntry.idl:
      * Modules/filesystem/FileWriter.idl:
      * Modules/filesystem/WorkerContextFileSystem.idl:
      * Modules/gamepad/GamepadList.idl:
      * Modules/geolocation/Geolocation.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/SourceBufferList.idl:
      * Modules/mediastream/MediaStream.idl:
      * Modules/mediastream/MediaStreamTrack.idl:
      * Modules/mediastream/NavigatorMediaStream.idl:
      * Modules/mediastream/RTCDTMFSender.idl:
      * Modules/mediastream/RTCDataChannel.idl:
      * Modules/mediastream/RTCPeerConnection.idl:
      * Modules/mediastream/RTCStatsResponse.idl:
      * Modules/networkinfo/NetworkInfoConnection.idl:
      * Modules/notifications/Notification.idl:
      * Modules/notifications/NotificationCenter.idl:
      * Modules/quota/StorageInfo.idl:
      * Modules/quota/StorageQuota.idl:
      * Modules/speech/SpeechGrammarList.idl:
      * Modules/speech/SpeechRecognition.idl:
      * Modules/speech/SpeechSynthesisUtterance.idl:
      * Modules/webaudio/AudioContext.idl:
      * Modules/webaudio/AudioNode.idl:
      * Modules/webdatabase/DOMWindowWebDatabase.idl:
      * Modules/webdatabase/Database.idl:
      * Modules/webdatabase/DatabaseSync.idl:
      * Modules/webdatabase/SQLTransaction.idl:
      * Modules/webdatabase/WorkerContextWebDatabase.idl:
      * Modules/websockets/WebSocket.idl:
      * bindings/scripts/CodeGeneratorJS.pm:
      (GetFunctionLength):
      (GenerateFunctionParametersCheck):
      (GenerateArgumentsCountCheck):
      (GenerateParametersCheck):
      (GenerateConstructorDefinition):
      * bindings/scripts/IDLAttributes.txt:
      * bindings/scripts/IDLParser.pm:
      (parseOptionalOrRequiredArgument):
      * bindings/scripts/test/TestEventTarget.idl:
      * bindings/scripts/test/TestInterface.idl:
      * bindings/scripts/test/TestNamedConstructor.idl:
      * bindings/scripts/test/TestObj.idl:
      * bindings/scripts/test/TestSerializedScriptValueInterface.idl:
      * bindings/scripts/test/TestTypedefs.idl: optional cannot be used in a typedef.
      * css/CSSHostRule.idl:
      * css/CSSMediaRule.idl:
      * css/CSSPrimitiveValue.idl:
      * css/CSSRuleList.idl:
      * css/CSSStyleDeclaration.idl:
      * css/CSSStyleSheet.idl:
      * css/CSSSupportsRule.idl:
      * css/CSSValueList.idl:
      * css/FontLoader.idl:
      * css/MediaList.idl:
      * css/MediaQueryList.idl:
      * css/MediaQueryListListener.idl:
      * css/StyleMedia.idl:
      * css/StyleSheetList.idl:
      * css/WebKitCSSKeyframesRule.idl:
      * css/WebKitCSSMatrix.idl:
      * dom/CharacterData.idl:
      * dom/ClientRectList.idl:
      * dom/Clipboard.idl:
      * dom/CompositionEvent.idl:
      * dom/CustomEvent.idl:
      * dom/DOMImplementation.idl:
      * dom/DOMStringList.idl:
      * dom/DataTransferItem.idl:
      * dom/DataTransferItemList.idl:
      * dom/DeviceMotionEvent.idl:
      * dom/DeviceOrientationEvent.idl:
      * dom/Document.idl:
      * dom/Element.idl:
      * dom/Event.idl:
      * dom/EventTarget.idl:
      * dom/HashChangeEvent.idl:
      * dom/KeyboardEvent.idl:
      * dom/MessageEvent.idl:
      * dom/MessagePort.idl:
      * dom/MouseEvent.idl:
      * dom/MutationEvent.idl:
      * dom/NamedNodeMap.idl:
      * dom/Node.idl:
      * dom/NodeFilter.idl:
      * dom/NodeList.idl:
      * dom/OverflowEvent.idl:
      * dom/Range.idl:
      * dom/ShadowRoot.idl:
      * dom/Text.idl:
      * dom/TextEvent.idl:
      * dom/TouchEvent.idl:
      * dom/UIEvent.idl:
      * dom/WebKitNamedFlow.idl:
      * dom/WheelEvent.idl:
      * fileapi/Blob.idl:
      * fileapi/FileReader.idl:
      * fileapi/FileReaderSync.idl:
      * html/DOMFormData.idl:
      * html/DOMTokenList.idl:
      * html/HTMLAllCollection.idl:
      * html/HTMLAudioElement.idl:
      * html/HTMLCanvasElement.idl:
      * html/HTMLCollection.idl:
      * html/HTMLDocument.idl:
      * html/HTMLElement.idl:
      * html/HTMLFormControlsCollection.idl:
      * html/HTMLInputElement.idl:
      * html/HTMLMediaElement.idl:
      * html/HTMLOptionElement.idl:
      * html/HTMLOptionsCollection.idl:
      * html/HTMLSelectElement.idl:
      * html/HTMLTableElement.idl:
      * html/HTMLTableRowElement.idl:
      * html/HTMLTableSectionElement.idl:
      * html/HTMLTextAreaElement.idl:
      * html/MediaController.idl:
      * html/canvas/ArrayBuffer.idl:
      * html/canvas/CanvasGradient.idl:
      * html/canvas/CanvasRenderingContext2D.idl:
      * html/canvas/DOMPath.idl:
      * html/canvas/DataView.idl:
      * html/canvas/Float32Array.idl:
      * html/canvas/Float64Array.idl:
      * html/canvas/Int16Array.idl:
      * html/canvas/Int32Array.idl:
      * html/canvas/Int8Array.idl:
      * html/canvas/OESVertexArrayObject.idl:
      * html/canvas/Uint16Array.idl:
      * html/canvas/Uint32Array.idl:
      * html/canvas/Uint8Array.idl:
      * html/canvas/Uint8ClampedArray.idl:
      * html/track/AudioTrackList.idl:
      * html/track/TextTrack.idl:
      * html/track/TextTrackCue.idl:
      * html/track/TextTrackList.idl:
      * html/track/VideoTrackList.idl:
      * loader/appcache/DOMApplicationCache.idl:
      * page/DOMSelection.idl:
      * page/DOMWindow.idl:
      * page/EventSource.idl:
      * page/History.idl:
      * page/Location.idl:
      * page/Performance.idl:
      * plugins/DOMMimeTypeArray.idl:
      * plugins/DOMPlugin.idl:
      * plugins/DOMPluginArray.idl:
      * storage/StorageEvent.idl:
      * svg/ElementTimeControl.idl:
      * svg/SVGDocument.idl:
      * svg/SVGElementInstanceList.idl:
      * svg/SVGFEDropShadowElement.idl:
      * svg/SVGFEGaussianBlurElement.idl:
      * svg/SVGFEMorphologyElement.idl:
      * svg/SVGFilterElement.idl:
      * svg/SVGLocatable.idl:
      * svg/SVGMarkerElement.idl:
      * svg/SVGPathElement.idl:
      * svg/SVGSVGElement.idl:
      * svg/SVGStyledElement.idl:
      * svg/SVGTests.idl:
      * svg/SVGTextContentElement.idl:
      * testing/Internals.idl:
      * workers/AbstractWorker.idl:
      * workers/DedicatedWorkerContext.idl:
      * workers/SharedWorker.idl:
      * workers/Worker.idl:
      * workers/WorkerContext.idl:
      * xml/DOMParser.idl:
      * xml/XMLHttpRequest.idl:
      * xml/XMLHttpRequestUpload.idl:
      * xml/XMLSerializer.idl:
      * xml/XPathEvaluator.idl:
      * xml/XPathExpression.idl:
      * xml/XPathNSResolver.idl:
      * xml/XPathResult.idl:
      * xml/XSLTProcessor.idl:
      
      Source/WebKit/win:
      
      Replace [Optional] by optional.
      
      * Interfaces/DOMWindow.idl:
      
      Tools:
      
      Replace WebKit-specific [Optional] extended attribute by Web IDL "optional"
      keyword.
      
      * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
      * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@149356 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      3463b187
  3. 15 Apr, 2013 1 commit
    • mjs@apple.com's avatar
      Remove V8-specific extended attributes from IDL files · 27089042
      mjs@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=114523
      
      Reviewed by Geoffrey Garen.
      
      No tests because no behavior change is expected.
      
      * Modules/encryptedmedia/MediaKeyMessageEvent.idl:
      * Modules/encryptedmedia/MediaKeyNeededEvent.idl:
      * Modules/encryptedmedia/MediaKeySession.idl:
      * Modules/encryptedmedia/MediaKeys.idl:
      * Modules/filesystem/HTMLInputElementFileSystem.idl:
      * Modules/indexeddb/IDBAny.idl:
      * Modules/mediasource/MediaSource.idl:
      * Modules/mediasource/SourceBuffer.idl:
      * Modules/mediasource/SourceBufferList.idl:
      * Modules/mediastream/MediaStream.idl:
      * Modules/webaudio/AudioDestinationNode.idl:
      * html/track/TextTrackCue.idl:
      * html/track/TextTrackCueList.idl:
      * html/track/TextTrackList.idl:
      * html/track/TextTrackRegion.idl:
      * html/track/TextTrackRegionList.idl:
      * html/track/TrackEvent.idl:
      * storage/Storage.idl:
      * svg/SVGDocument.idl:
      * svg/SVGElement.idl:
      * workers/WorkerContext.idl:
      * xml/XMLHttpRequest.idl:
      * xml/XPathNSResolver.idl:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@148480 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      27089042
  4. 06 Apr, 2013 1 commit
    • weinig@apple.com's avatar
      Removed v8 bindings hooks from IDL files · 007c2427
      weinig@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=114091
      
      Patch by Geoffrey Garen <ggaren@apple.com> on 2013-04-06
      Reviewed by Anders Carlsson and Sam Weinig.
      
      Source/JavaScriptCore: 
      
      * heap/HeapStatistics.h:
      
      Source/WebCore: 
      
      * Modules/encryptedmedia/MediaKeySession.idl:
      * Modules/filesystem/DOMWindowFileSystem.idl:
      * Modules/filesystem/WorkerContextFileSystem.idl:
      * Modules/gamepad/NavigatorGamepad.idl:
      * Modules/geolocation/NavigatorGeolocation.idl:
      * Modules/indexeddb/DOMWindowIndexedDatabase.idl:
      * Modules/indexeddb/WorkerContextIndexedDatabase.idl:
      * Modules/mediastream/DOMWindowMediaStream.idl:
      * Modules/mediastream/NavigatorMediaStream.idl:
      * Modules/notifications/DOMWindowNotifications.idl:
      * Modules/notifications/NotificationCenter.idl:
      * Modules/notifications/WorkerContextNotifications.idl:
      * Modules/quota/DOMWindowQuota.idl:
      * Modules/speech/DOMWindowSpeech.idl:
      * Modules/webaudio/AudioBufferSourceNode.idl:
      * Modules/webaudio/AudioContext.idl:
      * Modules/webaudio/AudioParam.idl:
      * Modules/webaudio/DOMWindowWebAudio.idl:
      * Modules/webdatabase/DOMWindowWebDatabase.idl:
      * Modules/webdatabase/WorkerContextWebDatabase.idl:
      * Modules/websockets/DOMWindowWebSocket.idl:
      * Modules/websockets/WorkerContextWebSocket.idl:
      * bindings/js/JSDOMBinding.cpp:
      * bindings/js/ScriptController.h:
      (ScriptController):
      * bindings/scripts/test/TestNode.idl:
      * bindings/scripts/test/TestObj.idl:
      * css/CSSFontFaceLoadEvent.idl:
      * css/CSSHostRule.idl:
      * css/CSSRule.idl:
      * css/CSSRuleList.idl:
      * css/CSSStyleDeclaration.idl:
      * css/CSSStyleSheet.idl:
      * css/CSSValue.idl:
      * css/FontLoader.idl:
      * css/StyleSheet.idl:
      * css/WebKitCSSRegionRule.idl:
      * dom/Clipboard.idl:
      * dom/CustomElementConstructor.idl:
      * dom/CustomEvent.idl:
      * dom/DOMNamedFlowCollection.idl:
      * dom/DOMStringMap.idl:
      * dom/DataTransferItemList.idl:
      * dom/Document.idl:
      * dom/DocumentFragment.idl:
      * dom/Element.idl:
      * dom/Event.idl:
      * dom/EventTarget.idl:
      * dom/MessageChannel.idl:
      * dom/MouseEvent.idl:
      * dom/MutationRecord.idl:
      * dom/NamedNodeMap.idl:
      * dom/Node.idl:
      * dom/NodeList.idl:
      * dom/RequestAnimationFrameCallback.idl:
      * dom/ShadowRoot.idl:
      * dom/Text.idl:
      * history/HistoryItem.cpp:
      (WebCore::HistoryItem::encodeBackForwardTreeNode):
      (WebCore::HistoryItem::decodeBackForwardTree):
      * html/DOMSettableTokenList.idl:
      * html/DOMTokenList.idl:
      * html/HTMLAllCollection.idl:
      * html/HTMLAppletElement.idl:
      * html/HTMLCollection.idl:
      * html/HTMLDialogElement.idl:
      * html/HTMLDivElement.idl:
      * html/HTMLDocument.idl:
      * html/HTMLElement.idl:
      * html/HTMLEmbedElement.idl:
      * html/HTMLFormControlsCollection.idl:
      * html/HTMLFormElement.idl:
      * html/HTMLImageElement.idl:
      * html/HTMLInputElement.idl:
      * html/HTMLMediaElement.idl:
      * html/HTMLObjectElement.idl:
      * html/HTMLOptionsCollection.idl:
      * html/HTMLSelectElement.idl:
      * html/HTMLSpanElement.idl:
      * html/HTMLStyleElement.idl:
      * html/HTMLTemplateElement.idl:
      * html/HTMLTrackElement.idl:
      * html/HTMLUnknownElement.idl:
      * html/MediaKeyError.idl:
      * html/MediaKeyEvent.idl:
      * html/MicroDataItemValue.idl:
      * html/canvas/CanvasRenderingContext2D.idl:
      * html/canvas/DOMPath.idl:
      * html/shadow/HTMLContentElement.idl:
      * html/shadow/HTMLShadowElement.idl:
      * html/track/TextTrack.idl:
      * inspector/InjectedScriptHost.idl:
      * inspector/InspectorIndexedDBAgent.cpp:
      (WebCore::InspectorIndexedDBAgent::requestDatabaseNames):
      (WebCore::InspectorIndexedDBAgent::requestDatabase):
      (WebCore::InspectorIndexedDBAgent::requestData):
      (WebCore::InspectorIndexedDBAgent::clearObjectStore):
      (WebCore):
      * loader/EmptyClients.h:
      (EmptyFrameLoaderClient):
      * loader/FrameLoaderClient.h:
      (FrameLoaderClient):
      * page/Console.idl:
      * page/DOMWindow.idl:
      * page/DOMWindowPagePopup.idl:
      * page/History.idl:
      * page/Location.idl:
      * platform/graphics/skia/PatternSkia.cpp:
      (WebCore::Pattern::platformDestroy):
      (WebCore::Pattern::platformPattern):
      * testing/Internals.cpp:
      (WebCore::Internals::serializeObject):
      (WebCore::Internals::deserializeBuffer):
      
      Source/WTF: 
      
      * wtf/ArrayBuffer.h:
      (WTF):
      (WTF::ArrayBufferContents::ArrayBufferContents):
      (WTF::ArrayBufferContents::transfer):
      (ArrayBufferContents):
      (ArrayBuffer):
      (WTF::ArrayBufferContents::~ArrayBufferContents):
      * wtf/Platform.h:
      
      
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@147857 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      007c2427
  5. 18 Feb, 2013 1 commit
    • jer.noble@apple.com's avatar
      EME: Add a CDMPrivate implementation using AVFoundation. · 424dbe61
      jer.noble@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=109739
      
      Reviewed by Eric Carlson.
      
      Add a CDMPrivate implementation using AVFoundation, similar to the EME v1 implementation
      in MediaPlayerPrivateAVFoundationObjC. This requires passing the AVAssetResourceLoadingRequest
      from the MediaPlayerPrivateAVFoundationObjC instance to CDMSessionAVFoundation. To do so
      without adding platform-specific API to MediaPlayer, add a static map from MediaPlayer ->
      MediaPlayerPrivateAVFoundationObjC instances to be used to vend the AVAssetResourceLoadingRequest
      to CDMSessionAVFoundation.
      
      * Modules/encryptedmedia/CDM.cpp:
      (WebCore::installedCDMFactories): Add the factory for CDMPrivateAVFoundation.
      * Modules/encryptedmedia/CDM.h:
      * Modules/encryptedmedia/CDMPrivateAVFoundation.h: Added.
      (WebCore::CDMPrivateAVFoundation::create): Simple factory method.
      (WebCore::CDMPrivateAVFoundation::~CDMPrivateAVFoundation): Simple virtual destructor.
      (WebCore::CDMPrivateAVFoundation::cdm): Simple getter.
      (WebCore::CDMPrivateAVFoundation::CDMPrivateAVFoundation): Simple constructor.
      * Modules/encryptedmedia/CDMPrivateAVFoundation.mm: Added.
      (WebCore::CDMSessionAVFoundation::~CDMSessionAVFoundation): Simple destructor.
      (WebCore::CDMPrivateAVFoundation::supportsKeySytem): Check whether the given key system is supported.
      (WebCore::CDMPrivateAVFoundation::supportsMIMEType): Check whether the given MIME type is supported.
      (WebCore::CDMPrivateAVFoundation::createSession): Return a new CDMSessionAVFoundation.
      (WebCore::CDMSessionAVFoundation::CDMSessionAVFoundation): Simple constructor.
      (WebCore::CDMSessionAVFoundation::generateKeyRequest): Retrieve the AVAssetResourceLoadingRequest
          from the MediaPlayer, and use it to generate a key request.
      (WebCore::CDMSessionAVFoundation::releaseKeys): No-op.
      (WebCore::CDMSessionAVFoundation::update): Add the passed in key to the AVAssetResourceLoadingRequest.
      * WebCore.xcodeproj/project.pbxproj:
      * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
      * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
      (WebCore::playerToPrivateMap): Lazily instantiate static map.
      (WebCore::MediaPlayerPrivateAVFoundationObjC::MediaPlayerPrivateAVFoundationObjC): Register with the playerToPrivateMap.
      (WebCore::MediaPlayerPrivateAVFoundationObjC::~MediaPlayerPrivateAVFoundationObjC): Unregister from same.
      (WebCore::MediaPlayerPrivateAVFoundationObjC::shouldWaitForLoadingOfResource): Also send keyNeeded event in ENCRYPTED_MEDIA_V2.
      (WebCore::MediaPlayerPrivateAVFoundationObjC::extractKeyURIKeyIDAndCertificateFromInitData): Convert this
          method from file-static to class static.
      (WebCore::MediaPlayerPrivateAVFoundationObjC::takeRequestForPlayerAndKeyURI): Pull the AVAssetResourceLoadingRequest
          from m_keyURIToRequestMap and return it, if present.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@143259 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      424dbe61
  6. 15 Feb, 2013 1 commit
    • jer.noble@apple.com's avatar
      Add a CDMClient class which allows the CDM to query for the currently attached MediaPlayer. · 298de098
      jer.noble@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=109702
      
      Reviewed by Eric Carlson.
      
      Some CDM implementations will need to work closely with an associated
      MediaPlayer in order to generate key requests and provide keys. Add a
      client protocol to be implemented by the MediaKeys object which can
      provide access to the associated MediaPlayer if present.
      
      * Modules/encryptedmedia/CDM.cpp:
      (WebCore::CDM::CDM): Initialize the m_client ivar.
      (WebCore::CDM::mediaPlayer): Pass to the client, if present.
      * Modules/encryptedmedia/CDM.h:
      (WebCore::CDM::client): Simple getter.
      (WebCore::CDM::setClient): Simple setter.
      * Modules/encryptedmedia/MediaKeys.cpp:
      (WebCore::MediaKeys::MediaKeys): Initialize the m_mediaElement ivar
          and call setClient() on the passed in CDM.
      (WebCore::MediaKeys::setMediaElement): Simple setter.
      (WebCore::MediaKeys::cdmMediaPlayer): Retrieve the MediaPlayer from
          the m_mediaElement if present.
      * Modules/encryptedmedia/MediaKeys.h:
      * html/HTMLMediaElement.cpp:
      (WebCore::HTMLMediaElement::~HTMLMediaElement): Call setMediaKeys(0)
          to clear the mediaElement in any associated MediaKeys.
      (WebCore::HTMLMediaElement::setMediaKeys): Clear the mediaElement on
          any associated MediaKeys, and set the mediaElement on the newly
          associated MediaKeys.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@143072 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      298de098
  7. 14 Feb, 2013 1 commit
    • jer.noble@apple.com's avatar
      EME: replace MediaKeySession.addKey() -> update() · cdfdba8b
      jer.noble@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=109461
      
      Source/WebCore:
      
      Reviewed by Eric Carlson.
      
      No new tests; updated media/encrypted-media/encrypted-media-v2-syntax.html test.
      
      In the latest draft of the Encrypted Media Spec, the addKeys() method has been replaced
      with update().
      
      * Modules/encryptedmedia/CDM.h:
      * Modules/encryptedmedia/MediaKeySession.cpp:
      (WebCore::MediaKeySession::update):
      (WebCore::MediaKeySession::addKeyTimerFired):
      * Modules/encryptedmedia/MediaKeySession.h:
      * Modules/encryptedmedia/MediaKeySession.idl:
      * html/HTMLMediaElement.cpp:
      (WebCore::HTMLMediaElement::webkitAddKey):
      * testing/MockCDM.cpp:
      (WebCore::MockCDMSession::update):
      
      LayoutTests:
      
      Rebaseline after API change.
      
      Reviewed by Eric Carlson.
      
      * media/encrypted-media/encrypted-media-v2-syntax-expected.txt:
      * media/encrypted-media/encrypted-media-v2-syntax.html:
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142918 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      cdfdba8b
  8. 08 Feb, 2013 1 commit
    • jer.noble@apple.com's avatar
      Bring WebKit up to speed with latest Encrypted Media spec. · 09c10fbf
      jer.noble@apple.com authored
      https://bugs.webkit.org/show_bug.cgi?id=97037
      
      Reviewed by Eric Carlson.
      
      Source/JavaScriptCore:
      
      Define the ENABLE_ENCRYPTED_MEDIA_V2 setting.
      
      * Configurations/FeatureDefines.xcconfig:
      
      Source/WebCore:
      
      The most recent version of the Encrypted Media Extensions spec breaks functionality out of the
      HTMLMediaElement and into new MediaKeys and MediaKeySession classes. Since the CDM functionality
      has been pulled out of the media element, we create a proxy CDM class and factory system for
      creating specific CDM key system implementations. The spec also breaks out MediaKeyEvent
      into distinct event classes, MediaKeyNeededEvent and MediaKeyMessageEvent, for needkey and
      keymessage events, respectively.
      
      Tests: media/encrypted-media/encrypted-media-v2-events.html
             media/encrypted-media/encrypted-media-v2-syntax.html
      
      CDM is a proxy class (a la MediaPlayer) for a specific CDMPrivateInterface implementation. A CDM
      implementation is registered with the CDMFactory and will be created if that implementation supports
      the key system passed into the MediaKeys constructor. CDMSession is a pure-virtual interface exposed
      by concrete CDMPrivate subclasses.  Its lifetime is owned by MediaKeySession.
      * Modules/encryptedmedia/CDM.cpp: Added.
      (WebCore::installedCDMFactories): Initialize all the known CDM subtypes. Ports will add CDM implementations here.
      (WebCore::CDM::registerCDMFactory): Registers a new CDMFactory using the passed in function pointers.
      (WebCore::CDMFactoryForKeySystem): Return the first CDM factory which supports the requested key system.
      (WebCore::CDM::supportsKeySystem): Walk the installed CDMs and ask if the given key system is supported.
      (WebCore::CDM::supportsKeySystemMIMETypeAndCodec): Ditto, with an additional MIME type and codec string.
      (WebCore::CDM::create): Simple constructor wrapper.
      (WebCore::CDM::CDM): Simple constructor; calls bestCDMForKeySystem() to create it's private implementation.
      (WebCore::CDM::~CDM): Simple destructor.
      (WebCore::CDM::createSession): Creates a new CDMSession.
      * Modules/encryptedmedia/CDM.h: Added.
      (WebCore::CDM::keySystem): Simple accessor for m_keySystem.
      (WebCore::CDMSession::CDMSession): Simple constructor.
      (WebCore::CDMSession::~CDMSession): Simple destructor.
      * Modules/encryptedmedia/CDMPrivate.h: Added.
      (WebCore::CDMPrivateInterface::CDMPrivateInterface): Simple constructor.
      (WebCore::CDMPrivateInterface::~CDMPrivateInterface): Simple destructor.
      
      The new classes, MediaKeyMessageEvent and MediaKeyNeededEvent, take distinct subsets of the initializers of
      the original MediaKeyMessageEvent.
      * Modules/encryptedmedia/MediaKeyMessageEvent.cpp: Copied from Source/WebCore/html/MediaKeyEvent.cpp.
      (WebCore::MediaKeyMessageEventInit::MediaKeyMessageEventInit): Initializer now only takes message and destinationURL
          parameters.
      (WebCore::MediaKeyMessageEvent::MediaKeyMessageEvent): Simple constructor.
      (WebCore::MediaKeyMessageEvent::~MediaKeyMessageEvent): Simple destructor.
      (WebCore::MediaKeyMessageEvent::interfaceName): Standard interfaceName.
      * Modules/encryptedmedia/MediaKeyMessageEvent.h: Copied from Source/WebCore/html/MediaKeyEvent.h.
      (WebCore::MediaKeyMessageEvent::create): Simple construction wrapper.
      (WebCore::MediaKeyMessageEvent::message): Simple accessor for m_message.
      (WebCore::MediaKeyMessageEvent::destinationURL): Simple accessor for m_destinationURL.
      * Modules/encryptedmedia/MediaKeyMessageEvent.idl: Copied from Source/WebCore/html/MediaKeyEvent.idl.
      * Modules/encryptedmedia/MediaKeyNeededEvent.cpp: Copied from Source/WebCore/html/MediaKeyEvent.h.
      (WebCore::MediaKeyNeededEventInit::MediaKeyNeededEventInit): Initializer now only takes initData parameter.
      (WebCore::MediaKeyNeededEvent::MediaKeyNeededEvent): Simple constructor.
      (WebCore::MediaKeyNeededEvent::~MediaKeyNeededEvent): Simple destructor.
      (WebCore::MediaKeyNeededEvent::interfaceName): Standard interfaceName.
      * Modules/encryptedmedia/MediaKeyNeededEvent.h: Copied from Source/WebCore/html/MediaKeyEvent.h.
      (WebCore::MediaKeyNeededEvent::create): Simple construction wrapper.
      (WebCore::MediaKeyNeededEvent::initData): Simple accessor for m_initData.
      * Modules/encryptedmedia/MediaKeyNeededEvent.idl: Copied from Source/WebCore/html/MediaKeyEvent.idl.
      
      MediaKeySession is a new class that maps keys and key requests to a given session ID:
      * Modules/encryptedmedia/MediaKeySession.cpp: Added.
      (WebCore::MediaKeySession::create): Simple construction wrapper.
      (WebCore::MediaKeySession::MediaKeySession): Simple constructor.
      (WebCore::MediaKeySession::~MediaKeySession): Simple destructor; calls close().
      (WebCore::MediaKeySession::setError): Simple setter for m_error;
      (WebCore::MediaKeySession::close): Tell the CDM to clear any saved session keys.
      (WebCore::MediaKeySession::generateKeyRequest): Start a one-shot timer, handled in keyRequestTimerFired.
      (WebCore::MediaKeySession::keyRequestTimerFired): Follow the steps in the spec; ask the CDM to generate a key request.
      (WebCore::MediaKeySession::addKey): Start a one-shot timer, handled in addKeyTimerFired.
      (WebCore::MediaKeySession::addKeyTimerFired): Follow the steps in the spec; provide the key data to the CDM.
      * Modules/encryptedmedia/MediaKeySession.h: Added.
      (WebCore::MediaKeySession::keySystem): Simple accessor for m_keySystem.
      (WebCore::MediaKeySession::sessionId): Simple accessor for m_sessionId.
      (WebCore::MediaKeySession::error): Simple accessor for m_error;
      * Modules/encryptedmedia/MediaKeySession.idl:
      
      MediaKeySession inherits from EventTarget, and must override the pure virtual functions in that class:
      * Modules/encryptedmedia/MediaKeySession.cpp: Added.
      (WebCore::MediaKeySession::interfaceName):
      * Modules/encryptedmedia/MediaKeySession.h: Added.
      (WebCore::MediaKeySession::refEventTarget):
      (WebCore::MediaKeySession::derefEventTarget):
      (WebCore::MediaKeySession::eventTargetData):
      (WebCore::MediaKeySession::ensureEventTargetData):
      (WebCore::MediaKeySession::scriptExecutionContext):
      
      MediaKeys is a new class that encapsulates a CDM and a number of key sessions:
      * Modules/encryptedmedia/MediaKeys.cpp: Added.
      (WebCore::MediaKeys::create): Throw an exception if the key system parameter is unsupported; create a CDM object
          and a new MediaKeys session.
      (WebCore::MediaKeys::MediaKeys): Simple constructor.
      (WebCore::MediaKeys::~MediaKeys): Simple destructor.
      (WebCore::MediaKeys::createSession): Follow the spec and create a new key session.
      * Modules/encryptedmedia/MediaKeys.h: Added.
      * Modules/encryptedmedia/MediaKeys.idl: Copied from Source/WebCore/html/MediaError.idl.
      
      Provide a new interface to HTMLMediaElement for MediaPlayer which does not require a sessionId or a key system:
      * html/HTMLMediaElement.cpp:
      (WebCore::HTMLMediaElement::mediaPlayerKeyNeeded):
      * platform/graphics/MediaPlayer.cpp:
      (WebCore::MediaPlayer::keyNeeded):
      
      MediaKeyError now has a systemCode parameter and member variable.
      * html/MediaKeyError.h:
      (WebCore::MediaKeyError::create): Take a systemCode parameter with a default (0) value.
      (WebCore::MediaKeyError::MediaKeyError): Ditto.
      (WebCore::MediaKeyError::systemCode): Simple accessor for m_systemCode.
      * html/MediaKeyError.idl:
      
      Add new methods to HTMLMediaElement to support MediaKeys. Support different initializer
      for the MediaKeyNeededEvent.
      * html/HTMLMediaElement.cpp:
      (WebCore::HTMLMediaElement::setMediaKeys): Simple setter for m_mediaKeys.
      (WebCore::HTMLMediaElement::mediaPlayerKeyNeeded): This version takes fewer parameters
          than the deprecated version.
      * html/HTMLMediaElement.h:
      (WebCore::HTMLMediaElement::mediaKeys): Simple accessor for m_mediaKeys.
      * html/HTMLMediaElement.idl: Add the mediaKeys attribute.
      
      Add an ENABLE(ENCRYPTED_MEDIA_V2) check to the existing ENABLE(ENCRYPTED_MEDIA) one:
      * html/MediaError.h:
      * html/MediaError.idl:
      * platform/graphics/MediaPlayer.cpp:
      (WebCore::bestMediaEngineForTypeAndCodecs):
      (WebCore::MediaPlayer::supportsType):
      * platform/graphics/MediaPlayer.h:
      (WebCore::MediaPlayer::keyNeeded): This version takes fewer parameters than the
          deprecated version.
      
      Support the new version of canPlayType which takes an extra parameter:
      * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.h:
      * platform/graphics/avfoundation/objc/MediaPlayerPrivateAVFoundationObjC.mm:
      (WebCore::MediaPlayerPrivateAVFoundationObjC::registerMediaEngine):
      (WebCore::MediaPlayerPrivateAVFoundationObjC::extendedSupportsType):
      * platform/graphics/mac/MediaPlayerPrivateQTKit.h:
      * platform/graphics/mac/MediaPlayerPrivateQTKit.mm:
      (WebCore::MediaPlayerPrivateQTKit::registerMediaEngine):
      (WebCore::MediaPlayerPrivateQTKit::extendedSupportsType):
      
      Add a mock CDM for use within DRT and WKTR to test the MediaKeys and MediaKeySession
      APIs and events:
      * testing/Internals.cpp:
      (WebCore::Internals::initializeMockCDM): Add the MockCDM class to the CDM factories.
      * testing/Internals.h:
      * testing/Internals.idl: Add the initializeMockCDM() method.
      * testing/MockCDM.cpp: Added.
      (WebCore::MockCDM::supportsKeySystem): Only supports the 'com.webcore.mock' key system.
      (WebCore::MockCDM::supportsMIMEType): Only supports the 'video/mock' mime type.
      (WebCore::initDataPrefix): Static method which returns a Uint8Array containing 'mock'.
      (WebCore::keyPrefix): Static method which returns a Uint8Array containing 'key'.
      (WebCore::keyRequest): Static method which returns a Uint8Array containing 'request'.
      (WebCore::generateSessionId): Return a monotonically increasing number.
      (WebCore::MockCDMSession::MockCDMSession): Simple constructor.
      (WebCore::MockCDMSession::generateKeyRequest): Ignores the parameters and returns a keyRequest() array.
      (WebCore::MockCDMSession::releaseKeys): No-op.
      (WebCore::MockCDMSession::addKey): Checks that the key starts with the keyPrefix() array.
      * testing/MockCDM.h: Added.
      (WebCore::MockCDM::create):
      (WebCore::MockCDM::~MockCDM): Simple destructor.
      (WebCore::MockCDM::MockCDM): Simple constructor.
      
      Add the new classes to the built system:
      * Configurations/FeatureDefines.xcconfig:
      * DerivedSources.make:
      * WebCore.exp.in:
      * WebCore.xcodeproj/project.pbxproj:
      
      Miscelaneous changes:
      * dom/EventNames.in: Add the two new event types, MediaKeyMessageEvent and MediaKeyNeededEvent.
      * dom/EventTargetFactory.in: Add the new EventTarget, MediaKeySession.
      * page/DOMWindow.idl: Add constructors for the new classes to the window object.
      
      Source/WTF:
      
      Define the ENABLE_ENCRYPTED_MEDIA_V2 setting.
      
      * wtf/Platform.h:
      
      LayoutTests:
      
      Added new tests for the updated Encrypted Media Extensions spec.
      
      * media/encrypted-media/encrypted-media-v2-events-expected.txt: Added.
      * media/encrypted-media/encrypted-media-v2-events.html: Added.
      * media/encrypted-media/encrypted-media-v2-syntax-expected.txt: Added.
      * media/encrypted-media/encrypted-media-v2-syntax.html: Added.
      * platform/Chromium/TestExpectations: Skip the new media/encrypted-media/ v2 tests.
      * platform/mac/media/encrypted-media/encrypted-media-can-play-type-expected.txt: Added.
      
      git-svn-id: http://svn.webkit.org/repository/webkit/trunk@142327 268f45cc-cd09-0410-ab3c-d52691b4dbfc
      09c10fbf