diff options
Diffstat (limited to 'brillo/message_loops/fake_message_loop.h')
-rw-r--r-- | brillo/message_loops/fake_message_loop.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/brillo/message_loops/fake_message_loop.h b/brillo/message_loops/fake_message_loop.h index 783af1b..4b6e8ac 100644 --- a/brillo/message_loops/fake_message_loop.h +++ b/brillo/message_loops/fake_message_loop.h @@ -37,14 +37,26 @@ class BRILLO_EXPORT FakeMessageLoop : public MessageLoop { ~FakeMessageLoop() override = default; TaskId PostDelayedTask(const base::Location& from_here, - base::OnceClosure task, + const base::Closure& task, base::TimeDelta delay) override; using MessageLoop::PostDelayedTask; + TaskId WatchFileDescriptor(const base::Location& from_here, + int fd, + WatchMode mode, + bool persistent, + const base::Closure& task) override; + using MessageLoop::WatchFileDescriptor; bool CancelTask(TaskId task_id) override; bool RunOnce(bool may_block) override; // FakeMessageLoop methods: + // Pretend, for the purpose of the FakeMessageLoop watching for file + // descriptors, that the file descriptor |fd| readiness to perform the + // operation described by |mode| is |ready|. Initially, no file descriptor + // is ready for any operation. + void SetFileDescriptorReadiness(int fd, WatchMode mode, bool ready); + // Return whether there are peding tasks. Useful to check that no // callbacks were leaked. bool PendingTasks(); @@ -52,7 +64,8 @@ class BRILLO_EXPORT FakeMessageLoop : public MessageLoop { private: struct ScheduledTask { base::Location location; - base::OnceClosure callback; + bool persistent; + base::Closure callback; }; // The sparse list of scheduled pending callbacks. @@ -66,6 +79,13 @@ class BRILLO_EXPORT FakeMessageLoop : public MessageLoop { std::vector<std::pair<base::Time, MessageLoop::TaskId>>, std::greater<std::pair<base::Time, MessageLoop::TaskId>>> fire_order_; + // The bag of watched (fd, mode) pair associated with the TaskId that's + // watching them. + std::multimap<std::pair<int, WatchMode>, MessageLoop::TaskId> fds_watched_; + + // The set of (fd, mode) pairs that are faked as ready. + std::set<std::pair<int, WatchMode>> fds_ready_; + base::SimpleTestClock* test_clock_ = nullptr; base::Time current_time_ = base::Time::FromDoubleT(1246996800.); |