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

Don't use VisiblePosition local variables in SelectionController

This patch changes all VisiblePositionInFlatTree-typed local variables
into PositionInFlatTreeWithAffinity as a preparation to remove
unnecessary canonicalizations from SelectionController.

Bug: 657237
Change-Id: Ic5603a8fd090d3337c1eb58487e1a6ad1809ae6a
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1501035Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Commit-Queue: Xiaocheng Hu <xiaochengh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#637871}
parent a0ae0831
...@@ -602,20 +602,17 @@ class RangeSelectionAdjuster { ...@@ -602,20 +602,17 @@ class RangeSelectionAdjuster {
public: public:
static SelectionInFlatTree AdjustFor( static SelectionInFlatTree AdjustFor(
const VisiblePositionInFlatTree& visible_base, const PositionInFlatTreeWithAffinity& visible_base,
const VisiblePositionInFlatTree& visible_extent) { const PositionInFlatTreeWithAffinity& visible_extent) {
DCHECK(visible_base.IsValid());
DCHECK(visible_extent.IsValid());
const SelectionInFlatTree& unchanged_selection = const SelectionInFlatTree& unchanged_selection =
SelectionInFlatTree::Builder() SelectionInFlatTree::Builder()
.SetBaseAndExtent(visible_base.DeepEquivalent(), .SetBaseAndExtent(visible_base.GetPosition(),
visible_extent.DeepEquivalent()) visible_extent.GetPosition())
.Build(); .Build();
if (RuntimeEnabledFeatures::BidiCaretAffinityEnabled()) { if (RuntimeEnabledFeatures::BidiCaretAffinityEnabled()) {
if (NGInlineFormattingContextOf(visible_base.DeepEquivalent()) || if (NGInlineFormattingContextOf(visible_base.GetPosition()) ||
NGInlineFormattingContextOf(visible_extent.DeepEquivalent())) NGInlineFormattingContextOf(visible_extent.GetPosition()))
return unchanged_selection; return unchanged_selection;
} }
...@@ -632,7 +629,7 @@ class RangeSelectionAdjuster { ...@@ -632,7 +629,7 @@ class RangeSelectionAdjuster {
const PositionInFlatTree adjusted_base = const PositionInFlatTree adjusted_base =
CreateVisiblePosition(base.GetPosition()).DeepEquivalent(); CreateVisiblePosition(base.GetPosition()).DeepEquivalent();
return SelectionInFlatTree::Builder() return SelectionInFlatTree::Builder()
.SetBaseAndExtent(adjusted_base, visible_extent.DeepEquivalent()) .SetBaseAndExtent(adjusted_base, visible_extent.GetPosition())
.Build(); .Build();
} }
return unchanged_selection; return unchanged_selection;
...@@ -642,7 +639,7 @@ class RangeSelectionAdjuster { ...@@ -642,7 +639,7 @@ class RangeSelectionAdjuster {
const PositionInFlatTree adjusted_extent = const PositionInFlatTree adjusted_extent =
CreateVisiblePosition(extent.GetPosition()).DeepEquivalent(); CreateVisiblePosition(extent.GetPosition()).DeepEquivalent();
return SelectionInFlatTree::Builder() return SelectionInFlatTree::Builder()
.SetBaseAndExtent(visible_base.DeepEquivalent(), adjusted_extent) .SetBaseAndExtent(visible_base.GetPosition(), adjusted_extent)
.Build(); .Build();
} }
...@@ -655,7 +652,7 @@ class RangeSelectionAdjuster { ...@@ -655,7 +652,7 @@ class RangeSelectionAdjuster {
public: public:
RenderedPosition() = default; RenderedPosition() = default;
static RenderedPosition Create(const VisiblePositionInFlatTree&); static RenderedPosition Create(const PositionInFlatTreeWithAffinity&);
bool IsNull() const { return box_.IsNull(); } bool IsNull() const { return box_.IsNull(); }
bool operator==(const RenderedPosition& other) const { bool operator==(const RenderedPosition& other) const {
...@@ -736,12 +733,11 @@ class RangeSelectionAdjuster { ...@@ -736,12 +733,11 @@ class RangeSelectionAdjuster {
// Helper function for Create(). // Helper function for Create().
static RenderedPosition CreateUncanonicalized( static RenderedPosition CreateUncanonicalized(
const VisiblePositionInFlatTree& position) { const PositionInFlatTreeWithAffinity& position) {
if (position.IsNull() || if (position.IsNull() || !position.AnchorNode()->GetLayoutObject())
!position.DeepEquivalent().AnchorNode()->GetLayoutObject())
return RenderedPosition(); return RenderedPosition();
const PositionInFlatTreeWithAffinity adjusted = const PositionInFlatTreeWithAffinity adjusted =
ComputeInlineAdjustedPosition(position.ToPositionWithAffinity()); ComputeInlineAdjustedPosition(position);
if (adjusted.IsNull()) if (adjusted.IsNull())
return RenderedPosition(); return RenderedPosition();
...@@ -782,7 +778,7 @@ class RangeSelectionAdjuster { ...@@ -782,7 +778,7 @@ class RangeSelectionAdjuster {
RangeSelectionAdjuster::RenderedPosition RangeSelectionAdjuster::RenderedPosition
RangeSelectionAdjuster::RenderedPosition::Create( RangeSelectionAdjuster::RenderedPosition::Create(
const VisiblePositionInFlatTree& position) { const PositionInFlatTreeWithAffinity& position) {
const RenderedPosition uncanonicalized = CreateUncanonicalized(position); const RenderedPosition uncanonicalized = CreateUncanonicalized(position);
const BidiBoundaryType potential_type = uncanonicalized.bidi_boundary_type_; const BidiBoundaryType potential_type = uncanonicalized.bidi_boundary_type_;
if (potential_type == BidiBoundaryType::kNotBoundary) if (potential_type == BidiBoundaryType::kNotBoundary)
...@@ -904,8 +900,8 @@ NGCaretPosition BidiAdjustment::AdjustForHitTest( ...@@ -904,8 +900,8 @@ NGCaretPosition BidiAdjustment::AdjustForHitTest(
} }
SelectionInFlatTree BidiAdjustment::AdjustForRangeSelection( SelectionInFlatTree BidiAdjustment::AdjustForRangeSelection(
const VisiblePositionInFlatTree& base, const PositionInFlatTreeWithAffinity& base,
const VisiblePositionInFlatTree& extent) { const PositionInFlatTreeWithAffinity& extent) {
return RangeSelectionAdjuster::AdjustFor(base, extent); return RangeSelectionAdjuster::AdjustFor(base, extent);
} }
......
...@@ -37,8 +37,8 @@ class BidiAdjustment final { ...@@ -37,8 +37,8 @@ class BidiAdjustment final {
// even with bidi adjustment. // even with bidi adjustment.
// TODO(editing-dev): Eliminate |VisiblePosition| from this function. // TODO(editing-dev): Eliminate |VisiblePosition| from this function.
static SelectionInFlatTree AdjustForRangeSelection( static SelectionInFlatTree AdjustForRangeSelection(
const VisiblePositionInFlatTree&, const PositionInFlatTreeWithAffinity&,
const VisiblePositionInFlatTree&); const PositionInFlatTreeWithAffinity&);
}; };
// This class provides common traveral functions on list of |InlineBox|. // This class provides common traveral functions on list of |InlineBox|.
......
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