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