Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(215)

Side by Side Diff: chrome/install_static/install_util.h

Issue 2422643002: Windows install_static refactor. (Closed)
Patch Set: maybe fix nacl64 Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4
4 // This file contains helper functions which provide information about the 5 // This file contains helper functions which provide information about the
5 // current version of Chrome. This includes channel information, version 6 // current version of Chrome. This includes channel information, version
6 // information etc. This functionality is provided by using functions in 7 // information etc. This functionality is provided by using functions in
7 // kernel32 and advapi32. No other dependencies are allowed in this file. 8 // kernel32 and advapi32. No other dependencies are allowed in this file.
8 9
9 #ifndef CHROME_INSTALL_STATIC_INSTALL_UTIL_H_ 10 #ifndef CHROME_INSTALL_STATIC_INSTALL_UTIL_H_
10 #define CHROME_INSTALL_STATIC_INSTALL_UTIL_H_ 11 #define CHROME_INSTALL_STATIC_INSTALL_UTIL_H_
11 12
12 #include <string> 13 #include <string>
13 #include <vector> 14 #include <vector>
14 15
15 namespace install_static { 16 namespace install_static {
16 17
18 struct InstallConstants;
19
17 enum class ProcessType { 20 enum class ProcessType {
18 UNINITIALIZED, 21 UNINITIALIZED,
19 NON_BROWSER_PROCESS, 22 NON_BROWSER_PROCESS,
20 BROWSER_PROCESS, 23 BROWSER_PROCESS,
21 }; 24 };
22 25
23 // TODO(ananta) 26 // TODO(ananta)
24 // https://crbug.com/604923 27 // https://crbug.com/604923
25 // The constants defined in this file are also defined in chrome/installer and
26 // other places. we need to unify them.
27 extern const wchar_t kChromeChannelUnknown[];
28 extern const wchar_t kChromeChannelCanary[];
29 extern const wchar_t kChromeChannelDev[];
30 extern const wchar_t kChromeChannelBeta[];
31 extern const wchar_t kChromeChannelStable[];
32 extern const wchar_t kChromeChannelStableExplicit[];
33 extern const wchar_t kRegPathClientState[];
34 extern const wchar_t kRegPathClientStateMedium[];
35 extern const wchar_t kRegPathChromePolicy[];
36 extern const wchar_t kRegApField[];
37 // Used to retrieve consent for uploading crashes and metrics.
38 extern const wchar_t kRegValueUsageStats[];
39 extern const wchar_t kUninstallArgumentsField[];
40 extern const wchar_t kMetricsReportingEnabled[];
41 extern const wchar_t kAppGuidCanary[];
42 extern const wchar_t kAppGuidGoogleChrome[];
43 extern const wchar_t kAppGuidGoogleBinaries[];
44
45 // TODO(ananta)
46 // https://crbug.com/604923
47 // Unify these constants with env_vars.h. 28 // Unify these constants with env_vars.h.
48 extern const wchar_t kHeadless[]; 29 extern const wchar_t kHeadless[];
49 extern const wchar_t kShowRestart[]; 30 extern const wchar_t kShowRestart[];
50 extern const wchar_t kRestartInfo[]; 31 extern const wchar_t kRestartInfo[];
51 extern const wchar_t kRtlLocale[]; 32 extern const wchar_t kRtlLocale[];
52 33
53 // TODO(ananta) 34 // TODO(ananta)
54 // https://crbug.com/604923 35 // https://crbug.com/604923
55 // Unify these constants with those defined in content_switches.h. 36 // Unify these constants with those defined in content_switches.h.
56 extern const char kGpuProcess[]; 37 extern const char kGpuProcess[];
57 extern const char kPpapiPluginProcess[]; 38 extern const char kPpapiPluginProcess[];
58 extern const char kRendererProcess[]; 39 extern const char kRendererProcess[];
59 extern const char kUtilityProcess[]; 40 extern const char kUtilityProcess[];
60 extern const char kProcessType[]; 41 extern const char kProcessType[];
61 extern const char kCrashpadHandler[]; 42 extern const char kCrashpadHandler[];
62 43
63 // Returns true if |exe_path| points to a Chrome installed in an SxS 44 // Returns true if Chrome is running at system level.
64 // installation. 45 bool IsSystemInstall();
65 bool IsSxSChrome(const wchar_t* exe_path);
66
67 // Returns true if |exe_path| points to a per-user level Chrome installation.
68 bool IsSystemInstall(const wchar_t* exe_path);
69 46
70 // Returns true if current installation of Chrome is a multi-install. 47 // Returns true if current installation of Chrome is a multi-install.
71 bool IsMultiInstall(bool is_system_install); 48 bool IsMultiInstall();
72 49
73 // Returns true if usage stats collecting is enabled for this user for the 50 // Returns true if usage stats collecting is enabled for this user for the
74 // current executable. 51 // current executable.
75 bool GetCollectStatsConsent(); 52 bool GetCollectStatsConsent();
76 53
77 // Returns true if usage stats collecting is enabled for this user for the
78 // executable passed in as |exe_path|.
79 // Only used by tests.
80 bool GetCollectStatsConsentForTesting(const std::wstring& exe_path);
81
82 // Returns true if the current executable is currently in the chosen sample that 54 // Returns true if the current executable is currently in the chosen sample that
83 // will report stats and crashes. 55 // will report stats and crashes.
84 bool GetCollectStatsInSample(); 56 bool GetCollectStatsInSample();
85 57
86 // Sets the registry value used for checking if Chrome is in the chosen sample 58 // Sets the registry value used for checking if Chrome is in the chosen sample
87 // that will report stats and crashes. Returns true if writing was successful. 59 // that will report stats and crashes. Returns true if writing was successful.
88 bool SetCollectStatsInSample(bool in_sample); 60 bool SetCollectStatsInSample(bool in_sample);
89 61
90 // Returns true if if usage stats reporting is controlled by a mandatory 62 // Returns true if if usage stats reporting is controlled by a mandatory
91 // policy. |crash_reporting_enabled| determines whether it's enabled (true) or 63 // policy. |crash_reporting_enabled| determines whether it's enabled (true) or
(...skipping 20 matching lines...) Expand all
112 // whether DIR_USER_DATA or DIR_CRASH_DUMPS has been overridden. 84 // whether DIR_USER_DATA or DIR_CRASH_DUMPS has been overridden.
113 // TODO(ananta) 85 // TODO(ananta)
114 // http://crbug.com/604923 86 // http://crbug.com/604923
115 // Unify this with the Browser Distribution code. 87 // Unify this with the Browser Distribution code.
116 bool GetDefaultCrashDumpLocation(std::wstring* crash_dir); 88 bool GetDefaultCrashDumpLocation(std::wstring* crash_dir);
117 89
118 // Returns the contents of the specified |variable_name| from the environment 90 // Returns the contents of the specified |variable_name| from the environment
119 // block of the calling process. Returns an empty string if the variable does 91 // block of the calling process. Returns an empty string if the variable does
120 // not exist. 92 // not exist.
121 std::string GetEnvironmentString(const std::string& variable_name); 93 std::string GetEnvironmentString(const std::string& variable_name);
122 std::wstring GetEnvironmentString16(const std::wstring& variable_name); 94 std::wstring GetEnvironmentString16(const wchar_t* variable_name);
123 95
124 // Sets the environment variable identified by |variable_name| to the value 96 // Sets the environment variable identified by |variable_name| to the value
125 // identified by |new_value|. 97 // identified by |new_value|.
126 bool SetEnvironmentString(const std::string& variable_name, 98 bool SetEnvironmentString(const std::string& variable_name,
127 const std::string& new_value); 99 const std::string& new_value);
128 bool SetEnvironmentString16(const std::wstring& variable_name, 100 bool SetEnvironmentString16(const std::wstring& variable_name,
129 const std::wstring& new_value); 101 const std::wstring& new_value);
130 102
131 // Returns true if the environment variable identified by |variable_name| 103 // Returns true if the environment variable identified by |variable_name|
132 // exists. 104 // exists.
133 bool HasEnvironmentVariable(const std::string& variable_name); 105 bool HasEnvironmentVariable(const std::string& variable_name);
134 bool HasEnvironmentVariable16(const std::wstring& variable_name); 106 bool HasEnvironmentVariable16(const std::wstring& variable_name);
135 107
136 // Gets the exe version details like the |product_name|, |version|, 108 // Gets the exe version details like the |product_name|, |version|,
137 // |special_build|, |channel_name|, etc. Most of this information is read 109 // |special_build|, |channel_name|, etc. Most of this information is read
138 // from the version resource. |exe_path| is the path of chrome.exe. 110 // from the version resource. |exe_path| is the path of chrome.exe.
139 // TODO(ananta) 111 // TODO(ananta)
140 // http://crbug.com/604923 112 // http://crbug.com/604923
141 // Unify this with the Browser Distribution code. 113 // Unify this with the Browser Distribution code.
142 bool GetExecutableVersionDetails(const std::wstring& exe_path, 114 void GetExecutableVersionDetails(const std::wstring& exe_path,
143 std::wstring* product_name, 115 std::wstring* product_name,
144 std::wstring* version, 116 std::wstring* version,
145 std::wstring* special_build, 117 std::wstring* special_build,
146 std::wstring* channel_name); 118 std::wstring* channel_name);
147 119
148 // Gets the channel name for the current Chrome process. 120 // Gets the channel name for the current Chrome process.
149 // If |add_modifier| is true the channel name is returned with the modifier 121 // If |add_modifier| is true the channel name is returned with the modifier
150 // prepended to it. Currently this is only done for multi installs, i.e (-m) 122 // prepended to it. Currently this is only done for multi installs, i.e (-m)
151 // is the only modifier supported. 123 // is the only modifier supported.
152 // TODO(ananta) 124 // TODO(ananta)
153 // http://crbug.com/604923 125 // http://crbug.com/604923
154 // Unify this with the Browser Distribution code. 126 // Unify this with the Browser Distribution code.
155 void GetChromeChannelName(bool is_per_user_install, 127 std::wstring GetChromeChannelName(bool add_modifier);
156 bool add_modifier,
157 std::wstring* channel_name);
158
159 // Returns the version of Google Update that is installed.
160 // TODO(ananta)
161 // http://crbug.com/604923
162 // Unify this with the Browser Distribution code.
163 std::string GetGoogleUpdateVersion();
164
165 // Returns the Chrome installation subdirectory, i.e. Google Chrome\Chromium,
166 // etc.
167 // TODO(ananta)
168 // http://crbug.com/604923
169 // Unify this with the Browser Distribution code.
170 std::wstring GetChromeInstallSubDirectory();
171 128
172 // Returns the registry path where the browser crash dumps metrics need to be 129 // Returns the registry path where the browser crash dumps metrics need to be
173 // written to. 130 // written to.
174 // TODO(ananta) 131 // TODO(ananta)
175 // http://crbug.com/604923 132 // http://crbug.com/604923
176 // Unify this with the version in 133 // Unify this with the version in
177 // chrome\common\metrics_constants_util_win.cc 134 // chrome\common\metrics_constants_util_win.cc
178 std::wstring GetBrowserCrashDumpAttemptsRegistryPath(); 135 std::wstring GetBrowserCrashDumpAttemptsRegistryPath();
179 136
180 // Returns true if the |source| string matches the |pattern|. The pattern 137 // Returns true if the |source| string matches the |pattern|. The pattern
(...skipping 12 matching lines...) Expand all
193 // Tokenizes a string |str| based on single character delimiter. 150 // Tokenizes a string |str| based on single character delimiter.
194 // The tokens are returned in a vector. The |trim_spaces| parameter indicates 151 // The tokens are returned in a vector. The |trim_spaces| parameter indicates
195 // whether the function should optionally trim spaces throughout the string. 152 // whether the function should optionally trim spaces throughout the string.
196 std::vector<std::string> TokenizeString(const std::string& str, 153 std::vector<std::string> TokenizeString(const std::string& str,
197 char delimiter, 154 char delimiter,
198 bool trim_spaces); 155 bool trim_spaces);
199 std::vector<std::wstring> TokenizeString16(const std::wstring& str, 156 std::vector<std::wstring> TokenizeString16(const std::wstring& str,
200 wchar_t delimiter, 157 wchar_t delimiter,
201 bool trim_spaces); 158 bool trim_spaces);
202 159
203 // Compares version strings of the form "X.X.X.X" and returns the result of the
204 // comparison in the |result| parameter. The result is as below:
205 // 0 if the versions are equal.
206 // -1 if version1 < version2.
207 // 1 if version1 > version2.
208 // Returns true on success, false on invalid strings being passed, etc.
209 bool CompareVersionStrings(const std::string& version1,
210 const std::string& version2,
211 int* result);
212
213 // We assume that the command line |command_line| contains multiple switches 160 // We assume that the command line |command_line| contains multiple switches
214 // with the format --<switch name>=<switch value>. This function returns the 161 // with the format --<switch name>=<switch value>. This function returns the
215 // value of the |switch_name| passed in. 162 // value of the |switch_name| passed in.
216 std::string GetSwitchValueFromCommandLine(const std::string& command_line, 163 std::string GetSwitchValueFromCommandLine(const std::string& command_line,
217 const std::string& switch_name); 164 const std::string& switch_name);
218 165
166 // Returns the unadorned channel name based on the channel strategy for the
167 // install mode.
168 std::wstring DetermineChannel(const InstallConstants& mode,
169 bool system_level,
170 bool multi_install);
171
219 // Caches the |ProcessType| of the current process. 172 // Caches the |ProcessType| of the current process.
220 extern ProcessType g_process_type; 173 extern ProcessType g_process_type;
221 174
222 } // namespace install_static 175 } // namespace install_static
223 176
224 #endif // CHROME_INSTALL_STATIC_INSTALL_UTIL_H_ 177 #endif // CHROME_INSTALL_STATIC_INSTALL_UTIL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698