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 15 DevToolsRemoteMessageBuilder& DevToolsRemoteMessageBuilder::instance() { 16 static DevToolsRemoteMessageBuilder instance_; 17 return instance_; 18 } 19 20 DevToolsRemoteMessage::DevToolsRemoteMessage() {} 21 22 DevToolsRemoteMessage::DevToolsRemoteMessage(const HeaderMap& headers, 23 const std::string& content) 24 : header_map_(headers), 25 content_(content) { 26 } 27 28 DevToolsRemoteMessage::~DevToolsRemoteMessage() {} 29 30 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 40 const std::string DevToolsRemoteMessage::GetHeaderWithEmptyDefault( 41 const std::string& header_name) const { 42 return GetHeader(header_name, DevToolsRemoteMessage::kEmptyValue); 43 } 44 45 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 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