// 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 "net/spdy/spdy_header_block.h" #include "base/values.h" namespace net { Value* SpdyHeaderBlockNetLogCallback( const SpdyHeaderBlock* headers, NetLog::LogLevel /* log_level */) { DictionaryValue* dict = new DictionaryValue(); DictionaryValue* headers_dict = new DictionaryValue(); for (SpdyHeaderBlock::const_iterator it = headers->begin(); it != headers->end(); ++it) { headers_dict->SetWithoutPathExpansion( it->first, new StringValue(it->second)); } dict->Set("headers", headers_dict); return dict; } bool SpdyHeaderBlockFromNetLogParam( const base::Value* event_param, SpdyHeaderBlock* headers) { headers->clear(); const base::DictionaryValue* dict = NULL; const base::DictionaryValue* header_dict = NULL; if (!event_param || !event_param->GetAsDictionary(&dict) || !dict->GetDictionary("headers", &header_dict)) { return false; } for (base::DictionaryValue::key_iterator it = header_dict->begin_keys(); it != header_dict->end_keys(); ++it) { std::string value; if (!header_dict->GetString(*it, &(*headers)[*it])) { headers->clear(); return false; } } return true; } } // namespace net