test_event_source.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // Copyright 2019 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #ifndef UI_EVENTS_TEST_TEST_EVENT_SOURCE_H_
  5. #define UI_EVENTS_TEST_TEST_EVENT_SOURCE_H_
  6. #include "base/memory/raw_ptr.h"
  7. #include "ui/events/event_sink.h"
  8. #include "ui/events/event_source.h"
  9. namespace ui {
  10. namespace test {
  11. // Trivial testing EventSource that does nothing but send and count events.
  12. // If no sink is provided, it acts as its own sink, which also counts events.
  13. class TestEventSource : public EventSource, public EventSink {
  14. public:
  15. explicit TestEventSource(EventSink* sink) : sink_(sink) {}
  16. TestEventSource() : sink_(this) {}
  17. ~TestEventSource() override = default;
  18. EventDispatchDetails Send(Event* event);
  19. int events_sent() const { return events_sent_; }
  20. int events_sunk() const { return events_sunk_; }
  21. // EventSource override:
  22. EventSink* GetEventSink() override;
  23. // EventSink override:
  24. EventDispatchDetails OnEventFromSource(Event* event) override;
  25. private:
  26. raw_ptr<EventSink> sink_;
  27. int events_sent_ = 0;
  28. int events_sunk_ = 0;
  29. };
  30. } // namespace test
  31. } // namespace ui
  32. #endif // UI_EVENTS_TEST_TEST_EVENT_SOURCE_H_