| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "net/spdy/spdy_header_block.h" | 5 #include "net/spdy/spdy_header_block.h" |
| 6 | 6 |
| 7 #include "base/values.h" | 7 #include "base/values.h" |
| 8 #include "net/http/http_log_util.h" | 8 #include "net/http/http_log_util.h" |
| 9 | 9 |
| 10 namespace net { | 10 namespace net { |
| 11 | 11 |
| 12 base::Value* SpdyHeaderBlockNetLogCallback( | 12 base::Value* SpdyHeaderBlockNetLogCallback(const SpdyHeaderBlock* headers, |
| 13 const SpdyHeaderBlock* headers, | 13 NetLog::LogLevel log_level) { |
| 14 NetLog::LogLevel log_level) { | |
| 15 base::DictionaryValue* dict = new base::DictionaryValue(); | 14 base::DictionaryValue* dict = new base::DictionaryValue(); |
| 16 base::DictionaryValue* headers_dict = new base::DictionaryValue(); | 15 base::DictionaryValue* headers_dict = new base::DictionaryValue(); |
| 17 for (SpdyHeaderBlock::const_iterator it = headers->begin(); | 16 for (SpdyHeaderBlock::const_iterator it = headers->begin(); |
| 18 it != headers->end(); ++it) { | 17 it != headers->end(); |
| 18 ++it) { |
| 19 headers_dict->SetWithoutPathExpansion( | 19 headers_dict->SetWithoutPathExpansion( |
| 20 it->first, | 20 it->first, |
| 21 new base::StringValue( | 21 new base::StringValue( |
| 22 ElideHeaderValueForNetLog(log_level, it->first, it->second))); | 22 ElideHeaderValueForNetLog(log_level, it->first, it->second))); |
| 23 } | 23 } |
| 24 dict->Set("headers", headers_dict); | 24 dict->Set("headers", headers_dict); |
| 25 return dict; | 25 return dict; |
| 26 } | 26 } |
| 27 | 27 |
| 28 bool SpdyHeaderBlockFromNetLogParam( | 28 bool SpdyHeaderBlockFromNetLogParam(const base::Value* event_param, |
| 29 const base::Value* event_param, | 29 SpdyHeaderBlock* headers) { |
| 30 SpdyHeaderBlock* headers) { | |
| 31 headers->clear(); | 30 headers->clear(); |
| 32 | 31 |
| 33 const base::DictionaryValue* dict = NULL; | 32 const base::DictionaryValue* dict = NULL; |
| 34 const base::DictionaryValue* header_dict = NULL; | 33 const base::DictionaryValue* header_dict = NULL; |
| 35 | 34 |
| 36 if (!event_param || | 35 if (!event_param || !event_param->GetAsDictionary(&dict) || |
| 37 !event_param->GetAsDictionary(&dict) || | |
| 38 !dict->GetDictionary("headers", &header_dict)) { | 36 !dict->GetDictionary("headers", &header_dict)) { |
| 39 return false; | 37 return false; |
| 40 } | 38 } |
| 41 | 39 |
| 42 for (base::DictionaryValue::Iterator it(*header_dict); !it.IsAtEnd(); | 40 for (base::DictionaryValue::Iterator it(*header_dict); !it.IsAtEnd(); |
| 43 it.Advance()) { | 41 it.Advance()) { |
| 44 if (!it.value().GetAsString(&(*headers)[it.key()])) { | 42 if (!it.value().GetAsString(&(*headers)[it.key()])) { |
| 45 headers->clear(); | 43 headers->clear(); |
| 46 return false; | 44 return false; |
| 47 } | 45 } |
| 48 } | 46 } |
| 49 return true; | 47 return true; |
| 50 } | 48 } |
| 51 | 49 |
| 52 } // namespace net | 50 } // namespace net |
| OLD | NEW |