summaryrefslogtreecommitdiff
path: root/Source/WebCore/dom/DocumentMarkerController.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/dom/DocumentMarkerController.h')
-rw-r--r--Source/WebCore/dom/DocumentMarkerController.h41
1 files changed, 23 insertions, 18 deletions
diff --git a/Source/WebCore/dom/DocumentMarkerController.h b/Source/WebCore/dom/DocumentMarkerController.h
index 76946478b..2c2cd377a 100644
--- a/Source/WebCore/dom/DocumentMarkerController.h
+++ b/Source/WebCore/dom/DocumentMarkerController.h
@@ -24,16 +24,17 @@
*
*/
-#ifndef DocumentMarkerController_h
-#define DocumentMarkerController_h
+#pragma once
#include "DocumentMarker.h"
#include "IntRect.h"
+#include <memory>
#include <wtf/HashMap.h>
#include <wtf/Vector.h>
namespace WebCore {
+class Document;
class LayoutPoint;
class LayoutRect;
class Node;
@@ -44,17 +45,17 @@ class DocumentMarkerController {
WTF_MAKE_NONCOPYABLE(DocumentMarkerController); WTF_MAKE_FAST_ALLOCATED;
public:
- DocumentMarkerController();
+ DocumentMarkerController(Document&);
~DocumentMarkerController();
void detach();
void addMarker(Range*, DocumentMarker::MarkerType);
void addMarker(Range*, DocumentMarker::MarkerType, const String& description);
void addMarkerToNode(Node*, unsigned startOffset, unsigned length, DocumentMarker::MarkerType);
- void addMarkerToNode(Node*, unsigned startOffset, unsigned length, DocumentMarker::MarkerType, PassRefPtr<DocumentMarkerDetails>);
- void addTextMatchMarker(const Range*, bool activeMatch);
+ void addMarkerToNode(Node*, unsigned startOffset, unsigned length, DocumentMarker::MarkerType, DocumentMarker::Data&&);
+ WEBCORE_EXPORT void addTextMatchMarker(const Range*, bool activeMatch);
#if PLATFORM(IOS)
- void addMarker(Range*, DocumentMarker::MarkerType, String description, const Vector<String>& interpretations, const RetainPtr<id>& metadata);
+ void addMarker(Range*, DocumentMarker::MarkerType, const String& description, const Vector<String>& interpretations, const RetainPtr<id>& metadata);
void addDictationPhraseWithAlternativesMarker(Range*, const Vector<String>& interpretations);
void addDictationResultMarker(Range*, const RetainPtr<id>& metadata);
#endif
@@ -74,21 +75,26 @@ public:
void removeMarkers(Range*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers(), RemovePartiallyOverlappingMarkerOrNot = DoNotRemovePartiallyOverlappingMarker);
void removeMarkers(Node*, unsigned startOffset, int length, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers(), RemovePartiallyOverlappingMarkerOrNot = DoNotRemovePartiallyOverlappingMarker);
- void removeMarkers(DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers());
+ WEBCORE_EXPORT void removeMarkers(DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers());
void removeMarkers(Node*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers());
void repaintMarkers(DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers());
- void invalidateRenderedRectsForMarkersInRect(const LayoutRect&);
void shiftMarkers(Node*, unsigned startOffset, int delta);
void setMarkersActive(Range*, bool);
void setMarkersActive(Node*, unsigned startOffset, unsigned endOffset, bool);
- DocumentMarker* markerContainingPoint(const LayoutPoint&, DocumentMarker::MarkerType);
- Vector<DocumentMarker*> markersFor(Node*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers());
- Vector<DocumentMarker*> markersInRange(Range*, DocumentMarker::MarkerTypes);
- Vector<IntRect> renderedRectsForMarkers(DocumentMarker::MarkerType);
+ WEBCORE_EXPORT Vector<RenderedDocumentMarker*> markersFor(Node*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers());
+ WEBCORE_EXPORT Vector<RenderedDocumentMarker*> markersInRange(Range*, DocumentMarker::MarkerTypes);
void clearDescriptionOnMarkersIntersectingRange(Range*, DocumentMarker::MarkerTypes);
-#ifndef NDEBUG
+ WEBCORE_EXPORT void updateRectsForInvalidatedMarkersOfType(DocumentMarker::MarkerType);
+
+ void invalidateRectsForAllMarkers();
+ void invalidateRectsForMarkersInNode(Node&);
+
+ DocumentMarker* markerContainingPoint(const LayoutPoint&, DocumentMarker::MarkerType);
+ WEBCORE_EXPORT Vector<FloatRect> renderedRectsForMarkers(DocumentMarker::MarkerType);
+
+#if ENABLE(TREE_DEBUGGING)
void showMarkers() const;
#endif
@@ -96,19 +102,18 @@ private:
void addMarker(Node*, const DocumentMarker&);
typedef Vector<RenderedDocumentMarker> MarkerList;
- typedef HashMap<RefPtr<Node>, OwnPtr<MarkerList>> MarkerMap;
+ typedef HashMap<RefPtr<Node>, std::unique_ptr<MarkerList>> MarkerMap;
bool possiblyHasMarkers(DocumentMarker::MarkerTypes);
void removeMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes);
MarkerMap m_markers;
// Provide a quick way to determine whether a particular marker type is absent without going through the map.
- DocumentMarker::MarkerTypes m_possiblyExistingMarkerTypes;
+ DocumentMarker::MarkerTypes m_possiblyExistingMarkerTypes { 0 };
+ Document& m_document;
};
} // namespace WebCore
-#ifndef NDEBUG
+#if ENABLE(TREE_DEBUGGING)
void showDocumentMarkers(const WebCore::DocumentMarkerController*);
#endif
-
-#endif // DocumentMarkerController_h