| Index: third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.h
|
| diff --git a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.h b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.h
|
| index 08b2e64320847b16760d3d3654e6b97e170044b2..cd94da5746934eaba4e3d861e6a0aba4101c6ce3 100644
|
| --- a/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.h
|
| +++ b/third_party/WebKit/Source/core/editing/markers/DocumentMarkerController.h
|
| @@ -39,27 +39,28 @@
|
|
|
| namespace blink {
|
|
|
| +class CompositionMarkerList;
|
| +class GrammarMarkerList;
|
| class Node;
|
| -class RenderedDocumentMarker;
|
| -class Text;
|
| +class RenderedTextMatchMarker;
|
| +class SpellingMarkerList;
|
| +class TextMatchMarkerList;
|
|
|
| class MarkerRemoverPredicate final {
|
| public:
|
| explicit MarkerRemoverPredicate(const Vector<String>& words);
|
| - bool operator()(const DocumentMarker&, const Text&) const;
|
| -
|
| - private:
|
| Vector<String> m_words;
|
| };
|
|
|
| class CORE_EXPORT DocumentMarkerController final
|
| - : public GarbageCollected<DocumentMarkerController> {
|
| + : public GarbageCollectedFinalized<DocumentMarkerController> {
|
| WTF_MAKE_NONCOPYABLE(DocumentMarkerController);
|
|
|
| public:
|
| explicit DocumentMarkerController(const Document&);
|
|
|
| void clear();
|
| + void addMarker(Node*, DocumentMarker*);
|
| void addMarker(const Position& start,
|
| const Position& end,
|
| DocumentMarker::MarkerType,
|
| @@ -109,9 +110,9 @@ class CORE_EXPORT DocumentMarkerController final
|
| // Returns true if markers within a range are found.
|
| bool setMarkersActive(const EphemeralRange&, bool);
|
| // Returns true if markers within a range defined by a node, |startOffset| and
|
| - // |endOffset| are found.
|
| + // |endOffset| are found
|
| bool setMarkersActive(Node*, unsigned startOffset, unsigned endOffset, bool);
|
| - bool hasMarkers(Node* node) const { return m_markers.contains(node); }
|
| + bool hasMarkers(Node*) const;
|
|
|
| DocumentMarkerVector markersFor(
|
| Node*,
|
| @@ -119,10 +120,11 @@ class CORE_EXPORT DocumentMarkerController final
|
| DocumentMarkerVector markersInRange(const EphemeralRange&,
|
| DocumentMarker::MarkerTypes);
|
| DocumentMarkerVector markers();
|
| - Vector<IntRect> renderedRectsForMarkers(DocumentMarker::MarkerType);
|
| - void updateMarkerRenderedRectIfNeeded(const Node&, RenderedDocumentMarker&);
|
| + Vector<IntRect> renderedRectsForTextMatchMarkers();
|
| + void updateTextMatchMarkerRenderedRectIfNeeded(const Node&,
|
| + RenderedTextMatchMarker&);
|
| void invalidateRectsForAllMarkers();
|
| - void invalidateRectsForMarkersInNode(const Node&);
|
| + void invalidateRectsForMarkersInNode(Node&);
|
|
|
| DECLARE_TRACE();
|
|
|
| @@ -131,23 +133,18 @@ class CORE_EXPORT DocumentMarkerController final
|
| #endif
|
|
|
| private:
|
| - void addMarker(Node*, const DocumentMarker&);
|
| -
|
| - using MarkerList = HeapVector<Member<RenderedDocumentMarker>>;
|
| - using MarkerLists =
|
| - HeapVector<Member<MarkerList>, DocumentMarker::MarkerTypeIndexesCount>;
|
| - using MarkerMap = HeapHashMap<WeakMember<const Node>, Member<MarkerLists>>;
|
| - void mergeOverlapping(MarkerList*, RenderedDocumentMarker*);
|
| - bool possiblyHasMarkers(DocumentMarker::MarkerTypes);
|
| - void removeMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes);
|
| + template <typename MarkerListType>
|
| + using MarkerMap = HeapHashMap<WeakMember<Node>, Member<MarkerListType>>;
|
| +
|
| + MarkerMap<SpellingMarkerList> m_spelling;
|
| + MarkerMap<GrammarMarkerList> m_grammar;
|
| + MarkerMap<TextMatchMarkerList> m_textMatches;
|
| + MarkerMap<CompositionMarkerList> m_compositions;
|
| +
|
| void removeMarkers(TextIterator&,
|
| DocumentMarker::MarkerTypes,
|
| RemovePartiallyOverlappingMarkerOrNot);
|
|
|
| - 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;
|
| const Member<const Document> m_document;
|
| };
|
|
|
|
|