Bug 950076 - Propagate OOM errors to innerHTML getters. r=jst

This commit is contained in:
Alessio Placitelli 2014-03-19 13:05:03 -04:00
parent c85cb08e9b
commit 6d5ed59b33
5 changed files with 14 additions and 7 deletions

View File

@ -1240,9 +1240,10 @@ public:
* @param aDeep If true child elements of aNode are recursivly descended
* into to find text children.
* @param aResult the result. Out param.
* @return false on out of memory errors, true otherwise.
*/
static void GetNodeTextContent(nsINode* aNode, bool aDeep,
nsAString& aResult);
static bool GetNodeTextContent(nsINode* aNode, bool aDeep,
nsAString& aResult) NS_WARN_UNUSED_RESULT;
/**
* Same as GetNodeTextContents but appends the result rather than sets it.

View File

@ -6587,11 +6587,11 @@ nsContentUtils::DOMWindowDumpEnabled()
#endif
}
void
bool
nsContentUtils::GetNodeTextContent(nsINode* aNode, bool aDeep, nsAString& aResult)
{
aResult.Truncate();
AppendNodeTextContent(aNode, aDeep, aResult, mozilla::fallible_t());
return AppendNodeTextContent(aNode, aDeep, aResult, mozilla::fallible_t());
}
void

View File

@ -49,7 +49,9 @@ HTMLElement::GetInnerHTML(nsAString& aInnerHTML)
*/
if (mNodeInfo->Equals(nsGkAtoms::xmp) ||
mNodeInfo->Equals(nsGkAtoms::plaintext)) {
nsContentUtils::GetNodeTextContent(this, false, aInnerHTML);
if (!nsContentUtils::GetNodeTextContent(this, false, aInnerHTML)) {
return NS_ERROR_OUT_OF_MEMORY;
}
return NS_OK;
}

View File

@ -227,7 +227,9 @@ HTMLScriptElement::AfterSetAttr(int32_t aNamespaceID, nsIAtom* aName,
NS_IMETHODIMP
HTMLScriptElement::GetInnerHTML(nsAString& aInnerHTML)
{
nsContentUtils::GetNodeTextContent(this, false, aInnerHTML);
if (!nsContentUtils::GetNodeTextContent(this, false, aInnerHTML)) {
return NS_ERROR_OUT_OF_MEMORY;
}
return NS_OK;
}

View File

@ -204,7 +204,9 @@ HTMLStyleElement::UnsetAttr(int32_t aNameSpaceID, nsIAtom* aAttribute,
NS_IMETHODIMP
HTMLStyleElement::GetInnerHTML(nsAString& aInnerHTML)
{
nsContentUtils::GetNodeTextContent(this, false, aInnerHTML);
if (!nsContentUtils::GetNodeTextContent(this, false, aInnerHTML)) {
return NS_ERROR_OUT_OF_MEMORY;
}
return NS_OK;
}