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