| OLD | NEW | 
|     1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |     1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
|     2 // Use of this source code is governed by a BSD-style license that can be |     2 // Use of this source code is governed by a BSD-style license that can be | 
|     3 // found in the LICENSE file. |     3 // found in the LICENSE file. | 
|     4  |     4  | 
|     5 #include "net/proxy/proxy_service.h" |     5 #include "net/proxy/proxy_service.h" | 
|     6  |     6  | 
|     7 #include <vector> |     7 #include <vector> | 
|     8  |     8  | 
|     9 #include "base/format_macros.h" |     9 #include "base/format_macros.h" | 
|    10 #include "base/logging.h" |    10 #include "base/logging.h" | 
| (...skipping 1705 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1716                             callback2.callback(), &request2, BoundNetLog()); |  1716                             callback2.callback(), &request2, BoundNetLog()); | 
|  1717   EXPECT_EQ(ERR_IO_PENDING, rv); |  1717   EXPECT_EQ(ERR_IO_PENDING, rv); | 
|  1718  |  1718  | 
|  1719   // Check that nothing has been sent to the proxy resolver yet. |  1719   // Check that nothing has been sent to the proxy resolver yet. | 
|  1720   ASSERT_EQ(0u, resolver->pending_requests().size()); |  1720   ASSERT_EQ(0u, resolver->pending_requests().size()); | 
|  1721  |  1721  | 
|  1722   // It should be trying to auto-detect first -- FAIL the autodetect during |  1722   // It should be trying to auto-detect first -- FAIL the autodetect during | 
|  1723   // the script download. |  1723   // the script download. | 
|  1724   EXPECT_TRUE(fetcher->has_pending_request()); |  1724   EXPECT_TRUE(fetcher->has_pending_request()); | 
|  1725   EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); |  1725   EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); | 
|  1726   fetcher->NotifyFetchCompletion(ERR_FAILED, ""); |  1726   fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); | 
|  1727  |  1727  | 
|  1728   // Next it should be trying the custom PAC url. |  1728   // Next it should be trying the custom PAC url. | 
|  1729   EXPECT_TRUE(fetcher->has_pending_request()); |  1729   EXPECT_TRUE(fetcher->has_pending_request()); | 
|  1730   EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |  1730   EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); | 
|  1731   fetcher->NotifyFetchCompletion(OK, kValidPacScript1); |  1731   fetcher->NotifyFetchCompletion(OK, kValidPacScript1); | 
|  1732  |  1732  | 
|  1733   EXPECT_EQ(ASCIIToUTF16(kValidPacScript1), |  1733   EXPECT_EQ(ASCIIToUTF16(kValidPacScript1), | 
|  1734             resolver->pending_set_pac_script_request()->script_data()->utf16()); |  1734             resolver->pending_set_pac_script_request()->script_data()->utf16()); | 
|  1735   resolver->pending_set_pac_script_request()->CompleteNow(OK); |  1735   resolver->pending_set_pac_script_request()->CompleteNow(OK); | 
|  1736  |  1736  | 
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  1865   rv = service.ResolveProxy(GURL("http://request2"), &info2, |  1865   rv = service.ResolveProxy(GURL("http://request2"), &info2, | 
|  1866                             callback2.callback(), &request2, BoundNetLog()); |  1866                             callback2.callback(), &request2, BoundNetLog()); | 
|  1867   EXPECT_EQ(ERR_IO_PENDING, rv); |  1867   EXPECT_EQ(ERR_IO_PENDING, rv); | 
|  1868  |  1868  | 
|  1869   // Check that nothing has been sent to the proxy resolver yet. |  1869   // Check that nothing has been sent to the proxy resolver yet. | 
|  1870   ASSERT_EQ(0u, resolver->pending_requests().size()); |  1870   ASSERT_EQ(0u, resolver->pending_requests().size()); | 
|  1871  |  1871  | 
|  1872   // It should be trying to auto-detect first -- fail the download. |  1872   // It should be trying to auto-detect first -- fail the download. | 
|  1873   EXPECT_TRUE(fetcher->has_pending_request()); |  1873   EXPECT_TRUE(fetcher->has_pending_request()); | 
|  1874   EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); |  1874   EXPECT_EQ(GURL("http://wpad/wpad.dat"), fetcher->pending_request_url()); | 
|  1875   fetcher->NotifyFetchCompletion(ERR_FAILED, ""); |  1875   fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); | 
|  1876  |  1876  | 
|  1877   // Next it should be trying the custom PAC url -- fail the download. |  1877   // Next it should be trying the custom PAC url -- fail the download. | 
|  1878   EXPECT_TRUE(fetcher->has_pending_request()); |  1878   EXPECT_TRUE(fetcher->has_pending_request()); | 
|  1879   EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |  1879   EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); | 
|  1880   fetcher->NotifyFetchCompletion(ERR_FAILED, ""); |  1880   fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); | 
|  1881  |  1881  | 
|  1882   // Since we never managed to initialize a ProxyResolver, nothing should have |  1882   // Since we never managed to initialize a ProxyResolver, nothing should have | 
|  1883   // been sent to it. |  1883   // been sent to it. | 
|  1884   ASSERT_EQ(0u, resolver->pending_requests().size()); |  1884   ASSERT_EQ(0u, resolver->pending_requests().size()); | 
|  1885  |  1885  | 
|  1886   // Verify that requests ran as expected -- they should have fallen back to |  1886   // Verify that requests ran as expected -- they should have fallen back to | 
|  1887   // the manual proxy configuration for HTTP urls. |  1887   // the manual proxy configuration for HTTP urls. | 
|  1888   EXPECT_EQ(OK, callback1.WaitForResult()); |  1888   EXPECT_EQ(OK, callback1.WaitForResult()); | 
|  1889   EXPECT_EQ("foopy:80", info1.proxy_server().ToURI()); |  1889   EXPECT_EQ("foopy:80", info1.proxy_server().ToURI()); | 
|  1890  |  1890  | 
| (...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2244  |  2244  | 
|  2245   // Nothing has been sent to the resolver yet. |  2245   // Nothing has been sent to the resolver yet. | 
|  2246   EXPECT_TRUE(resolver->pending_requests().empty()); |  2246   EXPECT_TRUE(resolver->pending_requests().empty()); | 
|  2247  |  2247  | 
|  2248   // At this point the ProxyService should be waiting for the |  2248   // At this point the ProxyService should be waiting for the | 
|  2249   // ProxyScriptFetcher to invoke its completion callback, notifying it of |  2249   // ProxyScriptFetcher to invoke its completion callback, notifying it of | 
|  2250   // PAC script download completion. |  2250   // PAC script download completion. | 
|  2251   // |  2251   // | 
|  2252   // We simulate a failed download attempt, the proxy service should now |  2252   // We simulate a failed download attempt, the proxy service should now | 
|  2253   // fall-back to DIRECT connections. |  2253   // fall-back to DIRECT connections. | 
|  2254   fetcher->NotifyFetchCompletion(ERR_FAILED, ""); |  2254   fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); | 
|  2255  |  2255  | 
|  2256   ASSERT_TRUE(resolver->pending_requests().empty()); |  2256   ASSERT_TRUE(resolver->pending_requests().empty()); | 
|  2257  |  2257  | 
|  2258   // Wait for completion callback, and verify it used DIRECT. |  2258   // Wait for completion callback, and verify it used DIRECT. | 
|  2259   EXPECT_EQ(OK, callback1.WaitForResult()); |  2259   EXPECT_EQ(OK, callback1.WaitForResult()); | 
|  2260   EXPECT_TRUE(info1.is_direct()); |  2260   EXPECT_TRUE(info1.is_direct()); | 
|  2261  |  2261  | 
|  2262   // At this point we have initialized the proxy service using a PAC script, |  2262   // At this point we have initialized the proxy service using a PAC script, | 
|  2263   // however it failed and fell-back to DIRECT. |  2263   // however it failed and fell-back to DIRECT. | 
|  2264   // |  2264   // | 
| (...skipping 332 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2597   // special unit-test mode. |  2597   // special unit-test mode. | 
|  2598   fetcher->WaitUntilFetch(); |  2598   fetcher->WaitUntilFetch(); | 
|  2599  |  2599  | 
|  2600   ASSERT_TRUE(resolver->pending_requests().empty()); |  2600   ASSERT_TRUE(resolver->pending_requests().empty()); | 
|  2601  |  2601  | 
|  2602   // Make sure that our background checker is trying to download the expected |  2602   // Make sure that our background checker is trying to download the expected | 
|  2603   // PAC script (same one as before). This time we will simulate a failure |  2603   // PAC script (same one as before). This time we will simulate a failure | 
|  2604   // to download the script. |  2604   // to download the script. | 
|  2605   EXPECT_TRUE(fetcher->has_pending_request()); |  2605   EXPECT_TRUE(fetcher->has_pending_request()); | 
|  2606   EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |  2606   EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); | 
|  2607   fetcher->NotifyFetchCompletion(ERR_FAILED, ""); |  2607   fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); | 
|  2608  |  2608  | 
|  2609   MessageLoop::current()->RunUntilIdle(); |  2609   MessageLoop::current()->RunUntilIdle(); | 
|  2610  |  2610  | 
|  2611   // At this point the ProxyService should have re-configured itself to use |  2611   // At this point the ProxyService should have re-configured itself to use | 
|  2612   // DIRECT connections rather than the given proxy resolver. |  2612   // DIRECT connections rather than the given proxy resolver. | 
|  2613  |  2613  | 
|  2614   // Start a second request. |  2614   // Start a second request. | 
|  2615   ProxyInfo info2; |  2615   ProxyInfo info2; | 
|  2616   TestCompletionCallback callback2; |  2616   TestCompletionCallback callback2; | 
|  2617   rv = service.ResolveProxy( |  2617   rv = service.ResolveProxy( | 
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2764   EXPECT_EQ(OK, callback2.WaitForResult()); |  2764   EXPECT_EQ(OK, callback2.WaitForResult()); | 
|  2765   EXPECT_EQ("request2:80", info2.proxy_server().ToURI()); |  2765   EXPECT_EQ("request2:80", info2.proxy_server().ToURI()); | 
|  2766  |  2766  | 
|  2767   // In response to getting that resolve request, the poller should have |  2767   // In response to getting that resolve request, the poller should have | 
|  2768   // started the next poll, and made it as far as to request the download. |  2768   // started the next poll, and made it as far as to request the download. | 
|  2769  |  2769  | 
|  2770   EXPECT_TRUE(fetcher->has_pending_request()); |  2770   EXPECT_TRUE(fetcher->has_pending_request()); | 
|  2771   EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); |  2771   EXPECT_EQ(GURL("http://foopy/proxy.pac"), fetcher->pending_request_url()); | 
|  2772  |  2772  | 
|  2773   // This time we will fail the download, to simulate a PAC script change. |  2773   // This time we will fail the download, to simulate a PAC script change. | 
|  2774   fetcher->NotifyFetchCompletion(ERR_FAILED, ""); |  2774   fetcher->NotifyFetchCompletion(ERR_FAILED, std::string()); | 
|  2775  |  2775  | 
|  2776   // Drain the message loop, so ProxyService is notified of the change |  2776   // Drain the message loop, so ProxyService is notified of the change | 
|  2777   // and has a chance to re-configure itself. |  2777   // and has a chance to re-configure itself. | 
|  2778   MessageLoop::current()->RunUntilIdle(); |  2778   MessageLoop::current()->RunUntilIdle(); | 
|  2779  |  2779  | 
|  2780   // Start a third request -- this time we expect to get a direct connection |  2780   // Start a third request -- this time we expect to get a direct connection | 
|  2781   // since the PAC script poller experienced a failure. |  2781   // since the PAC script poller experienced a failure. | 
|  2782   ProxyInfo info3; |  2782   ProxyInfo info3; | 
|  2783   TestCompletionCallback callback3; |  2783   TestCompletionCallback callback3; | 
|  2784   rv = service.ResolveProxy( |  2784   rv = service.ResolveProxy( | 
|  2785       GURL("http://request3"), &info3, callback3.callback(), NULL, |  2785       GURL("http://request3"), &info3, callback3.callback(), NULL, | 
|  2786       BoundNetLog()); |  2786       BoundNetLog()); | 
|  2787   EXPECT_EQ(OK, rv); |  2787   EXPECT_EQ(OK, rv); | 
|  2788   EXPECT_TRUE(info3.is_direct()); |  2788   EXPECT_TRUE(info3.is_direct()); | 
|  2789 } |  2789 } | 
|  2790  |  2790  | 
|  2791 }  // namespace net |  2791 }  // namespace net | 
| OLD | NEW |