| OLD | NEW |
| 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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 "chrome/browser/component_updater/widevine_cdm_component_installer.h" | 5 #include "chrome/browser/component_updater/widevine_cdm_component_installer.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 203 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 214 | 214 |
| 215 bool WidevineCdmComponentInstaller::Install( | 215 bool WidevineCdmComponentInstaller::Install( |
| 216 const base::DictionaryValue& manifest, | 216 const base::DictionaryValue& manifest, |
| 217 const base::FilePath& unpack_path) { | 217 const base::FilePath& unpack_path) { |
| 218 base::Version version; | 218 base::Version version; |
| 219 if (!CheckWidevineCdmManifest(manifest, &version)) | 219 if (!CheckWidevineCdmManifest(manifest, &version)) |
| 220 return false; | 220 return false; |
| 221 if (current_version_.CompareTo(version) > 0) | 221 if (current_version_.CompareTo(version) > 0) |
| 222 return false; | 222 return false; |
| 223 | 223 |
| 224 if (!file_util::PathExists(unpack_path.AppendASCII(kWidevineCdmFileName))) | 224 if (!base::PathExists(unpack_path.AppendASCII(kWidevineCdmFileName))) |
| 225 return false; | 225 return false; |
| 226 | 226 |
| 227 base::FilePath adapter_source_path; | 227 base::FilePath adapter_source_path; |
| 228 PathService::Get(chrome::FILE_WIDEVINE_CDM_ADAPTER, &adapter_source_path); | 228 PathService::Get(chrome::FILE_WIDEVINE_CDM_ADAPTER, &adapter_source_path); |
| 229 if (!file_util::PathExists(adapter_source_path)) | 229 if (!base::PathExists(adapter_source_path)) |
| 230 return false; | 230 return false; |
| 231 | 231 |
| 232 // Passed the basic tests. Time to install it. | 232 // Passed the basic tests. Time to install it. |
| 233 base::FilePath install_path = | 233 base::FilePath install_path = |
| 234 GetWidevineCdmBaseDirectory().AppendASCII(version.GetString()); | 234 GetWidevineCdmBaseDirectory().AppendASCII(version.GetString()); |
| 235 if (file_util::PathExists(install_path)) | 235 if (base::PathExists(install_path)) |
| 236 return false; | 236 return false; |
| 237 if (!base::Move(unpack_path, install_path)) | 237 if (!base::Move(unpack_path, install_path)) |
| 238 return false; | 238 return false; |
| 239 | 239 |
| 240 base::FilePath adapter_install_path = | 240 base::FilePath adapter_install_path = |
| 241 install_path.AppendASCII(kWidevineCdmAdapterFileName); | 241 install_path.AppendASCII(kWidevineCdmAdapterFileName); |
| 242 if (!base::CopyFile(adapter_source_path, adapter_install_path)) | 242 if (!base::CopyFile(adapter_source_path, adapter_install_path)) |
| 243 return false; | 243 return false; |
| 244 | 244 |
| 245 // Installation is done. Now register the Widevine CDM with chrome. | 245 // Installation is done. Now register the Widevine CDM with chrome. |
| (...skipping 28 matching lines...) Expand all Loading... |
| 274 widevine_cdm.pk_hash.assign(kSha2Hash, &kSha2Hash[sizeof(kSha2Hash)]); | 274 widevine_cdm.pk_hash.assign(kSha2Hash, &kSha2Hash[sizeof(kSha2Hash)]); |
| 275 if (cus->RegisterComponent(widevine_cdm) != ComponentUpdateService::kOk) { | 275 if (cus->RegisterComponent(widevine_cdm) != ComponentUpdateService::kOk) { |
| 276 NOTREACHED() << "Widevine CDM component registration failed."; | 276 NOTREACHED() << "Widevine CDM component registration failed."; |
| 277 return; | 277 return; |
| 278 } | 278 } |
| 279 } | 279 } |
| 280 | 280 |
| 281 void StartWidevineCdmUpdateRegistration(ComponentUpdateService* cus) { | 281 void StartWidevineCdmUpdateRegistration(ComponentUpdateService* cus) { |
| 282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); | 282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
| 283 base::FilePath base_dir = GetWidevineCdmBaseDirectory(); | 283 base::FilePath base_dir = GetWidevineCdmBaseDirectory(); |
| 284 if (!file_util::PathExists(base_dir) && | 284 if (!base::PathExists(base_dir) && |
| 285 !file_util::CreateDirectory(base_dir)) { | 285 !file_util::CreateDirectory(base_dir)) { |
| 286 NOTREACHED() << "Could not create Widevine CDM directory."; | 286 NOTREACHED() << "Could not create Widevine CDM directory."; |
| 287 return; | 287 return; |
| 288 } | 288 } |
| 289 | 289 |
| 290 base::FilePath latest_dir; | 290 base::FilePath latest_dir; |
| 291 base::Version version(kNullVersion); | 291 base::Version version(kNullVersion); |
| 292 std::vector<base::FilePath> older_dirs; | 292 std::vector<base::FilePath> older_dirs; |
| 293 | 293 |
| 294 if (GetWidevineCdmDirectory(&latest_dir, &version, &older_dirs)) { | 294 if (GetWidevineCdmDirectory(&latest_dir, &version, &older_dirs)) { |
| 295 base::FilePath adapter_path = | 295 base::FilePath adapter_path = |
| 296 latest_dir.AppendASCII(kWidevineCdmAdapterFileName); | 296 latest_dir.AppendASCII(kWidevineCdmAdapterFileName); |
| 297 base::FilePath cdm_path = latest_dir.AppendASCII(kWidevineCdmFileName); | 297 base::FilePath cdm_path = latest_dir.AppendASCII(kWidevineCdmFileName); |
| 298 | 298 |
| 299 if (file_util::PathExists(adapter_path) && | 299 if (base::PathExists(adapter_path) && |
| 300 file_util::PathExists(cdm_path)) { | 300 base::PathExists(cdm_path)) { |
| 301 BrowserThread::PostTask( | 301 BrowserThread::PostTask( |
| 302 BrowserThread::UI, FROM_HERE, | 302 BrowserThread::UI, FROM_HERE, |
| 303 base::Bind(&RegisterWidevineCdmWithChrome, adapter_path, version)); | 303 base::Bind(&RegisterWidevineCdmWithChrome, adapter_path, version)); |
| 304 } else { | 304 } else { |
| 305 base::Delete(latest_dir, true); | 305 base::Delete(latest_dir, true); |
| 306 version = base::Version(kNullVersion); | 306 version = base::Version(kNullVersion); |
| 307 } | 307 } |
| 308 } | 308 } |
| 309 | 309 |
| 310 BrowserThread::PostTask( | 310 BrowserThread::PostTask( |
| (...skipping 10 matching lines...) Expand all Loading... |
| 321 #endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT) | 321 #endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT) |
| 322 | 322 |
| 323 } // namespace | 323 } // namespace |
| 324 | 324 |
| 325 void RegisterWidevineCdmComponent(ComponentUpdateService* cus) { | 325 void RegisterWidevineCdmComponent(ComponentUpdateService* cus) { |
| 326 #if defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT) | 326 #if defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT) |
| 327 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 327 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 328 base::Bind(&StartWidevineCdmUpdateRegistration, cus)); | 328 base::Bind(&StartWidevineCdmUpdateRegistration, cus)); |
| 329 #endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT) | 329 #endif // defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_IS_COMPONENT) |
| 330 } | 330 } |
| OLD | NEW |