• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_UTIL_CHANNEL_INFO_H_
6 #define CHROME_INSTALLER_UTIL_CHANNEL_INFO_H_
7 
8 #include <string>
9 
10 namespace base {
11 namespace win {
12 class RegKey;
13 }
14 }
15 
16 namespace installer {
17 
18 // A helper class for parsing and modifying the Google Update additional
19 // parameter ("ap") client state value for a product.
20 class ChannelInfo {
21  public:
22 
23   // Initialize an instance from the "ap" value in a given registry key.
24   // Returns false if the value is present but could not be read from the
25   // registry. Returns true if the value was not present or could be read.
26   // Also returns true if the key is not valid.
27   // An absent "ap" value is treated identically to an empty "ap" value.
28   bool Initialize(const base::win::RegKey& key);
29 
30   // Writes the info to the "ap" value in a given registry key.
31   // Returns false if the value could not be written to the registry.
32   bool Write(base::win::RegKey* key) const;
33 
value()34   const std::wstring& value() const { return value_; }
set_value(const std::wstring & value)35   void set_value(const std::wstring& value) { value_ = value; }
Equals(const ChannelInfo & other)36   bool Equals(const ChannelInfo& other) const {
37     return value_ == other.value_;
38   }
39 
40   // Determines the update channel for the value.  Possible |channel_name|
41   // results are the empty string (stable channel), "beta", and "dev".  Returns
42   // false (without modifying |channel_name|) if the channel could not be
43   // determined.
44   bool GetChannelName(std::wstring* channel_name) const;
45 
46   // Returns true if the -chrome modifier is present in the value.
47   bool IsChrome() const;
48 
49   // Adds or removes the -chrome modifier, returning true if the value is
50   // modified.
51   bool SetChrome(bool value);
52 
53   // Returns true if the -chromeframe modifier is present in the value.
54   bool IsChromeFrame() const;
55 
56   // Adds or removes the -chromeframe modifier, returning true if the value is
57   // modified.
58   bool SetChromeFrame(bool value);
59 
60   // Returns true if the -applauncher modifier is present in the value.
61   bool IsAppLauncher() const;
62 
63   // Adds or removes the -applauncher modifier, returning true if the value is
64   // modified.
65   bool SetAppLauncher(bool value);
66 
67   // Returns true if the -multi modifier is present in the value.
68   bool IsMultiInstall() const;
69 
70   // Adds or removes the -multi modifier, returning true if the value is
71   // modified.
72   bool SetMultiInstall(bool value);
73 
74   // Returns true if the -readymode modifier is present in the value.
75   bool IsReadyMode() const;
76 
77   // Adds or removes the -readymode modifier, returning true if the value is
78   // modified.
79   bool SetReadyMode(bool value);
80 
81   // Adds the -stage: modifier with the given string (if |stage| is non-NULL) or
82   // removes the -stage: modifier (otherwise), returning true if the value is
83   // modified.
84   bool SetStage(const wchar_t* stage);
85 
86   // Returns the string identifying the current stage, or an empty string if the
87   // -stage: modifier is not present in the value.
88   std::wstring GetStage() const;
89 
90   // Returns true if the -full suffix is present in the value.
91   bool HasFullSuffix() const;
92 
93   // Adds or removes the -full suffix, returning true if the value is
94   // modified.
95   bool SetFullSuffix(bool value);
96 
97   // Returns true if the -multifail suffix is present in the value.
98   bool HasMultiFailSuffix() const;
99 
100   // Adds or removes the -multifail suffix, returning true if the value is
101   // modified.
102   bool SetMultiFailSuffix(bool value);
103 
104   // Adds or removes the -migrating suffix, returning true if the value is
105   // modified.
106   bool SetMigratingSuffix(bool value);
107 
108   // Returns true if the -migrating suffix is present in the value.
109   bool HasMigratingSuffix() const;
110 
111   // Removes all modifiers and suffixes. For example, 2.0-dev-multi-chrome-full
112   // becomes 2.0-dev. Returns true if the value is modified.
113   bool RemoveAllModifiersAndSuffixes();
114 
115  private:
116   std::wstring value_;
117 };  // class ChannelInfo
118 
119 }  // namespace installer
120 
121 #endif  // CHROME_INSTALLER_UTIL_CHANNEL_INFO_H_
122