// 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" #include #include "base/logging.h" #include "base/strings/sys_string_conversions.h" #import "ios/net/url_scheme_util.h" 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