| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "media/cdm/cdm_adapter.h" | 5 #include "media/cdm/cdm_adapter.h" |
| 6 | 6 |
| 7 #include <stdint.h> | 7 #include <stdint.h> |
| 8 #include <memory> | 8 #include <memory> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 // or generates an error. | 83 // or generates an error. |
| 84 void InitializeAndExpect(base::FilePath library_path, | 84 void InitializeAndExpect(base::FilePath library_path, |
| 85 ExpectedResult expected_result) { | 85 ExpectedResult expected_result) { |
| 86 CdmConfig cdm_config; // default settings of false are sufficient. | 86 CdmConfig cdm_config; // default settings of false are sufficient. |
| 87 std::unique_ptr<CdmAllocator> allocator(new SimpleCdmAllocator()); | 87 std::unique_ptr<CdmAllocator> allocator(new SimpleCdmAllocator()); |
| 88 CdmAdapter::Create( | 88 CdmAdapter::Create( |
| 89 helper_.KeySystemName(), library_path, cdm_config, std::move(allocator), | 89 helper_.KeySystemName(), library_path, cdm_config, std::move(allocator), |
| 90 base::Bind(&CdmAdapterTest::CreateCdmFileIO, base::Unretained(this)), | 90 base::Bind(&CdmAdapterTest::CreateCdmFileIO, base::Unretained(this)), |
| 91 base::Bind(&CdmAdapterTest::OnSessionMessage, base::Unretained(this)), | 91 base::Bind(&CdmAdapterTest::OnSessionMessage, base::Unretained(this)), |
| 92 base::Bind(&CdmAdapterTest::OnSessionClosed, base::Unretained(this)), | 92 base::Bind(&CdmAdapterTest::OnSessionClosed, base::Unretained(this)), |
| 93 base::Bind(&CdmAdapterTest::OnLegacySessionError, | |
| 94 base::Unretained(this)), | |
| 95 base::Bind(&CdmAdapterTest::OnSessionKeysChange, | 93 base::Bind(&CdmAdapterTest::OnSessionKeysChange, |
| 96 base::Unretained(this)), | 94 base::Unretained(this)), |
| 97 base::Bind(&CdmAdapterTest::OnSessionExpirationUpdate, | 95 base::Bind(&CdmAdapterTest::OnSessionExpirationUpdate, |
| 98 base::Unretained(this)), | 96 base::Unretained(this)), |
| 99 base::Bind(&CdmAdapterTest::OnCdmCreated, base::Unretained(this), | 97 base::Bind(&CdmAdapterTest::OnCdmCreated, base::Unretained(this), |
| 100 expected_result)); | 98 expected_result)); |
| 101 RunUntilIdle(); | 99 RunUntilIdle(); |
| 102 } | 100 } |
| 103 | 101 |
| 104 // Creates a new session using |key_id|. |session_id_| will be set | 102 // Creates a new session using |key_id|. |session_id_| will be set |
| 105 // when the promise is resolved. |expected_result| tests that | 103 // when the promise is resolved. |expected_result| tests that |
| 106 // CreateSessionAndGenerateRequest() succeeds or generates an error. | 104 // CreateSessionAndGenerateRequest() succeeds or generates an error. |
| 107 void CreateSessionAndExpect(EmeInitDataType data_type, | 105 void CreateSessionAndExpect(EmeInitDataType data_type, |
| 108 const std::vector<uint8_t>& key_id, | 106 const std::vector<uint8_t>& key_id, |
| 109 ExpectedResult expected_result) { | 107 ExpectedResult expected_result) { |
| 110 DCHECK(!key_id.empty()); | 108 DCHECK(!key_id.empty()); |
| 111 | 109 |
| 112 if (expected_result == SUCCESS) { | 110 if (expected_result == SUCCESS) { |
| 113 EXPECT_CALL(*this, | 111 EXPECT_CALL(*this, OnSessionMessage(IsNotEmpty(), _, _)); |
| 114 OnSessionMessage(IsNotEmpty(), _, _, GURL::EmptyGURL())); | |
| 115 } | 112 } |
| 116 | 113 |
| 117 adapter_->CreateSessionAndGenerateRequest( | 114 adapter_->CreateSessionAndGenerateRequest( |
| 118 MediaKeys::TEMPORARY_SESSION, data_type, key_id, | 115 MediaKeys::TEMPORARY_SESSION, data_type, key_id, |
| 119 CreateSessionPromise(expected_result)); | 116 CreateSessionPromise(expected_result)); |
| 120 RunUntilIdle(); | 117 RunUntilIdle(); |
| 121 } | 118 } |
| 122 | 119 |
| 123 // Loads the session specified by |session_id|. |expected_result| tests | 120 // Loads the session specified by |session_id|. |expected_result| tests |
| 124 // that LoadSession() succeeds or generates an error. | 121 // that LoadSession() succeeds or generates an error. |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 | 211 |
| 215 // Methods used for promise resolved/rejected. | 212 // Methods used for promise resolved/rejected. |
| 216 MOCK_METHOD0(OnResolve, void()); | 213 MOCK_METHOD0(OnResolve, void()); |
| 217 MOCK_METHOD1(OnResolveWithSession, void(const std::string& session_id)); | 214 MOCK_METHOD1(OnResolveWithSession, void(const std::string& session_id)); |
| 218 MOCK_METHOD3(OnReject, | 215 MOCK_METHOD3(OnReject, |
| 219 void(MediaKeys::Exception exception_code, | 216 void(MediaKeys::Exception exception_code, |
| 220 uint32_t system_code, | 217 uint32_t system_code, |
| 221 const std::string& error_message)); | 218 const std::string& error_message)); |
| 222 | 219 |
| 223 // Methods used for the events possibly generated by CdmAdapater. | 220 // Methods used for the events possibly generated by CdmAdapater. |
| 224 MOCK_METHOD4(OnSessionMessage, | 221 MOCK_METHOD3(OnSessionMessage, |
| 225 void(const std::string& session_id, | 222 void(const std::string& session_id, |
| 226 MediaKeys::MessageType message_type, | 223 MediaKeys::MessageType message_type, |
| 227 const std::vector<uint8_t>& message, | 224 const std::vector<uint8_t>& message)); |
| 228 const GURL& legacy_destination_url)); | |
| 229 MOCK_METHOD1(OnSessionClosed, void(const std::string& session_id)); | 225 MOCK_METHOD1(OnSessionClosed, void(const std::string& session_id)); |
| 230 MOCK_METHOD4(OnLegacySessionError, | |
| 231 void(const std::string& session_id, | |
| 232 MediaKeys::Exception exception, | |
| 233 uint32_t system_code, | |
| 234 const std::string& error_message)); | |
| 235 MOCK_METHOD2(OnSessionKeysChangeCalled, | 226 MOCK_METHOD2(OnSessionKeysChangeCalled, |
| 236 void(const std::string& session_id, | 227 void(const std::string& session_id, |
| 237 bool has_additional_usable_key)); | 228 bool has_additional_usable_key)); |
| 238 void OnSessionKeysChange(const std::string& session_id, | 229 void OnSessionKeysChange(const std::string& session_id, |
| 239 bool has_additional_usable_key, | 230 bool has_additional_usable_key, |
| 240 CdmKeysInfo keys_info) { | 231 CdmKeysInfo keys_info) { |
| 241 // MOCK methods don't like CdmKeysInfo. | 232 // MOCK methods don't like CdmKeysInfo. |
| 242 OnSessionKeysChangeCalled(session_id, has_additional_usable_key); | 233 OnSessionKeysChangeCalled(session_id, has_additional_usable_key); |
| 243 } | 234 } |
| 244 MOCK_METHOD2(OnSessionExpirationUpdate, | 235 MOCK_METHOD2(OnSessionExpirationUpdate, |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 TEST_F(CdmAdapterTest, UpdateSessionWithBadData) { | 315 TEST_F(CdmAdapterTest, UpdateSessionWithBadData) { |
| 325 InitializeAndExpect(ExternalClearKeyLibrary(), SUCCESS); | 316 InitializeAndExpect(ExternalClearKeyLibrary(), SUCCESS); |
| 326 | 317 |
| 327 std::vector<uint8_t> key_id(kKeyId, kKeyId + arraysize(kKeyId)); | 318 std::vector<uint8_t> key_id(kKeyId, kKeyId + arraysize(kKeyId)); |
| 328 CreateSessionAndExpect(EmeInitDataType::WEBM, key_id, SUCCESS); | 319 CreateSessionAndExpect(EmeInitDataType::WEBM, key_id, SUCCESS); |
| 329 | 320 |
| 330 UpdateSessionAndExpect(SessionId(), "random data", FAILURE, true); | 321 UpdateSessionAndExpect(SessionId(), "random data", FAILURE, true); |
| 331 } | 322 } |
| 332 | 323 |
| 333 } // namespace media | 324 } // namespace media |
| OLD | NEW |