OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/crash/app/breakpad_win.h" | 5 #include "components/crash/app/breakpad_win.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <shellapi.h> | 8 #include <shellapi.h> |
9 #include <tchar.h> | 9 #include <tchar.h> |
10 #include <userenv.h> | 10 #include <userenv.h> |
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 GetCrashReporterClient()->GetIsPerUserInstall(base::FilePath(exe_path)); | 534 GetCrashReporterClient()->GetIsPerUserInstall(base::FilePath(exe_path)); |
535 | 535 |
536 // This is intentionally leaked. | 536 // This is intentionally leaked. |
537 CrashKeysWin* keeper = new CrashKeysWin(); | 537 CrashKeysWin* keeper = new CrashKeysWin(); |
538 | 538 |
539 google_breakpad::CustomClientInfo* custom_info = | 539 google_breakpad::CustomClientInfo* custom_info = |
540 keeper->GetCustomInfo(exe_path, process_type, GetProfileType(), | 540 keeper->GetCustomInfo(exe_path, process_type, GetProfileType(), |
541 base::CommandLine::ForCurrentProcess(), | 541 base::CommandLine::ForCurrentProcess(), |
542 GetCrashReporterClient()); | 542 GetCrashReporterClient()); |
543 | 543 |
544 #if !defined(COMPONENT_BUILD) | |
545 // chrome/common/child_process_logging_win.cc registers crash keys for | |
546 // chrome.dll. In a component build, that is sufficient as chrome.dll and | |
547 // chrome.exe share a copy of base (in base.dll). | |
548 // In a static build, the EXE must separately initialize the crash keys | |
549 // configuration as it has its own statically linked copy of base. | |
550 base::debug::SetCrashKeyReportingFunctions(&SetCrashKeyValueForBaseDebug, | 544 base::debug::SetCrashKeyReportingFunctions(&SetCrashKeyValueForBaseDebug, |
551 &ClearCrashKeyForBaseDebug); | 545 &ClearCrashKeyForBaseDebug); |
552 GetCrashReporterClient()->RegisterCrashKeys(); | |
553 #endif | |
554 | 546 |
555 google_breakpad::ExceptionHandler::MinidumpCallback callback = NULL; | 547 google_breakpad::ExceptionHandler::MinidumpCallback callback = NULL; |
556 LPTOP_LEVEL_EXCEPTION_FILTER default_filter = NULL; | 548 LPTOP_LEVEL_EXCEPTION_FILTER default_filter = NULL; |
557 // We install the post-dump callback only for the browser and service | 549 // We install the post-dump callback only for the browser and service |
558 // processes. It spawns a new browser/service process. | 550 // processes. It spawns a new browser/service process. |
559 if (process_type == L"browser") { | 551 if (process_type == L"browser") { |
560 callback = &DumpDoneCallback; | 552 callback = &DumpDoneCallback; |
561 default_filter = &ChromeExceptionFilter; | 553 default_filter = &ChromeExceptionFilter; |
562 } else if (process_type == L"service") { | 554 } else if (process_type == L"service") { |
563 callback = &DumpDoneCallback; | 555 callback = &DumpDoneCallback; |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
724 extern "C" void __declspec(dllexport) __cdecl | 716 extern "C" void __declspec(dllexport) __cdecl |
725 UnregisterNonABICompliantCodeRange(void* start) { | 717 UnregisterNonABICompliantCodeRange(void* start) { |
726 ExceptionHandlerRecord* record = | 718 ExceptionHandlerRecord* record = |
727 reinterpret_cast<ExceptionHandlerRecord*>(start); | 719 reinterpret_cast<ExceptionHandlerRecord*>(start); |
728 | 720 |
729 CHECK(RtlDeleteFunctionTable(&record->runtime_function)); | 721 CHECK(RtlDeleteFunctionTable(&record->runtime_function)); |
730 } | 722 } |
731 #endif | 723 #endif |
732 | 724 |
733 } // namespace breakpad | 725 } // namespace breakpad |
OLD | NEW |