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

Side by Side Diff: third_party/WebKit/Source/core/editing/spellcheck/IdleSpellCheckCallback.cpp

Issue 2740603003: Hide SpellCheckRequest from other classes in editing/spellcheck (Closed)
Patch Set: 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/editing/spellcheck/IdleSpellCheckCallback.h" 5 #include "core/editing/spellcheck/IdleSpellCheckCallback.h"
6 6
7 #include "core/dom/IdleRequestOptions.h" 7 #include "core/dom/IdleRequestOptions.h"
8 #include "core/dom/TaskRunnerHelper.h" 8 #include "core/dom/TaskRunnerHelper.h"
9 #include "core/editing/EditingUtilities.h" 9 #include "core/editing/EditingUtilities.h"
10 #include "core/editing/Editor.h" 10 #include "core/editing/Editor.h"
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 166
167 // TODO(xiaochengh): Deduplicate with SpellChecker::chunkAndMarkAllMisspellings. 167 // TODO(xiaochengh): Deduplicate with SpellChecker::chunkAndMarkAllMisspellings.
168 void IdleSpellCheckCallback::chunkAndRequestFullCheckingFor( 168 void IdleSpellCheckCallback::chunkAndRequestFullCheckingFor(
169 const Element& editable) { 169 const Element& editable) {
170 const EphemeralRange& fullRange = EphemeralRange::rangeOfContents(editable); 170 const EphemeralRange& fullRange = EphemeralRange::rangeOfContents(editable);
171 const int fullLength = TextIterator::rangeLength(fullRange.startPosition(), 171 const int fullLength = TextIterator::rangeLength(fullRange.startPosition(),
172 fullRange.endPosition()); 172 fullRange.endPosition());
173 173
174 // Check the full content if it is short. 174 // Check the full content if it is short.
175 if (fullLength <= kColdModeChunkSize) { 175 if (fullLength <= kColdModeChunkSize) {
176 SpellCheckRequest* fullRequest = SpellCheckRequest::create(fullRange); 176 spellCheckRequester().requestCheckingFor(fullRange);
177 spellCheckRequester().requestCheckingFor(fullRequest);
178 return; 177 return;
179 } 178 }
180 179
181 // TODO(xiaochengh): Figure out if this is going to cause performance issues. 180 // TODO(xiaochengh): Figure out if this is going to cause performance issues.
182 // In that case, we need finer-grained control over request generation. 181 // In that case, we need finer-grained control over request generation.
183 Position chunkStart = fullRange.startPosition(); 182 Position chunkStart = fullRange.startPosition();
184 const int chunkLimit = fullLength / kColdModeChunkSize + 1; 183 const int chunkLimit = fullLength / kColdModeChunkSize + 1;
185 for (int chunkIndex = 0; chunkIndex <= chunkLimit; ++chunkIndex) { 184 for (int chunkIndex = 0; chunkIndex <= chunkLimit; ++chunkIndex) {
186 const Position& chunkEnd = 185 const Position& chunkEnd =
187 calculateCharacterSubrange( 186 calculateCharacterSubrange(
188 EphemeralRange(chunkStart, fullRange.endPosition()), 0, 187 EphemeralRange(chunkStart, fullRange.endPosition()), 0,
189 kColdModeChunkSize) 188 kColdModeChunkSize)
190 .endPosition(); 189 .endPosition();
191 if (chunkEnd <= chunkStart) 190 if (chunkEnd <= chunkStart)
192 break; 191 break;
193 const EphemeralRange chunkRange(chunkStart, chunkEnd); 192 const EphemeralRange chunkRange(chunkStart, chunkEnd);
194 const EphemeralRange& checkRange = 193 const EphemeralRange& checkRange =
195 chunkIndex >= 1 ? expandEndToSentenceBoundary(chunkRange) 194 chunkIndex >= 1 ? expandEndToSentenceBoundary(chunkRange)
196 : expandRangeToSentenceBoundary(chunkRange); 195 : expandRangeToSentenceBoundary(chunkRange);
197 196
198 SpellCheckRequest* chunkRequest = 197 spellCheckRequester().requestCheckingFor(checkRange, chunkIndex);
199 SpellCheckRequest::create(checkRange, chunkIndex);
200 spellCheckRequester().requestCheckingFor(chunkRequest);
201 198
202 chunkStart = checkRange.endPosition(); 199 chunkStart = checkRange.endPosition();
203 } 200 }
204 } 201 }
205 202
206 void IdleSpellCheckCallback::coldModeInvocation(IdleDeadline* deadline) { 203 void IdleSpellCheckCallback::coldModeInvocation(IdleDeadline* deadline) {
207 TRACE_EVENT0("blink", "IdleSpellCheckCallback::coldModeInvocation"); 204 TRACE_EVENT0("blink", "IdleSpellCheckCallback::coldModeInvocation");
208 205
209 Node* body = frame().document()->body(); 206 Node* body = frame().document()->body();
210 if (!body) { 207 if (!body) {
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 } 305 }
309 } 306 }
310 307
311 void IdleSpellCheckCallback::skipColdModeTimerForTesting() { 308 void IdleSpellCheckCallback::skipColdModeTimerForTesting() {
312 DCHECK(m_coldModeTimer.isActive()); 309 DCHECK(m_coldModeTimer.isActive());
313 m_coldModeTimer.stop(); 310 m_coldModeTimer.stop();
314 coldModeTimerFired(&m_coldModeTimer); 311 coldModeTimerFired(&m_coldModeTimer);
315 } 312 }
316 313
317 } // namespace blink 314 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698