Index: components/breakpad/app/breakpad_linux.cc |
diff --git a/components/breakpad/app/breakpad_linux.cc b/components/breakpad/app/breakpad_linux.cc |
index 098c3709a87baecf74629d16356241429e253151..b4972cc148fb1330c68ef39ab389c56754cd905c 100644 |
--- a/components/breakpad/app/breakpad_linux.cc |
+++ b/components/breakpad/app/breakpad_linux.cc |
@@ -702,7 +702,27 @@ bool CrashDoneInProcessNoUpload( |
info.pid = g_pid; |
info.crash_keys = g_crash_keys; |
HandleCrashDump(info); |
- return FinalizeCrashDoneAndroid(); |
+ bool finalize_result = FinalizeCrashDoneAndroid(); |
+ base::android::BuildInfo* android_build_info = |
+ base::android::BuildInfo::GetInstance(); |
+ if (android_build_info->sdk_int() >= 18 && |
+ strcmp(android_build_info->build_type(), "eng") != 0 && |
+ strcmp(android_build_info->build_type(), "userdebug") != 0) { |
+ // On JB MR2 and later, the system crash handler displays a dialog. For |
+ // renderer crashes, this is a bad user experience and so this is disabled |
+ // for user builds of Android. |
+ // TODO(cjhopman): There should be some way to recover the crash stack from |
+ // non-uploading user clients. See http://crbug.com/273706. |
+ __android_log_write(ANDROID_LOG_WARN, |
+ kGoogleBreakpad, |
+ "Tombstones are disabled on JB MR2+ user builds."); |
+ __android_log_write(ANDROID_LOG_WARN, |
+ kGoogleBreakpad, |
+ "### ### ### ### ### ### ### ### ### ### ### ### ###"); |
+ return true; |
+ } else { |
+ return finalize_result; |
+ } |
} |
void EnableNonBrowserCrashDumping(const std::string& process_type, |