https://bugs.webkit.org/show_bug.cgi?id=122281
Before changing the JSC bindings generator to enforce WebIDL operations to be configurable, all the
interfaces are being annotated with the OperationsNotDeletable attribute. The attribute currently
doesn't have any effect, but will keep the operations not configurable after the generator is modified
to preserve the original behavior. The attribute will be removed from each interface after checking
conformity with other browsers (in terms of configurability of operations of that interface) and the
WebKit's existing test suites.
This patch covers IDL interfaces under Source/WebCore/Modules/.
* Modules/battery/BatteryManager.idl:
* Modules/encryptedmedia/MediaKeySession.idl:
* Modules/encryptedmedia/MediaKeys.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/IDBTransaction.idl:
* Modules/indexeddb/IDBVersionChangeEvent.idl:
* Modules/mediacontrols/MediaControlsHost.idl:
* Modules/mediasource/MediaSource.idl:
* Modules/mediasource/SourceBuffer.idl:
* Modules/mediasource/SourceBufferList.idl:
* Modules/mediasource/WebKitMediaSource.idl:
* Modules/mediasource/WebKitSourceBuffer.idl:
* Modules/mediasource/WebKitSourceBufferList.idl:
* Modules/mediastream/MediaStream.idl:
* Modules/mediastream/MediaStreamTrack.idl:
* Modules/mediastream/RTCDTMFSender.idl:
* Modules/mediastream/RTCDataChannel.idl:
* Modules/mediastream/RTCPeerConnection.idl:
* Modules/mediastream/RTCStatsReport.idl:
* Modules/mediastream/RTCStatsResponse.idl:
* Modules/networkinfo/NetworkInfoConnection.idl:
* Modules/notifications/Notification.idl:
* Modules/notifications/NotificationCenter.idl:
* Modules/proximity/DeviceProximityEvent.idl:
* Modules/quota/StorageInfo.idl:
* Modules/quota/StorageQuota.idl:
* Modules/speech/SpeechGrammarList.idl:
* Modules/speech/SpeechRecognition.idl:
* Modules/speech/SpeechRecognitionResult.idl:
* Modules/speech/SpeechRecognitionResultList.idl:
* Modules/speech/SpeechSynthesis.idl:
* Modules/webaudio/AnalyserNode.idl:
* Modules/webaudio/AudioBuffer.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/OscillatorNode.idl:
* Modules/webaudio/PannerNode.idl:
* Modules/webdatabase/Database.idl:
* Modules/webdatabase/DatabaseSync.idl:
* Modules/webdatabase/SQLResultSetRowList.idl:
* Modules/webdatabase/SQLTransaction.idl:
* Modules/webdatabase/SQLTransactionSync.idl:
* Modules/websockets/WebSocket.idl:
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@157001
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2013-10-06 Zan Dobersek <zdobersek@igalia.com>
+
+ [WebIDL] Annotate IDL interfaces under Source/WebCore/Modules/ with the OperationsNotDeletable attribute
+ https://bugs.webkit.org/show_bug.cgi?id=122281
+
+ Before changing the JSC bindings generator to enforce WebIDL operations to be configurable, all the
+ interfaces are being annotated with the OperationsNotDeletable attribute. The attribute currently
+ doesn't have any effect, but will keep the operations not configurable after the generator is modified
+ to preserve the original behavior. The attribute will be removed from each interface after checking
+ conformity with other browsers (in terms of configurability of operations of that interface) and the
+ WebKit's existing test suites.
+
+ This patch covers IDL interfaces under Source/WebCore/Modules/.
+
+ * Modules/battery/BatteryManager.idl:
+ * Modules/encryptedmedia/MediaKeySession.idl:
+ * Modules/encryptedmedia/MediaKeys.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/IDBTransaction.idl:
+ * Modules/indexeddb/IDBVersionChangeEvent.idl:
+ * Modules/mediacontrols/MediaControlsHost.idl:
+ * Modules/mediasource/MediaSource.idl:
+ * Modules/mediasource/SourceBuffer.idl:
+ * Modules/mediasource/SourceBufferList.idl:
+ * Modules/mediasource/WebKitMediaSource.idl:
+ * Modules/mediasource/WebKitSourceBuffer.idl:
+ * Modules/mediasource/WebKitSourceBufferList.idl:
+ * Modules/mediastream/MediaStream.idl:
+ * Modules/mediastream/MediaStreamTrack.idl:
+ * Modules/mediastream/RTCDTMFSender.idl:
+ * Modules/mediastream/RTCDataChannel.idl:
+ * Modules/mediastream/RTCPeerConnection.idl:
+ * Modules/mediastream/RTCStatsReport.idl:
+ * Modules/mediastream/RTCStatsResponse.idl:
+ * Modules/networkinfo/NetworkInfoConnection.idl:
+ * Modules/notifications/Notification.idl:
+ * Modules/notifications/NotificationCenter.idl:
+ * Modules/proximity/DeviceProximityEvent.idl:
+ * Modules/quota/StorageInfo.idl:
+ * Modules/quota/StorageQuota.idl:
+ * Modules/speech/SpeechGrammarList.idl:
+ * Modules/speech/SpeechRecognition.idl:
+ * Modules/speech/SpeechRecognitionResult.idl:
+ * Modules/speech/SpeechRecognitionResultList.idl:
+ * Modules/speech/SpeechSynthesis.idl:
+ * Modules/webaudio/AnalyserNode.idl:
+ * Modules/webaudio/AudioBuffer.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/OscillatorNode.idl:
+ * Modules/webaudio/PannerNode.idl:
+ * Modules/webdatabase/Database.idl:
+ * Modules/webdatabase/DatabaseSync.idl:
+ * Modules/webdatabase/SQLResultSetRowList.idl:
+ * Modules/webdatabase/SQLTransaction.idl:
+ * Modules/webdatabase/SQLTransactionSync.idl:
+ * Modules/websockets/WebSocket.idl:
+
2013-10-06 Andreas Kling <akling@apple.com>
Tighten AbstractWorker and subclasses a bit.
NoInterfaceObject,
Conditional=BATTERY_STATUS,
ActiveDOMObject,
- EventTarget
- ] interface BatteryManager {
+ EventTarget,
+ OperationsNotDeletable
+] interface BatteryManager {
readonly attribute boolean charging;
readonly attribute double chargingTime;
readonly attribute double dischargingTime;
[
Conditional=ENCRYPTED_MEDIA_V2,
EventTarget,
- InterfaceName=WebKitMediaKeySession
+ InterfaceName=WebKitMediaKeySession,
+ OperationsNotDeletable
] interface MediaKeySession {
// error state
readonly attribute MediaKeyError error;
Conditional=ENCRYPTED_MEDIA_V2,
Constructor(DOMString keySystem),
ConstructorRaisesException,
- InterfaceName=WebKitMediaKeys
+ InterfaceName=WebKitMediaKeys,
+ OperationsNotDeletable
] interface MediaKeys {
[CallWith=ScriptExecutionContext, RaisesException] MediaKeySession createSession([Default=Undefined] optional DOMString type, [Default=Undefined] optional Uint8Array initData);
[
NoInterfaceObject,
Conditional=GAMEPAD,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface GamepadList {
readonly attribute unsigned long length;
getter Gamepad item([Default=Undefined] optional unsigned long index);
NoInterfaceObject,
Conditional=GEOLOCATION,
GenerateIsReachable=ImplFrame,
+ OperationsNotDeletable
] interface Geolocation {
[Custom] void getCurrentPosition(PositionCallback successCallback,
optional PositionErrorCallback errorCallback,
[
Conditional=INDEXED_DATABASE,
- JSNoStaticTables
+ JSNoStaticTables,
+ OperationsNotDeletable
] interface IDBCursor {
readonly attribute IDBAny source;
readonly attribute DOMString direction;
EventTarget,
JSNoStaticTables,
JSGenerateToJSObject,
- JSGenerateToNativeObject
+ JSGenerateToNativeObject,
+ OperationsNotDeletable
] interface IDBDatabase : EventTarget {
readonly attribute DOMString name;
readonly attribute unsigned long long version;
[
Conditional=INDEXED_DATABASE,
JSNoStaticTables,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface IDBFactory {
[CallWith=ScriptExecutionContext, RaisesException] IDBOpenDBRequest open(DOMString name, [EnforceRange] optional unsigned long long version);
[CallWith=ScriptExecutionContext, RaisesException] IDBOpenDBRequest deleteDatabase(DOMString name);
[
Conditional=INDEXED_DATABASE,
JSNoStaticTables,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface IDBIndex {
readonly attribute DOMString name;
readonly attribute IDBObjectStore objectStore;
[
Conditional=INDEXED_DATABASE,
JSNoStaticTables,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface IDBKeyRange {
[ImplementedAs=lowerValue,CallWith=ScriptExecutionContext] readonly attribute any lower;
[ImplementedAs=upperValue,CallWith=ScriptExecutionContext] readonly attribute any upper;
[
Conditional=INDEXED_DATABASE,
JSNoStaticTables,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface IDBObjectStore {
[TreatReturnedNullStringAs=Null] readonly attribute DOMString name;
[ImplementedAs=keyPathAny] readonly attribute IDBAny keyPath;
EventTarget,
JSNoStaticTables,
JSGenerateToJSObject,
- JSGenerateToNativeObject
+ JSGenerateToNativeObject,
+ OperationsNotDeletable
] interface IDBTransaction : EventTarget {
readonly attribute DOMString mode;
readonly attribute IDBDatabase db;
[
Conditional=INDEXED_DATABASE,
- JSNoStaticTables
+ JSNoStaticTables,
+ OperationsNotDeletable
] interface IDBVersionChangeEvent : Event {
readonly attribute unsigned long long oldVersion;
readonly attribute unsigned long long? newVersion;
[
NoInterfaceObject,
Conditional=MEDIA_CONTROLS_SCRIPT,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface MediaControlsHost {
TextTrack[] sortedTrackListForMenu(TextTrackList trackList);
DOMString displayNameForTrack(TextTrack track);
EventTarget,
JSGenerateToNativeObject,
Constructor,
- ConstructorCallWith=ScriptExecutionContext
+ ConstructorCallWith=ScriptExecutionContext,
+ OperationsNotDeletable
] interface MediaSource : EventTarget {
// All the source buffers created by this object.
readonly attribute SourceBufferList sourceBuffers;
NoInterfaceObject,
ActiveDOMObject,
EventTarget,
- JSGenerateToNativeObject
+ JSGenerateToNativeObject,
+ OperationsNotDeletable
] interface SourceBuffer : EventTarget {
readonly attribute boolean updating;
NoInterfaceObject,
EventTarget,
JSGenerateToNativeObject,
- CallWith=ScriptExecutionContext
+ CallWith=ScriptExecutionContext,
+ OperationsNotDeletable
] interface SourceBufferList : EventTarget {
readonly attribute unsigned long length;
getter SourceBuffer item(unsigned long index);
EventTarget,
JSGenerateToNativeObject,
Constructor,
- ConstructorCallWith=ScriptExecutionContext
+ ConstructorCallWith=ScriptExecutionContext,
+ OperationsNotDeletable
] interface WebKitMediaSource : EventTarget {
// All the source buffers created by this object.
readonly attribute WebKitSourceBufferList sourceBuffers;
*/
[
- Conditional=MEDIA_SOURCE
+ Conditional=MEDIA_SOURCE,
+ OperationsNotDeletable
] interface WebKitSourceBuffer {
// Returns the time ranges buffered.
[
Conditional=MEDIA_SOURCE,
EventTarget,
- JSGenerateToNativeObject
+ JSGenerateToNativeObject,
+ OperationsNotDeletable
] interface WebKitSourceBufferList : EventTarget {
readonly attribute unsigned long length;
getter WebKitSourceBuffer item(unsigned long index);
Constructor(MediaStream stream),
Constructor(MediaStreamTrack[] tracks),
ConstructorCallWith=ScriptExecutionContext,
- InterfaceName=webkitMediaStream
+ InterfaceName=webkitMediaStream,
+ OperationsNotDeletable
] interface MediaStream {
readonly attribute DOMString id;
Conditional=MEDIA_STREAM,
EventTarget,
ActiveDOMObject,
- SkipVTableValidation
+ SkipVTableValidation,
+ OperationsNotDeletable
] interface MediaStreamTrack {
readonly attribute DOMString kind;
readonly attribute DOMString id;
NoInterfaceObject,
Conditional=MEDIA_STREAM,
ActiveDOMObject,
- EventTarget
+ EventTarget,
+ OperationsNotDeletable
] interface RTCDTMFSender {
readonly attribute boolean canInsertDTMF;
readonly attribute MediaStreamTrack track;
[
NoInterfaceObject,
Conditional=MEDIA_STREAM,
- EventTarget
+ EventTarget,
+ OperationsNotDeletable
] interface RTCDataChannel {
readonly attribute DOMString label;
readonly attribute boolean ordered;
ConstructorRaisesException,
ConstructorCallWith=ScriptExecutionContext,
EventTarget,
- InterfaceName=webkitRTCPeerConnection
+ InterfaceName=webkitRTCPeerConnection,
+ OperationsNotDeletable
] interface RTCPeerConnection {
[RaisesException] void createOffer(RTCSessionDescriptionCallback successCallback, [Default=Undefined] optional RTCErrorCallback failureCallback, optional Dictionary mediaConstraints);
[
NoInterfaceObject,
Conditional=MEDIA_STREAM,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface RTCStatsReport {
readonly attribute Date timestamp;
readonly attribute DOMString id;
[
NoInterfaceObject,
- Conditional=MEDIA_STREAM
+ Conditional=MEDIA_STREAM,
+ OperationsNotDeletable
] interface RTCStatsResponse {
sequence<RTCStatsReport> result();
getter RTCStatsReport namedItem([Default=Undefined] optional DOMString name);
NoInterfaceObject,
Conditional=NETWORK_INFO,
ActiveDOMObject,
- EventTarget
+ EventTarget,
+ OperationsNotDeletable
] interface NetworkInfoConnection {
readonly attribute double bandwidth;
readonly attribute boolean metered;
#if defined(ENABLE_NOTIFICATIONS) && ENABLE_NOTIFICATIONS
Constructor(DOMString title, [Default=Undefined] optional Dictionary options),
ConstructorCallWith=ScriptExecutionContext,
-#else
#endif
+ OperationsNotDeletable,
] interface Notification {
void show();
#if defined(ENABLE_LEGACY_NOTIFICATIONS) && ENABLE_LEGACY_NOTIFICATIONS
NoInterfaceObject,
Conditional=LEGACY_NOTIFICATIONS,
ActiveDOMObject,
+ OperationsNotDeletable
] interface NotificationCenter {
[RaisesException] Notification createNotification(DOMString iconUrl, DOMString title, DOMString body);
[
Conditional=PROXIMITY_EVENTS,
- ConstructorTemplate=Event
+ ConstructorTemplate=Event,
+ OperationsNotDeletable
] interface DeviceProximityEvent : Event {
[InitializedByEventConstructor] readonly attribute double value;
[InitializedByEventConstructor] readonly attribute double min;
[
NoInterfaceObject,
Conditional=QUOTA,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface StorageInfo {
const unsigned short TEMPORARY = 0;
const unsigned short PERSISTENT = 1;
[
NoInterfaceObject,
Conditional=QUOTA,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface StorageQuota {
[CallWith=ScriptExecutionContext] void queryUsageAndQuota(StorageUsageCallback usageCallback, optional StorageErrorCallback errorCallback);
[CallWith=ScriptExecutionContext] void requestQuota(unsigned long long newQuotaInBytes, optional StorageQuotaCallback quotaCallback, optional StorageErrorCallback errorCallback);
Conditional=SCRIPTED_SPEECH,
Constructor,
ImplementationLacksVTable,
- InterfaceName=webkitSpeechGrammarList
+ InterfaceName=webkitSpeechGrammarList,
+ OperationsNotDeletable
] interface SpeechGrammarList {
readonly attribute unsigned long length;
getter SpeechGrammar item([IsIndex] unsigned long index);
Constructor,
ConstructorCallWith=ScriptExecutionContext,
EventTarget,
- InterfaceName=webkitSpeechRecognition
+ InterfaceName=webkitSpeechRecognition,
+ OperationsNotDeletable
] interface SpeechRecognition {
attribute SpeechGrammarList grammars;
attribute DOMString lang;
[
NoInterfaceObject,
Conditional=SCRIPTED_SPEECH,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface SpeechRecognitionResult {
readonly attribute unsigned long length;
getter SpeechRecognitionAlternative item([IsIndex] unsigned long index);
[
NoInterfaceObject,
Conditional=SCRIPTED_SPEECH,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface SpeechRecognitionResultList {
readonly attribute unsigned long length;
getter SpeechRecognitionResult item([IsIndex] unsigned long index);
[
NoInterfaceObject,
- Conditional=SPEECH_SYNTHESIS
+ Conditional=SPEECH_SYNTHESIS,
+ OperationsNotDeletable
] interface SpeechSynthesis {
readonly attribute boolean pending;
readonly attribute boolean speaking;
[
Conditional=WEB_AUDIO,
- JSGenerateToJSObject
+ JSGenerateToJSObject,
+ OperationsNotDeletable
] interface AnalyserNode : AudioNode {
[SetterRaisesException] attribute unsigned long fftSize;
readonly attribute unsigned long frequencyBinCount;
[
Conditional=WEB_AUDIO,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface AudioBuffer {
readonly attribute long length; // in sample-frames
readonly attribute float duration; // in seconds
// A cached (non-streamed), memory-resident audio source
[
Conditional=WEB_AUDIO,
- JSGenerateToJSObject
+ JSGenerateToJSObject,
+ OperationsNotDeletable
] interface AudioBufferSourceNode : AudioNode {
[CustomSetter, SetterRaisesException] attribute AudioBuffer buffer;
ActiveDOMObject,
CustomConstructor,
EventTarget,
- InterfaceName=webkitAudioContext
+ InterfaceName=webkitAudioContext,
+ OperationsNotDeletable
] interface AudioContext {
// All rendered audio ultimately connects to destination, which represents the audio hardware.
readonly attribute AudioDestinationNode destination;
[
Conditional=WEB_AUDIO,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface AudioListener {
attribute float dopplerFactor; // same as OpenAL (default 1.0)
attribute float speedOfSound; // in meters / second (default 343.3)
JSGenerateToJSObject,
JSGenerateToNativeObject,
GenerateIsReachable=Impl,
- EventTarget
+ EventTarget,
+ OperationsNotDeletable
] interface AudioNode : EventTarget {
readonly attribute AudioContext context;
readonly attribute unsigned long numberOfInputs;
*/
[
- Conditional=WEB_AUDIO
+ Conditional=WEB_AUDIO,
+ OperationsNotDeletable
] interface AudioParam {
attribute float value;
readonly attribute float minValue;
[
Conditional=WEB_AUDIO,
- JSGenerateToJSObject
+ JSGenerateToJSObject,
+ OperationsNotDeletable
] interface BiquadFilterNode : AudioNode {
// Filter type.
const unsigned short LOWPASS = 0;
// OscillatorNode is an audio generator of periodic waveforms.
[
Conditional=WEB_AUDIO,
- JSGenerateToJSObject
+ JSGenerateToJSObject,
+ OperationsNotDeletable
] interface OscillatorNode : AudioNode {
// Type constants.
[
Conditional=WEB_AUDIO,
JSGenerateToJSObject,
- InterfaceName=webkitAudioPannerNode
+ InterfaceName=webkitAudioPannerNode,
+ OperationsNotDeletable
] interface PannerNode : AudioNode {
// Panning model
const unsigned short EQUALPOWER = 0;
[
NoInterfaceObject,
Conditional=SQL_DATABASE,
- JSNoStaticTables
+ JSNoStaticTables,
+ OperationsNotDeletable
] interface Database {
readonly attribute DOMString version;
void changeVersion(DOMString oldVersion, DOMString newVersion, optional SQLTransactionCallback callback, optional SQLTransactionErrorCallback errorCallback, optional VoidCallback successCallback);
[
NoInterfaceObject,
Conditional=SQL_DATABASE,
- JSNoStaticTables
+ JSNoStaticTables,
+ OperationsNotDeletable
] interface DatabaseSync {
readonly attribute DOMString version;
readonly attribute DOMString lastErrorMessage;
NoInterfaceObject,
Conditional=SQL_DATABASE,
JSNoStaticTables,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface SQLResultSetRowList {
readonly attribute unsigned long length;
[Custom] any item(unsigned long index);
NoInterfaceObject,
Conditional=SQL_DATABASE,
JSNoStaticTables,
- SkipVTableValidation
+ SkipVTableValidation,
+ OperationsNotDeletable
] interface SQLTransaction {
[Custom] void executeSql(DOMString sqlStatement,
ObjectArray arguments,
NoInterfaceObject,
Conditional=SQL_DATABASE,
JSNoStaticTables,
- ImplementationLacksVTable
+ ImplementationLacksVTable,
+ OperationsNotDeletable
] interface SQLTransactionSync {
[Custom] SQLResultSet executeSql(DOMString sqlStatement, ObjectArray arguments);
};
ConstructorCallWith=ScriptExecutionContext,
EventTarget,
JSNoStaticTables,
+ OperationsNotDeletable
] interface WebSocket {
readonly attribute DOMString URL; // Lowercased .url is the one in the spec, but leaving .URL for compatibility reasons.
readonly attribute DOMString url;