diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-06 20:47:17 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-12-06 20:47:17 +0000 |
commit | 869f63584313127e61ba26413a1fca3fa66c7819 (patch) | |
tree | 4aa76974e20c0efdf966d4f51e45ee7dafc173b3 /ui/base/events | |
parent | 69793ad506993edd0330fa52a81ad80ca280d0fb (diff) | |
download | chromium_src-869f63584313127e61ba26413a1fca3fa66c7819.zip chromium_src-869f63584313127e61ba26413a1fca3fa66c7819.tar.gz chromium_src-869f63584313127e61ba26413a1fca3fa66c7819.tar.bz2 |
Get some of the ash_unittests to run without crashing.
We currently make it as far as RootWindowControllerTest.MoveWindows_Basic.
This CL:
- changes ui::EventTarget::CanAcceptEvents to be CanAcceptEvent and take an event. This allows the event type to determine whether or not it can be accepted by the target.
- copy-pasta from ActivationController to AshActivationRules (GetNextWindowToActivate())
- forwarding to target handler for generic events in EventTarget
- RootWindowControllerTest needs to handle activation events @ the target and forward to OnBlur impl.
http://crbug.com/162100
R=sadrul@chromium.org
Review URL: https://codereview.chromium.org/11445023
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@171583 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ui/base/events')
-rw-r--r-- | ui/base/events/event.cc | 3 | ||||
-rw-r--r-- | ui/base/events/event.h | 7 | ||||
-rw-r--r-- | ui/base/events/event_dispatcher.h | 2 | ||||
-rw-r--r-- | ui/base/events/event_dispatcher_unittest.cc | 2 | ||||
-rw-r--r-- | ui/base/events/event_target.cc | 8 | ||||
-rw-r--r-- | ui/base/events/event_target.h | 3 |
6 files changed, 22 insertions, 3 deletions
diff --git a/ui/base/events/event.cc b/ui/base/events/event.cc index 26391cd..e6cbd25 100644 --- a/ui/base/events/event.cc +++ b/ui/base/events/event.cc @@ -134,6 +134,7 @@ Event::Event(EventType type, base::TimeDelta time_stamp, int flags) : type_(type), time_stamp_(time_stamp), flags_(flags), + dispatch_to_hidden_targets_(false), delete_native_event_(false), target_(NULL), phase_(EP_PREDISPATCH), @@ -149,6 +150,7 @@ Event::Event(const base::NativeEvent& native_event, : type_(type), time_stamp_(EventTimeFromNative(native_event)), flags_(flags), + dispatch_to_hidden_targets_(false), delete_native_event_(false), target_(NULL), phase_(EP_PREDISPATCH), @@ -163,6 +165,7 @@ Event::Event(const Event& copy) type_(copy.type_), time_stamp_(copy.time_stamp_), flags_(copy.flags_), + dispatch_to_hidden_targets_(false), delete_native_event_(false), target_(NULL), phase_(EP_PREDISPATCH), diff --git a/ui/base/events/event.h b/ui/base/events/event.h index 2dc9996..2115402 100644 --- a/ui/base/events/event.h +++ b/ui/base/events/event.h @@ -76,6 +76,9 @@ class UI_EXPORT Event { EventTarget* target() const { return target_; } EventPhase phase() const { return phase_; } EventResult result() const { return result_; } + bool dispatch_to_hidden_targets() const { + return dispatch_to_hidden_targets_; + } // The following methods return true if the respective keys were pressed at // the time the event was created. @@ -180,6 +183,9 @@ class UI_EXPORT Event { delete_native_event_ = delete_native_event; } void set_time_stamp(base::TimeDelta time_stamp) { time_stamp_ = time_stamp; } + void set_dispatch_to_hidden_targets(bool dispatch_to_hidden_targets) { + dispatch_to_hidden_targets_ = dispatch_to_hidden_targets; + } void set_name(const std::string& name) { name_ = name; } @@ -195,6 +201,7 @@ class UI_EXPORT Event { std::string name_; base::TimeDelta time_stamp_; int flags_; + bool dispatch_to_hidden_targets_; bool delete_native_event_; EventTarget* target_; EventPhase phase_; diff --git a/ui/base/events/event_dispatcher.h b/ui/base/events/event_dispatcher.h index 38ab6eb..79c8618 100644 --- a/ui/base/events/event_dispatcher.h +++ b/ui/base/events/event_dispatcher.h @@ -56,7 +56,7 @@ class UI_EXPORT EventDispatcher { template<class T> void ProcessEvent(EventTarget* target, T* event) { - if (!target || !target->CanAcceptEvents()) + if (!target || !target->CanAcceptEvent(*event)) return; ScopedDispatchHelper dispatch_helper(event); diff --git a/ui/base/events/event_dispatcher_unittest.cc b/ui/base/events/event_dispatcher_unittest.cc index cbfb19d..4be96bf 100644 --- a/ui/base/events/event_dispatcher_unittest.cc +++ b/ui/base/events/event_dispatcher_unittest.cc @@ -32,7 +32,7 @@ class TestTarget : public EventTarget { private: // Overridden from EventTarget: - virtual bool CanAcceptEvents() OVERRIDE { + virtual bool CanAcceptEvent(const ui::Event& event) OVERRIDE { return true; } diff --git a/ui/base/events/event_target.cc b/ui/base/events/event_target.cc index 6c1d671..a7d93dd 100644 --- a/ui/base/events/event_target.cc +++ b/ui/base/events/event_target.cc @@ -44,6 +44,14 @@ void EventTarget::RemovePostTargetHandler(EventHandler* handler) { post_target_list_.erase(find); } +void EventTarget::OnEvent(Event* event) { + CHECK_EQ(this, event->target()); + if (target_handler_) + target_handler_->OnEvent(event); + else + EventHandler::OnEvent(event); +} + EventResult EventTarget::OnKeyEvent(KeyEvent* event) { CHECK_EQ(this, event->target()); return target_handler_ ? target_handler_->OnKeyEvent(event) : ER_UNHANDLED; diff --git a/ui/base/events/event_target.h b/ui/base/events/event_target.h index 4531db8..fa05d02 100644 --- a/ui/base/events/event_target.h +++ b/ui/base/events/event_target.h @@ -51,7 +51,7 @@ class UI_EXPORT EventTarget : public EventHandler { EventTarget(); virtual ~EventTarget(); - virtual bool CanAcceptEvents() = 0; + virtual bool CanAcceptEvent(const ui::Event& event) = 0; virtual EventTarget* GetParentTarget() = 0; // Adds a handler to receive events before the target. The handler must be @@ -72,6 +72,7 @@ class UI_EXPORT EventTarget : public EventHandler { } // Overridden from EventHandler: + virtual void OnEvent(Event* event) OVERRIDE; virtual EventResult OnKeyEvent(KeyEvent* event) OVERRIDE; virtual EventResult OnMouseEvent(MouseEvent* event) OVERRIDE; virtual EventResult OnScrollEvent(ScrollEvent* event) OVERRIDE; |