Index: third_party/WebKit/Source/core/editing/VisiblePosition.cpp |
diff --git a/third_party/WebKit/Source/core/editing/VisiblePosition.cpp b/third_party/WebKit/Source/core/editing/VisiblePosition.cpp |
index a9187c09d098b1deaa903fcad6f959e989ae41a8..2d6b92804d351ff5583c4e40820bbb45b4076878 100644 |
--- a/third_party/WebKit/Source/core/editing/VisiblePosition.cpp |
+++ b/third_party/WebKit/Source/core/editing/VisiblePosition.cpp |
@@ -45,12 +45,20 @@ using namespace HTMLNames; |
template <typename Strategy> |
VisiblePositionTemplate<Strategy>::VisiblePositionTemplate() |
+#if DCHECK_IS_ON() |
+ : m_domTreeVersion(0) |
+ , m_styleVersion(0) |
+#endif |
{ |
} |
template <typename Strategy> |
VisiblePositionTemplate<Strategy>::VisiblePositionTemplate(const PositionWithAffinityTemplate<Strategy>& positionWithAffinity) |
: m_positionWithAffinity(positionWithAffinity) |
+#if DCHECK_IS_ON() |
+ , m_domTreeVersion(positionWithAffinity.position().document()->domTreeVersion()) |
+ , m_styleVersion(positionWithAffinity.position().document()->styleVersion()) |
+#endif |
{ |
} |
@@ -214,6 +222,19 @@ void VisiblePositionTemplate<Strategy>::showTreeForThis() const |
#endif |
+template <typename Strategy> |
+bool VisiblePositionTemplate<Strategy>::isValid() const |
+{ |
+#if DCHECK_IS_ON() |
+ if (isNull()) |
+ return true; |
+ Document& document = *m_positionWithAffinity.position().document(); |
+ return m_domTreeVersion == document.domTreeVersion() && m_styleVersion == document.styleVersion() && !document.needsLayoutTreeUpdate(); |
+#else |
+ return true; |
+#endif |
+} |
+ |
template class CORE_TEMPLATE_EXPORT VisiblePositionTemplate<EditingStrategy>; |
template class CORE_TEMPLATE_EXPORT VisiblePositionTemplate<EditingInFlatTreeStrategy>; |