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 10namespace net { 11 12// static 13scoped_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 21scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromUTF16( 22 const base::string16& utf16) { 23 return new ProxyResolverScriptData(TYPE_SCRIPT_CONTENTS, GURL(), utf16); 24} 25 26// static 27scoped_refptr<ProxyResolverScriptData> ProxyResolverScriptData::FromURL( 28 const GURL& url) { 29 return new ProxyResolverScriptData(TYPE_SCRIPT_URL, url, base::string16()); 30} 31 32// static 33scoped_refptr<ProxyResolverScriptData> 34ProxyResolverScriptData::ForAutoDetect() { 35 return new ProxyResolverScriptData(TYPE_AUTO_DETECT, GURL(), 36 base::string16()); 37} 38 39const base::string16& ProxyResolverScriptData::utf16() const { 40 DCHECK_EQ(TYPE_SCRIPT_CONTENTS, type_); 41 return utf16_; 42} 43 44const GURL& ProxyResolverScriptData::url() const { 45 DCHECK_EQ(TYPE_SCRIPT_URL, type_); 46 return url_; 47} 48 49bool 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 66ProxyResolverScriptData::ProxyResolverScriptData(Type type, 67 const GURL& url, 68 const base::string16& utf16) 69 : type_(type), 70 url_(url), 71 utf16_(utf16) { 72} 73 74ProxyResolverScriptData::~ProxyResolverScriptData() {} 75 76} // namespace net 77