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/multi_threaded_proxy_resolver.h" | 5 #include "net/proxy/multi_threaded_proxy_resolver.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 #include <vector> | 8 #include <vector> |
9 | 9 |
10 #include "base/memory/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
495 // interesting case to test. | 495 // interesting case to test. |
496 factory().resolvers()[0]->SetResolveLatency( | 496 factory().resolvers()[0]->SetResolveLatency( |
497 base::TimeDelta::FromMilliseconds(100)); | 497 base::TimeDelta::FromMilliseconds(100)); |
498 | 498 |
499 // Unblock the worker thread and delete the underlying | 499 // Unblock the worker thread and delete the underlying |
500 // MultiThreadedProxyResolver immediately. | 500 // MultiThreadedProxyResolver immediately. |
501 factory().resolvers()[0]->Unblock(); | 501 factory().resolvers()[0]->Unblock(); |
502 ClearResolver(); | 502 ClearResolver(); |
503 | 503 |
504 // Give any posted tasks a chance to run (in case there is badness). | 504 // Give any posted tasks a chance to run (in case there is badness). |
505 base::MessageLoop::current()->RunUntilIdle(); | 505 base::RunLoop().RunUntilIdle(); |
506 | 506 |
507 // Check that none of the outstanding requests were completed. | 507 // Check that none of the outstanding requests were completed. |
508 EXPECT_FALSE(callback0.have_result()); | 508 EXPECT_FALSE(callback0.have_result()); |
509 EXPECT_FALSE(callback1.have_result()); | 509 EXPECT_FALSE(callback1.have_result()); |
510 EXPECT_FALSE(callback2.have_result()); | 510 EXPECT_FALSE(callback2.have_result()); |
511 } | 511 } |
512 | 512 |
513 // Tests setting the PAC script once, lazily creating new threads, and | 513 // Tests setting the PAC script once, lazily creating new threads, and |
514 // cancelling requests. | 514 // cancelling requests. |
515 TEST_F(MultiThreadedProxyResolverTest, ThreeThreads_Basic) { | 515 TEST_F(MultiThreadedProxyResolverTest, ThreeThreads_Basic) { |
(...skipping 17 matching lines...) Expand all Loading... |
533 BoundNetLog()); | 533 BoundNetLog()); |
534 EXPECT_EQ(ERR_IO_PENDING, rv); | 534 EXPECT_EQ(ERR_IO_PENDING, rv); |
535 | 535 |
536 // Wait for request 0 to finish. | 536 // Wait for request 0 to finish. |
537 rv = callback[0].WaitForResult(); | 537 rv = callback[0].WaitForResult(); |
538 EXPECT_EQ(0, rv); | 538 EXPECT_EQ(0, rv); |
539 EXPECT_EQ("PROXY request0:80", results[0].ToPacString()); | 539 EXPECT_EQ("PROXY request0:80", results[0].ToPacString()); |
540 ASSERT_EQ(1u, factory().resolvers().size()); | 540 ASSERT_EQ(1u, factory().resolvers().size()); |
541 EXPECT_EQ(1, factory().resolvers()[0]->request_count()); | 541 EXPECT_EQ(1, factory().resolvers()[0]->request_count()); |
542 | 542 |
543 base::MessageLoop::current()->RunUntilIdle(); | 543 base::RunLoop().RunUntilIdle(); |
544 | 544 |
545 // We now block the first resolver to ensure a request is sent to the second | 545 // We now block the first resolver to ensure a request is sent to the second |
546 // thread. | 546 // thread. |
547 factory().resolvers()[0]->Block(); | 547 factory().resolvers()[0]->Block(); |
548 rv = resolver().GetProxyForURL(GURL("http://request1"), &results[1], | 548 rv = resolver().GetProxyForURL(GURL("http://request1"), &results[1], |
549 callback[1].callback(), &request[1], | 549 callback[1].callback(), &request[1], |
550 BoundNetLog()); | 550 BoundNetLog()); |
551 EXPECT_EQ(ERR_IO_PENDING, rv); | 551 EXPECT_EQ(ERR_IO_PENDING, rv); |
552 factory().resolvers()[0]->WaitUntilBlocked(); | 552 factory().resolvers()[0]->WaitUntilBlocked(); |
553 rv = resolver().GetProxyForURL(GURL("http://request2"), &results[2], | 553 rv = resolver().GetProxyForURL(GURL("http://request2"), &results[2], |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
774 } | 774 } |
775 // The factory destructor will block until the worker thread stops, but it may | 775 // The factory destructor will block until the worker thread stops, but it may |
776 // post tasks to the origin message loop which are still pending. Run them | 776 // post tasks to the origin message loop which are still pending. Run them |
777 // now to ensure it works as expected. | 777 // now to ensure it works as expected. |
778 base::RunLoop().RunUntilIdle(); | 778 base::RunLoop().RunUntilIdle(); |
779 } | 779 } |
780 | 780 |
781 } // namespace | 781 } // namespace |
782 | 782 |
783 } // namespace net | 783 } // namespace net |
OLD | NEW |