- add sources.
[platform/framework/web/crosswalk.git] / src / net / spdy / spdy_header_block.cc
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
3 // found in the LICENSE file.
4
5 #include "net/spdy/spdy_header_block.h"
6
7 #include "base/values.h"
8 #include "net/spdy/spdy_http_utils.h"
9
10 namespace net {
11
12 base::Value* SpdyHeaderBlockNetLogCallback(
13     const SpdyHeaderBlock* headers,
14     NetLog::LogLevel /* log_level */) {
15   base::DictionaryValue* dict = new base::DictionaryValue();
16   base::DictionaryValue* headers_dict = new base::DictionaryValue();
17   for (SpdyHeaderBlock::const_iterator it = headers->begin();
18        it != headers->end(); ++it) {
19     headers_dict->SetWithoutPathExpansion(
20         it->first,
21         new base::StringValue(
22             ShouldShowHttpHeaderValue(it->first) ? it->second : "[elided]"));
23   }
24   dict->Set("headers", headers_dict);
25   return dict;
26 }
27
28 bool SpdyHeaderBlockFromNetLogParam(
29     const base::Value* event_param,
30     SpdyHeaderBlock* headers) {
31   headers->clear();
32
33   const base::DictionaryValue* dict = NULL;
34   const base::DictionaryValue* header_dict = NULL;
35
36   if (!event_param ||
37       !event_param->GetAsDictionary(&dict) ||
38       !dict->GetDictionary("headers", &header_dict)) {
39     return false;
40   }
41
42   for (base::DictionaryValue::Iterator it(*header_dict); !it.IsAtEnd();
43        it.Advance()) {
44     if (!it.value().GetAsString(&(*headers)[it.key()])) {
45       headers->clear();
46       return false;
47     }
48   }
49   return true;
50 }
51
52 }  // namespace net