aboutsummaryrefslogtreecommitdiff
path: root/brillo/message_loops/fake_message_loop.h
diff options
context:
space:
mode:
Diffstat (limited to 'brillo/message_loops/fake_message_loop.h')
-rw-r--r--brillo/message_loops/fake_message_loop.h24
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.);