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

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

Issue 2245543003: Removal of grammar-checking-related dead code (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved. 2 * Copyright (C) 2006, 2007, 2008, 2011 Apple Inc. All rights reserved.
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions 6 * modification, are permitted provided that the following conditions
7 * are met: 7 * are met:
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 208 matching lines...) Expand 10 before | Expand all | Expand 10 after
219 if (spellingSearchStart == spellingSearchEnd) 219 if (spellingSearchStart == spellingSearchEnd)
220 return; // nothing to search in 220 return; // nothing to search in
221 221
222 // We go to the end of our first range instead of the start of it, just to b e sure 222 // We go to the end of our first range instead of the start of it, just to b e sure
223 // we don't get foiled by any word boundary problems at the start. It means we might 223 // we don't get foiled by any word boundary problems at the start. It means we might
224 // do a tiny bit more searching. 224 // do a tiny bit more searching.
225 Node* searchEndNodeAfterWrap = spellingSearchEnd.computeContainerNode(); 225 Node* searchEndNodeAfterWrap = spellingSearchEnd.computeContainerNode();
226 int searchEndOffsetAfterWrap = spellingSearchEnd.offsetInContainerNode(); 226 int searchEndOffsetAfterWrap = spellingSearchEnd.offsetInContainerNode();
227 227
228 int misspellingOffset = 0; 228 int misspellingOffset = 0;
229 GrammarDetail grammarDetail;
230 int grammarPhraseOffset = 0;
231 Position grammarSearchStart, grammarSearchEnd;
232 String badGrammarPhrase;
233 String misspelledWord; 229 String misspelledWord;
234 230
235 bool isSpelling = true;
236 int foundOffset = 0;
237 String foundItem;
238 if (unifiedTextCheckerEnabled()) { 231 if (unifiedTextCheckerEnabled()) {
239 grammarSearchStart = spellingSearchStart; 232 misspelledWord = TextCheckingHelper(spellCheckerClient(), spellingSearch Start, spellingSearchEnd).findFirstMisspellingOrBadGrammar(misspellingOffset);
240 grammarSearchEnd = spellingSearchEnd;
241 foundItem = TextCheckingHelper(spellCheckerClient(), spellingSearchStart , spellingSearchEnd).findFirstMisspellingOrBadGrammar(isSpelling, foundOffset, g rammarDetail);
242 if (isSpelling) {
243 misspelledWord = foundItem;
244 misspellingOffset = foundOffset;
245 } else {
246 badGrammarPhrase = foundItem;
247 grammarPhraseOffset = foundOffset;
248 }
249 } else { 233 } else {
250 misspelledWord = TextCheckingHelper(spellCheckerClient(), spellingSearch Start, spellingSearchEnd).findFirstMisspelling(misspellingOffset, false); 234 misspelledWord = TextCheckingHelper(spellCheckerClient(), spellingSearch Start, spellingSearchEnd).findFirstMisspelling(misspellingOffset, false);
251 grammarSearchStart = spellingSearchStart;
252 grammarSearchEnd = spellingSearchEnd;
253 if (!misspelledWord.isEmpty()) {
254 // Stop looking at start of next misspelled word
255 CharacterIterator chars(grammarSearchStart, grammarSearchEnd);
256 chars.advance(misspellingOffset);
257 grammarSearchEnd = chars.startPosition();
258 }
259
260 badGrammarPhrase = TextCheckingHelper(spellCheckerClient(), grammarSearc hStart, grammarSearchEnd).findFirstBadGrammar(grammarDetail, grammarPhraseOffset , false);
261 } 235 }
262 236
263 // If we found neither bad grammar nor a misspelled word, wrap and try again (but don't bother if we started at the beginning of the 237 // If we did not find a misspelled word, wrap and try again (but don't bothe r if we started at the beginning of the
264 // block rather than at a selection). 238 // block rather than at a selection).
265 if (startedWithSelection && !misspelledWord && !badGrammarPhrase) { 239 if (startedWithSelection && !misspelledWord) {
266 spellingSearchStart = Position::editingPositionOf(topNode, 0); 240 spellingSearchStart = Position::editingPositionOf(topNode, 0);
267 // going until the end of the very first chunk we tested is far enough 241 // going until the end of the very first chunk we tested is far enough
268 spellingSearchEnd = Position::editingPositionOf(searchEndNodeAfterWrap, searchEndOffsetAfterWrap); 242 spellingSearchEnd = Position::editingPositionOf(searchEndNodeAfterWrap, searchEndOffsetAfterWrap);
269 243
270 if (unifiedTextCheckerEnabled()) { 244 if (unifiedTextCheckerEnabled()) {
271 grammarSearchStart = spellingSearchStart; 245 misspelledWord = TextCheckingHelper(spellCheckerClient(), spellingSe archStart, spellingSearchEnd).findFirstMisspellingOrBadGrammar(misspellingOffset );
272 grammarSearchEnd = spellingSearchEnd;
273 foundItem = TextCheckingHelper(spellCheckerClient(), spellingSearchS tart, spellingSearchEnd).findFirstMisspellingOrBadGrammar(isSpelling, foundOffse t, grammarDetail);
274 if (isSpelling) {
275 misspelledWord = foundItem;
276 misspellingOffset = foundOffset;
277 } else {
278 badGrammarPhrase = foundItem;
279 grammarPhraseOffset = foundOffset;
280 }
281 } else { 246 } else {
282 misspelledWord = TextCheckingHelper(spellCheckerClient(), spellingSe archStart, spellingSearchEnd).findFirstMisspelling(misspellingOffset, false); 247 misspelledWord = TextCheckingHelper(spellCheckerClient(), spellingSe archStart, spellingSearchEnd).findFirstMisspelling(misspellingOffset, false);
283 grammarSearchStart = spellingSearchStart;
284 grammarSearchEnd = spellingSearchEnd;
285 if (!misspelledWord.isEmpty()) {
286 // Stop looking at start of next misspelled word
287 CharacterIterator chars(grammarSearchStart, grammarSearchEnd);
288 chars.advance(misspellingOffset);
289 grammarSearchEnd = chars.startPosition();
290 }
291
292 badGrammarPhrase = TextCheckingHelper(spellCheckerClient(), grammarS earchStart, grammarSearchEnd).findFirstBadGrammar(grammarDetail, grammarPhraseOf fset, false);
293 } 248 }
294 } 249 }
295 250
296 if (!badGrammarPhrase.isEmpty()) { 251 if (!misspelledWord.isEmpty()) {
297 // We found bad grammar. Since we only searched for bad grammar up to th e first misspelled word, the bad grammar 252 // We found a misspelling. Select the misspelling, update the spelling p anel, and store
298 // takes precedence and we ignore any potential misspelled word. Select the grammar detail, update the spelling
299 // panel, and store a marker so we draw the green squiggle later.
300
301 DCHECK_GT(badGrammarPhrase.length(), 0u);
302 DCHECK_NE(grammarDetail.location, -1);
303 DCHECK_GT(grammarDetail.length, 0);
304
305 // FIXME 4859190: This gets confused with doubled punctuation at the end of a paragraph
306 const EphemeralRange badGrammarRange = calculateCharacterSubrange(Epheme ralRange(grammarSearchStart, grammarSearchEnd), grammarPhraseOffset + grammarDet ail.location, grammarDetail.length);
307 frame().selection().setSelection(VisibleSelection(badGrammarRange));
308 frame().selection().revealSelection();
309 frame().document()->markers().addMarker(badGrammarRange.startPosition(), badGrammarRange.endPosition(), DocumentMarker::Grammar, grammarDetail.userDescr iption);
310 } else if (!misspelledWord.isEmpty()) {
311 // We found a misspelling, but not any earlier bad grammar. Select the m isspelling, update the spelling panel, and store
312 // a marker so we draw the red squiggle later. 253 // a marker so we draw the red squiggle later.
313 254
314 const EphemeralRange misspellingRange = calculateCharacterSubrange(Ephem eralRange(spellingSearchStart, spellingSearchEnd), misspellingOffset, misspelled Word.length()); 255 const EphemeralRange misspellingRange = calculateCharacterSubrange(Ephem eralRange(spellingSearchStart, spellingSearchEnd), misspellingOffset, misspelled Word.length());
315 frame().selection().setSelection(VisibleSelection(misspellingRange)); 256 frame().selection().setSelection(VisibleSelection(misspellingRange));
316 frame().selection().revealSelection(); 257 frame().selection().revealSelection();
317 spellCheckerClient().updateSpellingUIWithMisspelledWord(misspelledWord); 258 spellCheckerClient().updateSpellingUIWithMisspelledWord(misspelledWord);
318 frame().document()->markers().addMarker(misspellingRange.startPosition() , misspellingRange.endPosition(), DocumentMarker::Spelling); 259 frame().document()->markers().addMarker(misspellingRange.startPosition() , misspellingRange.endPosition(), DocumentMarker::Spelling);
319 } 260 }
320 } 261 }
321 262
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
404 if (!editableNode || !hasEditableStyle(*editableNode)) 345 if (!editableNode || !hasEditableStyle(*editableNode))
405 return false; 346 return false;
406 347
407 if (!isSpellCheckingEnabledFor(editableNode)) 348 if (!isSpellCheckingEnabledFor(editableNode))
408 return false; 349 return false;
409 350
410 TextCheckingHelper checker(spellCheckerClient(), range.startPosition(), rang e.endPosition()); 351 TextCheckingHelper checker(spellCheckerClient(), range.startPosition(), rang e.endPosition());
411 if (checkSpelling) 352 if (checkSpelling)
412 return checker.markAllMisspellings(); 353 return checker.markAllMisspellings();
413 354
414 checker.markAllBadGrammar();
415 return false; 355 return false;
416 } 356 }
417 357
418 bool SpellChecker::isSpellCheckingEnabledFor(Node* node) const 358 bool SpellChecker::isSpellCheckingEnabledFor(Node* node) const
419 { 359 {
420 if (!node) 360 if (!node)
421 return false; 361 return false;
422 const Element* focusedElement = node->isElementNode() ? toElement(node) : no de->parentElement(); 362 const Element* focusedElement = node->isElementNode() ? toElement(node) : no de->parentElement();
423 if (!focusedElement) 363 if (!focusedElement)
424 return false; 364 return false;
(...skipping 510 matching lines...) Expand 10 before | Expand all | Expand 10 after
935 visitor->trace(m_frame); 875 visitor->trace(m_frame);
936 visitor->trace(m_spellCheckRequester); 876 visitor->trace(m_spellCheckRequester);
937 } 877 }
938 878
939 void SpellChecker::prepareForLeakDetection() 879 void SpellChecker::prepareForLeakDetection()
940 { 880 {
941 m_spellCheckRequester->prepareForLeakDetection(); 881 m_spellCheckRequester->prepareForLeakDetection();
942 } 882 }
943 883
944 } // namespace blink 884 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698