| 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 "chrome/browser/component_updater/flash_component_installer.h" | 5 #include "chrome/browser/component_updater/flash_component_installer.h" |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 74 const char kNullVersion[] = "0.0.0.0"; | 74 const char kNullVersion[] = "0.0.0.0"; |
| 75 | 75 |
| 76 // The base directory on Windows looks like: | 76 // The base directory on Windows looks like: |
| 77 // <profile>\AppData\Local\Google\Chrome\User Data\PepperFlash\. | 77 // <profile>\AppData\Local\Google\Chrome\User Data\PepperFlash\. |
| 78 FilePath GetPepperFlashBaseDirectory() { | 78 FilePath GetPepperFlashBaseDirectory() { |
| 79 FilePath result; | 79 FilePath result; |
| 80 PathService::Get(chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &result); | 80 PathService::Get(chrome::DIR_COMPONENT_UPDATED_PEPPER_FLASH_PLUGIN, &result); |
| 81 return result; | 81 return result; |
| 82 } | 82 } |
| 83 | 83 |
| 84 #if defined(GOOGLE_CHROME_BUILD) |
| 84 // Pepper Flash plugins have the version encoded in the path itself | 85 // Pepper Flash plugins have the version encoded in the path itself |
| 85 // so we need to enumerate the directories to find the full path. | 86 // so we need to enumerate the directories to find the full path. |
| 86 // On success, |latest_dir| returns something like: | 87 // On success, |latest_dir| returns something like: |
| 87 // <profile>\AppData\Local\Google\Chrome\User Data\PepperFlash\10.3.44.555\. | 88 // <profile>\AppData\Local\Google\Chrome\User Data\PepperFlash\10.3.44.555\. |
| 88 // |latest_version| returns the corresponding version number. |older_dirs| | 89 // |latest_version| returns the corresponding version number. |older_dirs| |
| 89 // returns directories of all older versions. | 90 // returns directories of all older versions. |
| 90 bool GetPepperFlashDirectory(FilePath* latest_dir, | 91 bool GetPepperFlashDirectory(FilePath* latest_dir, |
| 91 Version* latest_version, | 92 Version* latest_version, |
| 92 std::vector<FilePath>* older_dirs) { | 93 std::vector<FilePath>* older_dirs) { |
| 93 FilePath base_dir = GetPepperFlashBaseDirectory(); | 94 FilePath base_dir = GetPepperFlashBaseDirectory(); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 108 older_dirs->push_back(path); | 109 older_dirs->push_back(path); |
| 109 } | 110 } |
| 110 } else { | 111 } else { |
| 111 *latest_dir = path; | 112 *latest_dir = path; |
| 112 *latest_version = version; | 113 *latest_version = version; |
| 113 found = true; | 114 found = true; |
| 114 } | 115 } |
| 115 } | 116 } |
| 116 return found; | 117 return found; |
| 117 } | 118 } |
| 119 #endif |
| 118 | 120 |
| 119 // Returns true if the Pepper |interface_name| is implemented by this browser. | 121 // Returns true if the Pepper |interface_name| is implemented by this browser. |
| 120 // It does not check if the interface is proxied. | 122 // It does not check if the interface is proxied. |
| 121 bool SupportsPepperInterface(const char* interface_name) { | 123 bool SupportsPepperInterface(const char* interface_name) { |
| 122 if (webkit::ppapi::PluginModule::SupportsInterface(interface_name)) | 124 if (webkit::ppapi::PluginModule::SupportsInterface(interface_name)) |
| 123 return true; | 125 return true; |
| 124 // The PDF interface is invisible to SupportsInterface() on the browser | 126 // The PDF interface is invisible to SupportsInterface() on the browser |
| 125 // process because it is provided using PpapiInterfaceFactoryManager. We need | 127 // process because it is provided using PpapiInterfaceFactoryManager. We need |
| 126 // to check for that as well. | 128 // to check for that as well. |
| 127 // TODO(cpu): make this more sane. | 129 // TODO(cpu): make this more sane. |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 manifest->GetStringASCII("x-ppapi-arch", &arch); | 295 manifest->GetStringASCII("x-ppapi-arch", &arch); |
| 294 if (arch != kPepperFlashArch) | 296 if (arch != kPepperFlashArch) |
| 295 return false; | 297 return false; |
| 296 | 298 |
| 297 *version_out = version; | 299 *version_out = version; |
| 298 return true; | 300 return true; |
| 299 } | 301 } |
| 300 | 302 |
| 301 namespace { | 303 namespace { |
| 302 | 304 |
| 305 #if defined(GOOGLE_CHROME_BUILD) |
| 303 void FinishPepperFlashUpdateRegistration(ComponentUpdateService* cus, | 306 void FinishPepperFlashUpdateRegistration(ComponentUpdateService* cus, |
| 304 const Version& version) { | 307 const Version& version) { |
| 305 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 308 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 306 CrxComponent pepflash; | 309 CrxComponent pepflash; |
| 307 pepflash.name = "pepper_flash"; | 310 pepflash.name = "pepper_flash"; |
| 308 pepflash.installer = new PepperFlashComponentInstaller(version); | 311 pepflash.installer = new PepperFlashComponentInstaller(version); |
| 309 pepflash.version = version; | 312 pepflash.version = version; |
| 310 pepflash.pk_hash.assign(sha2_hash, &sha2_hash[sizeof(sha2_hash)]); | 313 pepflash.pk_hash.assign(sha2_hash, &sha2_hash[sizeof(sha2_hash)]); |
| 311 if (cus->RegisterComponent(pepflash) != ComponentUpdateService::kOk) { | 314 if (cus->RegisterComponent(pepflash) != ComponentUpdateService::kOk) { |
| 312 NOTREACHED() << "Pepper Flash component registration failed."; | 315 NOTREACHED() << "Pepper Flash component registration failed."; |
| (...skipping 26 matching lines...) Expand all Loading... |
| 339 BrowserThread::PostTask( | 342 BrowserThread::PostTask( |
| 340 BrowserThread::UI, FROM_HERE, | 343 BrowserThread::UI, FROM_HERE, |
| 341 base::Bind(&FinishPepperFlashUpdateRegistration, cus, version)); | 344 base::Bind(&FinishPepperFlashUpdateRegistration, cus, version)); |
| 342 | 345 |
| 343 // Remove older versions of Pepper Flash. | 346 // Remove older versions of Pepper Flash. |
| 344 for (std::vector<FilePath>::iterator iter = older_dirs.begin(); | 347 for (std::vector<FilePath>::iterator iter = older_dirs.begin(); |
| 345 iter != older_dirs.end(); ++iter) { | 348 iter != older_dirs.end(); ++iter) { |
| 346 file_util::Delete(*iter, true); | 349 file_util::Delete(*iter, true); |
| 347 } | 350 } |
| 348 } | 351 } |
| 352 #endif // defined(GOOGLE_CHROME_BUILD) |
| 349 | 353 |
| 350 } // namespace | 354 } // namespace |
| 351 | 355 |
| 352 void RegisterPepperFlashComponent(ComponentUpdateService* cus) { | 356 void RegisterPepperFlashComponent(ComponentUpdateService* cus) { |
| 353 #if defined(GOOGLE_CHROME_BUILD) | 357 #if defined(GOOGLE_CHROME_BUILD) |
| 354 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 358 BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, |
| 355 base::Bind(&StartPepperFlashUpdateRegistration, cus)); | 359 base::Bind(&StartPepperFlashUpdateRegistration, cus)); |
| 356 #endif | 360 #endif |
| 357 } | 361 } |
| OLD | NEW |