OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/task/cancelable_task_tracker.h" | 5 #include "base/task/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 326 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
337 // debug mode. | 337 // debug mode. |
338 | 338 |
339 class CancelableTaskTrackerDeathTest : public CancelableTaskTrackerTest { | 339 class CancelableTaskTrackerDeathTest : public CancelableTaskTrackerTest { |
340 protected: | 340 protected: |
341 CancelableTaskTrackerDeathTest() { | 341 CancelableTaskTrackerDeathTest() { |
342 // The default style "fast" does not support multi-threaded tests. | 342 // The default style "fast" does not support multi-threaded tests. |
343 ::testing::FLAGS_gtest_death_test_style = "threadsafe"; | 343 ::testing::FLAGS_gtest_death_test_style = "threadsafe"; |
344 } | 344 } |
345 }; | 345 }; |
346 | 346 |
347 // Duplicated from base/threading/thread_checker.h so that we can be | |
348 // good citizens there and undef the macro. | |
349 #if !defined(NDEBUG) || defined(DCHECK_ALWAYS_ON) | |
350 #define ENABLE_THREAD_CHECKER 1 | |
351 #else | |
352 #define ENABLE_THREAD_CHECKER 0 | |
353 #endif | |
354 | |
355 // Runs |fn| with |task_tracker|, expecting it to crash in debug mode. | 347 // Runs |fn| with |task_tracker|, expecting it to crash in debug mode. |
356 void MaybeRunDeadlyTaskTrackerMemberFunction( | 348 void MaybeRunDeadlyTaskTrackerMemberFunction( |
357 CancelableTaskTracker* task_tracker, | 349 CancelableTaskTracker* task_tracker, |
358 const Callback<void(CancelableTaskTracker*)>& fn) { | 350 const Callback<void(CancelableTaskTracker*)>& fn) { |
359 // CancelableTask uses DCHECKs with its ThreadChecker (itself only | 351 // CancelableTask uses DCHECKs with its ThreadChecker (itself only |
360 // enabled in debug mode). | 352 // enabled in debug mode). |
361 #if ENABLE_THREAD_CHECKER | 353 #if DCHECK_IS_ON() |
362 EXPECT_DEATH_IF_SUPPORTED(fn.Run(task_tracker), ""); | 354 EXPECT_DEATH_IF_SUPPORTED(fn.Run(task_tracker), ""); |
363 #endif | 355 #endif |
364 } | 356 } |
365 | 357 |
366 void PostDoNothingTask(CancelableTaskTracker* task_tracker) { | 358 void PostDoNothingTask(CancelableTaskTracker* task_tracker) { |
367 ignore_result(task_tracker->PostTask( | 359 ignore_result(task_tracker->PostTask( |
368 scoped_refptr<TestSimpleTaskRunner>(new TestSimpleTaskRunner()).get(), | 360 scoped_refptr<TestSimpleTaskRunner>(new TestSimpleTaskRunner()).get(), |
369 FROM_HERE, | 361 FROM_HERE, |
370 Bind(&DoNothing))); | 362 Bind(&DoNothing))); |
371 } | 363 } |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
415 | 407 |
416 bad_thread.task_runner()->PostTask( | 408 bad_thread.task_runner()->PostTask( |
417 FROM_HERE, | 409 FROM_HERE, |
418 Bind(&MaybeRunDeadlyTaskTrackerMemberFunction, Unretained(&task_tracker_), | 410 Bind(&MaybeRunDeadlyTaskTrackerMemberFunction, Unretained(&task_tracker_), |
419 Bind(&CancelableTaskTracker::TryCancelAll))); | 411 Bind(&CancelableTaskTracker::TryCancelAll))); |
420 | 412 |
421 test_task_runner->RunUntilIdle(); | 413 test_task_runner->RunUntilIdle(); |
422 } | 414 } |
423 | 415 |
424 } // namespace base | 416 } // namespace base |
OLD | NEW |