Chromium Code Reviews| Index: media/cdm/ppapi/cdm_adapter.cc |
| diff --git a/media/cdm/ppapi/cdm_adapter.cc b/media/cdm/ppapi/cdm_adapter.cc |
| index 8388f449880cf28d0d41486e821d63101546cee4..0843602e279a3e4ae8fa75ee11313efbbb5b928c 100644 |
| --- a/media/cdm/ppapi/cdm_adapter.cc |
| +++ b/media/cdm/ppapi/cdm_adapter.cc |
| @@ -255,7 +255,6 @@ CdmAdapter::CdmAdapter(PP_Instance instance, pp::Module* module) |
| #if defined(OS_CHROMEOS) |
| output_protection_(this), |
| platform_verification_(this), |
| - challenge_in_progress_(false), |
| output_link_mask_(0), |
| output_protection_mask_(0), |
| query_output_protection_in_progress_(false), |
| @@ -1005,34 +1004,33 @@ void CdmAdapter::SendPlatformChallenge( |
| const char* service_id, uint32_t service_id_length, |
| const char* challenge, uint32_t challenge_length) { |
| #if defined(OS_CHROMEOS) |
| - PP_DCHECK(!challenge_in_progress_); |
| - |
| - // Ensure member variables set by the callback are in a clean state. |
| - signed_data_output_ = pp::Var(); |
| - signed_data_signature_output_ = pp::Var(); |
| - platform_key_certificate_output_ = pp::Var(); |
| - |
| pp::VarArrayBuffer challenge_var(challenge_length); |
| uint8_t* var_data = static_cast<uint8_t*>(challenge_var.Map()); |
| memcpy(var_data, challenge, challenge_length); |
| std::string service_id_str(service_id, service_id_length); |
| + |
| + linked_ptr<PepperPlatformChallengeResponse> response( |
| + new PepperPlatformChallengeResponse()); |
| + |
| int32_t result = platform_verification_.ChallengePlatform( |
| - pp::Var(service_id_str), challenge_var, &signed_data_output_, |
| - &signed_data_signature_output_, &platform_key_certificate_output_, |
| - callback_factory_.NewCallback(&CdmAdapter::SendPlatformChallengeDone)); |
| + pp::Var(service_id_str), |
| + challenge_var, |
| + &response->signed_data, |
| + &response->signed_data_signature, |
| + &response->platform_key_certificate, |
| + callback_factory_.NewCallback(&CdmAdapter::SendPlatformChallengeDone, |
| + response)); |
| challenge_var.Unmap(); |
| - if (result == PP_OK_COMPLETIONPENDING) { |
| - challenge_in_progress_ = true; |
| + if (result == PP_OK_COMPLETIONPENDING) |
| return; |
| - } |
| // Fall through on error and issue an empty OnPlatformChallengeResponse(). |
| PP_DCHECK(result != PP_OK); |
| #endif |
| - cdm::PlatformChallengeResponse response = {}; |
| - cdm_->OnPlatformChallengeResponse(response); |
| + cdm::PlatformChallengeResponse platform_challenge_response = {}; |
|
xhwang
2014/07/16 00:13:18
rename because we have a different "response" on l
|
| + cdm_->OnPlatformChallengeResponse(platform_challenge_response); |
| } |
| void CdmAdapter::EnableOutputProtection(uint32_t desired_protection_mask) { |
| @@ -1150,29 +1148,29 @@ void CdmAdapter::ReportOutputProtectionQueryResult() { |
| // queries and success results. |
| } |
| -void CdmAdapter::SendPlatformChallengeDone(int32_t result) { |
| - challenge_in_progress_ = false; |
| - |
| +void CdmAdapter::SendPlatformChallengeDone( |
| + int32_t result, |
| + const linked_ptr<PepperPlatformChallengeResponse>& response) { |
| if (result != PP_OK) { |
| CDM_DLOG() << __FUNCTION__ << ": Platform challenge failed!"; |
| - cdm::PlatformChallengeResponse response = {}; |
| - cdm_->OnPlatformChallengeResponse(response); |
| + cdm::PlatformChallengeResponse platform_challenge_response = {}; |
| + cdm_->OnPlatformChallengeResponse(platform_challenge_response); |
| return; |
| } |
| - pp::VarArrayBuffer signed_data_var(signed_data_output_); |
| - pp::VarArrayBuffer signed_data_signature_var(signed_data_signature_output_); |
| + pp::VarArrayBuffer signed_data_var(response->signed_data); |
| + pp::VarArrayBuffer signed_data_signature_var(response->signed_data_signature); |
| std::string platform_key_certificate_string = |
| - platform_key_certificate_output_.AsString(); |
| + response->platform_key_certificate.AsString(); |
| - cdm::PlatformChallengeResponse response = { |
| + cdm::PlatformChallengeResponse platform_challenge_response = { |
| static_cast<uint8_t*>(signed_data_var.Map()), |
| signed_data_var.ByteLength(), |
| static_cast<uint8_t*>(signed_data_signature_var.Map()), |
| signed_data_signature_var.ByteLength(), |
| reinterpret_cast<const uint8_t*>(platform_key_certificate_string.data()), |
| static_cast<uint32_t>(platform_key_certificate_string.length())}; |
| - cdm_->OnPlatformChallengeResponse(response); |
| + cdm_->OnPlatformChallengeResponse(platform_challenge_response); |
|
dmichael (off chromium)
2014/07/16 15:21:32
One thing I just noticed... OnPlatformChallengeRe
xhwang
2014/07/16 16:14:31
Thanks for pointing this out. In all CDM interface
|
| signed_data_var.Unmap(); |
| signed_data_signature_var.Unmap(); |