Index: chrome/browser/component_updater/pnacl/pnacl_component_installer.h |
diff --git a/chrome/browser/component_updater/pnacl/pnacl_component_installer.h b/chrome/browser/component_updater/pnacl/pnacl_component_installer.h |
index 765b860fee09d9f37d9ba7be74e61baeb36ac6c7..5d58402803892213ae2dd5b60f75a060c836e03e 100644 |
--- a/chrome/browser/component_updater/pnacl/pnacl_component_installer.h |
+++ b/chrome/browser/component_updater/pnacl/pnacl_component_installer.h |
@@ -5,17 +5,62 @@ |
#ifndef CHROME_BROWSER_COMPONENT_UPDATER_PNACL_PNACL_COMPONENT_INSTALLER_H_ |
#define CHROME_BROWSER_COMPONENT_UPDATER_PNACL_PNACL_COMPONENT_INSTALLER_H_ |
+#include "base/files/file_path.h" |
+#include "base/memory/scoped_ptr.h" |
+#include "chrome/browser/component_updater/component_updater_service.h" |
+#include "chrome/browser/component_updater/pnacl/pnacl_profile_observer.h" |
+ |
class CommandLine; |
-class ComponentUpdateService; |
class Version; |
namespace base { |
class DictionaryValue; |
} |
-// Component update registration for Portable Native Client. |
-void RegisterPnaclComponent(ComponentUpdateService* cus, |
- const CommandLine& command_line); |
+// Component installer responsible for Portable Native Client files. |
+// Files can be installed to a shared location, or be installed to |
+// a per-user location. |
+class PnaclComponentInstaller : public ComponentInstaller { |
+ public: |
+ PnaclComponentInstaller(); |
+ |
+ virtual ~PnaclComponentInstaller(); |
+ |
+ virtual void OnUpdateError(int error) OVERRIDE; |
+ |
+ virtual bool Install(base::DictionaryValue* manifest, |
+ const base::FilePath& unpack_path) OVERRIDE; |
+ |
+ // Register a PNaCl component for the first time. |
+ void RegisterPnaclComponent(ComponentUpdateService* cus, |
+ const CommandLine& command_line); |
+ |
+ // Check the PNaCl version again and re-register with the component |
+ // updater service. |
+ void ReRegisterPnacl(); |
+ |
+ bool per_user() const { return per_user_; } |
+ |
+ // If per_user, function to call when profile is changed. |
+ void OnProfileChange(); |
+ |
+ // Determine the base directory for storing each version of PNaCl. |
+ base::FilePath GetPnaclBaseDirectory(); |
+ |
+ Version current_version() const { return current_version_; } |
+ |
+ void set_current_version(const Version& v) { current_version_ = v; } |
+ |
+ ComponentUpdateService* cus() const { return cus_; } |
+ |
+ private: |
+ bool per_user_; |
+ scoped_ptr<PnaclProfileObserver> profile_observer_; |
+ base::FilePath current_profile_path_; |
+ Version current_version_; |
+ ComponentUpdateService* cus_; |
+ DISALLOW_COPY_AND_ASSIGN(PnaclComponentInstaller); |
+}; |
// Returns true if this browser is compatible with the given Pnacl component |
// manifest, with the version specified in the manifest in |version_out|. |