// Copyright (c) 2010 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. #ifndef NET_HTTP_HTTP_NET_LOG_PARAMS_H_ #define NET_HTTP_HTTP_NET_LOG_PARAMS_H_ #pragma once #include #include #include "base/basictypes.h" #include "base/ref_counted.h" #include "base/values.h" #include "net/base/net_log.h" #include "net/http/http_request_headers.h" #include "net/http/http_response_headers.h" namespace net { class NetLogHttpRequestParameter : public NetLog::EventParameters { public: NetLogHttpRequestParameter(const std::string& line, const HttpRequestHeaders& headers) : line_(line) { headers_.CopyFrom(headers); } Value* ToValue() const { DictionaryValue* dict = new DictionaryValue(); dict->SetString("line", line_); ListValue* headers = new ListValue(); HttpRequestHeaders::Iterator iterator(headers_); while (iterator.GetNext()) { headers->Append( new StringValue(StringPrintf("%s: %s", iterator.name().c_str(), iterator.value().c_str()))); } dict->Set("headers", headers); return dict; } private: ~NetLogHttpRequestParameter() {} const std::string line_; HttpRequestHeaders headers_; DISALLOW_COPY_AND_ASSIGN(NetLogHttpRequestParameter); }; class NetLogHttpResponseParameter : public NetLog::EventParameters { public: explicit NetLogHttpResponseParameter( const scoped_refptr& headers) : headers_(headers) {} Value* ToValue() const { DictionaryValue* dict = new DictionaryValue(); ListValue* headers = new ListValue(); headers->Append(new StringValue(headers_->GetStatusLine())); void* iterator = NULL; std::string name; std::string value; while (headers_->EnumerateHeaderLines(&iterator, &name, &value)) { headers->Append( new StringValue(StringPrintf("%s: %s", name.c_str(), value.c_str()))); } dict->Set("headers", headers); return dict; } private: ~NetLogHttpResponseParameter() {} const scoped_refptr headers_; DISALLOW_COPY_AND_ASSIGN(NetLogHttpResponseParameter); }; } // namespace net #endif // NET_HTTP_HTTP_NET_LOG_PARAMS_H_