| // Copyright 2012 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "net/proxy_resolution/pac_file_data.h" |
| |
| #include "base/check_op.h" |
| #include "base/strings/utf_string_conversions.h" |
| |
| namespace net { |
| |
| // static |
| scoped_refptr<PacFileData> PacFileData::FromUTF8(const std::string& utf8) { |
| return base::WrapRefCounted( |
| new PacFileData(TYPE_SCRIPT_CONTENTS, GURL(), base::UTF8ToUTF16(utf8))); |
| } |
| |
| // static |
| scoped_refptr<PacFileData> PacFileData::FromUTF16(const std::u16string& utf16) { |
| return base::WrapRefCounted( |
| new PacFileData(TYPE_SCRIPT_CONTENTS, GURL(), utf16)); |
| } |
| |
| // static |
| scoped_refptr<PacFileData> PacFileData::FromURL(const GURL& url) { |
| return base::WrapRefCounted( |
| new PacFileData(TYPE_SCRIPT_URL, url, std::u16string())); |
| } |
| |
| // static |
| scoped_refptr<PacFileData> PacFileData::ForAutoDetect() { |
| return base::WrapRefCounted( |
| new PacFileData(TYPE_AUTO_DETECT, GURL(), std::u16string())); |
| } |
| |
| const std::u16string& PacFileData::utf16() const { |
| DCHECK_EQ(TYPE_SCRIPT_CONTENTS, type_); |
| return utf16_; |
| } |
| |
| const GURL& PacFileData::url() const { |
| DCHECK_EQ(TYPE_SCRIPT_URL, type_); |
| return url_; |
| } |
| |
| bool PacFileData::Equals(const PacFileData* other) const { |
| if (type() != other->type()) |
| return false; |
| |
| switch (type()) { |
| case TYPE_SCRIPT_CONTENTS: |
| return utf16() == other->utf16(); |
| case TYPE_SCRIPT_URL: |
| return url() == other->url(); |
| case TYPE_AUTO_DETECT: |
| return true; |
| } |
| |
| return false; // Shouldn't be reached. |
| } |
| |
| PacFileData::PacFileData(Type type, |
| const GURL& url, |
| const std::u16string& utf16) |
| : type_(type), url_(url), utf16_(utf16) {} |
| |
| PacFileData::~PacFileData() = default; |
| |
| } // namespace net |