Index: chrome/browser/extensions/extension_assets_manager_chromeos.h |
diff --git a/chrome/browser/extensions/extension_assets_manager_chromeos.h b/chrome/browser/extensions/extension_assets_manager_chromeos.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7afacdb976b3e1e2213da1552a045d7b9fd02e31 |
--- /dev/null |
+++ b/chrome/browser/extensions/extension_assets_manager_chromeos.h |
@@ -0,0 +1,105 @@ |
+// Copyright (c) 2014 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_BROWSER_EXTENSIONS_EXTENSION_ASSETS_MANAGER_CHROMEOS_H_ |
+#define CHROME_BROWSER_EXTENSIONS_EXTENSION_ASSETS_MANAGER_CHROMEOS_H_ |
+ |
+#include "chrome/browser/extensions/extension_assets_manager.h" |
+ |
+template <typename T> struct DefaultSingletonTraits; |
+class PrefRegistrySimple; |
+ |
+namespace base { |
+class SequencedTaskRunner; |
+} |
+ |
+namespace extensions { |
+ |
+// Chrome OS specific implementation of assets manager that shares default apps |
+// between all users on the machine. |
+class ExtensionAssetsManagerChromeOS : public ExtensionAssetsManager { |
+ public: |
+ static ExtensionAssetsManagerChromeOS* GetInstance(); |
+ |
+ // Path to shared extensions install dir. |
+ static const char kSharedExtensionsDir[]; |
+ |
+ // Register shared assets related preferences. |
+ static void RegisterPrefs(PrefRegistrySimple* registry); |
+ |
+ // Override from ExtensionAssetsManager. |
+ virtual void InstallExtension(const Extension* extension, |
+ const base::FilePath& unpacked_extension_root, |
+ const base::FilePath& local_install_dir, |
+ Profile* profile, |
+ InstallExtensionCallback callback) OVERRIDE; |
+ virtual void UninstallExtension( |
+ const std::string& id, |
+ Profile* profile, |
+ const base::FilePath& local_install_dir, |
+ const base::FilePath& extension_root) OVERRIDE; |
+ |
+ static void SetSharedInstallDirForTesting(const base::FilePath& install_dir); |
+ |
+ private: |
+ friend struct DefaultSingletonTraits<ExtensionAssetsManagerChromeOS>; |
+ |
+ ExtensionAssetsManagerChromeOS(); |
+ virtual ~ExtensionAssetsManagerChromeOS(); |
+ |
+ // Should be called on UI thread to get associated file task runner for |
+ // the profile. |
+ static base::SequencedTaskRunner* GetFileTaskRunner(Profile* profile); |
+ |
+ // Return shared install dir. |
+ static base::FilePath GetSharedInstallDir(); |
+ |
+ // Return |true| if |extension| can be installed in a shared place for all |
+ // users on the device. |
+ static bool CanShareAssets(const Extension* extension); |
+ |
+ // Called on the UI thread to check if a given version of the |extension| |
+ // already exists at the shared location. |
+ static void CheckSharedExtension( |
+ const std::string& id, |
+ const std::string& version, |
+ const base::FilePath& unpacked_extension_root, |
+ const base::FilePath& local_install_dir, |
+ Profile* profile, |
+ InstallExtensionCallback callback); |
+ |
+ // Called on task runner thread to install extension to shared location. |
+ static void InstallSharedExtension( |
+ const std::string& id, |
+ const std::string& version, |
+ const base::FilePath& unpacked_extension_root); |
+ |
+ // Called on UI thread to process shared install result. |
+ static void InstallSharedExtensionDone( |
+ const std::string& id, |
+ const std::string& version, |
+ const base::FilePath& shared_version_dir); |
+ |
+ // Called on task runner thread to install the extension to local dir call |
+ // callback with the result. |
+ static void InstallLocalExtension( |
+ const std::string& id, |
+ const std::string& version, |
+ const base::FilePath& unpacked_extension_root, |
+ const base::FilePath& local_install_dir, |
+ InstallExtensionCallback callback); |
+ |
+ // Called on UI thread to mark that shared version is not used. |
+ static void MarkSharedExtensionUnused(const std::string& id, |
+ Profile* profile); |
+ |
+ // Called on task runner thread to remove shared version. |
+ static void DeleteSharedVersion(const base::FilePath& shared_version_dir); |
+ |
+ DISALLOW_COPY_AND_ASSIGN(ExtensionAssetsManagerChromeOS); |
+}; |
+ |
+} // namespace extensions |
+ |
+#endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_ASSETS_MANAGER_CHROMEOS_H_ |