// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/debugger/devtools_remote_message.h"
#include "base/string_number_conversions.h"
const char DevToolsRemoteMessageHeaders::kContentLength[] = "Content-Length";
const char DevToolsRemoteMessageHeaders::kTool[] = "Tool";
const char DevToolsRemoteMessageHeaders::kDestination[] = "Destination";
const char DevToolsRemoteMessage::kEmptyValue[] = "";
DevToolsRemoteMessageBuilder& DevToolsRemoteMessageBuilder::instance() {
static DevToolsRemoteMessageBuilder instance_;
return instance_;
}
DevToolsRemoteMessage::DevToolsRemoteMessage() {}
DevToolsRemoteMessage::DevToolsRemoteMessage(const HeaderMap& headers,
const std::string& content)
: header_map_(headers),
content_(content) {
}
DevToolsRemoteMessage::~DevToolsRemoteMessage() {}
const std::string DevToolsRemoteMessage::GetHeader(
const std::string& header_name,
const std::string& default_value) const {
HeaderMap::const_iterator it = header_map_.find(header_name);
if (it == header_map_.end()) {
return default_value;
}
return it->second;
}
const std::string DevToolsRemoteMessage::GetHeaderWithEmptyDefault(
const std::string& header_name) const {
return GetHeader(header_name, DevToolsRemoteMessage::kEmptyValue);
}
const std::string DevToolsRemoteMessage::ToString() const {
std::string result;
for (HeaderMap::const_iterator it = header_map_.begin(),
end = header_map_.end(); it != end; ++it) {
result.append(it->first).append(":").append(it->second).append("\r\n");
}
result.append("\r\n").append(content_);
return result;
}
DevToolsRemoteMessage* DevToolsRemoteMessageBuilder::Create(
const std::string& tool,
const std::string& destination,
const std::string& content) {
DevToolsRemoteMessage::HeaderMap headers;
headers[DevToolsRemoteMessageHeaders::kContentLength] =
base::IntToString(content.size());
headers[DevToolsRemoteMessageHeaders::kTool] = tool;
headers[DevToolsRemoteMessageHeaders::kDestination] = destination;
return new DevToolsRemoteMessage(headers, content);
}