Diff
Modified: trunk/LayoutTests/ChangeLog (243013 => 243014)
--- trunk/LayoutTests/ChangeLog 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/LayoutTests/ChangeLog 2019-03-15 22:02:02 UTC (rev 243014)
@@ -1,3 +1,13 @@
+2019-03-15 Jer Noble <jer.no...@apple.com>
+
+ Add a "supportedConfiguration" dictionary to MediaCapabilitiesDecodingInfo and MediaCapabilitiesEncodingInfo
+ https://bugs.webkit.org/show_bug.cgi?id=195763
+
+ Reviewed by Jon Lee.
+
+ * media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt: Added.
+ * media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html: Added.
+
2019-03-15 Simon Fraser <simon.fra...@apple.com>
[Async overflow Scrolling] Update positioned node layers when overflows are scrolled
Added: trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt (0 => 243014)
--- trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt (rev 0)
+++ trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration-expected.txt 2019-03-15 22:02:02 UTC (rev 243014)
@@ -0,0 +1,16 @@
+RUN(internals.enableMockMediaCapabilities())
+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
+EXPECTED (info.smooth == 'true') OK
+EXPECTED (info.powerEfficient == 'true') OK
+EXPECTED (typeof info.supportedConfiguration != 'undefined') OK
+EXPECTED (info.supportedConfiguration.type == 'file') 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
+
Added: trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html (0 => 243014)
--- trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html (rev 0)
+++ trunk/LayoutTests/media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html 2019-03-15 22:02:02 UTC (rev 243014)
@@ -0,0 +1,36 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script src=""
+ <script type="text/_javascript_">
+ var promise;
+ var info;
+
+ async function doTest()
+ {
+ if (!window.internals) {
+ failTest("Internals is required for this test.")
+ return;
+ }
+
+ run('internals.enableMockMediaCapabilities()');
+
+ 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);
+ testExpected('info.supported', true);
+ testExpected('info.smooth', true);
+ testExpected('info.powerEfficient', true);
+ testExpected('typeof info.supportedConfiguration', 'undefined', '!=');
+ testExpected('info.supportedConfiguration.type', 'file');
+ 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>
+</head>
+<body _onload_="doTest()" />
+</html>
Modified: trunk/Source/WebCore/CMakeLists.txt (243013 => 243014)
--- trunk/Source/WebCore/CMakeLists.txt 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/CMakeLists.txt 2019-03-15 22:02:02 UTC (rev 243014)
@@ -282,6 +282,8 @@
Modules/mediacapabilities/AudioConfiguration.idl
Modules/mediacapabilities/MediaCapabilities.idl
+ Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl
+ Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl
Modules/mediacapabilities/MediaCapabilitiesInfo.idl
Modules/mediacapabilities/MediaConfiguration.idl
Modules/mediacapabilities/MediaDecodingConfiguration.idl
Modified: trunk/Source/WebCore/ChangeLog (243013 => 243014)
--- trunk/Source/WebCore/ChangeLog 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/ChangeLog 2019-03-15 22:02:02 UTC (rev 243014)
@@ -1,3 +1,52 @@
+2019-03-15 Jer Noble <jer.no...@apple.com>
+
+ Add a "supportedConfiguration" dictionary to MediaCapabilitiesDecodingInfo and MediaCapabilitiesEncodingInfo
+ https://bugs.webkit.org/show_bug.cgi?id=195763
+
+ Reviewed by Jon Lee.
+
+ Test: media/mediacapabilities/mock-decodingInfo-supportedConfiguration.html
+
+ Add support for a proposed addition to the Media Capabilities spec that would future-proof additional changes
+ to Media Capabilities by allowing sites to check exactly what properties were queried by the browser when
+ answering a decodeInfo() or enocdeInfo() query.
+
+ * CMakeLists.txt:
+ * DerivedSources-input.xcfilelist:
+ * DerivedSources-output.xcfilelist:
+ * DerivedSources.make:
+ * Modules/mediacapabilities/AudioConfiguration.idl:
+ * Modules/mediacapabilities/MediaCapabilities.cpp:
+ (WebCore::MediaCapabilities::decodingInfo):
+ (WebCore::MediaCapabilities::encodingInfo):
+ * Modules/mediacapabilities/MediaCapabilities.idl:
+ * Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl:
+ * Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl:
+ * Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
+ * Modules/mediacapabilities/MediaDecodingConfiguration.idl:
+ * Modules/mediacapabilities/MediaEncodingConfiguration.idl:
+ * Modules/mediacapabilities/VideoConfiguration.idl:
+ * Sources.txt:
+ * WebCore.xcodeproj/project.pbxproj:
+ * platform/MediaCapabilitiesDecodingInfo.h: Copied from Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h.
+ (WebCore::MediaCapabilitiesDecodingInfo::MediaCapabilitiesDecodingInfo):
+ * platform/MediaCapabilitiesEncodingInfo.h: Copied from Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h.
+ (WebCore::MediaCapabilitiesEncodingInfo::MediaCapabilitiesEncodingInfo):
+ * platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp:
+ (WebCore::createMediaPlayerDecodingConfigurationCocoa):
+ * platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h:
+ * platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.cpp:
+ (WebCore::createMediaPlayerDecodingConfigurationGStreamer):
+ * platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.h:
+ * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
+ (WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
+ (WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
+ * platform/mediacapabilities/MediaEngineConfigurationFactory.h:
+ * platform/mock/MediaEngineConfigurationFactoryMock.cpp:
+ (WebCore::MediaEngineConfigurationFactoryMock::createDecodingConfiguration):
+ (WebCore::MediaEngineConfigurationFactoryMock::createEncodingConfiguration):
+ * platform/mock/MediaEngineConfigurationFactoryMock.h:
+
2019-03-15 Antti Koivisto <an...@apple.com>
Use Region for event region even when it is a rectangle
Modified: trunk/Source/WebCore/DerivedSources-input.xcfilelist (243013 => 243014)
--- trunk/Source/WebCore/DerivedSources-input.xcfilelist 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/DerivedSources-input.xcfilelist 2019-03-15 22:02:02 UTC (rev 243014)
@@ -132,6 +132,8 @@
$(PROJECT_DIR)/Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl
$(PROJECT_DIR)/Modules/mediacapabilities/AudioConfiguration.idl
$(PROJECT_DIR)/Modules/mediacapabilities/MediaCapabilities.idl
+$(PROJECT_DIR)/Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl
+$(PROJECT_DIR)/Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl
$(PROJECT_DIR)/Modules/mediacapabilities/MediaCapabilitiesInfo.idl
$(PROJECT_DIR)/Modules/mediacapabilities/MediaConfiguration.idl
$(PROJECT_DIR)/Modules/mediacapabilities/MediaDecodingConfiguration.idl
Modified: trunk/Source/WebCore/DerivedSources-output.xcfilelist (243013 => 243014)
--- trunk/Source/WebCore/DerivedSources-output.xcfilelist 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/DerivedSources-output.xcfilelist 2019-03-15 22:02:02 UTC (rev 243014)
@@ -905,6 +905,10 @@
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMathMLElementWrapperFactory.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaCapabilities.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaCapabilities.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaCapabilitiesDecodingInfo.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaCapabilitiesDecodingInfo.h
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaCapabilitiesEncodingInfo.cpp
+$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaCapabilitiesEncodingInfo.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaCapabilitiesInfo.cpp
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaCapabilitiesInfo.h
$(BUILT_PRODUCTS_DIR)/DerivedSources/WebCore/JSMediaConfiguration.cpp
Modified: trunk/Source/WebCore/DerivedSources.make (243013 => 243014)
--- trunk/Source/WebCore/DerivedSources.make 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/DerivedSources.make 2019-03-15 22:02:02 UTC (rev 243014)
@@ -196,6 +196,8 @@
$(WebCore)/Modules/indexeddb/WorkerGlobalScopeIndexedDatabase.idl \
$(WebCore)/Modules/mediacapabilities/AudioConfiguration.idl \
$(WebCore)/Modules/mediacapabilities/MediaCapabilities.idl \
+ $(WebCore)/Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl \
+ $(WebCore)/Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl \
$(WebCore)/Modules/mediacapabilities/MediaCapabilitiesInfo.idl \
$(WebCore)/Modules/mediacapabilities/MediaConfiguration.idl \
$(WebCore)/Modules/mediacapabilities/MediaDecodingConfiguration.idl \
Modified: trunk/Source/WebCore/Modules/mediacapabilities/AudioConfiguration.idl (243013 => 243014)
--- trunk/Source/WebCore/Modules/mediacapabilities/AudioConfiguration.idl 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/Modules/mediacapabilities/AudioConfiguration.idl 2019-03-15 22:02:02 UTC (rev 243014)
@@ -23,6 +23,10 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
+[
+ EnabledBySetting=MediaCapabilities,
+ JSGenerateToJSObject,
+]
dictionary AudioConfiguration {
required DOMString contentType;
DOMString channels;
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp (243013 => 243014)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp 2019-03-15 22:02:02 UTC (rev 243014)
@@ -27,7 +27,10 @@
#include "MediaCapabilities.h"
#include "ContentType.h"
-#include "JSMediaCapabilitiesInfo.h"
+#include "JSMediaCapabilitiesDecodingInfo.h"
+#include "JSMediaCapabilitiesEncodingInfo.h"
+#include "MediaCapabilitiesDecodingInfo.h"
+#include "MediaCapabilitiesEncodingInfo.h"
#include "MediaDecodingConfiguration.h"
#include "MediaEncodingConfiguration.h"
#include "MediaEngineConfigurationFactory.h"
@@ -187,7 +190,7 @@
// consideration the current power source in order to determine the
// decoding power efficiency unless the device’s power source has side
// effects such as enabling different decoding modules.
- promise->resolve<IDLDictionary<MediaCapabilitiesInfo>>(WTFMove(info));
+ promise->resolve<IDLDictionary<MediaCapabilitiesDecodingInfo>>(WTFMove(info));
};
MediaEngineConfigurationFactory::createDecodingConfiguration(WTFMove(configuration), WTFMove(callback));
@@ -228,7 +231,7 @@
// order to determine the encoding power efficiency unless the
// device’s power source has side effects such as enabling different
// encoding modules.
- promise->resolve<IDLDictionary<MediaCapabilitiesInfo>>(WTFMove(info));
+ promise->resolve<IDLDictionary<MediaCapabilitiesEncodingInfo>>(WTFMove(info));
};
MediaEngineConfigurationFactory::createEncodingConfiguration(WTFMove(configuration), WTFMove(callback));
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl (243013 => 243014)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.idl 2019-03-15 22:02:02 UTC (rev 243014)
@@ -28,6 +28,6 @@
ImplementationLacksVTable
]
interface MediaCapabilities {
- Promise<MediaCapabilitiesInfo> decodingInfo(MediaDecodingConfiguration configuration);
- Promise<MediaCapabilitiesInfo> encodingInfo(MediaEncodingConfiguration configuration);
+ Promise<MediaCapabilitiesDecodingInfo> decodingInfo(MediaDecodingConfiguration configuration);
+ Promise<MediaCapabilitiesEncodingInfo> encodingInfo(MediaEncodingConfiguration configuration);
};
Copied: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl (from rev 243013, trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.idl) (0 => 243014)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl (rev 0)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesDecodingInfo.idl 2019-03-15 22:02:02 UTC (rev 243014)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ EnabledBySetting=MediaCapabilities,
+ JSGenerateToJSObject,
+]
+dictionary MediaCapabilitiesDecodingInfo : MediaCapabilitiesInfo {
+ MediaDecodingConfiguration supportedConfiguration;
+};
Copied: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl (from rev 243013, trunk/Source/WebCore/Modules/mediacapabilities/AudioConfiguration.idl) (0 => 243014)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl (rev 0)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesEncodingInfo.idl 2019-03-15 22:02:02 UTC (rev 243014)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+[
+ EnabledBySetting=MediaCapabilities,
+ JSGenerateToJSObject,
+]
+dictionary MediaCapabilitiesEncodingInfo : MediaCapabilitiesInfo {
+ MediaEncodingConfiguration supportedConfiguration;
+};
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.idl (243013 => 243014)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.idl 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.idl 2019-03-15 22:02:02 UTC (rev 243014)
@@ -23,6 +23,10 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
+[
+ EnabledBySetting=MediaCapabilities,
+ JSGenerateToJSObject,
+]
dictionary MediaDecodingConfiguration : MediaConfiguration {
required MediaDecodingType type;
};
Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.idl (243013 => 243014)
--- trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.idl 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.idl 2019-03-15 22:02:02 UTC (rev 243014)
@@ -23,6 +23,10 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
+[
+ EnabledBySetting=MediaCapabilities,
+ JSGenerateToJSObject,
+]
dictionary MediaEncodingConfiguration : MediaConfiguration {
required MediaEncodingType type;
};
Modified: trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.idl (243013 => 243014)
--- trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.idl 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.idl 2019-03-15 22:02:02 UTC (rev 243014)
@@ -23,6 +23,10 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
+[
+ EnabledBySetting=MediaCapabilities,
+ JSGenerateToJSObject,
+]
dictionary VideoConfiguration {
required DOMString contentType;
required unsigned long width;
Modified: trunk/Source/WebCore/Sources.txt (243013 => 243014)
--- trunk/Source/WebCore/Sources.txt 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/Sources.txt 2019-03-15 22:02:02 UTC (rev 243014)
@@ -2929,6 +2929,8 @@
JSLocation.cpp
JSLongRange.cpp
JSMediaCapabilities.cpp
+JSMediaCapabilitiesDecodingInfo.cpp
+JSMediaCapabilitiesEncodingInfo.cpp
JSMediaCapabilitiesInfo.cpp
JSMediaController.cpp
JSMediaControlsHost.cpp
Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (243013 => 243014)
--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj 2019-03-15 22:02:02 UTC (rev 243014)
@@ -4181,6 +4181,8 @@
CDC939A81E9BDFB100BB768D /* VideoToolboxSoftLink.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC939A61E9BDFB100BB768D /* VideoToolboxSoftLink.h */; };
CDC979F51C498C0900DB50D4 /* WebCoreNSErrorExtras.h in Headers */ = {isa = PBXBuildFile; fileRef = CDC979F31C498C0900DB50D4 /* WebCoreNSErrorExtras.h */; };
CDCA98EB18B2C8EB00C12FF9 /* LegacyCDMPrivateMediaPlayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CDCA98EA18B2C8EB00C12FF9 /* LegacyCDMPrivateMediaPlayer.cpp */; };
+ CDCC9BCF22387E9A00FFB51C /* MediaCapabilitiesDecodingInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CDCC9BCE22387E9A00FFB51C /* MediaCapabilitiesDecodingInfo.h */; };
+ CDCC9BD122387EAA00FFB51C /* MediaCapabilitiesEncodingInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CDCC9BD022387EAA00FFB51C /* MediaCapabilitiesEncodingInfo.h */; };
CDCD41E81C3DDB0A00965D99 /* ParsedContentRange.h in Headers */ = {isa = PBXBuildFile; fileRef = CDCD41E61C3DDB0900965D99 /* ParsedContentRange.h */; settings = {ATTRIBUTES = (Private, ); }; };
CDCFABBD18C0AF78006F8450 /* SelectionRangeData.h in Headers */ = {isa = PBXBuildFile; fileRef = CDCFABBB18C0AE31006F8450 /* SelectionRangeData.h */; settings = {ATTRIBUTES = (Private, ); }; };
CDD7089718359F6F002B3DC6 /* SampleMap.h in Headers */ = {isa = PBXBuildFile; fileRef = CDD7089518359F6F002B3DC6 /* SampleMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
@@ -13834,6 +13836,10 @@
CDC979F31C498C0900DB50D4 /* WebCoreNSErrorExtras.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreNSErrorExtras.h; sourceTree = "<group>"; };
CDCA98E918B2C8D000C12FF9 /* LegacyCDMPrivateMediaPlayer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LegacyCDMPrivateMediaPlayer.h; sourceTree = "<group>"; };
CDCA98EA18B2C8EB00C12FF9 /* LegacyCDMPrivateMediaPlayer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LegacyCDMPrivateMediaPlayer.cpp; sourceTree = "<group>"; };
+ CDCC9BC522387DA300FFB51C /* MediaCapabilitiesDecodingInfo.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = MediaCapabilitiesDecodingInfo.idl; sourceTree = "<group>"; };
+ CDCC9BCA22387E2100FFB51C /* MediaCapabilitiesEncodingInfo.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = MediaCapabilitiesEncodingInfo.idl; sourceTree = "<group>"; };
+ CDCC9BCE22387E9A00FFB51C /* MediaCapabilitiesDecodingInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaCapabilitiesDecodingInfo.h; sourceTree = "<group>"; };
+ CDCC9BD022387EAA00FFB51C /* MediaCapabilitiesEncodingInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaCapabilitiesEncodingInfo.h; sourceTree = "<group>"; };
CDCD41E51C3DDB0900965D99 /* ParsedContentRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParsedContentRange.cpp; sourceTree = "<group>"; };
CDCD41E61C3DDB0900965D99 /* ParsedContentRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ParsedContentRange.h; sourceTree = "<group>"; };
CDCE5CD014633BC900D47CCA /* EventTargetFactory.in */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EventTargetFactory.in; sourceTree = "<group>"; };
@@ -22321,6 +22327,8 @@
isa = PBXGroup;
children = (
CDBD3D2B1FE85CBB0012C545 /* AudioConfiguration.h */,
+ CDCC9BCE22387E9A00FFB51C /* MediaCapabilitiesDecodingInfo.h */,
+ CDCC9BD022387EAA00FFB51C /* MediaCapabilitiesEncodingInfo.h */,
CD0C8B582141C8CA0062F59D /* MediaCapabilitiesInfo.h */,
CDBD3D351FE85CBF0012C545 /* MediaConfiguration.h */,
CDBD3D361FE85CC00012C545 /* MediaDecodingConfiguration.h */,
@@ -26024,6 +26032,8 @@
CDA130BD1FEB332D00F53254 /* MediaCapabilities.cpp */,
CDBD3D321FE85CBE0012C545 /* MediaCapabilities.h */,
CDBD3D2F1FE85CBC0012C545 /* MediaCapabilities.idl */,
+ CDCC9BC522387DA300FFB51C /* MediaCapabilitiesDecodingInfo.idl */,
+ CDCC9BCA22387E2100FFB51C /* MediaCapabilitiesEncodingInfo.idl */,
CDBD3D331FE85CBE0012C545 /* MediaCapabilitiesInfo.idl */,
CDBD3D291FE85CB90012C545 /* MediaConfiguration.idl */,
CDBD3D3B1FE85CC20012C545 /* MediaDecodingConfiguration.idl */,
@@ -32108,6 +32118,7 @@
C65046A9167BFB5500CC2A4D /* TemplateContentDocumentFragment.h in Headers */,
26E944DD1AC4B4EA007B85B5 /* Term.h in Headers */,
6550B6A6099DF0270090D781 /* Text.h in Headers */,
+ CDCC9BD122387EAA00FFB51C /* MediaCapabilitiesEncodingInfo.h in Headers */,
93309E17099E64920056E581 /* TextAffinity.h in Headers */,
CE7B2DB51586ABAD0098B3FA /* TextAlternativeWithRange.h in Headers */,
0F54DCE61881051D003EEDBB /* TextAutoSizing.h in Headers */,
@@ -32201,6 +32212,7 @@
49E911C40EF86D47009D0CAF /* TransformationMatrix.h in Headers */,
FB484F4D171F821E00040755 /* TransformFunctions.h in Headers */,
49E911CE0EF86D47009D0CAF /* TransformOperation.h in Headers */,
+ CDCC9BCF22387E9A00FFB51C /* MediaCapabilitiesDecodingInfo.h in Headers */,
49E911D00EF86D47009D0CAF /* TransformOperations.h in Headers */,
5DB1BC6A10715A6400EFAA49 /* TransformSource.h in Headers */,
4945BFD413CF809000CC3B38 /* TransformState.h in Headers */,
Copied: trunk/Source/WebCore/platform/MediaCapabilitiesDecodingInfo.h (from rev 243013, trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h) (0 => 243014)
--- trunk/Source/WebCore/platform/MediaCapabilitiesDecodingInfo.h (rev 0)
+++ trunk/Source/WebCore/platform/MediaCapabilitiesDecodingInfo.h 2019-03-15 22:02:02 UTC (rev 243014)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "MediaCapabilitiesInfo.h"
+#include "MediaDecodingConfiguration.h"
+
+namespace WebCore {
+
+struct MediaCapabilitiesDecodingInfo : MediaCapabilitiesInfo {
+ // FIXME(C++17): remove the following constructors once all compilers support extended
+ // aggregate initialization:
+ // <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0017r1.html>
+ MediaCapabilitiesDecodingInfo() = default;
+ MediaCapabilitiesDecodingInfo(MediaDecodingConfiguration&& supportedConfiguration)
+ : MediaCapabilitiesDecodingInfo({ }, WTFMove(supportedConfiguration))
+ {
+ }
+ MediaCapabilitiesDecodingInfo(MediaCapabilitiesInfo&& info, MediaDecodingConfiguration&& supportedConfiguration)
+ : MediaCapabilitiesInfo(WTFMove(info))
+ , supportedConfiguration(WTFMove(supportedConfiguration))
+ {
+ }
+
+ MediaDecodingConfiguration supportedConfiguration;
+};
+
+}
Copied: trunk/Source/WebCore/platform/MediaCapabilitiesEncodingInfo.h (from rev 243013, trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h) (0 => 243014)
--- trunk/Source/WebCore/platform/MediaCapabilitiesEncodingInfo.h (rev 0)
+++ trunk/Source/WebCore/platform/MediaCapabilitiesEncodingInfo.h 2019-03-15 22:02:02 UTC (rev 243014)
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#pragma once
+
+#include "MediaCapabilitiesInfo.h"
+#include "MediaEncodingConfiguration.h"
+
+namespace WebCore {
+
+struct MediaCapabilitiesEncodingInfo : MediaCapabilitiesInfo {
+ // FIXME(C++17): remove the following constructors once all compilers support extended
+ // aggregate initialization:
+ // <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/p0017r1.html>
+ MediaCapabilitiesEncodingInfo() = default;
+ MediaCapabilitiesEncodingInfo(MediaEncodingConfiguration&& supportedConfiguration)
+ : MediaCapabilitiesEncodingInfo({ }, WTFMove(supportedConfiguration))
+ {
+ }
+ MediaCapabilitiesEncodingInfo(MediaCapabilitiesInfo&& info, MediaEncodingConfiguration&& supportedConfiguration)
+ : MediaCapabilitiesInfo(WTFMove(info))
+ , supportedConfiguration(WTFMove(supportedConfiguration))
+ {
+ }
+
+ MediaEncodingConfiguration supportedConfiguration;
+};
+
+}
Modified: trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp (243013 => 243014)
--- trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.cpp 2019-03-15 22:02:02 UTC (rev 243014)
@@ -29,7 +29,7 @@
#if PLATFORM(COCOA)
#include "HEVCUtilitiesCocoa.h"
-#include "MediaCapabilitiesInfo.h"
+#include "MediaCapabilitiesDecodingInfo.h"
#include "MediaDecodingConfiguration.h"
#include "MediaPlayer.h"
@@ -48,9 +48,10 @@
return 0;
}
-void createMediaPlayerDecodingConfigurationCocoa(MediaDecodingConfiguration& configuration, WTF::Function<void(MediaCapabilitiesInfo&&)>&& callback)
+void createMediaPlayerDecodingConfigurationCocoa(MediaDecodingConfiguration&& configuration, WTF::Function<void(MediaCapabilitiesDecodingInfo&&)>&& callback)
{
- MediaCapabilitiesInfo info;
+ MediaCapabilitiesDecodingInfo info;
+
if (configuration.video) {
auto& videoConfiguration = configuration.video.value();
MediaEngineSupportParameters parameters { };
@@ -57,14 +58,13 @@
parameters.type = ContentType(videoConfiguration.contentType);
parameters.isMediaSource = configuration.type == MediaDecodingType::MediaSource;
if (MediaPlayer::supportsType(parameters) != MediaPlayer::IsSupported) {
- callback({ });
+ callback({{ }, WTFMove(configuration)});
return;
}
- info.supported = true;
auto codecs = parameters.type.codecs();
if (codecs.size() != 1) {
- callback({ });
+ callback({{ }, WTFMove(configuration)});
return;
}
@@ -72,7 +72,7 @@
auto& codec = codecs[0];
auto videoCodecType = videoCodecTypeFromRFC4281Type(codec);
if (!videoCodecType) {
- callback({ });
+ callback({{ }, WTFMove(configuration)});
return;
}
@@ -79,11 +79,13 @@
if (videoCodecType == kCMVideoCodecType_HEVC) {
auto parameters = parseHEVCCodecParameters(codec);
if (!parameters || !validateHEVCParameters(parameters.value(), info)) {
- callback({ });
+ callback({{ }, WTFMove(configuration)});
return;
}
- } else if (canLoad_VideoToolbox_VTIsHardwareDecodeSupported())
+ } else if (canLoad_VideoToolbox_VTIsHardwareDecodeSupported()) {
info.powerEfficient = VTIsHardwareDecodeSupported(videoCodecType);
+ info.smooth = true;
+ }
}
if (configuration.audio) {
@@ -91,12 +93,14 @@
parameters.type = ContentType(configuration.audio.value().contentType);
parameters.isMediaSource = configuration.type == MediaDecodingType::MediaSource;
if (MediaPlayer::supportsType(parameters) != MediaPlayer::IsSupported) {
- callback({ });
+ callback({{ }, WTFMove(configuration)});
return;
}
info.supported = true;
}
+ info.supportedConfiguration = WTFMove(configuration);
+
callback(WTFMove(info));
}
Modified: trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h (243013 => 243014)
--- trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/platform/graphics/cocoa/MediaEngineConfigurationFactoryCocoa.h 2019-03-15 22:02:02 UTC (rev 243014)
@@ -29,10 +29,10 @@
namespace WebCore {
-struct MediaCapabilitiesInfo;
+struct MediaCapabilitiesDecodingInfo;
struct MediaDecodingConfiguration;
-extern void createMediaPlayerDecodingConfigurationCocoa(MediaDecodingConfiguration&, WTF::Function<void(MediaCapabilitiesInfo&&)>&&);
+extern void createMediaPlayerDecodingConfigurationCocoa(MediaDecodingConfiguration&&, WTF::Function<void(MediaCapabilitiesDecodingInfo&&)>&&);
}
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.cpp (243013 => 243014)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.cpp 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.cpp 2019-03-15 22:02:02 UTC (rev 243014)
@@ -31,7 +31,7 @@
#if USE(GSTREAMER)
#include "GStreamerRegistryScanner.h"
-#include "MediaCapabilitiesInfo.h"
+#include "MediaCapabilitiesDecodingInfo.h"
#include "MediaDecodingConfiguration.h"
#include "MediaPlayer.h"
#include <wtf/Function.h>
@@ -42,7 +42,7 @@
namespace WebCore {
-void createMediaPlayerDecodingConfigurationGStreamer(MediaDecodingConfiguration& configuration, WTF::Function<void(MediaCapabilitiesInfo&&)>&& callback)
+void createMediaPlayerDecodingConfigurationGStreamer(MediaDecodingConfiguration&& configuration, WTF::Function<void(MediaCapabilitiesDecodingInfo&&)>&& callback)
{
bool isMediaSource = configuration.type == MediaDecodingType::MediaSource;
#if ENABLE(MEDIA_SOURCE)
@@ -49,15 +49,16 @@
auto& scanner = isMediaSource ? GStreamerRegistryScannerMSE::singleton() : GStreamerRegistryScanner::singleton();
#else
if (isMediaSource) {
- callback({ });
+ callback({{ }, WTFMove(configuration)});
return;
}
auto& scanner = GStreamerRegistryScanner::singleton();
#endif
auto lookupResult = scanner.isDecodingSupported(configuration);
- MediaCapabilitiesInfo info;
+ MediaCapabilitiesDecodingInfo info;
info.supported = lookupResult.isSupported;
info.powerEfficient = lookupResult.isUsingHardware;
+ info.supportedConfiguration = WTFMove(configuration);
callback(WTFMove(info));
}
Modified: trunk/Source/WebCore/platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.h (243013 => 243014)
--- trunk/Source/WebCore/platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.h 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/platform/graphics/gstreamer/MediaEngineConfigurationFactoryGStreamer.h 2019-03-15 22:02:02 UTC (rev 243014)
@@ -33,10 +33,10 @@
namespace WebCore {
-struct MediaCapabilitiesInfo;
+struct MediaCapabilitiesDecodingInfo;
struct MediaDecodingConfiguration;
-extern void createMediaPlayerDecodingConfigurationGStreamer(MediaDecodingConfiguration&, WTF::Function<void(MediaCapabilitiesInfo&&)>&&);
+extern void createMediaPlayerDecodingConfigurationGStreamer(MediaDecodingConfiguration&&, WTF::Function<void(MediaCapabilitiesDecodingInfo&&)>&&);
}
Modified: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp (243013 => 243014)
--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp 2019-03-15 22:02:02 UTC (rev 243014)
@@ -28,7 +28,8 @@
#include "config.h"
#include "MediaEngineConfigurationFactory.h"
-#include "MediaCapabilitiesInfo.h"
+#include "MediaCapabilitiesDecodingInfo.h"
+#include "MediaCapabilitiesEncodingInfo.h"
#include "MediaDecodingConfiguration.h"
#include "MediaEncodingConfiguration.h"
#include "MediaEngineConfigurationFactoryMock.h"
@@ -52,8 +53,8 @@
}
struct MediaEngineFactory {
- void(*createDecodingConfiguration)(MediaDecodingConfiguration&, MediaEngineConfigurationFactory::DecodingConfigurationCallback&&);
- void(*createEncodingConfiguration)(MediaEncodingConfiguration&, MediaEngineConfigurationFactory::EncodingConfigurationCallback&&);
+ void(*createDecodingConfiguration)(MediaDecodingConfiguration&&, MediaEngineConfigurationFactory::DecodingConfigurationCallback&&);
+ void(*createEncodingConfiguration)(MediaEncodingConfiguration&&, MediaEngineConfigurationFactory::EncodingConfigurationCallback&&);
};
using FactoryVector = Vector<MediaEngineFactory>;
@@ -73,11 +74,11 @@
void MediaEngineConfigurationFactory::createDecodingConfiguration(MediaDecodingConfiguration&& config, MediaEngineConfigurationFactory::DecodingConfigurationCallback&& callback)
{
if (mockEnabled()) {
- MediaEngineConfigurationFactoryMock::createDecodingConfiguration(config, WTFMove(callback));
+ MediaEngineConfigurationFactoryMock::createDecodingConfiguration(WTFMove(config), WTFMove(callback));
return;
}
- auto factoryCallback = [] (auto factoryCallback, auto nextFactory, auto config, auto&& callback) mutable {
+ auto factoryCallback = [] (auto factoryCallback, auto nextFactory, auto&& config, auto&& callback) mutable {
if (nextFactory == factories().end()) {
callback({ });
return;
@@ -89,13 +90,13 @@
return;
}
- factory.createDecodingConfiguration(config, [factoryCallback, nextFactory, config, callback = WTFMove(callback)] (auto&& info) mutable {
+ factory.createDecodingConfiguration(WTFMove(config), [factoryCallback, nextFactory, config, callback = WTFMove(callback)] (auto&& info) mutable {
if (info.supported) {
callback(WTFMove(info));
return;
}
- factoryCallback(factoryCallback, ++nextFactory, config, WTFMove(callback));
+ factoryCallback(factoryCallback, ++nextFactory, WTFMove(info.supportedConfiguration), WTFMove(callback));
});
};
factoryCallback(factoryCallback, factories().begin(), config, WTFMove(callback));
@@ -104,11 +105,11 @@
void MediaEngineConfigurationFactory::createEncodingConfiguration(MediaEncodingConfiguration&& config, MediaEngineConfigurationFactory::EncodingConfigurationCallback&& callback)
{
if (mockEnabled()) {
- MediaEngineConfigurationFactoryMock::createEncodingConfiguration(config, WTFMove(callback));
+ MediaEngineConfigurationFactoryMock::createEncodingConfiguration(WTFMove(config), WTFMove(callback));
return;
}
- auto factoryCallback = [] (auto factoryCallback, auto nextFactory, auto config, auto&& callback) mutable {
+ auto factoryCallback = [] (auto factoryCallback, auto nextFactory, auto&& config, auto&& callback) mutable {
if (nextFactory == factories().end()) {
callback({ });
return;
@@ -120,16 +121,16 @@
return;
}
- factory.createEncodingConfiguration(config, [factoryCallback, nextFactory, config, callback = WTFMove(callback)] (auto&& info) mutable {
+ factory.createEncodingConfiguration(WTFMove(config), [factoryCallback, nextFactory, callback = WTFMove(callback)] (auto&& info) mutable {
if (info.supported) {
callback(WTFMove(info));
return;
}
- factoryCallback(factoryCallback, ++nextFactory, config, WTFMove(callback));
+ factoryCallback(factoryCallback, ++nextFactory, WTFMove(info.supportedConfiguration), WTFMove(callback));
});
};
- factoryCallback(factoryCallback, factories().begin(), config, WTFMove(callback));
+ factoryCallback(factoryCallback, factories().begin(), WTFMove(config), WTFMove(callback));
}
void MediaEngineConfigurationFactory::enableMock()
Modified: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h (243013 => 243014)
--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h 2019-03-15 22:02:02 UTC (rev 243014)
@@ -31,14 +31,15 @@
namespace WebCore {
-struct MediaCapabilitiesInfo;
+struct MediaCapabilitiesDecodingInfo;
+struct MediaCapabilitiesEncodingInfo;
struct MediaDecodingConfiguration;
struct MediaEncodingConfiguration;
class MediaEngineConfigurationFactory {
public:
- using DecodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesInfo&&)>;
- using EncodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesInfo&&)>;
+ using DecodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesDecodingInfo&&)>;
+ using EncodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesEncodingInfo&&)>;
static void createDecodingConfiguration(MediaDecodingConfiguration&&, DecodingConfigurationCallback&&);
static void createEncodingConfiguration(MediaEncodingConfiguration&&, EncodingConfigurationCallback&&);
Modified: trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp (243013 => 243014)
--- trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp 2019-03-15 22:02:02 UTC (rev 243014)
@@ -29,7 +29,8 @@
#include "MediaEngineConfigurationFactoryMock.h"
#include "ContentType.h"
-#include "MediaCapabilitiesInfo.h"
+#include "MediaCapabilitiesDecodingInfo.h"
+#include "MediaCapabilitiesEncodingInfo.h"
#include "MediaDecodingConfiguration.h"
#include "MediaEncodingConfiguration.h"
@@ -125,22 +126,23 @@
return true;
}
-void MediaEngineConfigurationFactoryMock::createDecodingConfiguration(MediaDecodingConfiguration& configuration, DecodingConfigurationCallback&& callback)
+void MediaEngineConfigurationFactoryMock::createDecodingConfiguration(MediaDecodingConfiguration&& configuration, DecodingConfigurationCallback&& callback)
{
if (!canDecodeMedia(configuration)) {
- callback({ });
+ MediaCapabilitiesDecodingInfo info { WTFMove(configuration) };
+ callback(WTFMove(info));
return;
}
- callback({ true, canSmoothlyDecodeMedia(configuration), canPowerEfficientlyDecodeMedia(configuration) });
+ callback({{ true, canSmoothlyDecodeMedia(configuration), canPowerEfficientlyDecodeMedia(configuration) }, WTFMove(configuration)});
}
-void MediaEngineConfigurationFactoryMock::createEncodingConfiguration(MediaEncodingConfiguration& configuration, EncodingConfigurationCallback&& callback)
+void MediaEngineConfigurationFactoryMock::createEncodingConfiguration(MediaEncodingConfiguration&& configuration, EncodingConfigurationCallback&& callback)
{
if (!canEncodeMedia(configuration)) {
- callback({ });
+ callback({{ }, WTFMove(configuration) });
return;
}
- callback({ true, canSmoothlyEncodeMedia(configuration), canPowerEfficientlyEncodeMedia(configuration) });
+ callback({{ true, canSmoothlyEncodeMedia(configuration), canPowerEfficientlyEncodeMedia(configuration) }, WTFMove(configuration)});
}
} // namespace WebCore
Modified: trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.h (243013 => 243014)
--- trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.h 2019-03-15 21:45:41 UTC (rev 243013)
+++ trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.h 2019-03-15 22:02:02 UTC (rev 243014)
@@ -31,16 +31,17 @@
namespace WebCore {
-struct MediaCapabilitiesInfo;
+struct MediaCapabilitiesDecodingInfo;
+struct MediaCapabilitiesEncodingInfo;
struct MediaDecodingConfiguration;
struct MediaEncodingConfiguration;
struct MediaEngineConfigurationFactoryMock {
- using DecodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesInfo&&)>;
- using EncodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesInfo&&)>;
+ using DecodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesDecodingInfo&&)>;
+ using EncodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesEncodingInfo&&)>;
- static void createDecodingConfiguration(MediaDecodingConfiguration&, DecodingConfigurationCallback&&);
- static void createEncodingConfiguration(MediaEncodingConfiguration&, EncodingConfigurationCallback&&);
+ static void createDecodingConfiguration(MediaDecodingConfiguration&&, DecodingConfigurationCallback&&);
+ static void createEncodingConfiguration(MediaEncodingConfiguration&&, EncodingConfigurationCallback&&);
};
}