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

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

Issue 1100763002: Inject CanAddURLToHistory into TopSitesImpl (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@prefs
Patch Set: Fix error introduced during rebase 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
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/stl_util.h"
8 #include "base/strings/string_util.h" 9 #include "base/strings/string_util.h"
9 #include "build/build_config.h" 10 #include "build/build_config.h"
10 #include "media/base/cdm_callback_promise.h" 11 #include "media/base/cdm_callback_promise.h"
11 #include "media/base/cdm_context.h" 12 #include "media/base/cdm_context.h"
12 #include "media/base/cdm_key_information.h" 13 #include "media/base/cdm_key_information.h"
13 #include "media/base/decoder_buffer.h" 14 #include "media/base/decoder_buffer.h"
14 #include "media/base/media.h" 15 #include "media/base/media.h"
15 #include "media/base/media_keys.h" 16 #include "media/base/media_keys.h"
16 #include "media/base/media_switches.h" 17 #include "media/base/media_switches.h"
17 #include "media/base/test_data_util.h" 18 #include "media/base/test_data_util.h"
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
310 return; 311 return;
311 prev_init_data_ = init_data; 312 prev_init_data_ = init_data;
312 313
313 if (current_session_id_.empty()) { 314 if (current_session_id_.empty()) {
314 if (init_data_type == EmeInitDataType::CENC) { 315 if (init_data_type == EmeInitDataType::CENC) {
315 // Since the 'cenc' files are not created with proper 'pssh' boxes, 316 // Since the 'cenc' files are not created with proper 'pssh' boxes,
316 // simply pretend that this is a webm file and pass the expected 317 // simply pretend that this is a webm file and pass the expected
317 // key ID as the init_data. 318 // key ID as the init_data.
318 // http://crbug.com/460308 319 // http://crbug.com/460308
319 decryptor->CreateSessionAndGenerateRequest( 320 decryptor->CreateSessionAndGenerateRequest(
320 MediaKeys::TEMPORARY_SESSION, EmeInitDataType::WEBM, kKeyId, 321 MediaKeys::TEMPORARY_SESSION, EmeInitDataType::WEBM,
321 arraysize(kKeyId), CreateSessionPromise(RESOLVED)); 322 std::vector<uint8>(kKeyId, kKeyId + arraysize(kKeyId)),
323 CreateSessionPromise(RESOLVED));
322 } else { 324 } else {
323 decryptor->CreateSessionAndGenerateRequest( 325 decryptor->CreateSessionAndGenerateRequest(
324 MediaKeys::TEMPORARY_SESSION, init_data_type, 326 MediaKeys::TEMPORARY_SESSION, init_data_type, init_data,
325 vector_as_array(&init_data), init_data.size(),
326 CreateSessionPromise(RESOLVED)); 327 CreateSessionPromise(RESOLVED));
327 } 328 }
328 EXPECT_FALSE(current_session_id_.empty()); 329 EXPECT_FALSE(current_session_id_.empty());
329 } 330 }
330 331
331 // Clear Key really needs the key ID from |init_data|. For WebM, they are 332 // Clear Key really needs the key ID from |init_data|. For WebM, they are
332 // the same, but this is not the case for ISO CENC (key ID embedded in a 333 // the same, but this is not the case for ISO CENC (key ID embedded in a
333 // 'pssh' box). Therefore, provide the correct key ID. 334 // 'pssh' box). Therefore, provide the correct key ID.
334 const uint8* key_id = vector_as_array(&init_data); 335 const uint8* key_id = vector_as_array(&init_data);
335 size_t key_id_length = init_data.size(); 336 size_t key_id_length = init_data.size();
336 if (init_data_type == EmeInitDataType::CENC) { 337 if (init_data_type == EmeInitDataType::CENC) {
337 key_id = kKeyId; 338 key_id = kKeyId;
338 key_id_length = arraysize(kKeyId); 339 key_id_length = arraysize(kKeyId);
339 } 340 }
340 341
341 // Convert key into a JSON structure and then add it. 342 // Convert key into a JSON structure and then add it.
342 std::string jwk = GenerateJWKSet( 343 std::string jwk = GenerateJWKSet(
343 kSecretKey, arraysize(kSecretKey), key_id, key_id_length); 344 kSecretKey, arraysize(kSecretKey), key_id, key_id_length);
344 decryptor->UpdateSession(current_session_id_, 345 decryptor->UpdateSession(current_session_id_,
345 reinterpret_cast<const uint8*>(jwk.data()), 346 std::vector<uint8>(jwk.begin(), jwk.end()),
346 jwk.size(),
347 CreatePromise(RESOLVED)); 347 CreatePromise(RESOLVED));
348 } 348 }
349 349
350 std::string current_session_id_; 350 std::string current_session_id_;
351 std::vector<uint8> prev_init_data_; 351 std::vector<uint8> prev_init_data_;
352 }; 352 };
353 353
354 class RotatingKeyProvidingApp : public KeyProvidingApp { 354 class RotatingKeyProvidingApp : public KeyProvidingApp {
355 public: 355 public:
356 RotatingKeyProvidingApp() : num_distint_need_key_calls_(0) {} 356 RotatingKeyProvidingApp() : num_distint_need_key_calls_(0) {}
(...skipping 15 matching lines...) Expand all
372 std::vector<uint8> key_id; 372 std::vector<uint8> key_id;
373 std::vector<uint8> key; 373 std::vector<uint8> key;
374 EXPECT_TRUE(GetKeyAndKeyId(init_data, &key, &key_id)); 374 EXPECT_TRUE(GetKeyAndKeyId(init_data, &key, &key_id));
375 375
376 if (init_data_type == EmeInitDataType::CENC) { 376 if (init_data_type == EmeInitDataType::CENC) {
377 // Since the 'cenc' files are not created with proper 'pssh' boxes, 377 // Since the 'cenc' files are not created with proper 'pssh' boxes,
378 // simply pretend that this is a webm file and pass the expected 378 // simply pretend that this is a webm file and pass the expected
379 // key ID as the init_data. 379 // key ID as the init_data.
380 // http://crbug.com/460308 380 // http://crbug.com/460308
381 decryptor->CreateSessionAndGenerateRequest( 381 decryptor->CreateSessionAndGenerateRequest(
382 MediaKeys::TEMPORARY_SESSION, EmeInitDataType::WEBM, 382 MediaKeys::TEMPORARY_SESSION, EmeInitDataType::WEBM, key_id,
383 vector_as_array(&key_id), key_id.size(),
384 CreateSessionPromise(RESOLVED)); 383 CreateSessionPromise(RESOLVED));
385 } else { 384 } else {
386 decryptor->CreateSessionAndGenerateRequest( 385 decryptor->CreateSessionAndGenerateRequest(
387 MediaKeys::TEMPORARY_SESSION, init_data_type, 386 MediaKeys::TEMPORARY_SESSION, init_data_type, init_data,
388 vector_as_array(&init_data), init_data.size(),
389 CreateSessionPromise(RESOLVED)); 387 CreateSessionPromise(RESOLVED));
390 } 388 }
391 389
392 // Convert key into a JSON structure and then add it. 390 // Convert key into a JSON structure and then add it.
393 std::string jwk = GenerateJWKSet(vector_as_array(&key), 391 std::string jwk = GenerateJWKSet(vector_as_array(&key),
394 key.size(), 392 key.size(),
395 vector_as_array(&key_id), 393 vector_as_array(&key_id),
396 key_id.size()); 394 key_id.size());
397 decryptor->UpdateSession(current_session_id_, 395 decryptor->UpdateSession(current_session_id_,
398 reinterpret_cast<const uint8*>(jwk.data()), 396 std::vector<uint8>(jwk.begin(), jwk.end()),
399 jwk.size(),
400 CreatePromise(RESOLVED)); 397 CreatePromise(RESOLVED));
401 } 398 }
402 399
403 private: 400 private:
404 bool GetKeyAndKeyId(std::vector<uint8> init_data, 401 bool GetKeyAndKeyId(std::vector<uint8> init_data,
405 std::vector<uint8>* key, 402 std::vector<uint8>* key,
406 std::vector<uint8>* key_id) { 403 std::vector<uint8>* key_id) {
407 // For WebM, init_data is key_id; for ISO CENC, init_data should contain 404 // For WebM, init_data is key_id; for ISO CENC, init_data should contain
408 // the key_id. We assume key_id is in the end of init_data here (that is 405 // the key_id. We assume key_id is in the end of init_data here (that is
409 // only a reasonable assumption for WebM and clear key ISO CENC). 406 // only a reasonable assumption for WebM and clear key ISO CENC).
(...skipping 1327 matching lines...) Expand 10 before | Expand all | Expand 10 after
1737 1734
1738 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { 1735 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) {
1739 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); 1736 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm"));
1740 Play(); 1737 Play();
1741 ASSERT_TRUE(WaitUntilOnEnded()); 1738 ASSERT_TRUE(WaitUntilOnEnded());
1742 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), 1739 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000),
1743 demuxer_->GetStartTime()); 1740 demuxer_->GetStartTime());
1744 } 1741 }
1745 1742
1746 } // namespace media 1743 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698