| // Copyright 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 "ios/net/http_protocol_logging.h" |
| |
| #import <Foundation/Foundation.h> |
| |
| #include "base/logging.h" |
| #include "base/strings/sys_string_conversions.h" |
| #import "ios/net/url_scheme_util.h" |
| |
| #if !defined(__has_feature) || !__has_feature(objc_arc) |
| #error "This file requires ARC support." |
| #endif |
| |
| namespace { |
| const unsigned int kMaxUrlLength = 100; |
| } |
| |
| namespace net { |
| |
| void LogNSURLRequest(NSURLRequest* request) { |
| DVLOG_IF(2, UrlHasDataScheme([request URL]) && |
| [[[request URL] absoluteString] length] > kMaxUrlLength) |
| << "Request (data scheme) " |
| << base::SysNSStringToUTF8( |
| [[[request URL] absoluteString] substringToIndex:kMaxUrlLength]) |
| << " ..."; |
| |
| DVLOG_IF(2, ![[[request URL] scheme] isEqualToString:@"data"] || |
| [[[request URL] absoluteString] length] <= kMaxUrlLength) |
| << "Request " |
| << base::SysNSStringToUTF8([[request URL] description]); |
| |
| DVLOG_IF(2, ![[request HTTPMethod] isEqualToString:@"GET"]) |
| << base::SysNSStringToUTF8([request HTTPMethod]); |
| |
| DVLOG_IF(2, [request allHTTPHeaderFields]) |
| << base::SysNSStringToUTF8([[request allHTTPHeaderFields] description]); |
| |
| DVLOG_IF(2, [request networkServiceType]) |
| << "Service type: " << [request networkServiceType]; |
| |
| DVLOG_IF(2, ![request HTTPShouldHandleCookies]) << "No cookies"; |
| |
| DVLOG_IF(2, [request HTTPShouldUsePipelining]) << "Pipelining allowed"; |
| } |
| |
| void LogNSURLResponse(NSURLResponse* response) { |
| DVLOG_IF(2, UrlHasDataScheme([response URL]) && |
| [[[response URL] absoluteString] length] > kMaxUrlLength) |
| << "Response (data scheme) " |
| << base::SysNSStringToUTF8( |
| [[[response URL] absoluteString] substringToIndex:kMaxUrlLength]); |
| |
| DVLOG_IF(2, !UrlHasDataScheme([response URL]) || |
| [[[response URL] absoluteString] length] <= kMaxUrlLength) |
| << "Response " |
| << base::SysNSStringToUTF8([[response URL] description]); |
| |
| DVLOG_IF(2, [response isKindOfClass:[NSHTTPURLResponse class]] && |
| [(NSHTTPURLResponse*)response allHeaderFields]) |
| << base::SysNSStringToUTF8( |
| [[(NSHTTPURLResponse*)response allHeaderFields] description]); |
| |
| DVLOG_IF(2, [response expectedContentLength]) |
| << "Length: " << [response expectedContentLength]; |
| |
| DVLOG_IF(2, [response MIMEType]) |
| << "MIMEType: " << base::SysNSStringToUTF8([response MIMEType]); |
| |
| DVLOG_IF(2, [response isKindOfClass:[NSHTTPURLResponse class]]) |
| << "Response code: " << [(NSHTTPURLResponse*)response statusCode]; |
| |
| DVLOG_IF(2, [response textEncodingName]) |
| << "Text encoding: " |
| << base::SysNSStringToUTF8([response textEncodingName]); |
| } |
| |
| } // namespace http_protocol_logging |