xref: /aosp_15_r20/external/libchrome/base/debug/crash_logging.cc (revision 635a864187cb8b6c713ff48b7e790a6b21769273)
1*635a8641SAndroid Build Coastguard Worker // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker 
5*635a8641SAndroid Build Coastguard Worker #include "base/debug/crash_logging.h"
6*635a8641SAndroid Build Coastguard Worker 
7*635a8641SAndroid Build Coastguard Worker namespace base {
8*635a8641SAndroid Build Coastguard Worker namespace debug {
9*635a8641SAndroid Build Coastguard Worker 
10*635a8641SAndroid Build Coastguard Worker namespace {
11*635a8641SAndroid Build Coastguard Worker 
12*635a8641SAndroid Build Coastguard Worker CrashKeyImplementation* g_crash_key_impl = nullptr;
13*635a8641SAndroid Build Coastguard Worker 
14*635a8641SAndroid Build Coastguard Worker }  // namespace
15*635a8641SAndroid Build Coastguard Worker 
AllocateCrashKeyString(const char name[],CrashKeySize value_length)16*635a8641SAndroid Build Coastguard Worker CrashKeyString* AllocateCrashKeyString(const char name[],
17*635a8641SAndroid Build Coastguard Worker                                        CrashKeySize value_length) {
18*635a8641SAndroid Build Coastguard Worker   if (!g_crash_key_impl)
19*635a8641SAndroid Build Coastguard Worker     return nullptr;
20*635a8641SAndroid Build Coastguard Worker 
21*635a8641SAndroid Build Coastguard Worker   return g_crash_key_impl->Allocate(name, value_length);
22*635a8641SAndroid Build Coastguard Worker }
23*635a8641SAndroid Build Coastguard Worker 
SetCrashKeyString(CrashKeyString * crash_key,base::StringPiece value)24*635a8641SAndroid Build Coastguard Worker void SetCrashKeyString(CrashKeyString* crash_key, base::StringPiece value) {
25*635a8641SAndroid Build Coastguard Worker   if (!g_crash_key_impl || !crash_key)
26*635a8641SAndroid Build Coastguard Worker     return;
27*635a8641SAndroid Build Coastguard Worker 
28*635a8641SAndroid Build Coastguard Worker   g_crash_key_impl->Set(crash_key, value);
29*635a8641SAndroid Build Coastguard Worker }
30*635a8641SAndroid Build Coastguard Worker 
ClearCrashKeyString(CrashKeyString * crash_key)31*635a8641SAndroid Build Coastguard Worker void ClearCrashKeyString(CrashKeyString* crash_key) {
32*635a8641SAndroid Build Coastguard Worker   if (!g_crash_key_impl || !crash_key)
33*635a8641SAndroid Build Coastguard Worker     return;
34*635a8641SAndroid Build Coastguard Worker 
35*635a8641SAndroid Build Coastguard Worker   g_crash_key_impl->Clear(crash_key);
36*635a8641SAndroid Build Coastguard Worker }
37*635a8641SAndroid Build Coastguard Worker 
ScopedCrashKeyString(CrashKeyString * crash_key,base::StringPiece value)38*635a8641SAndroid Build Coastguard Worker ScopedCrashKeyString::ScopedCrashKeyString(CrashKeyString* crash_key,
39*635a8641SAndroid Build Coastguard Worker                                            base::StringPiece value)
40*635a8641SAndroid Build Coastguard Worker     : crash_key_(crash_key) {
41*635a8641SAndroid Build Coastguard Worker   SetCrashKeyString(crash_key_, value);
42*635a8641SAndroid Build Coastguard Worker }
43*635a8641SAndroid Build Coastguard Worker 
~ScopedCrashKeyString()44*635a8641SAndroid Build Coastguard Worker ScopedCrashKeyString::~ScopedCrashKeyString() {
45*635a8641SAndroid Build Coastguard Worker   ClearCrashKeyString(crash_key_);
46*635a8641SAndroid Build Coastguard Worker }
47*635a8641SAndroid Build Coastguard Worker 
SetCrashKeyImplementation(std::unique_ptr<CrashKeyImplementation> impl)48*635a8641SAndroid Build Coastguard Worker void SetCrashKeyImplementation(std::unique_ptr<CrashKeyImplementation> impl) {
49*635a8641SAndroid Build Coastguard Worker   delete g_crash_key_impl;
50*635a8641SAndroid Build Coastguard Worker   g_crash_key_impl = impl.release();
51*635a8641SAndroid Build Coastguard Worker }
52*635a8641SAndroid Build Coastguard Worker 
53*635a8641SAndroid Build Coastguard Worker }  // namespace debug
54*635a8641SAndroid Build Coastguard Worker }  // namespace base
55