1*6777b538SAndroid Build Coastguard Worker// Copyright 2012 The Chromium Authors 2*6777b538SAndroid Build Coastguard Worker// Use of this source code is governed by a BSD-style license that can be 3*6777b538SAndroid Build Coastguard Worker// found in the LICENSE file. 4*6777b538SAndroid Build Coastguard Worker 5*6777b538SAndroid Build Coastguard Worker#include "base/apple/osstatus_logging.h" 6*6777b538SAndroid Build Coastguard Worker 7*6777b538SAndroid Build Coastguard Worker#import <Foundation/Foundation.h> 8*6777b538SAndroid Build Coastguard Worker 9*6777b538SAndroid Build Coastguard Worker#include <iomanip> 10*6777b538SAndroid Build Coastguard Worker 11*6777b538SAndroid Build Coastguard Worker#include "base/immediate_crash.h" 12*6777b538SAndroid Build Coastguard Worker 13*6777b538SAndroid Build Coastguard Workernamespace logging { 14*6777b538SAndroid Build Coastguard Worker 15*6777b538SAndroid Build Coastguard Workerstd::string DescriptionFromOSStatus(OSStatus err) { 16*6777b538SAndroid Build Coastguard Worker NSError* error = [NSError errorWithDomain:NSOSStatusErrorDomain 17*6777b538SAndroid Build Coastguard Worker code:err 18*6777b538SAndroid Build Coastguard Worker userInfo:nil]; 19*6777b538SAndroid Build Coastguard Worker return error.description.UTF8String; 20*6777b538SAndroid Build Coastguard Worker} 21*6777b538SAndroid Build Coastguard Worker 22*6777b538SAndroid Build Coastguard WorkerOSStatusLogMessage::OSStatusLogMessage(const char* file_path, 23*6777b538SAndroid Build Coastguard Worker int line, 24*6777b538SAndroid Build Coastguard Worker LogSeverity severity, 25*6777b538SAndroid Build Coastguard Worker OSStatus status) 26*6777b538SAndroid Build Coastguard Worker : LogMessage(file_path, line, severity), status_(status) {} 27*6777b538SAndroid Build Coastguard Worker 28*6777b538SAndroid Build Coastguard WorkerOSStatusLogMessage::~OSStatusLogMessage() { 29*6777b538SAndroid Build Coastguard Worker AppendError(); 30*6777b538SAndroid Build Coastguard Worker} 31*6777b538SAndroid Build Coastguard Worker 32*6777b538SAndroid Build Coastguard Workervoid OSStatusLogMessage::AppendError() { 33*6777b538SAndroid Build Coastguard Worker stream() << ": " << DescriptionFromOSStatus(status_) << " (" << status_ 34*6777b538SAndroid Build Coastguard Worker << ")"; 35*6777b538SAndroid Build Coastguard Worker} 36*6777b538SAndroid Build Coastguard Worker 37*6777b538SAndroid Build Coastguard WorkerOSStatusLogMessageFatal::~OSStatusLogMessageFatal() { 38*6777b538SAndroid Build Coastguard Worker AppendError(); 39*6777b538SAndroid Build Coastguard Worker Flush(); 40*6777b538SAndroid Build Coastguard Worker base::ImmediateCrash(); 41*6777b538SAndroid Build Coastguard Worker} 42*6777b538SAndroid Build Coastguard Worker 43*6777b538SAndroid Build Coastguard Worker} // namespace logging 44