OLD | NEW |
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 780 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
791 document->markers().removeMarkers( | 791 document->markers().removeMarkers( |
792 wordRange, DocumentMarker::MisspellingMarkers(), | 792 wordRange, DocumentMarker::MisspellingMarkers(), |
793 DocumentMarkerController::RemovePartiallyOverlappingMarker); | 793 DocumentMarkerController::RemovePartiallyOverlappingMarker); |
794 } | 794 } |
795 | 795 |
796 void SpellChecker::didEndEditingOnTextField(Element* e) { | 796 void SpellChecker::didEndEditingOnTextField(Element* e) { |
797 TRACE_EVENT0("blink", "SpellChecker::didEndEditingOnTextField"); | 797 TRACE_EVENT0("blink", "SpellChecker::didEndEditingOnTextField"); |
798 | 798 |
799 // Remove markers when deactivating a selection in an <input type="text"/>. | 799 // Remove markers when deactivating a selection in an <input type="text"/>. |
800 // Prevent new ones from appearing too. | 800 // Prevent new ones from appearing too. |
801 m_spellCheckRequester->cancelCheck(); | 801 if (!RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled()) |
| 802 m_spellCheckRequester->cancelCheck(); |
802 TextControlElement* textControlElement = toTextControlElement(e); | 803 TextControlElement* textControlElement = toTextControlElement(e); |
803 HTMLElement* innerEditor = textControlElement->innerEditorElement(); | 804 HTMLElement* innerEditor = textControlElement->innerEditorElement(); |
804 DocumentMarker::MarkerTypes markerTypes(DocumentMarker::Spelling); | 805 DocumentMarker::MarkerTypes markerTypes(DocumentMarker::Spelling); |
805 markerTypes.add(DocumentMarker::Grammar); | 806 markerTypes.add(DocumentMarker::Grammar); |
806 for (Node& node : NodeTraversal::inclusiveDescendantsOf(*innerEditor)) | 807 for (Node& node : NodeTraversal::inclusiveDescendantsOf(*innerEditor)) |
807 frame().document()->markers().removeMarkers(&node, markerTypes); | 808 frame().document()->markers().removeMarkers(&node, markerTypes); |
808 } | 809 } |
809 | 810 |
810 void SpellChecker::replaceMisspelledRange(const String& text) { | 811 void SpellChecker::replaceMisspelledRange(const String& text) { |
811 EphemeralRange caretRange = | 812 EphemeralRange caretRange = |
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1028 DocumentMarker::MarkerTypes markerTypes) { | 1029 DocumentMarker::MarkerTypes markerTypes) { |
1029 DCHECK(!frame().document()->needsLayoutTreeUpdate()); | 1030 DCHECK(!frame().document()->needsLayoutTreeUpdate()); |
1030 | 1031 |
1031 const EphemeralRange& range = selection.toNormalizedEphemeralRange(); | 1032 const EphemeralRange& range = selection.toNormalizedEphemeralRange(); |
1032 if (range.isNull()) | 1033 if (range.isNull()) |
1033 return; | 1034 return; |
1034 | 1035 |
1035 frame().document()->markers().removeMarkers(range, markerTypes); | 1036 frame().document()->markers().removeMarkers(range, markerTypes); |
1036 } | 1037 } |
1037 | 1038 |
| 1039 // TODO(xiaochengh): This function is only used by unit tests. We should move it |
| 1040 // to IdleSpellCheckCallback and modify unit tests to cope with idle time spell |
| 1041 // checker. |
1038 void SpellChecker::cancelCheck() { | 1042 void SpellChecker::cancelCheck() { |
1039 m_spellCheckRequester->cancelCheck(); | 1043 m_spellCheckRequester->cancelCheck(); |
1040 } | 1044 } |
1041 | 1045 |
1042 DEFINE_TRACE(SpellChecker) { | 1046 DEFINE_TRACE(SpellChecker) { |
1043 visitor->trace(m_frame); | 1047 visitor->trace(m_frame); |
1044 visitor->trace(m_spellCheckRequester); | 1048 visitor->trace(m_spellCheckRequester); |
1045 } | 1049 } |
1046 | 1050 |
1047 void SpellChecker::prepareForLeakDetection() { | 1051 void SpellChecker::prepareForLeakDetection() { |
1048 m_spellCheckRequester->prepareForLeakDetection(); | 1052 if (!RuntimeEnabledFeatures::idleTimeSpellCheckingEnabled()) |
| 1053 m_spellCheckRequester->prepareForLeakDetection(); |
1049 } | 1054 } |
1050 | 1055 |
1051 Vector<TextCheckingResult> SpellChecker::findMisspellings(const String& text) { | 1056 Vector<TextCheckingResult> SpellChecker::findMisspellings(const String& text) { |
1052 Vector<UChar> characters; | 1057 Vector<UChar> characters; |
1053 text.appendTo(characters); | 1058 text.appendTo(characters); |
1054 unsigned length = text.length(); | 1059 unsigned length = text.length(); |
1055 | 1060 |
1056 TextBreakIterator* iterator = wordBreakIterator(characters.data(), length); | 1061 TextBreakIterator* iterator = wordBreakIterator(characters.data(), length); |
1057 if (!iterator) | 1062 if (!iterator) |
1058 return Vector<TextCheckingResult>(); | 1063 return Vector<TextCheckingResult>(); |
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1162 startOfNextParagraph(createVisiblePosition(paragraphEnd)); | 1167 startOfNextParagraph(createVisiblePosition(paragraphEnd)); |
1163 paragraphStart = newParagraphStart.toParentAnchoredPosition(); | 1168 paragraphStart = newParagraphStart.toParentAnchoredPosition(); |
1164 paragraphEnd = endOfParagraph(newParagraphStart).toParentAnchoredPosition(); | 1169 paragraphEnd = endOfParagraph(newParagraphStart).toParentAnchoredPosition(); |
1165 firstIteration = false; | 1170 firstIteration = false; |
1166 totalLengthProcessed += currentLength; | 1171 totalLengthProcessed += currentLength; |
1167 } | 1172 } |
1168 return std::make_pair(firstFoundItem, firstFoundOffset); | 1173 return std::make_pair(firstFoundItem, firstFoundOffset); |
1169 } | 1174 } |
1170 | 1175 |
1171 } // namespace blink | 1176 } // namespace blink |
OLD | NEW |