Commit 7442d6e4 authored by Xiaocheng Hu's avatar Xiaocheng Hu Committed by Commit Bot

Revert "Stop using RenderedPosition in VisibleUnitsLine"

This reverts commit 85d8d125.

Reason for revert: causing crbug.com/838075

Original change's description:
> Stop using RenderedPosition in VisibleUnitsLine
> 
> VisibleUnitsLine uses RenderedPosition instances without using
> the bidi-related functionalities.
> 
> Since RenderedPosition is a wrapper of InlineBoxPosition with bidi
> utility functions added, this patch changes VisibleUnitsLine to
> use InlineBoxPosition directly for simplicity.
> 
> Bug: 822575
> Change-Id: I158ddfb3dec1ead3f8b66e1255f3465f3f0353a2
> Reviewed-on: https://chromium-review.googlesource.com/1024645
> 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@{#553008}

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

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: 822575, 838075
Change-Id: Ifa8429f7749d5c6bdb6dda3f2ed3471c523756ce
Reviewed-on: https://chromium-review.googlesource.com/1040611Reviewed-by: default avatarXiaocheng Hu <xiaochengh@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#555673}
parent 3769fe02
......@@ -34,6 +34,7 @@
#include "third_party/blink/renderer/core/editing/editing_utilities.h"
#include "third_party/blink/renderer/core/editing/inline_box_position.h"
#include "third_party/blink/renderer/core/editing/ng_flat_tree_shorthands.h"
#include "third_party/blink/renderer/core/editing/rendered_position.h"
#include "third_party/blink/renderer/core/editing/visible_position.h"
#include "third_party/blink/renderer/core/layout/api/line_layout_block_flow.h"
#include "third_party/blink/renderer/core/layout/line/inline_text_box.h"
......@@ -172,8 +173,9 @@ PositionWithAffinityTemplate<Strategy> StartPositionForLine(
if (c.IsNull())
return PositionWithAffinityTemplate<Strategy>();
const InlineBox* inline_box = ComputeInlineBoxPosition(c).inline_box;
if (!inline_box) {
const RootInlineBox* root_box =
RenderedPosition(c.GetPosition(), c.Affinity()).RootBox();
if (!root_box) {
// There are VisiblePositions at offset 0 in blocks without
// RootInlineBoxes, like empty editable blocks and bordered blocks.
PositionTemplate<Strategy> p = c.GetPosition();
......@@ -185,8 +187,7 @@ PositionWithAffinityTemplate<Strategy> StartPositionForLine(
return PositionWithAffinityTemplate<Strategy>();
}
const RootInlineBox& root_box = inline_box->Root();
const auto& node_and_box = Ordering::StartNodeAndBoxOf(root_box);
const auto& node_and_box = Ordering::StartNodeAndBoxOf(*root_box);
Node* const start_node = std::get<Node*>(node_and_box);
InlineBox* const start_box = std::get<InlineBox*>(node_and_box);
if (!start_node)
......@@ -429,8 +430,9 @@ static PositionWithAffinityTemplate<Strategy> EndPositionForLine(
if (c.IsNull())
return PositionWithAffinityTemplate<Strategy>();
const InlineBox* inline_box = ComputeInlineBoxPosition(c).inline_box;
if (!inline_box) {
const RootInlineBox* root_box =
RenderedPosition(c.GetPosition(), c.Affinity()).RootBox();
if (!root_box) {
// There are VisiblePositions at offset 0 in blocks without
// RootInlineBoxes, like empty editable blocks and bordered blocks.
const PositionTemplate<Strategy> p = c.GetPosition();
......@@ -441,8 +443,7 @@ static PositionWithAffinityTemplate<Strategy> EndPositionForLine(
return PositionWithAffinityTemplate<Strategy>();
}
const RootInlineBox& root_box = inline_box->Root();
const auto& node_and_box = Ordering::EndNodeAndBoxOf(root_box);
const auto& node_and_box = Ordering::EndNodeAndBoxOf(*root_box);
Node* const end_node = std::get<Node*>(node_and_box);
InlineBox* const end_box = std::get<InlineBox*>(node_and_box);
if (!end_node)
......@@ -724,11 +725,10 @@ VisiblePosition PreviousLinePosition(const VisiblePosition& visible_position,
Position position = PreviousRootInlineBoxCandidatePosition(
node, visible_position, editable_type);
if (position.IsNotNull()) {
const InlineBox* inline_box =
ComputeInlineBoxPosition(CreateVisiblePosition(position)).inline_box;
if (!inline_box)
RenderedPosition rendered_position((CreateVisiblePosition(position)));
root = rendered_position.RootBox();
if (!root)
return CreateVisiblePosition(position);
root = &inline_box->Root();
}
}
......@@ -789,11 +789,10 @@ VisiblePosition NextLinePosition(const VisiblePosition& visible_position,
Position position = NextRootInlineBoxCandidatePosition(
node, visible_position, editable_type);
if (position.IsNotNull()) {
const InlineBox* inline_box =
ComputeInlineBoxPosition(CreateVisiblePosition(position)).inline_box;
if (!inline_box)
RenderedPosition rendered_position((CreateVisiblePosition(position)));
root = rendered_position.RootBox();
if (!root)
return CreateVisiblePosition(position);
root = &inline_box->Root();
}
}
......
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