Diff
Modified: trunk/LayoutTests/ChangeLog (243045 => 243046)
--- trunk/LayoutTests/ChangeLog 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/LayoutTests/ChangeLog 2019-03-16 22:00:51 UTC (rev 243046)
@@ -1,3 +1,13 @@
+2019-03-16 Jer Noble <jer.no...@apple.com>
+
+ Add a new MediaCapabilitiesExtensionsEnabled setting
+ https://bugs.webkit.org/show_bug.cgi?id=195843
+
+ Reviewed by Geoffrey Garen.
+
+ * media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt:
+ * media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html:
+
2019-03-16 Wenson Hsieh <wenson_hs...@apple.com>
[iOS] Software keyboard never appears when editing on some websites
Modified: trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt (243045 => 243046)
--- trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt 2019-03-16 22:00:51 UTC (rev 243046)
@@ -1,4 +1,5 @@
RUN(internals.enableMockMediaCapabilities())
+RUN(internals.settings.setMediaCapabilitiesExtensionsEnabled(true))
RUN(promise = navigator.mediaCapabilities.decodingInfo({ type: 'file', video: { contentType: 'video/mp4; codecs="avc1"', height: 720, bitrate: 1000, width: 1280, framerate: 24.5 }, unsupportedProperty: true });)
Promise resolved OK
EXPECTED (info.supported == 'true') OK
@@ -12,5 +13,18 @@
EXPECTED (info.supportedConfiguration.video.width == '1280') OK
EXPECTED (info.supportedConfiguration.video.framerate == '24.5') OK
EXPECTED (typeof info.supportedConfiguration.unsupportedProperty == 'undefined') OK
+RUN(promise = navigator.mediaCapabilities.decodingInfo({ type: 'media-source', video: { contentType: 'video/mp4; codecs="avc1"', height: 720, bitrate: 1000, width: 1280, framerate: 24.5 }, unsupportedProperty: true });)
+Promise resolved OK
+EXPECTED (info.supported == 'false') OK
+EXPECTED (info.smooth == 'false') OK
+EXPECTED (info.powerEfficient == 'false') OK
+EXPECTED (typeof info.supportedConfiguration != 'undefined') OK
+EXPECTED (info.supportedConfiguration.type == 'media-source') OK
+EXPECTED (info.supportedConfiguration.video.contentType == 'video/mp4; codecs="avc1"') OK
+EXPECTED (info.supportedConfiguration.video.height == '720') OK
+EXPECTED (info.supportedConfiguration.video.bitrate == '1000') OK
+EXPECTED (info.supportedConfiguration.video.width == '1280') OK
+EXPECTED (info.supportedConfiguration.video.framerate == '24.5') OK
+EXPECTED (typeof info.supportedConfiguration.unsupportedProperty == 'undefined') OK
END OF TEST
Modified: trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html (243045 => 243046)
--- trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html 2019-03-16 22:00:51 UTC (rev 243046)
@@ -14,6 +14,7 @@
}
run('internals.enableMockMediaCapabilities()');
+ run('internals.settings.setMediaCapabilitiesExtensionsEnabled(true)');
run("promise = navigator.mediaCapabilities.decodingInfo({ type: 'file', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 720, bitrate: 1000, width: 1280, framerate: 24.5 }, unsupportedProperty: true });");
info = await shouldResolve(promise);
@@ -28,6 +29,20 @@
testExpected('info.supportedConfiguration.video.width', 1280);
testExpected('info.supportedConfiguration.video.framerate', 24.5);
testExpected('typeof info.supportedConfiguration.unsupportedProperty', 'undefined');
+
+ run("promise = navigator.mediaCapabilities.decodingInfo({ type: 'media-source', video: { contentType: 'video/mp4; codecs=\"avc1\"', height: 720, bitrate: 1000, width: 1280, framerate: 24.5 }, unsupportedProperty: true });");
+ info = await shouldResolve(promise);
+ testExpected('info.supported', false);
+ testExpected('info.smooth', false);
+ testExpected('info.powerEfficient', false);
+ testExpected('typeof info.supportedConfiguration', 'undefined', '!=');
+ testExpected('info.supportedConfiguration.type', 'media-source');
+ testExpected('info.supportedConfiguration.video.contentType', 'video/mp4; codecs="avc1"');
+ testExpected('info.supportedConfiguration.video.height', 720);
+ testExpected('info.supportedConfiguration.video.bitrate', 1000);
+ testExpected('info.supportedConfiguration.video.width', 1280);
+ testExpected('info.supportedConfiguration.video.framerate', 24.5);
+ testExpected('typeof info.supportedConfiguration.unsupportedProperty', 'undefined');
endTest();
}
</script>
Modified: trunk/Source/WebCore/ChangeLog (243045 => 243046)
--- trunk/Source/WebCore/ChangeLog 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebCore/ChangeLog 2019-03-16 22:00:51 UTC (rev 243046)
@@ -1,3 +1,25 @@
+2019-03-16 Jer Noble <jer.no...@apple.com>
+
+ Add a new MediaCapabilitiesExtensionsEnabled setting
+ https://bugs.webkit.org/show_bug.cgi?id=195843
+
+ Reviewed by Geoffrey Garen.
+
+ Add a new setting, MediaCapabilitiesExtensionsEnabled, which controls whether extensions
+ to the Media Capabilities API are available.
+
+ Drive-by fix: make sure that the configuration is passed through to MediaCapabilitiesInfo
+ when no factory can support the configuration.
+
+ * Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl:
+ * Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl:
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (GenerateDictionaryImplementationContent):
+ * bindings/scripts/IDLAttributes.json:
+ * page/Settings.yaml:
+ * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
+ (WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
+
2019-03-16 Zalan Bujtas <za...@apple.com>
[iOS] Unable to close trending window on naver.com.
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl (243045 => 243046)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl 2019-03-16 22:00:51 UTC (rev 243046)
@@ -28,5 +28,5 @@
JSGenerateToJSObject,
]
dictionary MediaCapabilitiesDecodingInfo : MediaCapabilitiesInfo {
- MediaDecodingConfiguration supportedConfiguration;
+ [EnabledBySetting=MediaCapabilitiesExtensions] MediaDecodingConfiguration supportedConfiguration;
};
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl (243045 => 243046)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl 2019-03-16 22:00:51 UTC (rev 243046)
@@ -28,5 +28,5 @@
JSGenerateToJSObject,
]
dictionary MediaCapabilitiesEncodingInfo : MediaCapabilitiesInfo {
- MediaEncodingConfiguration supportedConfiguration;
+ [EnabledBySetting=MediaCapabilitiesExtensions] MediaEncodingConfiguration supportedConfiguration;
};
Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (243045 => 243046)
--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm 2019-03-16 22:00:51 UTC (rev 243046)
@@ -2403,20 +2403,31 @@
# 2. Let value be the result of converting idlValue to an ECMAScript value.
# 3. Perform ! CreateDataProperty(O, key, value).
+ my $needsRuntimeCheck = NeedsRuntimeCheck($dictionary, $member);
+ my $indent = "";
+ if ($needsRuntimeCheck) {
+ my $runtimeEnableConditionalString = GenerateRuntimeEnableConditionalString($dictionary, $member, "true");
+ $result .= " if (${runtimeEnableConditionalString}) {\n";
+ $indent = " ";
+ }
+
if (!$member->isRequired && not defined $member->default) {
my $IDLType = GetIDLType($typeScope, $member->type);
my $conversionExpression = NativeToJSValueUsingReferences($member, $typeScope, "${IDLType}::extractValueFromNullable(${valueExpression})", "globalObject");
- $result .= " if (!${IDLType}::isNullValue(${valueExpression})) {\n";
- $result .= " auto ${key}Value = ${conversionExpression};\n";
- $result .= " result->putDirect(vm, JSC::Identifier::fromString(&vm, \"${key}\"), ${key}Value);\n";
- $result .= " }\n";
+ $result .= "${indent} if (!${IDLType}::isNullValue(${valueExpression})) {\n";
+ $result .= "${indent} auto ${key}Value = ${conversionExpression};\n";
+ $result .= "${indent} result->putDirect(vm, JSC::Identifier::fromString(&vm, \"${key}\"), ${key}Value);\n";
+ $result .= "${indent} }\n";
} else {
my $conversionExpression = NativeToJSValueUsingReferences($member, $typeScope, $valueExpression, "globalObject");
- $result .= " auto ${key}Value = ${conversionExpression};\n";
- $result .= " result->putDirect(vm, JSC::Identifier::fromString(&vm, \"${key}\"), ${key}Value);\n";
+ $result .= "${indent} auto ${key}Value = ${conversionExpression};\n";
+ $result .= "${indent} result->putDirect(vm, JSC::Identifier::fromString(&vm, \"${key}\"), ${key}Value);\n";
}
+ if ($needsRuntimeCheck) {
+ $result .= " }\n";
+ }
}
}
Modified: trunk/Source/WebCore/bindings/scripts/IDLAttributes.json (243045 => 243046)
--- trunk/Source/WebCore/bindings/scripts/IDLAttributes.json 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebCore/bindings/scripts/IDLAttributes.json 2019-03-16 22:00:51 UTC (rev 243046)
@@ -181,7 +181,7 @@
"values": ["*"]
},
"EnabledBySetting": {
- "contextsAllowed": ["interface", "dictionary", "enum", "attribute", "operation", "constant"],
+ "contextsAllowed": ["interface", "dictionary", "enum", "attribute", "operation", "constant", "dictionary-member"],
"values": ["*"]
},
"DisabledByQuirk": {
Modified: trunk/Source/WebCore/page/Settings.yaml (243045 => 243046)
--- trunk/Source/WebCore/page/Settings.yaml 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebCore/page/Settings.yaml 2019-03-16 22:00:51 UTC (rev 243046)
@@ -784,6 +784,10 @@
mediaCapabilitiesEnabled:
initial: false
+mediaCapabilitiesExtensionsEnabled:
+ type: bool
+ initial: false
+
clientCoordinatesRelativeToLayoutViewport:
initial: false
onChange: setNeedsRecalcStyleInAllFrames
Modified: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp (243045 => 243046)
--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp 2019-03-16 22:00:51 UTC (rev 243046)
@@ -80,13 +80,13 @@
auto factoryCallback = [] (auto factoryCallback, auto nextFactory, auto&& config, auto&& callback) mutable {
if (nextFactory == factories().end()) {
- callback({ });
+ callback({{ }, WTFMove(config)});
return;
}
auto& factory = *nextFactory;
if (!factory.createDecodingConfiguration) {
- callback({ });
+ callback({{ }, WTFMove(config)});
return;
}
Modified: trunk/Source/WebKit/ChangeLog (243045 => 243046)
--- trunk/Source/WebKit/ChangeLog 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebKit/ChangeLog 2019-03-16 22:00:51 UTC (rev 243046)
@@ -1,3 +1,12 @@
+2019-03-16 Jer Noble <jer.no...@apple.com>
+
+ Add a new MediaCapabilitiesExtensionsEnabled setting
+ https://bugs.webkit.org/show_bug.cgi?id=195843
+
+ Reviewed by Geoffrey Garen.
+
+ * Shared/WebPreferences.yaml:
+
2019-03-16 Wenson Hsieh <wenson_hs...@apple.com>
[iOS] Software keyboard never appears when editing on some websites
Modified: trunk/Source/WebKit/Shared/WebPreferences.yaml (243045 => 243046)
--- trunk/Source/WebKit/Shared/WebPreferences.yaml 2019-03-16 21:22:20 UTC (rev 243045)
+++ trunk/Source/WebKit/Shared/WebPreferences.yaml 2019-03-16 22:00:51 UTC (rev 243046)
@@ -1374,6 +1374,13 @@
category: experimental
webcoreBinding: none
+MediaCapabilitiesExtensionsEnabled:
+ type: bool
+ defaultValue: true
+ humanReadableName: "Media Capabilities Extensions"
+ humanReadableDescription: "Media Capabilities Extensions"
+ category: experimental
+
# For internal features:
# The type should be boolean.
# You must provide a humanReadableName and humanReadableDescription for all debug features. They