[SCM] WebKit Debian packaging branch, debian/experimental, updated. upstream/1.3.3-9427-gc2be6fc

commit-queue at webkit.org commit-queue at webkit.org
Wed Dec 22 16:34:28 UTC 2010


The following commit has been merged in the debian/experimental branch:
commit 97bb5d348d70bdc135bf73b34b0dab90d5f9dec9
Author: commit-queue at webkit.org <commit-queue at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Nov 26 04:54:55 2010 +0000

    2010-11-25  Kenichi Ishibashi  <bashi at google.com>
    
            Reviewed by Kent Tamura.
    
            Assertion failure by resetting <output> twice
            https://bugs.webkit.org/show_bug.cgi?id=50095
    
            Adds a test that ensures assertion failures don't occur when
            updating the value of an output element.
    
            * fast/forms/output-reset-assertion-failed-expected.txt: Added.
            * fast/forms/output-reset-assertion-failed.html: Added.
            * fast/forms/script-tests/output-reset-assertion-failed.js: Added.
    2010-11-25  Kenichi Ishibashi  <bashi at google.com>
    
            Reviewed by Kent Tamura.
    
            Assertion failure by resetting <output> twice
            https://bugs.webkit.org/show_bug.cgi?id=50095
    
            Don't call setTextContentInternal() when the value wouldn't
            be changed.
    
            Test: fast/forms/output-reset-assertion-failed.html
    
            * html/HTMLOutputElement.cpp:
            (WebCore::HTMLOutputElement::HTMLOutputElement): Calls
            setTextContentInternal() if and only if needed.
            (WebCore::HTMLOutputElement::reset): Ditto.
            (WebCore::HTMLOutputElement::setValue): Ditto.
            (WebCore::HTMLOutputElement::setDefaultValue): Ditto.
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@72750 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 721b792..228e5bf 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,17 @@
+2010-11-25  Kenichi Ishibashi  <bashi at google.com>
+
+        Reviewed by Kent Tamura.
+
+        Assertion failure by resetting <output> twice
+        https://bugs.webkit.org/show_bug.cgi?id=50095
+
+        Adds a test that ensures assertion failures don't occur when
+        updating the value of an output element.
+
+        * fast/forms/output-reset-assertion-failed-expected.txt: Added.
+        * fast/forms/output-reset-assertion-failed.html: Added.
+        * fast/forms/script-tests/output-reset-assertion-failed.js: Added.
+
 2010-11-25  Yuzo Fujishima  <yuzo at google.com>
 
         Reviewed by Kent Tamura.
diff --git a/LayoutTests/fast/forms/output-reset-assertion-failed-expected.txt b/LayoutTests/fast/forms/output-reset-assertion-failed-expected.txt
new file mode 100644
index 0000000..e434d94
--- /dev/null
+++ b/LayoutTests/fast/forms/output-reset-assertion-failed-expected.txt
@@ -0,0 +1,20 @@
+Ensures that assertion failures don't occur on updating the value of <output> elements.
+
+On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".
+
+
+- A test in the value is set twice.
+PASS Not crashed
+
+- A test in the value is set to different values twice.
+PASS Not crashed
+
+- A test in reset events occur twice when there is no default value.
+PASS Not crashed
+
+- A test in reset events occur twice when the value is the same as the default value.
+PASS Not crashed
+PASS successfullyParsed is true
+
+TEST COMPLETE
+
diff --git a/LayoutTests/fast/forms/output-reset-assertion-failed.html b/LayoutTests/fast/forms/output-reset-assertion-failed.html
new file mode 100644
index 0000000..a172a43
--- /dev/null
+++ b/LayoutTests/fast/forms/output-reset-assertion-failed.html
@@ -0,0 +1,13 @@
+<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
+<html>
+<head>
+<link rel="stylesheet" href="../../fast/js/resources/js-test-style.css">
+<script src="../../fast/js/resources/js-test-pre.js"></script>
+</head>
+<body>
+<p id="description"></p>
+<div id="console"></div>
+<script src="script-tests/output-reset-assertion-failed.js"></script>
+<script src="../../fast/js/resources/js-test-post.js"></script>
+</body>
+</html>
diff --git a/LayoutTests/fast/forms/script-tests/output-reset-assertion-failed.js b/LayoutTests/fast/forms/script-tests/output-reset-assertion-failed.js
new file mode 100644
index 0000000..5017b02
--- /dev/null
+++ b/LayoutTests/fast/forms/script-tests/output-reset-assertion-failed.js
@@ -0,0 +1,44 @@
+description('Ensures that assertion failures don\'t occur on updating the value of &lt;output&gt; elements.');
+
+debug('- A test in the value is set twice.');
+var output = document.createElement('output');
+document.body.appendChild(output);
+output.value = '';
+output.value = '';
+testPassed('Not crashed');
+document.body.removeChild(output);
+
+debug('');
+debug('- A test in the value is set to different values twice.');
+output = document.createElement('output');
+document.body.appendChild(output);
+output.value = '';
+output.value = 'foo';
+testPassed('Not crashed');
+document.body.removeChild(output);
+
+debug('');
+debug('- A test in reset events occur twice when there is no default value.');
+var form = document.createElement('form');
+document.body.appendChild(form);
+output = document.createElement('output');
+form.appendChild(output);
+form.reset();
+form.reset();
+testPassed('Not crashed');
+document.body.removeChild(form);
+
+debug('');
+debug('- A test in reset events occur twice when the value is the same as the default value.');
+form = document.createElement('form');
+document.body.appendChild(form);
+output = document.createElement('output');
+output.defaultValue = 'foo';
+output.value = 'foo';
+form.appendChild(output);
+form.reset();
+form.reset();
+testPassed('Not crashed');
+document.body.removeChild(form);
+
+var successfullyParsed = true;
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index aaa5b8d..47c5e72 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,22 @@
+2010-11-25  Kenichi Ishibashi  <bashi at google.com>
+
+        Reviewed by Kent Tamura.
+
+        Assertion failure by resetting <output> twice
+        https://bugs.webkit.org/show_bug.cgi?id=50095
+
+        Don't call setTextContentInternal() when the value wouldn't
+        be changed.
+
+        Test: fast/forms/output-reset-assertion-failed.html
+
+        * html/HTMLOutputElement.cpp:
+        (WebCore::HTMLOutputElement::HTMLOutputElement): Calls
+        setTextContentInternal() if and only if needed.
+        (WebCore::HTMLOutputElement::reset): Ditto.
+        (WebCore::HTMLOutputElement::setValue): Ditto.
+        (WebCore::HTMLOutputElement::setDefaultValue): Ditto.
+
 2010-11-24  Ryosuke Niwa  <rniwa at webkit.org>
 
         Crash when moving caret around a word with a first-letter rule and whitespace is not collapsible.
diff --git a/WebCore/html/HTMLOutputElement.cpp b/WebCore/html/HTMLOutputElement.cpp
index b83263e..2f1d490 100644
--- a/WebCore/html/HTMLOutputElement.cpp
+++ b/WebCore/html/HTMLOutputElement.cpp
@@ -40,7 +40,7 @@ inline HTMLOutputElement::HTMLOutputElement(const QualifiedName& tagName, Docume
     : HTMLFormControlElement(tagName, document, form)
     , m_isDefaultValueMode(true)
     , m_isSetTextContentInProgress(false)
-    , m_defaultValue()
+    , m_defaultValue("")
     , m_tokens(DOMSettableTokenList::create())
 {
 }
@@ -91,6 +91,8 @@ void HTMLOutputElement::reset()
     // value mode flag to "default" and then to set the element's textContent
     // attribute to the default value.
     m_isDefaultValueMode = true;
+    if (m_defaultValue == value())
+        return;
     setTextContentInternal(m_defaultValue);
 }
 
@@ -103,6 +105,8 @@ void HTMLOutputElement::setValue(const String& value)
 {
     // The value mode flag set to "value" when the value attribute is set.
     m_isDefaultValueMode = false;
+    if (value == this->value())
+        return;
     setTextContentInternal(value);
 }
 
@@ -113,11 +117,13 @@ String HTMLOutputElement::defaultValue() const
 
 void HTMLOutputElement::setDefaultValue(const String& value)
 {
-     m_defaultValue = value;
-     // The spec requires the value attribute set to the default value
-     // when the element's value mode flag to "default".
-     if (m_isDefaultValueMode)
-         setTextContentInternal(value);
+    if (m_defaultValue == value)
+        return;
+    m_defaultValue = value;
+    // The spec requires the value attribute set to the default value
+    // when the element's value mode flag to "default".
+    if (m_isDefaultValueMode)
+        setTextContentInternal(value);
 }
 
 void HTMLOutputElement::setTextContentInternal(const String& value)

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list