#include "third_party/WebKit/public/web/WebView.h"
using blink::WebVector;
+using blink::WebString;
using blink::WebTextCheckingResult;
using blink::WebTextDecorationType;
class UpdateSpellcheckEnabled : public content::RenderViewVisitor {
public:
explicit UpdateSpellcheckEnabled(bool enabled) : enabled_(enabled) {}
- virtual bool Visit(content::RenderView* render_view) OVERRIDE;
+ bool Visit(content::RenderView* render_view) override;
private:
bool enabled_; // New spellcheck-enabled state.
class DocumentMarkersCollector : public content::RenderViewVisitor {
public:
DocumentMarkersCollector() {}
- virtual ~DocumentMarkersCollector() {}
+ ~DocumentMarkersCollector() override {}
const std::vector<uint32>& markers() const { return markers_; }
- virtual bool Visit(content::RenderView* render_view) OVERRIDE;
+ bool Visit(content::RenderView* render_view) override;
private:
std::vector<uint32> markers_;
return true;
}
+class DocumentMarkersRemover : public content::RenderViewVisitor {
+ public:
+ explicit DocumentMarkersRemover(const std::vector<std::string>& words);
+ ~DocumentMarkersRemover() override {}
+ 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 {
const std::set<std::string>& custom_words,
const std::string& language,
bool auto_spell_correct) {
- Init(IPC::PlatformFileForTransitToPlatformFile(bdict_file),
+ Init(IPC::PlatformFileForTransitToFile(bdict_file),
custom_words, language);
auto_spell_correct_turned_on_ = auto_spell_correct;
#if !defined(OS_MACOSX)
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) {
// TODO(groby): Make sure we always have a spelling engine, even before Init()
// is called.
-void SpellCheck::Init(base::PlatformFile file,
+void SpellCheck::Init(base::File file,
const std::set<std::string>& custom_words,
const std::string& language) {
- spellcheck_.Init(file, language);
+ spellcheck_.Init(file.Pass(), language);
custom_dictionary_.Init(custom_words);
}