summaryrefslogtreecommitdiffstats
path: root/ui/base/events
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-06 20:47:17 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-12-06 20:47:17 +0000
commit869f63584313127e61ba26413a1fca3fa66c7819 (patch)
tree4aa76974e20c0efdf966d4f51e45ee7dafc173b3 /ui/base/events
parent69793ad506993edd0330fa52a81ad80ca280d0fb (diff)
downloadchromium_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.cc3
-rw-r--r--ui/base/events/event.h7
-rw-r--r--ui/base/events/event_dispatcher.h2
-rw-r--r--ui/base/events/event_dispatcher_unittest.cc2
-rw-r--r--ui/base/events/event_target.cc8
-rw-r--r--ui/base/events/event_target.h3
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;