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

Side by Side Diff: chrome/app/main_dll_loader_win.cc

Issue 2256723002: Fix SyzyASAN build (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: . Created 4 years, 4 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 (c) 2012 The Chromium Authors. All rights reserved. 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 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
5 #include "chrome/app/main_dll_loader_win.h" 5 #include "chrome/app/main_dll_loader_win.h"
6 6
7 #include <windows.h> // NOLINT 7 #include <windows.h> // NOLINT
8 #include <shlwapi.h> // NOLINT 8 #include <shlwapi.h> // NOLINT
9 #include <stddef.h> 9 #include <stddef.h>
10 #include <userenv.h> // NOLINT 10 #include <userenv.h> // NOLINT
(...skipping 13 matching lines...) Expand all
24 #include "base/strings/string_util.h" 24 #include "base/strings/string_util.h"
25 #include "base/strings/stringprintf.h" 25 #include "base/strings/stringprintf.h"
26 #include "base/strings/utf_string_conversions.h" 26 #include "base/strings/utf_string_conversions.h"
27 #include "base/trace_event/trace_event.h" 27 #include "base/trace_event/trace_event.h"
28 #include "base/win/scoped_handle.h" 28 #include "base/win/scoped_handle.h"
29 #include "base/win/windows_version.h" 29 #include "base/win/windows_version.h"
30 #include "chrome/app/chrome_crash_reporter_client_win.h" 30 #include "chrome/app/chrome_crash_reporter_client_win.h"
31 #include "chrome/app/chrome_watcher_client_win.h" 31 #include "chrome/app/chrome_watcher_client_win.h"
32 #include "chrome/app/chrome_watcher_command_line_win.h" 32 #include "chrome/app/chrome_watcher_command_line_win.h"
33 #include "chrome/app/file_pre_reader_win.h" 33 #include "chrome/app/file_pre_reader_win.h"
34 #include "chrome/app/kasko_client.h"
35 #include "chrome/chrome_watcher/chrome_watcher_main_api.h" 34 #include "chrome/chrome_watcher/chrome_watcher_main_api.h"
36 #include "chrome/common/chrome_constants.h" 35 #include "chrome/common/chrome_constants.h"
37 #include "chrome/common/chrome_paths.h" 36 #include "chrome/common/chrome_paths.h"
38 #include "chrome/common/chrome_result_codes.h" 37 #include "chrome/common/chrome_result_codes.h"
39 #include "chrome/common/chrome_switches.h" 38 #include "chrome/common/chrome_switches.h"
40 #include "chrome/common/metrics_constants_util_win.h" 39 #include "chrome/common/metrics_constants_util_win.h"
41 #include "chrome/installer/util/google_update_constants.h" 40 #include "chrome/installer/util/google_update_constants.h"
42 #include "chrome/installer/util/google_update_settings.h" 41 #include "chrome/installer/util/google_update_settings.h"
43 #include "chrome/installer/util/install_util.h" 42 #include "chrome/installer/util/install_util.h"
44 #include "chrome/installer/util/module_util_win.h" 43 #include "chrome/installer/util/module_util_win.h"
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after
205 204
206 class ChromeDllLoader : public MainDllLoader { 205 class ChromeDllLoader : public MainDllLoader {
207 protected: 206 protected:
208 // MainDllLoader implementation. 207 // MainDllLoader implementation.
209 void OnBeforeLaunch(const std::string& process_type, 208 void OnBeforeLaunch(const std::string& process_type,
210 const base::FilePath& dll_path) override; 209 const base::FilePath& dll_path) override;
211 int OnBeforeExit(int return_code, const base::FilePath& dll_path) override; 210 int OnBeforeExit(int return_code, const base::FilePath& dll_path) override;
212 211
213 private: 212 private:
214 std::unique_ptr<ChromeWatcherClient> chrome_watcher_client_; 213 std::unique_ptr<ChromeWatcherClient> chrome_watcher_client_;
215 #if BUILDFLAG(ENABLE_KASKO)
216 std::unique_ptr<KaskoClient> kasko_client_;
217 #endif
218 }; 214 };
219 215
220 void ChromeDllLoader::OnBeforeLaunch(const std::string& process_type, 216 void ChromeDllLoader::OnBeforeLaunch(const std::string& process_type,
221 const base::FilePath& dll_path) { 217 const base::FilePath& dll_path) {
222 if (process_type.empty()) { 218 if (process_type.empty()) {
223 RecordDidRun(dll_path); 219 RecordDidRun(dll_path);
224
225 typedef bool (*GetUploadsEnabledFunction)(void);
226 static GetUploadsEnabledFunction get_uploads_enabled = nullptr;
227 if (!get_uploads_enabled) {
228 get_uploads_enabled = reinterpret_cast<GetUploadsEnabledFunction>(
229 GetProcAddress(GetModuleHandle(chrome::kChromeElfDllName),
230 "GetUploadsEnabled"));
231 CHECK(get_uploads_enabled);
232 }
233
234 // Launch the watcher process if stats collection consent has been granted.
235 if (get_uploads_enabled()) {
236 base::FilePath exe_path;
237 if (PathService::Get(base::FILE_EXE, &exe_path)) {
238 chrome_watcher_client_.reset(new ChromeWatcherClient(
239 base::Bind(&GenerateChromeWatcherCommandLine, exe_path)));
240 if (chrome_watcher_client_->LaunchWatcher()) {
241 #if BUILDFLAG(ENABLE_KASKO)
242 kasko::api::MinidumpType minidump_type = kasko::api::SMALL_DUMP_TYPE;
243 if (base::CommandLine::ForCurrentProcess()->HasSwitch(
244 switches::kFullMemoryCrashReport)) {
245 minidump_type = kasko::api::FULL_DUMP_TYPE;
246 } else {
247 // TODO(scottmg): Point this at the common global one when it's
248 // moved back into the .exe. http://crbug.com/546288.
249 ChromeCrashReporterClient chrome_crash_client;
250 bool is_per_user_install = chrome_crash_client.GetIsPerUserInstall(
251 exe_path.value());
252 if (chrome_crash_client.GetShouldDumpLargerDumps(
253 is_per_user_install)) {
254 minidump_type = kasko::api::LARGER_DUMP_TYPE;
255 }
256 }
257
258 kasko_client_.reset(
259 new KaskoClient(chrome_watcher_client_.get(), minidump_type));
260 #endif // BUILDFLAG(ENABLE_KASKO)
261 }
262 }
263 }
264 } else { 220 } else {
265 // Set non-browser processes up to be killed by the system after the browser 221 // Set non-browser processes up to be killed by the system after the browser
266 // goes away. The browser uses the default shutdown order, which is 0x280. 222 // goes away. The browser uses the default shutdown order, which is 0x280.
267 // Note that lower numbers here denote "kill later" and higher numbers mean 223 // Note that lower numbers here denote "kill later" and higher numbers mean
268 // "kill sooner". 224 // "kill sooner".
269 // This gets rid of most of those unsighly sad tabs on logout and shutdown. 225 // This gets rid of most of those unsighly sad tabs on logout and shutdown.
270 ::SetProcessShutdownParameters(0x280 - 1, SHUTDOWN_NORETRY); 226 ::SetProcessShutdownParameters(0x280 - 1, SHUTDOWN_NORETRY);
271 } 227 }
272 } 228 }
273 229
274 int ChromeDllLoader::OnBeforeExit(int return_code, 230 int ChromeDllLoader::OnBeforeExit(int return_code,
275 const base::FilePath& dll_path) { 231 const base::FilePath& dll_path) {
276 // NORMAL_EXIT_CANCEL is used for experiments when the user cancels 232 // NORMAL_EXIT_CANCEL is used for experiments when the user cancels
277 // so we need to reset the did_run signal so omaha does not count 233 // so we need to reset the did_run signal so omaha does not count
278 // this run as active usage. 234 // this run as active usage.
279 if (chrome::RESULT_CODE_NORMAL_EXIT_CANCEL == return_code) { 235 if (chrome::RESULT_CODE_NORMAL_EXIT_CANCEL == return_code) {
280 ClearDidRun(dll_path); 236 ClearDidRun(dll_path);
281 } 237 }
282 238
283 #if BUILDFLAG(ENABLE_KASKO)
284 kasko_client_.reset();
285 #endif
286 chrome_watcher_client_.reset(); 239 chrome_watcher_client_.reset();
287 240
288 return return_code; 241 return return_code;
289 } 242 }
290 243
291 //============================================================================= 244 //=============================================================================
292 245
293 class ChromiumDllLoader : public MainDllLoader { 246 class ChromiumDllLoader : public MainDllLoader {
294 protected: 247 protected:
295 void OnBeforeLaunch(const std::string& process_type, 248 void OnBeforeLaunch(const std::string& process_type,
296 const base::FilePath& dll_path) override {} 249 const base::FilePath& dll_path) override {}
297 int OnBeforeExit(int return_code, const base::FilePath& dll_path) override { 250 int OnBeforeExit(int return_code, const base::FilePath& dll_path) override {
298 return return_code; 251 return return_code;
299 } 252 }
300 }; 253 };
301 254
302 MainDllLoader* MakeMainDllLoader() { 255 MainDllLoader* MakeMainDllLoader() {
303 #if defined(GOOGLE_CHROME_BUILD) 256 #if defined(GOOGLE_CHROME_BUILD)
304 return new ChromeDllLoader(); 257 return new ChromeDllLoader();
305 #else 258 #else
306 return new ChromiumDllLoader(); 259 return new ChromiumDllLoader();
307 #endif 260 #endif
308 } 261 }
OLDNEW
« chrome/BUILD.gn ('K') | « chrome/app/kasko_client.cc ('k') | chrome_elf/chrome_elf_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698