Index: third_party/WebKit/Source/core/editing/markers/RenderedDocumentMarker.h |
diff --git a/third_party/WebKit/Source/core/editing/markers/RenderedDocumentMarker.h b/third_party/WebKit/Source/core/editing/markers/RenderedDocumentMarker.h |
index 7e4148285ae43d8cf573976e3aba924c2258040a..8bda9a99b0f4060511662ad33c2f3e2524b13113 100644 |
--- a/third_party/WebKit/Source/core/editing/markers/RenderedDocumentMarker.h |
+++ b/third_party/WebKit/Source/core/editing/markers/RenderedDocumentMarker.h |
@@ -33,41 +33,54 @@ |
namespace blink { |
class RenderedDocumentMarker final : public DocumentMarker { |
+private: |
+ enum class State { |
+ Invalid, |
+ ValidNull, |
+ ValidNotNull |
+ }; |
public: |
static RenderedDocumentMarker* create(const DocumentMarker& marker) |
{ |
return new RenderedDocumentMarker(marker); |
} |
- bool isRendered() const { return invalidMarkerRect() != m_renderedRect; } |
- bool contains(const LayoutPoint& point) const { return isRendered() && m_renderedRect.contains(point); } |
- bool setRenderedRect(const LayoutRect& r) |
+ bool isRendered() const { return m_state == State::ValidNotNull; } |
+ bool contains(const LayoutPoint& point) const |
+ { |
+ DCHECK_EQ(m_state, State::ValidNotNull); |
+ return m_renderedRect.contains(point); |
+ } |
+ bool setRenderedRect(const LayoutRect& rect) |
{ |
- const LayoutRect& rect = r.isEmpty() ? invalidMarkerRect() : r; |
- if (rect == m_renderedRect) |
+ if (m_state == State::ValidNotNull && rect == m_renderedRect) |
return false; |
+ m_state = State::ValidNotNull; |
m_renderedRect = rect; |
return true; |
} |
- const LayoutRect& renderedRect() const { return m_renderedRect; } |
+ const LayoutRect& renderedRect() const |
+ { |
+ DCHECK_EQ(m_state, State::ValidNotNull); |
+ return m_renderedRect; |
+ } |
+ |
+ bool nullifyRenderedRect() { return m_state == State::ValidNull; } |
- bool invalidateRenderedRect() { return setRenderedRect(invalidMarkerRect()); } |
+ void invalidate() { m_state = State::Invalid; } |
+ bool isValid() const { return m_state != State::Invalid; } |
private: |
+ |
explicit RenderedDocumentMarker(const DocumentMarker& marker) |
: DocumentMarker(marker) |
- , m_renderedRect(invalidMarkerRect()) |
- { |
- } |
- |
- static const LayoutRect& invalidMarkerRect() |
+ , m_state(State::Invalid) |
{ |
- static const LayoutRect rect = LayoutRect(-1, -1, -1, -1); |
- return rect; |
} |
LayoutRect m_renderedRect; |
+ State m_state; |
}; |
DEFINE_TYPE_CASTS(RenderedDocumentMarker, DocumentMarker, marker, true, true); |