| Index: chrome/browser/custom_handlers/protocol_handler.cc
|
| diff --git a/chrome/browser/custom_handlers/protocol_handler.cc b/chrome/browser/custom_handlers/protocol_handler.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1b60be60d8da1bae017eec8a697cc1ec91439af5
|
| --- /dev/null
|
| +++ b/chrome/browser/custom_handlers/protocol_handler.cc
|
| @@ -0,0 +1,57 @@
|
| +// Copyright (c) 2011 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/custom_handlers/protocol_handler.h"
|
| +
|
| +#include "base/string_util.h"
|
| +#include "net/base/escape.h"
|
| +
|
| +ProtocolHandler::ProtocolHandler(const std::string& protocol,
|
| + const GURL& url,
|
| + const string16& title)
|
| + : protocol_(protocol),
|
| + url_(url),
|
| + title_(title) {
|
| +}
|
| +
|
| +ProtocolHandler* ProtocolHandler::CreateProtocolHandler(
|
| + const std::string& protocol,
|
| + const GURL& url,
|
| + const string16& title) {
|
| + std::string lower_protocol(protocol);
|
| + lower_protocol = StringToLowerASCII(protocol);
|
| + return new ProtocolHandler(lower_protocol, url, title);
|
| +}
|
| +
|
| +ProtocolHandler* ProtocolHandler::CreateProtocolHandler(
|
| + const DictionaryValue* value) {
|
| + std::string protocol, url;
|
| + string16 title;
|
| + value->GetString("protocol", &protocol);
|
| + value->GetString("url", &url);
|
| + value->GetString("title", &title);
|
| + return ProtocolHandler::CreateProtocolHandler(protocol, GURL(url), title);
|
| +}
|
| +
|
| +GURL ProtocolHandler::TranslateUrl(const GURL& url) {
|
| + std::string translatedUrlSpec(url_.spec());
|
| + ReplaceSubstringsAfterOffset(&translatedUrlSpec, 0, "%s",
|
| + EscapeQueryParamValue(url.spec(), true));
|
| + return GURL(translatedUrlSpec);
|
| +}
|
| +
|
| +Value* ProtocolHandler::Encode() {
|
| + DictionaryValue* d = new DictionaryValue();
|
| + d->Set("protocol", Value::CreateStringValue(protocol_));
|
| + d->Set("url", Value::CreateStringValue(url_.spec()));
|
| + d->Set("title", Value::CreateStringValue(title_));
|
| + return d;
|
| +}
|
| +
|
| +bool ProtocolHandler::operator==(const ProtocolHandler &other) const {
|
| + return protocol_ == other.protocol_ &&
|
| + url_ == other.url_ &&
|
| + title_ == other.title_;
|
| +}
|
| +
|
|
|