// Copyright (c) 2012 The Chromium Authors. All rights reserved. // 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/logging.h" #include "base/strings/utf_string_conversions.h" namespace net { // static scoped_refptr PacFileData::FromUTF8(const std::string& utf8) { return new PacFileData(TYPE_SCRIPT_CONTENTS, GURL(), base::UTF8ToUTF16(utf8)); } // static scoped_refptr PacFileData::FromUTF16(const base::string16& utf16) { return new PacFileData(TYPE_SCRIPT_CONTENTS, GURL(), utf16); } // static scoped_refptr PacFileData::FromURL(const GURL& url) { return new PacFileData(TYPE_SCRIPT_URL, url, base::string16()); } // static scoped_refptr PacFileData::ForAutoDetect() { return new PacFileData(TYPE_AUTO_DETECT, GURL(), base::string16()); } const base::string16& 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 base::string16& utf16) : type_(type), url_(url), utf16_(utf16) {} PacFileData::~PacFileData() = default; } // namespace net