// 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. #ifndef NET_PROXY_RESOLUTION_PAC_FILE_DECIDER_H_ #define NET_PROXY_RESOLUTION_PAC_FILE_DECIDER_H_ #include <stddef.h> #include <memory> #include <string> #include <vector> #include "base/memory/raw_ptr.h" #include "base/memory/scoped_refptr.h" #include "base/time/time.h" #include "base/timer/timer.h" #include "base/values.h" #include "net/base/completion_once_callback.h" #include "net/base/net_export.h" #include "net/dns/host_resolver.h" #include "net/log/net_log_with_source.h" #include "net/proxy_resolution/proxy_config_with_annotation.h" #include "net/proxy_resolution/proxy_resolver.h" #include "url/gurl.h" namespace net { class DhcpPacFileFetcher; class NetLog; class ProxyResolver; class PacFileFetcher; // Structure that encapsulates the result a PacFileData along with an // indication of its origin: was it obtained implicitly from auto-detect, // or was it read from a more explicitly configured URL. // // Note that |!from_auto_detect| does NOT imply the script was securely // delivered. Most commonly PAC scripts are configured from http:// URLs, // both for auto-detect and not. struct NET_EXPORT_PRIVATE PacFileDataWithSource { … }; // PacFileDecider is a helper class used by ConfiguredProxyResolutionService to // determine which PAC script to use given our proxy configuration. // // This involves trying to use PAC scripts in this order: // // (1) WPAD (DHCP) if auto-detect is on. // (2) WPAD (DNS) if auto-detect is on. // (3) Custom PAC script if a URL was given. // // If no PAC script was successfully selected, then it fails with either a // network error, or PAC_SCRIPT_FAILED (indicating it did not pass our // validation). // // On successful completion, the fetched PAC script data can be accessed using // script_data(). // // Deleting PacFileDecider while Init() is in progress, will // cancel the request. // class NET_EXPORT_PRIVATE PacFileDecider { … }; } // namespace net #endif // NET_PROXY_RESOLUTION_PAC_FILE_DECIDER_H_