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 <string> | 10 #include <string> |
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
693 host_->OnSessionMessage(web_session_id.data(), | 693 host_->OnSessionMessage(web_session_id.data(), |
694 web_session_id.length(), | 694 web_session_id.length(), |
695 reinterpret_cast<const char*>(message.data()), | 695 reinterpret_cast<const char*>(message.data()), |
696 message.size(), | 696 message.size(), |
697 destination_url.spec().data(), | 697 destination_url.spec().data(), |
698 destination_url.spec().size()); | 698 destination_url.spec().size()); |
699 } | 699 } |
700 | 700 |
701 void ClearKeyCdm::OnSessionKeysChange(const std::string& web_session_id, | 701 void ClearKeyCdm::OnSessionKeysChange(const std::string& web_session_id, |
702 bool has_additional_usable_key) { | 702 bool has_additional_usable_key) { |
| 703 // Ignore the message when we are waiting to update the loadable session. |
| 704 if (web_session_id == session_id_for_emulated_loadsession_) |
| 705 return; |
| 706 |
703 host_->OnSessionUsableKeysChange(web_session_id.data(), | 707 host_->OnSessionUsableKeysChange(web_session_id.data(), |
704 web_session_id.length(), | 708 web_session_id.length(), |
705 has_additional_usable_key); | 709 has_additional_usable_key); |
706 } | 710 } |
707 | 711 |
708 void ClearKeyCdm::OnSessionClosed(const std::string& web_session_id) { | 712 void ClearKeyCdm::OnSessionClosed(const std::string& web_session_id) { |
709 host_->OnSessionClosed(web_session_id.data(), web_session_id.length()); | 713 host_->OnSessionClosed(web_session_id.data(), web_session_id.length()); |
710 } | 714 } |
711 | 715 |
712 void ClearKeyCdm::OnSessionCreated(uint32 promise_id, | 716 void ClearKeyCdm::OnSessionCreated(uint32 promise_id, |
(...skipping 29 matching lines...) Expand all Loading... |
742 | 746 |
743 void ClearKeyCdm::OnSessionUpdated(uint32 promise_id, | 747 void ClearKeyCdm::OnSessionUpdated(uint32 promise_id, |
744 const std::string& web_session_id) { | 748 const std::string& web_session_id) { |
745 // UpdateSession() may be called to finish loading sessions, so handle | 749 // UpdateSession() may be called to finish loading sessions, so handle |
746 // appropriately. | 750 // appropriately. |
747 if (web_session_id == session_id_for_emulated_loadsession_) { | 751 if (web_session_id == session_id_for_emulated_loadsession_) { |
748 session_id_for_emulated_loadsession_ = std::string(); | 752 session_id_for_emulated_loadsession_ = std::string(); |
749 // |promise_id| is the LoadSession() promise, so resolve appropriately. | 753 // |promise_id| is the LoadSession() promise, so resolve appropriately. |
750 host_->OnResolveNewSessionPromise( | 754 host_->OnResolveNewSessionPromise( |
751 promise_id, kLoadableWebSessionId, strlen(kLoadableWebSessionId)); | 755 promise_id, kLoadableWebSessionId, strlen(kLoadableWebSessionId)); |
| 756 // Generate the UsableKeys event now that the session is "loaded". |
| 757 host_->OnSessionUsableKeysChange( |
| 758 kLoadableWebSessionId, strlen(kLoadableWebSessionId), true); |
752 return; | 759 return; |
753 } | 760 } |
754 | 761 |
755 host_->OnResolvePromise(promise_id); | 762 host_->OnResolvePromise(promise_id); |
756 } | 763 } |
757 | 764 |
758 void ClearKeyCdm::OnUsableKeyIdsObtained(uint32 promise_id, | 765 void ClearKeyCdm::OnUsableKeyIdsObtained(uint32 promise_id, |
759 const KeyIdsVector& key_ids) { | 766 const KeyIdsVector& key_ids) { |
760 scoped_ptr<cdm::BinaryData[]> result(new cdm::BinaryData[key_ids.size()]); | 767 scoped_ptr<cdm::BinaryData[]> result(new cdm::BinaryData[key_ids.size()]); |
761 for (uint32 i = 0; i < key_ids.size(); ++i) { | 768 for (uint32 i = 0; i < key_ids.size(); ++i) { |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
852 host_->OnSessionMessage(last_session_id_.data(), | 859 host_->OnSessionMessage(last_session_id_.data(), |
853 last_session_id_.length(), | 860 last_session_id_.length(), |
854 message.data(), | 861 message.data(), |
855 message.length(), | 862 message.length(), |
856 NULL, | 863 NULL, |
857 0); | 864 0); |
858 file_io_test_runner_.reset(); | 865 file_io_test_runner_.reset(); |
859 } | 866 } |
860 | 867 |
861 } // namespace media | 868 } // namespace media |
OLD | NEW |