Roll src/third_party/WebKit 116cf7f:79abaa8 (svn 189234:189235)
[chromium-blink-merge.git] / chrome / installer / util / app_command.h
blob245619703c8e82e97598db813b0609a87abf2bd0
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_INSTALLER_UTIL_APP_COMMAND_H_
6 #define CHROME_INSTALLER_UTIL_APP_COMMAND_H_
8 #include <windows.h>
10 #include "base/strings/string16.h"
12 class WorkItemList;
14 namespace base {
15 namespace win {
16 class RegKey;
20 namespace installer {
22 // A description of a command registered by setup.exe that can be invoked by
23 // Google Update. This class is CopyConstructible and Assignable for use in
24 // STL containers.
25 class AppCommand {
26 public:
27 AppCommand();
28 // Constructs a new command that will execute the given |command_line|.
29 // All other properties default to false.
30 explicit AppCommand(const base::string16& command_line);
31 // The implicit dtor, copy ctor and assignment operator are desired.
33 // Initializes an instance from the command in |key|.
34 bool Initialize(const base::win::RegKey& key);
36 // Adds to |item_list| work items to write this object to the key named
37 // |command_path| under |predefined_root|.
38 void AddWorkItems(HKEY predefined_root,
39 const base::string16& command_path,
40 WorkItemList* item_list) const;
42 // Returns the command-line for the app command as it is represented in the
43 // registry. Use CommandLine::FromString() on this value to check arguments
44 // or to launch the command.
45 const base::string16& command_line() const { return command_line_; }
46 void set_command_line(const base::string16& command_line) {
47 command_line_ = command_line;
50 bool sends_pings() const { return sends_pings_; }
51 void set_sends_pings(bool sends_pings) { sends_pings_ = sends_pings; }
53 bool is_web_accessible() const { return is_web_accessible_; }
54 void set_is_web_accessible(bool is_web_accessible) {
55 is_web_accessible_ = is_web_accessible;
58 bool is_auto_run_on_os_upgrade() const { return is_auto_run_on_os_upgrade_; }
59 void set_is_auto_run_on_os_upgrade(bool is_auto_run_on_os_upgrade) {
60 is_auto_run_on_os_upgrade_ = is_auto_run_on_os_upgrade;
63 bool is_run_as_user() const { return is_run_as_user_; }
64 void set_is_run_as_user(bool is_run_as_user) {
65 is_run_as_user_ = is_run_as_user;
68 protected:
69 base::string16 command_line_;
70 bool sends_pings_;
71 bool is_web_accessible_;
72 bool is_auto_run_on_os_upgrade_;
73 bool is_run_as_user_;
75 private:
76 struct NamedBoolVar {
77 bool AppCommand::* data;
78 const wchar_t* name;
81 static const NamedBoolVar kNameBoolVars[];
84 } // namespace installer
86 #endif // CHROME_INSTALLER_UTIL_APP_COMMAND_H_