| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/message_loop_proxy.h" | 5 #include "base/message_loop_proxy.h" |
| 6 #include "base/threading/thread.h" | 6 #include "base/threading/thread.h" |
| 7 #include "base/synchronization/waitable_event.h" | 7 #include "base/synchronization/waitable_event.h" |
| 8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
| 9 #include "chrome/common/chrome_plugin_lib.h" | 9 #include "chrome/common/chrome_plugin_lib.h" |
| 10 #include "chrome/common/net/url_fetcher.h" | 10 #include "chrome/common/net/url_fetcher.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 namespace { | 27 namespace { |
| 28 | 28 |
| 29 const FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data"); | 29 const FilePath::CharType kDocRoot[] = FILE_PATH_LITERAL("chrome/test/data"); |
| 30 | 30 |
| 31 class TestURLRequestContextGetter : public URLRequestContextGetter { | 31 class TestURLRequestContextGetter : public URLRequestContextGetter { |
| 32 public: | 32 public: |
| 33 explicit TestURLRequestContextGetter( | 33 explicit TestURLRequestContextGetter( |
| 34 base::MessageLoopProxy* io_message_loop_proxy) | 34 base::MessageLoopProxy* io_message_loop_proxy) |
| 35 : io_message_loop_proxy_(io_message_loop_proxy) { | 35 : io_message_loop_proxy_(io_message_loop_proxy) { |
| 36 } | 36 } |
| 37 virtual URLRequestContext* GetURLRequestContext() { | 37 virtual net::URLRequestContext* GetURLRequestContext() { |
| 38 if (!context_) | 38 if (!context_) |
| 39 context_ = new TestURLRequestContext(); | 39 context_ = new TestURLRequestContext(); |
| 40 return context_; | 40 return context_; |
| 41 } | 41 } |
| 42 virtual scoped_refptr<base::MessageLoopProxy> GetIOMessageLoopProxy() const { | 42 virtual scoped_refptr<base::MessageLoopProxy> GetIOMessageLoopProxy() const { |
| 43 return io_message_loop_proxy_; | 43 return io_message_loop_proxy_; |
| 44 } | 44 } |
| 45 | 45 |
| 46 protected: | 46 protected: |
| 47 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; | 47 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; |
| 48 | 48 |
| 49 private: | 49 private: |
| 50 ~TestURLRequestContextGetter() {} | 50 ~TestURLRequestContextGetter() {} |
| 51 | 51 |
| 52 scoped_refptr<URLRequestContext> context_; | 52 scoped_refptr<net::URLRequestContext> context_; |
| 53 }; | 53 }; |
| 54 | 54 |
| 55 class URLFetcherTest : public testing::Test, public URLFetcher::Delegate { | 55 class URLFetcherTest : public testing::Test, public URLFetcher::Delegate { |
| 56 public: | 56 public: |
| 57 URLFetcherTest() : fetcher_(NULL) { } | 57 URLFetcherTest() : fetcher_(NULL) { } |
| 58 | 58 |
| 59 // Creates a URLFetcher, using the program's main thread to do IO. | 59 // Creates a URLFetcher, using the program's main thread to do IO. |
| 60 virtual void CreateFetcher(const GURL& url); | 60 virtual void CreateFetcher(const GURL& url); |
| 61 | 61 |
| 62 // URLFetcher::Delegate | 62 // URLFetcher::Delegate |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 } | 199 } |
| 200 }; | 200 }; |
| 201 | 201 |
| 202 class CancelTestURLRequestContextGetter : public URLRequestContextGetter { | 202 class CancelTestURLRequestContextGetter : public URLRequestContextGetter { |
| 203 public: | 203 public: |
| 204 explicit CancelTestURLRequestContextGetter( | 204 explicit CancelTestURLRequestContextGetter( |
| 205 base::MessageLoopProxy* io_message_loop_proxy) | 205 base::MessageLoopProxy* io_message_loop_proxy) |
| 206 : io_message_loop_proxy_(io_message_loop_proxy), | 206 : io_message_loop_proxy_(io_message_loop_proxy), |
| 207 context_created_(false, false) { | 207 context_created_(false, false) { |
| 208 } | 208 } |
| 209 virtual URLRequestContext* GetURLRequestContext() { | 209 virtual net::URLRequestContext* GetURLRequestContext() { |
| 210 if (!context_) { | 210 if (!context_) { |
| 211 context_ = new CancelTestURLRequestContext(); | 211 context_ = new CancelTestURLRequestContext(); |
| 212 context_created_.Signal(); | 212 context_created_.Signal(); |
| 213 } | 213 } |
| 214 return context_; | 214 return context_; |
| 215 } | 215 } |
| 216 virtual scoped_refptr<base::MessageLoopProxy> GetIOMessageLoopProxy() const { | 216 virtual scoped_refptr<base::MessageLoopProxy> GetIOMessageLoopProxy() const { |
| 217 return io_message_loop_proxy_; | 217 return io_message_loop_proxy_; |
| 218 } | 218 } |
| 219 void WaitForContextCreation() { | 219 void WaitForContextCreation() { |
| 220 context_created_.Wait(); | 220 context_created_.Wait(); |
| 221 } | 221 } |
| 222 | 222 |
| 223 private: | 223 private: |
| 224 ~CancelTestURLRequestContextGetter() {} | 224 ~CancelTestURLRequestContextGetter() {} |
| 225 | 225 |
| 226 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; | 226 scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; |
| 227 base::WaitableEvent context_created_; | 227 base::WaitableEvent context_created_; |
| 228 scoped_refptr<URLRequestContext> context_; | 228 scoped_refptr<net::URLRequestContext> context_; |
| 229 }; | 229 }; |
| 230 | 230 |
| 231 // Version of URLFetcherTest that tests retying the same request twice. | 231 // Version of URLFetcherTest that tests retying the same request twice. |
| 232 class URLFetcherMultipleAttemptTest : public URLFetcherTest { | 232 class URLFetcherMultipleAttemptTest : public URLFetcherTest { |
| 233 public: | 233 public: |
| 234 // URLFetcher::Delegate | 234 // URLFetcher::Delegate |
| 235 virtual void OnURLFetchComplete(const URLFetcher* source, | 235 virtual void OnURLFetchComplete(const URLFetcher* source, |
| 236 const GURL& url, | 236 const GURL& url, |
| 237 const net::URLRequestStatus& status, | 237 const net::URLRequestStatus& status, |
| 238 int response_code, | 238 int response_code, |
| (...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 431 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); | 431 io_message_loop_proxy()->PostTask(FROM_HERE, new MessageLoop::QuitTask()); |
| 432 } | 432 } |
| 433 | 433 |
| 434 void URLFetcherCancelTest::CreateFetcher(const GURL& url) { | 434 void URLFetcherCancelTest::CreateFetcher(const GURL& url) { |
| 435 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); | 435 fetcher_ = new URLFetcher(url, URLFetcher::GET, this); |
| 436 CancelTestURLRequestContextGetter* context_getter = | 436 CancelTestURLRequestContextGetter* context_getter = |
| 437 new CancelTestURLRequestContextGetter(io_message_loop_proxy()); | 437 new CancelTestURLRequestContextGetter(io_message_loop_proxy()); |
| 438 fetcher_->set_request_context(context_getter); | 438 fetcher_->set_request_context(context_getter); |
| 439 fetcher_->set_max_retries(2); | 439 fetcher_->set_max_retries(2); |
| 440 fetcher_->Start(); | 440 fetcher_->Start(); |
| 441 // We need to wait for the creation of the URLRequestContext, since we | 441 // We need to wait for the creation of the net::URLRequestContext, since we |
| 442 // rely on it being destroyed as a signal to end the test. | 442 // rely on it being destroyed as a signal to end the test. |
| 443 context_getter->WaitForContextCreation(); | 443 context_getter->WaitForContextCreation(); |
| 444 CancelRequest(); | 444 CancelRequest(); |
| 445 } | 445 } |
| 446 | 446 |
| 447 void URLFetcherCancelTest::OnURLFetchComplete( | 447 void URLFetcherCancelTest::OnURLFetchComplete( |
| 448 const URLFetcher* source, | 448 const URLFetcher* source, |
| 449 const GURL& url, | 449 const GURL& url, |
| 450 const net::URLRequestStatus& status, | 450 const net::URLRequestStatus& status, |
| 451 int response_code, | 451 int response_code, |
| (...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 676 | 676 |
| 677 // Create the fetcher on the main thread. Since IO will happen on the main | 677 // Create the fetcher on the main thread. Since IO will happen on the main |
| 678 // thread, this will test URLFetcher's ability to do everything on one | 678 // thread, this will test URLFetcher's ability to do everything on one |
| 679 // thread. | 679 // thread. |
| 680 CreateFetcher(test_server.GetURL("defaultresponse")); | 680 CreateFetcher(test_server.GetURL("defaultresponse")); |
| 681 | 681 |
| 682 MessageLoop::current()->Run(); | 682 MessageLoop::current()->Run(); |
| 683 } | 683 } |
| 684 | 684 |
| 685 } // namespace. | 685 } // namespace. |
| OLD | NEW |