Changeset 266800 in webkit


Ignore:
Timestamp:
Sep 9, 2020, 3:11:30 PM (5 years ago)
Author:
weinig@apple.com
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.

Location:
trunk/Source/WebCore
Files:
47 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r266797 r266800  
     12020-09-09  Sam Weinig  <weinig@apple.com>
     2
     3        [WebIDL] Stop automatically applying the ImplementedBy extended attribute to all partial interfaces/dictionaries
     4        https://bugs.webkit.org/show_bug.cgi?id=216322
     5
     6        Reviewed by Darin Adler.
     7
     8        When partial interfaces were originally introduced, there were grand ambitions to modularize
     9        and isolate parts of interfaces completely, mostly using the Supplemental<> pattern. As time
     10        has passed, more and more specs have usedd partial just to group things together, and having
     11        it implicitly mean using a class named after the IDL file with some static functions is not
     12        always the right choice. With this change, partial interfaces that want the supplemental style
     13        behavior must opt in, using the extended attribute "ImplementedBy", which is what the code
     14        generators already called this concept internally.
     15
     16        * bindings/scripts/CodeGenerator.pm:
     17        (ProcessInterfaceSupplementalDependencies):
     18        (ProcessDictionarySupplementalDependencies):
     19        * bindings/scripts/CodeGeneratorJS.pm:
     20        (GetFullyQualifiedImplementationCallName):
     21        (AddAdditionalArgumentsForImplementationCall):
     22        * bindings/scripts/IDLAttributes.json:
     23        Remove special casing of partial interfaces / dictionaries automatically getting "ImplementedBy"
     24        applied to all members. Maintain the behavior that "ImplementedBy" is silently ignored when
     25        an attribute has been marked as "Reflect".
     26
     27        * Modules/async-clipboard/NavigatorClipboard.idl:
     28        * Modules/beacon/NavigatorBeacon.idl:
     29        * Modules/cache/DOMWindowCaches.idl:
     30        * Modules/cache/WorkerGlobalScopeCaches.idl:
     31        * Modules/credentialmanagement/NavigatorCredentials.idl:
     32        * Modules/encryptedmedia/NavigatorEME.idl:
     33        * Modules/entriesapi/HTMLInputElementEntriesAPI.idl:
     34        * Modules/fetch/DOMWindowFetch.idl:
     35        * Modules/fetch/WorkerGlobalScopeFetch.idl:
     36        * Modules/gamepad/NavigatorGamepad.idl:
     37        * Modules/geolocation/NavigatorGeolocation.idl:
     38        * Modules/indexeddb/DOMWindowIndexedDatabase.idl:
     39        * Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl:
     40        * Modules/mediacapabilities/NavigatorMediaCapabilities.idl:
     41        * Modules/mediasession/HTMLMediaElementMediaSession.idl:
     42        * Modules/mediasource/AudioTrackMediaSource.idl:
     43        * Modules/mediasource/DOMURLMediaSource.idl:
     44        * Modules/mediasource/TextTrackMediaSource.idl:
     45        * Modules/mediasource/VideoTrackMediaSource.idl:
     46        * Modules/mediastream/NavigatorMediaDevices.idl:
     47        * Modules/pictureinpicture/DocumentPictureInPicture.idl:
     48        * Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl:
     49        * Modules/quota/DOMWindowQuota.idl:
     50        * Modules/quota/NavigatorStorageQuota.idl:
     51        * Modules/quota/WorkerNavigatorStorageQuota.idl:
     52        * Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl:
     53        * Modules/speech/DOMWindowSpeechSynthesis.idl:
     54        * Modules/webdatabase/DOMWindowWebDatabase.idl:
     55        * Modules/webdriver/NavigatorWebDriver.idl:
     56        * Modules/webgpu/NavigatorGPU.idl:
     57        * Modules/webgpu/WebGPUDeviceErrorScopes.idl:
     58        * Modules/webgpu/WebGPUDeviceEventHandler.idl:
     59        * Modules/webgpu/WorkerNavigatorGPU.idl:
     60        * Modules/webxr/NavigatorWebXR.idl:
     61        * css/DOMCSSPaintWorklet.idl:
     62        * css/DOMCSSRegisterCustomProperty.idl:
     63        * dom/DocumentFullscreen.idl:
     64        * dom/DocumentStorageAccess.idl:
     65        * dom/DocumentTouch.idl:
     66        * page/NavigatorIsLoggedIn.idl:
     67        * svg/SVGDocument.idl:
     68        Update existing partials to opt into "ImplementedBy" bevahior. A future pass
     69        will go through these and see which ones can be simplified by removing the
     70        indirection without introducing unnecessary modularization changes.
     71
    1722020-09-09  Chris Dumez  <cdumez@apple.com>
    273
  • trunk/Source/WebCore/Modules/async-clipboard/NavigatorClipboard.idl

    r250824 r266800  
    2626[
    2727    EnabledBySetting=AsyncClipboardAPI,
     28    ImplementedBy=NavigatorClipboard
    2829] partial interface Navigator {
    2930    [SecureContext, SameObject] readonly attribute Clipboard clipboard;
  • trunk/Source/WebCore/Modules/beacon/NavigatorBeacon.idl

    r221201 r266800  
    2828[
    2929    EnabledBySetting=BeaconAPI,
     30    ImplementedBy=NavigatorBeacon
    3031] partial interface Navigator {
    3132    [CallWith=Document, MayThrowException] boolean sendBeacon(USVString url, optional BodyInit? data = null);
  • trunk/Source/WebCore/Modules/cache/DOMWindowCaches.idl

    r261169 r266800  
    2626[
    2727    EnabledAtRuntime=CacheAPI,
     28    ImplementedBy=DOMWindowCaches
    2829] partial interface DOMWindow {
    2930    [CallWith=ScriptExecutionContext, MayThrowException, SecureContext, SameObject] readonly attribute DOMCacheStorage caches;
  • trunk/Source/WebCore/Modules/cache/WorkerGlobalScopeCaches.idl

    r222274 r266800  
    2626[
    2727    EnabledAtRuntime=CacheAPI,
     28    ImplementedBy=WorkerGlobalScopeCaches
    2829] partial interface WorkerGlobalScope {
    2930    [SecureContext, SameObject] readonly attribute DOMCacheStorage caches;
  • trunk/Source/WebCore/Modules/credentialmanagement/NavigatorCredentials.idl

    r266360 r266800  
    2828    Conditional=WEB_AUTHN,
    2929    EnabledBySetting=WebAuthentication,
     30    ImplementedBy=NavigatorCredentials
    3031] partial interface Navigator {
    3132    [SecureContext, SameObject] readonly attribute CredentialsContainer credentials;
  • trunk/Source/WebCore/Modules/encryptedmedia/NavigatorEME.idl

    r266360 r266800  
    3131    EnabledBySetting=EncryptedMediaAPI,
    3232    DisabledByQuirk=hasBrokenEncryptedMediaAPISupport,
     33    ImplementedBy=NavigatorEME
    3334] partial interface Navigator {
    3435    [CallWith=Document] Promise<MediaKeySystemAccess> requestMediaKeySystemAccess(DOMString keySystem, sequence<MediaKeySystemConfiguration> supportedConfiguration);
  • trunk/Source/WebCore/Modules/entriesapi/HTMLInputElementEntriesAPI.idl

    r221645 r266800  
    2727[
    2828    EnabledAtRuntime=DirectoryUpload,
     29    ImplementedBy=HTMLInputElementEntriesAPI
    2930] partial interface HTMLInputElement {
    3031    [Reflect] attribute boolean webkitdirectory;
  • trunk/Source/WebCore/Modules/fetch/DOMWindowFetch.idl

    r220241 r266800  
    3131[
    3232    EnabledAtRuntime=FetchAPI,
     33    ImplementedBy=DOMWindowFetch
    3334] partial interface DOMWindow {
    3435    Promise<FetchResponse> fetch(RequestInfo input, optional FetchRequestInit init);
  • trunk/Source/WebCore/Modules/fetch/WorkerGlobalScopeFetch.idl

    r220241 r266800  
    3131[
    3232    EnabledAtRuntime=FetchAPI,
     33    ImplementedBy=WorkerGlobalScopeFetch
    3334] partial interface WorkerGlobalScope {
    3435    Promise<FetchResponse> fetch(RequestInfo input, optional FetchRequestInit init);
  • trunk/Source/WebCore/Modules/gamepad/NavigatorGamepad.idl

    r266360 r266800  
    2626[
    2727    Conditional=GAMEPAD,
     28    ImplementedBy=NavigatorGamepad
    2829] partial interface Navigator {
    2930    [EnabledBySetting=Gamepads] sequence<Gamepad> getGamepads();
  • trunk/Source/WebCore/Modules/geolocation/NavigatorGeolocation.idl

    r196673 r266800  
    2020[
    2121    Conditional=GEOLOCATION,
     22    ImplementedBy=NavigatorGeolocation
    2223] partial interface Navigator {
    2324    readonly attribute Geolocation geolocation;
  • trunk/Source/WebCore/Modules/indexeddb/DOMWindowIndexedDatabase.idl

    r211013 r266800  
    2727[
    2828    Conditional=INDEXED_DATABASE,
     29    ImplementedBy=DOMWindowIndexedDatabase
    2930] partial interface DOMWindow {
    3031    readonly attribute IDBFactory indexedDB;
  • trunk/Source/WebCore/Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl

    r199779 r266800  
    2727[
    2828    Conditional=INDEXED_DATABASE_IN_WORKERS,
     29    ImplementedBy=WorkerGlobalScopeIndexedDatabase
    2930] partial interface WorkerGlobalScope {
    3031    [EnabledAtRuntime=IndexedDBWorkers] readonly attribute IDBFactory indexedDB;
  • trunk/Source/WebCore/Modules/mediacapabilities/NavigatorMediaCapabilities.idl

    r235675 r266800  
    2424 */
    2525
    26 [ EnabledBySetting=MediaCapabilities ]
    27 partial interface Navigator {
     26[
     27    EnabledBySetting=MediaCapabilities,
     28    ImplementedBy=NavigatorMediaCapabilities
     29] partial interface Navigator {
    2830    [SameObject] readonly attribute MediaCapabilities mediaCapabilities;
    2931};
  • trunk/Source/WebCore/Modules/mediasession/HTMLMediaElementMediaSession.idl

    r205280 r266800  
    2626[
    2727    Conditional=VIDEO&MEDIA_SESSION,
     28    ImplementedBy=HTMLMediaElementMediaSession
    2829] partial interface HTMLMediaElement {
    2930    attribute DOMString kind;
  • trunk/Source/WebCore/Modules/mediasource/AudioTrackMediaSource.idl

    r262695 r266800  
    2626[
    2727    Conditional=MEDIA_SOURCE,
    28 ]
    29 partial interface AudioTrack {
     28    ImplementedBy=AudioTrackMediaSource
     29] partial interface AudioTrack {
    3030    readonly attribute SourceBuffer? sourceBuffer;
    3131};
  • trunk/Source/WebCore/Modules/mediasource/DOMURLMediaSource.idl

    r206208 r266800  
    2828 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2929 */
     30
    3031[
    31     Conditional=MEDIA_SOURCE
    32 ]
    33 partial interface DOMURL {
     32    Conditional=MEDIA_SOURCE,
     33    ImplementedBy=DOMURLMediaSource
     34] partial interface DOMURL {
    3435    [CallWith=ScriptExecutionContext] static DOMString createObjectURL(MediaSource source);
    3536};
  • trunk/Source/WebCore/Modules/mediasource/TextTrackMediaSource.idl

    r262695 r266800  
    2626[
    2727    Conditional=MEDIA_SOURCE,
    28 ]
    29 partial interface TextTrack {
     28    ImplementedBy=TextTrackMediaSource
     29] partial interface TextTrack {
    3030    readonly attribute SourceBuffer? sourceBuffer;
    3131};
  • trunk/Source/WebCore/Modules/mediasource/VideoTrackMediaSource.idl

    r262695 r266800  
    2323 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2424 */
     25
    2526[
    2627    Conditional=MEDIA_SOURCE,
    27 ]
    28 partial interface VideoTrack {
     28    ImplementedBy=VideoTrackMediaSource
     29] partial interface VideoTrack {
    2930    readonly attribute SourceBuffer? sourceBuffer;
    3031};
  • trunk/Source/WebCore/Modules/mediastream/NavigatorMediaDevices.idl

    r266360 r266800  
    3232    Conditional=MEDIA_STREAM,
    3333    EnabledBySetting=MediaDevices,
     34    ImplementedBy=NavigatorMediaDevices
    3435] partial interface Navigator {
    3536    [SameObject, SecureContext, ContextAllowsMediaDevices] readonly attribute MediaDevices mediaDevices;
  • trunk/Source/WebCore/Modules/pictureinpicture/DocumentPictureInPicture.idl

    r266311 r266800  
    2727[
    2828    Conditional=PICTURE_IN_PICTURE_API,
    29     EnabledBySetting=PictureInPictureAPI
     29    EnabledBySetting=PictureInPictureAPI,
     30    ImplementedBy=DocumentPictureInPicture
    3031] partial interface Document {
    3132    readonly attribute boolean pictureInPictureEnabled;
  • trunk/Source/WebCore/Modules/pictureinpicture/HTMLVideoElementPictureInPicture.idl

    r251697 r266800  
    2727[
    2828    Conditional=PICTURE_IN_PICTURE_API,
    29     EnabledBySetting=PictureInPictureAPI
     29    EnabledBySetting=PictureInPictureAPI,
     30    ImplementedBy=HTMLVideoElementPictureInPicture
    3031] partial interface HTMLVideoElement {
    31   [NewObject] Promise<PictureInPictureWindow> requestPictureInPicture();
     32    [NewObject] Promise<PictureInPictureWindow> requestPictureInPicture();
    3233
    33   attribute EventHandler onenterpictureinpicture;
    34   attribute EventHandler onleavepictureinpicture;
     34    attribute EventHandler onenterpictureinpicture;
     35    attribute EventHandler onleavepictureinpicture;
    3536
    36   [CEReactions, Reflect] attribute boolean autoPictureInPicture;
    37   [CEReactions, Reflect] attribute boolean disablePictureInPicture;
     37    [CEReactions, Reflect] attribute boolean autoPictureInPicture;
     38    [CEReactions, Reflect] attribute boolean disablePictureInPicture;
    3839};
  • trunk/Source/WebCore/Modules/quota/DOMWindowQuota.idl

    r165676 r266800  
    2626[
    2727    Conditional=QUOTA,
     28    ImplementedBy=DOMWindowQuota
    2829] partial interface DOMWindow {
    2930    readonly attribute StorageInfo webkitStorageInfo;
  • trunk/Source/WebCore/Modules/quota/NavigatorStorageQuota.idl

    r149170 r266800  
    2020[
    2121    Conditional=QUOTA,
     22    ImplementedBy=NavigatorStorageQuota
    2223] partial interface Navigator {
    2324    readonly attribute StorageQuota webkitTemporaryStorage;
  • trunk/Source/WebCore/Modules/quota/WorkerNavigatorStorageQuota.idl

    r149170 r266800  
    2020[
    2121    Conditional=QUOTA,
     22    ImplementedBy=WorkerNavigatorStorageQuota
    2223] partial interface WorkerNavigator {
    2324    readonly attribute StorageQuota webkitTemporaryStorage;
  • trunk/Source/WebCore/Modules/remoteplayback/HTMLMediaElementRemotePlayback.idl

    r251737 r266800  
    2727    Conditional=VIDEO&WIRELESS_PLAYBACK_TARGET,
    2828    EnabledBySetting=RemotePlayback,
    29 ]
    30 partial interface HTMLMediaElement
    31 {
     29    ImplementedBy=HTMLMediaElementRemotePlayback
     30] partial interface HTMLMediaElement {
    3231    readonly attribute RemotePlayback remote;
    3332    [Reflect] attribute boolean disableRemotePlayback;
  • trunk/Source/WebCore/Modules/speech/DOMWindowSpeechSynthesis.idl

    r165676 r266800  
    2626[
    2727    Conditional=SPEECH_SYNTHESIS,
     28    ImplementedBy=DOMWindowSpeechSynthesis
    2829] partial interface DOMWindow {
    29 
    3030    readonly attribute SpeechSynthesis speechSynthesis;
    3131};
  • trunk/Source/WebCore/Modules/webdatabase/DOMWindowWebDatabase.idl

    r247434 r266800  
    2525 */
    2626
    27 partial interface DOMWindow {
     27[
     28    ImplementedBy=DOMWindowWebDatabase
     29] partial interface DOMWindow {
    2830    [Custom, NotEnumerable] attribute any openDatabase;
    2931};
  • trunk/Source/WebCore/Modules/webdriver/NavigatorWebDriver.idl

    r217391 r266800  
    2424 */
    2525
    26 partial interface Navigator {
     26[
     27    ImplementedBy=NavigatorWebDriver
     28] partial interface Navigator {
    2729    readonly attribute boolean webdriver;
    2830};
  • trunk/Source/WebCore/Modules/webgpu/NavigatorGPU.idl

    r244777 r266800  
    2828    Conditional=WEBGPU,
    2929    EnabledAtRuntime=WebGPU,
    30     Exposed=Window
     30    Exposed=Window,
     31    ImplementedBy=NavigatorGPU
    3132] partial interface Navigator {
    3233    [SameObject] readonly attribute WebGPU gpu;
  • trunk/Source/WebCore/Modules/webgpu/WebGPUDeviceErrorScopes.idl

    r266311 r266800  
    2929[
    3030    Conditional=WEBGPU,
    31     EnabledAtRuntime=WebGPU
     31    EnabledAtRuntime=WebGPU,
     32    ImplementedBy=WebGPUDeviceErrorScopes
    3233] partial interface WebGPUDevice {
    3334    undefined pushErrorScope(GPUErrorFilter filter);
  • trunk/Source/WebCore/Modules/webgpu/WebGPUDeviceEventHandler.idl

    r249539 r266800  
    2727[
    2828    Conditional=WEBGPU,
    29     EnabledAtRuntime=WebGPU
     29    EnabledAtRuntime=WebGPU,
     30    ImplementedBy=WebGPUDeviceEventHandler
    3031] partial interface WebGPUDevice {
    31     [Exposed=Window]
    32     attribute EventHandler onuncapturederror;
     32    [Exposed=Window] attribute EventHandler onuncapturederror;
    3333};
  • trunk/Source/WebCore/Modules/webgpu/WorkerNavigatorGPU.idl

    r244777 r266800  
    2727[
    2828    Conditional=WEBGPU,
    29     EnabledAtRuntime=WebGPU
     29    EnabledAtRuntime=WebGPU,
     30    ImplementedBy=WorkerNavigatorGPU
    3031] partial interface WorkerNavigator {
    3132    [SameObject] readonly attribute WebGPU gpu;
  • trunk/Source/WebCore/Modules/webxr/NavigatorWebXR.idl

    r261679 r266800  
    2626[
    2727    EnabledAtRuntime=WebXR,
    28     Conditional=WEBXR
     28    Conditional=WEBXR,
     29    ImplementedBy=NavigatorWebXR
    2930] partial interface Navigator {
    3031    [SecureContext, SameObject] readonly attribute WebXRSystem xr;
  • trunk/Source/WebCore/bindings/scripts/CodeGenerator.pm

    r266753 r266800  
    412412                next unless $targetInterface->isMixin || shouldPropertyBeExposed($attribute, $targetInterface);
    413413
    414                 if ($interface->isPartial && !$interface->isMixin) {
    415                     $attribute->extendedAttributes->{"ImplementedBy"} = $interfaceName if !$attribute->extendedAttributes->{Reflect};
    416                 }
    417 
    418414                if ($interface->isMixin && !$interface->isPartial) {
    419415                    # Add includes statement specific extended attributes to each attribute.
     
    430426            foreach my $operation (@{$interface->operations}) {
    431427                next unless $targetInterface->isMixin || shouldPropertyBeExposed($operation, $targetInterface);
    432 
    433                 if ($interface->isPartial && !$interface->isMixin) {
    434                     $operation->extendedAttributes->{"ImplementedBy"} = $interfaceName;
    435                 }
    436428
    437429                if ($interface->isMixin && !$interface->isPartial) {
     
    450442                next unless $targetInterface->isMixin || shouldPropertyBeExposed($constant, $targetInterface);
    451443
    452                 if ($interface->isPartial && !$interface->isMixin) {
    453                     $constant->extendedAttributes->{"ImplementedBy"} = $interfaceName;
    454                 }
    455 
    456444                if ($interface->isMixin && !$interface->isPartial) {
    457445                    # Add includes statement specific extended attributes to each operation.
     
    488476            foreach my $member (@{$dictionary->members}) {
    489477                next unless shouldPropertyBeExposed($member, $targetDictionary);
    490 
    491                 $member->extendedAttributes->{"ImplementedBy"} = $dictionaryName;
    492478
    493479                # Add interface-wide extended attributes to each member.
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r266662 r266800  
    16191619   
    16201620    my $implementedBy = $property->extendedAttributes->{ImplementedBy};
    1621     if ($implementedBy) {
     1621    if ($implementedBy && !$property->extendedAttributes->{Reflect}) {
    16221622        AddToImplIncludes("${implementedBy}.h", $conditional);
    16231623        return "WebCore::${implementedBy}::${implementationName}";
     
    16431643    my ($arguments, $interface, $property, $implExpression, $globalObject, $callFrame, $thisObjectExpression) = @_;
    16441644   
    1645     if ($property->extendedAttributes->{ImplementedBy} && !$property->isStatic) {
     1645    if ($property->extendedAttributes->{ImplementedBy} && !$property->isStatic && !$property->extendedAttributes->{Reflect}) {
    16461646        unshift(@$arguments, $implExpression);
    16471647    }
  • trunk/Source/WebCore/bindings/scripts/IDLAttributes.json

    r266706 r266800  
    246246            "values": ["*"]
    247247        },
     248        "ImplementedBy": {
     249            "contextsAllowed": ["interface", "dictionary", "dictionary-member", "attribute", "operation", "constant"],
     250            "values": ["*"]
     251        },
    248252        "ImplementationLacksVTable": {
    249253            "contextsAllowed": ["interface"]
  • trunk/Source/WebCore/bindings/scripts/test/TestEnabledBySettingSupplemental.idl

    r266339 r266800  
    2828
    2929[
    30     EnabledBySetting=TestSettingFromPartialInterface
     30    EnabledBySetting=TestSettingFromPartialInterface,
     31    ImplementedBy=TestEnabledBySettingSupplemental
    3132] partial interface TestEnabledBySetting {
    3233    [EnabledBySetting=TestSettingFromPartialInterfaceAttribute] attribute DOMString supplementalAttribute;
  • trunk/Source/WebCore/bindings/scripts/test/TestSupplemental.idl

    r266311 r266800  
    3131[
    3232    Conditional=Condition11|Condition12,
     33    ImplementedBy=TestSupplemental
    3334] partial interface TestInterface {
    3435    static readonly attribute long supplementalStaticReadOnlyAttr;
  • trunk/Source/WebCore/css/DOMCSSPaintWorklet.idl

    r237766 r266800  
    2727    EnabledAtRuntime=CSSPaintingAPI,
    2828    Conditional=CSS_PAINTING_API,
     29    ImplementedBy=DOMCSSPaintWorklet
    2930] partial interface DOMCSSNamespace {
    30     [ImplementedAs=ensurePaintWorklet,CallWith=Document] static readonly attribute Worklet paintWorklet;
     31    [ImplementedAs=ensurePaintWorklet, CallWith=Document] static readonly attribute Worklet paintWorklet;
    3132};
  • trunk/Source/WebCore/css/DOMCSSRegisterCustomProperty.idl

    r266360 r266800  
    2525
    2626[
    27     EnabledBySetting=CSSCustomPropertiesAndValues
     27    EnabledBySetting=CSSCustomPropertiesAndValues,
     28    ImplementedBy=DOMCSSRegisterCustomProperty
    2829] partial interface DOMCSSNamespace {
    2930    [CallWith=Document, MayThrowException] static undefined registerProperty(DOMCSSCustomPropertyDescriptor descriptor);
  • trunk/Source/WebCore/dom/DocumentFullscreen.idl

    r266311 r266800  
    2424 */
    2525
     26// https://fullscreen.spec.whatwg.org/#api
    2627[
    2728    Conditional=FULLSCREEN_API,
    2829    EnabledBySetting=FullScreen,
    29     DisabledByQuirk=shouldDisableElementFullscreen
     30    DisabledByQuirk=shouldDisableElementFullscreen,
     31    ImplementedBy=DocumentFullscreen
    3032] partial interface Document {
    31     // Extensions from FullScreen API (https://fullscreen.spec.whatwg.org/#api).
    3233    // FIXME: Should probably be unprefixed.
    3334    readonly attribute boolean webkitFullscreenEnabled;
  • trunk/Source/WebCore/dom/DocumentStorageAccess.idl

    r266311 r266800  
    2626[
    2727    Conditional=RESOURCE_LOAD_STATISTICS,
    28     EnabledBySetting=storageAccessAPI
     28    EnabledBySetting=storageAccessAPI,
     29    ImplementedBy=DocumentStorageAccess
    2930] partial interface Document {
    3031    Promise<bool> hasStorageAccess();
  • trunk/Source/WebCore/dom/DocumentTouch.idl

    r231114 r266800  
    2020
    2121[
    22     Conditional=TOUCH_EVENTS
     22    Conditional=TOUCH_EVENTS,
     23    ImplementedBy=DocumentTouch
    2324] partial interface Document {
    2425    // FIXME: This has been dropped from the standard now that Touch has a constructor.
  • trunk/Source/WebCore/page/NavigatorIsLoggedIn.idl

    r266311 r266800  
    2727    SecureContext,
    2828    Exposed=Window,
    29     EnabledBySetting=IsLoggedInAPI
     29    EnabledBySetting=IsLoggedInAPI,
     30    ImplementedBy=NavigatorIsLoggedIn
    3031] partial interface Navigator {
    3132    Promise<undefined> setLoggedIn();
  • trunk/Source/WebCore/svg/SVGDocument.idl

    r205280 r266800  
    2020 */
    2121
    22 partial interface Document {
     22[
     23    ImplementedBy=SVGDocument
     24] partial interface Document {
    2325    readonly attribute SVGSVGElement? rootElement;
    2426};
Note: See TracChangeset for help on using the changeset viewer.