mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 801486 - Skip script elements in HTMLOptionElement.prototype.text; r=bz
This commit is contained in:
parent
aa605cc8fc
commit
b44db1c477
@ -260,7 +260,19 @@ NS_IMETHODIMP
|
|||||||
nsHTMLOptionElement::GetText(nsAString& aText)
|
nsHTMLOptionElement::GetText(nsAString& aText)
|
||||||
{
|
{
|
||||||
nsAutoString text;
|
nsAutoString text;
|
||||||
nsContentUtils::GetNodeTextContent(this, true, text);
|
|
||||||
|
nsIContent* child = nsINode::GetFirstChild();
|
||||||
|
while (child) {
|
||||||
|
if (child->NodeType() == nsIDOMNode::TEXT_NODE ||
|
||||||
|
child->NodeType() == nsIDOMNode::CDATA_SECTION_NODE) {
|
||||||
|
child->AppendTextTo(text);
|
||||||
|
}
|
||||||
|
if (child->IsHTML(nsGkAtoms::script) || child->IsSVG(nsGkAtoms::script)) {
|
||||||
|
child = child->GetNextNonChildNode(this);
|
||||||
|
} else {
|
||||||
|
child = child->GetNextNode(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// XXX No CompressWhitespace for nsAString. Sad.
|
// XXX No CompressWhitespace for nsAString. Sad.
|
||||||
text.CompressWhitespace(true, true);
|
text.CompressWhitespace(true, true);
|
||||||
|
@ -12,5 +12,46 @@ test(function() {
|
|||||||
option.appendChild(document.createElement("font"))
|
option.appendChild(document.createElement("font"))
|
||||||
.appendChild(document.createTextNode(" font "));
|
.appendChild(document.createTextNode(" font "));
|
||||||
assert_equals(option.text, "font");
|
assert_equals(option.text, "font");
|
||||||
});
|
}, "option.text should recurse");
|
||||||
|
test(function() {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.appendChild(document.createTextNode(" before "));
|
||||||
|
option.appendChild(document.createElement("script"))
|
||||||
|
.appendChild(document.createTextNode(" script "));
|
||||||
|
option.appendChild(document.createTextNode(" after "));
|
||||||
|
assert_equals(option.text, "before after");
|
||||||
|
}, "option.text should not recurse into HTML script elements");
|
||||||
|
test(function() {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.appendChild(document.createTextNode(" before "));
|
||||||
|
option.appendChild(document.createElementNS("http://www.w3.org/2000/svg", "script"))
|
||||||
|
.appendChild(document.createTextNode(" script "));
|
||||||
|
option.appendChild(document.createTextNode(" after "));
|
||||||
|
assert_equals(option.text, "before after");
|
||||||
|
}, "option.text should not recurse into SVG script elements");
|
||||||
|
test(function() {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.appendChild(document.createTextNode(" before "));
|
||||||
|
option.appendChild(document.createElementNS("http://www.w3.org/1998/Math/MathML", "script"))
|
||||||
|
.appendChild(document.createTextNode(" script "));
|
||||||
|
option.appendChild(document.createTextNode(" after "));
|
||||||
|
assert_equals(option.text, "before script after");
|
||||||
|
}, "option.text should recurse into MathML script elements");
|
||||||
|
test(function() {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
option.appendChild(document.createTextNode(" before "));
|
||||||
|
option.appendChild(document.createElementNS(null, "script"))
|
||||||
|
.appendChild(document.createTextNode(" script "));
|
||||||
|
option.appendChild(document.createTextNode(" after "));
|
||||||
|
assert_equals(option.text, "before script after");
|
||||||
|
}, "option.text should recurse into null script elements");
|
||||||
|
test(function() {
|
||||||
|
var option = document.createElement("option");
|
||||||
|
var span = option.appendChild(document.createElement("span"));
|
||||||
|
span.appendChild(document.createTextNode(" Some "));
|
||||||
|
span.appendChild(document.createElement("script"))
|
||||||
|
.appendChild(document.createTextNode(" script "));
|
||||||
|
option.appendChild(document.createTextNode(" Text "));
|
||||||
|
assert_equals(option.text, "Some Text");
|
||||||
|
}, "option.text should work if a child of the option ends with a script");
|
||||||
</script>
|
</script>
|
||||||
|
Loading…
Reference in New Issue
Block a user