- Revision
- 145514
- Author
- [email protected]
- Date
- 2013-03-12 04:13:02 -0700 (Tue, 12 Mar 2013)
Log Message
Refactoring: Pull Node::disabled() and Node::isInert() down to Element.
https://bugs.webkit.org/show_bug.cgi?id=112085
Reviewed by Hajime Morrita.
Node is too low a level for these methods.
No new tests, just refactoring.
* dom/Element.cpp:
(WebCore::Element::disabled):
(WebCore):
(WebCore::Element::isInert):
* dom/Element.h:
(Element):
* dom/EventDispatcher.cpp:
(WebCore::EventDispatcher::dispatchSimulatedClick):
* dom/GestureEvent.cpp:
(WebCore::GestureEventDispatchMediator::dispatchEvent):
* dom/MouseEvent.cpp:
(WebCore::MouseEventDispatchMediator::dispatchEvent):
* dom/Node.cpp:
(WebCore::Node::handleLocalEvents):
(WebCore::Node::willRespondToMouseMoveEvents):
(WebCore::Node::willRespondToMouseClickEvents):
(WebCore::Node::willRespondToTouchEvents):
* dom/Node.h:
(Node):
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (145513 => 145514)
--- trunk/Source/WebCore/ChangeLog 2013-03-12 11:12:28 UTC (rev 145513)
+++ trunk/Source/WebCore/ChangeLog 2013-03-12 11:13:02 UTC (rev 145514)
@@ -1,3 +1,34 @@
+2013-03-12 Matt Falkenhagen <[email protected]>
+
+ Refactoring: Pull Node::disabled() and Node::isInert() down to Element.
+ https://bugs.webkit.org/show_bug.cgi?id=112085
+
+ Reviewed by Hajime Morrita.
+
+ Node is too low a level for these methods.
+
+ No new tests, just refactoring.
+
+ * dom/Element.cpp:
+ (WebCore::Element::disabled):
+ (WebCore):
+ (WebCore::Element::isInert):
+ * dom/Element.h:
+ (Element):
+ * dom/EventDispatcher.cpp:
+ (WebCore::EventDispatcher::dispatchSimulatedClick):
+ * dom/GestureEvent.cpp:
+ (WebCore::GestureEventDispatchMediator::dispatchEvent):
+ * dom/MouseEvent.cpp:
+ (WebCore::MouseEventDispatchMediator::dispatchEvent):
+ * dom/Node.cpp:
+ (WebCore::Node::handleLocalEvents):
+ (WebCore::Node::willRespondToMouseMoveEvents):
+ (WebCore::Node::willRespondToMouseClickEvents):
+ (WebCore::Node::willRespondToTouchEvents):
+ * dom/Node.h:
+ (Node):
+
2013-03-12 Marja Hölttä <[email protected]>
[V8] Get rid of function-level static FunctionTemplates in generated bindings code
Modified: trunk/Source/WebCore/dom/Element.cpp (145513 => 145514)
--- trunk/Source/WebCore/dom/Element.cpp 2013-03-12 11:12:28 UTC (rev 145513)
+++ trunk/Source/WebCore/dom/Element.cpp 2013-03-12 11:13:02 UTC (rev 145514)
@@ -1152,6 +1152,25 @@
{
}
+bool Element::disabled() const
+{
+#if ENABLE(DIALOG_ELEMENT)
+ // FIXME: disabled and inert are separate concepts in the spec, but now we treat them as the same.
+ // For example, an inert, non-disabled form control should not be grayed out.
+ if (isInert())
+ return true;
+#endif
+ return false;
+}
+
+#if ENABLE(DIALOG_ELEMENT)
+bool Element::isInert() const
+{
+ Element* dialog = document()->activeModalDialog();
+ return dialog && !containsIncludingShadowDOM(dialog) && !dialog->containsIncludingShadowDOM(this);
+}
+#endif
+
Node::InsertionNotificationRequest Element::insertedInto(ContainerNode* insertionPoint)
{
// need to do superclass processing first so inDocument() is true
Modified: trunk/Source/WebCore/dom/Element.h (145513 => 145514)
--- trunk/Source/WebCore/dom/Element.h 2013-03-12 11:12:28 UTC (rev 145513)
+++ trunk/Source/WebCore/dom/Element.h 2013-03-12 11:13:02 UTC (rev 145514)
@@ -546,6 +546,14 @@
virtual void setChangedSinceLastFormControlChangeEvent(bool);
virtual void dispatchFormControlChangeEvent() { }
+ // Used for disabled form elements; if true, prevents mouse events from being dispatched
+ // to event listeners, and prevents DOMActivate events from being sent at all.
+ virtual bool disabled() const;
+
+#if ENABLE(DIALOG_ELEMENT)
+ bool isInert() const;
+#endif
+
#if ENABLE(SVG)
virtual bool childShouldCreateRenderer(const NodeRenderingContext&) const;
bool hasPendingResources() const;
Modified: trunk/Source/WebCore/dom/EventDispatcher.cpp (145513 => 145514)
--- trunk/Source/WebCore/dom/EventDispatcher.cpp 2013-03-12 11:12:28 UTC (rev 145513)
+++ trunk/Source/WebCore/dom/EventDispatcher.cpp 2013-03-12 11:13:02 UTC (rev 145514)
@@ -79,7 +79,7 @@
void EventDispatcher::dispatchSimulatedClick(Node* node, Event* underlyingEvent, SimulatedClickMouseEventOptions mouseEventOptions, SimulatedClickVisualOptions visualOptions)
{
- if (node->disabled())
+ if (node->isElementNode() && toElement(node)->disabled())
return;
if (!gNodesDispatchingSimulatedClicks)
Modified: trunk/Source/WebCore/dom/GestureEvent.cpp (145513 => 145514)
--- trunk/Source/WebCore/dom/GestureEvent.cpp 2013-03-12 11:12:28 UTC (rev 145513)
+++ trunk/Source/WebCore/dom/GestureEvent.cpp 2013-03-12 11:13:02 UTC (rev 145514)
@@ -29,6 +29,7 @@
#include "GestureEvent.h"
+#include "Element.h"
#include <wtf/text/AtomicString.h>
namespace WebCore {
@@ -119,7 +120,7 @@
bool GestureEventDispatchMediator::dispatchEvent(EventDispatcher* dispatcher) const
{
- if (dispatcher->node()->disabled())
+ if (dispatcher->node()->isElementNode() && toElement(dispatcher->node())->disabled())
return true;
dispatcher->dispatch();
Modified: trunk/Source/WebCore/dom/MouseEvent.cpp (145513 => 145514)
--- trunk/Source/WebCore/dom/MouseEvent.cpp 2013-03-12 11:12:28 UTC (rev 145513)
+++ trunk/Source/WebCore/dom/MouseEvent.cpp 2013-03-12 11:13:02 UTC (rev 145514)
@@ -300,7 +300,7 @@
return dispatcher->dispatch();
}
- if (dispatcher->node()->disabled()) // Don't even send DOM events for disabled controls..
+ if (dispatcher->node()->isElementNode() && toElement(dispatcher->node())->disabled()) // Don't even send DOM events for disabled controls..
return false;
if (event()->type().isEmpty())
Modified: trunk/Source/WebCore/dom/Node.cpp (145513 => 145514)
--- trunk/Source/WebCore/dom/Node.cpp 2013-03-12 11:12:28 UTC (rev 145513)
+++ trunk/Source/WebCore/dom/Node.cpp 2013-03-12 11:13:02 UTC (rev 145514)
@@ -902,14 +902,6 @@
return this;
}
-#if ENABLE(DIALOG_ELEMENT)
-bool Node::isInert() const
-{
- Element* dialog = document()->activeModalDialog();
- return dialog && !containsIncludingShadowDOM(dialog) && !dialog->containsIncludingShadowDOM(this);
-}
-#endif
-
unsigned Node::nodeIndex() const
{
Node *_tempNode = previousSibling();
@@ -2312,7 +2304,7 @@
if (!hasEventTargetData())
return;
- if (disabled() && event->isMouseEvent())
+ if (isElementNode() && toElement(this)->disabled() && event->isMouseEvent())
return;
fireEventListeners(event);
@@ -2452,15 +2444,6 @@
dispatchScopedEvent(Event::create(eventNames().inputEvent, true, false));
}
-bool Node::disabled() const
-{
-#if ENABLE(DIALOG_ELEMENT)
- if (isInert())
- return true;
-#endif
- return false;
-}
-
void Node::defaultEventHandler(Event* event)
{
if (event->target() != this)
@@ -2520,14 +2503,14 @@
bool Node::willRespondToMouseMoveEvents()
{
- if (disabled())
+ if (isElementNode() && toElement(this)->disabled())
return false;
return hasEventListeners(eventNames().mousemoveEvent) || hasEventListeners(eventNames().mouseoverEvent) || hasEventListeners(eventNames().mouseoutEvent);
}
bool Node::willRespondToMouseClickEvents()
{
- if (disabled())
+ if (isElementNode() && toElement(this)->disabled())
return false;
return isContentEditable(UserSelectAllIsAlwaysNonEditable) || hasEventListeners(eventNames().mouseupEvent) || hasEventListeners(eventNames().mousedownEvent) || hasEventListeners(eventNames().clickEvent) || hasEventListeners(eventNames().DOMActivateEvent);
}
@@ -2535,7 +2518,7 @@
bool Node::willRespondToTouchEvents()
{
#if ENABLE(TOUCH_EVENTS)
- if (disabled())
+ if (isElementNode() && toElement(this)->disabled())
return false;
return hasEventListeners(eventNames().touchstartEvent) || hasEventListeners(eventNames().touchmoveEvent) || hasEventListeners(eventNames().touchcancelEvent) || hasEventListeners(eventNames().touchendEvent);
#else
Modified: trunk/Source/WebCore/dom/Node.h (145513 => 145514)
--- trunk/Source/WebCore/dom/Node.h 2013-03-12 11:12:28 UTC (rev 145513)
+++ trunk/Source/WebCore/dom/Node.h 2013-03-12 11:13:02 UTC (rev 145514)
@@ -414,10 +414,6 @@
virtual bool isMouseFocusable() const;
virtual Node* focusDelegate();
-#if ENABLE(DIALOG_ELEMENT)
- bool isInert() const;
-#endif
-
enum UserSelectAllTreatment {
UserSelectAllDoesNotAffectEditability,
UserSelectAllIsAlwaysNonEditable
@@ -663,10 +659,6 @@
// Perform the default action for an event.
virtual void defaultEventHandler(Event*);
- // Used for disabled form elements; if true, prevents mouse events from being dispatched
- // to event listeners, and prevents DOMActivate events from being sent at all.
- virtual bool disabled() const;
-
using TreeShared<Node>::ref;
using TreeShared<Node>::deref;