| // 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 |