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); |