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}
diff --git a/PRESUBMIT.py b/PRESUBMIT.py
index cae96c3f..10d86ab 100644
--- a/PRESUBMIT.py
+++ b/PRESUBMIT.py
@@ -426,6 +426,14 @@
),
True,
(),
+ ),
+ (
+ 'base::ScopedMockTimeMessageLoopTaskRunner',
+ (
+ 'ScopedMockTimeMessageLoopTaskRunner is deprecated.',
+ ),
+ True,
+ (),
)
)