@@ -941,24 +941,22 @@ nsresult ContentEventHandler::GenerateFlatFontRanges(
941941 return NS_OK;
942942}
943943
944- nsresult ContentEventHandler::ExpandToClusterBoundary (nsIContent* aContent,
945- bool aForward,
946- uint32_t * aXPOffset) {
944+ nsresult ContentEventHandler::ExpandToClusterBoundary (
945+ Text& aTextNode, bool aForward, uint32_t * aXPOffset) const {
947946 // XXX This method assumes that the frame boundaries must be cluster
948947 // boundaries. It's false, but no problem now, maybe.
949- if (!aContent->IsText () || *aXPOffset == 0 ||
950- *aXPOffset == aContent->TextLength ()) {
948+ if (*aXPOffset == 0 || *aXPOffset == aTextNode.TextLength ()) {
951949 return NS_OK;
952950 }
953951
954- NS_ASSERTION (*aXPOffset <= aContent-> TextLength (), "offset is out of range.");
952+ NS_ASSERTION (*aXPOffset <= aTextNode. TextLength(), "offset is out of range.");
955953
956954 MOZ_DIAGNOSTIC_ASSERT (mDocument ->GetPresShell ());
957955 int32_t offsetInFrame;
958956 CaretAssociationHint hint =
959957 aForward ? CARET_ASSOCIATE_BEFORE : CARET_ASSOCIATE_AFTER;
960958 nsIFrame* frame = nsFrameSelection::GetFrameForNodeOffset (
961- aContent , int32_t (*aXPOffset), hint, &offsetInFrame);
959+ &aTextNode , int32_t (*aXPOffset), hint, &offsetInFrame);
962960 if (frame) {
963961 auto [startOffset, endOffset] = frame->GetOffsets ();
964962 if (*aXPOffset == static_cast <uint32_t >(startOffset) ||
@@ -986,9 +984,8 @@ nsresult ContentEventHandler::ExpandToClusterBoundary(nsIContent* aContent,
986984 }
987985
988986 // If the frame isn't available, we only can check surrogate pair...
989- const nsTextFragment* text = &aContent->AsText ()->TextFragment ();
990- NS_ENSURE_TRUE (text, NS_ERROR_FAILURE);
991- if (text->IsLowSurrogateFollowingHighSurrogateAt (*aXPOffset)) {
987+ if (aTextNode.TextFragment ().IsLowSurrogateFollowingHighSurrogateAt (
988+ *aXPOffset)) {
992989 *aXPOffset += aForward ? 1 : -1 ;
993990 }
994991 return NS_OK;
@@ -1061,7 +1058,7 @@ nsresult ContentEventHandler::SetRawRangeFromFlatTextOffset(
10611058
10621059 if (aExpandToClusterBoundaries) {
10631060 uint32_t oldXPOffset = xpOffset;
1064- nsresult rv = ExpandToClusterBoundary (textNode, false , &xpOffset);
1061+ nsresult rv = ExpandToClusterBoundary (* textNode, false , &xpOffset);
10651062 if (NS_WARN_IF(NS_FAILED(rv))) {
10661063 return rv;
10671064 }
@@ -1142,7 +1139,7 @@ nsresult ContentEventHandler::SetRawRangeFromFlatTextOffset(
11421139 }
11431140 }
11441141 if (aExpandToClusterBoundaries) {
1145- nsresult rv = ExpandToClusterBoundary (textNode, true , &xpOffset);
1142+ nsresult rv = ExpandToClusterBoundary (* textNode, true , &xpOffset);
11461143 if (NS_WARN_IF(NS_FAILED(rv))) {
11471144 return rv;
11481145 }
0 commit comments