1 // Copyright (c) 2012 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_MINI_INSTALLER_CONFIGURATION_H_ 6 #define CHROME_INSTALLER_MINI_INSTALLER_CONFIGURATION_H_ 7 8 namespace mini_installer { 9 10 // A simple container of the mini_installer's configuration, as dictated by the 11 // command line used to invoke it. 12 class Configuration { 13 public: 14 enum Operation { 15 INSTALL_PRODUCT, 16 CLEANUP, 17 }; 18 19 Configuration(); 20 ~Configuration(); 21 22 // Initializes this instance on the basis of the process's command line. 23 bool Initialize(); 24 25 // Returns the desired operation dictated by the command line options. 26 Operation operation() const { return operation_; } 27 28 // Returns the program portion of the command line, or NULL if it cannot be 29 // determined (e.g., by misuse). 30 const wchar_t* program() const; 31 32 // Returns the number of arguments specified on the command line, including 33 // the program itself. 34 int argument_count() const { return argument_count_; } 35 36 // Returns the original command line. 37 const wchar_t* command_line() const { return command_line_; } 38 39 // Returns the app guid to be used for Chrome. --chrome-sxs on the command 40 // line makes this the canary's app guid. 41 const wchar_t* chrome_app_guid() const { return chrome_app_guid_; } 42 43 // Returns true if --chrome is explicitly or implicitly on the command line. 44 bool has_chrome() const { return has_chrome_; } 45 46 // Returns true if --chrome-frame is on the command line. 47 bool has_chrome_frame() const { return has_chrome_frame_; } 48 49 // Returns true if --app-host is on the command line. 50 bool has_app_host() const { return has_app_host_; } 51 52 // Returns true if --multi-install is on the command line. 53 bool is_multi_install() const { return is_multi_install_; } 54 55 // Returns true if --system-level is on the command line. 56 bool is_system_level() const { return is_system_level_; } 57 58 protected: 59 void Clear(); 60 bool InitializeFromCommandLine(const wchar_t* command_line); 61 62 wchar_t** args_; 63 const wchar_t* chrome_app_guid_; 64 const wchar_t* command_line_; 65 int argument_count_; 66 Operation operation_; 67 bool has_chrome_; 68 bool has_chrome_frame_; 69 bool has_app_host_; 70 bool is_multi_install_; 71 bool is_system_level_; 72 73 private: 74 Configuration(const Configuration&); 75 Configuration& operator=(const Configuration&); 76 }; 77 78 } // namespace mini_installer 79 80 #endif // CHROME_INSTALLER_MINI_INSTALLER_CONFIGURATION_H_ 81