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

Side by Side Diff: chrome/browser/net/connection_tester_unittest.cc

Issue 9187017: Don't pump the message loop in DeleteWhileInProgress at all. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Don't include windows.h and reword the comment Created 8 years, 11 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 "chrome/browser/net/connection_tester.h" 5 #include "chrome/browser/net/connection_tester.h"
6 6
7 #include "chrome/test/base/testing_pref_service.h" 7 #include "chrome/test/base/testing_pref_service.h"
8 #include "content/test/test_browser_thread.h" 8 #include "content/test/test_browser_thread.h"
9 #include "net/base/cert_verifier.h" 9 #include "net/base/cert_verifier.h"
10 #include "net/base/cookie_monster.h" 10 #include "net/base/cookie_monster.h"
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 TEST_F(ConnectionTesterTest, DeleteWhileInProgress) { 169 TEST_F(ConnectionTesterTest, DeleteWhileInProgress) {
170 ASSERT_TRUE(test_server_.Start()); 170 ASSERT_TRUE(test_server_.Start());
171 171
172 scoped_ptr<ConnectionTester> tester( 172 scoped_ptr<ConnectionTester> tester(
173 new ConnectionTester(&test_delegate_, proxy_script_fetcher_context_)); 173 new ConnectionTester(&test_delegate_, proxy_script_fetcher_context_));
174 174
175 // Start the test suite on URL "echoall". 175 // Start the test suite on URL "echoall".
176 // TODO(eroman): Is this URL right? 176 // TODO(eroman): Is this URL right?
177 tester->RunAllTests(test_server_.GetURL("echoall")); 177 tester->RunAllTests(test_server_.GetURL("echoall"));
178 178
179 MessageLoop::current()->RunAllPending(); 179 // Don't run the message loop at all. Otherwise the experiment's request may
180 // complete and post a task to run the next experiment before we quit the
181 // message loop.
180 182
181 EXPECT_EQ(1, test_delegate_.start_connection_test_suite_count()); 183 EXPECT_EQ(1, test_delegate_.start_connection_test_suite_count());
182 EXPECT_EQ(1, test_delegate_.start_connection_test_experiment_count()); 184 EXPECT_EQ(1, test_delegate_.start_connection_test_experiment_count());
183 EXPECT_EQ(0, test_delegate_.completed_connection_test_experiment_count()); 185 EXPECT_EQ(0, test_delegate_.completed_connection_test_experiment_count());
184 EXPECT_EQ(0, test_delegate_.completed_connection_test_suite_count()); 186 EXPECT_EQ(0, test_delegate_.completed_connection_test_suite_count());
185 187
186 // Delete the ConnectionTester while it is in progress. 188 // Delete the ConnectionTester while it is in progress.
187 tester.reset(); 189 tester.reset();
188 190
189 // Drain the tasks on the message loop. 191 // Drain the tasks on the message loop.
190 // 192 //
191 // Note that we cannot simply stop the message loop, since that will delete 193 // Note that we cannot simply stop the message loop, since that will delete
192 // any pending tasks instead of running them. This causes a problem with 194 // any pending tasks instead of running them. This causes a problem with
193 // net::ClientSocketPoolBaseHelper, since the "Group" holds a pointer 195 // net::ClientSocketPoolBaseHelper, since the "Group" holds a pointer
194 // |backup_task| that it will try to deref during the destructor, but 196 // |backup_task| that it will try to deref during the destructor, but
195 // depending on the order that pending tasks were deleted in, it might 197 // depending on the order that pending tasks were deleted in, it might
196 // already be invalid! See http://crbug.com/43291. 198 // already be invalid! See http://crbug.com/43291.
197 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 199 MessageLoop::current()->PostTask(FROM_HERE, MessageLoop::QuitClosure());
198 MessageLoop::current()->Run(); 200 MessageLoop::current()->Run();
199 } 201 }
200 202
201 } // namespace 203 } // namespace
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698