Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/VisibleUnits.cpp |
| diff --git a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp |
| index 7691d8695260de48c5c590456107a94f85faddcc..c09c7d96bc085aedab14797439c4739618a78629 100644 |
| --- a/third_party/WebKit/Source/core/editing/VisibleUnits.cpp |
| +++ b/third_party/WebKit/Source/core/editing/VisibleUnits.cpp |
| @@ -1610,9 +1610,8 @@ PositionTemplate<Strategy> startOfParagraphAlgorithm(const PositionTemplate<Stra |
| template <typename Strategy> |
| VisiblePositionTemplate<Strategy> startOfParagraphAlgorithm(const VisiblePositionTemplate<Strategy>& visiblePosition, EditingBoundaryCrossingRule boundaryCrossingRule) |
| { |
| - // TODO(xiaochengh): Ensure that this function is called with a valid |
| - // |visiblePosition|, and add |DCHECK(visiblePosition.isValid())|; |
| - return createVisiblePositionDeprecated(startOfParagraphAlgorithm(visiblePosition.deepEquivalent(), boundaryCrossingRule)); |
| + DCHECK(visiblePosition.isValid()); |
| + return createVisiblePosition(startOfParagraphAlgorithm(visiblePosition.deepEquivalent(), boundaryCrossingRule)); |
| } |
| VisiblePosition startOfParagraph(const VisiblePosition& c, EditingBoundaryCrossingRule boundaryCrossingRule) |
| @@ -1626,6 +1625,22 @@ VisiblePositionInFlatTree startOfParagraph(const VisiblePositionInFlatTree& c, E |
| } |
| template <typename Strategy> |
| +VisiblePositionTemplate<Strategy> startOfParagraphAlgorithmDeprecated(const VisiblePositionTemplate<Strategy>& visiblePosition, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return createVisiblePositionDeprecated(startOfParagraphAlgorithm(visiblePosition.deepEquivalent(), boundaryCrossingRule)); |
| +} |
| + |
| +VisiblePosition startOfParagraphDeprecated(const VisiblePosition& c, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return startOfParagraphAlgorithmDeprecated<EditingStrategy>(c, boundaryCrossingRule); |
| +} |
| + |
| +VisiblePositionInFlatTree startOfParagraphDeprecated(const VisiblePositionInFlatTree& c, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return startOfParagraphAlgorithmDeprecated<EditingInFlatTreeStrategy>(c, boundaryCrossingRule); |
| +} |
| + |
| +template <typename Strategy> |
| static PositionTemplate<Strategy> endOfParagraphAlgorithm(const PositionTemplate<Strategy>& position, EditingBoundaryCrossingRule boundaryCrossingRule) |
| { |
| Node* const startNode = position.anchorNode(); |
| @@ -1703,8 +1718,7 @@ static PositionTemplate<Strategy> endOfParagraphAlgorithm(const PositionTemplate |
| template <typename Strategy> |
| static VisiblePositionTemplate<Strategy> endOfParagraphAlgorithm(const VisiblePositionTemplate<Strategy>& visiblePosition, EditingBoundaryCrossingRule boundaryCrossingRule) |
| { |
| - // TODO(xiaochengh): Ensure that this function is called with a valid |
| - // |visiblePosition|, and add |DCHECK(visiblePosition.isValid())|; |
| + DCHECK(visiblePosition.isValid()); |
| return createVisiblePositionDeprecated(endOfParagraphAlgorithm(visiblePosition.deepEquivalent(), boundaryCrossingRule)); |
| } |
| @@ -1718,9 +1732,26 @@ VisiblePositionInFlatTree endOfParagraph(const VisiblePositionInFlatTree& c, Edi |
| return endOfParagraphAlgorithm<EditingInFlatTreeStrategy>(c, boundaryCrossingRule); |
| } |
| +template <typename Strategy> |
| +static VisiblePositionTemplate<Strategy> endOfParagraphAlgorithmDeprecated(const VisiblePositionTemplate<Strategy>& visiblePosition, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return createVisiblePositionDeprecated(endOfParagraphAlgorithm(visiblePosition.deepEquivalent(), boundaryCrossingRule)); |
| +} |
| + |
| +VisiblePosition endOfParagraphDeprecated(const VisiblePosition& c, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return endOfParagraphAlgorithmDeprecated<EditingStrategy>(c, boundaryCrossingRule); |
| +} |
| + |
| +VisiblePositionInFlatTree endOfParagraphDeprecated(const VisiblePositionInFlatTree& c, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return endOfParagraphAlgorithmDeprecated<EditingInFlatTreeStrategy>(c, boundaryCrossingRule); |
| +} |
| + |
| // FIXME: isStartOfParagraph(startOfNextParagraph(pos)) is not always true |
| VisiblePosition startOfNextParagraph(const VisiblePosition& visiblePosition) |
| { |
| + DCHECK(visiblePosition.isValid()); |
| VisiblePosition paragraphEnd(endOfParagraph(visiblePosition, CanSkipOverEditingBoundary)); |
| VisiblePosition afterParagraphEnd(nextPositionOf(paragraphEnd, CannotCrossEditingBoundary)); |
| // The position after the last position in the last cell of a table |
| @@ -1730,14 +1761,34 @@ VisiblePosition startOfNextParagraph(const VisiblePosition& visiblePosition) |
| return afterParagraphEnd; |
| } |
| +// FIXME: isStartOfParagraph(startOfNextParagraph(pos)) is not always true |
| +VisiblePosition startOfNextParagraphDeprecated(const VisiblePosition& visiblePosition) |
| +{ |
| + VisiblePosition paragraphEnd(endOfParagraphDeprecated(visiblePosition, CanSkipOverEditingBoundary)); |
| + VisiblePosition afterParagraphEnd(nextPositionOf(paragraphEnd, CannotCrossEditingBoundary)); |
| + // The position after the last position in the last cell of a table |
| + // is not the start of the next paragraph. |
| + if (tableElementJustBefore(afterParagraphEnd)) |
| + return nextPositionOf(afterParagraphEnd, CannotCrossEditingBoundary); |
| + return afterParagraphEnd; |
| +} |
| + |
| bool inSameParagraph(const VisiblePosition& a, const VisiblePosition& b, EditingBoundaryCrossingRule boundaryCrossingRule) |
| { |
| + DCHECK(a.isValid()); |
|
yosin_UTC9
2016/09/26 01:29:09
nit: Could you add "<< a" for ease of debug?
Xiaocheng
2016/09/26 01:36:14
I'm thinking about having a scope that asserts VP:
|
| + DCHECK(b.isValid()); |
|
yosin_UTC9
2016/09/26 01:29:09
nit: Could you add "<< b" for ease of debug?
|
| return a.isNotNull() && startOfParagraph(a, boundaryCrossingRule).deepEquivalent() == startOfParagraph(b, boundaryCrossingRule).deepEquivalent(); |
| } |
| +bool inSameParagraphDeprecated(const VisiblePosition& a, const VisiblePosition& b, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return a.isNotNull() && startOfParagraphDeprecated(a, boundaryCrossingRule).deepEquivalent() == startOfParagraphDeprecated(b, boundaryCrossingRule).deepEquivalent(); |
| +} |
| + |
| template <typename Strategy> |
| static bool isStartOfParagraphAlgorithm(const VisiblePositionTemplate<Strategy>& pos, EditingBoundaryCrossingRule boundaryCrossingRule) |
| { |
| + DCHECK(pos.isValid()); |
|
yosin_UTC9
2016/09/26 01:29:09
nit: Could you add "<< pos" for ease of debugging?
|
| return pos.isNotNull() && pos.deepEquivalent() == startOfParagraph(pos, boundaryCrossingRule).deepEquivalent(); |
| } |
| @@ -1752,8 +1803,25 @@ bool isStartOfParagraph(const VisiblePositionInFlatTree& pos, EditingBoundaryCro |
| } |
| template <typename Strategy> |
| +static bool isStartOfParagraphAlgorithmDeprecated(const VisiblePositionTemplate<Strategy>& pos, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return pos.isNotNull() && pos.deepEquivalent() == startOfParagraphDeprecated(pos, boundaryCrossingRule).deepEquivalent(); |
| +} |
| + |
| +bool isStartOfParagraphDeprecated(const VisiblePosition& pos, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return isStartOfParagraphAlgorithmDeprecated<EditingStrategy>(pos, boundaryCrossingRule); |
| +} |
| + |
| +bool isStartOfParagraphDeprecated(const VisiblePositionInFlatTree& pos, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return isStartOfParagraphAlgorithmDeprecated<EditingInFlatTreeStrategy>(pos, boundaryCrossingRule); |
| +} |
| + |
| +template <typename Strategy> |
| static bool isEndOfParagraphAlgorithm(const VisiblePositionTemplate<Strategy>& pos, EditingBoundaryCrossingRule boundaryCrossingRule) |
| { |
| + DCHECK(pos.isValid()); |
| return pos.isNotNull() && pos.deepEquivalent() == endOfParagraph(pos, boundaryCrossingRule).deepEquivalent(); |
| } |
| @@ -1767,6 +1835,22 @@ bool isEndOfParagraph(const VisiblePositionInFlatTree& pos, EditingBoundaryCross |
| return isEndOfParagraphAlgorithm<EditingInFlatTreeStrategy>(pos, boundaryCrossingRule); |
| } |
| +template <typename Strategy> |
| +static bool isEndOfParagraphAlgorithmDeprecated(const VisiblePositionTemplate<Strategy>& pos, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return pos.isNotNull() && pos.deepEquivalent() == endOfParagraphDeprecated(pos, boundaryCrossingRule).deepEquivalent(); |
| +} |
| + |
| +bool isEndOfParagraphDeprecated(const VisiblePosition& pos, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return isEndOfParagraphAlgorithmDeprecated<EditingStrategy>(pos, boundaryCrossingRule); |
| +} |
| + |
| +bool isEndOfParagraphDeprecated(const VisiblePositionInFlatTree& pos, EditingBoundaryCrossingRule boundaryCrossingRule) |
| +{ |
| + return isEndOfParagraphAlgorithmDeprecated<EditingInFlatTreeStrategy>(pos, boundaryCrossingRule); |
| +} |
| + |
| VisiblePosition previousParagraphPosition(const VisiblePosition& p, LayoutUnit x) |
| { |
| VisiblePosition pos = p; |