Diff
Modified: trunk/Source/WebCore/ChangeLog (157176 => 157177)
--- trunk/Source/WebCore/ChangeLog 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/ChangeLog 2013-10-09 20:05:13 UTC (rev 157177)
@@ -1,3 +1,58 @@
+2013-10-08 Ryosuke Niwa <[email protected]>
+
+ Rename EventRetargeter::adjustForRelatedTarget to EventPath::setRelatedTarget
+ https://bugs.webkit.org/show_bug.cgi?id=122539
+
+ Reviewed by Darin Adler.
+
+ Renamed EventRetargeter::adjustForRelatedTarget to EventPath::setRelatedTarget and got rid of
+ EventDispatchMediators for focus events. We set the related target inside EventDispatcher's
+ dispatch via Event::relatedTarget, which is now virtual and overridden by mouse/focus events.
+
+ * dom/Element.cpp: The following functions no longer use FocusEventDispatchMediators.
+ (WebCore::Element::dispatchFocusInEvent):
+ (WebCore::Element::dispatchFocusOutEvent):
+ (WebCore::Element::dispatchFocusEvent):
+ (WebCore::Element::dispatchBlurEvent):
+
+ * dom/Event.h:
+ (WebCore::Event::relatedTarget): Added as a virtual function.
+
+ * dom/EventDispatcher.cpp:
+ (WebCore::EventDispatcher::dispatchEvent): Cache Event*.
+ (WebCore::EventDispatcher::dispatch): Call setRelatedTargetToPath at the beginning to update
+ related targets in the path.
+
+ * dom/EventDispatcher.h:
+
+ * dom/EventRetargeter.cpp:
+ (WebCore::EventPath::EventPath): Initialize m_origin, used in EventPath::setRelatedTarget.
+ (WebCore::EventRetargeter::adjustTouchList):
+ (WebCore::EventPath::setRelatedTarget): Renamed from EventRetargeter::adjustForRelatedTarget.
+ Delegated the nullity checks to callers by taking references instead of pointers.
+ (WebCore::EventRetargeter::calculateAdjustedNodes):
+
+ * dom/EventRetargeter.h: Removed AdjustedNodes typedef. It's just a Vector of RefPtr<Node>.
+
+ * dom/FocusEvent.cpp: Removed FocusEventDispatchMediators for focus events.
+ * dom/FocusEvent.h:
+
+ * dom/MouseEvent.cpp:
+ (WebCore::MouseEvent::toElement): Cache the related target now that relatedTarget() is virtual.
+ (WebCore::MouseEvent::fromElement): Ditto.
+ (WebCore::MouseEventDispatchMediator::mediateAndDispatchEvent): No longer sets the related
+ targets since that's done in EventDispatcher::dispatch now.
+
+ * dom/MouseEvent.h:
+
+ * dom/Node.cpp: Removed obnoxious Node::dispatchScopedEventDispatchMediator.
+ (WebCore::Node::dispatchScopedEvent):
+ * dom/Node.h:
+
+ * html/shadow/MediaControlElements.cpp:
+ (WebCore::MediaControlVolumeSliderContainerElement::defaultEventHandler): Cache the related
+ target in a local variable now that relatedTarget() is virtual.
+
2013-10-09 Chris Fleizach <[email protected]>
AX: VoiceOver does not speak aria-expanded state on iOS
Modified: trunk/Source/WebCore/dom/Element.cpp (157176 => 157177)
--- trunk/Source/WebCore/dom/Element.cpp 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/Element.cpp 2013-10-09 20:05:13 UTC (rev 157177)
@@ -2021,14 +2021,14 @@
{
ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
ASSERT(eventType == eventNames().focusinEvent || eventType == eventNames().DOMFocusInEvent);
- dispatchScopedEventDispatchMediator(FocusInEventDispatchMediator::create(FocusEvent::create(eventType, true, false, document().defaultView(), 0, oldFocusedElement)));
+ dispatchScopedEvent(FocusEvent::create(eventType, true, false, document().defaultView(), 0, oldFocusedElement));
}
void Element::dispatchFocusOutEvent(const AtomicString& eventType, PassRefPtr<Element> newFocusedElement)
{
ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
ASSERT(eventType == eventNames().focusoutEvent || eventType == eventNames().DOMFocusOutEvent);
- dispatchScopedEventDispatchMediator(FocusOutEventDispatchMediator::create(FocusEvent::create(eventType, true, false, document().defaultView(), 0, newFocusedElement)));
+ dispatchScopedEvent(FocusEvent::create(eventType, true, false, document().defaultView(), 0, newFocusedElement));
}
void Element::dispatchFocusEvent(PassRefPtr<Element> oldFocusedElement, FocusDirection)
@@ -2037,7 +2037,7 @@
document().page()->chrome().client().elementDidFocus(this);
RefPtr<FocusEvent> event = FocusEvent::create(eventNames().focusEvent, false, false, document().defaultView(), 0, oldFocusedElement);
- EventDispatcher::dispatchEvent(this, FocusEventDispatchMediator::create(event.release()));
+ EventDispatcher::dispatchEvent(this, EventDispatchMediator::create(event.release()));
}
void Element::dispatchBlurEvent(PassRefPtr<Element> newFocusedElement)
@@ -2046,7 +2046,7 @@
document().page()->chrome().client().elementDidBlur(this);
RefPtr<FocusEvent> event = FocusEvent::create(eventNames().blurEvent, false, false, document().defaultView(), 0, newFocusedElement);
- EventDispatcher::dispatchEvent(this, BlurEventDispatchMediator::create(event.release()));
+ EventDispatcher::dispatchEvent(this, EventDispatchMediator::create(event.release()));
}
Modified: trunk/Source/WebCore/dom/Event.h (157176 => 157177)
--- trunk/Source/WebCore/dom/Event.h 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/Event.h 2013-10-09 20:05:13 UTC (rev 157177)
@@ -172,6 +172,8 @@
virtual PassRefPtr<Event> cloneFor(HTMLIFrameElement*) const;
+ virtual EventTarget* relatedTarget() const { return nullptr; }
+
protected:
Event();
Event(const AtomicString& type, bool canBubble, bool cancelable);
Modified: trunk/Source/WebCore/dom/EventDispatcher.cpp (157176 => 157177)
--- trunk/Source/WebCore/dom/EventDispatcher.cpp 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/EventDispatcher.cpp 2013-10-09 20:05:13 UTC (rev 157177)
@@ -30,6 +30,7 @@
#include "EventContext.h"
#include "EventDispatchMediator.h"
#include "EventRetargeter.h"
+#include "FocusEvent.h"
#include "FrameView.h"
#include "HTMLInputElement.h"
#include "HTMLMediaElement.h"
@@ -46,9 +47,10 @@
bool EventDispatcher::dispatchEvent(Node* node, PassRefPtr<EventDispatchMediator> mediator)
{
ASSERT(!NoEventDispatchAssertion::isEventDispatchForbidden());
- if (!mediator->event())
+ Event* event = mediator->event();
+ if (!event)
return true;
- EventDispatcher dispatcher(node, mediator->event());
+ EventDispatcher dispatcher(node, event);
return mediator->mediateAndDispatchEvent(&dispatcher);
}
@@ -100,6 +102,9 @@
bool EventDispatcher::dispatch()
{
+ if (EventTarget* relatedTarget = m_event->relatedTarget())
+ m_eventPath.setRelatedTarget(*relatedTarget);
+
#ifndef NDEBUG
ASSERT(!m_eventDispatched);
m_eventDispatched = true;
Modified: trunk/Source/WebCore/dom/EventDispatcher.h (157176 => 157177)
--- trunk/Source/WebCore/dom/EventDispatcher.h 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/EventDispatcher.h 2013-10-09 20:05:13 UTC (rev 157177)
@@ -54,12 +54,14 @@
class EventPath {
public:
- EventPath(Node&, Event&);
+ EventPath(Node& origin, Event&);
bool isEmpty() const { return m_path.isEmpty(); }
size_t size() const { return m_path.size(); }
const EventContext& contextAt(size_t i) const { return *m_path[i]; }
EventContext& contextAt(size_t i) { return *m_path[i]; }
+
+ void setRelatedTarget(EventTarget&);
bool hasEventListeners(const AtomicString& eventType) const;
@@ -70,6 +72,7 @@
private:
Vector<std::unique_ptr<EventContext>, 32> m_path;
+ RefPtr<Node> m_origin;
};
class EventDispatcher {
Modified: trunk/Source/WebCore/dom/EventRetargeter.cpp (157176 => 157177)
--- trunk/Source/WebCore/dom/EventRetargeter.cpp 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/EventRetargeter.cpp 2013-10-09 20:05:13 UTC (rev 157177)
@@ -75,6 +75,7 @@
}
EventPath::EventPath(Node& targetNode, Event& event)
+ : m_origin(&targetNode)
{
bool inDocument = targetNode.inDocument();
bool isSVGElement = targetNode.isSVGElement();
@@ -109,16 +110,6 @@
}
}
-void EventRetargeter::adjustForMouseEvent(Node* node, const MouseEvent& mouseEvent, EventPath& eventPath)
-{
- adjustForRelatedTarget(node, mouseEvent.relatedTarget(), eventPath);
-}
-
-void EventRetargeter::adjustForFocusEvent(Node* node, const FocusEvent& focusEvent, EventPath& eventPath)
-{
- adjustForRelatedTarget(node, focusEvent.relatedTarget(), eventPath);
-}
-
#if ENABLE(TOUCH_EVENTS)
void EventRetargeter::adjustForTouchEvent(Node* node, const TouchEvent& touchEvent, EventPath& eventPath)
{
@@ -148,7 +139,7 @@
ASSERT(eventPathTouchLists.size() == eventPathSize);
for (size_t i = 0; i < touchList->length(); ++i) {
const Touch& touch = *touchList->item(i);
- AdjustedNodes adjustedNodes;
+ Vector<RefPtr<Node>> adjustedNodes;
calculateAdjustedNodes(node, touch.target()->toNode(), DoesNotStopAtBoundary, const_cast<EventPath&>(eventPath), adjustedNodes);
ASSERT(adjustedNodes.size() == eventPathSize);
for (size_t j = 0; j < eventPathSize; ++j)
@@ -157,20 +148,16 @@
}
#endif
-void EventRetargeter::adjustForRelatedTarget(const Node* node, EventTarget* relatedTarget, EventPath& eventPath)
+void EventPath::setRelatedTarget(EventTarget& relatedTarget)
{
- if (!node)
- return;
- if (!relatedTarget)
- return;
- Node* relatedNode = relatedTarget->toNode();
+ Node* relatedNode = relatedTarget.toNode();
if (!relatedNode)
return;
- AdjustedNodes adjustedNodes;
- calculateAdjustedNodes(node, relatedNode, StopAtBoundaryIfNeeded, eventPath, adjustedNodes);
- ASSERT(adjustedNodes.size() <= eventPath.size());
+ Vector<RefPtr<Node>> adjustedNodes;
+ EventRetargeter::calculateAdjustedNodes(m_origin.get(), relatedNode, EventRetargeter::StopAtBoundaryIfNeeded, *this, adjustedNodes);
+ ASSERT(adjustedNodes.size() <= m_path.size());
for (size_t i = 0; i < adjustedNodes.size(); ++i)
- toMouseOrFocusEventContext(eventPath.contextAt(i)).setRelatedTarget(adjustedNodes[i]);
+ toMouseOrFocusEventContext(*m_path[i]).setRelatedTarget(adjustedNodes[i]);
}
static void buildRelatedNodeMap(const Node* relatedNode, HashMap<TreeScope*, Node*>& relatedNodeMap)
@@ -209,7 +196,7 @@
return relatedNode;
}
-void EventRetargeter::calculateAdjustedNodes(const Node* node, const Node* relatedNode, EventWithRelatedTargetDispatchBehavior eventWithRelatedTargetDispatchBehavior, EventPath& eventPath, AdjustedNodes& adjustedNodes)
+void EventRetargeter::calculateAdjustedNodes(const Node* node, const Node* relatedNode, EventWithRelatedTargetDispatchBehavior eventWithRelatedTargetDispatchBehavior, EventPath& eventPath, Vector<RefPtr<Node>>& adjustedNodes)
{
HashMap<TreeScope*, Node*> relatedNodeMap;
buildRelatedNodeMap(relatedNode, relatedNodeMap);
Modified: trunk/Source/WebCore/dom/EventRetargeter.h (157176 => 157177)
--- trunk/Source/WebCore/dom/EventRetargeter.h 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/EventRetargeter.h 2013-10-09 20:05:13 UTC (rev 157177)
@@ -48,8 +48,6 @@
class EventRetargeter {
public:
- static void adjustForMouseEvent(Node*, const MouseEvent&, EventPath&);
- static void adjustForFocusEvent(Node*, const FocusEvent&, EventPath&);
#if ENABLE(TOUCH_EVENTS)
typedef Vector<RefPtr<TouchList> > EventPathTouchLists;
static void adjustForTouchEvent(Node*, const TouchEvent&, EventPath&);
@@ -57,16 +55,16 @@
static EventTarget& eventTargetRespectingTargetRules(Node& referenceNode);
private:
- typedef Vector<RefPtr<Node> > AdjustedNodes;
enum EventWithRelatedTargetDispatchBehavior {
StopAtBoundaryIfNeeded,
DoesNotStopAtBoundary
};
static void adjustForRelatedTarget(const Node*, EventTarget* relatedTarget, EventPath&);
- static void calculateAdjustedNodes(const Node*, const Node* relatedNode, EventWithRelatedTargetDispatchBehavior, EventPath&, AdjustedNodes&);
+ static void calculateAdjustedNodes(const Node*, const Node* relatedNode, EventWithRelatedTargetDispatchBehavior, EventPath&, Vector<RefPtr<Node>>& adjustedNodes);
#if ENABLE(TOUCH_EVENTS)
static void adjustTouchList(const Node*, const TouchList*, const EventPath&, EventPathTouchLists&);
#endif
+ friend class EventPath;
};
inline EventTarget& EventRetargeter::eventTargetRespectingTargetRules(Node& referenceNode)
Modified: trunk/Source/WebCore/dom/FocusEvent.cpp (157176 => 157177)
--- trunk/Source/WebCore/dom/FocusEvent.cpp 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/FocusEvent.cpp 2013-10-09 20:05:13 UTC (rev 157177)
@@ -65,68 +65,4 @@
{
}
-PassRefPtr<FocusEventDispatchMediator> FocusEventDispatchMediator::create(PassRefPtr<FocusEvent> focusEvent)
-{
- return adoptRef(new FocusEventDispatchMediator(focusEvent));
-}
-
-FocusEventDispatchMediator::FocusEventDispatchMediator(PassRefPtr<FocusEvent> focusEvent)
- : EventDispatchMediator(focusEvent)
-{
-}
-
-bool FocusEventDispatchMediator::mediateAndDispatchEvent(EventDispatcher* dispatcher) const
-{
- EventRetargeter::adjustForFocusEvent(dispatcher->node(), *event(), dispatcher->eventPath());
- return EventDispatchMediator::mediateAndDispatchEvent(dispatcher);
-}
-
-PassRefPtr<BlurEventDispatchMediator> BlurEventDispatchMediator::create(PassRefPtr<FocusEvent> focusEvent)
-{
- return adoptRef(new BlurEventDispatchMediator(focusEvent));
-}
-
-BlurEventDispatchMediator::BlurEventDispatchMediator(PassRefPtr<FocusEvent> focusEvent)
- : EventDispatchMediator(focusEvent)
-{
-}
-
-bool BlurEventDispatchMediator::mediateAndDispatchEvent(EventDispatcher* dispatcher) const
-{
- EventRetargeter::adjustForFocusEvent(dispatcher->node(), *event(), dispatcher->eventPath());
- return EventDispatchMediator::mediateAndDispatchEvent(dispatcher);
-}
-
-PassRefPtr<FocusInEventDispatchMediator> FocusInEventDispatchMediator::create(PassRefPtr<FocusEvent> focusEvent)
-{
- return adoptRef(new FocusInEventDispatchMediator(focusEvent));
-}
-
-FocusInEventDispatchMediator::FocusInEventDispatchMediator(PassRefPtr<FocusEvent> focusEvent)
- : EventDispatchMediator(focusEvent)
-{
-}
-
-bool FocusInEventDispatchMediator::mediateAndDispatchEvent(EventDispatcher* dispatcher) const
-{
- EventRetargeter::adjustForFocusEvent(dispatcher->node(), *event(), dispatcher->eventPath());
- return EventDispatchMediator::mediateAndDispatchEvent(dispatcher);
-}
-
-PassRefPtr<FocusOutEventDispatchMediator> FocusOutEventDispatchMediator::create(PassRefPtr<FocusEvent> focusEvent)
-{
- return adoptRef(new FocusOutEventDispatchMediator(focusEvent));
-}
-
-FocusOutEventDispatchMediator::FocusOutEventDispatchMediator(PassRefPtr<FocusEvent> focusEvent)
- : EventDispatchMediator(focusEvent)
-{
-}
-
-bool FocusOutEventDispatchMediator::mediateAndDispatchEvent(EventDispatcher* dispatcher) const
-{
- EventRetargeter::adjustForFocusEvent(dispatcher->node(), *event(), dispatcher->eventPath());
- return EventDispatchMediator::mediateAndDispatchEvent(dispatcher);
-}
-
} // namespace WebCore
Modified: trunk/Source/WebCore/dom/FocusEvent.h (157176 => 157177)
--- trunk/Source/WebCore/dom/FocusEvent.h 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/FocusEvent.h 2013-10-09 20:05:13 UTC (rev 157177)
@@ -56,7 +56,7 @@
return adoptRef(new FocusEvent(type, initializer));
}
- EventTarget* relatedTarget() const { return m_relatedTarget.get(); }
+ virtual EventTarget* relatedTarget() const OVERRIDE FINAL { return m_relatedTarget.get(); }
void setRelatedTarget(PassRefPtr<EventTarget> relatedTarget) { m_relatedTarget = relatedTarget; }
virtual EventInterface eventInterface() const;
@@ -76,42 +76,6 @@
return static_cast<FocusEvent*>(event);
}
-class FocusEventDispatchMediator : public EventDispatchMediator {
-public:
- static PassRefPtr<FocusEventDispatchMediator> create(PassRefPtr<FocusEvent>);
-private:
- explicit FocusEventDispatchMediator(PassRefPtr<FocusEvent>);
- FocusEvent* event() const { return static_cast<FocusEvent*>(EventDispatchMediator::event()); }
- virtual bool mediateAndDispatchEvent(EventDispatcher*) const OVERRIDE;
-};
-
-class BlurEventDispatchMediator : public EventDispatchMediator {
-public:
- static PassRefPtr<BlurEventDispatchMediator> create(PassRefPtr<FocusEvent>);
-private:
- explicit BlurEventDispatchMediator(PassRefPtr<FocusEvent>);
- FocusEvent* event() const { return static_cast<FocusEvent*>(EventDispatchMediator::event()); }
- virtual bool mediateAndDispatchEvent(EventDispatcher*) const OVERRIDE;
-};
-
-class FocusInEventDispatchMediator : public EventDispatchMediator {
-public:
- static PassRefPtr<FocusInEventDispatchMediator> create(PassRefPtr<FocusEvent>);
-private:
- explicit FocusInEventDispatchMediator(PassRefPtr<FocusEvent>);
- FocusEvent* event() const { return static_cast<FocusEvent*>(EventDispatchMediator::event()); }
- virtual bool mediateAndDispatchEvent(EventDispatcher*) const OVERRIDE;
-};
-
-class FocusOutEventDispatchMediator : public EventDispatchMediator {
-public:
- static PassRefPtr<FocusOutEventDispatchMediator> create(PassRefPtr<FocusEvent>);
-private:
- explicit FocusOutEventDispatchMediator(PassRefPtr<FocusEvent>);
- FocusEvent* event() const { return static_cast<FocusEvent*>(EventDispatchMediator::event()); }
- virtual bool mediateAndDispatchEvent(EventDispatcher*) const OVERRIDE;
-};
-
} // namespace WebCore
#endif // FocusEvent_h
Modified: trunk/Source/WebCore/dom/MouseEvent.cpp (157176 => 157177)
--- trunk/Source/WebCore/dom/MouseEvent.cpp 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/MouseEvent.cpp 2013-10-09 20:05:13 UTC (rev 157177)
@@ -205,19 +205,23 @@
Node* MouseEvent::toElement() const
{
// MSIE extension - "the object toward which the user is moving the mouse pointer"
- if (type() == eventNames().mouseoutEvent || type() == eventNames().mouseleaveEvent)
- return relatedTarget() ? relatedTarget()->toNode() : 0;
-
- return target() ? target()->toNode() : 0;
+ if (type() == eventNames().mouseoutEvent || type() == eventNames().mouseleaveEvent) {
+ EventTarget* relatedTarget = this->relatedTarget();
+ return relatedTarget ? relatedTarget->toNode() : nullptr;
+ }
+
+ return target() ? target()->toNode() : nullptr;
}
Node* MouseEvent::fromElement() const
{
// MSIE extension - "object from which activation or the mouse pointer is exiting during the event" (huh?)
- if (type() != eventNames().mouseoutEvent && type() != eventNames().mouseleaveEvent)
- return relatedTarget() ? relatedTarget()->toNode() : 0;
-
- return target() ? target()->toNode() : 0;
+ if (type() != eventNames().mouseoutEvent && type() != eventNames().mouseleaveEvent) {
+ EventTarget* relatedTarget = this->relatedTarget();
+ return relatedTarget ? relatedTarget->toNode() : nullptr;
+ }
+
+ return target() ? target()->toNode() : nullptr;
}
// FIXME: Fix positioning. e.g. We need to consider border/padding.
@@ -298,10 +302,8 @@
bool MouseEventDispatchMediator::mediateAndDispatchEvent(EventDispatcher* dispatcher) const
{
- if (isSyntheticMouseEvent()) {
- EventRetargeter::adjustForMouseEvent(dispatcher->node(), *event(), dispatcher->eventPath());
+ if (isSyntheticMouseEvent())
return dispatcher->dispatch();
- }
if (isDisabledFormControl(dispatcher->node()))
return false;
@@ -309,10 +311,8 @@
if (event()->type().isEmpty())
return true; // Shouldn't happen.
- ASSERT(!event()->target() || event()->target() != event()->relatedTarget());
-
EventTarget* relatedTarget = event()->relatedTarget();
- EventRetargeter::adjustForMouseEvent(dispatcher->node(), *event(), dispatcher->eventPath());
+ ASSERT(!event()->target() || event()->target() != relatedTarget);
dispatcher->dispatch();
bool swallowEvent = event()->defaultHandled() || event()->defaultPrevented();
Modified: trunk/Source/WebCore/dom/MouseEvent.h (157176 => 157177)
--- trunk/Source/WebCore/dom/MouseEvent.h 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/MouseEvent.h 2013-10-09 20:05:13 UTC (rev 157177)
@@ -86,7 +86,7 @@
// but we will match the standard DOM.
unsigned short button() const { return m_button; }
bool buttonDown() const { return m_buttonDown; }
- EventTarget* relatedTarget() const { return m_relatedTarget.get(); }
+ virtual EventTarget* relatedTarget() const OVERRIDE FINAL { return m_relatedTarget.get(); }
void setRelatedTarget(PassRefPtr<EventTarget> relatedTarget) { m_relatedTarget = relatedTarget; }
Clipboard* clipboard() const { return m_clipboard.get(); }
Modified: trunk/Source/WebCore/dom/Node.cpp (157176 => 157177)
--- trunk/Source/WebCore/dom/Node.cpp 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/Node.cpp 2013-10-09 20:05:13 UTC (rev 157177)
@@ -2069,14 +2069,9 @@
void Node::dispatchScopedEvent(PassRefPtr<Event> event)
{
- dispatchScopedEventDispatchMediator(EventDispatchMediator::create(event));
+ EventDispatcher::dispatchScopedEvent(*this, EventDispatchMediator::create(event));
}
-void Node::dispatchScopedEventDispatchMediator(PassRefPtr<EventDispatchMediator> eventDispatchMediator)
-{
- EventDispatcher::dispatchScopedEvent(*this, eventDispatchMediator);
-}
-
bool Node::dispatchEvent(PassRefPtr<Event> event)
{
if (event->isMouseEvent())
Modified: trunk/Source/WebCore/dom/Node.h (157176 => 157177)
--- trunk/Source/WebCore/dom/Node.h 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/dom/Node.h 2013-10-09 20:05:13 UTC (rev 157177)
@@ -533,7 +533,6 @@
virtual bool dispatchEvent(PassRefPtr<Event>) OVERRIDE;
void dispatchScopedEvent(PassRefPtr<Event>);
- void dispatchScopedEventDispatchMediator(PassRefPtr<EventDispatchMediator>);
virtual void handleLocalEvents(Event*);
Modified: trunk/Source/WebCore/html/shadow/MediaControlElements.cpp (157176 => 157177)
--- trunk/Source/WebCore/html/shadow/MediaControlElements.cpp 2013-10-09 18:22:08 UTC (rev 157176)
+++ trunk/Source/WebCore/html/shadow/MediaControlElements.cpp 2013-10-09 20:05:13 UTC (rev 157177)
@@ -368,10 +368,11 @@
// Poor man's mouseleave event detection.
MouseEvent* mouseEvent = static_cast<MouseEvent*>(event);
- if (!mouseEvent->relatedTarget() || !mouseEvent->relatedTarget()->toNode())
+ EventTarget* relatedTarget = mouseEvent->relatedTarget();
+ if (!relatedTarget || !relatedTarget->toNode())
return;
- if (this->containsIncludingShadowDOM(mouseEvent->relatedTarget()->toNode()))
+ if (this->containsIncludingShadowDOM(relatedTarget->toNode()))
return;
hide();