| Index: message_loop/message_pump_libevent_unittest.cc
|
| diff --git a/message_loop/message_pump_libevent_unittest.cc b/message_loop/message_pump_libevent_unittest.cc
|
| index e911905abd7b489b47254a7195f6315701b422e9..16aba35353d2e63c6652659006b25eb01aa2ca80 100644
|
| --- a/message_loop/message_pump_libevent_unittest.cc
|
| +++ b/message_loop/message_pump_libevent_unittest.cc
|
| @@ -271,6 +271,41 @@ TEST_F(MessagePumpLibeventTest, QuitWatcher) {
|
| Owned(watcher.release())));
|
| }
|
|
|
| +class FakeEventSource : public MessagePumpLibevent::EventSource {
|
| + public:
|
| + FakeEventSource() : work_units_(0u) {}
|
| + ~FakeEventSource() override {}
|
| +
|
| + void set_work_units(uint32_t work_units) { work_units_ = work_units; }
|
| + uint32_t work_units() const { return work_units_; }
|
| +
|
| + bool Poll() override {
|
| + if (!work_units_)
|
| + return false;
|
| + work_units_--;
|
| + return true;
|
| + }
|
| +
|
| + private:
|
| + uint32_t work_units_;
|
| +};
|
| +
|
| +TEST_F(MessagePumpLibeventTest, PollEventSource) {
|
| + FakeEventSource event_source;
|
| +
|
| + // Verify event source gets polled repeatedly until no work remains.
|
| + MessageLoopForUI::current()->SetEventSource(&event_source);
|
| + event_source.set_work_units(5u);
|
| + ui_loop_->RunUntilIdle();
|
| + EXPECT_EQ(0u, event_source.work_units());
|
| +
|
| + // After removing the event source, it should no longer be polled.
|
| + MessageLoopForUI::current()->ClearEventSource();
|
| + event_source.set_work_units(5u);
|
| + ui_loop_->RunUntilIdle();
|
| + EXPECT_EQ(5u, event_source.work_units());
|
| +}
|
| +
|
| } // namespace
|
|
|
| } // namespace base
|
|
|