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 WorkerCrashKeyString* 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 Workervoid 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 Workervoid 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 WorkerScopedCrashKeyString::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 WorkerScopedCrashKeyString::~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 Workervoid 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