Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(44)

Side by Side Diff: third_party/WebKit/Source/modules/media_capabilities/MediaCapabilities.cpp

Issue 2805553004: Wire up MediaCapabilities is_supported to MimeUtil (Closed)
Patch Set: Rebase and merge Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "modules/media_capabilities/MediaCapabilities.h" 5 #include "modules/media_capabilities/MediaCapabilities.h"
6 6
7 #include "bindings/core/v8/CallbackPromiseAdapter.h" 7 #include "bindings/core/v8/CallbackPromiseAdapter.h"
8 #include "bindings/core/v8/ScriptPromise.h" 8 #include "bindings/core/v8/ScriptPromise.h"
9 #include "bindings/core/v8/ScriptPromiseResolver.h" 9 #include "bindings/core/v8/ScriptPromiseResolver.h"
10 #include "bindings/core/v8/ScriptState.h" 10 #include "bindings/core/v8/ScriptState.h"
11 #include "core/dom/DOMException.h" 11 #include "core/dom/DOMException.h"
12 #include "modules/media_capabilities/MediaCapabilitiesInfo.h" 12 #include "modules/media_capabilities/MediaCapabilitiesInfo.h"
13 #include "modules/media_capabilities/MediaConfiguration.h" 13 #include "modules/media_capabilities/MediaConfiguration.h"
14 #include "modules/media_capabilities/MediaDecodingConfiguration.h" 14 #include "modules/media_capabilities/MediaDecodingConfiguration.h"
15 #include "modules/media_capabilities/MediaEncodingConfiguration.h" 15 #include "modules/media_capabilities/MediaEncodingConfiguration.h"
16 #include "platform/network/ParsedContentType.h"
16 #include "public/platform/Platform.h" 17 #include "public/platform/Platform.h"
17 #include "public/platform/WebMediaRecorderHandler.h" 18 #include "public/platform/WebMediaRecorderHandler.h"
18 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient. h" 19 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesClient. h"
19 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h" 20 #include "public/platform/modules/media_capabilities/WebMediaCapabilitiesInfo.h"
20 #include "public/platform/modules/media_capabilities/WebMediaConfiguration.h" 21 #include "public/platform/modules/media_capabilities/WebMediaConfiguration.h"
21 22
22 namespace blink { 23 namespace blink {
23 24
24 namespace { 25 namespace {
25 26
26 WebAudioConfiguration ToWebAudioConfiguration( 27 WebAudioConfiguration ToWebAudioConfiguration(
27 const AudioConfiguration& configuration) { 28 const AudioConfiguration& configuration) {
28 WebAudioConfiguration web_configuration; 29 WebAudioConfiguration web_configuration;
29 30
30 // |contentType| is mandatory. 31 // |contentType| is mandatory.
31 DCHECK(configuration.hasContentType()); 32 DCHECK(configuration.hasContentType());
32 web_configuration.content_type = configuration.contentType(); 33 ParsedContentType parsed_content_type(configuration.contentType(),
34 ParsedContentType::Mode::kStrict);
35
36 // TODO(mlamouri): Sort out error handling for invalid input. Spec issue
37 // https://github.com/WICG/media-capabilities/issues/32
38 DCHECK(parsed_content_type.IsValid());
39
40 DEFINE_STATIC_LOCAL(const String, codecs, ("codecs"));
41 web_configuration.mime_type = parsed_content_type.MimeType().LowerASCII();
42 web_configuration.codec = parsed_content_type.ParameterValueForName(codecs);
33 43
34 // |channels| is optional and will be set to a null WebString if not present. 44 // |channels| is optional and will be set to a null WebString if not present.
35 web_configuration.channels = configuration.hasChannels() 45 web_configuration.channels = configuration.hasChannels()
36 ? WebString(configuration.channels()) 46 ? WebString(configuration.channels())
37 : WebString(); 47 : WebString();
38 48
39 if (configuration.hasBitrate()) 49 if (configuration.hasBitrate())
40 web_configuration.bitrate = configuration.bitrate(); 50 web_configuration.bitrate = configuration.bitrate();
41 51
42 if (configuration.hasSamplerate()) 52 if (configuration.hasSamplerate())
43 web_configuration.samplerate = configuration.samplerate(); 53 web_configuration.samplerate = configuration.samplerate();
44 54
45 return web_configuration; 55 return web_configuration;
46 } 56 }
47 57
48 WebVideoConfiguration ToWebVideoConfiguration( 58 WebVideoConfiguration ToWebVideoConfiguration(
49 const VideoConfiguration& configuration) { 59 const VideoConfiguration& configuration) {
50 WebVideoConfiguration web_configuration; 60 WebVideoConfiguration web_configuration;
51 61
52 // All the properties are mandatory. 62 // All the properties are mandatory.
53 DCHECK(configuration.hasContentType()); 63 DCHECK(configuration.hasContentType());
54 web_configuration.content_type = configuration.contentType(); 64 ParsedContentType parsed_content_type(configuration.contentType(),
65 ParsedContentType::Mode::kStrict);
66 // TODO(mlamouri): Sort out error handling for invalid input. Spec issue
67 // https://github.com/WICG/media-capabilities/issues/32
68 DCHECK(parsed_content_type.IsValid());
69
70 DEFINE_STATIC_LOCAL(const String, codecs, ("codecs"));
71 web_configuration.mime_type = parsed_content_type.MimeType().LowerASCII();
72 web_configuration.codec = parsed_content_type.ParameterValueForName(codecs);
55 73
56 DCHECK(configuration.hasWidth()); 74 DCHECK(configuration.hasWidth());
57 web_configuration.width = configuration.width(); 75 web_configuration.width = configuration.width();
58 76
59 DCHECK(configuration.hasHeight()); 77 DCHECK(configuration.hasHeight());
60 web_configuration.height = configuration.height(); 78 web_configuration.height = configuration.height();
61 79
62 DCHECK(configuration.hasBitrate()); 80 DCHECK(configuration.hasBitrate());
63 web_configuration.bitrate = configuration.bitrate(); 81 web_configuration.bitrate = configuration.bitrate();
64 82
(...skipping 24 matching lines...) Expand all
89 107
90 MediaCapabilities::MediaCapabilities() = default; 108 MediaCapabilities::MediaCapabilities() = default;
91 109
92 ScriptPromise MediaCapabilities::decodingInfo( 110 ScriptPromise MediaCapabilities::decodingInfo(
93 ScriptState* script_state, 111 ScriptState* script_state,
94 const MediaDecodingConfiguration& configuration) { 112 const MediaDecodingConfiguration& configuration) {
95 ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state); 113 ScriptPromiseResolver* resolver = ScriptPromiseResolver::Create(script_state);
96 ScriptPromise promise = resolver->Promise(); 114 ScriptPromise promise = resolver->Promise();
97 115
98 // |type| is mandatory. 116 // |type| is mandatory.
99 DCHECK(configuration.hasType()); 117 DCHECK(configuration.hasType());
mcasas 2017/04/21 20:18:33 nit: I missed this one in my previous CL, if the d
100 118
101 Platform::Current()->MediaCapabilitiesClient()->DecodingInfo( 119 Platform::Current()->MediaCapabilitiesClient()->DecodingInfo(
102 ToWebMediaConfiguration(configuration), 120 ToWebMediaConfiguration(configuration),
103 WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>( 121 WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>(
104 resolver)); 122 resolver));
105 123
106 return promise; 124 return promise;
107 } 125 }
108 126
109 ScriptPromise MediaCapabilities::encodingInfo( 127 ScriptPromise MediaCapabilities::encodingInfo(
(...skipping 22 matching lines...) Expand all
132 handler->EncodingInfo( 150 handler->EncodingInfo(
133 ToWebMediaConfiguration(configuration), 151 ToWebMediaConfiguration(configuration),
134 WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>( 152 WTF::MakeUnique<CallbackPromiseAdapter<MediaCapabilitiesInfo, void>>(
135 resolver)); 153 resolver));
136 return promise; 154 return promise;
137 } 155 }
138 156
139 DEFINE_TRACE(MediaCapabilities) {} 157 DEFINE_TRACE(MediaCapabilities) {}
140 158
141 } // namespace blink 159 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698