Commit f6189a00 authored by Yoshifumi Inoue's avatar Yoshifumi Inoue Committed by Commit Bot

Introduce TextAffinity::kUpstreamIfPossible

This patch introduces |TextAffinity::kUpstreamIfPossible| as replacement of
|VP_UPSTREAM_IF_POSSIBLE| to avoid including "VisiblePositoin.h" for improving
compilation speed.

This patch also gets rid of redundant include directive of "VisiblePositoin.h"
from "LayoutSVGInlineText.cpp".

Bug: 657237
Change-Id: I685c49a0adc4b2827929447ca8f3e6a5c518c113
Reviewed-on: https://chromium-review.googlesource.com/701958Reviewed-by: default avatarKoji Ishii <kojii@chromium.org>
Commit-Queue: Koji Ishii <kojii@chromium.org>
Cr-Commit-Position: refs/heads/master@{#506869}
parent 65d9fe13
......@@ -607,7 +607,7 @@ void FrameSelection::SelectFrameElementInParentIfFullySelected() {
Position(owner_element_parent, owner_element_node_index));
VisiblePosition after_owner_element = CreateVisiblePosition(
Position(owner_element_parent, owner_element_node_index + 1),
VP_UPSTREAM_IF_POSSIBLE);
TextAffinity::kUpstreamIfPossible);
SelectionInDOMTree::Builder builder;
builder
......
......@@ -31,7 +31,16 @@
namespace blink {
enum class TextAffinity { kUpstream, kDownstream };
enum class TextAffinity {
kUpstream,
kDownstream,
// Callers who do not know where on the line the position is, but would like
// kUpstream if at a line break or kDownstream otherwise, need a clear way to
// specify that. The constructors auto-correct kUpstream to kDownstream if the
// position is not at a line break.
kUpstreamIfPossible = kUpstream,
};
CORE_EXPORT std::ostream& operator<<(std::ostream&, TextAffinity);
......
......@@ -40,13 +40,6 @@ namespace blink {
// is cheaper than UPSTREAM
#define VP_DEFAULT_AFFINITY TextAffinity::kDownstream
// Callers who do not know where on the line the position is,
// but would like UPSTREAM if at a line break or DOWNSTREAM
// otherwise, need a clear way to specify that. The
// constructors auto-correct UPSTREAM to DOWNSTREAM if the
// position is not at a line break.
#define VP_UPSTREAM_IF_POSSIBLE TextAffinity::kUpstream
// |VisiblePosition| is an immutable object representing "canonical position"
// with affinity.
//
......
......@@ -428,7 +428,7 @@ static VisiblePositionTemplate<Strategy> EndPositionForLine(
if (IsHTMLBRElement(*end_node)) {
return CreateVisiblePosition(
PositionTemplate<Strategy>::BeforeNode(*end_node),
VP_UPSTREAM_IF_POSSIBLE);
TextAffinity::kUpstreamIfPossible);
}
if (end_box->IsInlineTextBox() && end_node->IsTextNode()) {
InlineTextBox* end_text_box = ToInlineTextBox(end_box);
......@@ -437,10 +437,10 @@ static VisiblePositionTemplate<Strategy> EndPositionForLine(
end_offset += end_text_box->Len();
return CreateVisiblePosition(
PositionTemplate<Strategy>(ToText(end_node), end_offset),
VP_UPSTREAM_IF_POSSIBLE);
TextAffinity::kUpstreamIfPossible);
}
return CreateVisiblePosition(PositionTemplate<Strategy>::AfterNode(*end_node),
VP_UPSTREAM_IF_POSSIBLE);
TextAffinity::kUpstreamIfPossible);
}
// TODO(yosin) Rename this function to reflect the fact it ignores bidi levels.
......
......@@ -87,7 +87,7 @@ static VisiblePositionTemplate<Strategy> EndOfSentenceAlgorithm(
const VisiblePositionTemplate<Strategy>& c) {
DCHECK(c.IsValid()) << c;
return CreateVisiblePosition(NextBoundary(c, EndSentenceBoundary),
VP_UPSTREAM_IF_POSSIBLE);
TextAffinity::kUpstreamIfPossible);
}
template <typename Strategy>
......@@ -142,8 +142,9 @@ EphemeralRange ExpandRangeToSentenceBoundary(const EphemeralRange& range) {
VisiblePosition NextSentencePosition(const VisiblePosition& c) {
DCHECK(c.IsValid()) << c;
VisiblePosition next = CreateVisiblePosition(
NextBoundary(c, NextSentencePositionBoundary), VP_UPSTREAM_IF_POSSIBLE);
VisiblePosition next =
CreateVisiblePosition(NextBoundary(c, NextSentencePositionBoundary),
TextAffinity::kUpstreamIfPossible);
return HonorEditingBoundaryAtOrAfter(next, c.DeepEquivalent());
}
......
......@@ -155,7 +155,7 @@ Position EndOfWordPosition(const VisiblePosition& position, EWordSide side) {
VisiblePosition EndOfWord(const VisiblePosition& position, EWordSide side) {
return CreateVisiblePosition(EndOfWordPosition(position, side),
VP_UPSTREAM_IF_POSSIBLE);
TextAffinity::kUpstreamIfPossible);
}
PositionInFlatTree EndOfWordPosition(const VisiblePositionInFlatTree& position,
......@@ -166,13 +166,14 @@ PositionInFlatTree EndOfWordPosition(const VisiblePositionInFlatTree& position,
VisiblePositionInFlatTree EndOfWord(const VisiblePositionInFlatTree& position,
EWordSide side) {
return CreateVisiblePosition(EndOfWordPosition(position, side),
VP_UPSTREAM_IF_POSSIBLE);
TextAffinity::kUpstreamIfPossible);
}
VisiblePosition NextWordPosition(const VisiblePosition& c) {
DCHECK(c.IsValid()) << c;
VisiblePosition next = CreateVisiblePosition(
NextBoundary(c, NextWordPositionBoundary), VP_UPSTREAM_IF_POSSIBLE);
VisiblePosition next =
CreateVisiblePosition(NextBoundary(c, NextWordPositionBoundary),
TextAffinity::kUpstreamIfPossible);
return HonorEditingBoundaryAtOrAfter(next, c.DeepEquivalent());
}
......
......@@ -532,11 +532,12 @@ static PositionWithAffinity CreatePositionWithAffinityForBox(
affinity = TextAffinity::kDownstream;
break;
case kAlwaysUpstream:
affinity = VP_UPSTREAM_IF_POSSIBLE;
affinity = TextAffinity::kUpstreamIfPossible;
break;
case kUpstreamIfPositionIsNotAtStart:
affinity = offset > box->CaretMinOffset() ? VP_UPSTREAM_IF_POSSIBLE
: TextAffinity::kDownstream;
affinity = offset > box->CaretMinOffset()
? TextAffinity::kUpstreamIfPossible
: TextAffinity::kDownstream;
break;
}
int text_start_offset =
......
......@@ -27,7 +27,6 @@
#include "core/css/FontSize.h"
#include "core/css/StyleEngine.h"
#include "core/editing/TextAffinity.h"
#include "core/editing/VisiblePosition.h"
#include "core/frame/LocalFrameView.h"
#include "core/layout/svg/LayoutSVGText.h"
#include "core/layout/svg/SVGLayoutSupport.h"
......@@ -203,9 +202,10 @@ PositionWithAffinity LayoutSVGInlineText::PositionForPoint(
int offset = closest_distance_box->OffsetForPositionInFragment(
*closest_distance_fragment,
LayoutUnit(absolute_point.X() - closest_distance_position), true);
return CreatePositionWithAffinity(
offset + closest_distance_box->Start(),
offset > 0 ? VP_UPSTREAM_IF_POSSIBLE : TextAffinity::kDownstream);
return CreatePositionWithAffinity(offset + closest_distance_box->Start(),
offset > 0
? TextAffinity::kUpstreamIfPossible
: TextAffinity::kDownstream);
}
namespace {
......
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