| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/mac/mac_logging.h" |
| |
| #import <Foundation/Foundation.h> |
| |
| #include <iomanip> |
| |
| #include "util/build_config.h" |
| |
| #if !defined(OS_IOS) |
| #include <CoreServices/CoreServices.h> |
| #endif |
| |
| namespace logging { |
| |
| std::string DescriptionFromOSStatus(OSStatus err) { |
| NSError* error = |
| [NSError errorWithDomain:NSOSStatusErrorDomain code:err userInfo:nil]; |
| return error.description.UTF8String; |
| } |
| |
| OSStatusLogMessage::OSStatusLogMessage(const char* file_path, |
| int line, |
| LogSeverity severity, |
| OSStatus status) |
| : LogMessage(file_path, line, severity), status_(status) {} |
| |
| OSStatusLogMessage::~OSStatusLogMessage() { |
| #if defined(OS_IOS) |
| // TODO(crbug.com/546375): Consider using NSError with NSOSStatusErrorDomain |
| // to try to get a description of the failure. |
| stream() << ": " << status_; |
| #else |
| stream() << ": " << DescriptionFromOSStatus(status_) << " (" << status_ |
| << ")"; |
| #endif |
| } |
| |
| } // namespace logging |