app_command.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
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.
4
5#ifndef CHROME_INSTALLER_UTIL_APP_COMMAND_H_
6#define CHROME_INSTALLER_UTIL_APP_COMMAND_H_
7
8#include <windows.h>
9
10#include "base/string16.h"
11
12class WorkItemList;
13
14namespace base {
15namespace win {
16class RegKey;
17}
18}
19
20namespace installer {
21
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.
25class 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 string16& command_line);
31  // The implicit dtor, copy ctor and assignment operator are desired.
32
33  // Initializes an instance from the command in |key|.
34  bool Initialize(const base::win::RegKey& key);
35
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 string16& command_path,
40                    WorkItemList* item_list) const;
41
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 string16& command_line() const { return command_line_; }
46  void set_command_line(const string16& command_line) {
47    command_line_ = command_line;
48  }
49
50  bool sends_pings() const { return sends_pings_; }
51  void set_sends_pings(bool sends_pings) { sends_pings_ = sends_pings; }
52
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;
56  }
57
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;
61  }
62
63 protected:
64  string16 command_line_;
65  bool sends_pings_;
66  bool is_web_accessible_;
67  bool is_auto_run_on_os_upgrade_;
68};
69
70}  // namespace installer
71
72#endif  // CHROME_INSTALLER_UTIL_APP_COMMAND_H_
73