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

Side by Side Diff: Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.cpp

Issue 1112363003: Oilpan: Remove OffHeapCollectionTrait (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "config.h" 5 #include "config.h"
6 #include "modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.h" 6 #include "modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.h"
7 7
8 #include "bindings/core/v8/ScriptPromiseResolver.h" 8 #include "bindings/core/v8/ScriptPromiseResolver.h"
9 #include "bindings/core/v8/ScriptState.h" 9 #include "bindings/core/v8/ScriptState.h"
10 #include "core/dom/DOMException.h" 10 #include "core/dom/DOMException.h"
(...skipping 19 matching lines...) Expand all
30 namespace { 30 namespace {
31 31
32 static WebVector<WebEncryptedMediaInitDataType> convertInitDataTypes(const Vecto r<String>& initDataTypes) 32 static WebVector<WebEncryptedMediaInitDataType> convertInitDataTypes(const Vecto r<String>& initDataTypes)
33 { 33 {
34 WebVector<WebEncryptedMediaInitDataType> result(initDataTypes.size()); 34 WebVector<WebEncryptedMediaInitDataType> result(initDataTypes.size());
35 for (size_t i = 0; i < initDataTypes.size(); ++i) 35 for (size_t i = 0; i < initDataTypes.size(); ++i)
36 result[i] = EncryptedMediaUtils::convertToInitDataType(initDataTypes[i]) ; 36 result[i] = EncryptedMediaUtils::convertToInitDataType(initDataTypes[i]) ;
37 return result; 37 return result;
38 } 38 }
39 39
40 static WebVector<WebMediaKeySystemMediaCapability> convertCapabilities(const Vec tor<MediaKeySystemMediaCapability>& capabilities) 40 static WebVector<WebMediaKeySystemMediaCapability> convertCapabilities(const Hea pVector<MediaKeySystemMediaCapability>& capabilities)
41 { 41 {
42 WebVector<WebMediaKeySystemMediaCapability> result(capabilities.size()); 42 WebVector<WebMediaKeySystemMediaCapability> result(capabilities.size());
43 for (size_t i = 0; i < capabilities.size(); ++i) { 43 for (size_t i = 0; i < capabilities.size(); ++i) {
44 const WebString& contentType = capabilities[i].contentType(); 44 const WebString& contentType = capabilities[i].contentType();
45 result[i].contentType = contentType; 45 result[i].contentType = contentType;
46 if (isValidContentType(contentType)) { 46 if (isValidContentType(contentType)) {
47 // FIXME: Fail if there are unrecognized parameters. 47 // FIXME: Fail if there are unrecognized parameters.
48 ParsedContentType type(capabilities[i].contentType()); 48 ParsedContentType type(capabilities[i].contentType());
49 result[i].mimeType = type.mimeType(); 49 result[i].mimeType = type.mimeType();
50 result[i].codecs = type.parameterValueForName("codecs"); 50 result[i].codecs = type.parameterValueForName("codecs");
(...skipping 24 matching lines...) Expand all
75 result[i] = EncryptedMediaUtils::convertToSessionType(sessionTypes[i]); 75 result[i] = EncryptedMediaUtils::convertToSessionType(sessionTypes[i]);
76 return result; 76 return result;
77 } 77 }
78 78
79 // This class allows capabilities to be checked and a MediaKeySystemAccess 79 // This class allows capabilities to be checked and a MediaKeySystemAccess
80 // object to be created asynchronously. 80 // object to be created asynchronously.
81 class MediaKeySystemAccessInitializer final : public EncryptedMediaRequest { 81 class MediaKeySystemAccessInitializer final : public EncryptedMediaRequest {
82 WTF_MAKE_NONCOPYABLE(MediaKeySystemAccessInitializer); 82 WTF_MAKE_NONCOPYABLE(MediaKeySystemAccessInitializer);
83 83
84 public: 84 public:
85 MediaKeySystemAccessInitializer(ScriptState*, const String& keySystem, const Vector<MediaKeySystemConfiguration>& supportedConfigurations); 85 MediaKeySystemAccessInitializer(ScriptState*, const String& keySystem, const HeapVector<MediaKeySystemConfiguration>& supportedConfigurations);
86 virtual ~MediaKeySystemAccessInitializer() { } 86 virtual ~MediaKeySystemAccessInitializer() { }
87 87
88 // EncryptedMediaRequest implementation. 88 // EncryptedMediaRequest implementation.
89 virtual WebString keySystem() const override { return m_keySystem; } 89 virtual WebString keySystem() const override { return m_keySystem; }
90 virtual const WebVector<WebMediaKeySystemConfiguration>& supportedConfigurat ions() const override { return m_supportedConfigurations; } 90 virtual const WebVector<WebMediaKeySystemConfiguration>& supportedConfigurat ions() const override { return m_supportedConfigurations; }
91 virtual SecurityOrigin* securityOrigin() const override { return m_resolver- >executionContext()->securityOrigin(); } 91 virtual SecurityOrigin* securityOrigin() const override { return m_resolver- >executionContext()->securityOrigin(); }
92 virtual void requestSucceeded(WebContentDecryptionModuleAccess*) override; 92 virtual void requestSucceeded(WebContentDecryptionModuleAccess*) override;
93 virtual void requestNotSupported(const WebString& errorMessage) override; 93 virtual void requestNotSupported(const WebString& errorMessage) override;
94 94
95 ScriptPromise promise() { return m_resolver->promise(); } 95 ScriptPromise promise() { return m_resolver->promise(); }
96 96
97 private: 97 private:
98 RefPtr<ScriptPromiseResolver> m_resolver; 98 RefPtr<ScriptPromiseResolver> m_resolver;
99 const String m_keySystem; 99 const String m_keySystem;
100 WebVector<WebMediaKeySystemConfiguration> m_supportedConfigurations; 100 WebVector<WebMediaKeySystemConfiguration> m_supportedConfigurations;
101 }; 101 };
102 102
103 MediaKeySystemAccessInitializer::MediaKeySystemAccessInitializer(ScriptState* sc riptState, const String& keySystem, const Vector<MediaKeySystemConfiguration>& s upportedConfigurations) 103 MediaKeySystemAccessInitializer::MediaKeySystemAccessInitializer(ScriptState* sc riptState, const String& keySystem, const HeapVector<MediaKeySystemConfiguration >& supportedConfigurations)
104 : m_resolver(ScriptPromiseResolver::create(scriptState)) 104 : m_resolver(ScriptPromiseResolver::create(scriptState))
105 , m_keySystem(keySystem) 105 , m_keySystem(keySystem)
106 , m_supportedConfigurations(supportedConfigurations.size()) 106 , m_supportedConfigurations(supportedConfigurations.size())
107 { 107 {
108 for (size_t i = 0; i < supportedConfigurations.size(); ++i) { 108 for (size_t i = 0; i < supportedConfigurations.size(); ++i) {
109 const MediaKeySystemConfiguration& config = supportedConfigurations[i]; 109 const MediaKeySystemConfiguration& config = supportedConfigurations[i];
110 WebMediaKeySystemConfiguration webConfig; 110 WebMediaKeySystemConfiguration webConfig;
111 if (config.hasInitDataTypes()) { 111 if (config.hasInitDataTypes()) {
112 webConfig.hasInitDataTypes = true; 112 webConfig.hasInitDataTypes = true;
113 webConfig.initDataTypes = convertInitDataTypes(config.initDataTypes( )); 113 webConfig.initDataTypes = convertInitDataTypes(config.initDataTypes( ));
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 m_resolver->reject(DOMException::create(NotSupportedError, errorMessage)); 145 m_resolver->reject(DOMException::create(NotSupportedError, errorMessage));
146 m_resolver.clear(); 146 m_resolver.clear();
147 } 147 }
148 148
149 } // namespace 149 } // namespace
150 150
151 ScriptPromise NavigatorRequestMediaKeySystemAccess::requestMediaKeySystemAccess( 151 ScriptPromise NavigatorRequestMediaKeySystemAccess::requestMediaKeySystemAccess(
152 ScriptState* scriptState, 152 ScriptState* scriptState,
153 Navigator& navigator, 153 Navigator& navigator,
154 const String& keySystem, 154 const String& keySystem,
155 const Vector<MediaKeySystemConfiguration>& supportedConfigurations) 155 const HeapVector<MediaKeySystemConfiguration>& supportedConfigurations)
156 { 156 {
157 WTF_LOG(Media, "NavigatorRequestMediaKeySystemAccess::requestMediaKeySystemA ccess()"); 157 WTF_LOG(Media, "NavigatorRequestMediaKeySystemAccess::requestMediaKeySystemA ccess()");
158 158
159 // From https://w3c.github.io/encrypted-media/#requestMediaKeySystemAccess 159 // From https://w3c.github.io/encrypted-media/#requestMediaKeySystemAccess
160 // When this method is invoked, the user agent must run the following steps: 160 // When this method is invoked, the user agent must run the following steps:
161 // 1. If keySystem is an empty string, return a promise rejected with a 161 // 1. If keySystem is an empty string, return a promise rejected with a
162 // new DOMException whose name is InvalidAccessError. 162 // new DOMException whose name is InvalidAccessError.
163 if (keySystem.isEmpty()) { 163 if (keySystem.isEmpty()) {
164 return ScriptPromise::rejectWithDOMException( 164 return ScriptPromise::rejectWithDOMException(
165 scriptState, DOMException::create(InvalidAccessError, "The keySystem parameter is empty.")); 165 scriptState, DOMException::create(InvalidAccessError, "The keySystem parameter is empty."));
(...skipping 27 matching lines...) Expand all
193 // initialize the MediaKeySystemAccess object. 193 // initialize the MediaKeySystemAccess object.
194 MediaKeysController* controller = MediaKeysController::from(document->page() ); 194 MediaKeysController* controller = MediaKeysController::from(document->page() );
195 WebEncryptedMediaClient* mediaClient = controller->encryptedMediaClient(scri ptState->executionContext()); 195 WebEncryptedMediaClient* mediaClient = controller->encryptedMediaClient(scri ptState->executionContext());
196 mediaClient->requestMediaKeySystemAccess(WebEncryptedMediaRequest(initialize r)); 196 mediaClient->requestMediaKeySystemAccess(WebEncryptedMediaRequest(initialize r));
197 197
198 // 8. Return promise. 198 // 8. Return promise.
199 return promise; 199 return promise;
200 } 200 }
201 201
202 } // namespace blink 202 } // namespace blink
OLDNEW
« no previous file with comments | « Source/modules/encryptedmedia/NavigatorRequestMediaKeySystemAccess.h ('k') | Source/platform/heap/HeapTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698