Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(839)

Unified Diff: components/mus/ws/event_dispatcher_unittest.cc

Issue 1909733002: mus: Add EventObserver to allow passively listening to UI events (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/mus/ws/event_dispatcher_unittest.cc
diff --git a/components/mus/ws/event_dispatcher_unittest.cc b/components/mus/ws/event_dispatcher_unittest.cc
index bccb32b4ed21b5a159b24653a1b08aed45db82cc..740c1dd8a7f1f748a4252d3e0cc3f65c8ce7b3a0 100644
--- a/components/mus/ws/event_dispatcher_unittest.cc
+++ b/components/mus/ws/event_dispatcher_unittest.cc
@@ -11,7 +11,7 @@
#include "base/macros.h"
#include "base/memory/weak_ptr.h"
-#include "components/mus/public/cpp/event_matcher.h"
+#include "components/mus/public/cpp/event_matcher_util.h"
#include "components/mus/ws/accelerator.h"
#include "components/mus/ws/event_dispatcher_delegate.h"
#include "components/mus/ws/server_window.h"
@@ -46,6 +46,10 @@ class TestEventDispatcherDelegate : public EventDispatcherDelegate {
last_accelerator_(0) {}
~TestEventDispatcherDelegate() override {}
+ ui::Event* last_event_target_not_found() {
+ return last_event_target_not_found_.get();
+ }
+
uint32_t GetAndClearLastAccelerator() {
uint32_t return_value = last_accelerator_;
last_accelerator_ = 0;
@@ -103,12 +107,16 @@ class TestEventDispatcherDelegate : public EventDispatcherDelegate {
details->accelerator = accelerator;
dispatched_event_queue_.push(std::move(details));
}
+ void OnEventTargetNotFound(const ui::Event& event) override {
+ last_event_target_not_found_ = ui::Event::Clone(event);
+ }
ServerWindow* root_;
ServerWindow* focused_window_;
ServerWindow* lost_capture_window_;
uint32_t last_accelerator_;
std::queue<std::unique_ptr<DispatchedEventDetails>> dispatched_event_queue_;
+ std::unique_ptr<ui::Event> last_event_target_not_found_;
DISALLOW_COPY_AND_ASSIGN(TestEventDispatcherDelegate);
};
@@ -297,6 +305,24 @@ TEST_F(EventDispatcherTest, ProcessEvent) {
EXPECT_EQ(gfx::Point(10, 15), dispatched_event->location());
}
+TEST_F(EventDispatcherTest, ProcessEventNoTarget) {
+ // Send event without a target.
+ ui::KeyEvent key(ui::ET_KEY_PRESSED, ui::VKEY_A, ui::EF_NONE);
+ event_dispatcher()->ProcessEvent(key);
+
+ // Event wasn't dispatched to a target.
+ std::unique_ptr<DispatchedEventDetails> details =
+ test_event_dispatcher_delegate()->GetAndAdvanceDispatchedEventDetails();
+ EXPECT_FALSE(details);
+
+ // Delegate was informed that there wasn't a target.
+ ui::Event* event_out =
+ test_event_dispatcher_delegate()->last_event_target_not_found();
+ ASSERT_TRUE(event_out);
+ EXPECT_TRUE(event_out->IsKeyEvent());
+ EXPECT_EQ(ui::VKEY_A, event_out->AsKeyEvent()->key_code());
+}
+
TEST_F(EventDispatcherTest, AcceleratorBasic) {
ClearSetup();
TestEventDispatcherDelegate event_dispatcher_delegate(nullptr);

Powered by Google App Engine
This is Rietveld 408576698