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

Side by Side Diff: base/threading/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 | « base/task.cc ('k') | base/threading/worker_pool.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/threading/thread.h" 5 #include "base/threading/thread.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 virtual void WillDestroyCurrentMessageLoop() { 98 virtual void WillDestroyCurrentMessageLoop() {
99 event_list_->push_back(THREAD_EVENT_MESSAGE_LOOP_DESTROYED); 99 event_list_->push_back(THREAD_EVENT_MESSAGE_LOOP_DESTROYED);
100 event_list_ = NULL; 100 event_list_ = NULL;
101 } 101 }
102 102
103 private: 103 private:
104 EventList* event_list_; 104 EventList* event_list_;
105 }; 105 };
106 106
107 // Task that adds a destruction observer to the current message loop. 107 // Task that adds a destruction observer to the current message loop.
108 class RegisterDestructionObserver : public Task { 108 void RegisterDestructionObserver(MessageLoop::DestructionObserver* observer) {
109 public: 109 MessageLoop::current()->AddDestructionObserver(observer);
110 explicit RegisterDestructionObserver( 110 }
111 MessageLoop::DestructionObserver* observer)
112 : observer_(observer) {
113 }
114
115 virtual void Run() {
116 MessageLoop::current()->AddDestructionObserver(observer_);
117 observer_ = NULL;
118 }
119
120 private:
121 MessageLoop::DestructionObserver* observer_;
122 };
123 111
124 } // namespace 112 } // namespace
125 113
126 TEST_F(ThreadTest, Restart) { 114 TEST_F(ThreadTest, Restart) {
127 Thread a("Restart"); 115 Thread a("Restart");
128 a.Stop(); 116 a.Stop();
129 EXPECT_FALSE(a.message_loop()); 117 EXPECT_FALSE(a.message_loop());
130 EXPECT_FALSE(a.IsRunning()); 118 EXPECT_FALSE(a.IsRunning());
131 EXPECT_TRUE(a.Start()); 119 EXPECT_TRUE(a.Start());
132 EXPECT_TRUE(a.message_loop()); 120 EXPECT_TRUE(a.message_loop());
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 { 215 {
228 // Start a thread which writes its event into |captured_events|. 216 // Start a thread which writes its event into |captured_events|.
229 CaptureToEventList t(&captured_events); 217 CaptureToEventList t(&captured_events);
230 EXPECT_TRUE(t.Start()); 218 EXPECT_TRUE(t.Start());
231 EXPECT_TRUE(t.message_loop()); 219 EXPECT_TRUE(t.message_loop());
232 EXPECT_TRUE(t.IsRunning()); 220 EXPECT_TRUE(t.IsRunning());
233 221
234 // Register an observer that writes into |captured_events| once the 222 // Register an observer that writes into |captured_events| once the
235 // thread's message loop is destroyed. 223 // thread's message loop is destroyed.
236 t.message_loop()->PostTask( 224 t.message_loop()->PostTask(
237 FROM_HERE, 225 FROM_HERE, base::Bind(&RegisterDestructionObserver,
238 new RegisterDestructionObserver(&loop_destruction_observer)); 226 base::Unretained(&loop_destruction_observer)));
239 227
240 // Upon leaving this scope, the thread is deleted. 228 // Upon leaving this scope, the thread is deleted.
241 } 229 }
242 230
243 // Check the order of events during shutdown. 231 // Check the order of events during shutdown.
244 ASSERT_EQ(static_cast<size_t>(THREAD_NUM_EVENTS), captured_events.size()); 232 ASSERT_EQ(static_cast<size_t>(THREAD_NUM_EVENTS), captured_events.size());
245 EXPECT_EQ(THREAD_EVENT_INIT, captured_events[0]); 233 EXPECT_EQ(THREAD_EVENT_INIT, captured_events[0]);
246 EXPECT_EQ(THREAD_EVENT_CLEANUP, captured_events[1]); 234 EXPECT_EQ(THREAD_EVENT_CLEANUP, captured_events[1]);
247 EXPECT_EQ(THREAD_EVENT_MESSAGE_LOOP_DESTROYED, captured_events[2]); 235 EXPECT_EQ(THREAD_EVENT_MESSAGE_LOOP_DESTROYED, captured_events[2]);
248 } 236 }
OLDNEW
« no previous file with comments | « base/task.cc ('k') | base/threading/worker_pool.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698