Chromium Code Reviews| Index: components/spellcheck/renderer/spellcheck.cc |
| diff --git a/components/spellcheck/renderer/spellcheck.cc b/components/spellcheck/renderer/spellcheck.cc |
| index 4ef53a067a6753dd4e5f26b6546e2be2b1e597dd..e895342f8f08f8f236a985eadec7d03c672e36fc 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,20 @@ 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) |
| + // Ignore suggestions that are just changing the apostrophe type |
| + // (straight vs. typographical) |
| + if (replacement == misspelled_word) |
| + continue; |
| + |
| + replacements_adjusted.push_back(WebString::FromUTF16(replacement)); |
| + } |
| + |
| + if (replacements_adjusted.empty()) |
|
Xiaocheng
2017/05/29 04:00:31
This is the culprit of crbug.com/727172:
If |spel
|
| continue; |
| if (filter == USE_NATIVE_CHECKER) { |
| @@ -504,10 +514,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); |