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

Side by Side Diff: content/public/test/test_browser_thread_bundle.cc

Issue 22799005: Flush the blocking pool in TestBrowserThreadBundle. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: flush the message loop one extra time Created 7 years, 4 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 | « content/browser/browser_thread_impl.h ('k') | 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "content/public/test/test_browser_thread_bundle.h" 5 #include "content/public/test/test_browser_thread_bundle.h"
6 6
7 #include "base/message_loop/message_loop.h" 7 #include "base/message_loop/message_loop.h"
8 #include "base/run_loop.h" 8 #include "base/run_loop.h"
9 #include "content/browser/browser_thread_impl.h"
9 #include "content/public/test/test_browser_thread.h" 10 #include "content/public/test/test_browser_thread.h"
10 11
11 namespace content { 12 namespace content {
12 13
13 TestBrowserThreadBundle::TestBrowserThreadBundle() { 14 TestBrowserThreadBundle::TestBrowserThreadBundle() {
14 Init(DEFAULT); 15 Init(DEFAULT);
15 } 16 }
16 17
17 TestBrowserThreadBundle::TestBrowserThreadBundle(int options) { 18 TestBrowserThreadBundle::TestBrowserThreadBundle(int options) {
18 Init(options); 19 Init(options);
19 } 20 }
20 21
21 TestBrowserThreadBundle::~TestBrowserThreadBundle() { 22 TestBrowserThreadBundle::~TestBrowserThreadBundle() {
23 // To avoid memory leaks, we must ensure that any tasks posted to the blocking
24 // pool via PostTaskAndReply are able to reply back to the originating thread.
25 // Thus we must flush the blocking pool while the browser threads still exist.
26 base::RunLoop().RunUntilIdle();
27 BrowserThreadImpl::FlushThreadPoolHelper();
awong 2013/08/12 18:45:53 I'm thinking this should be done after db_thread_
earthdok 2013/08/12 19:18:31 Note that our goal here is to be tidy, not to simu
awong 2013/08/12 19:29:10 I actually disagree with this strongly...the furth
28
22 // To ensure a clean teardown, each thread's message loop must be flushed 29 // To ensure a clean teardown, each thread's message loop must be flushed
23 // just before the thread is destroyed. But destroying a fake thread does not 30 // just before the thread is destroyed. But destroying a fake thread does not
24 // automatically flush the message loop, so we have to do it manually. 31 // automatically flush the message loop, so we have to do it manually.
25 // See http://crbug.com/247525 for discussion. 32 // See http://crbug.com/247525 for discussion.
26 base::RunLoop().RunUntilIdle(); 33 base::RunLoop().RunUntilIdle();
27 io_thread_.reset(); 34 io_thread_.reset();
28 base::RunLoop().RunUntilIdle(); 35 base::RunLoop().RunUntilIdle();
29 cache_thread_.reset(); 36 cache_thread_.reset();
30 base::RunLoop().RunUntilIdle(); 37 base::RunLoop().RunUntilIdle();
31 process_launcher_thread_.reset(); 38 process_launcher_thread_.reset();
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
97 if (options & REAL_IO_THREAD) { 104 if (options & REAL_IO_THREAD) {
98 io_thread_.reset(new TestBrowserThread(BrowserThread::IO)); 105 io_thread_.reset(new TestBrowserThread(BrowserThread::IO));
99 io_thread_->StartIOThread(); 106 io_thread_->StartIOThread();
100 } else { 107 } else {
101 io_thread_.reset( 108 io_thread_.reset(
102 new TestBrowserThread(BrowserThread::IO, message_loop_.get())); 109 new TestBrowserThread(BrowserThread::IO, message_loop_.get()));
103 } 110 }
104 } 111 }
105 112
106 } // namespace content 113 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/browser_thread_impl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698