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

Side by Side Diff: media/test/pipeline_integration_test.cc

Issue 1407933010: media: Make MediaKeys ref-counted. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address timav@'s comments. Created 5 years, 1 month 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/command_line.h" 6 #include "base/command_line.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
jrummell 2015/10/29 21:05:17 #include "base/memory/ref_counted.h"?
xhwang 2015/10/30 16:20:59 Done.
8 #include "base/stl_util.h" 8 #include "base/stl_util.h"
9 #include "base/strings/string_split.h" 9 #include "base/strings/string_split.h"
10 #include "base/strings/string_util.h" 10 #include "base/strings/string_util.h"
11 #include "build/build_config.h" 11 #include "build/build_config.h"
12 #include "media/base/cdm_callback_promise.h" 12 #include "media/base/cdm_callback_promise.h"
13 #include "media/base/cdm_context.h" 13 #include "media/base/cdm_context.h"
14 #include "media/base/cdm_key_information.h" 14 #include "media/base/cdm_key_information.h"
15 #include "media/base/decoder_buffer.h" 15 #include "media/base/decoder_buffer.h"
16 #include "media/base/media.h" 16 #include "media/base/media.h"
17 #include "media/base/media_keys.h" 17 #include "media/base/media_keys.h"
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
195 const std::string& error_message) { 195 const std::string& error_message) {
196 FAIL() << "Unexpected Key Error"; 196 FAIL() << "Unexpected Key Error";
197 } 197 }
198 198
199 virtual void OnEncryptedMediaInitData(EmeInitDataType init_data_type, 199 virtual void OnEncryptedMediaInitData(EmeInitDataType init_data_type,
200 const std::vector<uint8_t>& init_data, 200 const std::vector<uint8_t>& init_data,
201 AesDecryptor* decryptor) = 0; 201 AesDecryptor* decryptor) = 0;
202 }; 202 };
203 203
204 FakeEncryptedMedia(AppBase* app) 204 FakeEncryptedMedia(AppBase* app)
205 : decryptor_(GURL::EmptyGURL(), 205 : decryptor_(new AesDecryptor(
206 base::Bind(&FakeEncryptedMedia::OnSessionMessage, 206 GURL::EmptyGURL(),
207 base::Unretained(this)), 207 base::Bind(&FakeEncryptedMedia::OnSessionMessage,
208 base::Bind(&FakeEncryptedMedia::OnSessionClosed, 208 base::Unretained(this)),
209 base::Unretained(this)), 209 base::Bind(&FakeEncryptedMedia::OnSessionClosed,
210 base::Bind(&FakeEncryptedMedia::OnSessionKeysChange, 210 base::Unretained(this)),
211 base::Unretained(this))), 211 base::Bind(&FakeEncryptedMedia::OnSessionKeysChange,
212 cdm_context_(&decryptor_), 212 base::Unretained(this)))),
213 cdm_context_(decryptor_.get()),
213 app_(app) {} 214 app_(app) {}
214 215
215 CdmContext* GetCdmContext() { return &cdm_context_; } 216 CdmContext* GetCdmContext() { return &cdm_context_; }
216 217
217 // Callbacks for firing session events. Delegate to |app_|. 218 // Callbacks for firing session events. Delegate to |app_|.
218 void OnSessionMessage(const std::string& session_id, 219 void OnSessionMessage(const std::string& session_id,
219 MediaKeys::MessageType message_type, 220 MediaKeys::MessageType message_type,
220 const std::vector<uint8_t>& message, 221 const std::vector<uint8_t>& message,
221 const GURL& legacy_destination_url) { 222 const GURL& legacy_destination_url) {
222 app_->OnSessionMessage(session_id, message_type, message, 223 app_->OnSessionMessage(session_id, message_type, message,
223 legacy_destination_url, &decryptor_); 224 legacy_destination_url, decryptor_.get());
224 } 225 }
225 226
226 void OnSessionClosed(const std::string& session_id) { 227 void OnSessionClosed(const std::string& session_id) {
227 app_->OnSessionClosed(session_id); 228 app_->OnSessionClosed(session_id);
228 } 229 }
229 230
230 void OnSessionKeysChange(const std::string& session_id, 231 void OnSessionKeysChange(const std::string& session_id,
231 bool has_additional_usable_key, 232 bool has_additional_usable_key,
232 CdmKeysInfo keys_info) { 233 CdmKeysInfo keys_info) {
233 app_->OnSessionKeysChange(session_id, has_additional_usable_key, 234 app_->OnSessionKeysChange(session_id, has_additional_usable_key,
234 keys_info.Pass()); 235 keys_info.Pass());
235 } 236 }
236 237
237 void OnLegacySessionError(const std::string& session_id, 238 void OnLegacySessionError(const std::string& session_id,
238 const std::string& error_name, 239 const std::string& error_name,
239 uint32_t system_code, 240 uint32_t system_code,
240 const std::string& error_message) { 241 const std::string& error_message) {
241 app_->OnLegacySessionError(session_id, error_name, system_code, 242 app_->OnLegacySessionError(session_id, error_name, system_code,
242 error_message); 243 error_message);
243 } 244 }
244 245
245 void OnEncryptedMediaInitData(EmeInitDataType init_data_type, 246 void OnEncryptedMediaInitData(EmeInitDataType init_data_type,
246 const std::vector<uint8_t>& init_data) { 247 const std::vector<uint8_t>& init_data) {
247 app_->OnEncryptedMediaInitData(init_data_type, init_data, &decryptor_); 248 app_->OnEncryptedMediaInitData(init_data_type, init_data, decryptor_.get());
248 } 249 }
249 250
250 private: 251 private:
251 class TestCdmContext : public CdmContext { 252 class TestCdmContext : public CdmContext {
252 public: 253 public:
253 TestCdmContext(Decryptor* decryptor) : decryptor_(decryptor) {} 254 TestCdmContext(Decryptor* decryptor) : decryptor_(decryptor) {}
254 255
255 Decryptor* GetDecryptor() final { return decryptor_; } 256 Decryptor* GetDecryptor() final { return decryptor_; }
256 int GetCdmId() const final { return kInvalidCdmId; } 257 int GetCdmId() const final { return kInvalidCdmId; }
257 258
258 private: 259 private:
259 Decryptor* decryptor_; 260 Decryptor* decryptor_;
260 }; 261 };
261 262
262 AesDecryptor decryptor_; 263 scoped_refptr<AesDecryptor> decryptor_;
263 TestCdmContext cdm_context_; 264 TestCdmContext cdm_context_;
264 scoped_ptr<AppBase> app_; 265 scoped_ptr<AppBase> app_;
265 }; 266 };
266 267
267 enum PromiseResult { RESOLVED, REJECTED }; 268 enum PromiseResult { RESOLVED, REJECTED };
268 269
269 // Provides |kSecretKey| in response to needkey. 270 // Provides |kSecretKey| in response to needkey.
270 class KeyProvidingApp : public FakeEncryptedMedia::AppBase { 271 class KeyProvidingApp : public FakeEncryptedMedia::AppBase {
271 public: 272 public:
272 KeyProvidingApp() {} 273 KeyProvidingApp() {}
(...skipping 1566 matching lines...) Expand 10 before | Expand all | Expand 10 after
1839 1840
1840 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { 1841 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) {
1841 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); 1842 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm"));
1842 Play(); 1843 Play();
1843 ASSERT_TRUE(WaitUntilOnEnded()); 1844 ASSERT_TRUE(WaitUntilOnEnded());
1844 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), 1845 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000),
1845 demuxer_->GetStartTime()); 1846 demuxer_->GetStartTime());
1846 } 1847 }
1847 1848
1848 } // namespace media 1849 } // namespace media
OLDNEW
« media/mojo/services/mojo_cdm_service.h ('K') | « media/mojo/services/mojo_cdm_service.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698