Chromium Code Reviews| Index: Source/core/dom/DocumentMarkerController.h |
| diff --git a/Source/core/dom/DocumentMarkerController.h b/Source/core/dom/DocumentMarkerController.h |
| index c7f0e456b21235def99ddf076e5002f96baea5f6..15980845f7ff9627d908a8fe9017da1c9401f101 100644 |
| --- a/Source/core/dom/DocumentMarkerController.h |
| +++ b/Source/core/dom/DocumentMarkerController.h |
| @@ -28,6 +28,7 @@ |
| #define DocumentMarkerController_h |
| #include "core/dom/DocumentMarker.h" |
| +#include "core/dom/Range.h" |
| #include "platform/geometry/IntRect.h" |
| #include "platform/heap/Handle.h" |
| #include "wtf/HashMap.h" |
| @@ -35,10 +36,32 @@ |
| namespace blink { |
| +class MarkerRemoverPredicate { |
| +public: |
| + MarkerRemoverPredicate(Document& document, const Vector<String>& words) |
| + : m_document(document), m_words(words) |
| + { |
| + } |
| + |
| + bool operator()(const DocumentMarker& documentMarker, |
| + const Node* node) const { |
| + |
|
yosin_UTC9
2014/08/11 01:01:59
nit: Please remove an extra blank line.
Klemen Forstnerič
2014/08/11 16:24:49
Done.
|
| + RefPtr<Range> markerRange = Range::create(m_document, |
|
yosin_UTC9
2014/08/11 01:01:59
Please move implementation of this function to CPP
Klemen Forstnerič
2014/08/11 16:24:49
Done.
|
| + const_cast<Node*>(node), documentMarker.startOffset(), |
| + const_cast<Node*>(node), documentMarker.endOffset()); |
| + |
| + return m_words.contains(markerRange->text()) |
| + ? true : false; |
|
yosin_UTC9
2014/08/11 01:01:59
nit: We can use implicit |bool| casting, no need t
Klemen Forstnerič
2014/08/11 16:24:49
Done.
|
| + } |
| + |
| +private: |
| + Document& m_document; |
| + Vector<String> m_words; |
|
yosin_UTC9
2014/08/11 01:01:59
Let's use WTF::HashSet<String> rather than WTF::Ve
Klemen Forstnerič
2014/08/11 16:24:49
m_words is likely to be very small, so even though
|
| +}; |
| + |
| class LayoutPoint; |
| class LayoutRect; |
| class Node; |
| -class Range; |
| class RenderedDocumentMarker; |
| class DocumentMarkerController FINAL : public NoBaseWillBeGarbageCollected<DocumentMarkerController> { |
| @@ -67,6 +90,7 @@ public: |
| void removeMarkers(DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); |
| void removeMarkers(Node*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); |
| + void removeMarkers(const MarkerRemoverPredicate& shouldRemoveMarker); |
| void repaintMarkers(DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); |
| void invalidateRenderedRectsForMarkersInRect(const LayoutRect&); |
| void shiftMarkers(Node*, unsigned startOffset, int delta); |
| @@ -91,6 +115,7 @@ private: |
| typedef WillBeHeapVector<OwnPtrWillBeMember<RenderedDocumentMarker> > MarkerList; |
| typedef WillBeHeapVector<OwnPtrWillBeMember<MarkerList>, DocumentMarker::MarkerTypeIndexesCount> MarkerLists; |
| typedef WillBeHeapHashMap<RawPtrWillBeWeakMember<const Node>, OwnPtrWillBeMember<MarkerLists> > MarkerMap; |
| + |
|
yosin_UTC9
2014/08/11 01:01:59
Accidental insertion of a blank line?
Klemen Forstnerič
2014/08/11 16:24:49
Whoops. Removed it.
|
| void mergeOverlapping(MarkerList*, DocumentMarker&); |
| bool possiblyHasMarkers(DocumentMarker::MarkerTypes); |
| void removeMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes); |