bug 637898 try and fix HyperTextAccessible::GetPosAndText() to avoid asserts r=surkov

This commit is contained in:
Trevor Saunders 2013-03-12 09:43:19 -04:00
parent ad176442fe
commit 59c30ad653
2 changed files with 16 additions and 3 deletions

View File

@ -235,6 +235,7 @@ HyperTextAccessible::GetPosAndText(int32_t& aStartOffset, int32_t& aEndOffset,
}
nsIFrame *startFrame = nullptr;
nsIFrame* endFrame = nullptr;
if (aEndFrame) {
*aEndFrame = nullptr;
}
@ -264,6 +265,7 @@ HyperTextAccessible::GetPosAndText(int32_t& aStartOffset, int32_t& aEndOffset,
continue;
}
nsIFrame *primaryFrame = frame;
endFrame = frame;
if (nsAccUtils::IsText(childAcc)) {
// We only need info up to rendered offset -- that is what we're
// converting to content offset
@ -389,9 +391,9 @@ HyperTextAccessible::GetPosAndText(int32_t& aStartOffset, int32_t& aEndOffset,
NS_IF_ADDREF(*aStartAcc = lastAccessible);
}
if (aEndFrame && !*aEndFrame) {
*aEndFrame = startFrame;
if (aStartAcc && aEndAcc)
NS_IF_ADDREF(*aEndAcc = *aStartAcc);
*aEndFrame = endFrame;
if (aEndAcc && !*aEndAcc)
NS_IF_ADDREF(*aEndAcc = lastAccessible);
}
return startFrame;

View File

@ -74,6 +74,15 @@
testCharacterCount(IDs, 5);
testText(IDs, 0, 5, "1.foo");
testText(["testbr"], 0, 4, "foo\n");
testTextAtOffset(2, nsIAccessibleText.BOUNDARY_CHAR, "o", 2, 3, "testbr",
kOk, kOk, kOk);
testTextAtOffset(2, nsIAccessibleText.BOUNDARY_WORD_START, "foo\n", 0, 4,
"testbr", kTodo, kOk, kTodo);
testTextBeforeOffset(2, nsIAccessibleText.BOUNDARY_LINE_START, "foo\n",
0, 4, "testbr", kTodo, kOk, kTodo);
SimpleTest.finish();
}
@ -122,5 +131,7 @@
<h6 role="presentation" class="gencontent">heading</h6>
</div>
<div id="testbr">foo<br/></div>
</body>
</html>