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

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

Issue 2831963003: EME: Allow temporary sessions to be removed for ClearKey only. (Closed)
Patch Set: add test 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 (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 <stddef.h> 5 #include <stddef.h>
6 #include <stdint.h> 6 #include <stdint.h>
7 7
8 #include <memory> 8 #include <memory>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after
201 ContentDecryptionModule::MessageType message_type, 201 ContentDecryptionModule::MessageType message_type,
202 const std::vector<uint8_t>& message, 202 const std::vector<uint8_t>& message,
203 AesDecryptor* decryptor) = 0; 203 AesDecryptor* decryptor) = 0;
204 204
205 virtual void OnSessionClosed(const std::string& session_id) = 0; 205 virtual void OnSessionClosed(const std::string& session_id) = 0;
206 206
207 virtual void OnSessionKeysChange(const std::string& session_id, 207 virtual void OnSessionKeysChange(const std::string& session_id,
208 bool has_additional_usable_key, 208 bool has_additional_usable_key,
209 CdmKeysInfo keys_info) = 0; 209 CdmKeysInfo keys_info) = 0;
210 210
211 virtual void OnSessionExpirationUpdate(const std::string& session_id,
212 base::Time new_expiry_time) = 0;
213
211 virtual void OnEncryptedMediaInitData(EmeInitDataType init_data_type, 214 virtual void OnEncryptedMediaInitData(EmeInitDataType init_data_type,
212 const std::vector<uint8_t>& init_data, 215 const std::vector<uint8_t>& init_data,
213 AesDecryptor* decryptor) = 0; 216 AesDecryptor* decryptor) = 0;
214 }; 217 };
215 218
216 FakeEncryptedMedia(AppBase* app) 219 FakeEncryptedMedia(AppBase* app)
217 : decryptor_(new AesDecryptor( 220 : decryptor_(new AesDecryptor(
218 GURL::EmptyGURL(), 221 GURL::EmptyGURL(),
219 base::Bind(&FakeEncryptedMedia::OnSessionMessage, 222 base::Bind(&FakeEncryptedMedia::OnSessionMessage,
220 base::Unretained(this)), 223 base::Unretained(this)),
221 base::Bind(&FakeEncryptedMedia::OnSessionClosed, 224 base::Bind(&FakeEncryptedMedia::OnSessionClosed,
222 base::Unretained(this)), 225 base::Unretained(this)),
223 base::Bind(&FakeEncryptedMedia::OnSessionKeysChange, 226 base::Bind(&FakeEncryptedMedia::OnSessionKeysChange,
227 base::Unretained(this)),
228 base::Bind(&FakeEncryptedMedia::OnSessionExpirationUpdate,
224 base::Unretained(this)))), 229 base::Unretained(this)))),
225 cdm_context_(decryptor_.get()), 230 cdm_context_(decryptor_.get()),
226 app_(app) {} 231 app_(app) {}
227 232
228 CdmContext* GetCdmContext() { return &cdm_context_; } 233 CdmContext* GetCdmContext() { return &cdm_context_; }
229 234
230 // Callbacks for firing session events. Delegate to |app_|. 235 // Callbacks for firing session events. Delegate to |app_|.
231 void OnSessionMessage(const std::string& session_id, 236 void OnSessionMessage(const std::string& session_id,
232 ContentDecryptionModule::MessageType message_type, 237 ContentDecryptionModule::MessageType message_type,
233 const std::vector<uint8_t>& message) { 238 const std::vector<uint8_t>& message) {
234 app_->OnSessionMessage(session_id, message_type, message, decryptor_.get()); 239 app_->OnSessionMessage(session_id, message_type, message, decryptor_.get());
235 } 240 }
236 241
237 void OnSessionClosed(const std::string& session_id) { 242 void OnSessionClosed(const std::string& session_id) {
238 app_->OnSessionClosed(session_id); 243 app_->OnSessionClosed(session_id);
239 } 244 }
240 245
241 void OnSessionKeysChange(const std::string& session_id, 246 void OnSessionKeysChange(const std::string& session_id,
242 bool has_additional_usable_key, 247 bool has_additional_usable_key,
243 CdmKeysInfo keys_info) { 248 CdmKeysInfo keys_info) {
244 app_->OnSessionKeysChange(session_id, has_additional_usable_key, 249 app_->OnSessionKeysChange(session_id, has_additional_usable_key,
245 std::move(keys_info)); 250 std::move(keys_info));
246 } 251 }
247 252
253 void OnSessionExpirationUpdate(const std::string& session_id,
254 base::Time new_expiry_time) {
255 app_->OnSessionExpirationUpdate(session_id, new_expiry_time);
256 }
257
248 void OnEncryptedMediaInitData(EmeInitDataType init_data_type, 258 void OnEncryptedMediaInitData(EmeInitDataType init_data_type,
249 const std::vector<uint8_t>& init_data) { 259 const std::vector<uint8_t>& init_data) {
250 app_->OnEncryptedMediaInitData(init_data_type, init_data, decryptor_.get()); 260 app_->OnEncryptedMediaInitData(init_data_type, init_data, decryptor_.get());
251 } 261 }
252 262
253 private: 263 private:
254 class TestCdmContext : public CdmContext { 264 class TestCdmContext : public CdmContext {
255 public: 265 public:
256 TestCdmContext(Decryptor* decryptor) : decryptor_(decryptor) {} 266 TestCdmContext(Decryptor* decryptor) : decryptor_(decryptor) {}
257 267
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
347 EXPECT_EQ(current_session_id_, session_id); 357 EXPECT_EQ(current_session_id_, session_id);
348 } 358 }
349 359
350 void OnSessionKeysChange(const std::string& session_id, 360 void OnSessionKeysChange(const std::string& session_id,
351 bool has_additional_usable_key, 361 bool has_additional_usable_key,
352 CdmKeysInfo keys_info) override { 362 CdmKeysInfo keys_info) override {
353 EXPECT_EQ(current_session_id_, session_id); 363 EXPECT_EQ(current_session_id_, session_id);
354 EXPECT_EQ(has_additional_usable_key, true); 364 EXPECT_EQ(has_additional_usable_key, true);
355 } 365 }
356 366
367 void OnSessionExpirationUpdate(const std::string& session_id,
368 base::Time new_expiry_time) override {
369 EXPECT_EQ(current_session_id_, session_id);
370 }
371
357 void OnEncryptedMediaInitData(EmeInitDataType init_data_type, 372 void OnEncryptedMediaInitData(EmeInitDataType init_data_type,
358 const std::vector<uint8_t>& init_data, 373 const std::vector<uint8_t>& init_data,
359 AesDecryptor* decryptor) override { 374 AesDecryptor* decryptor) override {
360 // Since only 1 session is created, skip the request if the |init_data| 375 // Since only 1 session is created, skip the request if the |init_data|
361 // has been seen before (no need to add the same key again). 376 // has been seen before (no need to add the same key again).
362 if (init_data == prev_init_data_) 377 if (init_data == prev_init_data_)
363 return; 378 return;
364 prev_init_data_ = init_data; 379 prev_init_data_ = init_data;
365 380
366 if (current_session_id_.empty()) { 381 if (current_session_id_.empty()) {
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
430 FAIL() << "Unexpected Closed"; 445 FAIL() << "Unexpected Closed";
431 } 446 }
432 447
433 void OnSessionKeysChange(const std::string& session_id, 448 void OnSessionKeysChange(const std::string& session_id,
434 bool has_additional_usable_key, 449 bool has_additional_usable_key,
435 CdmKeysInfo keys_info) override { 450 CdmKeysInfo keys_info) override {
436 EXPECT_FALSE(session_id.empty()); 451 EXPECT_FALSE(session_id.empty());
437 EXPECT_EQ(has_additional_usable_key, true); 452 EXPECT_EQ(has_additional_usable_key, true);
438 } 453 }
439 454
455 void OnSessionExpirationUpdate(const std::string& session_id,
456 base::Time new_expiry_time) override {}
457
440 void OnEncryptedMediaInitData(EmeInitDataType init_data_type, 458 void OnEncryptedMediaInitData(EmeInitDataType init_data_type,
441 const std::vector<uint8_t>& init_data, 459 const std::vector<uint8_t>& init_data,
442 AesDecryptor* decryptor) override {} 460 AesDecryptor* decryptor) override {}
443 }; 461 };
444 462
445 // Helper class that emulates calls made on the ChunkDemuxer by the 463 // Helper class that emulates calls made on the ChunkDemuxer by the
446 // Media Source API. 464 // Media Source API.
447 class MockMediaSource { 465 class MockMediaSource {
448 public: 466 public:
449 MockMediaSource(const std::string& filename, 467 MockMediaSource(const std::string& filename,
(...skipping 2222 matching lines...) Expand 10 before | Expand all | Expand 10 after
2672 2690
2673 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { 2691 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) {
2674 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); 2692 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm"));
2675 Play(); 2693 Play();
2676 ASSERT_TRUE(WaitUntilOnEnded()); 2694 ASSERT_TRUE(WaitUntilOnEnded());
2677 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), 2695 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000),
2678 demuxer_->GetStartTime()); 2696 demuxer_->GetStartTime());
2679 } 2697 }
2680 2698
2681 } // namespace media 2699 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698