| Index: chrome/app/chrome_crash_reporter_client.cc
|
| diff --git a/chrome/app/chrome_crash_reporter_client.cc b/chrome/app/chrome_crash_reporter_client.cc
|
| index 849e57563d7f7931d6637f2dc20d5a8fae034154..b113ba1b7d631b96ea2bd364c6edc410dcd1916d 100644
|
| --- a/chrome/app/chrome_crash_reporter_client.cc
|
| +++ b/chrome/app/chrome_crash_reporter_client.cc
|
| @@ -20,19 +20,6 @@
|
| #include "chrome/installer/util/google_update_settings.h"
|
| #include "content/public/common/content_switches.h"
|
|
|
| -#if defined(OS_WIN)
|
| -#include <windows.h>
|
| -
|
| -#include "base/file_version_info.h"
|
| -#include "base/win/registry.h"
|
| -#include "chrome/common/metrics_constants_util_win.h"
|
| -#include "chrome/installer/util/google_chrome_sxs_distribution.h"
|
| -#include "chrome/installer/util/install_util.h"
|
| -#include "chrome/installer/util/util_constants.h"
|
| -#include "components/browser_watcher/crash_reporting_metrics_win.h"
|
| -#include "policy/policy_constants.h"
|
| -#endif
|
| -
|
| #if defined(OS_POSIX) && !defined(OS_MACOSX)
|
| #include "components/upload_list/crash_upload_list.h"
|
| #include "components/version_info/version_info_values.h"
|
| @@ -52,206 +39,17 @@
|
| #include "components/version_info/version_info.h"
|
| #endif
|
|
|
| -namespace {
|
| -
|
| -#if defined(OS_WIN)
|
| -// This is the minimum version of google update that is required for deferred
|
| -// crash uploads to work.
|
| -const char kMinUpdateVersion[] = "1.3.21.115";
|
| -#endif
|
| -
|
| -} // namespace
|
| -
|
| ChromeCrashReporterClient::ChromeCrashReporterClient() {}
|
|
|
| ChromeCrashReporterClient::~ChromeCrashReporterClient() {}
|
|
|
| -#if !defined(OS_MACOSX) && !defined(OS_WIN)
|
| +#if !defined(OS_MACOSX)
|
| void ChromeCrashReporterClient::SetCrashReporterClientIdFromGUID(
|
| const std::string& client_guid) {
|
| crash_keys::SetMetricsClientIdFromGUID(client_guid);
|
| }
|
| #endif
|
|
|
| -#if defined(OS_WIN)
|
| -bool ChromeCrashReporterClient::GetAlternativeCrashDumpLocation(
|
| - base::FilePath* crash_dir) {
|
| - // By setting the BREAKPAD_DUMP_LOCATION environment variable, an alternate
|
| - // location to write breakpad crash dumps can be set.
|
| - std::unique_ptr<base::Environment> env(base::Environment::Create());
|
| - std::string alternate_crash_dump_location;
|
| - if (env->GetVar("BREAKPAD_DUMP_LOCATION", &alternate_crash_dump_location)) {
|
| - *crash_dir = base::FilePath::FromUTF8Unsafe(alternate_crash_dump_location);
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -
|
| -void ChromeCrashReporterClient::GetProductNameAndVersion(
|
| - const base::FilePath& exe_path,
|
| - base::string16* product_name,
|
| - base::string16* version,
|
| - base::string16* special_build,
|
| - base::string16* channel_name) {
|
| - DCHECK(product_name);
|
| - DCHECK(version);
|
| - DCHECK(special_build);
|
| - DCHECK(channel_name);
|
| -
|
| - std::unique_ptr<FileVersionInfo> version_info(
|
| - FileVersionInfo::CreateFileVersionInfo(exe_path));
|
| -
|
| - if (version_info.get()) {
|
| - // Get the information from the file.
|
| - *version = version_info->product_version();
|
| - if (!version_info->is_official_build())
|
| - version->append(base::ASCIIToUTF16("-devel"));
|
| -
|
| - *product_name = version_info->product_short_name();
|
| - *special_build = version_info->special_build();
|
| - } else {
|
| - // No version info found. Make up the values.
|
| - *product_name = base::ASCIIToUTF16("Chrome");
|
| - *version = base::ASCIIToUTF16("0.0.0.0-devel");
|
| - }
|
| -
|
| - GoogleUpdateSettings::GetChromeChannelAndModifiers(
|
| - !GetIsPerUserInstall(exe_path), channel_name);
|
| -}
|
| -
|
| -bool ChromeCrashReporterClient::ShouldShowRestartDialog(base::string16* title,
|
| - base::string16* message,
|
| - bool* is_rtl_locale) {
|
| - std::unique_ptr<base::Environment> env(base::Environment::Create());
|
| - if (!env->HasVar(env_vars::kShowRestart) ||
|
| - !env->HasVar(env_vars::kRestartInfo) ||
|
| - env->HasVar(env_vars::kMetroConnected)) {
|
| - return false;
|
| - }
|
| -
|
| - std::string restart_info;
|
| - env->GetVar(env_vars::kRestartInfo, &restart_info);
|
| -
|
| - // The CHROME_RESTART var contains the dialog strings separated by '|'.
|
| - // See ChromeBrowserMainPartsWin::PrepareRestartOnCrashEnviroment()
|
| - // for details.
|
| - std::vector<std::string> dlg_strings = base::SplitString(
|
| - restart_info, "|", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
|
| -
|
| - if (dlg_strings.size() < 3)
|
| - return false;
|
| -
|
| - *title = base::UTF8ToUTF16(dlg_strings[0]);
|
| - *message = base::UTF8ToUTF16(dlg_strings[1]);
|
| - *is_rtl_locale = dlg_strings[2] == env_vars::kRtlLocale;
|
| - return true;
|
| -}
|
| -
|
| -bool ChromeCrashReporterClient::AboutToRestart() {
|
| - std::unique_ptr<base::Environment> env(base::Environment::Create());
|
| - if (!env->HasVar(env_vars::kRestartInfo))
|
| - return false;
|
| -
|
| - env->SetVar(env_vars::kShowRestart, "1");
|
| - return true;
|
| -}
|
| -
|
| -bool ChromeCrashReporterClient::GetDeferredUploadsSupported(
|
| - bool is_per_user_install) {
|
| - Version update_version = GoogleUpdateSettings::GetGoogleUpdateVersion(
|
| - !is_per_user_install);
|
| - if (!update_version.IsValid() ||
|
| - update_version < base::Version(kMinUpdateVersion))
|
| - return false;
|
| -
|
| - return true;
|
| -}
|
| -
|
| -bool ChromeCrashReporterClient::GetIsPerUserInstall(
|
| - const base::FilePath& exe_path) {
|
| - return InstallUtil::IsPerUserInstall(exe_path);
|
| -}
|
| -
|
| -bool ChromeCrashReporterClient::GetShouldDumpLargerDumps(
|
| - bool is_per_user_install) {
|
| - base::string16 channel_name =
|
| - GoogleUpdateSettings::GetChromeChannel(!is_per_user_install);
|
| -
|
| - // Capture more detail in crash dumps for Beta, Dev, Canary channels and
|
| - // if channel is unknown (e.g. Chromium or developer builds).
|
| - return (channel_name == installer::kChromeChannelBeta ||
|
| - channel_name == installer::kChromeChannelDev ||
|
| - channel_name == GoogleChromeSxSDistribution::ChannelName() ||
|
| - channel_name == installer::kChromeChannelUnknown);
|
| -}
|
| -
|
| -int ChromeCrashReporterClient::GetResultCodeRespawnFailed() {
|
| - return chrome::RESULT_CODE_RESPAWN_FAILED;
|
| -}
|
| -
|
| -void ChromeCrashReporterClient::InitBrowserCrashDumpsRegKey() {
|
| -#if !defined(NACL_WIN64)
|
| - if (GetCollectStatsConsent()){
|
| - crash_reporting_metrics_.reset(new browser_watcher::CrashReportingMetrics(
|
| - chrome::GetBrowserCrashDumpAttemptsRegistryPath()));
|
| - }
|
| -#endif
|
| -}
|
| -
|
| -void ChromeCrashReporterClient::RecordCrashDumpAttempt(bool is_real_crash) {
|
| -#if !defined(NACL_WIN64)
|
| - if (!crash_reporting_metrics_)
|
| - return;
|
| -
|
| - if (is_real_crash)
|
| - crash_reporting_metrics_->RecordCrashDumpAttempt();
|
| - else
|
| - crash_reporting_metrics_->RecordDumpWithoutCrashAttempt();
|
| -#endif
|
| -}
|
| -
|
| -void ChromeCrashReporterClient::RecordCrashDumpAttemptResult(bool is_real_crash,
|
| - bool succeeded) {
|
| -#if !defined(NACL_WIN64)
|
| - if (!crash_reporting_metrics_)
|
| - return;
|
| -
|
| - if (is_real_crash)
|
| - crash_reporting_metrics_->RecordCrashDumpAttemptResult(succeeded);
|
| - else
|
| - crash_reporting_metrics_->RecordDumpWithoutCrashAttemptResult(succeeded);
|
| -#endif
|
| -}
|
| -
|
| -bool ChromeCrashReporterClient::ReportingIsEnforcedByPolicy(
|
| - bool* breakpad_enabled) {
|
| -// Determine whether configuration management allows loading the crash reporter.
|
| -// Since the configuration management infrastructure is not initialized at this
|
| -// point, we read the corresponding registry key directly. The return status
|
| -// indicates whether policy data was successfully read. If it is true,
|
| -// |breakpad_enabled| contains the value set by policy.
|
| - base::string16 key_name =
|
| - base::UTF8ToUTF16(policy::key::kMetricsReportingEnabled);
|
| - DWORD value = 0;
|
| - base::win::RegKey hklm_policy_key(HKEY_LOCAL_MACHINE,
|
| - policy::kRegistryChromePolicyKey, KEY_READ);
|
| - if (hklm_policy_key.ReadValueDW(key_name.c_str(), &value) == ERROR_SUCCESS) {
|
| - *breakpad_enabled = value != 0;
|
| - return true;
|
| - }
|
| -
|
| - base::win::RegKey hkcu_policy_key(HKEY_CURRENT_USER,
|
| - policy::kRegistryChromePolicyKey, KEY_READ);
|
| - if (hkcu_policy_key.ReadValueDW(key_name.c_str(), &value) == ERROR_SUCCESS) {
|
| - *breakpad_enabled = value != 0;
|
| - return true;
|
| - }
|
| -
|
| - return false;
|
| -}
|
| -#endif // defined(OS_WIN)
|
| -
|
| #if defined(OS_POSIX) && !defined(OS_MACOSX)
|
| void ChromeCrashReporterClient::GetProductNameAndVersion(
|
| const char** product_name,
|
| @@ -287,26 +85,9 @@ bool ChromeCrashReporterClient::GetCrashDumpLocation(
|
| if (env->GetVar("BREAKPAD_DUMP_LOCATION", &alternate_crash_dump_location)) {
|
| base::FilePath crash_dumps_dir_path =
|
| base::FilePath::FromUTF8Unsafe(alternate_crash_dump_location);
|
| -
|
| -#if defined(OS_WIN)
|
| - // If this environment variable exists, then for the time being,
|
| - // short-circuit how it's handled on Windows. Honoring this
|
| - // variable is required in order to symbolize stack traces in
|
| - // Telemetry based tests: http://crbug.com/561763.
|
| - *crash_dir = crash_dumps_dir_path;
|
| - return true;
|
| -#else
|
| PathService::Override(chrome::DIR_CRASH_DUMPS, crash_dumps_dir_path);
|
| -#endif
|
| }
|
| -
|
| -#if defined(OS_WIN)
|
| - // TODO(scottmg): Consider supporting --user-data-dir. See
|
| - // https://crbug.com/565446.
|
| - return chrome::GetDefaultCrashDumpLocation(crash_dir);
|
| -#else
|
| return PathService::Get(chrome::DIR_CRASH_DUMPS, crash_dir);
|
| -#endif
|
| }
|
|
|
| size_t ChromeCrashReporterClient::RegisterCrashKeys() {
|
|
|