Chromium Code Reviews| Index: Source/core/editing/Editor.cpp |
| diff --git a/Source/core/editing/Editor.cpp b/Source/core/editing/Editor.cpp |
| index b487c8d243b83d1b95f90431143bcee82be08428..2dfe15c1380edf42118974096822f6b1d136930a 100644 |
| --- a/Source/core/editing/Editor.cpp |
| +++ b/Source/core/editing/Editor.cpp |
| @@ -419,9 +419,9 @@ void Editor::replaceSelectionWithFragment(PassRefPtr<DocumentFragment> fragment, |
| Node* nodeToCheck = m_frame->selection()->rootEditableElement(); |
| if (!nodeToCheck) |
| return; |
| - |
| RefPtr<Range> rangeToCheck = Range::create(m_frame->document(), firstPositionInNode(nodeToCheck), lastPositionInNode(nodeToCheck)); |
| - m_spellCheckRequester->requestCheckingFor(SpellCheckRequest::create(resolveTextCheckingTypeMask(TextCheckingTypeSpelling | TextCheckingTypeGrammar), TextCheckingProcessBatch, rangeToCheck, rangeToCheck)); |
| + TextCheckingParagraph textToCheck(rangeToCheck, rangeToCheck); |
| + chunkAndMarkAllMisspellingsAndBadGrammar(resolveTextCheckingTypeMask(TextCheckingTypeSpelling | TextCheckingTypeGrammar), textToCheck, true); |
|
tony
2013/08/29 22:44:45
Please use "bool asynchronous = true" and pass asy
|
| } |
| void Editor::replaceSelectionWithText(const String& text, bool selectReplacement, bool smartReplace) |
| @@ -1509,6 +1509,13 @@ void Editor::markAllMisspellingsAndBadGrammarInRanges(TextCheckingTypeMask textC |
| Range* rangeToCheck = shouldMarkGrammar ? grammarRange : spellingRange; |
| TextCheckingParagraph fullParagraphToCheck(rangeToCheck); |
| + |
| + bool asynchronous = m_frame && m_frame->settings() && m_frame->settings()->asynchronousSpellCheckingEnabled(); |
| + chunkAndMarkAllMisspellingsAndBadGrammar(textCheckingOptions, fullParagraphToCheck, asynchronous); |
| +} |
| + |
| +void Editor::chunkAndMarkAllMisspellingsAndBadGrammar(TextCheckingTypeMask textCheckingOptions, const TextCheckingParagraph& fullParagraphToCheck, bool asynchronous) |
| +{ |
| if (fullParagraphToCheck.isRangeEmpty() || fullParagraphToCheck.isEmpty()) |
| return; |
| @@ -1518,13 +1525,11 @@ void Editor::markAllMisspellingsAndBadGrammarInRanges(TextCheckingTypeMask textC |
| int end = fullParagraphToCheck.checkingEnd(); |
| start = std::min(start, end); |
| end = std::max(start, end); |
| - bool asynchronous = m_frame && m_frame->settings() && m_frame->settings()->asynchronousSpellCheckingEnabled(); |
| const int kNumChunksToCheck = asynchronous ? (end - start + kChunkSize - 1) / (kChunkSize) : 1; |
| int currentChunkStart = start; |
| - RefPtr<Range> checkRange = asynchronous ? fullParagraphToCheck.paragraphRange() : rangeToCheck; |
| - RefPtr<Range> paragraphRange = fullParagraphToCheck.paragraphRange(); |
| + RefPtr<Range> checkRange = fullParagraphToCheck.checkingRange(); |
| if (kNumChunksToCheck == 1 && asynchronous) { |
| - markAllMisspellingsAndBadGrammarInRanges(textCheckingOptions, checkRange.get(), paragraphRange.get(), asynchronous, 0); |
| + markAllMisspellingsAndBadGrammarInRanges(textCheckingOptions, checkRange.get(), checkRange.get(), asynchronous, 0); |
| return; |
| } |
| @@ -1532,10 +1537,9 @@ void Editor::markAllMisspellingsAndBadGrammarInRanges(TextCheckingTypeMask textC |
| checkRange = fullParagraphToCheck.subrange(currentChunkStart, kChunkSize); |
| setStart(checkRange.get(), startOfSentence(checkRange->startPosition())); |
| setEnd(checkRange.get(), endOfSentence(checkRange->endPosition())); |
| - paragraphRange = checkRange; |
| int checkingLength = 0; |
| - markAllMisspellingsAndBadGrammarInRanges(textCheckingOptions, checkRange.get(), paragraphRange.get(), asynchronous, iter, &checkingLength); |
| + markAllMisspellingsAndBadGrammarInRanges(textCheckingOptions, checkRange.get(), checkRange.get(), asynchronous, iter, &checkingLength); |
| currentChunkStart += checkingLength; |
| } |
| } |