Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: net/dns/host_resolver_impl_unittest.cc

Issue 1398973003: Don't use base::MessageLoop::{Quit,QuitClosure} in net/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « net/dns/dns_transaction_unittest.cc ('k') | net/dns/mdns_client_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/dns/host_resolver_impl.h" 5 #include "net/dns/host_resolver_impl.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 252 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 } 263 }
264 264
265 bool HasOneAddress(const std::string& address, uint16 port) const { 265 bool HasOneAddress(const std::string& address, uint16 port) const {
266 return HasAddress(address, port) && (NumberOfAddresses() == 1u); 266 return HasAddress(address, port) && (NumberOfAddresses() == 1u);
267 } 267 }
268 268
269 // Returns ERR_UNEXPECTED if timed out. 269 // Returns ERR_UNEXPECTED if timed out.
270 int WaitForResult() { 270 int WaitForResult() {
271 if (completed()) 271 if (completed())
272 return result_; 272 return result_;
273 base::CancelableClosure closure(base::MessageLoop::QuitClosure()); 273 base::CancelableClosure closure(base::MessageLoop::QuitWhenIdleClosure());
274 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask( 274 base::ThreadTaskRunnerHandle::Get()->PostDelayedTask(
275 FROM_HERE, closure.callback(), TestTimeouts::action_max_timeout()); 275 FROM_HERE, closure.callback(), TestTimeouts::action_max_timeout());
276 quit_on_complete_ = true; 276 quit_on_complete_ = true;
277 base::MessageLoop::current()->Run(); 277 base::MessageLoop::current()->Run();
278 bool did_quit = !quit_on_complete_; 278 bool did_quit = !quit_on_complete_;
279 quit_on_complete_ = false; 279 quit_on_complete_ = false;
280 closure.Cancel(); 280 closure.Cancel();
281 if (did_quit) 281 if (did_quit)
282 return result_; 282 return result_;
283 else 283 else
284 return ERR_UNEXPECTED; 284 return ERR_UNEXPECTED;
285 } 285 }
286 286
287 private: 287 private:
288 void OnComplete(int rv) { 288 void OnComplete(int rv) {
289 EXPECT_TRUE(pending()); 289 EXPECT_TRUE(pending());
290 EXPECT_EQ(ERR_IO_PENDING, result_); 290 EXPECT_EQ(ERR_IO_PENDING, result_);
291 EXPECT_NE(ERR_IO_PENDING, rv); 291 EXPECT_NE(ERR_IO_PENDING, rv);
292 result_ = rv; 292 result_ = rv;
293 handle_ = NULL; 293 handle_ = NULL;
294 if (!list_.empty()) { 294 if (!list_.empty()) {
295 EXPECT_EQ(OK, result_); 295 EXPECT_EQ(OK, result_);
296 EXPECT_EQ(info_.port(), list_.front().port()); 296 EXPECT_EQ(info_.port(), list_.front().port());
297 } 297 }
298 if (handler_) 298 if (handler_)
299 handler_->Handle(this); 299 handler_->Handle(this);
300 if (quit_on_complete_) { 300 if (quit_on_complete_) {
301 base::MessageLoop::current()->Quit(); 301 base::MessageLoop::current()->QuitWhenIdle();
302 quit_on_complete_ = false; 302 quit_on_complete_ = false;
303 } 303 }
304 } 304 }
305 305
306 HostResolver::RequestInfo info_; 306 HostResolver::RequestInfo info_;
307 RequestPriority priority_; 307 RequestPriority priority_;
308 size_t index_; 308 size_t index_;
309 HostResolver* resolver_; 309 HostResolver* resolver_;
310 Handler* handler_; 310 Handler* handler_;
311 bool quit_on_complete_; 311 bool quit_on_complete_;
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 struct MyHandler : public Handler { 840 struct MyHandler : public Handler {
841 void Handle(Request* req) override { 841 void Handle(Request* req) override {
842 EXPECT_EQ("a", req->info().hostname()); 842 EXPECT_EQ("a", req->info().hostname());
843 EXPECT_EQ(80, req->info().port()); 843 EXPECT_EQ(80, req->info().port());
844 844
845 DeleteResolver(); 845 DeleteResolver();
846 846
847 // Quit after returning from OnCompleted (to give it a chance at 847 // Quit after returning from OnCompleted (to give it a chance at
848 // incorrectly running the cancelled tasks). 848 // incorrectly running the cancelled tasks).
849 base::ThreadTaskRunnerHandle::Get()->PostTask( 849 base::ThreadTaskRunnerHandle::Get()->PostTask(
850 FROM_HERE, base::MessageLoop::QuitClosure()); 850 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
851 } 851 }
852 }; 852 };
853 set_handler(new MyHandler()); 853 set_handler(new MyHandler());
854 854
855 for (size_t i = 0; i < 4; ++i) { 855 for (size_t i = 0; i < 4; ++i) {
856 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("a", 80 + i)->Resolve()) << i; 856 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("a", 80 + i)->Resolve()) << i;
857 } 857 }
858 858
859 proc_->SignalMultiple(1u); // One for "a". 859 proc_->SignalMultiple(1u); // One for "a".
860 860
861 // |MyHandler| will send quit message once all the requests have finished. 861 // |MyHandler| will send quit message once all the requests have finished.
862 base::MessageLoop::current()->Run(); 862 base::MessageLoop::current()->Run();
863 } 863 }
864 864
865 TEST_F(HostResolverImplTest, DeleteWithinAbortedCallback) { 865 TEST_F(HostResolverImplTest, DeleteWithinAbortedCallback) {
866 struct MyHandler : public Handler { 866 struct MyHandler : public Handler {
867 void Handle(Request* req) override { 867 void Handle(Request* req) override {
868 EXPECT_EQ("a", req->info().hostname()); 868 EXPECT_EQ("a", req->info().hostname());
869 EXPECT_EQ(80, req->info().port()); 869 EXPECT_EQ(80, req->info().port());
870 870
871 DeleteResolver(); 871 DeleteResolver();
872 872
873 // Quit after returning from OnCompleted (to give it a chance at 873 // Quit after returning from OnCompleted (to give it a chance at
874 // incorrectly running the cancelled tasks). 874 // incorrectly running the cancelled tasks).
875 base::ThreadTaskRunnerHandle::Get()->PostTask( 875 base::ThreadTaskRunnerHandle::Get()->PostTask(
876 FROM_HERE, base::MessageLoop::QuitClosure()); 876 FROM_HERE, base::MessageLoop::QuitWhenIdleClosure());
877 } 877 }
878 }; 878 };
879 set_handler(new MyHandler()); 879 set_handler(new MyHandler());
880 880
881 // This test assumes that the Jobs will be Aborted in order ["a", "b"] 881 // This test assumes that the Jobs will be Aborted in order ["a", "b"]
882 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("a", 80)->Resolve()); 882 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("a", 80)->Resolve());
883 // HostResolverImpl will be deleted before later Requests can complete. 883 // HostResolverImpl will be deleted before later Requests can complete.
884 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("a", 81)->Resolve()); 884 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("a", 81)->Resolve());
885 // Job for 'b' will be aborted before it can complete. 885 // Job for 'b' will be aborted before it can complete.
886 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("b", 82)->Resolve()); 886 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("b", 82)->Resolve());
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after
944 EXPECT_EQ(OK, CreateRequest(hostname, 75)->ResolveFromCache()); 944 EXPECT_EQ(OK, CreateRequest(hostname, 75)->ResolveFromCache());
945 945
946 // Ok good. Now make sure that if we ask to bypass the cache, it can no 946 // Ok good. Now make sure that if we ask to bypass the cache, it can no
947 // longer service the request synchronously. 947 // longer service the request synchronously.
948 HostResolver::RequestInfo info(HostPortPair(hostname, 71)); 948 HostResolver::RequestInfo info(HostPortPair(hostname, 71));
949 info.set_allow_cached_response(false); 949 info.set_allow_cached_response(false);
950 EXPECT_EQ(ERR_IO_PENDING, 950 EXPECT_EQ(ERR_IO_PENDING,
951 CreateRequest(info, DEFAULT_PRIORITY)->Resolve()); 951 CreateRequest(info, DEFAULT_PRIORITY)->Resolve());
952 } else if (71 == req->info().port()) { 952 } else if (71 == req->info().port()) {
953 // Test is done. 953 // Test is done.
954 base::MessageLoop::current()->Quit(); 954 base::MessageLoop::current()->QuitWhenIdle();
955 } else { 955 } else {
956 FAIL() << "Unexpected request"; 956 FAIL() << "Unexpected request";
957 } 957 }
958 } 958 }
959 }; 959 };
960 set_handler(new MyHandler()); 960 set_handler(new MyHandler());
961 961
962 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("a", 80)->Resolve()); 962 EXPECT_EQ(ERR_IO_PENDING, CreateRequest("a", 80)->Resolve());
963 proc_->SignalMultiple(3u); // Only need two, but be generous. 963 proc_->SignalMultiple(3u); // Only need two, but be generous.
964 964
(...skipping 1204 matching lines...) Expand 10 before | Expand all | Expand 10 after
2169 2169
2170 EXPECT_EQ(OK, requests_[0]->WaitForResult()); 2170 EXPECT_EQ(OK, requests_[0]->WaitForResult());
2171 EXPECT_TRUE(requests_[0]->HasOneAddress("192.168.0.1", 80)); 2171 EXPECT_TRUE(requests_[0]->HasOneAddress("192.168.0.1", 80));
2172 EXPECT_EQ(OK, requests_[1]->WaitForResult()); 2172 EXPECT_EQ(OK, requests_[1]->WaitForResult());
2173 EXPECT_TRUE(requests_[1]->HasOneAddress("192.168.0.2", 80)); 2173 EXPECT_TRUE(requests_[1]->HasOneAddress("192.168.0.2", 80));
2174 EXPECT_EQ(OK, requests_[2]->WaitForResult()); 2174 EXPECT_EQ(OK, requests_[2]->WaitForResult());
2175 EXPECT_TRUE(requests_[2]->HasOneAddress("192.168.0.3", 80)); 2175 EXPECT_TRUE(requests_[2]->HasOneAddress("192.168.0.3", 80));
2176 } 2176 }
2177 2177
2178 } // namespace net 2178 } // namespace net
OLDNEW
« no previous file with comments | « net/dns/dns_transaction_unittest.cc ('k') | net/dns/mdns_client_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698