OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/chrome_crash_reporter_client.h" | 5 #include "chrome/app/chrome_crash_reporter_client.h" |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/environment.h" | 8 #include "base/environment.h" |
9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 const std::string& client_guid) { | 71 const std::string& client_guid) { |
72 crash_keys::SetMetricsClientIdFromGUID(client_guid); | 72 crash_keys::SetMetricsClientIdFromGUID(client_guid); |
73 } | 73 } |
74 #endif | 74 #endif |
75 | 75 |
76 #if defined(OS_WIN) | 76 #if defined(OS_WIN) |
77 bool ChromeCrashReporterClient::GetAlternativeCrashDumpLocation( | 77 bool ChromeCrashReporterClient::GetAlternativeCrashDumpLocation( |
78 base::FilePath* crash_dir) { | 78 base::FilePath* crash_dir) { |
79 // By setting the BREAKPAD_DUMP_LOCATION environment variable, an alternate | 79 // By setting the BREAKPAD_DUMP_LOCATION environment variable, an alternate |
80 // location to write breakpad crash dumps can be set. | 80 // location to write breakpad crash dumps can be set. |
81 scoped_ptr<base::Environment> env(base::Environment::Create()); | 81 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
82 std::string alternate_crash_dump_location; | 82 std::string alternate_crash_dump_location; |
83 if (env->GetVar("BREAKPAD_DUMP_LOCATION", &alternate_crash_dump_location)) { | 83 if (env->GetVar("BREAKPAD_DUMP_LOCATION", &alternate_crash_dump_location)) { |
84 *crash_dir = base::FilePath::FromUTF8Unsafe(alternate_crash_dump_location); | 84 *crash_dir = base::FilePath::FromUTF8Unsafe(alternate_crash_dump_location); |
85 return true; | 85 return true; |
86 } | 86 } |
87 | 87 |
88 return false; | 88 return false; |
89 } | 89 } |
90 | 90 |
91 void ChromeCrashReporterClient::GetProductNameAndVersion( | 91 void ChromeCrashReporterClient::GetProductNameAndVersion( |
92 const base::FilePath& exe_path, | 92 const base::FilePath& exe_path, |
93 base::string16* product_name, | 93 base::string16* product_name, |
94 base::string16* version, | 94 base::string16* version, |
95 base::string16* special_build, | 95 base::string16* special_build, |
96 base::string16* channel_name) { | 96 base::string16* channel_name) { |
97 DCHECK(product_name); | 97 DCHECK(product_name); |
98 DCHECK(version); | 98 DCHECK(version); |
99 DCHECK(special_build); | 99 DCHECK(special_build); |
100 DCHECK(channel_name); | 100 DCHECK(channel_name); |
101 | 101 |
102 scoped_ptr<FileVersionInfo> version_info( | 102 std::unique_ptr<FileVersionInfo> version_info( |
103 FileVersionInfo::CreateFileVersionInfo(exe_path)); | 103 FileVersionInfo::CreateFileVersionInfo(exe_path)); |
104 | 104 |
105 if (version_info.get()) { | 105 if (version_info.get()) { |
106 // Get the information from the file. | 106 // Get the information from the file. |
107 *version = version_info->product_version(); | 107 *version = version_info->product_version(); |
108 if (!version_info->is_official_build()) | 108 if (!version_info->is_official_build()) |
109 version->append(base::ASCIIToUTF16("-devel")); | 109 version->append(base::ASCIIToUTF16("-devel")); |
110 | 110 |
111 *product_name = version_info->product_short_name(); | 111 *product_name = version_info->product_short_name(); |
112 *special_build = version_info->special_build(); | 112 *special_build = version_info->special_build(); |
113 } else { | 113 } else { |
114 // No version info found. Make up the values. | 114 // No version info found. Make up the values. |
115 *product_name = base::ASCIIToUTF16("Chrome"); | 115 *product_name = base::ASCIIToUTF16("Chrome"); |
116 *version = base::ASCIIToUTF16("0.0.0.0-devel"); | 116 *version = base::ASCIIToUTF16("0.0.0.0-devel"); |
117 } | 117 } |
118 | 118 |
119 GoogleUpdateSettings::GetChromeChannelAndModifiers( | 119 GoogleUpdateSettings::GetChromeChannelAndModifiers( |
120 !GetIsPerUserInstall(exe_path), channel_name); | 120 !GetIsPerUserInstall(exe_path), channel_name); |
121 } | 121 } |
122 | 122 |
123 bool ChromeCrashReporterClient::ShouldShowRestartDialog(base::string16* title, | 123 bool ChromeCrashReporterClient::ShouldShowRestartDialog(base::string16* title, |
124 base::string16* message, | 124 base::string16* message, |
125 bool* is_rtl_locale) { | 125 bool* is_rtl_locale) { |
126 scoped_ptr<base::Environment> env(base::Environment::Create()); | 126 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
127 if (!env->HasVar(env_vars::kShowRestart) || | 127 if (!env->HasVar(env_vars::kShowRestart) || |
128 !env->HasVar(env_vars::kRestartInfo) || | 128 !env->HasVar(env_vars::kRestartInfo) || |
129 env->HasVar(env_vars::kMetroConnected)) { | 129 env->HasVar(env_vars::kMetroConnected)) { |
130 return false; | 130 return false; |
131 } | 131 } |
132 | 132 |
133 std::string restart_info; | 133 std::string restart_info; |
134 env->GetVar(env_vars::kRestartInfo, &restart_info); | 134 env->GetVar(env_vars::kRestartInfo, &restart_info); |
135 | 135 |
136 // The CHROME_RESTART var contains the dialog strings separated by '|'. | 136 // The CHROME_RESTART var contains the dialog strings separated by '|'. |
137 // See ChromeBrowserMainPartsWin::PrepareRestartOnCrashEnviroment() | 137 // See ChromeBrowserMainPartsWin::PrepareRestartOnCrashEnviroment() |
138 // for details. | 138 // for details. |
139 std::vector<std::string> dlg_strings = base::SplitString( | 139 std::vector<std::string> dlg_strings = base::SplitString( |
140 restart_info, "|", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); | 140 restart_info, "|", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); |
141 | 141 |
142 if (dlg_strings.size() < 3) | 142 if (dlg_strings.size() < 3) |
143 return false; | 143 return false; |
144 | 144 |
145 *title = base::UTF8ToUTF16(dlg_strings[0]); | 145 *title = base::UTF8ToUTF16(dlg_strings[0]); |
146 *message = base::UTF8ToUTF16(dlg_strings[1]); | 146 *message = base::UTF8ToUTF16(dlg_strings[1]); |
147 *is_rtl_locale = dlg_strings[2] == env_vars::kRtlLocale; | 147 *is_rtl_locale = dlg_strings[2] == env_vars::kRtlLocale; |
148 return true; | 148 return true; |
149 } | 149 } |
150 | 150 |
151 bool ChromeCrashReporterClient::AboutToRestart() { | 151 bool ChromeCrashReporterClient::AboutToRestart() { |
152 scoped_ptr<base::Environment> env(base::Environment::Create()); | 152 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
153 if (!env->HasVar(env_vars::kRestartInfo)) | 153 if (!env->HasVar(env_vars::kRestartInfo)) |
154 return false; | 154 return false; |
155 | 155 |
156 env->SetVar(env_vars::kShowRestart, "1"); | 156 env->SetVar(env_vars::kShowRestart, "1"); |
157 return true; | 157 return true; |
158 } | 158 } |
159 | 159 |
160 bool ChromeCrashReporterClient::GetDeferredUploadsSupported( | 160 bool ChromeCrashReporterClient::GetDeferredUploadsSupported( |
161 bool is_per_user_install) { | 161 bool is_per_user_install) { |
162 Version update_version = GoogleUpdateSettings::GetGoogleUpdateVersion( | 162 Version update_version = GoogleUpdateSettings::GetGoogleUpdateVersion( |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
275 | 275 |
276 base::FilePath ChromeCrashReporterClient::GetReporterLogFilename() { | 276 base::FilePath ChromeCrashReporterClient::GetReporterLogFilename() { |
277 return base::FilePath(CrashUploadList::kReporterLogFilename); | 277 return base::FilePath(CrashUploadList::kReporterLogFilename); |
278 } | 278 } |
279 #endif | 279 #endif |
280 | 280 |
281 bool ChromeCrashReporterClient::GetCrashDumpLocation( | 281 bool ChromeCrashReporterClient::GetCrashDumpLocation( |
282 base::FilePath* crash_dir) { | 282 base::FilePath* crash_dir) { |
283 // By setting the BREAKPAD_DUMP_LOCATION environment variable, an alternate | 283 // By setting the BREAKPAD_DUMP_LOCATION environment variable, an alternate |
284 // location to write breakpad crash dumps can be set. | 284 // location to write breakpad crash dumps can be set. |
285 scoped_ptr<base::Environment> env(base::Environment::Create()); | 285 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
286 std::string alternate_crash_dump_location; | 286 std::string alternate_crash_dump_location; |
287 if (env->GetVar("BREAKPAD_DUMP_LOCATION", &alternate_crash_dump_location)) { | 287 if (env->GetVar("BREAKPAD_DUMP_LOCATION", &alternate_crash_dump_location)) { |
288 base::FilePath crash_dumps_dir_path = | 288 base::FilePath crash_dumps_dir_path = |
289 base::FilePath::FromUTF8Unsafe(alternate_crash_dump_location); | 289 base::FilePath::FromUTF8Unsafe(alternate_crash_dump_location); |
290 | 290 |
291 #if defined(OS_WIN) | 291 #if defined(OS_WIN) |
292 // If this environment variable exists, then for the time being, | 292 // If this environment variable exists, then for the time being, |
293 // short-circuit how it's handled on Windows. Honoring this | 293 // short-circuit how it's handled on Windows. Honoring this |
294 // variable is required in order to symbolize stack traces in | 294 // variable is required in order to symbolize stack traces in |
295 // Telemetry based tests: http://crbug.com/561763. | 295 // Telemetry based tests: http://crbug.com/561763. |
(...skipping 11 matching lines...) Expand all Loading... |
307 #else | 307 #else |
308 return PathService::Get(chrome::DIR_CRASH_DUMPS, crash_dir); | 308 return PathService::Get(chrome::DIR_CRASH_DUMPS, crash_dir); |
309 #endif | 309 #endif |
310 } | 310 } |
311 | 311 |
312 size_t ChromeCrashReporterClient::RegisterCrashKeys() { | 312 size_t ChromeCrashReporterClient::RegisterCrashKeys() { |
313 return crash_keys::RegisterChromeCrashKeys(); | 313 return crash_keys::RegisterChromeCrashKeys(); |
314 } | 314 } |
315 | 315 |
316 bool ChromeCrashReporterClient::IsRunningUnattended() { | 316 bool ChromeCrashReporterClient::IsRunningUnattended() { |
317 scoped_ptr<base::Environment> env(base::Environment::Create()); | 317 std::unique_ptr<base::Environment> env(base::Environment::Create()); |
318 return env->HasVar(env_vars::kHeadless); | 318 return env->HasVar(env_vars::kHeadless); |
319 } | 319 } |
320 | 320 |
321 bool ChromeCrashReporterClient::GetCollectStatsConsent() { | 321 bool ChromeCrashReporterClient::GetCollectStatsConsent() { |
322 #if defined(GOOGLE_CHROME_BUILD) | 322 #if defined(GOOGLE_CHROME_BUILD) |
323 bool is_official_chrome_build = true; | 323 bool is_official_chrome_build = true; |
324 #else | 324 #else |
325 bool is_official_chrome_build = false; | 325 bool is_official_chrome_build = false; |
326 #endif | 326 #endif |
327 | 327 |
(...skipping 24 matching lines...) Expand all Loading... |
352 } | 352 } |
353 #endif | 353 #endif |
354 | 354 |
355 bool ChromeCrashReporterClient::EnableBreakpadForProcess( | 355 bool ChromeCrashReporterClient::EnableBreakpadForProcess( |
356 const std::string& process_type) { | 356 const std::string& process_type) { |
357 return process_type == switches::kRendererProcess || | 357 return process_type == switches::kRendererProcess || |
358 process_type == switches::kPpapiPluginProcess || | 358 process_type == switches::kPpapiPluginProcess || |
359 process_type == switches::kZygoteProcess || | 359 process_type == switches::kZygoteProcess || |
360 process_type == switches::kGpuProcess; | 360 process_type == switches::kGpuProcess; |
361 } | 361 } |
OLD | NEW |