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 3 // found in the LICENSE file. 4 5 #include "chrome/browser/sync/glue/chrome_report_unrecoverable_error.h" 6 7 #include "base/rand_util.h" 8 #include "build/build_config.h" 9 10 #if defined(OS_WIN) 11 #include <windows.h> 12 #endif 13 14 #include "chrome/common/chrome_constants.h" 15 16 namespace browser_sync { 17 18 static const double kErrorUploadRatio = 0.0; 19 void ChromeReportUnrecoverableError() { 20 // TODO(lipalani): Add this for other platforms as well. 21 #if defined(OS_WIN) 22 // We only want to upload |kErrorUploadRatio| ratio of errors. 23 if (kErrorUploadRatio <= 0.0) 24 return; // We are not allowed to upload errors. 25 double random_number = base::RandDouble(); 26 if (random_number > kErrorUploadRatio) 27 return; 28 29 // Get the breakpad pointer from chrome.exe 30 typedef void (__cdecl *DumpProcessFunction)(); 31 DumpProcessFunction DumpProcess = reinterpret_cast<DumpProcessFunction>( 32 ::GetProcAddress(::GetModuleHandle( 33 chrome::kBrowserProcessExecutableName), 34 "DumpProcessWithoutCrash")); 35 if (DumpProcess) 36 DumpProcess(); 37 #endif // OS_WIN 38 39 } 40 41 } // namespace browser_sync 42