зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1385272 - Make plaintext serializer not crash when a <tr> is a child of a <tr>. r=Ehsan
MozReview-Commit-ID: CMNIWYX8R07 --HG-- extra : rebase_source : 0b245f01c4c7aa4b78853534584876a23689826c
This commit is contained in:
Родитель
14cf46a41a
Коммит
057b37715a
|
@ -0,0 +1,29 @@
|
|||
<html>
|
||||
<head>
|
||||
<script>
|
||||
try { o1 = document.createElement("tr") } catch(e) { }
|
||||
try { o2 = document.createElement("td") } catch(e) { }
|
||||
try { o3 = document.createElement("tr") } catch(e) { }
|
||||
try { o4 = document.createElement("div") } catch(e) { }
|
||||
try { o5 = document.createElement("input") } catch(e) { }
|
||||
try { o6 = document.createElement('map') } catch(e) { }
|
||||
try { o7 = document.createElement('select') } catch(e) { }
|
||||
try { o8 = document.createElement("canvas") } catch(e) { }
|
||||
try { o9 = document.createElement("area") } catch(e) { };
|
||||
try { o1.appendChild(o2) } catch(e) { }
|
||||
try { document.documentElement.appendChild(o3) } catch(e) { }
|
||||
try { document.documentElement.appendChild(o4) } catch(e) { }
|
||||
try { document.documentElement.appendChild(o6) } catch(e) { }
|
||||
try { o3.appendChild(o7) } catch(e) { }
|
||||
try { o4.appendChild(o8) } catch(e) { }
|
||||
try { o3.appendChild(o5); } catch(e) { }
|
||||
try { o3.appendChild(o1); } catch(e) { }
|
||||
try { o6.contentEditable = "true" } catch(e) { };
|
||||
try { o6.offsetHeight } catch(e) { };
|
||||
try { o4.appendChild(o9) } catch(e) { };
|
||||
try { o2.insertAdjacentHTML("beforeBegin", "<button id='id0'></button>\n"); } catch(e) { }
|
||||
try { document.replaceChild(document.documentElement, document.documentElement); } catch(e) { }
|
||||
try { document.execCommand("selectall",false,null) } catch(e) { }
|
||||
</script>
|
||||
</head>
|
||||
</html>
|
|
@ -221,3 +221,4 @@ load xhr_empty_datauri.html
|
|||
load xhr_html_nullresponse.html
|
||||
load 1383478.html
|
||||
load 1383780.html
|
||||
pref(clipboard.autocopy,true) load 1385272-1.html
|
||||
|
|
|
@ -1018,6 +1018,14 @@ nsDocumentEncoder::EncodeToString(nsAString& aOutputString)
|
|||
return EncodeToStringWithMaxLength(0, aOutputString);
|
||||
}
|
||||
|
||||
static bool ParentIsTR(nsIContent* aContent) {
|
||||
mozilla::dom::Element* parent = aContent->GetParentElement();
|
||||
if (!parent) {
|
||||
return false;
|
||||
}
|
||||
return parent->IsHTMLElement(nsGkAtoms::tr);
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsDocumentEncoder::EncodeToStringWithMaxLength(uint32_t aMaxLength,
|
||||
nsAString& aOutputString)
|
||||
|
@ -1088,7 +1096,7 @@ nsDocumentEncoder::EncodeToStringWithMaxLength(uint32_t aMaxLength,
|
|||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
nsCOMPtr<nsIContent> content = do_QueryInterface(node);
|
||||
if (content && content->IsHTMLElement(nsGkAtoms::tr)) {
|
||||
if (content && content->IsHTMLElement(nsGkAtoms::tr) && !ParentIsTR(content)) {
|
||||
nsINode* n = content;
|
||||
if (!prevNode) {
|
||||
// Went from a non-<tr> to a <tr>
|
||||
|
|
Загрузка…
Ссылка в новой задаче