Diff
Modified: trunk/Source/WebCore/ChangeLog (92255 => 92256)
--- trunk/Source/WebCore/ChangeLog 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/ChangeLog 2011-08-03 03:25:57 UTC (rev 92256)
@@ -1,3 +1,37 @@
+2011-08-02 Hayato Ito <hay...@chromium.org>
+
+ Make EventDispatchMediator RefCounted.
+ https://bugs.webkit.org/show_bug.cgi?id=65529
+
+ Reviewed by Dimitri Glazkov.
+
+ Make EventDispatchMediator RefCounted so that it can be enqueued into a
+ ScopedEventQueue and called later.
+ A necessary change for ScopedEventQueue should be addressed in another patch.
+
+ No changes to functionality so no new tests.
+
+ * dom/Event.cpp:
+ (WebCore::EventDispatchMediator::create):
+ * dom/Event.h:
+ * dom/EventDispatcher.cpp:
+ (WebCore::EventDispatcher::dispatchEvent):
+ * dom/EventDispatcher.h:
+ * dom/KeyboardEvent.cpp:
+ (WebCore::KeyboardEventDispatchMediator::create):
+ * dom/KeyboardEvent.h:
+ * dom/MouseEvent.cpp:
+ (WebCore::MouseEventDispatchMediator::create):
+ * dom/MouseEvent.h:
+ * dom/Node.cpp:
+ (WebCore::Node::dispatchEvent):
+ (WebCore::Node::dispatchKeyEvent):
+ (WebCore::Node::dispatchMouseEvent):
+ (WebCore::Node::dispatchWheelEvent):
+ * dom/WheelEvent.cpp:
+ (WebCore::WheelEventDispatchMediator::create):
+ * dom/WheelEvent.h:
+
2011-08-02 David Reveman <reve...@chromium.org>
[Chromium] Use edge-distance method for layer anti-aliasing.
Modified: trunk/Source/WebCore/dom/Event.cpp (92255 => 92256)
--- trunk/Source/WebCore/dom/Event.cpp 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/Event.cpp 2011-08-03 03:25:57 UTC (rev 92256)
@@ -289,6 +289,11 @@
m_underlyingEvent = ue;
}
+PassRefPtr<EventDispatchMediator> EventDispatchMediator::create(PassRefPtr<Event> event)
+{
+ return adoptRef(new EventDispatchMediator(event));
+}
+
EventDispatchMediator::EventDispatchMediator(PassRefPtr<Event> event)
: m_event(event)
{
Modified: trunk/Source/WebCore/dom/Event.h (92255 => 92256)
--- trunk/Source/WebCore/dom/Event.h 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/Event.h 2011-08-03 03:25:57 UTC (rev 92256)
@@ -199,14 +199,15 @@
RefPtr<Event> m_underlyingEvent;
};
-class EventDispatchMediator {
+class EventDispatchMediator : public RefCounted<Event> {
public:
- explicit EventDispatchMediator(PassRefPtr<Event>);
+ static PassRefPtr<EventDispatchMediator> create(PassRefPtr<Event>);
virtual ~EventDispatchMediator();
virtual bool dispatchEvent(EventDispatcher*) const;
protected:
+ explicit EventDispatchMediator(PassRefPtr<Event>);
EventDispatchMediator();
Event* event() const;
Modified: trunk/Source/WebCore/dom/EventDispatcher.cpp (92255 => 92256)
--- trunk/Source/WebCore/dom/EventDispatcher.cpp 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/EventDispatcher.cpp 2011-08-03 03:25:57 UTC (rev 92256)
@@ -46,12 +46,12 @@
static HashSet<Node*>* gNodesDispatchingSimulatedClicks = 0;
-bool EventDispatcher::dispatchEvent(Node* node, const EventDispatchMediator& mediator)
+bool EventDispatcher::dispatchEvent(Node* node, PassRefPtr<EventDispatchMediator> mediator)
{
ASSERT(!eventDispatchForbidden());
EventDispatcher dispatcher(node);
- return mediator.dispatchEvent(&dispatcher);
+ return mediator->dispatchEvent(&dispatcher);
}
static EventTarget* findElementInstance(Node* referenceNode)
Modified: trunk/Source/WebCore/dom/EventDispatcher.h (92255 => 92256)
--- trunk/Source/WebCore/dom/EventDispatcher.h 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/EventDispatcher.h 2011-08-03 03:25:57 UTC (rev 92256)
@@ -48,8 +48,9 @@
class EventDispatcher {
public:
- static bool dispatchEvent(Node*, const EventDispatchMediator&);
+ static bool dispatchEvent(Node*, PassRefPtr<EventDispatchMediator>);
static void dispatchScopedEvent(Node*, PassRefPtr<Event>);
+ static void dispatchScopedEventDispatchMediator(Node*, PassRefPtr<EventDispatchMediator>);
static void dispatchSimulatedClick(Node*, PassRefPtr<Event> underlyingEvent, bool sendMouseEvents, bool showPressedLook);
Modified: trunk/Source/WebCore/dom/KeyboardEvent.cpp (92255 => 92256)
--- trunk/Source/WebCore/dom/KeyboardEvent.cpp 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/KeyboardEvent.cpp 2011-08-03 03:25:57 UTC (rev 92256)
@@ -159,6 +159,11 @@
return 0;
}
+PassRefPtr<KeyboardEventDispatchMediator> KeyboardEventDispatchMediator::create(PassRefPtr<KeyboardEvent> event)
+{
+ return adoptRef(new KeyboardEventDispatchMediator(event));
+}
+
KeyboardEventDispatchMediator::KeyboardEventDispatchMediator(PassRefPtr<KeyboardEvent> event)
: EventDispatchMediator(event)
{
Modified: trunk/Source/WebCore/dom/KeyboardEvent.h (92255 => 92256)
--- trunk/Source/WebCore/dom/KeyboardEvent.h 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/KeyboardEvent.h 2011-08-03 03:25:57 UTC (rev 92256)
@@ -117,9 +117,9 @@
class KeyboardEventDispatchMediator : public EventDispatchMediator {
public:
+ static PassRefPtr<KeyboardEventDispatchMediator> create(PassRefPtr<KeyboardEvent>);
+private:
explicit KeyboardEventDispatchMediator(PassRefPtr<KeyboardEvent>);
-
-private:
virtual bool dispatchEvent(EventDispatcher*) const;
};
Modified: trunk/Source/WebCore/dom/MouseEvent.cpp (92255 => 92256)
--- trunk/Source/WebCore/dom/MouseEvent.cpp 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/MouseEvent.cpp 2011-08-03 03:25:57 UTC (rev 92256)
@@ -159,6 +159,11 @@
}
}
+PassRefPtr<MouseEventDispatchMediator> MouseEventDispatchMediator::create(PassRefPtr<MouseEvent> mouseEvent)
+{
+ return adoptRef(new MouseEventDispatchMediator(mouseEvent));
+}
+
MouseEventDispatchMediator::MouseEventDispatchMediator(PassRefPtr<MouseEvent> mouseEvent)
: EventDispatchMediator(mouseEvent)
{
Modified: trunk/Source/WebCore/dom/MouseEvent.h (92255 => 92256)
--- trunk/Source/WebCore/dom/MouseEvent.h 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/MouseEvent.h 2011-08-03 03:25:57 UTC (rev 92256)
@@ -100,9 +100,10 @@
class MouseEventDispatchMediator : public EventDispatchMediator {
public:
- explicit MouseEventDispatchMediator(PassRefPtr<MouseEvent>);
+ static PassRefPtr<MouseEventDispatchMediator> create(PassRefPtr<MouseEvent>);
private:
+ explicit MouseEventDispatchMediator(PassRefPtr<MouseEvent>);
MouseEvent* event() const;
virtual bool dispatchEvent(EventDispatcher*) const;
Modified: trunk/Source/WebCore/dom/Node.cpp (92255 => 92256)
--- trunk/Source/WebCore/dom/Node.cpp 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/Node.cpp 2011-08-03 03:25:57 UTC (rev 92256)
@@ -2714,7 +2714,7 @@
bool Node::dispatchEvent(PassRefPtr<Event> event)
{
- return EventDispatcher::dispatchEvent(this, EventDispatchMediator(event));
+ return EventDispatcher::dispatchEvent(this, EventDispatchMediator::create(event));
}
void Node::dispatchSubtreeModifiedEvent()
@@ -2746,13 +2746,13 @@
bool Node::dispatchKeyEvent(const PlatformKeyboardEvent& event)
{
- return EventDispatcher::dispatchEvent(this, KeyboardEventDispatchMediator(KeyboardEvent::create(event, document()->defaultView())));
+ return EventDispatcher::dispatchEvent(this, KeyboardEventDispatchMediator::create(KeyboardEvent::create(event, document()->defaultView())));
}
bool Node::dispatchMouseEvent(const PlatformMouseEvent& event, const AtomicString& eventType,
int detail, Node* relatedTarget)
{
- return EventDispatcher::dispatchEvent(this, MouseEventDispatchMediator(MouseEvent::create(eventType, document()->defaultView(), event, detail, relatedTarget)));
+ return EventDispatcher::dispatchEvent(this, MouseEventDispatchMediator::create(MouseEvent::create(eventType, document()->defaultView(), event, detail, relatedTarget)));
}
void Node::dispatchSimulatedClick(PassRefPtr<Event> event, bool sendMouseEvents, bool showPressedLook)
@@ -2762,7 +2762,7 @@
bool Node::dispatchWheelEvent(const PlatformWheelEvent& event)
{
- return EventDispatcher::dispatchEvent(this, WheelEventDispatchMediator(event, document()->defaultView()));
+ return EventDispatcher::dispatchEvent(this, WheelEventDispatchMediator::create(event, document()->defaultView()));
}
void Node::dispatchFocusEvent()
Modified: trunk/Source/WebCore/dom/WheelEvent.cpp (92255 => 92256)
--- trunk/Source/WebCore/dom/WheelEvent.cpp 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/WheelEvent.cpp 2011-08-03 03:25:57 UTC (rev 92256)
@@ -91,6 +91,11 @@
return event.granularity() == ScrollByPageWheelEvent ? WheelEvent::Page : WheelEvent::Pixel;
}
+PassRefPtr<WheelEventDispatchMediator> WheelEventDispatchMediator::create(const PlatformWheelEvent& event, PassRefPtr<AbstractView> view)
+{
+ return adoptRef(new WheelEventDispatchMediator(event, view));
+}
+
WheelEventDispatchMediator::WheelEventDispatchMediator(const PlatformWheelEvent& event, PassRefPtr<AbstractView> view)
{
if (!(event.deltaX() || event.deltaY()))
Modified: trunk/Source/WebCore/dom/WheelEvent.h (92255 => 92256)
--- trunk/Source/WebCore/dom/WheelEvent.h 2011-08-03 02:52:17 UTC (rev 92255)
+++ trunk/Source/WebCore/dom/WheelEvent.h 2011-08-03 03:25:57 UTC (rev 92256)
@@ -83,9 +83,9 @@
class WheelEventDispatchMediator : public EventDispatchMediator {
public:
+ static PassRefPtr<WheelEventDispatchMediator> create(const PlatformWheelEvent&, PassRefPtr<AbstractView>);
+private:
WheelEventDispatchMediator(const PlatformWheelEvent&, PassRefPtr<AbstractView>);
-
-private:
WheelEvent* event() const;
virtual bool dispatchEvent(EventDispatcher*) const;
};