Bug 1347979 - Don't call methods that may flush in nsRange::GetInnerTextNoFlush. r=smaug

MozReview-Commit-ID: AsnRqTH4FkM
This commit is contained in:
Mats Palmgren 2017-03-18 18:44:27 +01:00
parent 95ca34da95
commit 211a6840d0

View File

@ -3461,13 +3461,14 @@ IsVisibleAndNotInReplacedElement(nsIFrame* aFrame)
}
static bool
ElementIsVisible(Element* aElement)
ElementIsVisibleNoFlush(Element* aElement)
{
if (!aElement) {
return false;
}
RefPtr<nsStyleContext> sc = nsComputedDOMStyle::GetStyleContextForElement(
aElement, nullptr, nullptr);
RefPtr<nsStyleContext> sc =
nsComputedDOMStyle::GetStyleContextForElementNoFlush(aElement, nullptr,
nullptr);
return sc && sc->StyleVisibility()->IsVisible();
}
@ -3595,7 +3596,7 @@ nsRange::GetInnerTextNoFlush(DOMString& aValue, ErrorResult& aError,
if (currentState == AT_NODE) {
bool isText = currentNode->IsNodeOfType(nsINode::eTEXT);
if (isText && currentNode->GetParent()->IsHTMLElement(nsGkAtoms::rp) &&
ElementIsVisible(currentNode->GetParent()->AsElement())) {
ElementIsVisibleNoFlush(currentNode->GetParent()->AsElement())) {
nsAutoString str;
currentNode->GetTextContent(str, aError);
result.Append(str);