commit | a4497505959f854d186f55150deed36474225842 | [log] [tgz] |
---|---|---|
author | Gabriel Charette <[email protected]> | Mon Aug 21 23:14:04 2017 |
committer | Commit Bot <[email protected]> | Mon Aug 21 23:14:04 2017 |
tree | a973e50bb054ab1e24fb29fa5603163a56f2ab2c | |
parent | 1b2e991f676e12dd51c2d92ad17aa901e400a17a [diff] |
Make TestMockTimeTaskRunner a RunLoop::Delegate. Introducing TestMockTimeTaskRunner::Type::kBound which will make that TestMockTimeTaskRunner takeover the thread it's created on (a la MessageLoop), enabling RunLoop and Thread/SequencedTaskRunnerHandle. Also introduces RunLoop::ScopedDisallowRunningForTesting to enforce mutual exclusion TestMockTimeTaskRunner::ScopedContext (used to toggle context to another task runner on the main thread) and RunLoop::Run() (meant to run the current thread's associated task runner). Mixing the two would result in running the incorrect task runner. While I don't think this is a use case worth supporting, experience with //base APIs has taught me that if there's a way to use it wrong, someone will, and it's much easier to prevent than to heal; hence this check. (there should already be no RunLoop usage during TaskRunnerHandle overrides per RunLoop not being previously supported by TestMockTimeTaskRunner and this check ensures it stays that way :)) EDIT: Well except that HeartbeatSenderTest had found a way to use it the deprecated way, but it's a nice fit for using a kBound TestMockTimeTaskRunner so all good :). Had to drop support for virtual TestMockTimeTaskRunner::IsElapsingStopped() which in turn forced removal of custom task runner in remote_commands_service_unittest.cc whose use case is now supported by the new API :). This enables follow-ups to: 1) Add mock time to base::test::ScopedTaskEnvironment :) https://docs.google.com/document/d/1QabRo8c7D9LsYY3cEcaPQbOCLo8Tu-6VLykYXyl3Pkk/edit 2) Fixing a race in base::Timer which requires RunLoop from TestMockTimeTaskRunner to get rid of the two remaining problematic use cases (see bug blocked by 703346). Bug: 703346 Change-Id: I062b77b669853a36c30813e44dd984d01fcefbe2 [email protected] (for components/policy test side-effects) Change-Id: I062b77b669853a36c30813e44dd984d01fcefbe2 Reviewed-on: https://chromium-review.googlesource.com/614788 Reviewed-by: Gabriel Charette <[email protected]> Reviewed-by: Dirk Pranke <[email protected]> Reviewed-by: Scott Nichols <[email protected]> Reviewed-by: Daniel Cheng <[email protected]> Commit-Queue: Gabriel Charette <[email protected]> Cr-Commit-Position: refs/heads/master@{#496111}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure .