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

Side by Side Diff: media/crypto/aes_decryptor_unittest.cc

Issue 11226019: Encrypted Media: Replace DecryptorClient with key event callbacks. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: add spec link Created 8 years 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 <string> 5 #include <string>
6 #include <vector> 6 #include <vector>
7 7
8 #include "base/basictypes.h" 8 #include "base/basictypes.h"
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "media/base/decoder_buffer.h" 10 #include "media/base/decoder_buffer.h"
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
220 std::string(reinterpret_cast<const char*>(key_id), key_id_size), 220 std::string(reinterpret_cast<const char*>(key_id), key_id_size),
221 std::string(reinterpret_cast<const char*>(iv), iv_size), 221 std::string(reinterpret_cast<const char*>(iv), iv_size),
222 data_offset, 222 data_offset,
223 subsample_entries))); 223 subsample_entries)));
224 return encrypted_buffer; 224 return encrypted_buffer;
225 } 225 }
226 226
227 class AesDecryptorTest : public testing::Test { 227 class AesDecryptorTest : public testing::Test {
228 public: 228 public:
229 AesDecryptorTest() 229 AesDecryptorTest()
230 : decryptor_(&client_), 230 : decryptor_(
231 base::Bind(&AesDecryptorTest::KeyAdded, base::Unretained(this)),
232 base::Bind(&AesDecryptorTest::KeyError, base::Unretained(this)),
233 base::Bind(&AesDecryptorTest::KeyMessage, base::Unretained(this)),
234 NeedKeyCB()),
231 decrypt_cb_(base::Bind(&AesDecryptorTest::BufferDecrypted, 235 decrypt_cb_(base::Bind(&AesDecryptorTest::BufferDecrypted,
232 base::Unretained(this))), 236 base::Unretained(this))),
233 subsample_entries_(kSubsampleEntries, 237 subsample_entries_(kSubsampleEntries,
234 kSubsampleEntries + arraysize(kSubsampleEntries)) { 238 kSubsampleEntries + arraysize(kSubsampleEntries)) {
235 } 239 }
236 240
237 protected: 241 protected:
238 void GenerateKeyRequest(const uint8* key_id, int key_id_size) { 242 void GenerateKeyRequest(const uint8* key_id, int key_id_size) {
239 std::string key_id_string(reinterpret_cast<const char*>(key_id), 243 std::string key_id_string(reinterpret_cast<const char*>(key_id),
240 key_id_size); 244 key_id_size);
241 EXPECT_CALL(client_, KeyMessage(kClearKeySystem, 245 EXPECT_CALL(*this, KeyMessage(kClearKeySystem,
242 StrNe(""), StrEq(key_id_string), "")) 246 StrNe(""), StrEq(key_id_string), ""))
243 .WillOnce(SaveArg<1>(&session_id_string_)); 247 .WillOnce(SaveArg<1>(&session_id_string_));
244 EXPECT_TRUE(decryptor_.GenerateKeyRequest(kClearKeySystem, "", 248 EXPECT_TRUE(decryptor_.GenerateKeyRequest(kClearKeySystem, "",
245 key_id, key_id_size)); 249 key_id, key_id_size));
246 } 250 }
247 251
248 void AddKeyAndExpectToSucceed(const uint8* key_id, int key_id_size, 252 void AddKeyAndExpectToSucceed(const uint8* key_id, int key_id_size,
249 const uint8* key, int key_size) { 253 const uint8* key, int key_size) {
250 EXPECT_CALL(client_, KeyAdded(kClearKeySystem, session_id_string_)); 254 EXPECT_CALL(*this, KeyAdded(kClearKeySystem, session_id_string_));
251 decryptor_.AddKey(kClearKeySystem, key, key_size, key_id, key_id_size, 255 decryptor_.AddKey(kClearKeySystem, key, key_size, key_id, key_id_size,
252 session_id_string_); 256 session_id_string_);
253 } 257 }
254 258
255 void AddKeyAndExpectToFail(const uint8* key_id, int key_id_size, 259 void AddKeyAndExpectToFail(const uint8* key_id, int key_id_size,
256 const uint8* key, int key_size) { 260 const uint8* key, int key_size) {
257 EXPECT_CALL(client_, KeyError(kClearKeySystem, session_id_string_, 261 EXPECT_CALL(*this, KeyError(kClearKeySystem, session_id_string_,
258 Decryptor::kUnknownError, 0)); 262 Decryptor::kUnknownError, 0));
259 decryptor_.AddKey(kClearKeySystem, key, key_size, key_id, key_id_size, 263 decryptor_.AddKey(kClearKeySystem, key, key_size, key_id, key_id_size,
260 session_id_string_); 264 session_id_string_);
261 } 265 }
262 266
263 MOCK_METHOD2(BufferDecrypted, void(Decryptor::Status, 267 MOCK_METHOD2(BufferDecrypted, void(Decryptor::Status,
264 const scoped_refptr<DecoderBuffer>&)); 268 const scoped_refptr<DecoderBuffer>&));
265 269
266 void DecryptAndExpectToSucceed(const scoped_refptr<DecoderBuffer>& encrypted, 270 void DecryptAndExpectToSucceed(const scoped_refptr<DecoderBuffer>& encrypted,
267 const uint8* plain_text, int plain_text_size) { 271 const uint8* plain_text, int plain_text_size) {
268 scoped_refptr<DecoderBuffer> decrypted; 272 scoped_refptr<DecoderBuffer> decrypted;
(...skipping 30 matching lines...) Expand all
299 ASSERT_TRUE(decrypted); 303 ASSERT_TRUE(decrypted);
300 EXPECT_NE(plain_text_size, decrypted->GetDataSize()); 304 EXPECT_NE(plain_text_size, decrypted->GetDataSize());
301 EXPECT_NE(0, memcmp(plain_text, decrypted->GetData(), plain_text_size)); 305 EXPECT_NE(0, memcmp(plain_text, decrypted->GetData(), plain_text_size));
302 } 306 }
303 307
304 void DecryptAndExpectToFail(const scoped_refptr<DecoderBuffer>& encrypted) { 308 void DecryptAndExpectToFail(const scoped_refptr<DecoderBuffer>& encrypted) {
305 EXPECT_CALL(*this, BufferDecrypted(AesDecryptor::kError, IsNull())); 309 EXPECT_CALL(*this, BufferDecrypted(AesDecryptor::kError, IsNull()));
306 decryptor_.Decrypt(Decryptor::kVideo, encrypted, decrypt_cb_); 310 decryptor_.Decrypt(Decryptor::kVideo, encrypted, decrypt_cb_);
307 } 311 }
308 312
309 MockDecryptorClient client_; 313 MOCK_METHOD2(KeyAdded, void(const std::string&, const std::string&));
314 MOCK_METHOD4(KeyError, void(const std::string&, const std::string&,
315 Decryptor::KeyError, int));
316 MOCK_METHOD4(KeyMessage, void(const std::string& key_system,
317 const std::string& session_id,
318 const std::string& message,
319 const std::string& default_url));
320
310 AesDecryptor decryptor_; 321 AesDecryptor decryptor_;
311 std::string session_id_string_; 322 std::string session_id_string_;
312 AesDecryptor::DecryptCB decrypt_cb_; 323 AesDecryptor::DecryptCB decrypt_cb_;
313 std::vector<SubsampleEntry> subsample_entries_; 324 std::vector<SubsampleEntry> subsample_entries_;
314 }; 325 };
315 326
316 TEST_F(AesDecryptorTest, GenerateKeyRequestWithNullInitData) { 327 TEST_F(AesDecryptorTest, GenerateKeyRequestWithNullInitData) {
317 EXPECT_CALL(client_, KeyMessage(kClearKeySystem, StrNe(""), "", "")); 328 EXPECT_CALL(*this, KeyMessage(kClearKeySystem, StrNe(""), "", ""));
318 EXPECT_TRUE(decryptor_.GenerateKeyRequest(kClearKeySystem, "", NULL, 0)); 329 EXPECT_TRUE(decryptor_.GenerateKeyRequest(kClearKeySystem, "", NULL, 0));
319 } 330 }
320 331
321 TEST_F(AesDecryptorTest, NormalWebMDecryption) { 332 TEST_F(AesDecryptorTest, NormalWebMDecryption) {
322 const WebmEncryptedData& frame = kWebmEncryptedFrames[0]; 333 const WebmEncryptedData& frame = kWebmEncryptedFrames[0];
323 GenerateKeyRequest(frame.key_id, frame.key_id_size); 334 GenerateKeyRequest(frame.key_id, frame.key_id_size);
324 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size, 335 AddKeyAndExpectToSucceed(frame.key_id, frame.key_id_size,
325 frame.key, frame.key_size); 336 frame.key, frame.key_size);
326 scoped_refptr<DecoderBuffer> encrypted_data = 337 scoped_refptr<DecoderBuffer> encrypted_data =
327 CreateWebMEncryptedBuffer(frame.encrypted_data, 338 CreateWebMEncryptedBuffer(frame.encrypted_data,
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
585 scoped_refptr<DecoderBuffer> encrypted_data = CreateSubsampleEncryptedBuffer( 596 scoped_refptr<DecoderBuffer> encrypted_data = CreateSubsampleEncryptedBuffer(
586 kSubsampleData, arraysize(kSubsampleData), 597 kSubsampleData, arraysize(kSubsampleData),
587 kSubsampleKeyId, arraysize(kSubsampleKeyId), 598 kSubsampleKeyId, arraysize(kSubsampleKeyId),
588 kSubsampleIv, arraysize(kSubsampleIv), 599 kSubsampleIv, arraysize(kSubsampleIv),
589 0, 600 0,
590 entries); 601 entries);
591 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(encrypted_data)); 602 ASSERT_NO_FATAL_FAILURE(DecryptAndExpectToFail(encrypted_data));
592 } 603 }
593 604
594 } // namespace media 605 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698