OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/ppapi/external_clear_key/clear_key_cdm.h" | 5 #include "media/cdm/ppapi/external_clear_key/clear_key_cdm.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <cstring> | 8 #include <cstring> |
9 #include <sstream> | 9 #include <sstream> |
10 #include <utility> | 10 #include <utility> |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 return cdm::kUnknownError; | 138 return cdm::kUnknownError; |
139 case media::CdmPromise::CLIENT_ERROR: | 139 case media::CdmPromise::CLIENT_ERROR: |
140 return cdm::kClientError; | 140 return cdm::kClientError; |
141 case media::CdmPromise::OUTPUT_ERROR: | 141 case media::CdmPromise::OUTPUT_ERROR: |
142 return cdm::kOutputError; | 142 return cdm::kOutputError; |
143 } | 143 } |
144 NOTREACHED(); | 144 NOTREACHED(); |
145 return cdm::kUnknownError; | 145 return cdm::kUnknownError; |
146 } | 146 } |
147 | 147 |
148 static media::MediaKeys::SessionType ConvertSessionType( | 148 static media::ContentDecryptionModule::SessionType ConvertSessionType( |
149 cdm::SessionType session_type) { | 149 cdm::SessionType session_type) { |
150 switch (session_type) { | 150 switch (session_type) { |
151 case cdm::kTemporary: | 151 case cdm::kTemporary: |
152 return media::MediaKeys::TEMPORARY_SESSION; | 152 return media::ContentDecryptionModule::TEMPORARY_SESSION; |
153 case cdm::kPersistentLicense: | 153 case cdm::kPersistentLicense: |
154 return media::MediaKeys::PERSISTENT_LICENSE_SESSION; | 154 return media::ContentDecryptionModule::PERSISTENT_LICENSE_SESSION; |
155 case cdm::kPersistentKeyRelease: | 155 case cdm::kPersistentKeyRelease: |
156 return media::MediaKeys::PERSISTENT_RELEASE_MESSAGE_SESSION; | 156 return media::ContentDecryptionModule::PERSISTENT_RELEASE_MESSAGE_SESSION; |
157 } | 157 } |
158 NOTREACHED(); | 158 NOTREACHED(); |
159 return media::MediaKeys::TEMPORARY_SESSION; | 159 return media::ContentDecryptionModule::TEMPORARY_SESSION; |
160 } | 160 } |
161 | 161 |
162 static media::EmeInitDataType ConvertInitDataType( | 162 static media::EmeInitDataType ConvertInitDataType( |
163 cdm::InitDataType init_data_type) { | 163 cdm::InitDataType init_data_type) { |
164 switch (init_data_type) { | 164 switch (init_data_type) { |
165 case cdm::kCenc: | 165 case cdm::kCenc: |
166 return media::EmeInitDataType::CENC; | 166 return media::EmeInitDataType::CENC; |
167 case cdm::kKeyIds: | 167 case cdm::kKeyIds: |
168 return media::EmeInitDataType::KEYIDS; | 168 return media::EmeInitDataType::KEYIDS; |
169 case cdm::kWebM: | 169 case cdm::kWebM: |
(...skipping 174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 new media::CdmCallbackPromise<std::string>( | 344 new media::CdmCallbackPromise<std::string>( |
345 base::Bind(&ClearKeyCdm::OnSessionLoaded, base::Unretained(this), | 345 base::Bind(&ClearKeyCdm::OnSessionLoaded, base::Unretained(this), |
346 promise_id), | 346 promise_id), |
347 base::Bind(&ClearKeyCdm::OnPromiseFailed, base::Unretained(this), | 347 base::Bind(&ClearKeyCdm::OnPromiseFailed, base::Unretained(this), |
348 promise_id))); | 348 promise_id))); |
349 // AesDecryptor does not support loading, so create a temporary session to | 349 // AesDecryptor does not support loading, so create a temporary session to |
350 // represent it in other session-related methods. | 350 // represent it in other session-related methods. |
351 std::vector<uint8_t> key_id( | 351 std::vector<uint8_t> key_id( |
352 kLoadableSessionKeyId, | 352 kLoadableSessionKeyId, |
353 kLoadableSessionKeyId + arraysize(kLoadableSessionKeyId) - 1); | 353 kLoadableSessionKeyId + arraysize(kLoadableSessionKeyId) - 1); |
354 decryptor_->CreateSessionAndGenerateRequest(MediaKeys::TEMPORARY_SESSION, | 354 decryptor_->CreateSessionAndGenerateRequest( |
355 EmeInitDataType::WEBM, key_id, | 355 ContentDecryptionModule::TEMPORARY_SESSION, EmeInitDataType::WEBM, key_id, |
356 std::move(promise)); | 356 std::move(promise)); |
357 } | 357 } |
358 | 358 |
359 void ClearKeyCdm::UpdateSession(uint32_t promise_id, | 359 void ClearKeyCdm::UpdateSession(uint32_t promise_id, |
360 const char* session_id, | 360 const char* session_id, |
361 uint32_t session_id_length, | 361 uint32_t session_id_length, |
362 const uint8_t* response, | 362 const uint8_t* response, |
363 uint32_t response_size) { | 363 uint32_t response_size) { |
364 DVLOG(1) << __func__; | 364 DVLOG(1) << __func__; |
365 std::string web_session_str(session_id, session_id_length); | 365 std::string web_session_str(session_id, session_id_length); |
366 | 366 |
(...skipping 383 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
750 new media::CdmCallbackPromise<>( | 750 new media::CdmCallbackPromise<>( |
751 base::Bind(&ClearKeyCdm::OnLoadSessionUpdated, | 751 base::Bind(&ClearKeyCdm::OnLoadSessionUpdated, |
752 base::Unretained(this)), | 752 base::Unretained(this)), |
753 base::Bind(&ClearKeyCdm::OnPromiseFailed, base::Unretained(this), | 753 base::Bind(&ClearKeyCdm::OnPromiseFailed, base::Unretained(this), |
754 promise_id_for_emulated_loadsession_))); | 754 promise_id_for_emulated_loadsession_))); |
755 decryptor_->UpdateSession( | 755 decryptor_->UpdateSession( |
756 session_id_for_emulated_loadsession_, | 756 session_id_for_emulated_loadsession_, |
757 std::vector<uint8_t>(jwk_set.begin(), jwk_set.end()), std::move(promise)); | 757 std::vector<uint8_t>(jwk_set.begin(), jwk_set.end()), std::move(promise)); |
758 } | 758 } |
759 | 759 |
760 void ClearKeyCdm::OnSessionMessage(const std::string& session_id, | 760 void ClearKeyCdm::OnSessionMessage( |
761 MediaKeys::MessageType message_type, | 761 const std::string& session_id, |
762 const std::vector<uint8_t>& message) { | 762 ContentDecryptionModule::MessageType message_type, |
| 763 const std::vector<uint8_t>& message) { |
763 DVLOG(1) << "OnSessionMessage: " << message.size(); | 764 DVLOG(1) << "OnSessionMessage: " << message.size(); |
764 | 765 |
765 // Ignore the message when we are waiting to update the loadable session. | 766 // Ignore the message when we are waiting to update the loadable session. |
766 if (session_id == session_id_for_emulated_loadsession_) | 767 if (session_id == session_id_for_emulated_loadsession_) |
767 return; | 768 return; |
768 | 769 |
769 // OnSessionMessage() only called during CreateSession(), so no promise | 770 // OnSessionMessage() only called during CreateSession(), so no promise |
770 // involved (OnSessionCreated() called to resolve the CreateSession() | 771 // involved (OnSessionCreated() called to resolve the CreateSession() |
771 // promise). | 772 // promise). |
772 host_->OnSessionMessage(session_id.data(), session_id.length(), | 773 host_->OnSessionMessage(session_id.data(), session_id.length(), |
(...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
976 is_running_platform_verification_test_ = true; | 977 is_running_platform_verification_test_ = true; |
977 | 978 |
978 std::string service_id = "test_service_id"; | 979 std::string service_id = "test_service_id"; |
979 std::string challenge = "test_challenge"; | 980 std::string challenge = "test_challenge"; |
980 | 981 |
981 host_->SendPlatformChallenge(service_id.data(), service_id.size(), | 982 host_->SendPlatformChallenge(service_id.data(), service_id.size(), |
982 challenge.data(), challenge.size()); | 983 challenge.data(), challenge.size()); |
983 } | 984 } |
984 | 985 |
985 } // namespace media | 986 } // namespace media |
OLD | NEW |