Chromium Code Reviews| 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 1858f56f88822d58cec95a0c70a58168c269d5f3..69f280814036a6bdc5965ac2619ae5b049bdc76c 100644 |
| --- a/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp |
| +++ b/third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp |
| @@ -8,9 +8,13 @@ |
| #include "bindings/core/v8/ScriptPromise.h" |
| #include "bindings/core/v8/ScriptPromiseResolver.h" |
| #include "bindings/core/v8/ScriptState.h" |
| +#include "core/dom/DOMException.h" |
| #include "modules/media_capabilities/MediaCapabilitiesInfo.h" |
| +#include "modules/media_capabilities/MediaConfiguration.h" |
| #include "modules/media_capabilities/MediaDecodingConfiguration.h" |
| +#include "modules/media_capabilities/MediaEncodingConfiguration.h" |
| #include "public/platform/Platform.h" |
| +#include "public/platform/WebMediaRecorderHandler.h" |
| #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient.h" |
| #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h" |
| #include "public/platform/modules/media_capabilities/WebMediaConfiguration.h" |
| @@ -65,12 +69,9 @@ WebVideoConfiguration ToWebVideoConfiguration( |
| } |
| WebMediaConfiguration ToWebMediaConfiguration( |
| - const MediaDecodingConfiguration& configuration) { |
| + const MediaConfiguration& configuration) { |
| WebMediaConfiguration web_configuration; |
| - // |type| is mandatory. |
| - DCHECK(configuration.hasType()); |
| - |
| if (configuration.hasAudio()) { |
| web_configuration.audio_configuration = |
| ToWebAudioConfiguration(configuration.audio()); |
| @@ -94,6 +95,9 @@ ScriptPromise MediaCapabilities::decodingInfo( |
| ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); |
| ScriptPromise promise = resolver->Promise(); |
| + // |type| is mandatory. |
| + DCHECK(configuration.hasType()); |
| + |
| Platform::Current()->MediaCapabilitiesClient()->DecodingInfo( |
| ToWebMediaConfiguration(configuration), |
| WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>( |
| @@ -102,6 +106,33 @@ ScriptPromise MediaCapabilities::decodingInfo( |
| return promise; |
| } |
| +ScriptPromise MediaCapabilities::encodingInfo( |
| + ScriptState* script_state, |
| + const MediaEncodingConfiguration& configuration) { |
| + ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); |
| + ScriptPromise promise = resolver->Promise(); |
| + |
| + if (!configuration.hasVideo() && !configuration.hasAudio()) { |
| + resolver->Reject(DOMException::Create(kSyntaxError, |
| + "Either |video| or |audio| needed.")); |
|
haraken
2017/04/20 19:55:18
Add a more developer-friendly message.
mcasas
2017/04/20 21:12:02
Done.
|
| + return promise; |
| + } |
| + |
| + WebMediaRecorderHandler* handler = |
| + Platform::Current()->CreateMediaRecorderHandler(); |
| + if (!handler) { |
| + resolver->Reject( |
| + DOMException::Create(kInvalidStateError, "Platform error")); |
|
haraken
2017/04/20 19:55:18
Ditto.
mcasas
2017/04/20 21:12:02
Done.
|
| + return promise; |
| + } |
| + |
| + handler->EncodingInfo( |
|
haraken
2017/04/20 19:55:18
Why do you use a different pattern between decodin
mcasas
2017/04/20 21:12:02
Decoding and Encoding need to go to different plac
|
| + ToWebMediaConfiguration(configuration), |
| + WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>( |
| + resolver)); |
| + return promise; |
| +} |
| + |
| DEFINE_TRACE(MediaCapabilities) {} |
| } // namespace blink |