Bug 401662 - plaintext serializer includes content of <style> elements, r+sr=mrbkap, a=dsicore

This commit is contained in:
philringnalda%gmail.com 2007-11-13 03:15:44 +00:00
Родитель b8cc869a45
Коммит f195d66ca9
3 изменённых файлов: 55 добавлений и 2 удалений

Просмотреть файл

@ -1070,8 +1070,10 @@ nsPlainTextSerializer::DoAddLeaf(const nsIParserNode *aNode, PRInt32 aTag,
// Read more in bug 31994.
return NS_OK;
}
else if (mTagStackIndex > 0 && mTagStack[mTagStackIndex-1] == eHTMLTag_script) {
// Don't output the contents of <script> tags;
else if (mTagStackIndex > 0 &&
(mTagStack[mTagStackIndex-1] == eHTMLTag_script ||
mTagStack[mTagStackIndex-1] == eHTMLTag_style)) {
// Don't output the contents of <script> or <style> tags;
return NS_OK;
}
else if (type == eHTMLTag_text) {

Просмотреть файл

@ -111,6 +111,7 @@ _TEST_FILES = test_bug5141.html \
file_bug326337_multipart.txt^headers^ \
test_bug402150.html \
test_bug402150.html^headers^ \
test_bug401662.html \
$(NULL)
libs:: $(_TEST_FILES)

Просмотреть файл

@ -0,0 +1,50 @@
<!DOCTYPE HTML>
<html>
<!--
https://bugzilla.mozilla.org/show_bug.cgi?id=401662
-->
<head>
<title>Test for Bug 401662</title>
<script type="text/javascript" src="/MochiKit/MochiKit.js"></script>
<script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" />
</head>
<body>
<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=401662">Mozilla Bug 401662</a>
<p id="display"></p>
<div id="content" style="display: none">
<iframe id="testframe"
src="data:text/html,<html><body>foo<style>bar</style></body></html>">
</iframe>
</div>
<pre id="test">
<script class="testbody" type="text/javascript">
/** Test for Bug 401662 - don't serialize style elements in body into
plaintext**/
SimpleTest.waitForExplicitFinish();
window.onload = function() {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
const Cc = Components.classes;
const Ci = Components.interfaces;
var encoder = Cc["@mozilla.org/layout/documentEncoder;1?type=text/html"]
.createInstance(Ci.nsIDocumentEncoder);
var doc = $("testframe").contentDocument;
encoder.init(doc, "text/plain", encoder.OutputBodyOnly);
encoder.setCharset("UTF-8");
var out = encoder.encodeToString();
is(out, "foo", "style content serialized in plaintext?");
SimpleTest.finish();
}
</script>
</pre>
</body>
</html>