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

Side by Side Diff: content/browser/browser_thread_unittest.cc

Issue 9086002: base::Bind: Remove Task. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Style fix. 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 | « content/browser/browser_thread_impl.cc ('k') | content/public/browser/browser_thread.h » ('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) 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 "base/bind.h" 5 #include "base/bind.h"
6 #include "base/memory/scoped_ptr.h" 6 #include "base/memory/scoped_ptr.h"
7 #include "base/message_loop.h" 7 #include "base/message_loop.h"
8 #include "base/message_loop_proxy.h" 8 #include "base/message_loop_proxy.h"
9 #include "content/browser/browser_thread_impl.h" 9 #include "content/browser/browser_thread_impl.h"
10 #include "content/test/test_browser_thread.h" 10 #include "content/test/test_browser_thread.h"
(...skipping 23 matching lines...) Expand all
34 } 34 }
35 35
36 static void BasicFunction(MessageLoop* message_loop) { 36 static void BasicFunction(MessageLoop* message_loop) {
37 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 37 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
38 message_loop->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 38 message_loop->PostTask(FROM_HERE, MessageLoop::QuitClosure());
39 } 39 }
40 40
41 static void DoNothing() { 41 static void DoNothing() {
42 } 42 }
43 43
44 class DummyTask : public Task {
45 public:
46 explicit DummyTask(bool* deleted) : deleted_(deleted) { }
47 ~DummyTask() {
48 *deleted_ = true;
49 }
50
51 void Run() {
52 CHECK(false);
53 }
54
55 private:
56 bool* deleted_;
57 };
58
59 class DeletedOnFile 44 class DeletedOnFile
60 : public base::RefCountedThreadSafe< 45 : public base::RefCountedThreadSafe<
61 DeletedOnFile, BrowserThread::DeleteOnFileThread> { 46 DeletedOnFile, BrowserThread::DeleteOnFileThread> {
62 public: 47 public:
63 explicit DeletedOnFile(MessageLoop* message_loop) 48 explicit DeletedOnFile(MessageLoop* message_loop)
64 : message_loop_(message_loop) { } 49 : message_loop_(message_loop) { }
65 50
66 ~DeletedOnFile() { 51 ~DeletedOnFile() {
67 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 52 CHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
68 message_loop_->PostTask(FROM_HERE, MessageLoop::QuitClosure()); 53 message_loop_->PostTask(FROM_HERE, MessageLoop::QuitClosure());
(...skipping 25 matching lines...) Expand all
94 BrowserThread::FILE, FROM_HERE, 79 BrowserThread::FILE, FROM_HERE,
95 base::Bind(&BasicFunction, MessageLoop::current())); 80 base::Bind(&BasicFunction, MessageLoop::current()));
96 MessageLoop::current()->Run(); 81 MessageLoop::current()->Run();
97 } 82 }
98 83
99 TEST_F(BrowserThreadTest, Release) { 84 TEST_F(BrowserThreadTest, Release) {
100 BrowserThread::ReleaseSoon(BrowserThread::UI, FROM_HERE, this); 85 BrowserThread::ReleaseSoon(BrowserThread::UI, FROM_HERE, this);
101 MessageLoop::current()->Run(); 86 MessageLoop::current()->Run();
102 } 87 }
103 88
104 TEST_F(BrowserThreadTest, TaskToNonExistentThreadIsDeleted) {
105 bool deleted = false;
106 BrowserThread::PostTask(
107 BrowserThread::WEBKIT_DEPRECATED, FROM_HERE,
108 new DummyTask(&deleted));
109 EXPECT_TRUE(deleted);
110 }
111
112 TEST_F(BrowserThreadTest, ReleasedOnCorrectThread) { 89 TEST_F(BrowserThreadTest, ReleasedOnCorrectThread) {
113 { 90 {
114 scoped_refptr<DeletedOnFile> test( 91 scoped_refptr<DeletedOnFile> test(
115 new DeletedOnFile(MessageLoop::current())); 92 new DeletedOnFile(MessageLoop::current()));
116 } 93 }
117 MessageLoop::current()->Run(); 94 MessageLoop::current()->Run();
118 } 95 }
119 96
120 TEST_F(BrowserThreadTest, NotReleasedIfTargetThreadNonExistent) { 97 TEST_F(BrowserThreadTest, NotReleasedIfTargetThreadNonExistent) {
121 scoped_refptr<NeverDeleted> test(new NeverDeleted()); 98 scoped_refptr<NeverDeleted> test(new NeverDeleted());
(...skipping 19 matching lines...) Expand all
141 // MessageLoopProxy test. This just makes sure we get piped through at all. 118 // MessageLoopProxy test. This just makes sure we get piped through at all.
142 ASSERT_TRUE(BrowserThread::PostTaskAndReply( 119 ASSERT_TRUE(BrowserThread::PostTaskAndReply(
143 BrowserThread::FILE, 120 BrowserThread::FILE,
144 FROM_HERE, 121 FROM_HERE,
145 base::Bind(&BrowserThreadTest::DoNothing), 122 base::Bind(&BrowserThreadTest::DoNothing),
146 base::Bind(&MessageLoop::Quit, 123 base::Bind(&MessageLoop::Quit,
147 base::Unretained(MessageLoop::current()->current())))); 124 base::Unretained(MessageLoop::current()->current()))));
148 MessageLoop::current()->Run(); 125 MessageLoop::current()->Run();
149 } 126 }
150 127
151
152 TEST_F(BrowserThreadTest, TaskToNonExistentThreadIsDeletedViaMessageLoopProxy) {
153 bool deleted = false;
154 scoped_refptr<base::MessageLoopProxy> message_loop_proxy =
155 BrowserThread::GetMessageLoopProxyForThread(
156 BrowserThread::WEBKIT_DEPRECATED);
157 message_loop_proxy->PostTask(FROM_HERE, new DummyTask(&deleted));
158 EXPECT_TRUE(deleted);
159 } 128 }
160
161 TEST_F(BrowserThreadTest, PostTaskViaMessageLoopProxyAfterThreadExits) {
162 scoped_ptr<BrowserThreadImpl> io_thread(
163 new BrowserThreadImpl(BrowserThread::IO));
164 io_thread->Start();
165 io_thread->Stop();
166
167 bool deleted = false;
168 scoped_refptr<base::MessageLoopProxy> message_loop_proxy =
169 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
170 bool ret = message_loop_proxy->PostTask(FROM_HERE, new DummyTask(&deleted));
171 EXPECT_FALSE(ret);
172 EXPECT_TRUE(deleted);
173 }
174
175 TEST_F(BrowserThreadTest, PostTaskViaMessageLoopProxyAfterThreadIsDeleted) {
176 {
177 scoped_ptr<BrowserThreadImpl> io_thread(
178 new BrowserThreadImpl(BrowserThread::IO));
179 io_thread->Start();
180 }
181 bool deleted = false;
182 scoped_refptr<base::MessageLoopProxy> message_loop_proxy =
183 BrowserThread::GetMessageLoopProxyForThread(BrowserThread::IO);
184 bool ret = message_loop_proxy->PostTask(FROM_HERE, new DummyTask(&deleted));
185 EXPECT_FALSE(ret);
186 EXPECT_TRUE(deleted);
187 }
188
189 }
OLDNEW
« no previous file with comments | « content/browser/browser_thread_impl.cc ('k') | content/public/browser/browser_thread.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698