Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(57)

Side by Side Diff: third_party/WebKit/Source/core/editing/markers/DocumentMarkerList.cpp

Issue 2773883003: Add CompositionMarkerList in preparation for DocumentMarkerController refactor (Closed)
Patch Set: Fix code that doesn't compile...what am I doing... Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "core/editing/markers/DocumentMarkerList.h"
6
7 #include "core/editing/markers/DocumentMarkerController.h"
8
9 namespace blink {
10
11 DocumentMarkerList::DocumentMarkerList(
12 DocumentMarkerController* documentMarkerController)
13 : m_documentMarkerController(documentMarkerController) {}
14
15 bool DocumentMarkerList::isEditingMarkerList() const {
16 return false;
17 }
18
19 bool DocumentMarkerList::isSpellCheckMarkerList() const {
20 return false;
21 }
22
23 size_t DocumentMarkerList::size() const {
24 return m_markers.size();
25 }
26
27 bool DocumentMarkerList::empty() const {
28 return m_markers.isEmpty();
29 }
30
31 DocumentMarker* DocumentMarkerList::at(size_t index) {
32 return m_markers[index].get();
33 }
34
35 DocumentMarkerList::iterator DocumentMarkerList::begin() {
36 return m_markers.begin();
37 }
38
39 DocumentMarkerList::iterator DocumentMarkerList::end() {
40 return m_markers.end();
41 }
42
43 DocumentMarkerList::const_iterator DocumentMarkerList::begin() const {
44 return m_markers.begin();
45 }
46
47 DocumentMarkerList::const_iterator DocumentMarkerList::end() const {
48 return m_markers.end();
49 }
50
51 void DocumentMarkerList::appendMarkersToInputList(
52 DocumentMarkerVector* list) const {
53 for (Member<DocumentMarker> marker : m_markers) {
54 list->push_back(marker);
55 }
56 }
57
58 bool DocumentMarkerList::copyMarkers(unsigned startOffset,
59 int length,
60 Node* dstNode,
61 int delta) const {
62 bool docDirty = false;
63 unsigned endOffset = startOffset + length - 1;
64
65 for (Member<DocumentMarker> marker : m_markers) {
66 // pin the marker to the specified range and apply the shift delta
67 if (marker->endOffset() >= startOffset &&
68 marker->startOffset() <= endOffset) {
69 docDirty = true;
70 if (marker->startOffset() < startOffset)
71 marker->setStartOffset(startOffset);
72 if (marker->endOffset() > endOffset)
73 marker->setEndOffset(endOffset);
74 marker->shiftOffsets(delta);
75
76 m_documentMarkerController->addMarker(dstNode, *marker);
77 }
78 }
79
80 return docDirty;
81 }
82
83 HeapVector<Member<DocumentMarker>>::iterator
84 DocumentMarkerList::getPosOfFirstMarkerNotEndingBefore(size_t startOffset) {
85 return std::upper_bound(m_markers.begin(), m_markers.end(), startOffset,
86 DocumentMarkerList::endsBefore);
87 }
88
89 bool DocumentMarkerList::endsBefore(size_t startOffset,
90 const Member<DocumentMarker>& rhv) {
91 return startOffset < rhv->endOffset();
92 }
93
94 DEFINE_TRACE(DocumentMarkerList) {
95 visitor->trace(m_documentMarkerController);
96 visitor->trace(m_markers);
97 }
98
99 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698