| Index: third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
|
| diff --git a/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp b/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
|
| index c3a22e1bcc060035bb1086ce3fd72ac3fb577d50..73f13ae144a7cab3458eb4125fce76450b3a855a 100644
|
| --- a/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
|
| +++ b/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp
|
| @@ -4,14 +4,88 @@
|
|
|
| #include "modules/media_capabilities/MediaCapabilities.h"
|
|
|
| +#include "bindings/core/v8/CallbackPromiseAdapter.h"
|
| #include "bindings/core/v8/ScriptPromise.h"
|
| #include "bindings/core/v8/ScriptPromiseResolver.h"
|
| #include "bindings/core/v8/ScriptState.h"
|
| #include "modules/media_capabilities/MediaConfiguration.h"
|
| #include "modules/media_capabilities/MediaDecodingAbility.h"
|
| +#include "public/platform/Platform.h"
|
| +#include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient.h"
|
| +#include "public/platform/modules/media_capabilities/WebMediaConfiguration.h"
|
| +#include "public/platform/modules/media_capabilities/WebMediaDecodingAbility.h"
|
|
|
| namespace blink {
|
|
|
| +namespace {
|
| +
|
| +WebAudioConfiguration toWebAudioConfiguration(
|
| + const AudioConfiguration& configuration) {
|
| + WebAudioConfiguration webConfiguration;
|
| +
|
| + // contentType is mandatory.
|
| + DCHECK(configuration.hasContentType());
|
| + webConfiguration.contentType = configuration.contentType();
|
| +
|
| + // channels is optional and will be set to a null WebString if not present.
|
| + webConfiguration.channels = configuration.hasChannels()
|
| + ? WebString(configuration.channels())
|
| + : WebString();
|
| +
|
| + if (configuration.hasBitrate())
|
| + webConfiguration.bitrate = configuration.bitrate();
|
| +
|
| + if (configuration.hasSamplerate())
|
| + webConfiguration.samplerate = configuration.samplerate();
|
| +
|
| + return webConfiguration;
|
| +}
|
| +
|
| +WebVideoConfiguration toWebVideoConfiguration(
|
| + const VideoConfiguration& configuration) {
|
| + WebVideoConfiguration webConfiguration;
|
| +
|
| + // All the properties are mandatory.
|
| + DCHECK(configuration.hasContentType());
|
| + webConfiguration.contentType = configuration.contentType();
|
| +
|
| + DCHECK(configuration.hasWidth());
|
| + webConfiguration.width = configuration.width();
|
| +
|
| + DCHECK(configuration.hasHeight());
|
| + webConfiguration.height = configuration.height();
|
| +
|
| + DCHECK(configuration.hasBitrate());
|
| + webConfiguration.bitrate = configuration.bitrate();
|
| +
|
| + DCHECK(configuration.hasFramerate());
|
| + webConfiguration.framerate = configuration.framerate();
|
| +
|
| + return webConfiguration;
|
| +}
|
| +
|
| +WebMediaConfiguration toWebMediaConfiguration(
|
| + const MediaConfiguration& configuration) {
|
| + WebMediaConfiguration webConfiguration;
|
| +
|
| + // type is mandatory.
|
| + DCHECK(configuration.hasType());
|
| +
|
| + if (configuration.hasAudio()) {
|
| + webConfiguration.audioConfiguration =
|
| + toWebAudioConfiguration(configuration.audio());
|
| + }
|
| +
|
| + if (configuration.hasVideo()) {
|
| + webConfiguration.videoConfiguration =
|
| + toWebVideoConfiguration(configuration.video());
|
| + }
|
| +
|
| + return webConfiguration;
|
| +}
|
| +
|
| +} // anonymous namespace
|
| +
|
| MediaCapabilities::MediaCapabilities() = default;
|
|
|
| ScriptPromise MediaCapabilities::query(
|
| @@ -19,7 +93,12 @@ ScriptPromise MediaCapabilities::query(
|
| const MediaConfiguration& configuration) {
|
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
|
| ScriptPromise promise = resolver->promise();
|
| - resolver->resolve(new MediaDecodingAbility());
|
| +
|
| + Platform::current()->mediaCapabilitiesClient()->query(
|
| + toWebMediaConfiguration(configuration),
|
| + WTF::makeUnique<CallbackPromiseAdapter<MediaDecodingAbility, void>>(
|
| + resolver));
|
| +
|
| return promise;
|
| }
|
|
|
|
|