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/url_request/url_request_throttler_manager.h" | 5 #include "net/url_request/url_request_throttler_manager.h" |
6 | 6 |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/metrics/histogram_samples.h" | 9 #include "base/metrics/histogram_samples.h" |
10 #include "base/metrics/statistics_recorder.h" | 10 #include "base/metrics/statistics_recorder.h" |
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 manager.RegisterRequestUrl(GURL("http://www.google.com/yodude")); | 499 manager.RegisterRequestUrl(GURL("http://www.google.com/yodude")); |
500 | 500 |
501 // Fake a response with the opt-out header. | 501 // Fake a response with the opt-out header. |
502 MockURLRequestThrottlerHeaderAdapter response_adapter( | 502 MockURLRequestThrottlerHeaderAdapter response_adapter( |
503 std::string(), | 503 std::string(), |
504 MockURLRequestThrottlerEntry::kExponentialThrottlingDisableValue, | 504 MockURLRequestThrottlerEntry::kExponentialThrottlingDisableValue, |
505 200); | 505 200); |
506 entry->UpdateWithResponse("www.google.com", &response_adapter); | 506 entry->UpdateWithResponse("www.google.com", &response_adapter); |
507 | 507 |
508 // Ensure that the same entry on error always allows everything. | 508 // Ensure that the same entry on error always allows everything. |
509 ExpectEntryAllowsAllOnErrorIfOptedOut(entry, true, request_); | 509 ExpectEntryAllowsAllOnErrorIfOptedOut(entry.get(), true, request_); |
510 | 510 |
511 // Ensure that a freshly created entry (for a different URL on an | 511 // Ensure that a freshly created entry (for a different URL on an |
512 // already opted-out host) also gets "always allow" behavior. | 512 // already opted-out host) also gets "always allow" behavior. |
513 scoped_refptr<net::URLRequestThrottlerEntryInterface> other_entry = | 513 scoped_refptr<net::URLRequestThrottlerEntryInterface> other_entry = |
514 manager.RegisterRequestUrl(GURL("http://www.google.com/bingobob")); | 514 manager.RegisterRequestUrl(GURL("http://www.google.com/bingobob")); |
515 ExpectEntryAllowsAllOnErrorIfOptedOut(other_entry, true, request_); | 515 ExpectEntryAllowsAllOnErrorIfOptedOut(other_entry.get(), true, request_); |
516 | 516 |
517 // Fake a response with the opt-out header incorrectly specified. | 517 // Fake a response with the opt-out header incorrectly specified. |
518 scoped_refptr<net::URLRequestThrottlerEntryInterface> no_opt_out_entry = | 518 scoped_refptr<net::URLRequestThrottlerEntryInterface> no_opt_out_entry = |
519 manager.RegisterRequestUrl(GURL("http://www.nike.com/justdoit")); | 519 manager.RegisterRequestUrl(GURL("http://www.nike.com/justdoit")); |
520 MockURLRequestThrottlerHeaderAdapter wrong_adapter( | 520 MockURLRequestThrottlerHeaderAdapter wrong_adapter( |
521 std::string(), "yesplease", 200); | 521 std::string(), "yesplease", 200); |
522 no_opt_out_entry->UpdateWithResponse("www.nike.com", &wrong_adapter); | 522 no_opt_out_entry->UpdateWithResponse("www.nike.com", &wrong_adapter); |
523 ExpectEntryAllowsAllOnErrorIfOptedOut(no_opt_out_entry, false, request_); | 523 ExpectEntryAllowsAllOnErrorIfOptedOut( |
| 524 no_opt_out_entry.get(), false, request_); |
524 | 525 |
525 // A localhost entry should always be opted out. | 526 // A localhost entry should always be opted out. |
526 scoped_refptr<net::URLRequestThrottlerEntryInterface> localhost_entry = | 527 scoped_refptr<net::URLRequestThrottlerEntryInterface> localhost_entry = |
527 manager.RegisterRequestUrl(GURL("http://localhost/hello")); | 528 manager.RegisterRequestUrl(GURL("http://localhost/hello")); |
528 ExpectEntryAllowsAllOnErrorIfOptedOut(localhost_entry, true, request_); | 529 ExpectEntryAllowsAllOnErrorIfOptedOut(localhost_entry.get(), true, request_); |
529 } | 530 } |
530 | 531 |
531 TEST_F(URLRequestThrottlerManagerTest, ClearOnNetworkChange) { | 532 TEST_F(URLRequestThrottlerManagerTest, ClearOnNetworkChange) { |
532 for (int i = 0; i < 3; ++i) { | 533 for (int i = 0; i < 3; ++i) { |
533 MockURLRequestThrottlerManager manager; | 534 MockURLRequestThrottlerManager manager; |
534 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_before = | 535 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_before = |
535 manager.RegisterRequestUrl(GURL("http://www.example.com/")); | 536 manager.RegisterRequestUrl(GURL("http://www.example.com/")); |
536 MockURLRequestThrottlerHeaderAdapter failure_adapter(503); | 537 MockURLRequestThrottlerHeaderAdapter failure_adapter(503); |
537 for (int j = 0; j < 10; ++j) { | 538 for (int j = 0; j < 10; ++j) { |
538 // Host doesn't really matter in this scenario so we skip it. | 539 // Host doesn't really matter in this scenario so we skip it. |
(...skipping 17 matching lines...) Expand all Loading... |
556 FAIL(); | 557 FAIL(); |
557 } | 558 } |
558 | 559 |
559 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_after = | 560 scoped_refptr<net::URLRequestThrottlerEntryInterface> entry_after = |
560 manager.RegisterRequestUrl(GURL("http://www.example.com/")); | 561 manager.RegisterRequestUrl(GURL("http://www.example.com/")); |
561 EXPECT_FALSE(entry_after->ShouldRejectRequest(request_)); | 562 EXPECT_FALSE(entry_after->ShouldRejectRequest(request_)); |
562 } | 563 } |
563 } | 564 } |
564 | 565 |
565 } // namespace net | 566 } // namespace net |
OLD | NEW |