⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 94068 in webkit


Ignore:
Timestamp:
Aug 30, 2011, 4:23:24 AM (15 years ago)
Author:
rniwa@webkit.org
Message:

lastChangeWasUserEdit continues to return true when innerText or textContent is modified
https://bugs.webkit.org/show_bug.cgi?id=67183

Reviewed by Kent Tamura.

Source/WebCore:

Fixed the bug by calling setLastChangeWasNotUserEdit in HTMLTextAreaElement::childrenChanged.

Also got rid of HTMLTextFormControlElement::subtreeHasChanged because it was a needless indirection.

  • html/HTMLInputElement.cpp:

(WebCore::HTMLInputElement::subtreeHasChanged): No longer calls HTMLTextFormControlElement::subtreeHasChanged.

  • html/HTMLTextAreaElement.cpp:

(WebCore::HTMLTextAreaElement::childrenChanged): Calls setLastChangeWasNotUserEdit.
(WebCore::HTMLTextAreaElement::subtreeHasChanged): No longer calls HTMLTextFormControlElement::subtreeHasChanged.

  • html/HTMLTextFormControlElement.cpp:

(WebCore::HTMLTextFormControlElement::defaultEventHandler): Merged subtreeHasChanged.
(WebCore::HTMLTextFormControlElement::setInnerTextValue): No longer set m_lastChangeWasUserEdit to false
since this is now done when renderers are set dirty.

  • html/HTMLTextFormControlElement.h: Made subtreeHasChanged a pure virtual function.

LayoutTests:

Two test cases now pass.

  • fast/forms/textfield-lastchange-was-useredit-expected.txt:
Location:
trunk
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r94067 r94068  
     12011-08-30  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        lastChangeWasUserEdit continues to return true when innerText or textContent is modified
     4        https://bugs.webkit.org/show_bug.cgi?id=67183
     5
     6        Reviewed by Kent Tamura.
     7
     8        Two test cases now pass.
     9
     10        * fast/forms/textfield-lastchange-was-useredit-expected.txt:
     11
    1122011-08-29  Yury Semikhatsky  <yurys@chromium.org>
    213
  • trunk/LayoutTests/fast/forms/textfield-lastchange-was-useredit-expected.txt

    r94038 r94068  
    2020PASS document.execCommand("SelectAll", false, null); internals.wasLastChangeUserEdit(textField) is false
    2121PASS document.execCommand("Delete", false, null); internals.wasLastChangeUserEdit(textField) is true
    22 FAIL textField.textContent = "hello\nworld"; internals.wasLastChangeUserEdit(textField) should be false. Was true.
     22PASS textField.textContent = "hello\nworld"; internals.wasLastChangeUserEdit(textField) is false
    2323PASS document.execCommand("InsertText", false, "\nWebKit rocks"); internals.wasLastChangeUserEdit(textField) is true
    24 FAIL textField.innerText = " WebKit "; internals.wasLastChangeUserEdit(textField) should be false. Was true.
     24PASS textField.innerText = " WebKit "; internals.wasLastChangeUserEdit(textField) is false
    2525PASS successfullyParsed is true
    2626
  • trunk/Source/WebCore/ChangeLog

    r94067 r94068  
     12011-08-30  Ryosuke Niwa  <rniwa@webkit.org>
     2
     3        lastChangeWasUserEdit continues to return true when innerText or textContent is modified
     4        https://bugs.webkit.org/show_bug.cgi?id=67183
     5
     6        Reviewed by Kent Tamura.
     7
     8        Fixed the bug by calling setLastChangeWasNotUserEdit in HTMLTextAreaElement::childrenChanged.
     9
     10        Also got rid of HTMLTextFormControlElement::subtreeHasChanged because it was a needless indirection.
     11
     12        * html/HTMLInputElement.cpp:
     13        (WebCore::HTMLInputElement::subtreeHasChanged): No longer calls HTMLTextFormControlElement::subtreeHasChanged.
     14        * html/HTMLTextAreaElement.cpp:
     15        (WebCore::HTMLTextAreaElement::childrenChanged): Calls setLastChangeWasNotUserEdit.
     16        (WebCore::HTMLTextAreaElement::subtreeHasChanged): No longer calls HTMLTextFormControlElement::subtreeHasChanged.
     17        * html/HTMLTextFormControlElement.cpp:
     18        (WebCore::HTMLTextFormControlElement::defaultEventHandler): Merged subtreeHasChanged.
     19        (WebCore::HTMLTextFormControlElement::setInnerTextValue): No longer set m_lastChangeWasUserEdit to false
     20        since this is now done when renderers are set dirty.
     21        * html/HTMLTextFormControlElement.h: Made subtreeHasChanged a pure virtual function.
     22
    1232011-08-29  Yury Semikhatsky  <yurys@chromium.org>
    224
  • trunk/Source/WebCore/html/HTMLInputElement.cpp

    r94047 r94068  
    616616    ASSERT(renderer());
    617617    RenderTextControlSingleLine* renderTextControl = toRenderTextControlSingleLine(renderer());
    618 
    619     HTMLTextFormControlElement::subtreeHasChanged();
    620618
    621619    bool wasChanged = wasChangedSinceLastFormControlChangeEvent();
  • trunk/Source/WebCore/html/HTMLTextAreaElement.cpp

    r94047 r94068  
    9999void HTMLTextAreaElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
    100100{
     101    setLastChangeWasNotUserEdit();
    101102    if (!m_isDirty)
    102103        setNonDirtyValue(defaultValue());
     
    231232void HTMLTextAreaElement::subtreeHasChanged()
    232233{
    233     HTMLTextFormControlElement::subtreeHasChanged();
    234 
    235234    setChangedSinceLastFormControlChangeEvent(true);
    236235    setFormControlValueMatchesRenderer(false);
  • trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp

    r94047 r94068  
    9090{
    9191    if (event->type() == eventNames().webkitEditableContentChangedEvent && renderer() && renderer()->isTextControl()) {
     92        m_lastChangeWasUserEdit = true;
    9293        subtreeHasChanged();
    9394        return;
     
    102103        return;
    103104    innerTextElement()->defaultEventHandler(event);
    104 }
    105 
    106 void HTMLTextFormControlElement::subtreeHasChanged()
    107 {
    108     m_lastChangeWasUserEdit = true;
    109105}
    110106
     
    476472            ASSERT(!ec);
    477473        }
    478 
    479         // We set m_lastChangeWasUserEdit to false since this change was not explicitly made by the user (say, via typing on the keyboard), see <rdar://problem/5359921>.
    480         m_lastChangeWasUserEdit = false;
    481474    }
    482475
  • trunk/Source/WebCore/html/HTMLTextFormControlElement.h

    r94047 r94068  
    9898
    9999    virtual void defaultEventHandler(Event*);
    100     virtual void subtreeHasChanged();
     100    virtual void subtreeHasChanged() = 0;
    101101
    102102    void setLastChangeWasNotUserEdit() { m_lastChangeWasUserEdit = false; }
Note: See TracChangeset for help on using the changeset viewer.