Title: [150711] trunk/Source/WebCore
- Revision
- 150711
- Author
- [email protected]
- Date
- 2013-05-26 02:43:22 -0700 (Sun, 26 May 2013)
Log Message
Move some form control things from Element to HTMLFormControlElement.
<http://webkit.org/b/116779>
Reviewed by Antti Koivisto.
The following methods sit better on HTMLFormControlElement than on Element:
- formControlType()
- wasChangedSinceLastFormControlChangeEvent()
- setChangedSinceLastFormControlChangeEvent()
- dispatchFormControlChangeEvent()
Moved them, and devirtualized as much as possible.
* dom/Document.cpp:
(WebCore::Document::setFocusedNode):
Check if the old focus target is an Element before (possibly) dispatching a change event.
* dom/Element.cpp:
* dom/Element.h:
Removed some stub methods that were only used by HTMLFormControlElement subclasses.
* html/HTMLFormControlElement.cpp:
* html/HTMLFormControlElement.h:
(WebCore::isHTMLFormControlElement):
(WebCore::toHTMLFormControlElement):
Add toHTMLFormControlElement() helper with ASSERT_WITH_SECURITY_IMPLICATION.
* html/HTMLTextFormControlElement.h:
Sprinkle OVERRIDE.
Modified Paths
Diff
Modified: trunk/Source/WebCore/ChangeLog (150710 => 150711)
--- trunk/Source/WebCore/ChangeLog 2013-05-26 09:39:24 UTC (rev 150710)
+++ trunk/Source/WebCore/ChangeLog 2013-05-26 09:43:22 UTC (rev 150711)
@@ -1,3 +1,40 @@
+2013-05-26 Andreas Kling <[email protected]>
+
+ Move some form control things from Element to HTMLFormControlElement.
+ <http://webkit.org/b/116779>
+
+ Reviewed by Antti Koivisto.
+
+ The following methods sit better on HTMLFormControlElement than on Element:
+
+ - formControlType()
+ - wasChangedSinceLastFormControlChangeEvent()
+ - setChangedSinceLastFormControlChangeEvent()
+ - dispatchFormControlChangeEvent()
+
+ Moved them, and devirtualized as much as possible.
+
+ * dom/Document.cpp:
+ (WebCore::Document::setFocusedNode):
+
+ Check if the old focus target is an Element before (possibly) dispatching a change event.
+
+ * dom/Element.cpp:
+ * dom/Element.h:
+
+ Removed some stub methods that were only used by HTMLFormControlElement subclasses.
+
+ * html/HTMLFormControlElement.cpp:
+ * html/HTMLFormControlElement.h:
+ (WebCore::isHTMLFormControlElement):
+ (WebCore::toHTMLFormControlElement):
+
+ Add toHTMLFormControlElement() helper with ASSERT_WITH_SECURITY_IMPLICATION.
+
+ * html/HTMLTextFormControlElement.h:
+
+ Sprinkle OVERRIDE.
+
2013-05-25 Andreas Kling <[email protected]>
Move Node::supportsFocus() to Element.
Modified: trunk/Source/WebCore/dom/Document.cpp (150710 => 150711)
--- trunk/Source/WebCore/dom/Document.cpp 2013-05-26 09:39:24 UTC (rev 150710)
+++ trunk/Source/WebCore/dom/Document.cpp 2013-05-26 09:43:22 UTC (rev 150711)
@@ -92,6 +92,7 @@
#include "HTMLCollection.h"
#include "HTMLDocument.h"
#include "HTMLElementFactory.h"
+#include "HTMLFormControlElement.h"
#include "HTMLFrameOwnerElement.h"
#include "HTMLHeadElement.h"
#include "HTMLIFrameElement.h"
@@ -3345,11 +3346,11 @@
if (oldFocusedNode->isElementNode())
toElement(oldFocusedNode.get())->setFocus(false);
- // Dispatch a change event for text fields or textareas that have been edited
- if (oldFocusedNode->isElementNode()) {
- Element* element = toElement(oldFocusedNode.get());
- if (element->wasChangedSinceLastFormControlChangeEvent())
- element->dispatchFormControlChangeEvent();
+ // Dispatch a change event for form control elements that have been edited.
+ if (oldFocusedNode->isElementNode() && toElement(oldFocusedNode.get())->isFormControlElement()) {
+ HTMLFormControlElement* formControlElement = toHTMLFormControlElement(oldFocusedNode.get());
+ if (formControlElement->wasChangedSinceLastFormControlChangeEvent())
+ formControlElement->dispatchFormControlChangeEvent();
}
// Dispatch the blur event and let the node do any other blur related activities (important for text fields)
Modified: trunk/Source/WebCore/dom/Element.cpp (150710 => 150711)
--- trunk/Source/WebCore/dom/Element.cpp 2013-05-26 09:39:24 UTC (rev 150710)
+++ trunk/Source/WebCore/dom/Element.cpp 2013-05-26 09:43:22 UTC (rev 150711)
@@ -1208,15 +1208,6 @@
}
#endif
-bool Element::wasChangedSinceLastFormControlChangeEvent() const
-{
- return false;
-}
-
-void Element::setChangedSinceLastFormControlChangeEvent(bool)
-{
-}
-
bool Element::isDisabledFormControl() const
{
#if ENABLE(DIALOG_ELEMENT)
Modified: trunk/Source/WebCore/dom/Element.h (150710 => 150711)
--- trunk/Source/WebCore/dom/Element.h 2013-05-26 09:39:24 UTC (rev 150710)
+++ trunk/Source/WebCore/dom/Element.h 2013-05-26 09:43:22 UTC (rev 150711)
@@ -574,12 +574,6 @@
virtual bool canContainRangeEndPoint() const { return true; }
- virtual const AtomicString& formControlType() const { return nullAtom; }
-
- virtual bool wasChangedSinceLastFormControlChangeEvent() const;
- 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 isDisabledFormControl() const;
Modified: trunk/Source/WebCore/html/HTMLFormControlElement.cpp (150710 => 150711)
--- trunk/Source/WebCore/html/HTMLFormControlElement.cpp 2013-05-26 09:39:24 UTC (rev 150710)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.cpp 2013-05-26 09:43:22 UTC (rev 150711)
@@ -252,11 +252,6 @@
FormAssociatedElement::removedFrom(insertionPoint);
}
-bool HTMLFormControlElement::wasChangedSinceLastFormControlChangeEvent() const
-{
- return m_wasChangedSinceLastFormControlChangeEvent;
-}
-
void HTMLFormControlElement::setChangedSinceLastFormControlChangeEvent(bool changed)
{
m_wasChangedSinceLastFormControlChangeEvent = changed;
Modified: trunk/Source/WebCore/html/HTMLFormControlElement.h (150710 => 150711)
--- trunk/Source/WebCore/html/HTMLFormControlElement.h 2013-05-26 09:39:24 UTC (rev 150710)
+++ trunk/Source/WebCore/html/HTMLFormControlElement.h 2013-05-26 09:43:22 UTC (rev 150711)
@@ -58,11 +58,11 @@
virtual bool formControlValueMatchesRenderer() const { return m_valueMatchesRenderer; }
virtual void setFormControlValueMatchesRenderer(bool b) { m_valueMatchesRenderer = b; }
- virtual bool wasChangedSinceLastFormControlChangeEvent() const;
- virtual void setChangedSinceLastFormControlChangeEvent(bool);
+ bool wasChangedSinceLastFormControlChangeEvent() const { return m_wasChangedSinceLastFormControlChangeEvent; }
+ void setChangedSinceLastFormControlChangeEvent(bool);
virtual void dispatchFormControlChangeEvent();
- virtual void dispatchFormControlInputEvent();
+ void dispatchFormControlInputEvent();
virtual bool isDisabledFormControl() const OVERRIDE;
@@ -73,7 +73,7 @@
const AtomicString& type() const { return formControlType(); }
- virtual const AtomicString& formControlType() const OVERRIDE = 0;
+ virtual const AtomicString& formControlType() const = 0;
virtual bool canTriggerImplicitSubmission() const { return false; }
@@ -169,6 +169,20 @@
bool m_hasAutofocused : 1;
};
+inline bool isHTMLFormControlElement(const Node* node)
+{
+ return node->isElementNode() && toElement(node)->isFormControlElement();
+}
+
+inline HTMLFormControlElement* toHTMLFormControlElement(Node* node)
+{
+ ASSERT_WITH_SECURITY_IMPLICATION(!node || isHTMLFormControlElement(node));
+ return static_cast<HTMLFormControlElement*>(node);
+}
+
+// This will catch anyone doing an unnecessary cast.
+void toHTMLFormControlElement(const HTMLFormControlElement*);
+
} // namespace
#endif
Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.h (150710 => 150711)
--- trunk/Source/WebCore/html/HTMLTextFormControlElement.h 2013-05-26 09:39:24 UTC (rev 150710)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.h 2013-05-26 09:43:22 UTC (rev 150711)
@@ -71,7 +71,7 @@
PassRefPtr<Range> selection() const;
String selectedText() const;
- virtual void dispatchFormControlChangeEvent();
+ virtual void dispatchFormControlChangeEvent() OVERRIDE FINAL;
virtual int maxLength() const = 0;
virtual String value() const = 0;
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes