From f7c0070831e72735c43beb426ac0c2ce33403f4f Mon Sep 17 00:00:00 2001 From: Cameron McCormack Date: Mon, 6 Apr 2015 09:12:06 -0400 Subject: [PATCH] Bug 1149542 - Part 2: Track undisplayed characters before empty text frames properly. r=dholbert, a=sledru --- layout/svg/SVGTextFrame.cpp | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/layout/svg/SVGTextFrame.cpp b/layout/svg/SVGTextFrame.cpp index 45327881..9d331b8 100644 --- a/layout/svg/SVGTextFrame.cpp +++ b/layout/svg/SVGTextFrame.cpp @@ -290,22 +290,25 @@ GetNonEmptyTextFrameAndNode(nsIFrame* aFrame, nsTextNode*& aTextNode) { nsTextFrame* text = do_QueryFrame(aFrame); - if (!text) { - return false; - } + bool isNonEmptyTextFrame = text && text->GetContentLength() != 0; - nsIContent* content = text->GetContent(); - NS_ASSERTION(content && content->IsNodeOfType(nsINode::eTEXT), - "unexpected content type for nsTextFrame"); + if (isNonEmptyTextFrame) { + nsIContent* content = text->GetContent(); + NS_ASSERTION(content && content->IsNodeOfType(nsINode::eTEXT), + "unexpected content type for nsTextFrame"); - nsTextNode* node = static_cast(content); - if (node->TextLength() == 0) { - return false; + nsTextNode* node = static_cast(content); + MOZ_ASSERT(node->TextLength() != 0, + "frame's GetContentLength() should be 0 if the text node " + "has no content"); + + aTextFrame = text; + aTextNode = node; } - aTextFrame = text; - aTextNode = node; - return true; + MOZ_ASSERT(IsNonEmptyTextFrame(aFrame) == isNonEmptyTextFrame, + "our logic should agree with IsNonEmptyTextFrame"); + return isNonEmptyTextFrame; } /** @@ -1298,7 +1301,7 @@ GetUndisplayedCharactersBeforeFrame(nsTextFrame* aFrame) /** * Traverses the nsTextFrames for an SVGTextFrame and records a * TextNodeCorrespondenceProperty on each for the number of undisplayed DOM - * characters between each frame. This is done by iterating simultaenously + * characters between each frame. This is done by iterating simultaneously * over the nsTextNodes and nsTextFrames and noting when nsTextNodes (or * parts of them) are skipped when finding the next nsTextFrame. */ -- 2.2.1