| Index: net/url_request/url_request_throttler_unittest.cc
|
| diff --git a/net/url_request/url_request_throttler_unittest.cc b/net/url_request/url_request_throttler_unittest.cc
|
| index 32f94ff0fd562bf2e17016b12e424c1c36ee5cd5..9ae9c7b1c91a22a76348e91b669114f11a1410d8 100644
|
| --- a/net/url_request/url_request_throttler_unittest.cc
|
| +++ b/net/url_request/url_request_throttler_unittest.cc
|
| @@ -33,17 +33,17 @@ const char kRequestThrottledHistogramName[] = "Throttling.RequestThrottled";
|
| class MockURLRequestThrottlerEntry : public URLRequestThrottlerEntry {
|
| public:
|
| explicit MockURLRequestThrottlerEntry(
|
| - net::URLRequestThrottlerManager* manager)
|
| - : net::URLRequestThrottlerEntry(manager, std::string()),
|
| + URLRequestThrottlerManager* manager)
|
| + : URLRequestThrottlerEntry(manager, std::string()),
|
| mock_backoff_entry_(&backoff_policy_) {
|
| InitPolicy();
|
| }
|
| MockURLRequestThrottlerEntry(
|
| - net::URLRequestThrottlerManager* manager,
|
| + URLRequestThrottlerManager* manager,
|
| const TimeTicks& exponential_backoff_release_time,
|
| const TimeTicks& sliding_window_release_time,
|
| const TimeTicks& fake_now)
|
| - : net::URLRequestThrottlerEntry(manager, std::string()),
|
| + : URLRequestThrottlerEntry(manager, std::string()),
|
| fake_time_now_(fake_now),
|
| mock_backoff_entry_(&backoff_policy_) {
|
| InitPolicy();
|
| @@ -201,20 +201,24 @@ TEST_F(URLRequestThrottlerEntryTest, CanThrottleRequest) {
|
| entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1));
|
|
|
| d.set_can_throttle_requests(false);
|
| - EXPECT_FALSE(entry_->ShouldRejectRequest(request_));
|
| + EXPECT_FALSE(entry_->ShouldRejectRequest(request_,
|
| + context_.network_delegate()));
|
| d.set_can_throttle_requests(true);
|
| - EXPECT_TRUE(entry_->ShouldRejectRequest(request_));
|
| + EXPECT_TRUE(entry_->ShouldRejectRequest(request_,
|
| + context_.network_delegate()));
|
| }
|
|
|
| TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) {
|
| base::StatisticsDeltaReader statistics_delta_reader;
|
| entry_->set_exponential_backoff_release_time(
|
| entry_->fake_time_now_ + TimeDelta::FromMilliseconds(1));
|
| - EXPECT_TRUE(entry_->ShouldRejectRequest(request_));
|
| + EXPECT_TRUE(entry_->ShouldRejectRequest(request_,
|
| + context_.network_delegate()));
|
|
|
| // Also end-to-end test the load flags exceptions.
|
| request_.SetLoadFlags(LOAD_MAYBE_USER_GESTURE);
|
| - EXPECT_FALSE(entry_->ShouldRejectRequest(request_));
|
| + EXPECT_FALSE(entry_->ShouldRejectRequest(request_,
|
| + context_.network_delegate()));
|
|
|
| scoped_ptr<base::HistogramSamples> samples(
|
| statistics_delta_reader.GetHistogramSamplesSinceCreation(
|
| @@ -226,10 +230,12 @@ TEST_F(URLRequestThrottlerEntryTest, InterfaceDuringExponentialBackoff) {
|
| TEST_F(URLRequestThrottlerEntryTest, InterfaceNotDuringExponentialBackoff) {
|
| base::StatisticsDeltaReader statistics_delta_reader;
|
| entry_->set_exponential_backoff_release_time(entry_->fake_time_now_);
|
| - EXPECT_FALSE(entry_->ShouldRejectRequest(request_));
|
| + EXPECT_FALSE(entry_->ShouldRejectRequest(request_,
|
| + context_.network_delegate()));
|
| entry_->set_exponential_backoff_release_time(
|
| entry_->fake_time_now_ - TimeDelta::FromMilliseconds(1));
|
| - EXPECT_FALSE(entry_->ShouldRejectRequest(request_));
|
| + EXPECT_FALSE(entry_->ShouldRejectRequest(request_,
|
| + context_.network_delegate()));
|
|
|
| scoped_ptr<base::HistogramSamples> samples(
|
| statistics_delta_reader.GetHistogramSamplesSinceCreation(
|
| @@ -358,6 +364,34 @@ class URLRequestThrottlerManagerTest : public testing::Test {
|
| request_.SetLoadFlags(0);
|
| }
|
|
|
| + void ExpectEntryAllowsAllOnErrorIfOptedOut(
|
| + URLRequestThrottlerEntryInterface* entry,
|
| + bool opted_out,
|
| + const URLRequest& request) {
|
| + EXPECT_FALSE(entry->ShouldRejectRequest(request,
|
| + context_.network_delegate()));
|
| + MockURLRequestThrottlerHeaderAdapter failure_adapter(503);
|
| + for (int i = 0; i < 10; ++i) {
|
| + // Host doesn't really matter in this scenario so we skip it.
|
| + entry->UpdateWithResponse(std::string(), &failure_adapter);
|
| + }
|
| + EXPECT_NE(opted_out, entry->ShouldRejectRequest(
|
| + request, context_.network_delegate()));
|
| +
|
| + if (opted_out) {
|
| + // We're not mocking out GetTimeNow() in this scenario
|
| + // so add a 100 ms buffer to avoid flakiness (that should always
|
| + // give enough time to get from the TimeTicks::Now() call here
|
| + // to the TimeTicks::Now() call in the entry class).
|
| + EXPECT_GT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100),
|
| + entry->GetExponentialBackoffReleaseTime());
|
| + } else {
|
| + // As above, add 100 ms.
|
| + EXPECT_LT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100),
|
| + entry->GetExponentialBackoffReleaseTime());
|
| + }
|
| + }
|
| +
|
| // context_ must be declared before request_.
|
| TestURLRequestContext context_;
|
| TestURLRequest request_;
|
| @@ -427,35 +461,9 @@ TEST_F(URLRequestThrottlerManagerTest, IsHostBeingRegistered) {
|
| EXPECT_EQ(3, manager.GetNumberOfEntries());
|
| }
|
|
|
| -void ExpectEntryAllowsAllOnErrorIfOptedOut(
|
| - net::URLRequestThrottlerEntryInterface* entry,
|
| - bool opted_out,
|
| - const URLRequest& request) {
|
| - EXPECT_FALSE(entry->ShouldRejectRequest(request));
|
| - MockURLRequestThrottlerHeaderAdapter failure_adapter(503);
|
| - for (int i = 0; i < 10; ++i) {
|
| - // Host doesn't really matter in this scenario so we skip it.
|
| - entry->UpdateWithResponse(std::string(), &failure_adapter);
|
| - }
|
| - EXPECT_NE(opted_out, entry->ShouldRejectRequest(request));
|
| -
|
| - if (opted_out) {
|
| - // We're not mocking out GetTimeNow() in this scenario
|
| - // so add a 100 ms buffer to avoid flakiness (that should always
|
| - // give enough time to get from the TimeTicks::Now() call here
|
| - // to the TimeTicks::Now() call in the entry class).
|
| - EXPECT_GT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100),
|
| - entry->GetExponentialBackoffReleaseTime());
|
| - } else {
|
| - // As above, add 100 ms.
|
| - EXPECT_LT(TimeTicks::Now() + TimeDelta::FromMilliseconds(100),
|
| - entry->GetExponentialBackoffReleaseTime());
|
| - }
|
| -}
|
| -
|
| TEST_F(URLRequestThrottlerManagerTest, OptOutHeader) {
|
| MockURLRequestThrottlerManager manager;
|
| - scoped_refptr<net::URLRequestThrottlerEntryInterface> entry =
|
| + scoped_refptr<URLRequestThrottlerEntryInterface> entry =
|
| manager.RegisterRequestUrl(GURL("http://www.google.com/yodude"));
|
|
|
| // Fake a response with the opt-out header.
|
| @@ -470,12 +478,12 @@ TEST_F(URLRequestThrottlerManagerTest, OptOutHeader) {
|
|
|
| // Ensure that a freshly created entry (for a different URL on an
|
| // already opted-out host) also gets "always allow" behavior.
|
| - scoped_refptr<net::URLRequestThrottlerEntryInterface> other_entry =
|
| + scoped_refptr<URLRequestThrottlerEntryInterface> other_entry =
|
| manager.RegisterRequestUrl(GURL("http://www.google.com/bingobob"));
|
| ExpectEntryAllowsAllOnErrorIfOptedOut(other_entry.get(), true, request_);
|
|
|
| // Fake a response with the opt-out header incorrectly specified.
|
| - scoped_refptr<net::URLRequestThrottlerEntryInterface> no_opt_out_entry =
|
| + scoped_refptr<URLRequestThrottlerEntryInterface> no_opt_out_entry =
|
| manager.RegisterRequestUrl(GURL("http://www.nike.com/justdoit"));
|
| MockURLRequestThrottlerHeaderAdapter wrong_adapter(
|
| std::string(), "yesplease", 200);
|
| @@ -484,7 +492,7 @@ TEST_F(URLRequestThrottlerManagerTest, OptOutHeader) {
|
| no_opt_out_entry.get(), false, request_);
|
|
|
| // A localhost entry should always be opted out.
|
| - scoped_refptr<net::URLRequestThrottlerEntryInterface> localhost_entry =
|
| + scoped_refptr<URLRequestThrottlerEntryInterface> localhost_entry =
|
| manager.RegisterRequestUrl(GURL("http://localhost/hello"));
|
| ExpectEntryAllowsAllOnErrorIfOptedOut(localhost_entry.get(), true, request_);
|
| }
|
| @@ -492,14 +500,15 @@ TEST_F(URLRequestThrottlerManagerTest, OptOutHeader) {
|
| TEST_F(URLRequestThrottlerManagerTest, ClearOnNetworkChange) {
|
| for (int i = 0; i < 3; ++i) {
|
| MockURLRequestThrottlerManager manager;
|
| - scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_before =
|
| + scoped_refptr<URLRequestThrottlerEntryInterface> entry_before =
|
| manager.RegisterRequestUrl(GURL("http://www.example.com/"));
|
| MockURLRequestThrottlerHeaderAdapter failure_adapter(503);
|
| for (int j = 0; j < 10; ++j) {
|
| // Host doesn't really matter in this scenario so we skip it.
|
| entry_before->UpdateWithResponse(std::string(), &failure_adapter);
|
| }
|
| - EXPECT_TRUE(entry_before->ShouldRejectRequest(request_));
|
| + EXPECT_TRUE(entry_before->ShouldRejectRequest(request_,
|
| + context_.network_delegate()));
|
|
|
| switch (i) {
|
| case 0:
|
| @@ -507,19 +516,19 @@ TEST_F(URLRequestThrottlerManagerTest, ClearOnNetworkChange) {
|
| break;
|
| case 1:
|
| manager.OnConnectionTypeChanged(
|
| - net::NetworkChangeNotifier::CONNECTION_UNKNOWN);
|
| + NetworkChangeNotifier::CONNECTION_UNKNOWN);
|
| break;
|
| case 2:
|
| - manager.OnConnectionTypeChanged(
|
| - net::NetworkChangeNotifier::CONNECTION_NONE);
|
| + manager.OnConnectionTypeChanged(NetworkChangeNotifier::CONNECTION_NONE);
|
| break;
|
| default:
|
| FAIL();
|
| }
|
|
|
| - scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_after =
|
| + scoped_refptr<URLRequestThrottlerEntryInterface> entry_after =
|
| manager.RegisterRequestUrl(GURL("http://www.example.com/"));
|
| - EXPECT_FALSE(entry_after->ShouldRejectRequest(request_));
|
| + EXPECT_FALSE(entry_after->ShouldRejectRequest(
|
| + request_, context_.network_delegate()));
|
| }
|
| }
|
|
|
|
|