Index: chrome/common/component_flash_hint_file.h |
diff --git a/chrome/common/component_flash_hint_file.h b/chrome/common/component_flash_hint_file.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..c8c9e7768f59c23ce2e75dd5b976c723bcb6775f |
--- /dev/null |
+++ b/chrome/common/component_flash_hint_file.h |
@@ -0,0 +1,61 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef CHROME_COMMON_COMPONENT_FLASH_HINT_FILE_H_ |
+#define CHROME_COMMON_COMPONENT_FLASH_HINT_FILE_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "base/files/file_util.h" |
+#include "crypto/secure_hash.h" |
+ |
+namespace chrome { |
+ |
+// This class wraps the component updated flash hint file, which lives inside |
+// the PepperFlash folder of the user-data-dir, so that the Linux zygote |
+// process can preload the right version of flash. |
+class ComponentFlashHintFile { |
+ public: |
+ ComponentFlashHintFile(); |
+ // Records a new flash update into the hint file. |
+ // unpacked_plugin is the current location of the plugin. |
+ // moved_plugin is the location where the plugin will be loaded from. |
+ bool RecordFlashUpdate(base::FilePath& unpacked_plugin, |
+ base::FilePath& moved_plugin, |
+ const std::string& version); |
+ // Attempts to revert the flash hint file to its previous state, before this |
+ // update. |
+ bool Revert(); |
+ // Reports whether or not a hints file exists. |
+ static bool DoesHintFileExist(); |
+ // Return the path of the component updated flash plugin, only if the file has |
+ // the correct hash sum. |
+ static bool VerifyAndReturnFlashLocation(base::FilePath* path, |
+ std::string* version); |
+ |
+ private: |
+ // This will serialize the file to disk as JSON. The format is: |
+ // { |
+ // "Version": 0x10, |
+ // "HashAlgorithm": SecureHash::SHA256, |
+ // "Hash": <Base64 Encoded Hash>, |
+ // "PluginPath": /path/to/component/updated/flash.so, |
+ // "PluginVersion": "1.0.0.1" |
+ // } |
+ bool WriteToDisk(int version, |
+ crypto::SecureHash::Algorithm algorithm, |
+ const std::string& hash, |
+ base::FilePath& plugin_path, |
+ const std::string& flash_version); |
+ // Indicates whether or not a hint file existed prior to this file being |
+ // written. |
+ bool was_previous_hint_file_; |
+ // Contains the contents of the previous hint file. |
+ std::string previous_hint_file_; |
+}; |
+ |
+} // namespace chrome |
+ |
+#endif // CHROME_COMMON_COMPONENT_FLASH_HINT_FILE_H_ |