OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "content/renderer/media/crypto/proxy_media_keys.h" | 5 #include "content/renderer/media/crypto/proxy_media_keys.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 scoped_ptr<media::SimpleCdmPromise> promise) { | 53 scoped_ptr<media::SimpleCdmPromise> promise) { |
54 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 54 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); |
55 manager_->SetServerCertificate(cdm_id_, promise_id, certificate); | 55 manager_->SetServerCertificate(cdm_id_, promise_id, certificate); |
56 } | 56 } |
57 | 57 |
58 void ProxyMediaKeys::CreateSessionAndGenerateRequest( | 58 void ProxyMediaKeys::CreateSessionAndGenerateRequest( |
59 SessionType session_type, | 59 SessionType session_type, |
60 media::EmeInitDataType init_data_type, | 60 media::EmeInitDataType init_data_type, |
61 const std::vector<uint8_t>& init_data, | 61 const std::vector<uint8_t>& init_data, |
62 scoped_ptr<media::NewSessionCdmPromise> promise) { | 62 scoped_ptr<media::NewSessionCdmPromise> promise) { |
63 if (session_type != media::MediaKeys::TEMPORARY_SESSION) { | |
64 promise->reject(NOT_SUPPORTED_ERROR, 0, | |
65 "Only the temporary session type is supported."); | |
66 return; | |
67 } | |
68 | |
69 // TODO(xhwang): Move these checks up to blink and DCHECK here. | 63 // TODO(xhwang): Move these checks up to blink and DCHECK here. |
70 // See http://crbug.com/342510 | 64 // See http://crbug.com/342510 |
71 CdmHostMsg_CreateSession_InitDataType create_session_init_data_type = | 65 CdmHostMsg_CreateSession_InitDataType create_session_init_data_type = |
72 INIT_DATA_TYPE_WEBM; | 66 INIT_DATA_TYPE_WEBM; |
73 switch (init_data_type) { | 67 switch (init_data_type) { |
74 case media::EmeInitDataType::CENC: | 68 case media::EmeInitDataType::CENC: |
75 create_session_init_data_type = INIT_DATA_TYPE_CENC; | 69 create_session_init_data_type = INIT_DATA_TYPE_CENC; |
76 break; | 70 break; |
77 case media::EmeInitDataType::WEBM: | 71 case media::EmeInitDataType::WEBM: |
78 create_session_init_data_type = INIT_DATA_TYPE_WEBM; | 72 create_session_init_data_type = INIT_DATA_TYPE_WEBM; |
79 break; | 73 break; |
80 case media::EmeInitDataType::KEYIDS: | 74 case media::EmeInitDataType::KEYIDS: |
81 case media::EmeInitDataType::UNKNOWN: | 75 case media::EmeInitDataType::UNKNOWN: |
82 DLOG(ERROR) << "Unsupported EME CreateSession init data type"; | 76 DLOG(ERROR) << "Unsupported EME CreateSession init data type"; |
83 promise->reject(NOT_SUPPORTED_ERROR, 0, | 77 promise->reject(NOT_SUPPORTED_ERROR, 0, |
84 "Unsupported EME CreateSession init data type"); | 78 "Unsupported EME CreateSession init data type"); |
85 return; | 79 return; |
86 } | 80 } |
87 | 81 |
88 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 82 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); |
89 manager_->CreateSessionAndGenerateRequest( | 83 manager_->CreateSessionAndGenerateRequest( |
90 cdm_id_, promise_id, create_session_init_data_type, init_data); | 84 cdm_id_, promise_id, session_type, create_session_init_data_type, |
| 85 init_data); |
91 } | 86 } |
92 | 87 |
93 void ProxyMediaKeys::LoadSession( | 88 void ProxyMediaKeys::LoadSession( |
94 SessionType session_type, | 89 SessionType session_type, |
95 const std::string& session_id, | 90 const std::string& session_id, |
96 scoped_ptr<media::NewSessionCdmPromise> promise) { | 91 scoped_ptr<media::NewSessionCdmPromise> promise) { |
97 NOTREACHED() << "ProxyMediaKeys doesn't support persistent sessions."; | 92 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); |
98 promise->reject(NOT_SUPPORTED_ERROR, 0, "LoadSession() is not supported."); | 93 manager_->LoadSession(cdm_id_, promise_id, session_type, session_id); |
99 } | 94 } |
100 | 95 |
101 void ProxyMediaKeys::UpdateSession( | 96 void ProxyMediaKeys::UpdateSession( |
102 const std::string& session_id, | 97 const std::string& session_id, |
103 const std::vector<uint8_t>& response, | 98 const std::vector<uint8_t>& response, |
104 scoped_ptr<media::SimpleCdmPromise> promise) { | 99 scoped_ptr<media::SimpleCdmPromise> promise) { |
105 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 100 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); |
106 manager_->UpdateSession(cdm_id_, promise_id, session_id, response); | 101 manager_->UpdateSession(cdm_id_, promise_id, session_id, response); |
107 } | 102 } |
108 | 103 |
109 void ProxyMediaKeys::CloseSession(const std::string& session_id, | 104 void ProxyMediaKeys::CloseSession(const std::string& session_id, |
110 scoped_ptr<media::SimpleCdmPromise> promise) { | 105 scoped_ptr<media::SimpleCdmPromise> promise) { |
111 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 106 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); |
112 manager_->CloseSession(cdm_id_, promise_id, session_id); | 107 manager_->CloseSession(cdm_id_, promise_id, session_id); |
113 } | 108 } |
114 | 109 |
115 void ProxyMediaKeys::RemoveSession( | 110 void ProxyMediaKeys::RemoveSession( |
116 const std::string& session_id, | 111 const std::string& session_id, |
117 scoped_ptr<media::SimpleCdmPromise> promise) { | 112 scoped_ptr<media::SimpleCdmPromise> promise) { |
118 NOTREACHED() << "ProxyMediaKeys doesn't support persistent sessions."; | 113 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); |
119 promise->reject(NOT_SUPPORTED_ERROR, 0, "RemoveSession() not supported."); | 114 manager_->RemoveSession(cdm_id_, promise_id, session_id); |
120 } | 115 } |
121 | 116 |
122 media::CdmContext* ProxyMediaKeys::GetCdmContext() { | 117 media::CdmContext* ProxyMediaKeys::GetCdmContext() { |
123 return this; | 118 return this; |
124 } | 119 } |
125 | 120 |
126 media::Decryptor* ProxyMediaKeys::GetDecryptor() { | 121 media::Decryptor* ProxyMediaKeys::GetDecryptor() { |
127 return nullptr; | 122 return nullptr; |
128 } | 123 } |
129 | 124 |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 const std::string& key_system, | 198 const std::string& key_system, |
204 const GURL& security_origin, | 199 const GURL& security_origin, |
205 bool use_hw_secure_codecs, | 200 bool use_hw_secure_codecs, |
206 scoped_ptr<media::SimpleCdmPromise> promise) { | 201 scoped_ptr<media::SimpleCdmPromise> promise) { |
207 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); | 202 uint32_t promise_id = cdm_promise_adapter_.SavePromise(promise.Pass()); |
208 manager_->InitializeCdm(cdm_id_, promise_id, this, key_system, | 203 manager_->InitializeCdm(cdm_id_, promise_id, this, key_system, |
209 security_origin, use_hw_secure_codecs); | 204 security_origin, use_hw_secure_codecs); |
210 } | 205 } |
211 | 206 |
212 } // namespace content | 207 } // namespace content |
OLD | NEW |