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 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 21 scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromUTF16( 22 const base::string16& utf16) { 23 return new ProxyResolverScriptData(TYPE_SCRIPT_CONTENTS, GURL(), utf16); 24 } 25 26 // static 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> 34 ProxyResolverScriptData::ForAutoDetect() { 35 return new ProxyResolverScriptData(TYPE_AUTO_DETECT, GURL(), 36 base::string16()); 37 } 38 39 const base::string16& ProxyResolverScriptData::utf16() const { 40 DCHECK_EQ(TYPE_SCRIPT_CONTENTS, type_); 41 return utf16_; 42 } 43 44 const GURL& ProxyResolverScriptData::url() const { 45 DCHECK_EQ(TYPE_SCRIPT_URL, type_); 46 return url_; 47 } 48 49 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 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 74 ProxyResolverScriptData::~ProxyResolverScriptData() {} 75 76 } // namespace net 77