Title: [94068] trunk
Revision
94068
Author
[email protected]
Date
2011-08-30 04:23:24 -0700 (Tue, 30 Aug 2011)

Log 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:

Modified Paths

Diff

Modified: trunk/LayoutTests/ChangeLog (94067 => 94068)


--- trunk/LayoutTests/ChangeLog	2011-08-30 10:57:11 UTC (rev 94067)
+++ trunk/LayoutTests/ChangeLog	2011-08-30 11:23:24 UTC (rev 94068)
@@ -1,3 +1,14 @@
+2011-08-30  Ryosuke Niwa  <[email protected]>
+
+        lastChangeWasUserEdit continues to return true when innerText or textContent is modified
+        https://bugs.webkit.org/show_bug.cgi?id=67183
+
+        Reviewed by Kent Tamura.
+
+        Two test cases now pass.
+
+        * fast/forms/textfield-lastchange-was-useredit-expected.txt:
+
 2011-08-29  Yury Semikhatsky  <[email protected]>
 
         Web Inspector: wrong script display name when there is a slash in its URL query parameters

Modified: trunk/LayoutTests/fast/forms/textfield-lastchange-was-useredit-expected.txt (94067 => 94068)


--- trunk/LayoutTests/fast/forms/textfield-lastchange-was-useredit-expected.txt	2011-08-30 10:57:11 UTC (rev 94067)
+++ trunk/LayoutTests/fast/forms/textfield-lastchange-was-useredit-expected.txt	2011-08-30 11:23:24 UTC (rev 94068)
@@ -19,9 +19,9 @@
 PASS textField.style.display = null; internals.wasLastChangeUserEdit(textField) is false
 PASS document.execCommand("SelectAll", false, null); internals.wasLastChangeUserEdit(textField) is false
 PASS document.execCommand("Delete", false, null); internals.wasLastChangeUserEdit(textField) is true
-FAIL textField.textContent = "hello\nworld"; internals.wasLastChangeUserEdit(textField) should be false. Was true.
+PASS textField.textContent = "hello\nworld"; internals.wasLastChangeUserEdit(textField) is false
 PASS document.execCommand("InsertText", false, "\nWebKit rocks"); internals.wasLastChangeUserEdit(textField) is true
-FAIL textField.innerText = " WebKit "; internals.wasLastChangeUserEdit(textField) should be false. Was true.
+PASS textField.innerText = " WebKit "; internals.wasLastChangeUserEdit(textField) is false
 PASS successfullyParsed is true
 
 TEST COMPLETE

Modified: trunk/Source/WebCore/ChangeLog (94067 => 94068)


--- trunk/Source/WebCore/ChangeLog	2011-08-30 10:57:11 UTC (rev 94067)
+++ trunk/Source/WebCore/ChangeLog	2011-08-30 11:23:24 UTC (rev 94068)
@@ -1,3 +1,25 @@
+2011-08-30  Ryosuke Niwa  <[email protected]>
+
+        lastChangeWasUserEdit continues to return true when innerText or textContent is modified
+        https://bugs.webkit.org/show_bug.cgi?id=67183
+
+        Reviewed by Kent Tamura.
+
+        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.
+
 2011-08-29  Yury Semikhatsky  <[email protected]>
 
         Web Inspector: wrong script display name when there is a slash in its URL query parameters

Modified: trunk/Source/WebCore/html/HTMLInputElement.cpp (94067 => 94068)


--- trunk/Source/WebCore/html/HTMLInputElement.cpp	2011-08-30 10:57:11 UTC (rev 94067)
+++ trunk/Source/WebCore/html/HTMLInputElement.cpp	2011-08-30 11:23:24 UTC (rev 94068)
@@ -616,8 +616,6 @@
     ASSERT(renderer());
     RenderTextControlSingleLine* renderTextControl = toRenderTextControlSingleLine(renderer());
 
-    HTMLTextFormControlElement::subtreeHasChanged();
-
     bool wasChanged = wasChangedSinceLastFormControlChangeEvent();
     setChangedSinceLastFormControlChangeEvent(true);
 

Modified: trunk/Source/WebCore/html/HTMLTextAreaElement.cpp (94067 => 94068)


--- trunk/Source/WebCore/html/HTMLTextAreaElement.cpp	2011-08-30 10:57:11 UTC (rev 94067)
+++ trunk/Source/WebCore/html/HTMLTextAreaElement.cpp	2011-08-30 11:23:24 UTC (rev 94068)
@@ -98,6 +98,7 @@
 
 void HTMLTextAreaElement::childrenChanged(bool changedByParser, Node* beforeChange, Node* afterChange, int childCountDelta)
 {
+    setLastChangeWasNotUserEdit();
     if (!m_isDirty)
         setNonDirtyValue(defaultValue());
     HTMLElement::childrenChanged(changedByParser, beforeChange, afterChange, childCountDelta);
@@ -230,8 +231,6 @@
 
 void HTMLTextAreaElement::subtreeHasChanged()
 {
-    HTMLTextFormControlElement::subtreeHasChanged();
-
     setChangedSinceLastFormControlChangeEvent(true);
     setFormControlValueMatchesRenderer(false);
     setNeedsValidityCheck();

Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp (94067 => 94068)


--- trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp	2011-08-30 10:57:11 UTC (rev 94067)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.cpp	2011-08-30 11:23:24 UTC (rev 94068)
@@ -89,6 +89,7 @@
 void HTMLTextFormControlElement::defaultEventHandler(Event* event)
 {
     if (event->type() == eventNames().webkitEditableContentChangedEvent && renderer() && renderer()->isTextControl()) {
+        m_lastChangeWasUserEdit = true;
         subtreeHasChanged();
         return;
     }
@@ -103,11 +104,6 @@
     innerTextElement()->defaultEventHandler(event);
 }
 
-void HTMLTextFormControlElement::subtreeHasChanged()
-{
-    m_lastChangeWasUserEdit = true;
-}
-
 String HTMLTextFormControlElement::strippedPlaceholder() const
 {
     // According to the HTML5 specification, we need to remove CR and LF from
@@ -475,9 +471,6 @@
             innerTextElement()->appendChild(HTMLBRElement::create(document()), ec);
             ASSERT(!ec);
         }
-
-        // 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>.
-        m_lastChangeWasUserEdit = false;
     }
 
     setFormControlValueMatchesRenderer(true);

Modified: trunk/Source/WebCore/html/HTMLTextFormControlElement.h (94067 => 94068)


--- trunk/Source/WebCore/html/HTMLTextFormControlElement.h	2011-08-30 10:57:11 UTC (rev 94067)
+++ trunk/Source/WebCore/html/HTMLTextFormControlElement.h	2011-08-30 11:23:24 UTC (rev 94068)
@@ -97,7 +97,7 @@
     bool hasCachedSelection() const { return m_cachedSelectionStart >= 0; }
 
     virtual void defaultEventHandler(Event*);
-    virtual void subtreeHasChanged();
+    virtual void subtreeHasChanged() = 0;
 
     void setLastChangeWasNotUserEdit() { m_lastChangeWasUserEdit = false; }
 private:
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to