Title: [266800] trunk/Source/WebCore
Revision
266800
Author
[email protected]
Date
2020-09-09 15:11:30 -0700 (Wed, 09 Sep 2020)

Log Message

[WebIDL] Stop automatically applying the ImplementedBy extended attribute to all partial interfaces/dictionaries
https://bugs.webkit.org/show_bug.cgi?id=216322

Reviewed by Darin Adler.

When partial interfaces were originally introduced, there were grand ambitions to modularize
and isolate parts of interfaces completely, mostly using the Supplemental<> pattern. As time
has passed, more and more specs have usedd partial just to group things together, and having
it implicitly mean using a class named after the IDL file with some static functions is not
always the right choice. With this change, partial interfaces that want the supplemental style
behavior must opt in, using the extended attribute "ImplementedBy", which is what the code
generators already called this concept internally.

* bindings/scripts/CodeGenerator.pm:
(ProcessInterfaceSupplementalDependencies):
(ProcessDictionarySupplementalDependencies):
* bindings/scripts/CodeGeneratorJS.pm:
(GetFullyQualifiedImplementationCallName):
(AddAdditionalArgumentsForImplementationCall):
* bindings/scripts/IDLAttributes.json:
Remove special casing of partial interfaces / dictionaries automatically getting "ImplementedBy"
applied to all members. Maintain the behavior that "ImplementedBy" is silently ignored when
an attribute has been marked as "Reflect".

* Modules/async-clipboard/NavigatorClipboard.idl:
* Modules/beacon/NavigatorBeacon.idl:
* Modules/cache/DOMWindowCaches.idl:
* Modules/cache/WorkerGlobalScopeCaches.idl:
* Modules/credentialmanagement/NavigatorCredentials.idl:
* Modules/encryptedmedia/NavigatorEME.idl:
* Modules/entriesapi/HTMLInputElementEntriesAPI.idl:
* Modules/fetch/DOMWindowFetch.idl:
* Modules/fetch/WorkerGlobalScopeFetch.idl:
* Modules/gamepad/NavigatorGamepad.idl:
* Modules/geolocation/NavigatorGeolocation.idl:
* Modules/indexeddb/DOMWindowIndexedDatabase.idl:
* Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl:
* Modules/mediacapabilities/NavigatorMediaCapabilities.idl:
* Modules/mediasession/HTMLMediaElementMediaSession.idl:
* Modules/mediasource/AudioTrackMediaSource.idl:
* Modules/mediasource/DOMURLMediaSource.idl:
* Modules/mediasource/TextTrackMediaSource.idl:
* Modules/mediasource/VideoTrackMediaSource.idl:
* Modules/mediastream/NavigatorMediaDevices.idl:
* Modules/pictureinpicture/DocumentPictureInPicture.idl:
* Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl:
* Modules/quota/DOMWindowQuota.idl:
* Modules/quota/NavigatorStorageQuota.idl:
* Modules/quota/WorkerNavigatorStorageQuota.idl:
* Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl:
* Modules/speech/DOMWindowSpeechSynthesis.idl:
* Modules/webdatabase/DOMWindowWebDatabase.idl:
* Modules/webdriver/NavigatorWebDriver.idl:
* Modules/webgpu/NavigatorGPU.idl:
* Modules/webgpu/WebGPUDeviceErrorScopes.idl:
* Modules/webgpu/WebGPUDeviceEventHandler.idl:
* Modules/webgpu/WorkerNavigatorGPU.idl:
* Modules/webxr/NavigatorWebXR.idl:
* css/DOMCSSPaintWorklet.idl:
* css/DOMCSSRegisterCustomProperty.idl:
* dom/DocumentFullscreen.idl:
* dom/DocumentStorageAccess.idl:
* dom/DocumentTouch.idl:
* page/NavigatorIsLoggedIn.idl:
* svg/SVGDocument.idl:
Update existing partials to opt into "ImplementedBy" bevahior. A future pass
will go through these and see which ones can be simplified by removing the
indirection without introducing unnecessary modularization changes.

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (266799 => 266800)


--- trunk/Source/WebCore/ChangeLog	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/ChangeLog	2020-09-09 22:11:30 UTC (rev 266800)
@@ -1,3 +1,74 @@
+2020-09-09  Sam Weinig  <[email protected]>
+
+        [WebIDL] Stop automatically applying the ImplementedBy extended attribute to all partial interfaces/dictionaries
+        https://bugs.webkit.org/show_bug.cgi?id=216322
+
+        Reviewed by Darin Adler.
+
+        When partial interfaces were originally introduced, there were grand ambitions to modularize
+        and isolate parts of interfaces completely, mostly using the Supplemental<> pattern. As time
+        has passed, more and more specs have usedd partial just to group things together, and having
+        it implicitly mean using a class named after the IDL file with some static functions is not
+        always the right choice. With this change, partial interfaces that want the supplemental style
+        behavior must opt in, using the extended attribute "ImplementedBy", which is what the code
+        generators already called this concept internally.
+
+        * bindings/scripts/CodeGenerator.pm:
+        (ProcessInterfaceSupplementalDependencies):
+        (ProcessDictionarySupplementalDependencies):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GetFullyQualifiedImplementationCallName):
+        (AddAdditionalArgumentsForImplementationCall):
+        * bindings/scripts/IDLAttributes.json:
+        Remove special casing of partial interfaces / dictionaries automatically getting "ImplementedBy"
+        applied to all members. Maintain the behavior that "ImplementedBy" is silently ignored when
+        an attribute has been marked as "Reflect".
+
+        * Modules/async-clipboard/NavigatorClipboard.idl:
+        * Modules/beacon/NavigatorBeacon.idl:
+        * Modules/cache/DOMWindowCaches.idl:
+        * Modules/cache/WorkerGlobalScopeCaches.idl:
+        * Modules/credentialmanagement/NavigatorCredentials.idl:
+        * Modules/encryptedmedia/NavigatorEME.idl:
+        * Modules/entriesapi/HTMLInputElementEntriesAPI.idl:
+        * Modules/fetch/DOMWindowFetch.idl:
+        * Modules/fetch/WorkerGlobalScopeFetch.idl:
+        * Modules/gamepad/NavigatorGamepad.idl:
+        * Modules/geolocation/NavigatorGeolocation.idl:
+        * Modules/indexeddb/DOMWindowIndexedDatabase.idl:
+        * Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl:
+        * Modules/mediacapabilities/NavigatorMediaCapabilities.idl:
+        * Modules/mediasession/HTMLMediaElementMediaSession.idl:
+        * Modules/mediasource/AudioTrackMediaSource.idl:
+        * Modules/mediasource/DOMURLMediaSource.idl:
+        * Modules/mediasource/TextTrackMediaSource.idl:
+        * Modules/mediasource/VideoTrackMediaSource.idl:
+        * Modules/mediastream/NavigatorMediaDevices.idl:
+        * Modules/pictureinpicture/DocumentPictureInPicture.idl:
+        * Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl:
+        * Modules/quota/DOMWindowQuota.idl:
+        * Modules/quota/NavigatorStorageQuota.idl:
+        * Modules/quota/WorkerNavigatorStorageQuota.idl:
+        * Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl:
+        * Modules/speech/DOMWindowSpeechSynthesis.idl:
+        * Modules/webdatabase/DOMWindowWebDatabase.idl:
+        * Modules/webdriver/NavigatorWebDriver.idl:
+        * Modules/webgpu/NavigatorGPU.idl:
+        * Modules/webgpu/WebGPUDeviceErrorScopes.idl:
+        * Modules/webgpu/WebGPUDeviceEventHandler.idl:
+        * Modules/webgpu/WorkerNavigatorGPU.idl:
+        * Modules/webxr/NavigatorWebXR.idl:
+        * css/DOMCSSPaintWorklet.idl:
+        * css/DOMCSSRegisterCustomProperty.idl:
+        * dom/DocumentFullscreen.idl:
+        * dom/DocumentStorageAccess.idl:
+        * dom/DocumentTouch.idl:
+        * page/NavigatorIsLoggedIn.idl:
+        * svg/SVGDocument.idl:
+        Update existing partials to opt into "ImplementedBy" bevahior. A future pass
+        will go through these and see which ones can be simplified by removing the
+        indirection without introducing unnecessary modularization changes.
+
 2020-09-09  Chris Dumez  <[email protected]>
 
         Move lazy DisplayLink tear down logic from the WebProcess to the UIProcess

Modified: trunk/Source/WebCore/Modules/async-clipboard/NavigatorClipboard.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/async-clipboard/NavigatorClipboard.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/async-clipboard/NavigatorClipboard.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,6 +25,7 @@
 
 [
     EnabledBySetting=AsyncClipboardAPI,
+    ImplementedBy=NavigatorClipboard
 ] partial interface Navigator {
     [SecureContext, SameObject] readonly attribute Clipboard clipboard;
 };

Modified: trunk/Source/WebCore/Modules/beacon/NavigatorBeacon.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/beacon/NavigatorBeacon.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/beacon/NavigatorBeacon.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -27,6 +27,7 @@
 
 [
     EnabledBySetting=BeaconAPI,
+    ImplementedBy=NavigatorBeacon
 ] partial interface Navigator {
     [CallWith=Document, MayThrowException] boolean sendBeacon(USVString url, optional BodyInit? data = ""
 };

Modified: trunk/Source/WebCore/Modules/cache/DOMWindowCaches.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/cache/DOMWindowCaches.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/cache/DOMWindowCaches.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,6 +25,7 @@
 
 [
     EnabledAtRuntime=CacheAPI,
+    ImplementedBy=DOMWindowCaches
 ] partial interface DOMWindow {
     [CallWith=ScriptExecutionContext, MayThrowException, SecureContext, SameObject] readonly attribute DOMCacheStorage caches;
 };

Modified: trunk/Source/WebCore/Modules/cache/WorkerGlobalScopeCaches.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/cache/WorkerGlobalScopeCaches.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/cache/WorkerGlobalScopeCaches.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,6 +25,7 @@
 
 [
     EnabledAtRuntime=CacheAPI,
+    ImplementedBy=WorkerGlobalScopeCaches
 ] partial interface WorkerGlobalScope {
     [SecureContext, SameObject] readonly attribute DOMCacheStorage caches;
 };

Modified: trunk/Source/WebCore/Modules/credentialmanagement/NavigatorCredentials.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/credentialmanagement/NavigatorCredentials.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/credentialmanagement/NavigatorCredentials.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -27,6 +27,7 @@
 [
     Conditional=WEB_AUTHN,
     EnabledBySetting=WebAuthentication,
+    ImplementedBy=NavigatorCredentials
 ] partial interface Navigator {
     [SecureContext, SameObject] readonly attribute CredentialsContainer credentials;
 };

Modified: trunk/Source/WebCore/Modules/encryptedmedia/NavigatorEME.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/encryptedmedia/NavigatorEME.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/encryptedmedia/NavigatorEME.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -30,6 +30,7 @@
     Conditional=ENCRYPTED_MEDIA,
     EnabledBySetting=EncryptedMediaAPI,
     DisabledByQuirk=hasBrokenEncryptedMediaAPISupport,
+    ImplementedBy=NavigatorEME
 ] partial interface Navigator {
     [CallWith=Document] Promise<MediaKeySystemAccess> requestMediaKeySystemAccess(DOMString keySystem, sequence<MediaKeySystemConfiguration> supportedConfiguration);
 };

Modified: trunk/Source/WebCore/Modules/entriesapi/HTMLInputElementEntriesAPI.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/entriesapi/HTMLInputElementEntriesAPI.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/entriesapi/HTMLInputElementEntriesAPI.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,6 +26,7 @@
 // https://wicg.github.io/entries-api/#dom-htmlinputelement-webkitdirectory
 [
     EnabledAtRuntime=DirectoryUpload,
+    ImplementedBy=HTMLInputElementEntriesAPI
 ] partial interface HTMLInputElement {
     [Reflect] attribute boolean webkitdirectory;
     [CachedAttribute, CallWith=ScriptExecutionContext] readonly attribute FrozenArray<FileSystemEntry> webkitEntries;

Modified: trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -30,6 +30,7 @@
 
 [
     EnabledAtRuntime=FetchAPI,
+    ImplementedBy=DOMWindowFetch
 ] partial interface DOMWindow {
     Promise<FetchResponse> fetch(RequestInfo input, optional FetchRequestInit init);
 };

Modified: trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -30,6 +30,7 @@
 
 [
     EnabledAtRuntime=FetchAPI,
+    ImplementedBy=WorkerGlobalScopeFetch
 ] partial interface WorkerGlobalScope {
     Promise<FetchResponse> fetch(RequestInfo input, optional FetchRequestInit init);
 };

Modified: trunk/Source/WebCore/Modules/gamepad/NavigatorGamepad.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/gamepad/NavigatorGamepad.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/gamepad/NavigatorGamepad.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,6 +25,7 @@
 
 [
     Conditional=GAMEPAD,
+    ImplementedBy=NavigatorGamepad
 ] partial interface Navigator {
     [EnabledBySetting=Gamepads] sequence<Gamepad> getGamepads();
 };

Modified: trunk/Source/WebCore/Modules/geolocation/NavigatorGeolocation.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/geolocation/NavigatorGeolocation.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/geolocation/NavigatorGeolocation.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -19,6 +19,7 @@
 
 [
     Conditional=GEOLOCATION,
+    ImplementedBy=NavigatorGeolocation
 ] partial interface Navigator {
     readonly attribute Geolocation geolocation;
 };

Modified: trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,6 +26,7 @@
 
 [
     Conditional=INDEXED_DATABASE,
+    ImplementedBy=DOMWindowIndexedDatabase
 ] partial interface DOMWindow {
     readonly attribute IDBFactory indexedDB;
     [ImplementedAs=indexedDB] readonly attribute IDBFactory webkitIndexedDB;

Modified: trunk/Source/WebCore/Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,6 +26,7 @@
 
 [
     Conditional=INDEXED_DATABASE_IN_WORKERS,
+    ImplementedBy=WorkerGlobalScopeIndexedDatabase
 ] partial interface WorkerGlobalScope {
     [EnabledAtRuntime=IndexedDBWorkers] readonly attribute IDBFactory indexedDB;
 };

Modified: trunk/Source/WebCore/Modules/mediacapabilities/NavigatorMediaCapabilities.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/mediacapabilities/NavigatorMediaCapabilities.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/mediacapabilities/NavigatorMediaCapabilities.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -23,7 +23,9 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-[ EnabledBySetting=MediaCapabilities ]
-partial interface Navigator {
+[
+    EnabledBySetting=MediaCapabilities,
+    ImplementedBy=NavigatorMediaCapabilities
+] partial interface Navigator {
     [SameObject] readonly attribute MediaCapabilities mediaCapabilities;
 };

Modified: trunk/Source/WebCore/Modules/mediasession/HTMLMediaElementMediaSession.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/mediasession/HTMLMediaElementMediaSession.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/mediasession/HTMLMediaElementMediaSession.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,6 +25,7 @@
 
 [
     Conditional=VIDEO&MEDIA_SESSION,
+    ImplementedBy=HTMLMediaElementMediaSession
 ] partial interface HTMLMediaElement {
     attribute DOMString kind;
 

Modified: trunk/Source/WebCore/Modules/mediasource/AudioTrackMediaSource.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/mediasource/AudioTrackMediaSource.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/mediasource/AudioTrackMediaSource.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,7 +25,7 @@
 
 [
     Conditional=MEDIA_SOURCE,
-]
-partial interface AudioTrack {
+    ImplementedBy=AudioTrackMediaSource
+] partial interface AudioTrack {
     readonly attribute SourceBuffer? sourceBuffer;
 };

Modified: trunk/Source/WebCore/Modules/mediasource/DOMURLMediaSource.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/mediasource/DOMURLMediaSource.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/mediasource/DOMURLMediaSource.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -27,9 +27,10 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
+
 [
-    Conditional=MEDIA_SOURCE
-]
-partial interface DOMURL {
+    Conditional=MEDIA_SOURCE,
+    ImplementedBy=DOMURLMediaSource
+] partial interface DOMURL {
     [CallWith=ScriptExecutionContext] static DOMString createObjectURL(MediaSource source);
 };

Modified: trunk/Source/WebCore/Modules/mediasource/TextTrackMediaSource.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/mediasource/TextTrackMediaSource.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/mediasource/TextTrackMediaSource.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,7 +25,7 @@
 
 [
     Conditional=MEDIA_SOURCE,
-]
-partial interface TextTrack {
+    ImplementedBy=TextTrackMediaSource
+] partial interface TextTrack {
     readonly attribute SourceBuffer? sourceBuffer;
 };

Modified: trunk/Source/WebCore/Modules/mediasource/VideoTrackMediaSource.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/mediasource/VideoTrackMediaSource.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/mediasource/VideoTrackMediaSource.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -22,9 +22,10 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+
 [
     Conditional=MEDIA_SOURCE,
-]
-partial interface VideoTrack {
+    ImplementedBy=VideoTrackMediaSource
+] partial interface VideoTrack {
     readonly attribute SourceBuffer? sourceBuffer;
 };

Modified: trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -31,6 +31,7 @@
 [
     Conditional=MEDIA_STREAM,
     EnabledBySetting=MediaDevices,
+    ImplementedBy=NavigatorMediaDevices
 ] partial interface Navigator {
     [SameObject, SecureContext, ContextAllowsMediaDevices] readonly attribute MediaDevices mediaDevices;
     [Custom, EnabledBySetting=LegacyGetUserMedia] undefined getUserMedia(object constraints, object? successCallback, object? errorCallback);

Modified: trunk/Source/WebCore/Modules/pictureinpicture/DocumentPictureInPicture.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/pictureinpicture/DocumentPictureInPicture.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/pictureinpicture/DocumentPictureInPicture.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,7 +26,8 @@
 
 [
     Conditional=PICTURE_IN_PICTURE_API,
-    EnabledBySetting=PictureInPictureAPI
+    EnabledBySetting=PictureInPictureAPI,
+    ImplementedBy=DocumentPictureInPicture
 ] partial interface Document {
     readonly attribute boolean pictureInPictureEnabled;
 

Modified: trunk/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,13 +26,14 @@
 
 [
     Conditional=PICTURE_IN_PICTURE_API,
-    EnabledBySetting=PictureInPictureAPI
+    EnabledBySetting=PictureInPictureAPI,
+    ImplementedBy=HTMLVideoElementPictureInPicture
 ] partial interface HTMLVideoElement {
-  [NewObject] Promise<PictureInPictureWindow> requestPictureInPicture();
+    [NewObject] Promise<PictureInPictureWindow> requestPictureInPicture();
 
-  attribute EventHandler onenterpictureinpicture;
-  attribute EventHandler onleavepictureinpicture;
+    attribute EventHandler onenterpictureinpicture;
+    attribute EventHandler onleavepictureinpicture;
 
-  [CEReactions, Reflect] attribute boolean autoPictureInPicture;
-  [CEReactions, Reflect] attribute boolean disablePictureInPicture;
+    [CEReactions, Reflect] attribute boolean autoPictureInPicture;
+    [CEReactions, Reflect] attribute boolean disablePictureInPicture;
 };

Modified: trunk/Source/WebCore/Modules/quota/DOMWindowQuota.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/quota/DOMWindowQuota.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/quota/DOMWindowQuota.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,6 +25,7 @@
 
 [
     Conditional=QUOTA,
+    ImplementedBy=DOMWindowQuota
 ] partial interface DOMWindow {
     readonly attribute StorageInfo webkitStorageInfo;
 };

Modified: trunk/Source/WebCore/Modules/quota/NavigatorStorageQuota.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/quota/NavigatorStorageQuota.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/quota/NavigatorStorageQuota.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -19,6 +19,7 @@
 
 [
     Conditional=QUOTA,
+    ImplementedBy=NavigatorStorageQuota
 ] partial interface Navigator {
     readonly attribute StorageQuota webkitTemporaryStorage;
     readonly attribute StorageQuota webkitPersistentStorage;

Modified: trunk/Source/WebCore/Modules/quota/WorkerNavigatorStorageQuota.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/quota/WorkerNavigatorStorageQuota.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/quota/WorkerNavigatorStorageQuota.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -19,6 +19,7 @@
 
 [
     Conditional=QUOTA,
+    ImplementedBy=WorkerNavigatorStorageQuota
 ] partial interface WorkerNavigator {
     readonly attribute StorageQuota webkitTemporaryStorage;
     readonly attribute StorageQuota webkitPersistentStorage;

Modified: trunk/Source/WebCore/Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,9 +26,8 @@
 [
     Conditional=VIDEO&WIRELESS_PLAYBACK_TARGET,
     EnabledBySetting=RemotePlayback,
-]
-partial interface HTMLMediaElement
-{
+    ImplementedBy=HTMLMediaElementRemotePlayback
+] partial interface HTMLMediaElement {
     readonly attribute RemotePlayback remote;
     [Reflect] attribute boolean disableRemotePlayback;
 };

Modified: trunk/Source/WebCore/Modules/speech/DOMWindowSpeechSynthesis.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/speech/DOMWindowSpeechSynthesis.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/speech/DOMWindowSpeechSynthesis.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,7 +25,7 @@
 
 [
     Conditional=SPEECH_SYNTHESIS,
+    ImplementedBy=DOMWindowSpeechSynthesis
 ] partial interface DOMWindow {
-
     readonly attribute SpeechSynthesis speechSynthesis;
 };

Modified: trunk/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -24,6 +24,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-partial interface DOMWindow {
+[
+    ImplementedBy=DOMWindowWebDatabase
+] partial interface DOMWindow {
     [Custom, NotEnumerable] attribute any openDatabase;
 };

Modified: trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -23,6 +23,8 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-partial interface Navigator {
+[
+    ImplementedBy=NavigatorWebDriver
+] partial interface Navigator {
     readonly attribute boolean webdriver;
 };

Modified: trunk/Source/WebCore/Modules/webgpu/NavigatorGPU.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/webgpu/NavigatorGPU.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/webgpu/NavigatorGPU.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -27,7 +27,8 @@
 [
     Conditional=WEBGPU,
     EnabledAtRuntime=WebGPU,
-    Exposed=Window
+    Exposed=Window,
+    ImplementedBy=NavigatorGPU
 ] partial interface Navigator {
     [SameObject] readonly attribute WebGPU gpu;
 };

Modified: trunk/Source/WebCore/Modules/webgpu/WebGPUDeviceErrorScopes.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/webgpu/WebGPUDeviceErrorScopes.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/webgpu/WebGPUDeviceErrorScopes.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -28,7 +28,8 @@
 
 [
     Conditional=WEBGPU,
-    EnabledAtRuntime=WebGPU
+    EnabledAtRuntime=WebGPU,
+    ImplementedBy=WebGPUDeviceErrorScopes
 ] partial interface WebGPUDevice {
     undefined pushErrorScope(GPUErrorFilter filter);
     Promise<GPUError?> popErrorScope();

Modified: trunk/Source/WebCore/Modules/webgpu/WebGPUDeviceEventHandler.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/webgpu/WebGPUDeviceEventHandler.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/webgpu/WebGPUDeviceEventHandler.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,8 +26,8 @@
 
 [
     Conditional=WEBGPU,
-    EnabledAtRuntime=WebGPU
+    EnabledAtRuntime=WebGPU,
+    ImplementedBy=WebGPUDeviceEventHandler
 ] partial interface WebGPUDevice {
-    [Exposed=Window]
-    attribute EventHandler onuncapturederror;
+    [Exposed=Window] attribute EventHandler onuncapturederror;
 };

Modified: trunk/Source/WebCore/Modules/webgpu/WorkerNavigatorGPU.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/webgpu/WorkerNavigatorGPU.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/webgpu/WorkerNavigatorGPU.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,7 +26,8 @@
 
 [
     Conditional=WEBGPU,
-    EnabledAtRuntime=WebGPU
+    EnabledAtRuntime=WebGPU,
+    ImplementedBy=WorkerNavigatorGPU
 ] partial interface WorkerNavigator {
     [SameObject] readonly attribute WebGPU gpu;
 };

Modified: trunk/Source/WebCore/Modules/webxr/NavigatorWebXR.idl (266799 => 266800)


--- trunk/Source/WebCore/Modules/webxr/NavigatorWebXR.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/Modules/webxr/NavigatorWebXR.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,7 +25,8 @@
 
 [
     EnabledAtRuntime=WebXR,
-    Conditional=WEBXR
+    Conditional=WEBXR,
+    ImplementedBy=NavigatorWebXR
 ] partial interface Navigator {
     [SecureContext, SameObject] readonly attribute WebXRSystem xr;
 };

Modified: trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm (266799 => 266800)


--- trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm	2020-09-09 22:11:30 UTC (rev 266800)
@@ -411,10 +411,6 @@
             foreach my $attribute (@{$interface->attributes}) {
                 next unless $targetInterface->isMixin || shouldPropertyBeExposed($attribute, $targetInterface);
 
-                if ($interface->isPartial && !$interface->isMixin) {
-                    $attribute->extendedAttributes->{"ImplementedBy"} = $interfaceName if !$attribute->extendedAttributes->{Reflect};
-                }
-
                 if ($interface->isMixin && !$interface->isPartial) {
                     # Add includes statement specific extended attributes to each attribute.
                     $object->MergeExtendedAttributesFromSupplemental($includesMap{$interface->type->name}->extendedAttributes, $attribute, "attribute");
@@ -430,10 +426,6 @@
             foreach my $operation (@{$interface->operations}) {
                 next unless $targetInterface->isMixin || shouldPropertyBeExposed($operation, $targetInterface);
 
-                if ($interface->isPartial && !$interface->isMixin) {
-                    $operation->extendedAttributes->{"ImplementedBy"} = $interfaceName;
-                }
-
                 if ($interface->isMixin && !$interface->isPartial) {
                     # Add includes statement specific extended attributes to each operation.
                     $object->MergeExtendedAttributesFromSupplemental($includesMap{$interface->type->name}->extendedAttributes, $operation, "operation");
@@ -449,10 +441,6 @@
             foreach my $constant (@{$interface->constants}) {
                 next unless $targetInterface->isMixin || shouldPropertyBeExposed($constant, $targetInterface);
 
-                if ($interface->isPartial && !$interface->isMixin) {
-                    $constant->extendedAttributes->{"ImplementedBy"} = $interfaceName;
-                }
-
                 if ($interface->isMixin && !$interface->isPartial) {
                     # Add includes statement specific extended attributes to each operation.
                     $object->MergeExtendedAttributesFromSupplemental($includesMap{$interface->type->name}->extendedAttributes, $constant, "constant");
@@ -488,8 +476,6 @@
             foreach my $member (@{$dictionary->members}) {
                 next unless shouldPropertyBeExposed($member, $targetDictionary);
 
-                $member->extendedAttributes->{"ImplementedBy"} = $dictionaryName;
-
                 # Add interface-wide extended attributes to each member.
                 $object->MergeExtendedAttributesFromSupplemental($dictionary->extendedAttributes, $member, "dictionary-member");
 

Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (266799 => 266800)


--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm	2020-09-09 22:11:30 UTC (rev 266800)
@@ -1618,7 +1618,7 @@
     my ($interface, $property, $implementationName, $implExpression, $conditional) = @_;
     
     my $implementedBy = $property->extendedAttributes->{ImplementedBy};
-    if ($implementedBy) {
+    if ($implementedBy && !$property->extendedAttributes->{Reflect}) {
         AddToImplIncludes("${implementedBy}.h", $conditional);
         return "WebCore::${implementedBy}::${implementationName}";
     }
@@ -1642,7 +1642,7 @@
 {
     my ($arguments, $interface, $property, $implExpression, $globalObject, $callFrame, $thisObjectExpression) = @_;
     
-    if ($property->extendedAttributes->{ImplementedBy} && !$property->isStatic) {
+    if ($property->extendedAttributes->{ImplementedBy} && !$property->isStatic && !$property->extendedAttributes->{Reflect}) {
         unshift(@$arguments, $implExpression);
     }
     

Modified: trunk/Source/WebCore/bindings/scripts/IDLAttributes.json (266799 => 266800)


--- trunk/Source/WebCore/bindings/scripts/IDLAttributes.json	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/bindings/scripts/IDLAttributes.json	2020-09-09 22:11:30 UTC (rev 266800)
@@ -245,6 +245,10 @@
             "contextsAllowed": ["interface", "dictionary", "dictionary-member", "enum", "attribute", "operation"],
             "values": ["*"]
         },
+        "ImplementedBy": {
+            "contextsAllowed": ["interface", "dictionary", "dictionary-member", "attribute", "operation", "constant"],
+            "values": ["*"]
+        },
         "ImplementationLacksVTable": {
             "contextsAllowed": ["interface"]
         },

Modified: trunk/Source/WebCore/bindings/scripts/test/TestEnabledBySettingSupplemental.idl (266799 => 266800)


--- trunk/Source/WebCore/bindings/scripts/test/TestEnabledBySettingSupplemental.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/bindings/scripts/test/TestEnabledBySettingSupplemental.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -27,7 +27,8 @@
 // changes in its output.
 
 [
-    EnabledBySetting=TestSettingFromPartialInterface
+    EnabledBySetting=TestSettingFromPartialInterface,
+    ImplementedBy=TestEnabledBySettingSupplemental
 ] partial interface TestEnabledBySetting {
     [EnabledBySetting=TestSettingFromPartialInterfaceAttribute] attribute DOMString supplementalAttribute;
 };

Modified: trunk/Source/WebCore/bindings/scripts/test/TestSupplemental.idl (266799 => 266800)


--- trunk/Source/WebCore/bindings/scripts/test/TestSupplemental.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/bindings/scripts/test/TestSupplemental.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -30,6 +30,7 @@
 // changes in its output.
 [
     Conditional=Condition11|Condition12,
+    ImplementedBy=TestSupplemental
 ] partial interface TestInterface {
     static readonly attribute long supplementalStaticReadOnlyAttr;
     static attribute DOMString supplementalStaticAttr;

Modified: trunk/Source/WebCore/css/DOMCSSPaintWorklet.idl (266799 => 266800)


--- trunk/Source/WebCore/css/DOMCSSPaintWorklet.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/css/DOMCSSPaintWorklet.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,6 +26,7 @@
 [
     EnabledAtRuntime=CSSPaintingAPI,
     Conditional=CSS_PAINTING_API,
+    ImplementedBy=DOMCSSPaintWorklet
 ] partial interface DOMCSSNamespace {
-    [ImplementedAs=ensurePaintWorklet,CallWith=Document] static readonly attribute Worklet paintWorklet;
+    [ImplementedAs=ensurePaintWorklet, CallWith=Document] static readonly attribute Worklet paintWorklet;
 };

Modified: trunk/Source/WebCore/css/DOMCSSRegisterCustomProperty.idl (266799 => 266800)


--- trunk/Source/WebCore/css/DOMCSSRegisterCustomProperty.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/css/DOMCSSRegisterCustomProperty.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -24,7 +24,8 @@
 */
 
 [
-    EnabledBySetting=CSSCustomPropertiesAndValues
+    EnabledBySetting=CSSCustomPropertiesAndValues,
+    ImplementedBy=DOMCSSRegisterCustomProperty
 ] partial interface DOMCSSNamespace {
     [CallWith=Document, MayThrowException] static undefined registerProperty(DOMCSSCustomPropertyDescriptor descriptor);
 };

Modified: trunk/Source/WebCore/dom/DocumentFullscreen.idl (266799 => 266800)


--- trunk/Source/WebCore/dom/DocumentFullscreen.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/dom/DocumentFullscreen.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -23,12 +23,13 @@
  * THE POSSIBILITY OF SUCH DAMAGE.
  */
 
+// https://fullscreen.spec.whatwg.org/#api
 [
     Conditional=FULLSCREEN_API,
     EnabledBySetting=FullScreen,
-    DisabledByQuirk=shouldDisableElementFullscreen
+    DisabledByQuirk=shouldDisableElementFullscreen,
+    ImplementedBy=DocumentFullscreen
 ] partial interface Document {
-    // Extensions from FullScreen API (https://fullscreen.spec.whatwg.org/#api).
     // FIXME: Should probably be unprefixed.
     readonly attribute boolean webkitFullscreenEnabled;
     readonly attribute Element? webkitFullscreenElement;

Modified: trunk/Source/WebCore/dom/DocumentStorageAccess.idl (266799 => 266800)


--- trunk/Source/WebCore/dom/DocumentStorageAccess.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/dom/DocumentStorageAccess.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -25,7 +25,8 @@
 
 [
     Conditional=RESOURCE_LOAD_STATISTICS,
-    EnabledBySetting=storageAccessAPI
+    EnabledBySetting=storageAccessAPI,
+    ImplementedBy=DocumentStorageAccess
 ] partial interface Document {
     Promise<bool> hasStorageAccess();
     Promise<undefined> requestStorageAccess();

Modified: trunk/Source/WebCore/dom/DocumentTouch.idl (266799 => 266800)


--- trunk/Source/WebCore/dom/DocumentTouch.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/dom/DocumentTouch.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -19,7 +19,8 @@
  */
 
 [
-    Conditional=TOUCH_EVENTS
+    Conditional=TOUCH_EVENTS,
+    ImplementedBy=DocumentTouch
 ] partial interface Document {
     // FIXME: This has been dropped from the standard now that Touch has a constructor.
     [NewObject] Touch createTouch(optional WindowProxy? window = null, optional EventTarget? target = null,

Modified: trunk/Source/WebCore/page/NavigatorIsLoggedIn.idl (266799 => 266800)


--- trunk/Source/WebCore/page/NavigatorIsLoggedIn.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/page/NavigatorIsLoggedIn.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -26,7 +26,8 @@
 [
     SecureContext,
     Exposed=Window,
-    EnabledBySetting=IsLoggedInAPI
+    EnabledBySetting=IsLoggedInAPI,
+    ImplementedBy=NavigatorIsLoggedIn
 ] partial interface Navigator {
     Promise<undefined> setLoggedIn();
     Promise<undefined> setLoggedOut();

Modified: trunk/Source/WebCore/svg/SVGDocument.idl (266799 => 266800)


--- trunk/Source/WebCore/svg/SVGDocument.idl	2020-09-09 21:30:35 UTC (rev 266799)
+++ trunk/Source/WebCore/svg/SVGDocument.idl	2020-09-09 22:11:30 UTC (rev 266800)
@@ -19,6 +19,8 @@
  * Boston, MA 02110-1301, USA.
  */
 
-partial interface Document {
+[
+    ImplementedBy=SVGDocument
+] partial interface Document {
     readonly attribute SVGSVGElement? rootElement;
 };
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to