Commit b8348e2d authored by Yoichi Osato's avatar Yoichi Osato Committed by Commit Bot

Refactor granularity adjustment at ComputeVisibleSelection().

This patch excludes text granularity adjustment part from
ComputeVisibleSelection() to a function which returns
SelectionTemplate<Strategy> for code health.

We will have ComputeVisibleSelection(passed_selection) {
const SelectionTemplate<Strategy>& xxx_adjusted_selection =
 AdjustSelectionXXX(passed_selection);
const SelectionTemplate<Strategy>& yyy_adjusted_selection =
 AdjustSelectionYYY(xxx_selection);
const SelectionTemplate<Strategy>& zzz_adjusted_selection =
 AdjustSelectionZZZ(yyy_selection);
 return zzz_adjusted_selection.
}

Bug: 775701
Change-Id: I34fefb47fe7b82916a41f0f876030561fc21f1d4
Reviewed-on: https://chromium-review.googlesource.com/748842
Commit-Queue: Yoichi Osato <yoichio@chromium.org>
Reviewed-by: default avatarYoshifumi Inoue <yosin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#513100}
parent 22bdcdd3
...@@ -489,19 +489,11 @@ AdjustSelectionToAvoidCrossingEditingBoundaries( ...@@ -489,19 +489,11 @@ AdjustSelectionToAvoidCrossingEditingBoundaries(
const EphemeralRangeTemplate<Strategy>&, const EphemeralRangeTemplate<Strategy>&,
const PositionTemplate<Strategy>& base); const PositionTemplate<Strategy>& base);
// TODO(editing-dev): Move this to SelectionAdjuster.
template <typename Strategy> template <typename Strategy>
static SelectionTemplate<Strategy> ComputeVisibleSelection( static SelectionTemplate<Strategy> AdjustSelectionRespectingGranularity(
const SelectionTemplate<Strategy>& passed_selection, const SelectionTemplate<Strategy>& canonicalized_selection,
TextGranularity granularity) { TextGranularity granularity) {
DCHECK(!NeedsLayoutTreeUpdate(passed_selection.Base()));
DCHECK(!NeedsLayoutTreeUpdate(passed_selection.Extent()));
const SelectionTemplate<Strategy>& canonicalized_selection =
CanonicalizeSelection(passed_selection);
if (canonicalized_selection.IsNone())
return SelectionTemplate<Strategy>();
const TextAffinity affinity = canonicalized_selection.Affinity(); const TextAffinity affinity = canonicalized_selection.Affinity();
const PositionTemplate<Strategy> start = const PositionTemplate<Strategy> start =
...@@ -522,6 +514,34 @@ static SelectionTemplate<Strategy> ComputeVisibleSelection( ...@@ -522,6 +514,34 @@ static SelectionTemplate<Strategy> ComputeVisibleSelection(
const EphemeralRangeTemplate<Strategy> expanded_range(expanded_start, const EphemeralRangeTemplate<Strategy> expanded_range(expanded_start,
expanded_end); expanded_end);
typename SelectionTemplate<Strategy>::Builder builder;
return canonicalized_selection.IsBaseFirst()
? builder.SetAsForwardSelection(expanded_range).Build()
: builder.SetAsBackwardSelection(expanded_range).Build();
}
template <typename Strategy>
static SelectionTemplate<Strategy> ComputeVisibleSelection(
const SelectionTemplate<Strategy>& passed_selection,
TextGranularity granularity) {
DCHECK(!NeedsLayoutTreeUpdate(passed_selection.Base()));
DCHECK(!NeedsLayoutTreeUpdate(passed_selection.Extent()));
const SelectionTemplate<Strategy>& canonicalized_selection =
CanonicalizeSelection(passed_selection);
if (canonicalized_selection.IsNone())
return SelectionTemplate<Strategy>();
const SelectionTemplate<Strategy>& granularity_adjusted_selection =
AdjustSelectionRespectingGranularity(canonicalized_selection,
granularity);
// TODO(editing-dev): Implement
// const SelectionTemplate<Strategy>& shadow_adjusted_selection =
// AdjustSelectionShadow(granularity_adjusted_selection);
const EphemeralRangeTemplate<Strategy> expanded_range(
granularity_adjusted_selection.ComputeStartPosition(),
granularity_adjusted_selection.ComputeEndPosition());
const EphemeralRangeTemplate<Strategy> shadow_adjusted_range = const EphemeralRangeTemplate<Strategy> shadow_adjusted_range =
canonicalized_selection.IsBaseFirst() canonicalized_selection.IsBaseFirst()
...@@ -535,10 +555,15 @@ static SelectionTemplate<Strategy> ComputeVisibleSelection( ...@@ -535,10 +555,15 @@ static SelectionTemplate<Strategy> ComputeVisibleSelection(
AdjustSelectionStartToAvoidCrossingShadowBoundaries( AdjustSelectionStartToAvoidCrossingShadowBoundaries(
expanded_range), expanded_range),
expanded_range.EndPosition()); expanded_range.EndPosition());
// TODO(editing-dev): Implement
// const SelectionTemplate<Strategy>& editing_adjusted_selection =
// AdjustSelectionEditing(shadow_adjusted_selection);
const EphemeralRangeTemplate<Strategy> editing_adjusted_range = const EphemeralRangeTemplate<Strategy> editing_adjusted_range =
AdjustSelectionToAvoidCrossingEditingBoundaries( AdjustSelectionToAvoidCrossingEditingBoundaries(
shadow_adjusted_range, canonicalized_selection.Base()); shadow_adjusted_range, canonicalized_selection.Base());
// TODO(editing-dev): Implement
// const SelectionTemplate<Strategy>& adjusted_selection =
// AdjustSelectionType(editing_adjusted_range);
const SelectionType selection_type = const SelectionType selection_type =
ComputeSelectionType(editing_adjusted_range.StartPosition(), ComputeSelectionType(editing_adjusted_range.StartPosition(),
editing_adjusted_range.EndPosition()); editing_adjusted_range.EndPosition());
......
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