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