OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "webkit/media/crypto/ppapi/clear_key_cdm.h" | 5 #include "webkit/media/crypto/ppapi/clear_key_cdm.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <sstream> | 8 #include <sstream> |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
(...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 | 178 |
179 void ClearKeyCdm::Client::KeyMessage(const std::string& key_system, | 179 void ClearKeyCdm::Client::KeyMessage(const std::string& key_system, |
180 const std::string& session_id, | 180 const std::string& session_id, |
181 scoped_array<uint8> message, | 181 scoped_array<uint8> message, |
182 int message_length, | 182 int message_length, |
183 const std::string& default_url) { | 183 const std::string& default_url) { |
184 status_ = kKeyMessage; | 184 status_ = kKeyMessage; |
185 session_id_ = session_id; | 185 session_id_ = session_id; |
186 key_message_ = message.Pass(); | 186 key_message_ = message.Pass(); |
187 key_message_length_ = message_length; | 187 key_message_length_ = message_length; |
| 188 default_url_ = default_url; |
188 } | 189 } |
189 | 190 |
190 void ClearKeyCdm::Client::NeedKey(const std::string& key_system, | 191 void ClearKeyCdm::Client::NeedKey(const std::string& key_system, |
191 const std::string& session_id, | 192 const std::string& session_id, |
192 const std::string& type, | 193 const std::string& type, |
193 scoped_array<uint8> init_data, | 194 scoped_array<uint8> init_data, |
194 int init_data_length) { | 195 int init_data_length) { |
195 // In the current implementation of AesDecryptor, NeedKey is not used. | 196 // In the current implementation of AesDecryptor, NeedKey is not used. |
196 // If no key is available to decrypt an input buffer, it returns kNoKey to | 197 // If no key is available to decrypt an input buffer, it returns kNoKey to |
197 // the caller instead of firing NeedKey. | 198 // the caller instead of firing NeedKey. |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 | 287 |
287 void ClearKeyCdm::TimerExpired(cdm::KeyMessage* msg, bool* populated) { | 288 void ClearKeyCdm::TimerExpired(cdm::KeyMessage* msg, bool* populated) { |
288 std::ostringstream msg_stream; | 289 std::ostringstream msg_stream; |
289 msg_stream << kHeartBeatHeader << " from ClearKey CDM at time " | 290 msg_stream << kHeartBeatHeader << " from ClearKey CDM at time " |
290 << cdm_host_->GetCurrentWallTimeInSeconds() << "."; | 291 << cdm_host_->GetCurrentWallTimeInSeconds() << "."; |
291 std::string msg_string = msg_stream.str(); | 292 std::string msg_string = msg_stream.str(); |
292 | 293 |
293 msg->set_message(allocator_->Allocate(msg_string.length())); | 294 msg->set_message(allocator_->Allocate(msg_string.length())); |
294 memcpy(msg->message()->data(), msg_string.data(), msg_string.length()); | 295 memcpy(msg->message()->data(), msg_string.data(), msg_string.length()); |
295 msg->set_session_id(latest_session_id_.data(), latest_session_id_.length()); | 296 msg->set_session_id(latest_session_id_.data(), latest_session_id_.length()); |
296 msg->set_default_url(NULL, 0); | 297 const char url[] = "http://externalclearkey.chromium.org"; |
| 298 msg->set_default_url(url, arraysize(url)); |
297 | 299 |
298 *populated = true; | 300 *populated = true; |
299 | 301 |
300 cdm_host_->SetTimer(timer_delay_ms_); | 302 cdm_host_->SetTimer(timer_delay_ms_); |
301 | 303 |
302 // Use a smaller timer delay at start-up to facilitate testing. Increase the | 304 // Use a smaller timer delay at start-up to facilitate testing. Increase the |
303 // timer delay up to a limit to avoid message spam. | 305 // timer delay up to a limit to avoid message spam. |
304 if (timer_delay_ms_ < kMaxTimerDelayMs) | 306 if (timer_delay_ms_ < kMaxTimerDelayMs) |
305 timer_delay_ms_ = std::min(2 * timer_delay_ms_, kMaxTimerDelayMs); | 307 timer_delay_ms_ = std::min(2 * timer_delay_ms_, kMaxTimerDelayMs); |
306 } | 308 } |
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
542 int samples_generated = GenerateFakeAudioFramesFromDuration( | 544 int samples_generated = GenerateFakeAudioFramesFromDuration( |
543 timestamp_in_microseconds - CurrentTimeStampInMicroseconds(), | 545 timestamp_in_microseconds - CurrentTimeStampInMicroseconds(), |
544 audio_frames); | 546 audio_frames); |
545 total_samples_generated_ += samples_generated; | 547 total_samples_generated_ += samples_generated; |
546 | 548 |
547 return samples_generated == 0 ? cdm::kNeedMoreData : cdm::kSuccess; | 549 return samples_generated == 0 ? cdm::kNeedMoreData : cdm::kSuccess; |
548 } | 550 } |
549 #endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER | 551 #endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER |
550 | 552 |
551 } // namespace webkit_media | 553 } // namespace webkit_media |
OLD | NEW |