• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2011 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/custom_handlers/protocol_handler.h"
6 
7 #include "base/string_util.h"
8 #include "net/base/escape.h"
9 
ProtocolHandler(const std::string & protocol,const GURL & url,const string16 & title)10 ProtocolHandler::ProtocolHandler(const std::string& protocol,
11                                  const GURL& url,
12                                  const string16& title)
13   : protocol_(protocol),
14     url_(url),
15     title_(title) {
16 }
17 
CreateProtocolHandler(const std::string & protocol,const GURL & url,const string16 & title)18 ProtocolHandler* ProtocolHandler::CreateProtocolHandler(
19     const std::string& protocol,
20     const GURL& url,
21     const string16& title) {
22   std::string lower_protocol(protocol);
23   lower_protocol = StringToLowerASCII(protocol);
24   return new ProtocolHandler(lower_protocol, url, title);
25 }
26 
CreateProtocolHandler(const DictionaryValue * value)27 ProtocolHandler* ProtocolHandler::CreateProtocolHandler(
28     const DictionaryValue* value) {
29   std::string protocol, url;
30   string16 title;
31   value->GetString("protocol", &protocol);
32   value->GetString("url", &url);
33   value->GetString("title", &title);
34   return ProtocolHandler::CreateProtocolHandler(protocol, GURL(url), title);
35 }
36 
TranslateUrl(const GURL & url)37 GURL ProtocolHandler::TranslateUrl(const GURL& url) {
38   std::string translatedUrlSpec(url_.spec());
39   ReplaceSubstringsAfterOffset(&translatedUrlSpec, 0, "%s",
40       EscapeQueryParamValue(url.spec(), true));
41   return GURL(translatedUrlSpec);
42 }
43 
Encode()44 Value* ProtocolHandler::Encode() {
45   DictionaryValue* d = new DictionaryValue();
46   d->Set("protocol", Value::CreateStringValue(protocol_));
47   d->Set("url", Value::CreateStringValue(url_.spec()));
48   d->Set("title", Value::CreateStringValue(title_));
49   return d;
50 }
51 
operator ==(const ProtocolHandler & other) const52 bool ProtocolHandler::operator==(const ProtocolHandler &other) const {
53   return protocol_ == other.protocol_ &&
54     url_ == other.url_ &&
55     title_ == other.title_;
56 }
57 
58