[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 <output> 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