Chromium Code Reviews| Index: Source/core/dom/Position.h |
| diff --git a/Source/core/dom/Position.h b/Source/core/dom/Position.h |
| index cb4e4ad1a7173f4a335c3ebdcf8884fc48cd2547..017c7594380f017644a65fd3cea26235f6239efd 100644 |
| --- a/Source/core/dom/Position.h |
| +++ b/Source/core/dom/Position.h |
| @@ -57,7 +57,6 @@ template <typename Strategy> |
| class CORE_TEMPLATE_CLASS_EXPORT PositionAlgorithm { |
| DISALLOW_ALLOCATION(); |
| public: |
| - using PositionType = typename Strategy::PositionType; |
| using StrategyType = Strategy; |
| enum AnchorType : unsigned char { |
| @@ -86,8 +85,8 @@ public: |
| int m_offset; |
| }; |
| - static const TreeScope* commonAncestorTreeScope(const PositionType&, const PositionType& b); |
| - static PositionType createLegacyEditingPosition(PassRefPtrWillBeRawPtr<Node> anchorNode, int offset); |
| + static const TreeScope* commonAncestorTreeScope(const PositionAlgorithm<Strategy>&, const PositionAlgorithm<Strategy>& b); |
| + static PositionAlgorithm<Strategy> createLegacyEditingPosition(PassRefPtrWillBeRawPtr<Node> anchorNode, int offset); |
| PositionAlgorithm(PassRefPtrWillBeRawPtr<Node> anchorNode, LegacyEditingOffset); |
| @@ -111,13 +110,13 @@ public: |
| Text* containerText() const; |
| int computeOffsetInContainerNode() const; // O(n) for before/after-anchored positions, O(1) for parent-anchored positions |
| - PositionType parentAnchoredEquivalent() const; // Convenience method for DOM positions that also fixes up some positions for editing |
| + PositionAlgorithm<Strategy> parentAnchoredEquivalent() const; // Convenience method for DOM positions that also fixes up some positions for editing |
| // Returns |PositionIsAnchor| type |Position| which is compatible with |
| // |RangeBoundaryPoint| as safe to pass |Range| constructor. Return value |
| // of this function is different from |parentAnchoredEquivalent()| which |
| // returns editing specific position. |
| - PositionType toOffsetInAnchor() const; |
| + PositionAlgorithm<Strategy> toOffsetInAnchor() const; |
| // Inline O(1) access for Positions which callers know to be parent-anchored |
| int offsetInContainerNode() const |
| @@ -151,7 +150,7 @@ public: |
| // behave as |Range| boundary point. |
| Node* nodeAsRangePastLastNode() const; |
| - Node* commonAncestorContainer(const PositionType&) const; |
| + Node* commonAncestorContainer(const PositionAlgorithm<Strategy>&) const; |
| Node* anchorNode() const { return m_anchorNode.get(); } |
| @@ -183,13 +182,13 @@ public: |
| // Move up or down the DOM by one position. |
| // Offsets are computed using layout text for nodes that have layoutObjects - but note that even when |
| // using composed characters, the result may be inside a single user-visible character if a ligature is formed. |
| - PositionType previous(PositionMoveType = CodePoint) const; |
| - PositionType next(PositionMoveType = CodePoint) const; |
| + PositionAlgorithm<Strategy> previous(PositionMoveType = CodePoint) const; |
| + PositionAlgorithm<Strategy> next(PositionMoveType = CodePoint) const; |
| static int uncheckedPreviousOffset(const Node*, int current); |
| static int uncheckedPreviousOffsetForBackwardDeletion(const Node*, int current); |
| static int uncheckedNextOffset(const Node*, int current); |
| - int compareTo(const PositionType&) const; |
| + int compareTo(const PositionAlgorithm<Strategy>&) const; |
| // These can be either inside or just before/after the node, depending on |
| // if the node is ignored by editing or not. |
| @@ -205,13 +204,13 @@ public: |
| bool atEndOfTree() const; |
| // These return useful visually equivalent positions. |
| - PositionType upstream(EditingBoundaryCrossingRule = CannotCrossEditingBoundary) const; |
| - PositionType downstream(EditingBoundaryCrossingRule = CannotCrossEditingBoundary) const; |
| + PositionAlgorithm<Strategy> upstream(EditingBoundaryCrossingRule = CannotCrossEditingBoundary) const; |
| + PositionAlgorithm<Strategy> downstream(EditingBoundaryCrossingRule = CannotCrossEditingBoundary) const; |
| bool isCandidate() const; |
| bool inRenderedText() const; |
| bool isRenderedCharacter() const; |
| - bool rendersInDifferentPosition(const PositionType&) const; |
| + bool rendersInDifferentPosition(const PositionAlgorithm<Strategy>&) const; |
| void getInlineBoxAndOffset(EAffinity, InlineBox*&, int& caretOffset) const; |
| void getInlineBoxAndOffset(EAffinity, TextDirection primaryDirection, InlineBox*&, int& caretOffset) const; |
| @@ -222,17 +221,17 @@ public: |
| static bool nodeIsUserSelectNone(Node*); |
| static bool nodeIsUserSelectAll(const Node*); |
| static Node* rootUserSelectAllForNode(Node*); |
| - static PositionType beforeNode(Node* anchorNode); |
| - static PositionType afterNode(Node* anchorNode); |
| - static PositionType inParentBeforeNode(const Node& anchorNode); |
| - static PositionType inParentAfterNode(const Node& anchorNode); |
| + static PositionAlgorithm<Strategy> beforeNode(Node* anchorNode); |
| + static PositionAlgorithm<Strategy> afterNode(Node* anchorNode); |
| + static PositionAlgorithm<Strategy> inParentBeforeNode(const Node& anchorNode); |
| + static PositionAlgorithm<Strategy> inParentAfterNode(const Node& anchorNode); |
| static int lastOffsetInNode(Node* anchorNode); |
| - static PositionType firstPositionInNode(Node* anchorNode); |
| - static PositionType lastPositionInNode(Node* anchorNode); |
| + static PositionAlgorithm<Strategy> firstPositionInNode(Node* anchorNode); |
| + static PositionAlgorithm<Strategy> lastPositionInNode(Node* anchorNode); |
| static int minOffsetForNode(Node* anchorNode, int offset); |
| static bool offsetIsBeforeLastNodeOffset(int offset, Node* anchorNode); |
| - static PositionType firstPositionInOrBeforeNode(Node* anchorNode); |
| - static PositionType lastPositionInOrAfterNode(Node* anchorNode); |
| + static PositionAlgorithm<Strategy> firstPositionInOrBeforeNode(Node* anchorNode); |
| + static PositionAlgorithm<Strategy> lastPositionInOrAfterNode(Node* anchorNode); |
| void debugPosition(const char* msg = "") const; |
| @@ -271,9 +270,9 @@ using Position = PositionAlgorithm<EditingStrategy>; |
| using PositionInComposedTree = PositionAlgorithm<EditingInComposedTreeStrategy>; |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::createLegacyEditingPosition(PassRefPtrWillBeRawPtr<Node> node, int offset) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::createLegacyEditingPosition(PassRefPtrWillBeRawPtr<Node> node, int offset) |
|
yosin_UTC9
2015/06/26 08:39:24
We don't need to have |typename|.
Apply this comme
yoichio
2015/06/29 06:00:33
Done.
|
| { |
| - return PositionType(node, PositionAlgorithm::LegacyEditingOffset(offset)); |
| + return PositionAlgorithm<Strategy>(node, PositionAlgorithm::LegacyEditingOffset(offset)); |
| } |
| inline Position createLegacyEditingPosition(PassRefPtrWillBeRawPtr<Node> node, int offset) |
| @@ -311,13 +310,13 @@ bool operator!=(const PositionAlgorithm<Strategy>& a, const PositionAlgorithm<St |
| // If we ever add a PassPosition we can make these non-inline. |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::inParentBeforeNode(const Node& node) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::inParentBeforeNode(const Node& node) |
| { |
| // FIXME: This should ASSERT(node.parentNode()) |
| // At least one caller currently hits this ASSERT though, which indicates |
| // that the caller is trying to make a position relative to a disconnected node (which is likely an error) |
| // Specifically, editing/deleting/delete-ligature-001.html crashes with ASSERT(node->parentNode()) |
| - return PositionType(Strategy::parent(node), Strategy::index(node), PositionIsOffsetInAnchor); |
| + return PositionAlgorithm<Strategy>(Strategy::parent(node), Strategy::index(node), PositionIsOffsetInAnchor); |
| } |
| inline Position positionInParentBeforeNode(const Node& node) |
| @@ -326,10 +325,10 @@ inline Position positionInParentBeforeNode(const Node& node) |
| } |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::inParentAfterNode(const Node& node) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::inParentAfterNode(const Node& node) |
| { |
| ASSERT(node.parentNode()); |
| - return PositionType(Strategy::parent(node), Strategy::index(node) + 1, PositionIsOffsetInAnchor); |
| + return PositionAlgorithm<Strategy>(Strategy::parent(node), Strategy::index(node) + 1, PositionIsOffsetInAnchor); |
| } |
| inline Position positionInParentAfterNode(const Node& node) |
| @@ -339,10 +338,10 @@ inline Position positionInParentAfterNode(const Node& node) |
| // positionBeforeNode and positionAfterNode return neighbor-anchored positions, construction is O(1) |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::beforeNode(Node* anchorNode) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::beforeNode(Node* anchorNode) |
| { |
| ASSERT(anchorNode); |
| - return PositionType(anchorNode, PositionIsBeforeAnchor); |
| + return PositionAlgorithm<Strategy>(anchorNode, PositionIsBeforeAnchor); |
| } |
| inline Position positionBeforeNode(Node* anchorNode) |
| @@ -351,10 +350,10 @@ inline Position positionBeforeNode(Node* anchorNode) |
| } |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::afterNode(Node* anchorNode) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::afterNode(Node* anchorNode) |
| { |
| ASSERT(anchorNode); |
| - return PositionType(anchorNode, PositionIsAfterAnchor); |
| + return PositionAlgorithm<Strategy>(anchorNode, PositionIsAfterAnchor); |
| } |
| inline Position positionAfterNode(Node* anchorNode) |
| @@ -375,11 +374,11 @@ inline int lastOffsetInNode(Node* node) |
| // firstPositionInNode and lastPositionInNode return parent-anchored positions, lastPositionInNode construction is O(n) due to countChildren() |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::firstPositionInNode(Node* anchorNode) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::firstPositionInNode(Node* anchorNode) |
| { |
| if (anchorNode->isTextNode()) |
| - return PositionType(anchorNode, 0, PositionIsOffsetInAnchor); |
| - return PositionType(anchorNode, PositionIsBeforeChildren); |
| + return PositionAlgorithm<Strategy>(anchorNode, 0, PositionIsOffsetInAnchor); |
| + return PositionAlgorithm<Strategy>(anchorNode, PositionIsBeforeChildren); |
| } |
| inline Position firstPositionInNode(Node* anchorNode) |
| @@ -388,11 +387,11 @@ inline Position firstPositionInNode(Node* anchorNode) |
| } |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::lastPositionInNode(Node* anchorNode) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::lastPositionInNode(Node* anchorNode) |
| { |
| if (anchorNode->isTextNode()) |
| - return PositionType(anchorNode, lastOffsetInNode(anchorNode), PositionIsOffsetInAnchor); |
| - return PositionType(anchorNode, PositionIsAfterChildren); |
| + return PositionAlgorithm<Strategy>(anchorNode, lastOffsetInNode(anchorNode), PositionIsOffsetInAnchor); |
| + return PositionAlgorithm<Strategy>(anchorNode, PositionIsAfterChildren); |
| } |
| inline Position lastPositionInNode(Node* anchorNode) |
| @@ -437,18 +436,18 @@ inline bool offsetIsBeforeLastNodeOffset(int offset, Node* anchorNode) |
| } |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::firstPositionInOrBeforeNode(Node* node) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::firstPositionInOrBeforeNode(Node* node) |
| { |
| if (!node) |
| - return PositionType(); |
| + return PositionAlgorithm<Strategy>(); |
| return Strategy::editingIgnoresContent(node) ? beforeNode(node) : firstPositionInNode(node); |
| } |
| template <typename Strategy> |
| -typename Strategy::PositionType PositionAlgorithm<Strategy>::lastPositionInOrAfterNode(Node* node) |
| +typename PositionAlgorithm<Strategy> PositionAlgorithm<Strategy>::lastPositionInOrAfterNode(Node* node) |
| { |
| if (!node) |
| - return PositionType(); |
| + return PositionAlgorithm<Strategy>(); |
| return Strategy::editingIgnoresContent(node) ? afterNode(node) : lastPositionInNode(node); |
| } |