• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2010 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 "chrome/browser/debugger/devtools_remote_message.h"
6 
7 #include "base/string_number_conversions.h"
8 
9 const char DevToolsRemoteMessageHeaders::kContentLength[] = "Content-Length";
10 const char DevToolsRemoteMessageHeaders::kTool[] = "Tool";
11 const char DevToolsRemoteMessageHeaders::kDestination[] = "Destination";
12 
13 const char DevToolsRemoteMessage::kEmptyValue[] = "";
14 
instance()15 DevToolsRemoteMessageBuilder& DevToolsRemoteMessageBuilder::instance() {
16   static DevToolsRemoteMessageBuilder instance_;
17   return instance_;
18 }
19 
DevToolsRemoteMessage()20 DevToolsRemoteMessage::DevToolsRemoteMessage() {}
21 
DevToolsRemoteMessage(const HeaderMap & headers,const std::string & content)22 DevToolsRemoteMessage::DevToolsRemoteMessage(const HeaderMap& headers,
23                                              const std::string& content)
24     : header_map_(headers),
25       content_(content) {
26 }
27 
~DevToolsRemoteMessage()28 DevToolsRemoteMessage::~DevToolsRemoteMessage() {}
29 
GetHeader(const std::string & header_name,const std::string & default_value) const30 const std::string DevToolsRemoteMessage::GetHeader(
31     const std::string& header_name,
32     const std::string& default_value) const {
33   HeaderMap::const_iterator it = header_map_.find(header_name);
34   if (it == header_map_.end()) {
35     return default_value;
36   }
37   return it->second;
38 }
39 
GetHeaderWithEmptyDefault(const std::string & header_name) const40 const std::string DevToolsRemoteMessage::GetHeaderWithEmptyDefault(
41     const std::string& header_name) const {
42   return GetHeader(header_name, DevToolsRemoteMessage::kEmptyValue);
43 }
44 
ToString() const45 const std::string DevToolsRemoteMessage::ToString() const {
46   std::string result;
47   for (HeaderMap::const_iterator it = header_map_.begin(),
48       end = header_map_.end(); it != end; ++it) {
49     result.append(it->first).append(":").append(it->second).append("\r\n");
50   }
51   result.append("\r\n").append(content_);
52   return result;
53 }
54 
Create(const std::string & tool,const std::string & destination,const std::string & content)55 DevToolsRemoteMessage* DevToolsRemoteMessageBuilder::Create(
56     const std::string& tool,
57     const std::string& destination,
58     const std::string& content) {
59   DevToolsRemoteMessage::HeaderMap headers;
60   headers[DevToolsRemoteMessageHeaders::kContentLength] =
61       base::IntToString(content.size());
62   headers[DevToolsRemoteMessageHeaders::kTool] = tool;
63   headers[DevToolsRemoteMessageHeaders::kDestination] = destination;
64   return new DevToolsRemoteMessage(headers, content);
65 }
66