13345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick// Copyright (c) 2010 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/debugger/devtools_remote_message.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 73345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/string_number_conversions.h" 83345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char DevToolsRemoteMessageHeaders::kContentLength[] = "Content-Length"; 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char DevToolsRemoteMessageHeaders::kTool[] = "Tool"; 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char DevToolsRemoteMessageHeaders::kDestination[] = "Destination"; 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst char DevToolsRemoteMessage::kEmptyValue[] = ""; 14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochDevToolsRemoteMessageBuilder& DevToolsRemoteMessageBuilder::instance() { 16c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch static DevToolsRemoteMessageBuilder instance_; 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return instance_; 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 20731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickDevToolsRemoteMessage::DevToolsRemoteMessage() {} 21731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 22731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickDevToolsRemoteMessage::DevToolsRemoteMessage(const HeaderMap& headers, 23731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick const std::string& content) 24731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick : header_map_(headers), 25731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick content_(content) { 26731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 27731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 28731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickDevToolsRemoteMessage::~DevToolsRemoteMessage() {} 29731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst std::string DevToolsRemoteMessage::GetHeader( 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& header_name, 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& default_value) const { 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch HeaderMap::const_iterator it = header_map_.find(header_name); 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if (it == header_map_.end()) { 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return default_value; 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return it->second; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst std::string DevToolsRemoteMessage::GetHeaderWithEmptyDefault( 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& header_name) const { 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return GetHeader(header_name, DevToolsRemoteMessage::kEmptyValue); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochconst std::string DevToolsRemoteMessage::ToString() const { 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string result; 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (HeaderMap::const_iterator it = header_map_.begin(), 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch end = header_map_.end(); it != end; ++it) { 49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch result.append(it->first).append(":").append(it->second).append("\r\n"); 50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch result.append("\r\n").append(content_); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return result; 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochDevToolsRemoteMessage* DevToolsRemoteMessageBuilder::Create( 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& tool, 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& destination, 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch const std::string& content) { 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DevToolsRemoteMessage::HeaderMap headers; 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch headers[DevToolsRemoteMessageHeaders::kContentLength] = 613345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick base::IntToString(content.size()); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch headers[DevToolsRemoteMessageHeaders::kTool] = tool; 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch headers[DevToolsRemoteMessageHeaders::kDestination] = destination; 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return new DevToolsRemoteMessage(headers, content); 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 66