Title: [235919] trunk
Revision
235919
Author
[email protected]
Date
2018-09-11 16:18:15 -0700 (Tue, 11 Sep 2018)

Log Message

[MediaCapabilities] Implement MediaEngineConfigurationFactory registration
https://bugs.webkit.org/show_bug.cgi?id=189438

Reviewed by Eric Carlson.

Source/WebCore:

Implement a mechanism to register platform-specific MediaEngineConfigurationFactory methods, and a mechanism to iterate
over those registered factories when createDecodingConfiguration() and createEncodingConfiguration() are called.

The Factory has been radically simplified; the concept of MediaEngineDecodingConfiguration
and MediaEngineEncodingConfiguration and its subclasess have been removed. Since the primary
objects representing video and audio configurations are IDLDictionaries, the native objects
are just structs full of POD types (and Strings). Since these have no dependencies on
higher-level HTML concepts, they can be moved into platform/ and accessed from there. This
patch also converts MediaCapabilitiesInfo to an Interface, so its implementation also can
become a struct and live in platform/. The MediaEngineDecodingConfigurationMock and
MediaEngineEncodingConfigurationMock have been consolidated in a single class which simply
parses MediaDecodingConfiguration and MediaEncodingConifguration objects (now that they live
in Platform) and return a MediaCapabilitiesInfo object (now that it does too).

* Modules/mediacapabilities/MediaCapabilities.cpp:
(WebCore::isValidVideoConfiguration):
(WebCore::MediaCapabilities::decodingInfo):
(WebCore::MediaCapabilities::encodingInfo):
* Modules/mediacapabilities/MediaCapabilitiesInfo.h: Removed.
* Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
* Modules/mediacapabilities/VideoConfiguration.idl:
* Sources.txt:
* WebCore.xcodeproj/project.pbxproj:
* platform/MediaCapabilitiesInfo.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h.
* platform/mediacapabilities/AudioConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/AudioConfiguration.h.
* platform/mediacapabilities/MediaConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaConfiguration.h.
* platform/mediacapabilities/MediaDecodingConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.h.
* platform/mediacapabilities/MediaDecodingType.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h.
* platform/mediacapabilities/MediaEncodingConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.h.
* platform/mediacapabilities/MediaEncodingType.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaEncodingType.h.
* platform/mediacapabilities/MediaEngineConfiguration.cpp: Removed.
* platform/mediacapabilities/MediaEngineConfiguration.h: Removed.
* platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
(WebCore::factories):
(WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
* platform/mediacapabilities/MediaEngineConfigurationFactory.h:
* platform/mediacapabilities/MediaEngineEncodingConfiguration.h: Removed.
* platform/mediacapabilities/VideoConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/VideoConfiguration.h.
* platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
* platform/mock/MediaEngineConfigurationFactoryMock.cpp: Added.
(WebCore::canDecodeMedia):
(WebCore::canSmoothlyDecodeMedia):
(WebCore::canPowerEfficientlyDecodeMedia):
(WebCore::canEncodeMedia):
(WebCore::canSmoothlyEncodeMedia):
(WebCore::canPowerEfficientlyEncodeMedia):
(WebCore::MediaEngineConfigurationFactoryMock::createDecodingConfiguration):
(WebCore::MediaEngineConfigurationFactoryMock::createEncodingConfiguration):
* platform/mock/MediaEngineConfigurationFactoryMock.h: Renamed from Source/WebCore/platform/mediacapabilities/MediaEngineDecodingConfiguration.h.
* platform/mock/MediaEngineDecodingConfigurationMock.cpp: Removed.
* platform/mock/MediaEngineDecodingConfigurationMock.h: Removed.
* platform/mock/MediaEngineEncodingConfigurationMock.cpp: Removed.
* platform/mock/MediaEngineEncodingConfigurationMock.h: Removed.

LayoutTests:

* media/mediacapabilities/mediacapabilities-types-expected.txt:

Modified Paths

Added Paths

Removed Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (235918 => 235919)


--- trunk/LayoutTests/ChangeLog	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/LayoutTests/ChangeLog	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,3 +1,12 @@
+2018-09-11  Jer Noble  <[email protected]>
+
+        [MediaCapabilities] Implement MediaEngineConfigurationFactory registration
+        https://bugs.webkit.org/show_bug.cgi?id=189438
+
+        Reviewed by Eric Carlson.
+
+        * media/mediacapabilities/mediacapabilities-types-expected.txt:
+
 2018-09-08  Ryosuke Niwa  <[email protected]>
 
         :first-child, :last-child, :nth-child, and :nth-of-type don't work on shadow root's children

Modified: trunk/LayoutTests/media/mediacapabilities/mediacapabilities-types-expected.txt (235918 => 235919)


--- trunk/LayoutTests/media/mediacapabilities/mediacapabilities-types-expected.txt	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/LayoutTests/media/mediacapabilities/mediacapabilities-types-expected.txt	2018-09-11 23:18:15 UTC (rev 235919)
@@ -35,10 +35,10 @@
     } rejected promise  with TypeError: Type error.
 PASS () => {
         return navigator.mediaCapabilities.decodingInfo({ type: 'file', video: { contentType: 'video/mp4; codecs="avc1"', width: 640, height: 480, bitrate: 1000, framerate: "24/a" } });
-    } rejected promise  with TypeError: Type error.
+    } rejected promise  with TypeError: The provided value is non-finite.
 PASS () => {
         return navigator.mediaCapabilities.decodingInfo({ type: 'file', video: { contentType: 'video/mp4; codecs="avc1"', width: 640, height: 480, bitrate: 1000, framerate: "24/0" } });
-    } rejected promise  with TypeError: Type error.
+    } rejected promise  with TypeError: The provided value is non-finite.
 PASS () => {
         return navigator.mediaCapabilities.decodingInfo({ type: 'invalid', video: { contentType: 'video/mp4; codecs="avc1"', width: 640, height: 480, bitrate: 1000, framerate: 24 } });
     } rejected promise  with TypeError: Type error.
@@ -74,10 +74,10 @@
     } rejected promise  with TypeError: Type error.
 PASS () => {
         return navigator.mediaCapabilities.decodingInfo({ type: 'record', video: { contentType: 'video/mp4; codecs="avc1"', width: 640, height: 480, bitrate: 1000, framerate: "24/a" } });
-    } rejected promise  with TypeError: Type error.
+    } rejected promise  with TypeError: The provided value is non-finite.
 PASS () => {
         return navigator.mediaCapabilities.decodingInfo({ type: 'record', video: { contentType: 'video/mp4; codecs="avc1"', width: 640, height: 480, bitrate: 1000, framerate: "24/-1" } });
-    } rejected promise  with TypeError: Type error.
+    } rejected promise  with TypeError: The provided value is non-finite.
 PASS () => {
         return navigator.mediaCapabilities.decodingInfo({ type: 'invalid', video: { contentType: 'video/mp4; codecs="avc1"', width: 640, height: 480, bitrate: 1000, framerate: 24 } });
     } rejected promise  with TypeError: Type error.

Modified: trunk/Source/WebCore/ChangeLog (235918 => 235919)


--- trunk/Source/WebCore/ChangeLog	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/ChangeLog	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,3 +1,65 @@
+2018-09-11  Jer Noble  <[email protected]>
+
+        [MediaCapabilities] Implement MediaEngineConfigurationFactory registration
+        https://bugs.webkit.org/show_bug.cgi?id=189438
+
+        Reviewed by Eric Carlson.
+
+        Implement a mechanism to register platform-specific MediaEngineConfigurationFactory methods, and a mechanism to iterate
+        over those registered factories when createDecodingConfiguration() and createEncodingConfiguration() are called.
+
+        The Factory has been radically simplified; the concept of MediaEngineDecodingConfiguration
+        and MediaEngineEncodingConfiguration and its subclasess have been removed. Since the primary
+        objects representing video and audio configurations are IDLDictionaries, the native objects
+        are just structs full of POD types (and Strings). Since these have no dependencies on
+        higher-level HTML concepts, they can be moved into platform/ and accessed from there. This
+        patch also converts MediaCapabilitiesInfo to an Interface, so its implementation also can
+        become a struct and live in platform/. The MediaEngineDecodingConfigurationMock and
+        MediaEngineEncodingConfigurationMock have been consolidated in a single class which simply
+        parses MediaDecodingConfiguration and MediaEncodingConifguration objects (now that they live
+        in Platform) and return a MediaCapabilitiesInfo object (now that it does too).
+
+        * Modules/mediacapabilities/MediaCapabilities.cpp:
+        (WebCore::isValidVideoConfiguration):
+        (WebCore::MediaCapabilities::decodingInfo):
+        (WebCore::MediaCapabilities::encodingInfo):
+        * Modules/mediacapabilities/MediaCapabilitiesInfo.h: Removed.
+        * Modules/mediacapabilities/MediaCapabilitiesInfo.idl:
+        * Modules/mediacapabilities/VideoConfiguration.idl:
+        * Sources.txt:
+        * WebCore.xcodeproj/project.pbxproj:
+        * platform/MediaCapabilitiesInfo.h: Copied from Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h.
+        * platform/mediacapabilities/AudioConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/AudioConfiguration.h.
+        * platform/mediacapabilities/MediaConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaConfiguration.h.
+        * platform/mediacapabilities/MediaDecodingConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.h.
+        * platform/mediacapabilities/MediaDecodingType.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h.
+        * platform/mediacapabilities/MediaEncodingConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.h.
+        * platform/mediacapabilities/MediaEncodingType.h: Renamed from Source/WebCore/Modules/mediacapabilities/MediaEncodingType.h.
+        * platform/mediacapabilities/MediaEngineConfiguration.cpp: Removed.
+        * platform/mediacapabilities/MediaEngineConfiguration.h: Removed.
+        * platform/mediacapabilities/MediaEngineConfigurationFactory.cpp:
+        (WebCore::factories):
+        (WebCore::MediaEngineConfigurationFactory::createDecodingConfiguration):
+        (WebCore::MediaEngineConfigurationFactory::createEncodingConfiguration):
+        * platform/mediacapabilities/MediaEngineConfigurationFactory.h:
+        * platform/mediacapabilities/MediaEngineEncodingConfiguration.h: Removed.
+        * platform/mediacapabilities/VideoConfiguration.h: Renamed from Source/WebCore/Modules/mediacapabilities/VideoConfiguration.h.
+        * platform/mediastream/mac/DisplayCaptureSourceCocoa.h:
+        * platform/mock/MediaEngineConfigurationFactoryMock.cpp: Added.
+        (WebCore::canDecodeMedia):
+        (WebCore::canSmoothlyDecodeMedia):
+        (WebCore::canPowerEfficientlyDecodeMedia):
+        (WebCore::canEncodeMedia):
+        (WebCore::canSmoothlyEncodeMedia):
+        (WebCore::canPowerEfficientlyEncodeMedia):
+        (WebCore::MediaEngineConfigurationFactoryMock::createDecodingConfiguration):
+        (WebCore::MediaEngineConfigurationFactoryMock::createEncodingConfiguration):
+        * platform/mock/MediaEngineConfigurationFactoryMock.h: Renamed from Source/WebCore/platform/mediacapabilities/MediaEngineDecodingConfiguration.h.
+        * platform/mock/MediaEngineDecodingConfigurationMock.cpp: Removed.
+        * platform/mock/MediaEngineDecodingConfigurationMock.h: Removed.
+        * platform/mock/MediaEngineEncodingConfigurationMock.cpp: Removed.
+        * platform/mock/MediaEngineEncodingConfigurationMock.h: Removed.
+
 2018-09-08  Ryosuke Niwa  <[email protected]>
 
         :first-child, :last-child, :nth-child, and :nth-of-type don't work on shadow root's children

Deleted: trunk/Source/WebCore/Modules/mediacapabilities/AudioConfiguration.h (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/AudioConfiguration.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/AudioConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2017 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 <wtf/Optional.h>
-#include <wtf/text/WTFString.h>
-
-namespace WebCore {
-
-struct AudioConfiguration {
-    String contentType;
-    String channels;
-    std::optional<uint64_t> bitrate;
-    std::optional<uint32_t> samplerate;
-};
-
-} // namespace WebCore

Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilities.cpp	2018-09-11 23:18:15 UTC (rev 235919)
@@ -120,33 +120,9 @@
     // 2. If none of the following is true, return false and abort these steps:
     //   o. Applying the rules for parsing floating-point number values to configuration’s framerate
     //      results in a number that is finite and greater than 0.
-    bool ok = false;
-    double framerate = configuration.framerate.toDouble(&ok);
-    if (ok && std::isfinite(framerate) && framerate > 0)
-        return true;
-
-    //   o. Configuration’s framerate contains one occurence of U+002F SLASH character (/) and the substrings
-    //      before and after this character, when applying the rules for parsing floating-point number values
-    //      results in a number that is finite and greater than 0.
-    auto frameratePieces = configuration.framerate.split('/');
-    if (frameratePieces.size() != 2)
+    if (!std::isfinite(configuration.framerate) || configuration.framerate <= 0)
         return false;
 
-    double numerator = frameratePieces[0].toDouble(&ok);
-    if (!ok)
-        return false;
-
-    double denominator = frameratePieces[1].toDouble(&ok);
-    if (!ok)
-        return false;
-
-    if (!std::isfinite(numerator) || !std::isfinite(denominator))
-        return false;
-
-    framerate = numerator / denominator;
-    if (!std::isfinite(framerate) || framerate <= 0)
-        return false;
-
     // 3. Return true.
     return true;
 }
@@ -199,34 +175,22 @@
     m_taskQueue.enqueueTask([configuration = WTFMove(configuration), promise = WTFMove(promise)] () mutable {
 
         // 2.2.3 If configuration is of type MediaDecodingConfiguration, run the following substeps:
-        MediaEngineConfigurationFactory::DecodingConfigurationCallback callback = [promise = WTFMove(promise)] (auto engineConfiguration) mutable {
-            auto info = MediaCapabilitiesInfo::create();
-
-            if (engineConfiguration) {
-                // 2.2.3.1. If the user agent is able to decode the media represented by
-                // configuration, set supported to true. Otherwise set it to false.
-                info->setSupported(engineConfiguration->canDecodeMedia());
-
-                if (info->supported()) {
-                    // 2.2.3.2. If the user agent is able to decode the media represented by
-                    // configuration at a pace that allows a smooth playback, set smooth to
-                    // true. Otherwise set it to false.
-                    info->setSmooth(engineConfiguration->canSmoothlyDecodeMedia());
-
-                    // 2.2.3.3. If the user agent is able to decode the media represented by
-                    // configuration in a power efficient manner, set powerEfficient to
-                    // true. Otherwise set it to false. The user agent SHOULD NOT take into
-                    // 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.
-                    info->setPowerEfficient(engineConfiguration->canPowerEfficientlyDecodeMedia());
-                }
-            }
-
-            promise->resolveWithNewlyCreated<IDLInterface<MediaCapabilitiesInfo>>(WTFMove(info));
+        MediaEngineConfigurationFactory::DecodingConfigurationCallback callback = [promise = WTFMove(promise)] (auto info) mutable {
+            // 2.2.3.1. If the user agent is able to decode the media represented by
+            // configuration, set supported to true. Otherwise set it to false.
+            // 2.2.3.2. If the user agent is able to decode the media represented by
+            // configuration at a pace that allows a smooth playback, set smooth to
+            // true. Otherwise set it to false.
+            // 2.2.3.3. If the user agent is able to decode the media represented by
+            // configuration in a power efficient manner, set powerEfficient to
+            // true. Otherwise set it to false. The user agent SHOULD NOT take into
+            // 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));
         };
 
-        MediaEngineConfigurationFactory::createDecodingConfiguration(configuration, callback);
+        MediaEngineConfigurationFactory::createDecodingConfiguration(WTFMove(configuration), WTFMove(callback));
     });
 }
 
@@ -249,37 +213,25 @@
     m_taskQueue.enqueueTask([configuration = WTFMove(configuration), promise = WTFMove(promise)] () mutable {
 
         // 2.2.4. If configuration is of type MediaEncodingConfiguration, run the following substeps:
-        MediaEngineConfigurationFactory::EncodingConfigurationCallback callback = [promise = WTFMove(promise)] (auto engineConfiguration) mutable {
-            auto info = MediaCapabilitiesInfo::create();
-
-            if (engineConfiguration) {
-                // 2.2.4.1. If the user agent is able to encode the media
-                // represented by configuration, set supported to true. Otherwise
-                // set it to false.
-                info->setSupported(engineConfiguration->canEncodeMedia());
-
-                if (info->supported()) {
-                    // 2.2.4.2. If the user agent is able to encode the media
-                    // represented by configuration at a pace that allows encoding
-                    // frames at the same pace as they are sent to the encoder, set
-                    // smooth to true. Otherwise set it to false.
-                    info->setSmooth(engineConfiguration->canSmoothlyEncodeMedia());
-
-                    // 2.2.4.3. If the user agent is able to encode the media
-                    // represented by configuration in a power efficient manner, set
-                    // powerEfficient to true. Otherwise set it to false. The user agent
-                    // SHOULD NOT take into consideration the current power source in
-                    // order to determine the encoding power efficiency unless the
-                    // device’s power source has side effects such as enabling different
-                    // encoding modules.
-                    info->setPowerEfficient(engineConfiguration->canPowerEfficientlyEncodeMedia());
-                }
-            }
-
-            promise->resolveWithNewlyCreated<IDLInterface<MediaCapabilitiesInfo>>(WTFMove(info));
+        MediaEngineConfigurationFactory::EncodingConfigurationCallback callback = [promise = WTFMove(promise)] (auto info) mutable {
+            // 2.2.4.1. If the user agent is able to encode the media
+            // represented by configuration, set supported to true. Otherwise
+            // set it to false.
+            // 2.2.4.2. If the user agent is able to encode the media
+            // represented by configuration at a pace that allows encoding
+            // frames at the same pace as they are sent to the encoder, set
+            // smooth to true. Otherwise set it to false.
+            // 2.2.4.3. If the user agent is able to encode the media
+            // represented by configuration in a power efficient manner, set
+            // powerEfficient to true. Otherwise set it to false. The user agent
+            // SHOULD NOT take into consideration the current power source in
+            // 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));
         };
 
-        MediaEngineConfigurationFactory::createEncodingConfiguration(configuration, callback);
+        MediaEngineConfigurationFactory::createEncodingConfiguration(WTFMove(configuration), WTFMove(callback));
 
     });
 }

Deleted: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesInfo.h (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesInfo.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesInfo.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2017 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 <wtf/RefCounted.h>
-
-namespace WebCore {
-
-class MediaCapabilitiesInfo : public RefCounted<MediaCapabilitiesInfo> {
-public:
-
-    static Ref<MediaCapabilitiesInfo> create()
-    {
-        return adoptRef(*new MediaCapabilitiesInfo());
-    }
-
-    ~MediaCapabilitiesInfo() = default;
-
-    bool supported() const { return m_supported; }
-    void setSupported(bool supported) { m_supported = supported; }
-
-    bool smooth() const { return m_smooth; }
-    void setSmooth(bool smooth) { m_smooth = smooth; }
-
-    bool powerEfficient() const { return m_powerEfficient; }
-    void setPowerEfficient(bool powerEfficient) { m_powerEfficient = powerEfficient; }
-
-private:
-    MediaCapabilitiesInfo() = default;
-
-    bool m_supported { false };
-    bool m_smooth { false };
-    bool m_powerEfficient { false };
-};
-
-}

Modified: trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesInfo.idl (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesInfo.idl	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaCapabilitiesInfo.idl	2018-09-11 23:18:15 UTC (rev 235919)
@@ -25,10 +25,10 @@
 
 [
     EnabledBySetting=MediaCapabilities,
-    ImplementationLacksVTable
+    JSGenerateToJSObject,
 ]
-interface MediaCapabilitiesInfo {
-  readonly attribute boolean supported;
-  readonly attribute boolean smooth;
-  readonly attribute boolean powerEfficient;
+dictionary MediaCapabilitiesInfo {
+  required boolean supported;
+  required boolean smooth;
+  required boolean powerEfficient;
 };

Deleted: trunk/Source/WebCore/Modules/mediacapabilities/MediaConfiguration.h (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/MediaConfiguration.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2017 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 "AudioConfiguration.h"
-#include "VideoConfiguration.h"
-#include <wtf/Optional.h>
-
-namespace WebCore {
-
-struct MediaConfiguration {
-    std::optional<VideoConfiguration> video;
-    std::optional<AudioConfiguration> audio;
-};
-
-}

Deleted: trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.h (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2017 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 "MediaConfiguration.h"
-#include "MediaDecodingType.h"
-
-namespace WebCore {
-
-struct MediaDecodingConfiguration : MediaConfiguration {
-    MediaDecodingType type;
-};
-
-}

Deleted: trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2017 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
-
-namespace WebCore {
-
-enum class MediaDecodingType {
-    File,
-    MediaSource,
-};
-
-}

Deleted: trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.h (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2017 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 "MediaConfiguration.h"
-#include "MediaEncodingType.h"
-
-namespace WebCore {
-
-struct MediaEncodingConfiguration : MediaConfiguration {
-    MediaEncodingType type;
-};
-
-}

Deleted: trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingType.h (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingType.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingType.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2017 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
-
-namespace WebCore {
-
-enum class MediaEncodingType {
-    Record,
-    Transmission,
-};
-
-}

Deleted: trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.h (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2017 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 <wtf/text/WTFString.h>
-
-namespace WebCore {
-
-struct VideoConfiguration {
-    String contentType;
-    uint32_t width;
-    uint32_t height;
-    uint64_t bitrate;
-    String framerate;
-};
-
-}

Modified: trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.idl (235918 => 235919)


--- trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.idl	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.idl	2018-09-11 23:18:15 UTC (rev 235919)
@@ -28,5 +28,5 @@
   required unsigned long width;
   required unsigned long height;
   required unsigned long long bitrate;
-  required DOMString framerate;
+  required double framerate;
 };

Modified: trunk/Source/WebCore/Sources.txt (235918 => 235919)


--- trunk/Source/WebCore/Sources.txt	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/Sources.txt	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1729,7 +1729,6 @@
 platform/graphics/transforms/TransformationMatrix.cpp
 platform/graphics/transforms/TranslateTransformOperation.cpp
 
-platform/mediacapabilities/MediaEngineConfiguration.cpp
 platform/mediacapabilities/MediaEngineConfigurationFactory.cpp
 
 platform/mediastream/CaptureDeviceManager.cpp
@@ -1753,8 +1752,7 @@
 
 platform/mock/DeviceOrientationClientMock.cpp
 platform/mock/GeolocationClientMock.cpp
-platform/mock/MediaEngineDecodingConfigurationMock.cpp
-platform/mock/MediaEngineEncodingConfigurationMock.cpp
+platform/mock/MediaEngineConfigurationFactoryMock.cpp
 platform/mock/MockRealtimeAudioSource.cpp
 platform/mock/MockRealtimeMediaSourceCenter.cpp
 platform/mock/MockRealtimeVideoSource.cpp

Modified: trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj (235918 => 235919)


--- trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/WebCore.xcodeproj/project.pbxproj	2018-09-11 23:18:15 UTC (rev 235919)
@@ -10778,16 +10778,10 @@
 		9A528E8217D7F52F00AA9518 /* FloatingObjects.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FloatingObjects.h; sourceTree = "<group>"; };
 		9AB1F37E18E2489A00534743 /* CSSToLengthConversionData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CSSToLengthConversionData.h; sourceTree = "<group>"; };
 		9AB1F37F18E2489A00534743 /* CSSToLengthConversionData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CSSToLengthConversionData.cpp; sourceTree = "<group>"; };
-		9AC6F02121148F5000CBDA06 /* MediaEngineConfiguration.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaEngineConfiguration.cpp; path = mediacapabilities/MediaEngineConfiguration.cpp; sourceTree = "<group>"; };
 		9AC6F02221148F5100CBDA06 /* MediaEngineConfigurationFactory.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaEngineConfigurationFactory.cpp; path = mediacapabilities/MediaEngineConfigurationFactory.cpp; sourceTree = "<group>"; };
-		9AC6F02321148F5200CBDA06 /* MediaEngineConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaEngineConfiguration.h; path = mediacapabilities/MediaEngineConfiguration.h; sourceTree = "<group>"; };
-		9AC6F02421148F5300CBDA06 /* MediaEngineDecodingConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaEngineDecodingConfiguration.h; path = mediacapabilities/MediaEngineDecodingConfiguration.h; sourceTree = "<group>"; };
 		9AC6F02521148F5400CBDA06 /* MediaEngineConfigurationFactory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaEngineConfigurationFactory.h; path = mediacapabilities/MediaEngineConfigurationFactory.h; sourceTree = "<group>"; };
-		9AC6F02621148F5500CBDA06 /* MediaEngineEncodingConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaEngineEncodingConfiguration.h; path = mediacapabilities/MediaEngineEncodingConfiguration.h; sourceTree = "<group>"; };
-		9AC6F02D21148F9F00CBDA06 /* MediaEngineDecodingConfigurationMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaEngineDecodingConfigurationMock.cpp; sourceTree = "<group>"; };
-		9AC6F02E21148FA100CBDA06 /* MediaEngineEncodingConfigurationMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaEngineEncodingConfigurationMock.cpp; sourceTree = "<group>"; };
-		9AC6F02F21148FA200CBDA06 /* MediaEngineDecodingConfigurationMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaEngineDecodingConfigurationMock.h; sourceTree = "<group>"; };
-		9AC6F03021148FA400CBDA06 /* MediaEngineEncodingConfigurationMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaEngineEncodingConfigurationMock.h; sourceTree = "<group>"; };
+		9AC6F02D21148F9F00CBDA06 /* MediaEngineConfigurationFactoryMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MediaEngineConfigurationFactoryMock.cpp; sourceTree = "<group>"; };
+		9AC6F02F21148FA200CBDA06 /* MediaEngineConfigurationFactoryMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaEngineConfigurationFactoryMock.h; sourceTree = "<group>"; };
 		9B03D8061BB3110D00B73F64 /* ReadableByteStreamInternalsBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableByteStreamInternalsBuiltins.h; sourceTree = "<group>"; };
 		9B03D8061BB3110D00B764C9 /* StreamInternalsBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StreamInternalsBuiltins.h; sourceTree = "<group>"; };
 		9B03D8061BB3110D00B764D8 /* ReadableStreamBuiltins.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ReadableStreamBuiltins.h; sourceTree = "<group>"; };
@@ -13166,6 +13160,7 @@
 		CCC2B51215F613060048CDD6 /* DeviceController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DeviceController.h; sourceTree = "<group>"; };
 		CD063F801E23FA8900812BE3 /* InitDataRegistry.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InitDataRegistry.cpp; sourceTree = "<group>"; };
 		CD063F811E23FA8900812BE3 /* InitDataRegistry.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InitDataRegistry.h; sourceTree = "<group>"; };
+		CD0C8B582141C8CA0062F59D /* MediaCapabilitiesInfo.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MediaCapabilitiesInfo.h; sourceTree = "<group>"; };
 		CD0EEE0A14743E34003EAFA2 /* AudioDestinationIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioDestinationIOS.h; sourceTree = "<group>"; };
 		CD0EEE0B14743E35003EAFA2 /* AudioDestinationIOS.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AudioDestinationIOS.cpp; sourceTree = "<group>"; };
 		CD127DEA14F3097900E84779 /* WebCoreFullScreenWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebCoreFullScreenWindow.h; sourceTree = "<group>"; };
@@ -13343,7 +13338,7 @@
 		CDBD3D281FE85CB80012C545 /* VideoConfiguration.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = VideoConfiguration.idl; sourceTree = "<group>"; };
 		CDBD3D291FE85CB90012C545 /* MediaConfiguration.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaConfiguration.idl; sourceTree = "<group>"; };
 		CDBD3D2A1FE85CBA0012C545 /* MediaEncodingConfiguration.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaEncodingConfiguration.idl; sourceTree = "<group>"; };
-		CDBD3D2B1FE85CBB0012C545 /* AudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AudioConfiguration.h; sourceTree = "<group>"; };
+		CDBD3D2B1FE85CBB0012C545 /* AudioConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AudioConfiguration.h; path = mediacapabilities/AudioConfiguration.h; sourceTree = "<group>"; };
 		CDBD3D2C1FE85CBB0012C545 /* ScreenLuminance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScreenLuminance.h; sourceTree = "<group>"; };
 		CDBD3D2D1FE85CBC0012C545 /* MediaEncodingType.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaEncodingType.idl; sourceTree = "<group>"; };
 		CDBD3D2E1FE85CBC0012C545 /* MediaDecodingType.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaDecodingType.idl; sourceTree = "<group>"; };
@@ -13352,17 +13347,16 @@
 		CDBD3D311FE85CBE0012C545 /* NavigatorMediaCapabilities.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = NavigatorMediaCapabilities.idl; sourceTree = "<group>"; };
 		CDBD3D321FE85CBE0012C545 /* MediaCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaCapabilities.h; sourceTree = "<group>"; };
 		CDBD3D331FE85CBE0012C545 /* MediaCapabilitiesInfo.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaCapabilitiesInfo.idl; sourceTree = "<group>"; };
-		CDBD3D341FE85CBF0012C545 /* VideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VideoConfiguration.h; sourceTree = "<group>"; };
-		CDBD3D351FE85CBF0012C545 /* MediaConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaConfiguration.h; sourceTree = "<group>"; };
-		CDBD3D361FE85CC00012C545 /* MediaDecodingConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaDecodingConfiguration.h; sourceTree = "<group>"; };
-		CDBD3D371FE85CC00012C545 /* MediaEncodingConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaEncodingConfiguration.h; sourceTree = "<group>"; };
-		CDBD3D381FE85CC00012C545 /* MediaDecodingType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaDecodingType.h; sourceTree = "<group>"; };
+		CDBD3D341FE85CBF0012C545 /* VideoConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = VideoConfiguration.h; path = mediacapabilities/VideoConfiguration.h; sourceTree = "<group>"; };
+		CDBD3D351FE85CBF0012C545 /* MediaConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaConfiguration.h; path = mediacapabilities/MediaConfiguration.h; sourceTree = "<group>"; };
+		CDBD3D361FE85CC00012C545 /* MediaDecodingConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaDecodingConfiguration.h; path = mediacapabilities/MediaDecodingConfiguration.h; sourceTree = "<group>"; };
+		CDBD3D371FE85CC00012C545 /* MediaEncodingConfiguration.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaEncodingConfiguration.h; path = mediacapabilities/MediaEncodingConfiguration.h; sourceTree = "<group>"; };
+		CDBD3D381FE85CC00012C545 /* MediaDecodingType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaDecodingType.h; path = mediacapabilities/MediaDecodingType.h; sourceTree = "<group>"; };
 		CDBD3D391FE85CC10012C545 /* NavigatorMediaCapabilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NavigatorMediaCapabilities.h; sourceTree = "<group>"; };
 		CDBD3D3A1FE85CC10012C545 /* ScreenColorGamut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScreenColorGamut.h; sourceTree = "<group>"; };
 		CDBD3D3B1FE85CC20012C545 /* MediaDecodingConfiguration.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MediaDecodingConfiguration.idl; sourceTree = "<group>"; };
 		CDBD3D3C1FE85CC20012C545 /* AudioConfiguration.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AudioConfiguration.idl; sourceTree = "<group>"; };
-		CDBD3D3D1FE85CC30012C545 /* MediaCapabilitiesInfo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaCapabilitiesInfo.h; sourceTree = "<group>"; };
-		CDBD3D3E1FE85CC30012C545 /* MediaEncodingType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaEncodingType.h; sourceTree = "<group>"; };
+		CDBD3D3E1FE85CC30012C545 /* MediaEncodingType.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MediaEncodingType.h; path = mediacapabilities/MediaEncodingType.h; sourceTree = "<group>"; };
 		CDBD3D3F1FE85CC30012C545 /* ScreenColorGamut.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ScreenColorGamut.idl; sourceTree = "<group>"; };
 		CDBEAEAA19D92B6C00BEBA88 /* MediaSelectionGroupAVFObjC.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MediaSelectionGroupAVFObjC.mm; sourceTree = "<group>"; };
 		CDBEAEAB19D92B6C00BEBA88 /* MediaSelectionGroupAVFObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MediaSelectionGroupAVFObjC.h; sourceTree = "<group>"; };
@@ -18808,10 +18802,8 @@
 				CDF2B005182053DF00F2B424 /* mediasource */,
 				59309A1011F4AE5800250603 /* DeviceOrientationClientMock.cpp */,
 				59309A1211F4AE6A00250603 /* DeviceOrientationClientMock.h */,
-				9AC6F02D21148F9F00CBDA06 /* MediaEngineDecodingConfigurationMock.cpp */,
-				9AC6F02F21148FA200CBDA06 /* MediaEngineDecodingConfigurationMock.h */,
-				9AC6F02E21148FA100CBDA06 /* MediaEngineEncodingConfigurationMock.cpp */,
-				9AC6F03021148FA400CBDA06 /* MediaEngineEncodingConfigurationMock.h */,
+				9AC6F02D21148F9F00CBDA06 /* MediaEngineConfigurationFactoryMock.cpp */,
+				9AC6F02F21148FA200CBDA06 /* MediaEngineConfigurationFactoryMock.h */,
 				077B64141B95F703003E9AD5 /* MediaPlaybackTargetMock.cpp */,
 				077B64151B95F703003E9AD5 /* MediaPlaybackTargetMock.h */,
 				077B64101B94F12E003E9AD5 /* MediaPlaybackTargetPickerMock.cpp */,
@@ -21237,12 +21229,16 @@
 		9AC6F02021148F1E00CBDA06 /* mediacapabilities */ = {
 			isa = PBXGroup;
 			children = (
-				9AC6F02121148F5000CBDA06 /* MediaEngineConfiguration.cpp */,
-				9AC6F02321148F5200CBDA06 /* MediaEngineConfiguration.h */,
+				CDBD3D2B1FE85CBB0012C545 /* AudioConfiguration.h */,
+				CDBD3D351FE85CBF0012C545 /* MediaConfiguration.h */,
+				CDBD3D381FE85CC00012C545 /* MediaDecodingType.h */,
+				CDBD3D341FE85CBF0012C545 /* VideoConfiguration.h */,
+				CDBD3D361FE85CC00012C545 /* MediaDecodingConfiguration.h */,
+				CDBD3D371FE85CC00012C545 /* MediaEncodingConfiguration.h */,
+				CDBD3D3E1FE85CC30012C545 /* MediaEncodingType.h */,
 				9AC6F02221148F5100CBDA06 /* MediaEngineConfigurationFactory.cpp */,
 				9AC6F02521148F5400CBDA06 /* MediaEngineConfigurationFactory.h */,
-				9AC6F02421148F5300CBDA06 /* MediaEngineDecodingConfiguration.h */,
-				9AC6F02621148F5500CBDA06 /* MediaEngineEncodingConfiguration.h */,
+				CD0C8B582141C8CA0062F59D /* MediaCapabilitiesInfo.h */,
 			);
 			name = mediacapabilities;
 			sourceTree = "<group>";
@@ -24837,22 +24833,15 @@
 		CDBD3D271FE85C920012C545 /* mediacapabilities */ = {
 			isa = PBXGroup;
 			children = (
-				CDBD3D2B1FE85CBB0012C545 /* AudioConfiguration.h */,
 				CDBD3D3C1FE85CC20012C545 /* AudioConfiguration.idl */,
 				CDA130BD1FEB332D00F53254 /* MediaCapabilities.cpp */,
 				CDBD3D321FE85CBE0012C545 /* MediaCapabilities.h */,
 				CDBD3D2F1FE85CBC0012C545 /* MediaCapabilities.idl */,
-				CDBD3D3D1FE85CC30012C545 /* MediaCapabilitiesInfo.h */,
 				CDBD3D331FE85CBE0012C545 /* MediaCapabilitiesInfo.idl */,
-				CDBD3D351FE85CBF0012C545 /* MediaConfiguration.h */,
 				CDBD3D291FE85CB90012C545 /* MediaConfiguration.idl */,
-				CDBD3D361FE85CC00012C545 /* MediaDecodingConfiguration.h */,
 				CDBD3D3B1FE85CC20012C545 /* MediaDecodingConfiguration.idl */,
-				CDBD3D381FE85CC00012C545 /* MediaDecodingType.h */,
 				CDBD3D2E1FE85CBC0012C545 /* MediaDecodingType.idl */,
-				CDBD3D371FE85CC00012C545 /* MediaEncodingConfiguration.h */,
 				CDBD3D2A1FE85CBA0012C545 /* MediaEncodingConfiguration.idl */,
-				CDBD3D3E1FE85CC30012C545 /* MediaEncodingType.h */,
 				CDBD3D2D1FE85CBC0012C545 /* MediaEncodingType.idl */,
 				CDA130BB1FEB332C00F53254 /* NavigatorMediaCapabilities.cpp */,
 				CDBD3D391FE85CC10012C545 /* NavigatorMediaCapabilities.h */,
@@ -24861,7 +24850,6 @@
 				CDBD3D3F1FE85CC30012C545 /* ScreenColorGamut.idl */,
 				CDBD3D2C1FE85CBB0012C545 /* ScreenLuminance.h */,
 				CDBD3D301FE85CBD0012C545 /* ScreenLuminance.idl */,
-				CDBD3D341FE85CBF0012C545 /* VideoConfiguration.h */,
 				CDBD3D281FE85CB80012C545 /* VideoConfiguration.idl */,
 			);
 			path = mediacapabilities;

Copied: trunk/Source/WebCore/platform/MediaCapabilitiesInfo.h (from rev 235917, trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h) (0 => 235919)


--- trunk/Source/WebCore/platform/MediaCapabilitiesInfo.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/MediaCapabilitiesInfo.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2018 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
+
+namespace WebCore {
+    
+struct MediaCapabilitiesInfo {
+    bool supported { false };
+    bool smooth { false };
+    bool powerEfficient { false };
+};
+    
+}

Copied: trunk/Source/WebCore/platform/mediacapabilities/AudioConfiguration.h (from rev 235917, trunk/Source/WebCore/Modules/mediacapabilities/AudioConfiguration.h) (0 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/AudioConfiguration.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediacapabilities/AudioConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 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 <wtf/Optional.h>
+#include <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+struct AudioConfiguration {
+    String contentType;
+    String channels;
+    uint64_t bitrate;
+    uint32_t samplerate;
+};
+
+} // namespace WebCore

Copied: trunk/Source/WebCore/platform/mediacapabilities/MediaConfiguration.h (from rev 235917, trunk/Source/WebCore/Modules/mediacapabilities/MediaConfiguration.h) (0 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaConfiguration.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2017 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 "AudioConfiguration.h"
+#include "VideoConfiguration.h"
+#include <wtf/Optional.h>
+
+namespace WebCore {
+
+struct MediaConfiguration {
+    std::optional<VideoConfiguration> video;
+    std::optional<AudioConfiguration> audio;
+};
+
+}

Copied: trunk/Source/WebCore/platform/mediacapabilities/MediaDecodingConfiguration.h (from rev 235917, trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingConfiguration.h) (0 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaDecodingConfiguration.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaDecodingConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2017 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 "MediaConfiguration.h"
+#include "MediaDecodingType.h"
+
+namespace WebCore {
+
+struct MediaDecodingConfiguration : MediaConfiguration {
+    MediaDecodingType type;
+};
+
+}

Copied: trunk/Source/WebCore/platform/mediacapabilities/MediaDecodingType.h (from rev 235917, trunk/Source/WebCore/Modules/mediacapabilities/MediaDecodingType.h) (0 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaDecodingType.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaDecodingType.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 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
+
+namespace WebCore {
+
+enum class MediaDecodingType {
+    File,
+    MediaSource,
+};
+
+}

Copied: trunk/Source/WebCore/platform/mediacapabilities/MediaEncodingConfiguration.h (from rev 235917, trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingConfiguration.h) (0 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaEncodingConfiguration.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEncodingConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2017 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 "MediaConfiguration.h"
+#include "MediaEncodingType.h"
+
+namespace WebCore {
+
+struct MediaEncodingConfiguration : MediaConfiguration {
+    MediaEncodingType type;
+};
+
+}

Copied: trunk/Source/WebCore/platform/mediacapabilities/MediaEncodingType.h (from rev 235917, trunk/Source/WebCore/Modules/mediacapabilities/MediaEncodingType.h) (0 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaEncodingType.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEncodingType.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2017 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
+
+namespace WebCore {
+
+enum class MediaEncodingType {
+    Record,
+    Transmission,
+};
+
+}

Deleted: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.cpp (235918 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.cpp	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.cpp	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2018 Igalia S.L.
- *
- * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * HOLDER OR 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.
- */
-
-#include "config.h"
-#include "MediaEngineConfiguration.h"
-
-namespace WebCore {
-
-MediaEngineVideoConfiguration::MediaEngineVideoConfiguration(VideoConfiguration&& config)
-    : m_type(config.contentType)
-    , m_width(config.width)
-    , m_height(config.height)
-    , m_bitrate(config.bitrate)
-    , m_frameRateNumerator(0)
-    , m_frameRateDenominator(1)
-{
-    bool ok = false;
-    m_frameRateNumerator = config.framerate.toDouble(&ok);
-    if (ok)
-        return;
-
-    auto frameratePieces = config.framerate.split('/');
-    if (frameratePieces.size() != 2)
-        return;
-
-    double numerator = frameratePieces[0].toDouble(&ok);
-    if (!ok || !numerator)
-        return;
-
-    double denominator = frameratePieces[1].toDouble(&ok);
-    if (!ok || !denominator)
-        return;
-
-    if (!std::isfinite(numerator) || !std::isfinite(denominator))
-        return;
-
-    m_frameRateNumerator = numerator;
-    m_frameRateDenominator = denominator;
-}
-
-MediaEngineAudioConfiguration::MediaEngineAudioConfiguration(AudioConfiguration&& config)
-    : m_type(config.contentType)
-    , m_channels(config.channels)
-    , m_bitrate(0)
-    , m_samplerate(0)
-{
-    if (config.bitrate)
-        m_bitrate = config.bitrate.value();
-
-    if (config.samplerate)
-        m_samplerate = config.samplerate.value();
-}
-
-MediaEngineConfiguration::MediaEngineConfiguration(MediaConfiguration&& config)
-{
-    if (config.audio)
-        m_audioConfiguration = MediaEngineAudioConfiguration::create(config.audio.value());
-
-    if (config.video)
-        m_videoConfiguration = MediaEngineVideoConfiguration::create(config.video.value());
-}
-
-} // namespace WebCore

Deleted: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.h (235918 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2018 Igalia S.L.
- *
- * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * HOLDER OR 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 "AudioConfiguration.h"
-#include "ContentType.h"
-#include "IntSize.h"
-#include "MediaConfiguration.h"
-#include "VideoConfiguration.h"
-
-#include <wtf/Forward.h>
-
-namespace WebCore {
-class MediaEngineConfiguration;
-
-class MediaEngineVideoConfiguration : public RefCounted<MediaEngineVideoConfiguration> {
-public:
-    static Ref<MediaEngineVideoConfiguration> create(VideoConfiguration& config)
-    {
-        return adoptRef(*new MediaEngineVideoConfiguration(WTFMove(config)));
-    };
-
-    ContentType contentType() const { return m_type; };
-    IntSize size() const { return IntSize(m_width, m_height); };
-    uint64_t bitrate() const { return m_bitrate; };
-    double framerate() const { return m_frameRateNumerator / m_frameRateDenominator; };
-
-private:
-    MediaEngineVideoConfiguration(VideoConfiguration&&);
-
-    ContentType m_type;
-    uint32_t m_width;
-    uint32_t m_height;
-    uint64_t m_bitrate;
-    double m_frameRateNumerator;
-    double m_frameRateDenominator;
-};
-
-class MediaEngineAudioConfiguration : public RefCounted<MediaEngineAudioConfiguration> {
-public:
-    static Ref<MediaEngineAudioConfiguration> create(AudioConfiguration& config)
-    {
-        return adoptRef(*new MediaEngineAudioConfiguration(WTFMove(config)));
-    };
-
-    ContentType contentType() const { return m_type; };
-    String channels() const { return m_channels; };
-    uint64_t bitrate() const { return m_bitrate; };
-    uint32_t samplerate() const { return m_samplerate; };
-
-private:
-    MediaEngineAudioConfiguration(AudioConfiguration&&);
-
-    ContentType m_type;
-    String m_channels;
-    uint64_t m_bitrate;
-    uint32_t m_samplerate;
-};
-
-class MediaEngineConfiguration : public RefCounted<MediaEngineConfiguration> {
-public:
-    MediaEngineConfiguration(MediaConfiguration&&);
-    virtual ~MediaEngineConfiguration() = default;
-
-    enum class ImplementationType {
-        Mock,
-    };
-
-    virtual ImplementationType implementationType() const = 0;
-
-    RefPtr<MediaEngineAudioConfiguration> audioConfiguration() const { return m_audioConfiguration; };
-    RefPtr<MediaEngineVideoConfiguration> videoConfiguration() const { return m_videoConfiguration; };
-
-private:
-    RefPtr<MediaEngineAudioConfiguration> m_audioConfiguration;
-    RefPtr<MediaEngineVideoConfiguration> m_videoConfiguration;
-};
-
-} // namespace WebCore
-
-#define SPECIALIZE_TYPE_TRAITS_MEDIA_ENGINE_CONFIGURATION(ToValueTypeName, ImplementationTypeName) \
-    SPECIALIZE_TYPE_TRAITS_BEGIN(ToValueTypeName)                       \
-    static bool isType(const WebCore::MediaEngineConfiguration& config) { return config.implementationType() == ImplementationTypeName; } \
-    SPECIALIZE_TYPE_TRAITS_END()

Modified: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp (235918 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.cpp	2018-09-11 23:18:15 UTC (rev 235919)
@@ -28,11 +28,12 @@
 #include "config.h"
 #include "MediaEngineConfigurationFactory.h"
 
-#include "DeprecatedGlobalSettings.h"
-#include "MediaEngineDecodingConfiguration.h"
-#include "MediaEngineDecodingConfigurationMock.h"
-#include "MediaEngineEncodingConfiguration.h"
-#include "MediaEngineEncodingConfigurationMock.h"
+#include "MediaCapabilitiesInfo.h"
+#include "MediaDecodingConfiguration.h"
+#include "MediaEncodingConfiguration.h"
+#include "MediaEngineConfigurationFactoryMock.h"
+#include <wtf/NeverDestroyed.h>
+#include <wtf/Vector.h>
 
 namespace WebCore {
 
@@ -42,22 +43,68 @@
     return enabled;
 }
 
-void MediaEngineConfigurationFactory::createDecodingConfiguration(MediaDecodingConfiguration& config, MediaEngineConfigurationFactory::DecodingConfigurationCallback& callback)
+struct MediaEngineFactory {
+    void(*createDecodingConfiguration)(MediaDecodingConfiguration&, MediaEngineConfigurationFactory::DecodingConfigurationCallback&&);
+    void(*createEncodingConfiguration)(MediaEncodingConfiguration&, MediaEngineConfigurationFactory::EncodingConfigurationCallback&&);
+};
+
+using FactoryVector = Vector<MediaEngineFactory>;
+static const FactoryVector& factories()
 {
+    static NeverDestroyed<FactoryVector> factories = makeNeverDestroyed(FactoryVector({ }));
+    return factories;
+}
+
+void MediaEngineConfigurationFactory::createDecodingConfiguration(MediaDecodingConfiguration&& config, MediaEngineConfigurationFactory::DecodingConfigurationCallback&& callback)
+{
     if (mockEnabled()) {
-        MediaEngineDecodingConfigurationMock::create(config, callback);
+        MediaEngineConfigurationFactoryMock::createDecodingConfiguration(config, WTFMove(callback));
         return;
     }
-    callback(nullptr);
+
+    auto factoryCallback = [] (auto factoryCallback, auto nextFactory, auto config, auto&& callback) mutable {
+        if (nextFactory == factories().end()) {
+            callback({ });
+            return;
+        }
+
+        auto& factory = *nextFactory;
+        factory.createDecodingConfiguration(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, factories().begin(), config, WTFMove(callback));
 }
 
-void MediaEngineConfigurationFactory::createEncodingConfiguration(MediaEncodingConfiguration& config, MediaEngineConfigurationFactory::EncodingConfigurationCallback& callback)
+void MediaEngineConfigurationFactory::createEncodingConfiguration(MediaEncodingConfiguration&& config, MediaEngineConfigurationFactory::EncodingConfigurationCallback&& callback)
 {
     if (mockEnabled()) {
-        MediaEngineEncodingConfigurationMock::create(config, callback);
+        MediaEngineConfigurationFactoryMock::createEncodingConfiguration(config, WTFMove(callback));
         return;
     }
-    callback(nullptr);
+
+    auto factoryCallback = [] (auto factoryCallback, auto nextFactory, auto config, auto&& callback) mutable {
+        if (nextFactory == factories().end()) {
+            callback({ });
+            return;
+        }
+
+        auto& factory = *nextFactory;
+        factory.createEncodingConfiguration(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, factories().begin(), config, WTFMove(callback));
 }
 
 void MediaEngineConfigurationFactory::enableMock()

Modified: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h (235918 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineConfigurationFactory.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -27,21 +27,21 @@
 
 #pragma once
 
-#include "MediaCapabilities.h"
-#include "MediaDecodingConfiguration.h"
-#include "MediaEngineDecodingConfiguration.h"
-#include "MediaEngineEncodingConfiguration.h"
-#include <wtf/Forward.h>
+#include <wtf/Function.h>
 
 namespace WebCore {
 
+struct MediaCapabilitiesInfo;
+struct MediaDecodingConfiguration;
+struct MediaEncodingConfiguration;
+
 class MediaEngineConfigurationFactory {
 public:
-    using DecodingConfigurationCallback = WTF::Function<void(RefPtr<MediaEngineDecodingConfiguration>)>;
-    using EncodingConfigurationCallback = WTF::Function<void(RefPtr<MediaEngineEncodingConfiguration>)>;
+    using DecodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesInfo&&)>;
+    using EncodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesInfo&&)>;
 
-    static void createDecodingConfiguration(MediaDecodingConfiguration&, DecodingConfigurationCallback&);
-    static void createEncodingConfiguration(MediaEncodingConfiguration&, EncodingConfigurationCallback&);
+    static void createDecodingConfiguration(MediaDecodingConfiguration&&, DecodingConfigurationCallback&&);
+    static void createEncodingConfiguration(MediaEncodingConfiguration&&, EncodingConfigurationCallback&&);
 
     WEBCORE_EXPORT static void enableMock();
     WEBCORE_EXPORT static void disableMock();

Deleted: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineDecodingConfiguration.h (235918 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineDecodingConfiguration.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineDecodingConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2018 Igalia S.L.
- *
- * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * HOLDER OR 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 "MediaDecodingConfiguration.h"
-#include "MediaEngineConfiguration.h"
-
-#include <wtf/Forward.h>
-
-namespace WebCore {
-
-class MediaEngineDecodingConfiguration : public MediaEngineConfiguration {
-public:
-    MediaEngineDecodingConfiguration(MediaDecodingConfiguration&& config)
-        : MediaEngineConfiguration(reinterpret_cast<MediaConfiguration&&>(config))
-        , m_decodingType(config.type)
-    {
-    }
-
-    virtual ~MediaEngineDecodingConfiguration() = default;
-
-    virtual bool canDecodeMedia() { return false; };
-    virtual bool canSmoothlyDecodeMedia() { return false; };
-    virtual bool canPowerEfficientlyDecodeMedia() { return false; };
-
-    MediaDecodingType decodingType() const { return m_decodingType; };
-
-private:
-    MediaDecodingType m_decodingType;
-};
-
-} // namespace WebCore

Deleted: trunk/Source/WebCore/platform/mediacapabilities/MediaEngineEncodingConfiguration.h (235918 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/MediaEngineEncodingConfiguration.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mediacapabilities/MediaEngineEncodingConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2018 Igalia S.L.
- *
- * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * HOLDER OR 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 "MediaEncodingConfiguration.h"
-#include "MediaEngineConfiguration.h"
-
-#include <wtf/Forward.h>
-
-namespace WebCore {
-
-class MediaEngineEncodingConfiguration : public MediaEngineConfiguration {
-public:
-    MediaEngineEncodingConfiguration(MediaEncodingConfiguration&& config)
-        : MediaEngineConfiguration(reinterpret_cast<MediaConfiguration&&>(config))
-        , m_encodingType(config.type)
-    {
-    }
-
-    virtual ~MediaEngineEncodingConfiguration() = default;
-
-    virtual bool canEncodeMedia() { return false; };
-    virtual bool canSmoothlyEncodeMedia() { return false; };
-    virtual bool canPowerEfficientlyEncodeMedia() { return false; };
-
-    MediaEncodingType encodingType() const { return m_encodingType; };
-
-private:
-    MediaEncodingType m_encodingType;
-};
-
-} // namespace WebCore

Copied: trunk/Source/WebCore/platform/mediacapabilities/VideoConfiguration.h (from rev 235917, trunk/Source/WebCore/Modules/mediacapabilities/VideoConfiguration.h) (0 => 235919)


--- trunk/Source/WebCore/platform/mediacapabilities/VideoConfiguration.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mediacapabilities/VideoConfiguration.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,40 @@
+/*
+ * Copyright (C) 2017 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 <wtf/text/WTFString.h>
+
+namespace WebCore {
+
+struct VideoConfiguration {
+    String contentType;
+    uint32_t width;
+    uint32_t height;
+    uint64_t bitrate;
+    double framerate;
+};
+
+}

Modified: trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.h (235918 => 235919)


--- trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mediastream/mac/DisplayCaptureSourceCocoa.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -34,6 +34,9 @@
 #include <wtf/RunLoop.h>
 #include <wtf/text/WTFString.h>
 
+typedef struct __CVBuffer *CVPixelBufferRef;
+typedef struct __IOSurface *IOSurfaceRef;
+
 namespace WTF {
 class MediaTime;
 }

Added: trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp (0 => 235919)


--- trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp	                        (rev 0)
+++ trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.cpp	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2018 Igalia S.L.
+ *
+ * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * HOLDER OR 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.
+ */
+
+#include "config.h"
+#include "MediaEngineConfigurationFactoryMock.h"
+
+#include "ContentType.h"
+#include "MediaCapabilitiesInfo.h"
+#include "MediaDecodingConfiguration.h"
+#include "MediaEncodingConfiguration.h"
+
+namespace WebCore {
+
+static bool canDecodeMedia(const MediaDecodingConfiguration& configuration)
+{
+    // The mock implementation supports only local file playback.
+    if (configuration.type == MediaDecodingType::MediaSource)
+        return false;
+
+    // Maxing out video decoding support at 720P.
+    auto videoConfig = configuration.video;
+    if (videoConfig && videoConfig->width > 1280 && videoConfig->height > 720)
+        return false;
+
+    // Audio decoding support limited to audio/mp4.
+    auto audioConfig = configuration.audio;
+    if (audioConfig)
+        return ContentType(audioConfig->contentType).containerType() == "audio/mp4";
+
+    return true;
+}
+
+static bool canSmoothlyDecodeMedia(const MediaDecodingConfiguration& configuration)
+{
+    auto videoConfig = configuration.video;
+    if (videoConfig && videoConfig->framerate > 30)
+        return false;
+
+    auto audioConfig = configuration.audio;
+    if (audioConfig)
+        return audioConfig->channels == "2";
+
+    return true;
+}
+
+static bool canPowerEfficientlyDecodeMedia(const MediaDecodingConfiguration& configuration)
+{
+    auto videoConfig = configuration.video;
+    if (videoConfig && ContentType(videoConfig->contentType).containerType() != "video/mp4")
+        return false;
+
+    auto audioConfig = configuration.audio;
+    if (audioConfig)
+        return audioConfig->bitrate <= 1000;
+
+    return true;
+}
+
+static bool canEncodeMedia(const MediaEncodingConfiguration& configuration)
+{
+    // The mock implementation supports only local file playback.
+    if (configuration.type == MediaEncodingType::Record)
+        return false;
+
+    // Maxing out video encoding support at 720P.
+    auto videoConfig = configuration.video;
+    if (videoConfig && videoConfig->width > 1280 && videoConfig->height > 720)
+        return false;
+
+    // Audio encoding support limited to audio/mp4.
+    auto audioConfig = configuration.audio;
+    if (audioConfig && ContentType(audioConfig->contentType).containerType() != "audio/mp4")
+        return false;
+
+    return true;
+}
+
+static bool canSmoothlyEncodeMedia(const MediaEncodingConfiguration& configuration)
+{
+    auto videoConfig = configuration.video;
+    if (videoConfig && videoConfig->framerate > 30)
+        return false;
+
+    auto audioConfig = configuration.audio;
+    if (audioConfig && audioConfig->channels != "2")
+        return false;
+
+    return true;
+}
+
+static bool canPowerEfficientlyEncodeMedia(const MediaEncodingConfiguration& configuration)
+{
+    auto videoConfig = configuration.video;
+    if (videoConfig && ContentType(videoConfig->contentType).containerType() != "video/mp4")
+        return false;
+
+    auto audioConfig = configuration.audio;
+    if (audioConfig && audioConfig->bitrate > 1000)
+        return false;
+
+    return true;
+}
+
+void MediaEngineConfigurationFactoryMock::createDecodingConfiguration(MediaDecodingConfiguration& configuration, DecodingConfigurationCallback&& callback)
+{
+    if (!canDecodeMedia(configuration)) {
+        callback({ });
+        return;
+    }
+    callback({ true, canSmoothlyDecodeMedia(configuration), canPowerEfficientlyDecodeMedia(configuration) });
+}
+
+void MediaEngineConfigurationFactoryMock::createEncodingConfiguration(MediaEncodingConfiguration& configuration, EncodingConfigurationCallback&& callback)
+{
+    if (!canEncodeMedia(configuration)) {
+        callback({ });
+        return;
+    }
+    callback({ true, canSmoothlyEncodeMedia(configuration), canPowerEfficientlyEncodeMedia(configuration) });
+}
+
+} // namespace WebCore

Copied: trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.h (from rev 235917, trunk/Source/WebCore/platform/mediacapabilities/MediaEngineDecodingConfiguration.h) (0 => 235919)


--- trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.h	                        (rev 0)
+++ trunk/Source/WebCore/platform/mock/MediaEngineConfigurationFactoryMock.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2018 Igalia S.L.
+ *
+ * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
+ * HOLDER OR 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 <wtf/Function.h>
+
+namespace WebCore {
+
+struct MediaCapabilitiesInfo;
+struct MediaDecodingConfiguration;
+struct MediaEncodingConfiguration;
+
+struct MediaEngineConfigurationFactoryMock {
+    using DecodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesInfo&&)>;
+    using EncodingConfigurationCallback = WTF::Function<void(MediaCapabilitiesInfo&&)>;
+
+    static void createDecodingConfiguration(MediaDecodingConfiguration&, DecodingConfigurationCallback&&);
+    static void createEncodingConfiguration(MediaEncodingConfiguration&, EncodingConfigurationCallback&&);
+};
+
+}

Deleted: trunk/Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp (235918 => 235919)


--- trunk/Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.cpp	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2018 Igalia S.L.
- *
- * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * HOLDER OR 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.
- */
-
-#include "config.h"
-#include "MediaEngineDecodingConfigurationMock.h"
-
-#include "ContentType.h"
-#include "IntSize.h"
-
-namespace WebCore {
-
-bool MediaEngineDecodingConfigurationMock::canDecodeMedia()
-{
-    // The mock implementation supports only local file playback.
-    if (decodingType() == MediaDecodingType::MediaSource)
-        return false;
-
-    // Maxing out video decoding support at 720P.
-    auto videoConfig = videoConfiguration();
-    if (videoConfig) {
-        IntSize size = videoConfig->size();
-        if (size.width() > 1280 && size.height() > 720)
-            return false;
-    }
-
-    // Audio decoding support limited to audio/mp4.
-    auto audioConfig = audioConfiguration();
-    if (audioConfig)
-        return audioConfig->contentType().containerType() == "audio/mp4";
-
-    return true;
-}
-
-bool MediaEngineDecodingConfigurationMock::canSmoothlyDecodeMedia()
-{
-    auto videoConfig = videoConfiguration();
-    if (videoConfig) {
-        if (videoConfig->framerate() > 30)
-            return false;
-    }
-
-    RefPtr<MediaEngineAudioConfiguration> audioConfig = audioConfiguration();
-    if (audioConfig)
-        return audioConfig->channels() == "2";
-
-    return true;
-}
-
-bool MediaEngineDecodingConfigurationMock::canPowerEfficientlyDecodeMedia()
-{
-    auto videoConfig = videoConfiguration();
-    if (videoConfig) {
-        if (videoConfig->contentType().containerType() != "video/mp4")
-            return false;
-    }
-
-    auto audioConfig = audioConfiguration();
-    if (audioConfig)
-        return audioConfig->bitrate() <= 1000;
-
-    return true;
-}
-
-} // namespace WebCore

Deleted: trunk/Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.h (235918 => 235919)


--- trunk/Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mock/MediaEngineDecodingConfigurationMock.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2018 Igalia S.L.
- *
- * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * HOLDER OR 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 "MediaDecodingConfiguration.h"
-#include "MediaEngineConfigurationFactory.h"
-#include "MediaEngineDecodingConfiguration.h"
-
-#include <wtf/Forward.h>
-
-namespace WebCore {
-
-class MediaEngineDecodingConfigurationMock final : public MediaEngineDecodingConfiguration {
-public:
-    static void create(MediaDecodingConfiguration& config, MediaEngineConfigurationFactory::DecodingConfigurationCallback& callback)
-    {
-        auto mockConfig = adoptRef(new MediaEngineDecodingConfigurationMock(WTFMove(config)));
-        callback(mockConfig);
-    };
-
-    ImplementationType implementationType() const final { return ImplementationType::Mock; }
-    bool canDecodeMedia() final;
-    bool canSmoothlyDecodeMedia() final;
-    bool canPowerEfficientlyDecodeMedia() final;
-
-private:
-    explicit MediaEngineDecodingConfigurationMock(MediaDecodingConfiguration&& config)
-        : MediaEngineDecodingConfiguration(WTFMove(config)) { };
-};
-
-}
-
-SPECIALIZE_TYPE_TRAITS_MEDIA_ENGINE_CONFIGURATION(WebCore::MediaEngineDecodingConfigurationMock, WebCore::MediaEngineDecodingConfiguration::ImplementationType::Mock);

Deleted: trunk/Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp (235918 => 235919)


--- trunk/Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.cpp	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2018 Igalia S.L.
- *
- * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * HOLDER OR 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.
- */
-
-#include "config.h"
-#include "MediaEngineEncodingConfigurationMock.h"
-
-#include "ContentType.h"
-#include "IntSize.h"
-
-namespace WebCore {
-
-bool MediaEngineEncodingConfigurationMock::canEncodeMedia()
-{
-    // The mock implementation supports only local file playback.
-    if (encodingType() == MediaEncodingType::Record)
-        return false;
-
-    // Maxing out video encoding support at 720P.
-    auto videoConfig = videoConfiguration();
-    if (videoConfig) {
-        IntSize size = videoConfig->size();
-        if (size.width() > 1280 && size.height() > 720)
-            return false;
-    }
-
-    // Audio encoding support limited to audio/mp4.
-    auto audioConfig = audioConfiguration();
-    if (audioConfig && (audioConfig->contentType().containerType() != "audio/mp4"))
-        return false;
-
-    return true;
-}
-
-bool MediaEngineEncodingConfigurationMock::canSmoothlyEncodeMedia()
-{
-    auto videoConfig = videoConfiguration();
-    if (videoConfig) {
-        if (videoConfig->framerate() > 30)
-            return false;
-    }
-
-    auto audioConfig = audioConfiguration();
-    if (audioConfig && audioConfig->channels() != "2")
-        return false;
-
-    return true;
-}
-
-bool MediaEngineEncodingConfigurationMock::canPowerEfficientlyEncodeMedia()
-{
-    auto videoConfig = videoConfiguration();
-    if (videoConfig && (videoConfig->contentType().containerType() != "video/mp4"))
-        return false;
-
-    auto audioConfig = audioConfiguration();
-    if (audioConfig && (audioConfig->bitrate() > 1000))
-        return false;
-
-    return true;
-}
-
-} // namespace WebCore

Deleted: trunk/Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.h (235918 => 235919)


--- trunk/Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.h	2018-09-11 23:17:22 UTC (rev 235918)
+++ trunk/Source/WebCore/platform/mock/MediaEngineEncodingConfigurationMock.h	2018-09-11 23:18:15 UTC (rev 235919)
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2018 Igalia S.L.
- *
- * 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 THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * HOLDER OR 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 "MediaEncodingConfiguration.h"
-#include "MediaEngineConfigurationFactory.h"
-#include "MediaEngineEncodingConfiguration.h"
-
-#include <wtf/Forward.h>
-
-namespace WebCore {
-
-class MediaEngineEncodingConfigurationMock final : public MediaEngineEncodingConfiguration {
-public:
-    static void create(MediaEncodingConfiguration& config, MediaEngineConfigurationFactory::EncodingConfigurationCallback& callback)
-    {
-        auto mockConfig = adoptRef(new MediaEngineEncodingConfigurationMock(WTFMove(config)));
-        callback(mockConfig);
-    };
-
-    ImplementationType implementationType() const final { return ImplementationType::Mock; }
-    bool canEncodeMedia() final;
-    bool canSmoothlyEncodeMedia() final;
-    bool canPowerEfficientlyEncodeMedia() final;
-
-private:
-    explicit MediaEngineEncodingConfigurationMock(MediaEncodingConfiguration&& config)
-        : MediaEngineEncodingConfiguration(WTFMove(config)) { };
-};
-
-}
-
-SPECIALIZE_TYPE_TRAITS_MEDIA_ENGINE_CONFIGURATION(WebCore::MediaEngineEncodingConfigurationMock, WebCore::MediaEngineEncodingConfiguration::ImplementationType::Mock);
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to