| Index: components/spellcheck/renderer/spellcheck.cc
|
| diff --git a/components/spellcheck/renderer/spellcheck.cc b/components/spellcheck/renderer/spellcheck.cc
|
| index 4ef53a067a6753dd4e5f26b6546e2be2b1e597dd..c7fb32695c1a37adc0269435460ff7f6c1d856ee 100644
|
| --- a/components/spellcheck/renderer/spellcheck.cc
|
| +++ b/components/spellcheck/renderer/spellcheck.cc
|
| @@ -473,7 +473,8 @@ void SpellCheck::CreateTextCheckingResults(
|
|
|
| const base::string16& misspelled_word =
|
| line_text.substr(spellcheck_result.location, spellcheck_result.length);
|
| - base::string16 replacement = spellcheck_result.replacement;
|
| + const std::vector<base::string16>& replacements =
|
| + spellcheck_result.replacements;
|
| SpellCheckResult::Decoration decoration = spellcheck_result.decoration;
|
|
|
| // Ignore words in custom dictionary.
|
| @@ -482,11 +483,22 @@ void SpellCheck::CreateTextCheckingResults(
|
| continue;
|
| }
|
|
|
| - // Use the same types of appostrophes as in the mispelled word.
|
| - PreserveOriginalApostropheTypes(misspelled_word, &replacement);
|
| + std::vector<WebString> replacements_adjusted;
|
| + for (base::string16 replacement : replacements) {
|
| + // Use the same types of appostrophes as in the mispelled word.
|
| + PreserveOriginalApostropheTypes(misspelled_word, &replacement);
|
|
|
| - // Ignore misspellings due the typographical apostrophe.
|
| - if (misspelled_word == replacement)
|
| + // If any of the replacements is the same as the misspelled word except
|
| + // for apostrophe type (straight vs. typographical), ignore this
|
| + // misspelling since the spellchecker apparently thinks the word is
|
| + // correctly spelled except that it doesn't like the apostrophe.
|
| + if (replacement == misspelled_word)
|
| + continue;
|
| +
|
| + replacements_adjusted.push_back(WebString::FromUTF16(replacement));
|
| + }
|
| +
|
| + if (replacements_adjusted.empty())
|
| continue;
|
|
|
| if (filter == USE_NATIVE_CHECKER) {
|
| @@ -504,10 +516,10 @@ void SpellCheck::CreateTextCheckingResults(
|
| }
|
| }
|
|
|
| - results.push_back(WebTextCheckingResult(
|
| - static_cast<WebTextDecorationType>(decoration),
|
| - line_offset + spellcheck_result.location, spellcheck_result.length,
|
| - blink::WebString::FromUTF16(replacement)));
|
| + results.push_back(
|
| + WebTextCheckingResult(static_cast<WebTextDecorationType>(decoration),
|
| + line_offset + spellcheck_result.location,
|
| + spellcheck_result.length, replacements_adjusted));
|
| }
|
|
|
| textcheck_results->Assign(results);
|
|
|