diff options
author | klemen.forstneric@gmail.com <klemen.forstneric@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-21 23:16:58 +0000 |
---|---|---|
committer | klemen.forstneric@gmail.com <klemen.forstneric@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-08-21 23:18:25 +0000 |
commit | a67357354b574a4e3ca3695736a28e66a269d284 (patch) | |
tree | e2660c8f94673ff44ace195da14232b9cdd97706 /chrome/renderer/spellchecker | |
parent | 910182b9df324f5989ca0e76bc3a78183890bc78 (diff) | |
download | chromium_src-a67357354b574a4e3ca3695736a28e66a269d284.zip chromium_src-a67357354b574a4e3ca3695736a28e66a269d284.tar.gz chromium_src-a67357354b574a4e3ca3695736a28e66a269d284.tar.bz2 |
Adding a word to dictionary should remove spelling markers
(Chrome part).
This patch adds code for removing spelling markers under words on
chrome's side.
BUG=3506
Review URL: https://codereview.chromium.org/411393004
Cr-Commit-Position: refs/heads/master@{#291232}
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@291232 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer/spellchecker')
-rw-r--r-- | chrome/renderer/spellchecker/spellcheck.cc | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/chrome/renderer/spellchecker/spellcheck.cc b/chrome/renderer/spellchecker/spellcheck.cc index 2150dd2..f1de849 100644 --- a/chrome/renderer/spellchecker/spellcheck.cc +++ b/chrome/renderer/spellchecker/spellcheck.cc @@ -22,6 +22,7 @@ #include "third_party/WebKit/public/web/WebView.h" using blink::WebVector; +using blink::WebString; using blink::WebTextCheckingResult; using blink::WebTextDecorationType; @@ -67,6 +68,30 @@ bool DocumentMarkersCollector::Visit(content::RenderView* render_view) { return true; } +class DocumentMarkersRemover : public content::RenderViewVisitor { + public: + explicit DocumentMarkersRemover(const std::vector<std::string>& words); + virtual ~DocumentMarkersRemover() OVERRIDE {} + virtual bool Visit(content::RenderView* render_view) OVERRIDE; + + private: + WebVector<WebString> words_; + DISALLOW_COPY_AND_ASSIGN(DocumentMarkersRemover); +}; + +DocumentMarkersRemover::DocumentMarkersRemover( + const std::vector<std::string>& words) + : words_(words.size()) { + for (size_t i = 0; i < words.size(); ++i) + words_[i] = WebString::fromUTF8(words[i]); +} + +bool DocumentMarkersRemover::Visit(content::RenderView* render_view) { + if (render_view && render_view->GetWebView()) + render_view->GetWebView()->removeSpellingMarkersUnderWords(words_); + return true; +} + } // namespace class SpellCheck::SpellcheckRequest { @@ -146,6 +171,10 @@ void SpellCheck::OnCustomDictionaryChanged( const std::vector<std::string>& words_added, const std::vector<std::string>& words_removed) { custom_dictionary_.OnCustomDictionaryChanged(words_added, words_removed); + if (words_added.empty()) + return; + DocumentMarkersRemover markersRemover(words_added); + content::RenderView::ForEach(&markersRemover); } void SpellCheck::OnEnableAutoSpellCorrect(bool enable) { |