| // Copyright 2011 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_INSTALLER_UTIL_APP_COMMAND_H_ |
| #define CHROME_INSTALLER_UTIL_APP_COMMAND_H_ |
| |
| #include <windows.h> |
| |
| #include <string> |
| |
| class WorkItemList; |
| |
| namespace base { |
| namespace win { |
| class RegKey; |
| } |
| } // namespace base |
| |
| namespace installer { |
| |
| // A description of a command registered by setup.exe that can be invoked by |
| // Google Update. This class is CopyConstructible and Assignable for use in |
| // STL containers. |
| class AppCommand { |
| public: |
| AppCommand(); |
| |
| // Constructs a new command with the given `command_name` and `command_line`. |
| // All other properties default to false. |
| AppCommand(const std::wstring& command_name, |
| const std::wstring& command_line); |
| |
| // The default copy ctors, dtor, and assignment operators are desired. |
| AppCommand(AppCommand&&); |
| AppCommand(const AppCommand&); |
| ~AppCommand(); |
| AppCommand& operator=(AppCommand&&) = default; |
| AppCommand& operator=(const AppCommand&) = default; |
| |
| // Initializes an instance from the command in |
| // `root_key`\Google\Update\Clients\{`app_id`}\Commands\`command_name_` |
| bool Initialize(HKEY root_key); |
| |
| // Initializes an instance from the command in |key|. |
| bool Initialize(const base::win::RegKey& key); |
| |
| // Adds to `item_list` work items to write the command under `root_key`. |
| void AddCreateAppCommandWorkItems(const HKEY root_key, |
| WorkItemList* item_list) const; |
| |
| // Adds to `item_list` work items to delete the command under `root_key`. |
| void AddDeleteAppCommandWorkItems(const HKEY root_key, |
| WorkItemList* item_list) const; |
| |
| // Returns the command-line for the app command as it is represented in the |
| // registry. Use CommandLine::FromString() on this value to check arguments |
| // or to launch the command. |
| const std::wstring& command_line() const { return command_line_; } |
| void set_command_line(const std::wstring& command_line) { |
| command_line_ = command_line; |
| } |
| |
| bool sends_pings() const { return sends_pings_; } |
| void set_sends_pings(bool sends_pings) { sends_pings_ = sends_pings; } |
| |
| bool is_web_accessible() const { return is_web_accessible_; } |
| void set_is_web_accessible(bool is_web_accessible) { |
| is_web_accessible_ = is_web_accessible; |
| } |
| |
| bool is_auto_run_on_os_upgrade() const { return is_auto_run_on_os_upgrade_; } |
| void set_is_auto_run_on_os_upgrade(bool is_auto_run_on_os_upgrade) { |
| is_auto_run_on_os_upgrade_ = is_auto_run_on_os_upgrade; |
| } |
| |
| bool is_run_as_user() const { return is_run_as_user_; } |
| void set_is_run_as_user(bool is_run_as_user) { |
| is_run_as_user_ = is_run_as_user; |
| } |
| |
| protected: |
| std::wstring command_name_; |
| std::wstring command_line_; |
| bool sends_pings_; |
| bool is_web_accessible_; |
| bool is_auto_run_on_os_upgrade_; |
| bool is_run_as_user_; |
| |
| private: |
| struct NamedBoolVar { |
| bool AppCommand::* data; |
| const wchar_t* name; |
| }; |
| |
| static const NamedBoolVar kNameBoolVars[]; |
| }; |
| |
| } // namespace installer |
| |
| #endif // CHROME_INSTALLER_UTIL_APP_COMMAND_H_ |