⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 245636 in webkit


Ignore:
Timestamp:
May 22, 2019, 12:10:05 PM (7 years ago)
Author:
jer.noble@apple.com
Message:

Hide MediaCapabilities.encodingInfo() when the platform does not support it.
https://bugs.webkit.org/show_bug.cgi?id=197476

Reviewed by Eric Carlson.

Source/WebCore:

Test: platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html

Add a new IDL attribute, CustomEnabled, which allows non Settings-based enabling of attributes and objects.

  • Modules/mediacapabilities/MediaCapabilities.idl:
  • WebCore.xcodeproj/project.pbxproj:
  • bindings/js/JSMediaCapabilitiesCustom.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl.

(WebCore::JSMediaCapabilitiesEncodingInfoIsEnabled):

  • bindings/scripts/CodeGeneratorJS.pm:

(NeedsRuntimeCheck):
(GenerateRuntimeEnableConditionalString):

  • bindings/scripts/IDLAttributes.json:
  • bindings/scripts/preprocess-idls.pl:

(GenerateConstructorAttributes):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:

(WebCore::MediaEngineConfigurationFactory::hasDecodingConfigurationFactory):
(WebCore::MediaEngineConfigurationFactory::hasEncodingConfigurationFactory):

  • platform/mediacapabilities/MediaEngineConfigurationFactory.h:

LayoutTests:

  • platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Added.
  • platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Added.
  • platform/ios/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.
  • platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Added.
  • platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Added.
  • platform/mac/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.
Location:
trunk
Files:
8 added
9 edited
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r245625 r245636  
     12019-05-22  Jer Noble  <jer.noble@apple.com>
     2
     3        Hide MediaCapabilities.encodingInfo() when the platform does not support it.
     4        https://bugs.webkit.org/show_bug.cgi?id=197476
     5
     6        Reviewed by Eric Carlson.
     7
     8        * platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Added.
     9        * platform/ios/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Added.
     10        * platform/ios/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.
     11        * platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined-expected.txt: Added.
     12        * platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html: Added.
     13        * platform/mac/media/mediacapabilities/mediacapabilities-types-expected.txt: Added.
     14
    1152019-05-22  Youenn Fablet  <youenn@apple.com>
    216
  • trunk/Source/WebCore/ChangeLog

    r245625 r245636  
     12019-05-22  Jer Noble  <jer.noble@apple.com>
     2
     3        Hide MediaCapabilities.encodingInfo() when the platform does not support it.
     4        https://bugs.webkit.org/show_bug.cgi?id=197476
     5
     6        Reviewed by Eric Carlson.
     7
     8        Test: platform/mac/media/mediacapabilities/mediacapabilities-encodingInfo-undefined.html
     9
     10        Add a new IDL attribute, CustomEnabled, which allows non Settings-based enabling of attributes and objects.
     11
     12        * Modules/mediacapabilities/MediaCapabilities.idl:
     13        * WebCore.xcodeproj/project.pbxproj:
     14        * bindings/js/JSMediaCapabilitiesCustom.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl.
     15        (WebCore::JSMediaCapabilitiesEncodingInfoIsEnabled):
     16        * bindings/scripts/CodeGeneratorJS.pm:
     17        (NeedsRuntimeCheck):
     18        (GenerateRuntimeEnableConditionalString):
     19        * bindings/scripts/IDLAttributes.json:
     20        * bindings/scripts/preprocess-idls.pl:
     21        (GenerateConstructorAttributes):
     22        * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
     23        (WebCore::MediaEngineConfigurationFactory::hasDecodingConfigurationFactory):
     24        (WebCore::MediaEngineConfigurationFactory::hasEncodingConfigurationFactory):
     25        * platform/mediacapabilities/MediaEngineConfigurationFactory.h:
     26
    1272019-05-22  Youenn Fablet  <youenn@apple.com>
    228
  • trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl

    r243109 r245636  
    2626[
    2727    EnabledBySetting=MediaCapabilities,
    28     ImplementationLacksVTable
     28    ImplementationLacksVTable,
     29    JSCustomHeader
    2930]
    3031interface MediaCapabilities {
    31   [CallWith=Document] Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration);
    32   Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration);
     32  [CustomEnabled, CallWith=Document] Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration);
     33  [CustomEnabled] Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration);
    3334};
  • trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj

    r245625 r245636  
    1344013440                CCC2B51115F613060048CDD6 /* DeviceController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DeviceController.cpp; sourceTree = "<group>"; };
    1344113441                CCC2B51215F613060048CDD6 /* DeviceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceController.h; sourceTree = "<group>"; };
     13442                CD0320152279F5BF00DD9F0B /* JSMediaCapabilitiesCustom.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = JSMediaCapabilitiesCustom.h; sourceTree = "<group>"; };
    1344213443                CD063F801E23FA8900812BE3 /* InitDataRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitDataRegistry.cpp; sourceTree = "<group>"; };
    1344313444                CD063F811E23FA8900812BE3 /* InitDataRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitDataRegistry.h; sourceTree = "<group>"; };
     
    2062720628                                A7D0318D0E93540300E24ACD /* JSImageDataCustom.cpp */,
    2062820629                                77C13F042165658A002D9C5F /* JSIntersectionObserverEntryCustom.cpp */,
     20630                                CD0320152279F5BF00DD9F0B /* JSMediaCapabilitiesCustom.h */,
    2062920631                                AD726FE716D9F204003A4E6D /* JSMediaListCustom.h */,
    2063020632                                415CDAF61E6CE0D3004F11EE /* JSMediaStreamTrackCustom.cpp */,
  • trunk/Source/WebCore/bindings/js/JSMediaCapabilitiesCustom.h

    r245635 r245636  
    11/*
    2  * Copyright (C) 2017 Apple Inc. All rights reserved.
     2 * Copyright (C) 2019 Apple Inc. All rights reserved.
    33 *
    44 * Redistribution and use in source and binary forms, with or without
     
    2424 */
    2525
    26 [
    27     EnabledBySetting=MediaCapabilities,
    28     ImplementationLacksVTable
    29 ]
    30 interface MediaCapabilities {
    31   [CallWith=Document] Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration);
    32   Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration);
    33 };
     26#pragma once
     27
     28#include "MediaEngineConfigurationFactory.h"
     29
     30namespace WebCore {
     31
     32ALWAYS_INLINE bool JSMediaCapabilitiesEncodingInfoIsEnabled()
     33{
     34    return MediaEngineConfigurationFactory::hasEncodingConfigurationFactory();
     35}
     36
     37ALWAYS_INLINE bool JSMediaCapabilitiesDecodingInfoIsEnabled()
     38{
     39    return MediaEngineConfigurationFactory::hasDecodingConfigurationFactory();
     40}
     41
     42}
  • trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm

    r245314 r245636  
    17111711        || $context->extendedAttributes->{DisabledByQuirk}
    17121712        || $context->extendedAttributes->{SecureContext}
    1713         || $context->extendedAttributes->{ContextHasServiceWorkerScheme};
     1713        || $context->extendedAttributes->{ContextHasServiceWorkerScheme}
     1714        || $context->extendedAttributes->{CustomEnabled};
    17141715}
    17151716
     
    37443745            push(@conjuncts, "downcast<Document>(jsCast<JSDOMGlobalObject*>(" . $globalObjectPtr . ")->scriptExecutionContext())->settings()." . ToMethodName($flag) . "Enabled()");
    37453746        }
     3747    }
     3748
     3749    if ($context->extendedAttributes->{CustomEnabled}) {
     3750        assert("CustomEnabled can only be used by interfaces only exposed to the Window") if $interface->extendedAttributes->{Exposed} && $interface->extendedAttributes->{Exposed} ne "Window";
     3751
     3752        my $className = "JS" . $interface->type->name;
     3753        push(@conjuncts, "${className}" . $codeGenerator->WK_ucfirst($context->name) . "IsEnabled()");
    37463754    }
    37473755
  • trunk/Source/WebCore/bindings/scripts/IDLAttributes.json

    r245314 r245636  
    155155            "contextsAllowed": ["interface"]
    156156        },
     157        "CustomEnabled": {
     158            "contextsAllowed": ["interface", "dictionary", "enum", "attribute", "operation", "constant", "iterable"]
     159        },
    157160        "DOMJIT": {
    158161            "contextsAllowed": ["interface", "attribute", "operation"],
  • trunk/Source/WebCore/bindings/scripts/preprocess-idls.pl

    r245314 r245636  
    284284      next unless ($attributeName eq "Conditional" || $attributeName eq "EnabledAtRuntime" || $attributeName eq "EnabledForWorld"
    285285        || $attributeName eq "EnabledBySetting" || $attributeName eq "SecureContext" || $attributeName eq "PrivateIdentifier"
    286         || $attributeName eq "PublicIdentifier" || $attributeName eq "DisabledByQuirk" || $attributeName eq "EnabledByQuirk" || $attributeName eq "EnabledForContext");
     286        || $attributeName eq "PublicIdentifier" || $attributeName eq "DisabledByQuirk" || $attributeName eq "EnabledByQuirk" || $attributeName eq "EnabledForContext" || $attributeName eq "CustomEnabled");
    287287      my $extendedAttribute = $attributeName;
    288288      $extendedAttribute .= "=" . $extendedAttributes->{$attributeName} unless $extendedAttributes->{$attributeName} eq "VALUE_IS_MISSING";
  • trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp

    r243046 r245636  
    3434#include "MediaEncodingConfiguration.h"
    3535#include "MediaEngineConfigurationFactoryMock.h"
     36#include <wtf/Algorithms.h>
    3637#include <wtf/NeverDestroyed.h>
    3738#include <wtf/Vector.h>
     
    7071    }));
    7172    return factories;
     73}
     74
     75bool MediaEngineConfigurationFactory::hasDecodingConfigurationFactory()
     76{
     77    return mockEnabled() || WTF::anyOf(factories(), [] (auto& factory) { return factory.createDecodingConfiguration; });
     78}
     79
     80bool MediaEngineConfigurationFactory::hasEncodingConfigurationFactory()
     81{
     82    return mockEnabled() || WTF::anyOf(factories(), [] (auto& factory) { return factory.createEncodingConfiguration; });
    7283}
    7384
  • trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h

    r243014 r245636  
    4242    using EncodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesEncodingInfo&&)>;
    4343
     44    static bool hasDecodingConfigurationFactory();
     45    static bool hasEncodingConfigurationFactory();
     46
    4447    static void createDecodingConfiguration(MediaDecodingConfiguration&&, DecodingConfigurationCallback&&);
    4548    static void createEncodingConfiguration(MediaEncodingConfiguration&&, EncodingConfigurationCallback&&);
Note: See TracChangeset for help on using the changeset viewer.