| Index: net/proxy/proxy_service_unittest.cc
 | 
| diff --git a/net/proxy/proxy_service_unittest.cc b/net/proxy/proxy_service_unittest.cc
 | 
| index f5ae3d77e7d35a22313a802bc624631ed7d62ca7..aac8bc9683d57a7212edafeae2c0179f5d4772a7 100644
 | 
| --- a/net/proxy/proxy_service_unittest.cc
 | 
| +++ b/net/proxy/proxy_service_unittest.cc
 | 
| @@ -15,7 +15,9 @@
 | 
|  #include "net/base/net_log.h"
 | 
|  #include "net/base/net_log_unittest.h"
 | 
|  #include "net/base/test_completion_callback.h"
 | 
| +#include "net/proxy/dhcp_proxy_script_fetcher.h"
 | 
|  #include "net/proxy/mock_proxy_resolver.h"
 | 
| +#include "net/proxy/mock_proxy_script_fetcher.h"
 | 
|  #include "net/proxy/proxy_config_service.h"
 | 
|  #include "net/proxy/proxy_resolver.h"
 | 
|  #include "net/proxy/proxy_script_fetcher.h"
 | 
| @@ -67,53 +69,6 @@ class MockProxyConfigService: public ProxyConfigService {
 | 
|  
 | 
|  }  // namespace
 | 
|  
 | 
| -// A mock ProxyScriptFetcher. No result will be returned to the fetch client
 | 
| -// until we call NotifyFetchCompletion() to set the results.
 | 
| -class MockProxyScriptFetcher : public ProxyScriptFetcher {
 | 
| - public:
 | 
| -  MockProxyScriptFetcher()
 | 
| -      : pending_request_callback_(NULL), pending_request_text_(NULL) {
 | 
| -  }
 | 
| -
 | 
| -  // ProxyScriptFetcher implementation.
 | 
| -  virtual int Fetch(const GURL& url,
 | 
| -                    string16* text,
 | 
| -                    CompletionCallback* callback) {
 | 
| -    DCHECK(!has_pending_request());
 | 
| -
 | 
| -    // Save the caller's information, and have them wait.
 | 
| -    pending_request_url_ = url;
 | 
| -    pending_request_callback_ = callback;
 | 
| -    pending_request_text_ = text;
 | 
| -    return ERR_IO_PENDING;
 | 
| -  }
 | 
| -
 | 
| -  void NotifyFetchCompletion(int result, const std::string& ascii_text) {
 | 
| -    DCHECK(has_pending_request());
 | 
| -    *pending_request_text_ = ASCIIToUTF16(ascii_text);
 | 
| -    CompletionCallback* callback = pending_request_callback_;
 | 
| -    pending_request_callback_ = NULL;
 | 
| -    callback->Run(result);
 | 
| -  }
 | 
| -
 | 
| -  virtual void Cancel() {}
 | 
| -
 | 
| -  virtual URLRequestContext* GetRequestContext() { return NULL; }
 | 
| -
 | 
| -  const GURL& pending_request_url() const {
 | 
| -    return pending_request_url_;
 | 
| -  }
 | 
| -
 | 
| -  bool has_pending_request() const {
 | 
| -    return pending_request_callback_ != NULL;
 | 
| -  }
 | 
| -
 | 
| - private:
 | 
| -  GURL pending_request_url_;
 | 
| -  CompletionCallback* pending_request_callback_;
 | 
| -  string16* pending_request_text_;
 | 
| -};
 | 
| -
 | 
|  TEST(ProxyServiceTest, Direct) {
 | 
|    MockAsyncProxyResolver* resolver = new MockAsyncProxyResolver;
 | 
|    ProxyService service(new MockProxyConfigService(
 | 
| @@ -449,7 +404,8 @@ TEST(ProxyServiceTest, ProxyResolverFailsParsingJavaScriptMandatoryPac) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  DhcpProxyScriptFetcher* dhcp_fetcher = new DoNothingDhcpProxyScriptFetcher();
 | 
| +  service.SetProxyScriptFetchers(fetcher, dhcp_fetcher);
 | 
|  
 | 
|    // Start resolve request.
 | 
|    GURL url("http://www.google.com/");
 | 
| @@ -1183,7 +1139,8 @@ TEST(ProxyServiceTest, InitialPACScriptDownload) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Start 3 requests.
 | 
|  
 | 
| @@ -1262,7 +1219,8 @@ TEST(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Start 2 requests.
 | 
|  
 | 
| @@ -1290,7 +1248,8 @@ TEST(ProxyServiceTest, ChangeScriptFetcherWhilePACDownloadInProgress) {
 | 
|    // the initialization with the new fetcher.
 | 
|  
 | 
|    fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Nothing has been sent to the resolver yet.
 | 
|    EXPECT_TRUE(resolver->pending_requests().empty());
 | 
| @@ -1319,7 +1278,8 @@ TEST(ProxyServiceTest, CancelWhilePACFetching) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Start 3 requests.
 | 
|    ProxyInfo info1;
 | 
| @@ -1410,7 +1370,8 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Start 2 requests.
 | 
|  
 | 
| @@ -1480,7 +1441,8 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomPac2) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Start 2 requests.
 | 
|  
 | 
| @@ -1555,7 +1517,8 @@ TEST(ProxyServiceTest, FallbackFromAutodetectToCustomToManual) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Start 2 requests.
 | 
|  
 | 
| @@ -1612,7 +1575,8 @@ TEST(ProxyServiceTest, BypassDoesntApplyToPac) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Start 1 requests.
 | 
|  
 | 
| @@ -1679,7 +1643,8 @@ TEST(ProxyServiceTest, DeleteWhileInitProxyResolverHasOutstandingFetch) {
 | 
|    ProxyService service(config_service, resolver, NULL);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Start 1 request.
 | 
|  
 | 
| @@ -1810,7 +1775,8 @@ TEST(ProxyServiceTest, NetworkChangeTriggersPacRefetch) {
 | 
|    ProxyService service(config_service, resolver, &log);
 | 
|  
 | 
|    MockProxyScriptFetcher* fetcher = new MockProxyScriptFetcher;
 | 
| -  service.SetProxyScriptFetcher(fetcher);
 | 
| +  service.SetProxyScriptFetchers(fetcher,
 | 
| +                                 new DoNothingDhcpProxyScriptFetcher());
 | 
|  
 | 
|    // Disable the "wait after IP address changes" hack, so this unit-test can
 | 
|    // complete quickly.
 | 
| 
 |