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

Unified Diff: chrome/browser/chrome_browser_main_linux.cc

Issue 10407058: Compile in Breakpad by default on Linux (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Add #ifdef to chrome/browser/chromeos/login/wizard_controller.cc too Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chrome_browser_main_android.cc ('k') | chrome/browser/chromeos/login/wizard_controller.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chrome_browser_main_linux.cc
diff --git a/chrome/browser/chrome_browser_main_linux.cc b/chrome/browser/chrome_browser_main_linux.cc
index 2bf9e3a8c3cc37cf4ef27ca3d03bd0f39a46c7ca..ac48ad27f06ef9eb61c4221c029a7189a88e9988 100644
--- a/chrome/browser/chrome_browser_main_linux.cc
+++ b/chrome/browser/chrome_browser_main_linux.cc
@@ -43,31 +43,60 @@ bool IsCrashReportingEnabled(const PrefService* local_state) {
// Check whether we should initialize the crash reporter. It may be disabled
// through configuration policy or user preference. It must be disabled for
// Guest mode on Chrome OS in Stable channel.
- // The kHeadless environment variable overrides the decision, but only if the
- // crash service is under control of the user. It is used by QA testing
- // infrastructure to switch on generation of crash reports.
+ // Environment variables may override the decision, but only if the
+ // crash service is under control of the user. It is used by QA
+ // testing infrastructure to switch on generation of crash reports.
+ bool use_env_var = true;
+
+ // Convert #define to a variable so that we can use if() rather than
+ // #if below and so at least compile-test the Chrome code in
+ // Chromium builds.
+#if defined(GOOGLE_CHROME_BUILD)
+ bool is_chrome_build = true;
+#else
+ bool is_chrome_build = false;
+#endif
+
+ // Check these settings in Chrome builds only, to reduce the chance
+ // that we accidentally upload crash dumps from Chromium builds.
+ bool breakpad_enabled = false;
+ if (is_chrome_build) {
#if defined(OS_CHROMEOS)
- bool is_guest_session =
- CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession);
- bool is_stable_channel =
- chrome::VersionInfo::GetChannel() == chrome::VersionInfo::CHANNEL_STABLE;
- // TODO(pastarmovj): Consider the TrustedGet here.
- bool reporting_enabled;
- chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref,
- &reporting_enabled);
- bool breakpad_enabled =
- !(is_guest_session && is_stable_channel) && reporting_enabled;
- if (!breakpad_enabled)
- breakpad_enabled = getenv(env_vars::kHeadless) != NULL;
+ bool is_guest_session =
+ CommandLine::ForCurrentProcess()->HasSwitch(switches::kGuestSession);
+ bool is_stable_channel =
+ chrome::VersionInfo::GetChannel() ==
+ chrome::VersionInfo::CHANNEL_STABLE;
+ // TODO(pastarmovj): Consider the TrustedGet here.
+ bool reporting_enabled;
+ chromeos::CrosSettings::Get()->GetBoolean(chromeos::kStatsReportingPref,
+ &reporting_enabled);
+ breakpad_enabled =
+ !(is_guest_session && is_stable_channel) && reporting_enabled;
#else
- const PrefService::Preference* metrics_reporting_enabled =
- local_state->FindPreference(prefs::kMetricsReportingEnabled);
- CHECK(metrics_reporting_enabled);
- bool breakpad_enabled =
- local_state->GetBoolean(prefs::kMetricsReportingEnabled);
- if (!breakpad_enabled && metrics_reporting_enabled->IsUserModifiable())
- breakpad_enabled = getenv(env_vars::kHeadless) != NULL;
+ const PrefService::Preference* metrics_reporting_enabled =
+ local_state->FindPreference(prefs::kMetricsReportingEnabled);
+ CHECK(metrics_reporting_enabled);
+ breakpad_enabled = local_state->GetBoolean(prefs::kMetricsReportingEnabled);
+ use_env_var = metrics_reporting_enabled->IsUserModifiable();
#endif // defined(OS_CHROMEOS)
+ }
+
+ if (use_env_var) {
+ // Linux Breakpad interferes with the debug stack traces produced
+ // by EnableInProcessStackDumping(), used in browser_tests, so we
+ // do not allow CHROME_HEADLESS=1 to enable Breakpad in Chromium
+ // because the buildbots have CHROME_HEADLESS set. However, we
+ // allow CHROME_HEADLESS to enable Breakpad in Chrome for
+ // compatibility with Breakpad/Chrome tests that may rely on this.
+ // TODO(mseaborn): Change tests to use CHROME_ENABLE_BREAKPAD
+ // instead.
+ if (is_chrome_build && !breakpad_enabled)
+ breakpad_enabled = getenv(env_vars::kHeadless) != NULL;
+ if (!breakpad_enabled)
+ breakpad_enabled = getenv(env_vars::kEnableBreakpad) != NULL;
+ }
+
return breakpad_enabled;
}
#endif // defined(USE_LINUX_BREAKPAD)
« no previous file with comments | « chrome/browser/chrome_browser_main_android.cc ('k') | chrome/browser/chromeos/login/wizard_controller.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698