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); |