fake_encrypted_media.cc 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. // Copyright 2017 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "media/test/fake_encrypted_media.h"
  5. #include "base/bind.h"
  6. #include "media/base/cdm_key_information.h"
  7. #include "media/cdm/aes_decryptor.h"
  8. namespace media {
  9. FakeEncryptedMedia::TestCdmContext::TestCdmContext(Decryptor* decryptor)
  10. : decryptor_(decryptor) {}
  11. Decryptor* FakeEncryptedMedia::TestCdmContext::GetDecryptor() {
  12. return decryptor_;
  13. }
  14. FakeEncryptedMedia::FakeEncryptedMedia(AppBase* app)
  15. : decryptor_(new AesDecryptor(
  16. base::BindRepeating(&FakeEncryptedMedia::OnSessionMessage,
  17. base::Unretained(this)),
  18. base::BindRepeating(&FakeEncryptedMedia::OnSessionClosed,
  19. base::Unretained(this)),
  20. base::BindRepeating(&FakeEncryptedMedia::OnSessionKeysChange,
  21. base::Unretained(this)),
  22. base::BindRepeating(&FakeEncryptedMedia::OnSessionExpirationUpdate,
  23. base::Unretained(this)))),
  24. cdm_context_(decryptor_.get()),
  25. app_(app) {}
  26. FakeEncryptedMedia::~FakeEncryptedMedia() = default;
  27. CdmContext* FakeEncryptedMedia::GetCdmContext() {
  28. return &cdm_context_;
  29. }
  30. // Callbacks for firing session events. Delegate to |app_|.
  31. void FakeEncryptedMedia::OnSessionMessage(const std::string& session_id,
  32. CdmMessageType message_type,
  33. const std::vector<uint8_t>& message) {
  34. app_->OnSessionMessage(session_id, message_type, message, decryptor_.get());
  35. }
  36. void FakeEncryptedMedia::OnSessionClosed(const std::string& session_id,
  37. CdmSessionClosedReason reason) {
  38. app_->OnSessionClosed(session_id, reason);
  39. }
  40. void FakeEncryptedMedia::OnSessionKeysChange(const std::string& session_id,
  41. bool has_additional_usable_key,
  42. CdmKeysInfo keys_info) {
  43. app_->OnSessionKeysChange(session_id, has_additional_usable_key,
  44. std::move(keys_info));
  45. }
  46. void FakeEncryptedMedia::OnSessionExpirationUpdate(
  47. const std::string& session_id,
  48. base::Time new_expiry_time) {
  49. app_->OnSessionExpirationUpdate(session_id, new_expiry_time);
  50. }
  51. void FakeEncryptedMedia::OnEncryptedMediaInitData(
  52. EmeInitDataType init_data_type,
  53. const std::vector<uint8_t>& init_data) {
  54. app_->OnEncryptedMediaInitData(init_data_type, init_data, decryptor_.get());
  55. }
  56. } // namespace media