Index: chrome/browser/component_updater/pepper_flash_component_installer.cc |
diff --git a/chrome/browser/component_updater/pepper_flash_component_installer.cc b/chrome/browser/component_updater/pepper_flash_component_installer.cc |
index 2ebbb31854080d51bc574bc9aebdb89ad23aa79e..dffeaed950a09d57d2dc6cc73ac83de6a93d8149 100644 |
--- a/chrome/browser/component_updater/pepper_flash_component_installer.cc |
+++ b/chrome/browser/component_updater/pepper_flash_component_installer.cc |
@@ -15,6 +15,7 @@ |
#include "base/files/file_util.h" |
#include "base/logging.h" |
#include "base/path_service.h" |
+#include "base/stl_util.h" |
#include "base/strings/string_util.h" |
#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
@@ -25,6 +26,7 @@ |
#include "chrome/common/chrome_constants.h" |
#include "chrome/common/chrome_paths.h" |
#include "chrome/common/chrome_switches.h" |
+#include "chrome/common/component_flash_hint_file_linux.h" |
#include "chrome/common/pepper_flash.h" |
#include "chrome/common/ppapi_utils.h" |
#include "components/component_updater/component_updater_service.h" |
@@ -43,7 +45,7 @@ namespace component_updater { |
namespace { |
-#if defined(GOOGLE_CHROME_BUILD) && !defined(OS_LINUX) |
+#if defined(GOOGLE_CHROME_BUILD) |
// CRX hash. The extension id is: mimojjlkmoijpicakmndhoigimigcmbb. |
const uint8_t kSha2Hash[] = {0xc8, 0xce, 0x99, 0xba, 0xce, 0x89, 0xf8, 0x20, |
0xac, 0xd3, 0x7e, 0x86, 0x8c, 0x86, 0x2c, 0x11, |
@@ -53,7 +55,7 @@ const uint8_t kSha2Hash[] = {0xc8, 0xce, 0x99, 0xba, 0xce, 0x89, 0xf8, 0x20, |
// If we don't have a Pepper Flash component, this is the version we claim. |
const char kNullVersion[] = "0.0.0.0"; |
-#endif // defined(GOOGLE_CHROME_BUILD) && !defined(OS_LINUX) |
+#endif // defined(GOOGLE_CHROME_BUILD) |
// The base directory on Windows looks like: |
// <profile>\AppData\Local\Google\Chrome\User Data\PepperFlash\. |
@@ -63,7 +65,7 @@ base::FilePath GetPepperFlashBaseDirectory() { |
return result; |
} |
-#if defined(GOOGLE_CHROME_BUILD) && !defined(OS_LINUX) |
+#if defined(GOOGLE_CHROME_BUILD) |
// Pepper Flash plugins have the version encoded in the path itself |
// so we need to enumerate the directories to find the full path. |
// On success, |latest_dir| returns something like: |
@@ -99,8 +101,9 @@ bool GetPepperFlashDirectory(base::FilePath* latest_dir, |
} |
return found; |
} |
-#endif // defined(GOOGLE_CHROME_BUILD) && !defined(OS_LINUX) |
+#endif // defined(GOOGLE_CHROME_BUILD) |
+#if !defined(OS_LINUX) || defined(GOOGLE_CHROME_BUILD) |
bool MakePepperFlashPluginInfo(const base::FilePath& flash_path, |
const Version& flash_version, |
bool out_of_process, |
@@ -177,6 +180,7 @@ void RegisterPepperFlashWithChrome(const base::FilePath& path, |
plugin_info.ToWebPluginInfo(), true); |
PluginService::GetInstance()->RefreshPlugins(); |
} |
+#endif // !defined(OS_LINUX) || defined(GOOGLE_CHROME_BUILD) |
} // namespace |
@@ -219,24 +223,42 @@ bool PepperFlashComponentInstaller::Install( |
return false; |
if (current_version_.CompareTo(version) > 0) |
return false; |
- if (!base::PathExists(unpack_path.Append(chrome::kPepperFlashPluginFilename))) |
+ const base::FilePath unpacked_plugin = |
+ unpack_path.Append(chrome::kPepperFlashPluginFilename); |
+ if (!base::PathExists(unpacked_plugin)) |
return false; |
// Passed the basic tests. Time to install it. |
base::FilePath path = |
GetPepperFlashBaseDirectory().AppendASCII(version.GetString()); |
Lei Zhang
2015/08/17 19:06:12
Since |path| is being deleted recursively, we shou
|
if (base::PathExists(path)) |
return false; |
+ current_version_ = version; |
+ |
if (!base::Move(unpack_path, path)) |
return false; |
+#if defined(OS_LINUX) |
+ const base::FilePath flash_path = |
+ path.Append(chrome::kPepperFlashPluginFilename); |
+ // Populate the component updated flash hint file so that the zygote can |
+ // locate and preload the latest version of flash. |
+ if (!chrome::component_flash_hint_file::RecordFlashUpdate( |
+ flash_path, flash_path, version.GetString())) { |
+ if (!base::DeleteFile(path, true)) |
Lei Zhang
2015/08/14 22:37:07
If you are just trying to delete a file, why pass
Lei Zhang
2015/08/17 19:06:12
Oh, this is deleting |path| but I read it as |flas
Greg K
2015/08/17 21:11:56
That's actually a directory and not just a file. T
|
+ LOG(ERROR) << "Hint file creation failed, but unable to delete " |
+ "installed flash plugin."; |
+ return false; |
+ } |
+#else |
// Installation is done. Now tell the rest of chrome. Both the path service |
- // and to the plugin service. |
- current_version_ = version; |
+ // and to the plugin service. On Linux, a restart is required to use the new |
+ // Flash version, so we do not do this. |
PathService::Override(chrome::DIR_PEPPER_FLASH_PLUGIN, path); |
path = path.Append(chrome::kPepperFlashPluginFilename); |
BrowserThread::PostTask( |
BrowserThread::UI, |
FROM_HERE, |
base::Bind(&RegisterPepperFlashWithChrome, path, version)); |
+#endif // !defined(OS_LINUX) |
return true; |
} |
@@ -254,7 +276,7 @@ bool PepperFlashComponentInstaller::Uninstall() { |
namespace { |
-#if defined(GOOGLE_CHROME_BUILD) && !defined(OS_LINUX) |
+#if defined(GOOGLE_CHROME_BUILD) |
void FinishPepperFlashUpdateRegistration(ComponentUpdateService* cus, |
const Version& version) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
@@ -311,12 +333,12 @@ void StartPepperFlashUpdateRegistration(ComponentUpdateService* cus) { |
base::DeleteFile(*iter, true); |
} |
} |
-#endif // defined(GOOGLE_CHROME_BUILD) && !defined(OS_LINUX) |
+#endif // defined(GOOGLE_CHROME_BUILD) |
} // namespace |
void RegisterPepperFlashComponent(ComponentUpdateService* cus) { |
-#if defined(GOOGLE_CHROME_BUILD) && !defined(OS_LINUX) |
+#if defined(GOOGLE_CHROME_BUILD) |
// Component updated flash supersedes bundled flash therefore if that one |
// is disabled then this one should never install. |
base::CommandLine* cmd_line = base::CommandLine::ForCurrentProcess(); |
@@ -325,7 +347,7 @@ void RegisterPepperFlashComponent(ComponentUpdateService* cus) { |
BrowserThread::PostTask(BrowserThread::FILE, |
FROM_HERE, |
base::Bind(&StartPepperFlashUpdateRegistration, cus)); |
-#endif |
+#endif // defined(GOOGLE_CHROME_BUILD) |
} |
} // namespace component_updater |