Index: chrome/app/chrome_crash_reporter_client_win.cc |
diff --git a/chrome/app/chrome_crash_reporter_client_win.cc b/chrome/app/chrome_crash_reporter_client_win.cc |
index 42e2093efa73d2506a45a87d0b89b2b4cc974dc0..6cd77d62cb9bd13497d0ffc52ee761cc416d05ce 100644 |
--- a/chrome/app/chrome_crash_reporter_client_win.cc |
+++ b/chrome/app/chrome_crash_reporter_client_win.cc |
@@ -8,198 +8,18 @@ |
#include <assert.h> |
#include <windows.h> |
-#include <shellapi.h> |
+ |
#include <memory> |
#include <string> |
-#include "base/command_line.h" |
-#include "base/debug/crash_logging.h" |
-#include "base/debug/leak_annotations.h" |
-#include "base/format_macros.h" |
+#include "build/build_config.h" |
#include "chrome/common/chrome_result_codes.h" |
+#include "chrome/common/crash_keys.h" |
#include "chrome/install_static/install_util.h" |
-#include "components/crash/content/app/crashpad.h" |
-#include "components/crash/core/common/crash_keys.h" |
- |
-namespace { |
- |
-// TODO(ananta) |
-// When the new crash key map implementation lands, we should remove the |
-// constants defined below, the RegisterCrashKeysHelper function, the |
-// RegisterCrashKeys function in the crash_keys::CrashReporterClient interface |
-// and the snprintf function defined here. |
-constexpr char kActiveURL[] = "url-chunk"; |
-constexpr char kFontKeyName[] = "font_key_name"; |
- |
-// Installed extensions. |kExtensionID| should be formatted with an integer, |
-// in the range [0, kExtensionIDMaxCount). |
-constexpr char kNumExtensionsCount[] = "num-extensions"; |
-constexpr size_t kExtensionIDMaxCount = 10; |
-constexpr char kExtensionID[] = "extension-%" PRIuS; |
- |
-constexpr char kShutdownType[] = "shutdown-type"; |
- |
-constexpr char kGPUVendorID[] = "gpu-venid"; |
-constexpr char kGPUDeviceID[] = "gpu-devid"; |
-constexpr char kGPUDriverVersion[] = "gpu-driver"; |
-constexpr char kGPUPixelShaderVersion[] = "gpu-psver"; |
-constexpr char kGPUVertexShaderVersion[] = "gpu-vsver"; |
- |
-constexpr char kHungAudioThreadDetails[] = "hung-audio-thread-details"; |
- |
-constexpr char kViewCount[] = "view-count"; |
-constexpr char kZeroEncodeDetails[] = "zero-encode-details"; |
- |
-// The user's printers, up to kPrinterInfoCount. Should be set with |
-// ScopedPrinterInfo. |
-constexpr size_t kPrinterInfoCount = 4; |
-constexpr char kPrinterInfo[] = "prn-info-%" PRIuS; |
- |
-using namespace crash_keys; |
- |
-int snprintf(char* buffer, |
- size_t size, |
- _Printf_format_string_ const char* format, |
- ...) { |
- va_list arguments; |
- va_start(arguments, format); |
- int result = vsnprintf(buffer, size, format, arguments); |
- va_end(arguments); |
- return result; |
-} |
- |
-size_t RegisterCrashKeysHelper() { |
- // The following keys may be chunked by the underlying crash logging system, |
- // but ultimately constitute a single key-value pair. |
- // |
- // If you're adding keys here, please also add them to the list in |
- // //blimp/engine/app/blimp_engine_crash_keys.cc |
- constexpr base::debug::CrashKey fixed_keys[] = { |
- {kMetricsClientId, kSmallSize}, |
- {kChannel, kSmallSize}, |
- {kActiveURL, kLargeSize}, |
- {kNumVariations, kSmallSize}, |
- {kVariations, kLargeSize}, |
- {kNumExtensionsCount, kSmallSize}, |
- {kShutdownType, kSmallSize}, |
- {kGPUVendorID, kSmallSize}, |
- {kGPUDeviceID, kSmallSize}, |
- {kGPUDriverVersion, kSmallSize}, |
- {kGPUPixelShaderVersion, kSmallSize}, |
- {kGPUVertexShaderVersion, kSmallSize}, |
- |
- // content/: |
- {"discardable-memory-allocated", kSmallSize}, |
- {"discardable-memory-free", kSmallSize}, |
- {kFontKeyName, kSmallSize}, |
- {"ppapi_path", kMediumSize}, |
- {"subresource_url", kLargeSize}, |
- {"total-discardable-memory-allocated", kSmallSize}, |
- {kBug464926CrashKey, kSmallSize}, |
- {kViewCount, kSmallSize}, |
- |
- // media/: |
- {kHungAudioThreadDetails, kSmallSize}, |
- {kZeroEncodeDetails, kSmallSize}, |
- |
- // Temporary for http://crbug.com/575245. |
- {"swapout_frame_id", kSmallSize}, |
- {"swapout_proxy_id", kSmallSize}, |
- {"swapout_view_id", kSmallSize}, |
- {"commit_frame_id", kSmallSize}, |
- {"commit_proxy_id", kSmallSize}, |
- {"commit_view_id", kSmallSize}, |
- {"commit_main_render_frame_id", kSmallSize}, |
- {"newproxy_proxy_id", kSmallSize}, |
- {"newproxy_view_id", kSmallSize}, |
- {"newproxy_opener_id", kSmallSize}, |
- {"newproxy_parent_id", kSmallSize}, |
- {"rvinit_view_id", kSmallSize}, |
- {"rvinit_proxy_id", kSmallSize}, |
- {"rvinit_main_frame_id", kSmallSize}, |
- {"initrf_frame_id", kSmallSize}, |
- {"initrf_proxy_id", kSmallSize}, |
- {"initrf_view_id", kSmallSize}, |
- {"initrf_main_frame_id", kSmallSize}, |
- {"initrf_view_is_live", kSmallSize}, |
- |
- // Temporary for https://crbug.com/591478. |
- {"initrf_parent_proxy_exists", kSmallSize}, |
- {"initrf_render_view_is_live", kSmallSize}, |
- {"initrf_parent_is_in_same_site_instance", kSmallSize}, |
- {"initrf_parent_process_is_live", kSmallSize}, |
- {"initrf_root_is_in_same_site_instance", kSmallSize}, |
- {"initrf_root_is_in_same_site_instance_as_parent", kSmallSize}, |
- {"initrf_root_process_is_live", kSmallSize}, |
- {"initrf_root_proxy_is_live", kSmallSize}, |
- |
- // Temporary for https://crbug.com/612711. |
- {"aci_wrong_sp_extension_id", kSmallSize}, |
- |
- // Temporary for https://crbug.com/616149. |
- {"existing_extension_pref_value_type", crash_keys::kSmallSize}, |
- }; |
- |
- // This dynamic set of keys is used for sets of key value pairs when gathering |
- // a collection of data, like command line switches or extension IDs. |
- std::vector<base::debug::CrashKey> keys(fixed_keys, |
- fixed_keys + arraysize(fixed_keys)); |
- |
- crash_keys::GetCrashKeysForCommandLineSwitches(&keys); |
- |
- // Register the extension IDs. |
- { |
- static char formatted_keys[kExtensionIDMaxCount] |
- [sizeof(kExtensionID) + 1] = {{0}}; |
- const size_t formatted_key_len = sizeof(formatted_keys[0]); |
- for (size_t i = 0; i < kExtensionIDMaxCount; ++i) { |
- snprintf(formatted_keys[i], formatted_key_len, kExtensionID, i + 1); |
- base::debug::CrashKey crash_key = {formatted_keys[i], kSmallSize}; |
- keys.push_back(crash_key); |
- } |
- } |
- |
- // Register the printer info. |
- { |
- static char formatted_keys[kPrinterInfoCount] |
- [sizeof(kPrinterInfo) + 1] = {{0}}; |
- const size_t formatted_key_len = sizeof(formatted_keys[0]); |
- for (size_t i = 0; i < kPrinterInfoCount; ++i) { |
- // Key names are 1-indexed. |
- snprintf(formatted_keys[i], formatted_key_len, kPrinterInfo, i + 1); |
- base::debug::CrashKey crash_key = {formatted_keys[i], kSmallSize}; |
- keys.push_back(crash_key); |
- } |
- } |
- |
- return base::debug::InitCrashKeys(&keys[0], keys.size(), kChunkMaxLength); |
-} |
- |
-} // namespace |
ChromeCrashReporterClient::ChromeCrashReporterClient() {} |
ChromeCrashReporterClient::~ChromeCrashReporterClient() {} |
- |
-#if !defined(NACL_WIN64) |
-// static |
-void ChromeCrashReporterClient::InitializeCrashReportingForProcess() { |
- static ChromeCrashReporterClient* instance = nullptr; |
- if (instance) |
- return; |
- |
- instance = new ChromeCrashReporterClient(); |
- ANNOTATE_LEAKING_OBJECT_PTR(instance); |
- |
- std::string process_type = install_static::GetSwitchValueFromCommandLine( |
- ::GetCommandLineA(), install_static::kProcessType); |
- if (process_type != install_static::kCrashpadHandler) { |
- crash_reporter::SetCrashReporterClient(instance); |
- crash_reporter::InitializeCrashpadWithEmbeddedHandler(process_type.empty(), |
- process_type); |
- } |
-} |
-#endif // NACL_WIN64 |
bool ChromeCrashReporterClient::GetAlternativeCrashDumpLocation( |
base::string16* crash_dir) { |
@@ -317,11 +137,8 @@ |
return install_static::GetDefaultCrashDumpLocation(crash_dir); |
} |
-// TODO(ananta) |
-// This function should be removed when the new crash key map implementation |
-// lands. |
size_t ChromeCrashReporterClient::RegisterCrashKeys() { |
- return RegisterCrashKeysHelper(); |
+ return crash_keys::RegisterChromeCrashKeys(); |
} |
bool ChromeCrashReporterClient::IsRunningUnattended() { |