Commit f83a74fe authored by Xiaocheng Hu's avatar Xiaocheng Hu Committed by Commit Bot

Reland "Stop ExpandRange/EndToSentenceBoundary from using VisiblePosition"

This reverts commit d8854b56.

Reason for revert: The original use-after-free is caused by storing part
of a temporary object into a reference:

const Position& sentence_end =
      EndOfSentence(range.EndPosition()).GetPosition();

This is fixed after changing the reference into a real instance.

Original change's description:
> Revert "Stop ExpandRange/EndToSentenceBoundary from using VisiblePosition"
>
> This reverts commit 390c941f.
>
> Reason for revert: causing layout test failure crbug.com/906174
>
> Original change's description:
> > Stop ExpandRange/EndToSentenceBoundary from using VisiblePosition
> >
> > This patch stops the two functions from using VisiblePosition by switch
> > to the VP-free versions of Start/EndOfSentence(). Hence, this patch
> > reduces the usage of legacy VisiblePosition.
> >
> > Bug: 657237
> > Change-Id: I933a020f9bd6643ba1b2cd5111b8be18b2f49086
> > Reviewed-on: https://chromium-review.googlesource.com/c/1337816
> > Reviewed-by: Yoichi Osato <yoichio@chromium.org>
> > Reviewed-by: Yoshifumi Inoue <yosin@chromium.org>
> > Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
> > Cr-Commit-Position: refs/heads/master@{#608849}
>
> TBR=yosin@chromium.org,yoichio@chromium.org,xiaochengh@chromium.org
>
> Bug: 657237, 906174
> Change-Id: I915e9d68f16a11344b0160db4c5702113380273a
> Reviewed-on: https://chromium-review.googlesource.com/c/1340899
> Commit-Queue: Ella Ge <eirage@chromium.org>
> Reviewed-by: Ella Ge <eirage@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#608963}

TBR=yosin@chromium.org,yoichio@chromium.org,xiaochengh@chromium.org,eirage@chromium.org

Change-Id: Ib4832ab51086777c926f4188936f31391a87f019
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 657237, 906174
Reviewed-on: https://chromium-review.googlesource.com/c/1340833
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Reviewed-by: default avatarXiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#609023}
parent 99a25516
......@@ -138,6 +138,9 @@ CORE_EXPORT PositionWithAffinity PreviousWordPosition(const Position&);
CORE_EXPORT PositionWithAffinity NextWordPosition(const Position&);
// sentences
CORE_EXPORT Position StartOfSentencePosition(const Position&);
CORE_EXPORT PositionInFlatTree
StartOfSentencePosition(const PositionInFlatTree&);
CORE_EXPORT VisiblePosition StartOfSentence(const VisiblePosition&);
CORE_EXPORT VisiblePositionInFlatTree
StartOfSentence(const VisiblePositionInFlatTree&);
......
......@@ -196,10 +196,8 @@ VisiblePositionInFlatTree EndOfSentence(const VisiblePositionInFlatTree& c) {
EphemeralRange ExpandEndToSentenceBoundary(const EphemeralRange& range) {
DCHECK(range.IsNotNull());
const VisiblePosition& visible_end =
CreateVisiblePosition(range.EndPosition());
DCHECK(visible_end.IsNotNull());
const Position& sentence_end = EndOfSentence(visible_end).DeepEquivalent();
const Position sentence_end =
EndOfSentence(range.EndPosition()).GetPosition();
// TODO(editing-dev): |sentenceEnd < range.endPosition()| is possible,
// which would trigger a DCHECK in EphemeralRange's constructor if we return
// it directly. However, this shouldn't happen and needs to be fixed.
......@@ -212,11 +210,8 @@ EphemeralRange ExpandEndToSentenceBoundary(const EphemeralRange& range) {
EphemeralRange ExpandRangeToSentenceBoundary(const EphemeralRange& range) {
DCHECK(range.IsNotNull());
const VisiblePosition& visible_start =
CreateVisiblePosition(range.StartPosition());
DCHECK(visible_start.IsNotNull());
const Position& sentence_start =
StartOfSentence(visible_start).DeepEquivalent();
const Position sentence_start =
StartOfSentencePosition(range.StartPosition());
// TODO(editing-dev): |sentenceStart > range.startPosition()| is possible,
// which would trigger a DCHECK in EphemeralRange's constructor if we return
// it directly. However, this shouldn't happen and needs to be fixed.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment