Chromium Code Reviews| Index: chrome/service/cloud_print/cloud_print_url_fetcher_unittest.cc |
| diff --git a/chrome/service/cloud_print/cloud_print_url_fetcher_unittest.cc b/chrome/service/cloud_print/cloud_print_url_fetcher_unittest.cc |
| index 5103ec891282d43a3c96bb4feb80572b0b7ba131..ad2ee5ccc00cf431b5baaa823fa4816d78071af9 100644 |
| --- a/chrome/service/cloud_print/cloud_print_url_fetcher_unittest.cc |
| +++ b/chrome/service/cloud_print/cloud_print_url_fetcher_unittest.cc |
| @@ -30,29 +30,52 @@ class TrackingTestURLRequestContextGetter |
| : public TestURLRequestContextGetter { |
| public: |
| explicit TrackingTestURLRequestContextGetter( |
| - base::MessageLoopProxy* io_message_loop_proxy) |
| - : TestURLRequestContextGetter(io_message_loop_proxy) { |
| + base::MessageLoopProxy* io_message_loop_proxy, |
| + net::URLRequestThrottlerManager* throttler_manager) |
| + : TestURLRequestContextGetter(io_message_loop_proxy), |
| + throttler_manager_(throttler_manager), |
| + context_(NULL) { |
| g_request_context_getter_instances++; |
| } |
| + |
| + virtual TestURLRequestContext* GetURLRequestContext() OVERRIDE { |
| + if (!context_) { |
| + context_ = new TestURLRequestContext(true); |
| + context_->set_throttler_manager(throttler_manager_); |
| + context_->Init(); |
| + } |
| + return context_.get(); |
| + } |
| + |
| protected: |
| virtual ~TrackingTestURLRequestContextGetter() { |
| g_request_context_getter_instances--; |
| } |
| + |
| + private: |
| + // Not owned here. |
| + net::URLRequestThrottlerManager* throttler_manager_; |
| + scoped_refptr<TestURLRequestContext> context_; |
| }; |
| class TestCloudPrintURLFetcher : public CloudPrintURLFetcher { |
| public: |
| explicit TestCloudPrintURLFetcher( |
| - base::MessageLoopProxy* io_message_loop_proxy) |
| - : io_message_loop_proxy_(io_message_loop_proxy) { |
| + base::MessageLoopProxy* io_message_loop_proxy, |
| + net::URLRequestThrottlerManager* throttler_manager) |
| + : io_message_loop_proxy_(io_message_loop_proxy), |
| + throttler_manager_(throttler_manager) { |
| } |
| virtual net::URLRequestContextGetter* GetRequestContextGetter() { |
| return new TrackingTestURLRequestContextGetter( |
| - io_message_loop_proxy_.get()); |
| + io_message_loop_proxy_.get(), throttler_manager_); |
| } |
| private: |
| scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; |
| + |
| + // Not owned here. |
| + net::URLRequestThrottlerManager* throttler_manager_; |
| }; |
| class CloudPrintURLFetcherTest : public testing::Test, |
| @@ -85,6 +108,10 @@ class CloudPrintURLFetcherTest : public testing::Test, |
| return io_message_loop_proxy_; |
| } |
| + net::URLRequestThrottlerManager* throttler_manager() { |
| + return &throttler_manager_; |
| + } |
| + |
| protected: |
| virtual void SetUp() { |
| testing::Test::SetUp(); |
| @@ -110,6 +137,10 @@ class CloudPrintURLFetcherTest : public testing::Test, |
| int max_retries_; |
| Time start_time_; |
| scoped_refptr<CloudPrintURLFetcher> fetcher_; |
| + |
| + // We set this as the throttler manager for the |
| + // TestURLRequestContext we create. |
| + net::URLRequestThrottlerManager throttler_manager_; |
|
eroman
2012/04/24 19:05:57
I wonder if it wouldn't be better to declare this
Jói
2012/04/27 13:20:26
Made it a member of the TestCloudPrintURLFetcher.
|
| }; |
| class CloudPrintURLFetcherBasicTest : public CloudPrintURLFetcherTest { |
| @@ -183,7 +214,8 @@ class CloudPrintURLFetcherRetryBackoffTest : public CloudPrintURLFetcherTest { |
| void CloudPrintURLFetcherTest::CreateFetcher(const GURL& url, int max_retries) { |
| - fetcher_ = new TestCloudPrintURLFetcher(io_message_loop_proxy()); |
| + fetcher_ = new TestCloudPrintURLFetcher(io_message_loop_proxy(), |
| + throttler_manager()); |
| max_retries_ = max_retries; |
| start_time_ = Time::Now(); |
| fetcher_->StartGetRequest(url, this, max_retries_, std::string()); |
| @@ -323,17 +355,14 @@ TEST_F(CloudPrintURLFetcherOverloadTest, Protect) { |
| // Registers an entry for test url. It only allows 3 requests to be sent |
| // in 200 milliseconds. |
| - net::URLRequestThrottlerManager* manager = |
| - net::URLRequestThrottlerManager::GetInstance(); |
| scoped_refptr<net::URLRequestThrottlerEntry> entry( |
| - new net::URLRequestThrottlerEntry(manager, "", 200, 3, 1, 2.0, 0.0, 256)); |
| - manager->OverrideEntryForTests(url, entry); |
| + new net::URLRequestThrottlerEntry( |
| + throttler_manager(), "", 200, 3, 1, 2.0, 0.0, 256)); |
| + throttler_manager()->OverrideEntryForTests(url, entry); |
| CreateFetcher(url, 11); |
| MessageLoop::current()->Run(); |
| - |
| - net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url); |
| } |
| // http://code.google.com/p/chromium/issues/detail?id=60426 |
| @@ -349,17 +378,14 @@ TEST_F(CloudPrintURLFetcherRetryBackoffTest, DISABLED_GiveUp) { |
| // new_backoff = 2.0 * old_backoff + 0 |
| // and maximum backoff time is 256 milliseconds. |
| // Maximum retries allowed is set to 11. |
| - net::URLRequestThrottlerManager* manager = |
| - net::URLRequestThrottlerManager::GetInstance(); |
| scoped_refptr<net::URLRequestThrottlerEntry> entry( |
| - new net::URLRequestThrottlerEntry(manager, "", 200, 3, 1, 2.0, 0.0, 256)); |
| - manager->OverrideEntryForTests(url, entry); |
| + new net::URLRequestThrottlerEntry( |
| + throttler_manager(), "", 200, 3, 1, 2.0, 0.0, 256)); |
| + throttler_manager()->OverrideEntryForTests(url, entry); |
| CreateFetcher(url, 11); |
| MessageLoop::current()->Run(); |
| - |
| - net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url); |
| } |
| } // namespace. |