• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 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 "net/proxy/proxy_resolver_script_data.h"
6 
7 #include "base/logging.h"
8 #include "base/strings/utf_string_conversions.h"
9 
10 namespace net {
11 
12 // static
FromUTF8(const std::string & utf8)13 scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromUTF8(
14     const std::string& utf8) {
15   return new ProxyResolverScriptData(TYPE_SCRIPT_CONTENTS,
16                                      GURL(),
17                                      base::UTF8ToUTF16(utf8));
18 }
19 
20 // static
FromUTF16(const base::string16 & utf16)21 scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromUTF16(
22     const base::string16& utf16) {
23   return new ProxyResolverScriptData(TYPE_SCRIPT_CONTENTS, GURL(), utf16);
24 }
25 
26 // static
FromURL(const GURL & url)27 scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromURL(
28     const GURL& url) {
29   return new ProxyResolverScriptData(TYPE_SCRIPT_URL, url, base::string16());
30 }
31 
32 // static
33 scoped_refptr<ProxyResolverScriptData>
ForAutoDetect()34 ProxyResolverScriptData::ForAutoDetect() {
35   return new ProxyResolverScriptData(TYPE_AUTO_DETECT, GURL(),
36                                      base::string16());
37 }
38 
utf16() const39 const base::string16& ProxyResolverScriptData::utf16() const {
40   DCHECK_EQ(TYPE_SCRIPT_CONTENTS, type_);
41   return utf16_;
42 }
43 
url() const44 const GURL& ProxyResolverScriptData::url() const {
45   DCHECK_EQ(TYPE_SCRIPT_URL, type_);
46   return url_;
47 }
48 
Equals(const ProxyResolverScriptData * other) const49 bool ProxyResolverScriptData::Equals(
50     const ProxyResolverScriptData* other) const {
51   if (type() != other->type())
52     return false;
53 
54   switch (type()) {
55     case TYPE_SCRIPT_CONTENTS:
56       return utf16() == other->utf16();
57     case TYPE_SCRIPT_URL:
58       return url() == other->url();
59     case TYPE_AUTO_DETECT:
60       return true;
61   }
62 
63   return false;  // Shouldn't be reached.
64 }
65 
ProxyResolverScriptData(Type type,const GURL & url,const base::string16 & utf16)66 ProxyResolverScriptData::ProxyResolverScriptData(Type type,
67                                                  const GURL& url,
68                                                  const base::string16& utf16)
69     : type_(type),
70       url_(url),
71       utf16_(utf16) {
72 }
73 
~ProxyResolverScriptData()74 ProxyResolverScriptData::~ProxyResolverScriptData() {}
75 
76 }  // namespace net
77