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

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

Issue 1002193005: Properly determine if a new key was added in AesDecryptor::Update() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix pipeline test Created 5 years, 9 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
« no previous file with comments | « media/cdm/aes_decryptor_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "build/build_config.h" 9 #include "build/build_config.h"
10 #include "media/base/cdm_callback_promise.h" 10 #include "media/base/cdm_callback_promise.h"
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after
295 void OnSessionKeysChange(const std::string& session_id, 295 void OnSessionKeysChange(const std::string& session_id,
296 bool has_additional_usable_key, 296 bool has_additional_usable_key,
297 CdmKeysInfo keys_info) override { 297 CdmKeysInfo keys_info) override {
298 EXPECT_EQ(current_session_id_, session_id); 298 EXPECT_EQ(current_session_id_, session_id);
299 EXPECT_EQ(has_additional_usable_key, true); 299 EXPECT_EQ(has_additional_usable_key, true);
300 } 300 }
301 301
302 void OnEncryptedMediaInitData(const std::string& init_data_type, 302 void OnEncryptedMediaInitData(const std::string& init_data_type,
303 const std::vector<uint8>& init_data, 303 const std::vector<uint8>& init_data,
304 AesDecryptor* decryptor) override { 304 AesDecryptor* decryptor) override {
305 // Since only 1 session is created, skip the request if the |init_data|
306 // has been seen before (no need to add the same key again).
307 if (init_data == prev_init_data_)
308 return;
309 prev_init_data_ = init_data;
310
305 if (current_session_id_.empty()) { 311 if (current_session_id_.empty()) {
306 if (init_data_type == kCencInitDataType) { 312 if (init_data_type == kCencInitDataType) {
307 // Since the 'cenc' files are not created with proper 'pssh' boxes, 313 // Since the 'cenc' files are not created with proper 'pssh' boxes,
308 // simply pretend that this is a webm file and pass the expected 314 // simply pretend that this is a webm file and pass the expected
309 // key ID as the init_data. 315 // key ID as the init_data.
310 // http://crbug.com/460308 316 // http://crbug.com/460308
311 decryptor->CreateSessionAndGenerateRequest( 317 decryptor->CreateSessionAndGenerateRequest(
312 MediaKeys::TEMPORARY_SESSION, "webm", kKeyId, arraysize(kKeyId), 318 MediaKeys::TEMPORARY_SESSION, "webm", kKeyId, arraysize(kKeyId),
313 CreateSessionPromise(RESOLVED)); 319 CreateSessionPromise(RESOLVED));
314 } else { 320 } else {
(...skipping 18 matching lines...) Expand all
333 // Convert key into a JSON structure and then add it. 339 // Convert key into a JSON structure and then add it.
334 std::string jwk = GenerateJWKSet( 340 std::string jwk = GenerateJWKSet(
335 kSecretKey, arraysize(kSecretKey), key_id, key_id_length); 341 kSecretKey, arraysize(kSecretKey), key_id, key_id_length);
336 decryptor->UpdateSession(current_session_id_, 342 decryptor->UpdateSession(current_session_id_,
337 reinterpret_cast<const uint8*>(jwk.data()), 343 reinterpret_cast<const uint8*>(jwk.data()),
338 jwk.size(), 344 jwk.size(),
339 CreatePromise(RESOLVED)); 345 CreatePromise(RESOLVED));
340 } 346 }
341 347
342 std::string current_session_id_; 348 std::string current_session_id_;
349 std::vector<uint8> prev_init_data_;
343 }; 350 };
344 351
345 class RotatingKeyProvidingApp : public KeyProvidingApp { 352 class RotatingKeyProvidingApp : public KeyProvidingApp {
346 public: 353 public:
347 RotatingKeyProvidingApp() : num_distint_need_key_calls_(0) {} 354 RotatingKeyProvidingApp() : num_distint_need_key_calls_(0) {}
348 ~RotatingKeyProvidingApp() override { 355 ~RotatingKeyProvidingApp() override {
349 // Expect that OnEncryptedMediaInitData is fired multiple times with 356 // Expect that OnEncryptedMediaInitData is fired multiple times with
350 // different |init_data|. 357 // different |init_data|.
351 EXPECT_GT(num_distint_need_key_calls_, 1u); 358 EXPECT_GT(num_distint_need_key_calls_, 1u);
352 } 359 }
(...skipping 1382 matching lines...) Expand 10 before | Expand all | Expand 10 after
1735 1742
1736 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { 1743 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) {
1737 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); 1744 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm"));
1738 Play(); 1745 Play();
1739 ASSERT_TRUE(WaitUntilOnEnded()); 1746 ASSERT_TRUE(WaitUntilOnEnded());
1740 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), 1747 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000),
1741 demuxer_->GetStartTime()); 1748 demuxer_->GetStartTime());
1742 } 1749 }
1743 1750
1744 } // namespace media 1751 } // namespace media
OLDNEW
« no previous file with comments | « media/cdm/aes_decryptor_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698