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

Side by Side Diff: third_party/WebKit/Source/core/editing/markers/DocumentMarker.h

Issue 2911723002: [DMC #24] Add SpellingMarker and GrammarMarker (subclasses of DocumentMarker) (Closed)
Patch Set: Add IsSpellCheckMarker() tests Created 3 years, 6 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
1 /* 1 /*
2 * This file is part of the DOM implementation for WebCore. 2 * This file is part of the DOM implementation for WebCore.
3 * 3 *
4 * Copyright (C) 2006 Apple Computer, Inc. 4 * Copyright (C) 2006 Apple Computer, Inc.
5 * 5 *
6 * This library is free software; you can redistribute it and/or 6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public 7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either 8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version. 9 * version 2 of the License, or (at your option) any later version.
10 * 10 *
(...skipping 14 matching lines...) Expand all
25 25
26 #include "core/CoreExport.h" 26 #include "core/CoreExport.h"
27 #include "platform/graphics/Color.h" 27 #include "platform/graphics/Color.h"
28 #include "platform/heap/Handle.h" 28 #include "platform/heap/Handle.h"
29 #include "platform/wtf/Optional.h" 29 #include "platform/wtf/Optional.h"
30 #include "platform/wtf/VectorTraits.h" 30 #include "platform/wtf/VectorTraits.h"
31 #include "platform/wtf/text/WTFString.h" 31 #include "platform/wtf/text/WTFString.h"
32 32
33 namespace blink { 33 namespace blink {
34 34
35 class DocumentMarkerDetails;
36
37 // A range of a node within a document that is "marked", such as the range of a 35 // A range of a node within a document that is "marked", such as the range of a
38 // misspelled word. It optionally includes a description that could be displayed 36 // misspelled word. It optionally includes a description that could be displayed
39 // in the user interface. 37 // in the user interface.
40 class CORE_EXPORT DocumentMarker : public GarbageCollected<DocumentMarker> { 38 class CORE_EXPORT DocumentMarker
39 : public GarbageCollectedFinalized<DocumentMarker> {
41 public: 40 public:
42 enum MarkerTypeIndex { 41 enum MarkerTypeIndex {
43 kSpellingMarkerIndex = 0, 42 kSpellingMarkerIndex = 0,
44 kGrammarMarkerIndex, 43 kGrammarMarkerIndex,
45 kTextMatchMarkerIndex, 44 kTextMatchMarkerIndex,
46 kCompositionMarkerIndex, 45 kCompositionMarkerIndex,
47 kMarkerTypeIndexesCount 46 kMarkerTypeIndexesCount
48 }; 47 };
49 48
50 enum MarkerType { 49 enum MarkerType {
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
121 class AllMarkers : public MarkerTypes { 120 class AllMarkers : public MarkerTypes {
122 public: 121 public:
123 AllMarkers() : MarkerTypes((1 << kMarkerTypeIndexesCount) - 1) {} 122 AllMarkers() : MarkerTypes((1 << kMarkerTypeIndexesCount) - 1) {}
124 }; 123 };
125 124
126 class MisspellingMarkers : public MarkerTypes { 125 class MisspellingMarkers : public MarkerTypes {
127 public: 126 public:
128 MisspellingMarkers() : MarkerTypes(kSpelling | kGrammar) {} 127 MisspellingMarkers() : MarkerTypes(kSpelling | kGrammar) {}
129 }; 128 };
130 129
131 DocumentMarker(MarkerType, 130 virtual ~DocumentMarker();
132 unsigned start_offset,
133 unsigned end_offset,
134 const String& description);
135 131
136 MarkerType GetType() const { return type_; } 132 MarkerType GetType() const { return type_; }
137 unsigned StartOffset() const { return start_offset_; } 133 unsigned StartOffset() const { return start_offset_; }
138 unsigned EndOffset() const { return end_offset_; } 134 unsigned EndOffset() const { return end_offset_; }
139 135
140 const String& Description() const;
141 DocumentMarkerDetails* Details() const;
142
143 void ClearDetails() { details_.Clear(); }
144
145 struct MarkerOffsets { 136 struct MarkerOffsets {
146 unsigned start_offset; 137 unsigned start_offset;
147 unsigned end_offset; 138 unsigned end_offset;
148 }; 139 };
149 140
150 Optional<MarkerOffsets> ComputeOffsetsAfterShift(unsigned offset, 141 Optional<MarkerOffsets> ComputeOffsetsAfterShift(unsigned offset,
151 unsigned old_length, 142 unsigned old_length,
152 unsigned new_length) const; 143 unsigned new_length) const;
153 144
154 // Offset modifications are done by DocumentMarkerController. 145 // Offset modifications are done by DocumentMarkerController.
155 // Other classes should not call following setters. 146 // Other classes should not call following setters.
156 void SetStartOffset(unsigned offset) { start_offset_ = offset; } 147 void SetStartOffset(unsigned offset) { start_offset_ = offset; }
157 void SetEndOffset(unsigned offset) { end_offset_ = offset; } 148 void SetEndOffset(unsigned offset) { end_offset_ = offset; }
158 void ShiftOffsets(int delta); 149 void ShiftOffsets(int delta);
159 150
160 DECLARE_TRACE(); 151 DEFINE_INLINE_VIRTUAL_TRACE() {}
161 152
162 protected: 153 protected:
163 DocumentMarker(MarkerType, unsigned start_offset, unsigned end_offset); 154 DocumentMarker(MarkerType, unsigned start_offset, unsigned end_offset);
164 155
165 private: 156 private:
166 const MarkerType type_; 157 const MarkerType type_;
167 unsigned start_offset_; 158 unsigned start_offset_;
168 unsigned end_offset_; 159 unsigned end_offset_;
169 Member<DocumentMarkerDetails> details_;
170 160
171 DISALLOW_COPY_AND_ASSIGN(DocumentMarker); 161 DISALLOW_COPY_AND_ASSIGN(DocumentMarker);
172 }; 162 };
173 163
174 using DocumentMarkerVector = HeapVector<Member<DocumentMarker>>; 164 using DocumentMarkerVector = HeapVector<Member<DocumentMarker>>;
175 165
176 inline DocumentMarkerDetails* DocumentMarker::Details() const {
177 return details_.Get();
178 }
179
180 class DocumentMarkerDetails
181 : public GarbageCollectedFinalized<DocumentMarkerDetails> {
182 public:
183 DocumentMarkerDetails() {}
184 virtual ~DocumentMarkerDetails();
185 virtual bool IsDescription() const { return false; }
186
187 DEFINE_INLINE_VIRTUAL_TRACE() {}
188 };
189
190 } // namespace blink 166 } // namespace blink
191 167
192 #endif // DocumentMarker_h 168 #endif // DocumentMarker_h
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/editing/BUILD.gn ('k') | third_party/WebKit/Source/core/editing/markers/DocumentMarker.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698