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

Side by Side Diff: chrome/common/cancelable_task_tracker_unittest.cc

Issue 15984016: Call scoped_refptr<T>::get() rather than relying on implicit "operator T*" (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased Created 7 years, 6 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 | « chrome/common/cancelable_task_tracker.cc ('k') | chrome/common/extensions/extension_set.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 "chrome/common/cancelable_task_tracker.h" 5 #include "chrome/common/cancelable_task_tracker.h"
6 6
7 #include <cstddef> 7 #include <cstddef>
8 #include <deque> 8 #include <deque>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 return base::Bind(&RunChecker::Run, base::Owned(new RunChecker(location))); 80 return base::Bind(&RunChecker::Run, base::Owned(new RunChecker(location)));
81 } 81 }
82 82
83 // With the task tracker, post a task, a task with a reply, and get a 83 // With the task tracker, post a task, a task with a reply, and get a
84 // new task id without canceling any of them. The tasks and the reply 84 // new task id without canceling any of them. The tasks and the reply
85 // should run and the "is canceled" callback should return false. 85 // should run and the "is canceled" callback should return false.
86 TEST_F(CancelableTaskTrackerTest, NoCancel) { 86 TEST_F(CancelableTaskTrackerTest, NoCancel) {
87 base::Thread worker_thread("worker thread"); 87 base::Thread worker_thread("worker thread");
88 ASSERT_TRUE(worker_thread.Start()); 88 ASSERT_TRUE(worker_thread.Start());
89 89
90 ignore_result( 90 ignore_result(task_tracker_.PostTask(worker_thread.message_loop_proxy().get(),
91 task_tracker_.PostTask( 91 FROM_HERE,
92 worker_thread.message_loop_proxy(), 92 MakeExpectedRunClosure(FROM_HERE)));
93 FROM_HERE,
94 MakeExpectedRunClosure(FROM_HERE)));
95 93
96 ignore_result( 94 ignore_result(
97 task_tracker_.PostTaskAndReply( 95 task_tracker_.PostTaskAndReply(worker_thread.message_loop_proxy().get(),
98 worker_thread.message_loop_proxy(), 96 FROM_HERE,
99 FROM_HERE, 97 MakeExpectedRunClosure(FROM_HERE),
100 MakeExpectedRunClosure(FROM_HERE), 98 MakeExpectedRunClosure(FROM_HERE)));
101 MakeExpectedRunClosure(FROM_HERE)));
102 99
103 CancelableTaskTracker::IsCanceledCallback is_canceled; 100 CancelableTaskTracker::IsCanceledCallback is_canceled;
104 ignore_result(task_tracker_.NewTrackedTaskId(&is_canceled)); 101 ignore_result(task_tracker_.NewTrackedTaskId(&is_canceled));
105 102
106 worker_thread.Stop(); 103 worker_thread.Stop();
107 104
108 RunCurrentLoopUntilIdle(); 105 RunCurrentLoopUntilIdle();
109 106
110 EXPECT_FALSE(is_canceled.Run()); 107 EXPECT_FALSE(is_canceled.Run());
111 } 108 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
171 } 168 }
172 169
173 // Post a task with reply with the task tracker on a worker thread and 170 // Post a task with reply with the task tracker on a worker thread and
174 // cancel it before running the current message loop. The task should 171 // cancel it before running the current message loop. The task should
175 // run but the reply should not. 172 // run but the reply should not.
176 TEST_F(CancelableTaskTrackerTest, CancelReplyDifferentThread) { 173 TEST_F(CancelableTaskTrackerTest, CancelReplyDifferentThread) {
177 base::Thread worker_thread("worker thread"); 174 base::Thread worker_thread("worker thread");
178 ASSERT_TRUE(worker_thread.Start()); 175 ASSERT_TRUE(worker_thread.Start());
179 176
180 CancelableTaskTracker::TaskId task_id = 177 CancelableTaskTracker::TaskId task_id =
181 task_tracker_.PostTaskAndReply( 178 task_tracker_.PostTaskAndReply(worker_thread.message_loop_proxy().get(),
182 worker_thread.message_loop_proxy(), 179 FROM_HERE,
183 FROM_HERE, 180 base::Bind(&base::DoNothing),
184 base::Bind(&base::DoNothing), 181 MakeExpectedNotRunClosure(FROM_HERE));
185 MakeExpectedNotRunClosure(FROM_HERE));
186 EXPECT_NE(CancelableTaskTracker::kBadTaskId, task_id); 182 EXPECT_NE(CancelableTaskTracker::kBadTaskId, task_id);
187 183
188 task_tracker_.TryCancel(task_id); 184 task_tracker_.TryCancel(task_id);
189 185
190 worker_thread.Stop(); 186 worker_thread.Stop();
191 } 187 }
192 188
193 void ExpectIsCanceled( 189 void ExpectIsCanceled(
194 const CancelableTaskTracker::IsCanceledCallback& is_canceled, 190 const CancelableTaskTracker::IsCanceledCallback& is_canceled,
195 bool expected_is_canceled) { 191 bool expected_is_canceled) {
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
378 const base::Callback<void(CancelableTaskTracker*)>& fn) { 374 const base::Callback<void(CancelableTaskTracker*)>& fn) {
379 // CancelableTask uses DCHECKs with its ThreadChecker (itself only 375 // CancelableTask uses DCHECKs with its ThreadChecker (itself only
380 // enabled in debug mode). 376 // enabled in debug mode).
381 #if ENABLE_THREAD_CHECKER 377 #if ENABLE_THREAD_CHECKER
382 EXPECT_DEATH_IF_SUPPORTED(fn.Run(task_tracker), ""); 378 EXPECT_DEATH_IF_SUPPORTED(fn.Run(task_tracker), "");
383 #endif 379 #endif
384 } 380 }
385 381
386 void PostDoNothingTask(CancelableTaskTracker* task_tracker) { 382 void PostDoNothingTask(CancelableTaskTracker* task_tracker) {
387 ignore_result( 383 ignore_result(
388 task_tracker->PostTask( 384 task_tracker->PostTask(scoped_refptr<base::TestSimpleTaskRunner>(
389 scoped_refptr<base::TestSimpleTaskRunner>( 385 new base::TestSimpleTaskRunner())
390 new base::TestSimpleTaskRunner()), 386 .get(),
391 FROM_HERE, base::Bind(&base::DoNothing))); 387 FROM_HERE,
388 base::Bind(&base::DoNothing)));
392 } 389 }
393 390
394 TEST_F(CancelableTaskTrackerDeathTest, PostFromDifferentThread) { 391 TEST_F(CancelableTaskTrackerDeathTest, PostFromDifferentThread) {
395 base::Thread bad_thread("bad thread"); 392 base::Thread bad_thread("bad thread");
396 ASSERT_TRUE(bad_thread.Start()); 393 ASSERT_TRUE(bad_thread.Start());
397 394
398 bad_thread.message_loop_proxy()->PostTask( 395 bad_thread.message_loop_proxy()->PostTask(
399 FROM_HERE, 396 FROM_HERE,
400 base::Bind(&MaybeRunDeadlyTaskTrackerMemberFunction, 397 base::Bind(&MaybeRunDeadlyTaskTrackerMemberFunction,
401 base::Unretained(&task_tracker_), 398 base::Unretained(&task_tracker_),
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
447 bad_thread.message_loop_proxy()->PostTask( 444 bad_thread.message_loop_proxy()->PostTask(
448 FROM_HERE, 445 FROM_HERE,
449 base::Bind(&MaybeRunDeadlyTaskTrackerMemberFunction, 446 base::Bind(&MaybeRunDeadlyTaskTrackerMemberFunction,
450 base::Unretained(&task_tracker_), 447 base::Unretained(&task_tracker_),
451 base::Bind(&CancelableTaskTracker::TryCancelAll))); 448 base::Bind(&CancelableTaskTracker::TryCancelAll)));
452 449
453 test_task_runner->RunUntilIdle(); 450 test_task_runner->RunUntilIdle();
454 } 451 }
455 452
456 } // namespace 453 } // namespace
OLDNEW
« no previous file with comments | « chrome/common/cancelable_task_tracker.cc ('k') | chrome/common/extensions/extension_set.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698