Chromium Code Reviews| Index: media/cdm/aes_decryptor.cc |
| diff --git a/media/cdm/aes_decryptor.cc b/media/cdm/aes_decryptor.cc |
| index 9938bae2c8df544ffde76f1169697986d9d3e8cf..e13b068a86352fca53db85739d650d7c6101b740 100644 |
| --- a/media/cdm/aes_decryptor.cc |
| +++ b/media/cdm/aes_decryptor.cc |
| @@ -13,6 +13,7 @@ |
| #include "crypto/encryptor.h" |
| #include "crypto/symmetric_key.h" |
| #include "media/base/audio_decoder_config.h" |
| +#include "media/base/cdm_key_information.h" |
| #include "media/base/cdm_promise.h" |
| #include "media/base/decoder_buffer.h" |
| #include "media/base/decrypt_config.h" |
| @@ -329,9 +330,23 @@ void AesDecryptor::UpdateSession(const std::string& web_session_id, |
| promise->resolve(); |
| + // Create the list of all available keys for this session. |
| + CdmKeysInfo keys_info; |
| + base::AutoLock auto_lock(key_map_lock_); |
| + for (const auto& item : key_map_) { |
| + if (item.second->Contains(web_session_id)) { |
| + scoped_ptr<CdmKeyInformation> key_info(new CdmKeyInformation); |
| + std::vector<uint8_t> key_id_vector(item.first.begin(), item.first.end()); |
| + key_info->key_id = key_id_vector; |
|
xhwang
2015/01/05 22:53:15
You can avoid the extra copy here by using
key_i
jrummell
2015/01/06 02:36:25
Done.
|
| + key_info->status = CdmKeyInformation::USABLE; |
| + key_info->system_code = 0; |
| + keys_info.push_back(key_info.release()); |
| + } |
| + } |
| + |
| // Assume that at least 1 new key has been successfully added and thus |
| - // sending true. |
| - session_keys_change_cb_.Run(web_session_id, true); |
| + // sending true for |has_additional_usable_key|. |
| + session_keys_change_cb_.Run(web_session_id, true, keys_info); |
| } |
| void AesDecryptor::CloseSession(const std::string& web_session_id, |