Changeset 150711 in webkit


Ignore:
Timestamp:
May 26, 2013 2:43:22 AM (11 years ago)
Author:
akling@apple.com
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.

Location:
trunk/Source/WebCore
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r150710 r150711  
     12013-05-26  Andreas Kling  <akling@apple.com>
     2
     3        Move some form control things from Element to HTMLFormControlElement.
     4        <http://webkit.org/b/116779>
     5
     6        Reviewed by Antti Koivisto.
     7
     8        The following methods sit better on HTMLFormControlElement than on Element:
     9
     10            - formControlType()
     11            - wasChangedSinceLastFormControlChangeEvent()
     12            - setChangedSinceLastFormControlChangeEvent()
     13            - dispatchFormControlChangeEvent()
     14
     15        Moved them, and devirtualized as much as possible.
     16
     17        * dom/Document.cpp:
     18        (WebCore::Document::setFocusedNode):
     19
     20            Check if the old focus target is an Element before (possibly) dispatching a change event.
     21
     22        * dom/Element.cpp:
     23        * dom/Element.h:
     24
     25            Removed some stub methods that were only used by HTMLFormControlElement subclasses.
     26
     27        * html/HTMLFormControlElement.cpp:
     28        * html/HTMLFormControlElement.h:
     29        (WebCore::isHTMLFormControlElement):
     30        (WebCore::toHTMLFormControlElement):
     31
     32            Add toHTMLFormControlElement() helper with ASSERT_WITH_SECURITY_IMPLICATION.
     33
     34        * html/HTMLTextFormControlElement.h:
     35
     36            Sprinkle OVERRIDE.
     37
    1382013-05-25  Andreas Kling  <akling@apple.com>
    239
  • trunk/Source/WebCore/dom/Document.cpp

    r150709 r150711  
    9393#include "HTMLDocument.h"
    9494#include "HTMLElementFactory.h"
     95#include "HTMLFormControlElement.h"
    9596#include "HTMLFrameOwnerElement.h"
    9697#include "HTMLHeadElement.h"
     
    33463347            toElement(oldFocusedNode.get())->setFocus(false);
    33473348
    3348         // Dispatch a change event for text fields or textareas that have been edited
    3349         if (oldFocusedNode->isElementNode()) {
    3350             Element* element = toElement(oldFocusedNode.get());
    3351             if (element->wasChangedSinceLastFormControlChangeEvent())
    3352                 element->dispatchFormControlChangeEvent();
     3349        // Dispatch a change event for form control elements that have been edited.
     3350        if (oldFocusedNode->isElementNode() && toElement(oldFocusedNode.get())->isFormControlElement()) {
     3351            HTMLFormControlElement* formControlElement = toHTMLFormControlElement(oldFocusedNode.get());
     3352            if (formControlElement->wasChangedSinceLastFormControlChangeEvent())
     3353                formControlElement->dispatchFormControlChangeEvent();
    33533354        }
    33543355
  • trunk/Source/WebCore/dom/Element.cpp

    r150709 r150711  
    12091209#endif
    12101210
    1211 bool Element::wasChangedSinceLastFormControlChangeEvent() const
    1212 {
    1213     return false;
    1214 }
    1215 
    1216 void Element::setChangedSinceLastFormControlChangeEvent(bool)
    1217 {
    1218 }
    1219 
    12201211bool Element::isDisabledFormControl() const
    12211212{
  • trunk/Source/WebCore/dom/Element.h

    r150710 r150711  
    575575    virtual bool canContainRangeEndPoint() const { return true; }
    576576
    577     virtual const AtomicString& formControlType() const { return nullAtom; }
    578 
    579     virtual bool wasChangedSinceLastFormControlChangeEvent() const;
    580     virtual void setChangedSinceLastFormControlChangeEvent(bool);
    581     virtual void dispatchFormControlChangeEvent() { }
    582 
    583577    // Used for disabled form elements; if true, prevents mouse events from being dispatched
    584578    // to event listeners, and prevents DOMActivate events from being sent at all.
  • trunk/Source/WebCore/html/HTMLFormControlElement.cpp

    r148921 r150711  
    253253}
    254254
    255 bool HTMLFormControlElement::wasChangedSinceLastFormControlChangeEvent() const
    256 {
    257     return m_wasChangedSinceLastFormControlChangeEvent;
    258 }
    259 
    260255void HTMLFormControlElement::setChangedSinceLastFormControlChangeEvent(bool changed)
    261256{
  • trunk/Source/WebCore/html/HTMLFormControlElement.h

    r150710 r150711  
    5959    virtual void setFormControlValueMatchesRenderer(bool b) { m_valueMatchesRenderer = b; }
    6060
    61     virtual bool wasChangedSinceLastFormControlChangeEvent() const;
    62     virtual void setChangedSinceLastFormControlChangeEvent(bool);
     61    bool wasChangedSinceLastFormControlChangeEvent() const { return m_wasChangedSinceLastFormControlChangeEvent; }
     62    void setChangedSinceLastFormControlChangeEvent(bool);
    6363
    6464    virtual void dispatchFormControlChangeEvent();
    65     virtual void dispatchFormControlInputEvent();
     65    void dispatchFormControlInputEvent();
    6666
    6767    virtual bool isDisabledFormControl() const OVERRIDE;
     
    7474    const AtomicString& type() const { return formControlType(); }
    7575
    76     virtual const AtomicString& formControlType() const OVERRIDE = 0;
     76    virtual const AtomicString& formControlType() const = 0;
    7777
    7878    virtual bool canTriggerImplicitSubmission() const { return false; }
     
    170170};
    171171
     172inline bool isHTMLFormControlElement(const Node* node)
     173{
     174    return node->isElementNode() && toElement(node)->isFormControlElement();
     175}
     176
     177inline HTMLFormControlElement* toHTMLFormControlElement(Node* node)
     178{
     179    ASSERT_WITH_SECURITY_IMPLICATION(!node || isHTMLFormControlElement(node));
     180    return static_cast<HTMLFormControlElement*>(node);
     181}
     182
     183// This will catch anyone doing an unnecessary cast.
     184void toHTMLFormControlElement(const HTMLFormControlElement*);
     185
    172186} // namespace
    173187
  • trunk/Source/WebCore/html/HTMLTextFormControlElement.h

    r148921 r150711  
    7272    String selectedText() const;
    7373
    74     virtual void dispatchFormControlChangeEvent();
     74    virtual void dispatchFormControlChangeEvent() OVERRIDE FINAL;
    7575
    7676    virtual int maxLength() const = 0;
Note: See TracChangeset for help on using the changeset viewer.