| Index: third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp
|
| diff --git a/third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp b/third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp
|
| index 407cea58e7966b20e26a59fc7f5d5cb9d6c3fd73..4af7115c45741184e3e8280495ed578377055952 100644
|
| --- a/third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp
|
| +++ b/third_party/WebKit/Source/core/editing/spellcheck/TextCheckingHelper.cpp
|
| @@ -232,70 +232,8 @@ TextCheckingHelper::~TextCheckingHelper()
|
| {
|
| }
|
|
|
| -String TextCheckingHelper::findFirstMisspelling(int& firstMisspellingOffset, bool markAll)
|
| -{
|
| - // TODO(dglazkov): The use of updateStyleAndLayoutIgnorePendingStylesheets needs to be audited.
|
| - // see http://crbug.com/590369 for more details.
|
| - m_start.document()->updateStyleAndLayoutIgnorePendingStylesheets();
|
| -
|
| - WordAwareIterator it(m_start, m_end);
|
| - firstMisspellingOffset = 0;
|
| -
|
| - String firstMisspelling;
|
| - int currentChunkOffset = 0;
|
| -
|
| - while (!it.atEnd()) {
|
| - int length = it.length();
|
| -
|
| - // Skip some work for one-space-char hunks
|
| - if (!(length == 1 && it.characterAt(0) == ' ')) {
|
| -
|
| - int misspellingLocation = -1;
|
| - int misspellingLength = 0;
|
| - m_client->textChecker().checkSpellingOfString(it.substring(0, length), &misspellingLocation, &misspellingLength);
|
| -
|
| - // 5490627 shows that there was some code path here where the String constructor below crashes.
|
| - // We don't know exactly what combination of bad input caused this, so we're making this much
|
| - // more robust against bad input on release builds.
|
| - DCHECK_GE(misspellingLength, 0);
|
| - DCHECK_GE(misspellingLocation, -1);
|
| - DCHECK(!misspellingLength || misspellingLocation >= 0);
|
| - DCHECK_LT(misspellingLocation, length);
|
| - DCHECK_LE(misspellingLength, length);
|
| - DCHECK_LE(misspellingLocation + misspellingLength, length);
|
| -
|
| - if (misspellingLocation >= 0 && misspellingLength > 0 && misspellingLocation < length && misspellingLength <= length && misspellingLocation + misspellingLength <= length) {
|
| -
|
| - // Compute range of misspelled word
|
| - const EphemeralRange misspellingRange = calculateCharacterSubrange(EphemeralRange(m_start, m_end), currentChunkOffset + misspellingLocation, misspellingLength);
|
| -
|
| - // Remember first-encountered misspelling and its offset.
|
| - if (!firstMisspelling) {
|
| - firstMisspellingOffset = currentChunkOffset + misspellingLocation;
|
| - firstMisspelling = it.substring(misspellingLocation, misspellingLength);
|
| - }
|
| -
|
| - // Store marker for misspelled word.
|
| - misspellingRange.document().markers().addMarker(misspellingRange.startPosition(), misspellingRange.endPosition(), DocumentMarker::Spelling);
|
| -
|
| - // Bail out if we're marking only the first misspelling, and not all instances.
|
| - if (!markAll)
|
| - break;
|
| - }
|
| - }
|
| -
|
| - currentChunkOffset += length;
|
| - it.advance();
|
| - }
|
| -
|
| - return firstMisspelling;
|
| -}
|
| -
|
| String TextCheckingHelper::findFirstMisspellingOrBadGrammar(int& outFirstFoundOffset)
|
| {
|
| - if (!unifiedTextCheckerEnabled())
|
| - return "";
|
| -
|
| String firstFoundItem;
|
| String misspelledWord;
|
|
|
| @@ -367,31 +305,4 @@ String TextCheckingHelper::findFirstMisspellingOrBadGrammar(int& outFirstFoundOf
|
| return firstFoundItem;
|
| }
|
|
|
| -bool TextCheckingHelper::markAllMisspellings()
|
| -{
|
| - // Use the "markAll" feature of findFirstMisspelling. Ignore the return value and the "out parameter";
|
| - // all we need to do is mark every instance.
|
| - int ignoredOffset;
|
| - return findFirstMisspelling(ignoredOffset, true).isEmpty();
|
| -}
|
| -
|
| -bool TextCheckingHelper::unifiedTextCheckerEnabled() const
|
| -{
|
| - DCHECK(m_start.isNotNull());
|
| - Document& doc = m_start.computeContainerNode()->document();
|
| - return blink::unifiedTextCheckerEnabled(doc.frame());
|
| -}
|
| -
|
| -bool unifiedTextCheckerEnabled(const LocalFrame* frame)
|
| -{
|
| - if (!frame)
|
| - return false;
|
| -
|
| - const Settings* settings = frame->settings();
|
| - if (!settings)
|
| - return false;
|
| -
|
| - return settings->unifiedTextCheckerEnabled();
|
| -}
|
| -
|
| } // namespace blink
|
|
|