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