// 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::FromUTF8(const std::string& utf8) { return base::WrapRefCounted( new PacFileData(TYPE_SCRIPT_CONTENTS, GURL(), base::UTF8ToUTF16(utf8))); } // static scoped_refptr PacFileData::FromUTF16(const std::u16string& utf16) { return base::WrapRefCounted( new PacFileData(TYPE_SCRIPT_CONTENTS, GURL(), utf16)); } // static scoped_refptr PacFileData::FromURL(const GURL& url) { return base::WrapRefCounted( new PacFileData(TYPE_SCRIPT_URL, url, std::u16string())); } // static scoped_refptr 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