summaryrefslogtreecommitdiffstats
path: root/chrome/renderer/spellchecker
diff options
context:
space:
mode:
authorklemen.forstneric@gmail.com <klemen.forstneric@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-21 23:16:58 +0000
committerklemen.forstneric@gmail.com <klemen.forstneric@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98>2014-08-21 23:18:25 +0000
commita67357354b574a4e3ca3695736a28e66a269d284 (patch)
treee2660c8f94673ff44ace195da14232b9cdd97706 /chrome/renderer/spellchecker
parent910182b9df324f5989ca0e76bc3a78183890bc78 (diff)
downloadchromium_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.cc29
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) {