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/dhcp_proxy_script_fetcher_win.h" | 5 #include "net/proxy/dhcp_proxy_script_fetcher_win.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
11 #include "base/message_loop/message_loop.h" | |
12 #include "base/rand_util.h" | 11 #include "base/rand_util.h" |
| 12 #include "base/run_loop.h" |
13 #include "base/test/test_timeouts.h" | 13 #include "base/test/test_timeouts.h" |
14 #include "base/threading/platform_thread.h" | 14 #include "base/threading/platform_thread.h" |
15 #include "base/timer/elapsed_timer.h" | 15 #include "base/timer/elapsed_timer.h" |
16 #include "net/base/completion_callback.h" | 16 #include "net/base/completion_callback.h" |
17 #include "net/proxy/dhcp_proxy_script_adapter_fetcher_win.h" | 17 #include "net/proxy/dhcp_proxy_script_adapter_fetcher_win.h" |
18 #include "net/url_request/url_request_test_util.h" | 18 #include "net/url_request/url_request_test_util.h" |
19 #include "testing/gtest/include/gtest/gtest.h" | 19 #include "testing/gtest/include/gtest/gtest.h" |
20 | 20 |
21 namespace net { | 21 namespace net { |
22 | 22 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 OnCompletion(0); | 86 OnCompletion(0); |
87 } | 87 } |
88 | 88 |
89 void OnCancelTimer() { | 89 void OnCancelTimer() { |
90 fetcher_->Cancel(); | 90 fetcher_->Cancel(); |
91 finished_ = true; | 91 finished_ = true; |
92 } | 92 } |
93 | 93 |
94 void WaitUntilDone() { | 94 void WaitUntilDone() { |
95 while (!finished_) { | 95 while (!finished_) { |
96 base::MessageLoop::current()->RunUntilIdle(); | 96 base::RunLoop().RunUntilIdle(); |
97 } | 97 } |
98 base::MessageLoop::current()->RunUntilIdle(); | 98 base::RunLoop().RunUntilIdle(); |
99 } | 99 } |
100 | 100 |
101 // Attempts to give worker threads time to finish. This is currently | 101 // Attempts to give worker threads time to finish. This is currently |
102 // very simplistic as completion (via completion callback or cancellation) | 102 // very simplistic as completion (via completion callback or cancellation) |
103 // immediately "detaches" any worker threads, so the best we can do is give | 103 // immediately "detaches" any worker threads, so the best we can do is give |
104 // them a little time. If we start running into Valgrind leaks, we can | 104 // them a little time. If we start running into Valgrind leaks, we can |
105 // do something a bit more clever to track worker threads even when the | 105 // do something a bit more clever to track worker threads even when the |
106 // DhcpProxyScriptFetcherWin state machine has finished. | 106 // DhcpProxyScriptFetcherWin state machine has finished. |
107 void FinishTestAllowCleanup() { | 107 void FinishTestAllowCleanup() { |
108 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(30)); | 108 base::PlatformThread::Sleep(base::TimeDelta::FromMilliseconds(30)); |
(...skipping 22 matching lines...) Expand all Loading... |
131 fetcher.fetcher_->GetPacURL().possibly_invalid_spec(); | 131 fetcher.fetcher_->GetPacURL().possibly_invalid_spec(); |
132 | 132 |
133 fetcher.FinishTestAllowCleanup(); | 133 fetcher.FinishTestAllowCleanup(); |
134 } | 134 } |
135 | 135 |
136 TEST(DhcpProxyScriptFetcherWin, RealFetchWithCancel) { | 136 TEST(DhcpProxyScriptFetcherWin, RealFetchWithCancel) { |
137 // Does a Fetch() with an immediate cancel. As before, just | 137 // Does a Fetch() with an immediate cancel. As before, just |
138 // exercises the code without stubbing out dependencies. | 138 // exercises the code without stubbing out dependencies. |
139 RealFetchTester fetcher; | 139 RealFetchTester fetcher; |
140 fetcher.RunTestWithCancel(); | 140 fetcher.RunTestWithCancel(); |
141 base::MessageLoop::current()->RunUntilIdle(); | 141 base::RunLoop().RunUntilIdle(); |
142 | 142 |
143 // Attempt to avoid Valgrind leak reports in case worker thread is | 143 // Attempt to avoid Valgrind leak reports in case worker thread is |
144 // still running. | 144 // still running. |
145 fetcher.FinishTestAllowCleanup(); | 145 fetcher.FinishTestAllowCleanup(); |
146 } | 146 } |
147 | 147 |
148 // For RealFetchWithDeferredCancel, below. | 148 // For RealFetchWithDeferredCancel, below. |
149 class DelayingDhcpProxyScriptAdapterFetcher | 149 class DelayingDhcpProxyScriptAdapterFetcher |
150 : public DhcpProxyScriptAdapterFetcher { | 150 : public DhcpProxyScriptAdapterFetcher { |
151 public: | 151 public: |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
382 | 382 |
383 void RunTest() { | 383 void RunTest() { |
384 int result = fetcher_.Fetch( | 384 int result = fetcher_.Fetch( |
385 &pac_text_, | 385 &pac_text_, |
386 base::Bind(&FetcherClient::OnCompletion, base::Unretained(this))); | 386 base::Bind(&FetcherClient::OnCompletion, base::Unretained(this))); |
387 ASSERT_EQ(ERR_IO_PENDING, result); | 387 ASSERT_EQ(ERR_IO_PENDING, result); |
388 } | 388 } |
389 | 389 |
390 void RunMessageLoopUntilComplete() { | 390 void RunMessageLoopUntilComplete() { |
391 while (!finished_) { | 391 while (!finished_) { |
392 base::MessageLoop::current()->RunUntilIdle(); | 392 base::RunLoop().RunUntilIdle(); |
393 } | 393 } |
394 base::MessageLoop::current()->RunUntilIdle(); | 394 base::RunLoop().RunUntilIdle(); |
395 } | 395 } |
396 | 396 |
397 void RunMessageLoopUntilWorkerDone() { | 397 void RunMessageLoopUntilWorkerDone() { |
398 DCHECK(fetcher_.adapter_query_.get()); | 398 DCHECK(fetcher_.adapter_query_.get()); |
399 while (!fetcher_.worker_finished_event_.TimedWait( | 399 while (!fetcher_.worker_finished_event_.TimedWait( |
400 base::TimeDelta::FromMilliseconds(10))) { | 400 base::TimeDelta::FromMilliseconds(10))) { |
401 base::MessageLoop::current()->RunUntilIdle(); | 401 base::RunLoop().RunUntilIdle(); |
402 } | 402 } |
403 } | 403 } |
404 | 404 |
405 void OnCompletion(int result) { | 405 void OnCompletion(int result) { |
406 finished_ = true; | 406 finished_ = true; |
407 result_ = result; | 407 result_ = result; |
408 } | 408 } |
409 | 409 |
410 void ResetTestState() { | 410 void ResetTestState() { |
411 finished_ = false; | 411 finished_ = false; |
(...skipping 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
641 } | 641 } |
642 | 642 |
643 // Re-do the first test to make sure the last test that was run did | 643 // Re-do the first test to make sure the last test that was run did |
644 // not leave things in a bad state. | 644 // not leave things in a bad state. |
645 (*test_functions.begin())(&client); | 645 (*test_functions.begin())(&client); |
646 } | 646 } |
647 | 647 |
648 } // namespace | 648 } // namespace |
649 | 649 |
650 } // namespace net | 650 } // namespace net |
OLD | NEW |