| Index: Source/core/editing/VisiblePosition.h
|
| diff --git a/Source/core/editing/VisiblePosition.h b/Source/core/editing/VisiblePosition.h
|
| index 838998e808304cc59335a52a43ed22f4804fba53..dd42ba154ae3a3e82b431f91b408b52cb9848940 100644
|
| --- a/Source/core/editing/VisiblePosition.h
|
| +++ b/Source/core/editing/VisiblePosition.h
|
| @@ -67,32 +67,36 @@ class Range;
|
| //
|
| // NOTE: UPSTREAM affinity will be used only if pos is at end of a wrapped line,
|
| // otherwise it will be converted to DOWNSTREAM.
|
| -class CORE_EXPORT VisiblePosition final {
|
| +template <typename Strategy>
|
| +class CORE_TEMPLATE_CLASS_EXPORT VisiblePositionTemplate final {
|
| DISALLOW_ALLOCATION();
|
| public:
|
| - VisiblePosition();
|
| + VisiblePositionTemplate();
|
|
|
| // Node: Other than |createVisiblePosition()|, we should not use
|
| // |createWithoutCanonicalization()|.
|
| - static VisiblePosition createWithoutCanonicalization(const PositionWithAffinity& canonicalized);
|
| + static VisiblePositionTemplate createWithoutCanonicalization(const PositionWithAffinityTemplate<Strategy>& canonicalized);
|
|
|
| // Intentionally delete |operator==()| and |operator!=()| for reducing
|
| // compilation error message.
|
| // TODO(yosin) We'll have |equals()| when we have use cases of checking
|
| // equality of both position and affinity.
|
| - bool operator==(const VisiblePosition&) const = delete;
|
| - bool operator!=(const VisiblePosition&) const = delete;
|
| + bool operator==(const VisiblePositionTemplate&) const = delete;
|
| + bool operator!=(const VisiblePositionTemplate&) const = delete;
|
|
|
| bool isNull() const { return m_positionWithAffinity.isNull(); }
|
| bool isNotNull() const { return m_positionWithAffinity.isNotNull(); }
|
| bool isOrphan() const { return deepEquivalent().isOrphan(); }
|
|
|
| - Position deepEquivalent() const { return m_positionWithAffinity.position(); }
|
| - Position toParentAnchoredPosition() const { return deepEquivalent().parentAnchoredEquivalent(); }
|
| - PositionWithAffinity toPositionWithAffinity() const { return m_positionWithAffinity; }
|
| + PositionAlgorithm<Strategy> deepEquivalent() const { return m_positionWithAffinity.position(); }
|
| + PositionAlgorithm<Strategy> toParentAnchoredPosition() const { return deepEquivalent().parentAnchoredEquivalent(); }
|
| + PositionWithAffinityTemplate<Strategy> toPositionWithAffinity() const { return m_positionWithAffinity; }
|
| TextAffinity affinity() const { return m_positionWithAffinity.affinity(); }
|
|
|
| - DECLARE_TRACE();
|
| + DEFINE_INLINE_TRACE()
|
| + {
|
| + visitor->trace(m_positionWithAffinity);
|
| + }
|
|
|
| #ifndef NDEBUG
|
| void debugPosition(const char* msg = "") const;
|
| @@ -101,11 +105,15 @@ public:
|
| #endif
|
|
|
| private:
|
| - explicit VisiblePosition(const PositionWithAffinity&);
|
| + explicit VisiblePositionTemplate(const PositionWithAffinityTemplate<Strategy>&);
|
|
|
| - PositionWithAffinity m_positionWithAffinity;
|
| + PositionWithAffinityTemplate<Strategy> m_positionWithAffinity;
|
| };
|
|
|
| +extern template class CORE_EXTERN_TEMPLATE_EXPORT VisiblePositionTemplate<EditingStrategy>;
|
| +
|
| +using VisiblePosition = VisiblePositionTemplate<EditingStrategy>;
|
| +
|
| CORE_EXPORT VisiblePosition createVisiblePosition(const Position&, TextAffinity = VP_DEFAULT_AFFINITY);
|
| CORE_EXPORT VisiblePosition createVisiblePosition(const PositionWithAffinity&);
|
| CORE_EXPORT VisiblePosition createVisiblePosition(const PositionInComposedTree&, TextAffinity = VP_DEFAULT_AFFINITY);
|
|
|