Index: chrome/app/kasko_client.cc |
diff --git a/chrome/app/kasko_client.cc b/chrome/app/kasko_client.cc |
deleted file mode 100644 |
index ab44bac49bf1af50cf8744b71eecca5d8ef01f10..0000000000000000000000000000000000000000 |
--- a/chrome/app/kasko_client.cc |
+++ /dev/null |
@@ -1,119 +0,0 @@ |
-// Copyright 2015 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
- |
-#include "chrome/app/kasko_client.h" |
- |
-#if BUILDFLAG(ENABLE_KASKO) |
- |
-#include <windows.h> |
-#include <stddef.h> |
- |
-#include <string> |
-#include <vector> |
- |
-#include "base/lazy_instance.h" |
-#include "base/logging.h" |
-#include "base/process/process_handle.h" |
-#include "chrome/app/chrome_watcher_client_win.h" |
-#include "chrome/chrome_watcher/chrome_watcher_main_api.h" |
-#include "chrome/common/chrome_constants.h" |
-#include "components/crash/content/app/crashpad.h" |
-#include "syzygy/kasko/api/client.h" |
- |
-namespace { |
- |
-ChromeWatcherClient* g_chrome_watcher_client = nullptr; |
-kasko::api::MinidumpType g_minidump_type = kasko::api::SMALL_DUMP_TYPE; |
- |
-base::LazyInstance<std::vector<kasko::api::CrashKey>>::Leaky |
- g_kasko_crash_keys = LAZY_INSTANCE_INITIALIZER; |
- |
-void GetKaskoCrashKeys(const kasko::api::CrashKey** crash_keys, |
- size_t* crash_key_count) { |
- crash_reporter::GetCrashKeysForKasko(g_kasko_crash_keys.Pointer()); |
- *crash_key_count = g_kasko_crash_keys.Pointer()->size(); |
- *crash_keys = g_kasko_crash_keys.Pointer()->data(); |
-} |
- |
-} // namespace |
- |
-KaskoClient::KaskoClient(ChromeWatcherClient* chrome_watcher_client, |
- kasko::api::MinidumpType minidump_type) { |
- DCHECK(!g_chrome_watcher_client); |
- g_minidump_type = minidump_type; |
- g_chrome_watcher_client = chrome_watcher_client; |
- |
- kasko::api::InitializeClient( |
- GetKaskoEndpoint(base::GetCurrentProcId()).c_str()); |
- |
- // Register the crash keys so that they will be available whether a crash |
- // report is triggered directly by the browser process or requested by the |
- // Chrome Watcher process. |
- size_t crash_key_count = 0; |
- const kasko::api::CrashKey* crash_keys = nullptr; |
- GetKaskoCrashKeys(&crash_keys, &crash_key_count); |
- kasko::api::RegisterCrashKeys(crash_keys, crash_key_count); |
-} |
- |
-KaskoClient::~KaskoClient() { |
- DCHECK(g_chrome_watcher_client); |
- g_chrome_watcher_client = nullptr; |
- kasko::api::ShutdownClient(); |
-} |
- |
-// Sends a diagnostic report for the current process, then terminates it. |
-// |info| is an optional exception record describing an exception on the current |
-// thread. |
-// |protobuf| is an optional buffer of length |protobuf_length|. |
-// |base_addresses| and |lengths| are optional null-terminated arrays of the |
-// same length. For each entry in |base_addresses|, a memory range starting at |
-// the specified address and having the length specified in the corresponding |
-// entry in |lengths| will be explicitly included in the report. |
-extern "C" void __declspec(dllexport) |
- ReportCrashWithProtobufAndMemoryRanges(EXCEPTION_POINTERS* info, |
- const char* protobuf, |
- size_t protobuf_length, |
- const void* const* base_addresses, |
- const size_t* lengths) { |
- if (g_chrome_watcher_client && g_chrome_watcher_client->EnsureInitialized()) { |
- size_t crash_key_count = 0; |
- const kasko::api::CrashKey* crash_keys = nullptr; |
- GetKaskoCrashKeys(&crash_keys, &crash_key_count); |
- std::vector<kasko::api::MemoryRange> memory_ranges; |
- if (base_addresses && lengths) { |
- for (int i = 0; base_addresses[i] != nullptr && lengths[i] != 0; ++i) { |
- kasko::api::MemoryRange memory_range = {base_addresses[i], lengths[i]}; |
- memory_ranges.push_back(memory_range); |
- } |
- } |
- kasko::api::SendReport(info, g_minidump_type, protobuf, protobuf_length, |
- crash_keys, crash_key_count, |
- memory_ranges.size() ? &memory_ranges[0] : nullptr, |
- memory_ranges.size()); |
- } |
- |
- // The Breakpad integration hooks TerminateProcess. Sidestep it to avoid a |
- // secondary report. Crashpad, on the other hand, does not hook |
- // TerminateProcess so it can be safely invoked. |
- // TODO(chrisha): When Breakpad is completely ripped out make this Crashpad |
- // specific. |
- using TerminateProcessWithoutDumpProc = void(__cdecl*)(); |
- TerminateProcessWithoutDumpProc terminate_process_without_dump = |
- reinterpret_cast<TerminateProcessWithoutDumpProc>(::GetProcAddress( |
- ::GetModuleHandle(chrome::kBrowserProcessExecutableName), |
- "TerminateProcessWithoutDump")); |
- if (terminate_process_without_dump) |
- terminate_process_without_dump(); |
- else |
- ::TerminateProcess(::GetCurrentProcess(), 0); |
-} |
- |
-extern "C" void __declspec(dllexport) ReportCrashWithProtobuf( |
- EXCEPTION_POINTERS* info, const char* protobuf, size_t protobuf_length) { |
- ReportCrashWithProtobufAndMemoryRanges(info, protobuf, protobuf_length, |
- nullptr, nullptr); |
-} |
- |
-#endif // BUILDFLAG(ENABLE_KASKO) |