Chromium Code Reviews| Index: third_party/WebKit/Source/core/editing/EphemeralRange.h |
| diff --git a/third_party/WebKit/Source/core/editing/EphemeralRange.h b/third_party/WebKit/Source/core/editing/EphemeralRange.h |
| index 5512100955b9ffc4b3645580a3fe62002ab97e87..f569afb9fa58d819abf7a5c8c5ed023be68d01f9 100644 |
| --- a/third_party/WebKit/Source/core/editing/EphemeralRange.h |
| +++ b/third_party/WebKit/Source/core/editing/EphemeralRange.h |
| @@ -95,6 +95,36 @@ using EphemeralRangeInFlatTree = EphemeralRangeTemplate<EditingInFlatTreeStrateg |
| // |range.isNull()| returns true. |
| CORE_EXPORT Range* createRange(const EphemeralRange& /* range */); |
| +namespace internal { |
| + |
| +// We should restrict access to the unwanted version of |TraversalRange::end()| function. |
| +template <class Iterator> |
| +class TraversalRangeImpl : private TraversalRange<Iterator> { |
| + STACK_ALLOCATED(); |
| +public: |
| + using StartNodeType = typename TraversalRange<Iterator>::StartNodeType; |
| + TraversalRangeImpl(const StartNodeType* start, const StartNodeType* pastEndNode) |
| + : TraversalRange<Iterator>(start), m_pastEndNode(pastEndNode) { } |
| + |
| + using TraversalRange<Iterator>::begin; |
| + |
| + Iterator end() { return Iterator(m_pastEndNode); } |
| + |
| +private: |
| + Member<const StartNodeType> m_pastEndNode; |
| +}; |
| + |
| +using RangeTraversal = TraversalRangeImpl<TraversalNextIterator<NodeTraversal>>; |
| +using RangeTraversalInFlatTree = TraversalRangeImpl<TraversalNextIterator<FlatTreeTraversal>>; |
| + |
| +} // namespace internal |
| + |
| +internal::RangeTraversal inRange(const Position& start, const Position& end); |
|
Andrey Kraynov
2016/08/16 10:02:11
Should I move these functions to some static class
yosin_UTC9
2016/08/17 01:45:31
I don't think so.
How about EphmeralRange::nodes(
|
| +internal::RangeTraversalInFlatTree inRange(const PositionInFlatTree& start, const PositionInFlatTree& end); |
| + |
| +internal::RangeTraversal inRange(const EphemeralRange&); |
| +internal::RangeTraversalInFlatTree inRange(const EphemeralRangeInFlatTree&); |
| + |
| } // namespace blink |
| #endif |