| 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> |
| 11 #include <vector> | 11 #include <vector> |
| 12 | 12 |
| 13 #include "base/bind.h" | 13 #include "base/bind.h" |
| 14 #include "base/logging.h" | 14 #include "base/logging.h" |
| 15 #include "base/stl_util.h" | 15 #include "base/stl_util.h" |
| 16 #include "base/time/time.h" | 16 #include "base/time/time.h" |
| 17 #include "base/trace_event/trace_event.h" | 17 #include "base/trace_event/trace_event.h" |
| 18 #include "media/base/cdm_callback_promise.h" | 18 #include "media/base/cdm_callback_promise.h" |
| 19 #include "media/base/cdm_key_information.h" | 19 #include "media/base/cdm_key_information.h" |
| 20 #include "media/base/decoder_buffer.h" | 20 #include "media/base/decoder_buffer.h" |
| 21 #include "media/base/decrypt_config.h" | 21 #include "media/base/decrypt_config.h" |
| 22 #include "media/base/key_systems.h" | 22 #include "media/base/key_systems.h" |
| 23 #include "media/cdm/json_web_key.h" | 23 #include "media/cdm/json_web_key.h" |
| 24 #include "media/cdm/ppapi/cdm_file_io_test.h" | 24 #include "media/cdm/ppapi/cdm_file_io_test.h" |
| 25 #include "media/cdm/ppapi/external_clear_key/cdm_video_decoder.h" | 25 #include "media/cdm/ppapi/external_clear_key/cdm_video_decoder.h" |
| 26 #include "url/gurl.h" |
| 26 | 27 |
| 27 #if defined(CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER) | 28 #if defined(CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER) |
| 28 #include "base/basictypes.h" | 29 #include "base/basictypes.h" |
| 29 const int64 kNoTimestamp = kint64min; | 30 const int64 kNoTimestamp = kint64min; |
| 30 #endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER | 31 #endif // CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER |
| 31 | 32 |
| 32 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER) | 33 #if defined(CLEAR_KEY_CDM_USE_FFMPEG_DECODER) |
| 33 #include "base/at_exit.h" | 34 #include "base/at_exit.h" |
| 34 #include "base/files/file_path.h" | 35 #include "base/files/file_path.h" |
| 35 #include "base/path_service.h" | 36 #include "base/path_service.h" |
| (...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 255 } | 256 } |
| 256 | 257 |
| 257 if (cdm_interface_version != media::ClearKeyCdmInterface::kVersion) | 258 if (cdm_interface_version != media::ClearKeyCdmInterface::kVersion) |
| 258 return NULL; | 259 return NULL; |
| 259 | 260 |
| 260 media::ClearKeyCdmHost* host = static_cast<media::ClearKeyCdmHost*>( | 261 media::ClearKeyCdmHost* host = static_cast<media::ClearKeyCdmHost*>( |
| 261 get_cdm_host_func(media::ClearKeyCdmHost::kVersion, user_data)); | 262 get_cdm_host_func(media::ClearKeyCdmHost::kVersion, user_data)); |
| 262 if (!host) | 263 if (!host) |
| 263 return NULL; | 264 return NULL; |
| 264 | 265 |
| 265 return new media::ClearKeyCdm(host, key_system_string); | 266 // TODO(jrummell): Obtain the proper origin for this instance. |
| 267 return new media::ClearKeyCdm(host, key_system_string, GURL::EmptyGURL()); |
| 266 } | 268 } |
| 267 | 269 |
| 268 const char* GetCdmVersion() { | 270 const char* GetCdmVersion() { |
| 269 return kClearKeyCdmVersion; | 271 return kClearKeyCdmVersion; |
| 270 } | 272 } |
| 271 | 273 |
| 272 namespace media { | 274 namespace media { |
| 273 | 275 |
| 274 ClearKeyCdm::ClearKeyCdm(ClearKeyCdmHost* host, const std::string& key_system) | 276 ClearKeyCdm::ClearKeyCdm(ClearKeyCdmHost* host, |
| 277 const std::string& key_system, |
| 278 const GURL& origin) |
| 275 : decryptor_( | 279 : decryptor_( |
| 280 origin, |
| 276 base::Bind(&ClearKeyCdm::OnSessionMessage, base::Unretained(this)), | 281 base::Bind(&ClearKeyCdm::OnSessionMessage, base::Unretained(this)), |
| 277 base::Bind(&ClearKeyCdm::OnSessionClosed, base::Unretained(this)), | 282 base::Bind(&ClearKeyCdm::OnSessionClosed, base::Unretained(this)), |
| 278 base::Bind(&ClearKeyCdm::OnSessionKeysChange, | 283 base::Bind(&ClearKeyCdm::OnSessionKeysChange, |
| 279 base::Unretained(this))), | 284 base::Unretained(this))), |
| 280 host_(host), | 285 host_(host), |
| 281 key_system_(key_system), | 286 key_system_(key_system), |
| 282 has_received_keys_change_event_for_emulated_loadsession_(false), | 287 has_received_keys_change_event_for_emulated_loadsession_(false), |
| 283 timer_delay_ms_(kInitialTimerDelayMs), | 288 timer_delay_ms_(kInitialTimerDelayMs), |
| 284 renewal_timer_set_(false) { | 289 renewal_timer_set_(false) { |
| 285 #if defined(CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER) | 290 #if defined(CLEAR_KEY_CDM_USE_FAKE_AUDIO_DECODER) |
| (...skipping 633 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 919 void ClearKeyCdm::OnFileIOTestComplete(bool success) { | 924 void ClearKeyCdm::OnFileIOTestComplete(bool success) { |
| 920 DVLOG(1) << __FUNCTION__ << ": " << success; | 925 DVLOG(1) << __FUNCTION__ << ": " << success; |
| 921 std::string message = GetFileIOTestResultMessage(success); | 926 std::string message = GetFileIOTestResultMessage(success); |
| 922 host_->OnSessionMessage(last_session_id_.data(), last_session_id_.length(), | 927 host_->OnSessionMessage(last_session_id_.data(), last_session_id_.length(), |
| 923 cdm::kLicenseRequest, message.data(), | 928 cdm::kLicenseRequest, message.data(), |
| 924 message.length(), NULL, 0); | 929 message.length(), NULL, 0); |
| 925 file_io_test_runner_.reset(); | 930 file_io_test_runner_.reset(); |
| 926 } | 931 } |
| 927 | 932 |
| 928 } // namespace media | 933 } // namespace media |
| OLD | NEW |