Browse Source

feat: add session.removeWordFromSpellCheckerDictionary API (#22039)

* feat: add session.removeWordFromSpellCheckerDictionary API

* rebase fixup
Erick Zhao 5 years ago
parent
commit
17abeca8b7

+ 8 - 0
docs/api/session.md

@@ -495,6 +495,14 @@ Returns `Boolean` - Whether the word was successfully written to the custom dict
 
 **Note:** On macOS and Windows 10 this word will be written to the OS custom dictionary as well
 
+#### `ses.removeWordFromSpellCheckerDictionary(word)`
+
+* `word` String - The word you want to remove from the dictionary
+
+Returns `Boolean` - Whether the word was successfully removed from the custom dictionary.
+
+**Note:** On macOS and Windows 10 this word will be removed from the OS custom dictionary as well
+
 #### `ses.loadExtension(path)`
 
 * `path` String - Path to a directory containing an unpacked Chrome extension

+ 17 - 0
shell/browser/api/electron_api_session.cc

@@ -785,6 +785,21 @@ bool Session::AddWordToSpellCheckerDictionary(const std::string& word) {
 #endif
   return service->GetCustomDictionary()->AddWord(word);
 }
+
+bool Session::RemoveWordFromSpellCheckerDictionary(const std::string& word) {
+  SpellcheckService* service =
+      SpellcheckServiceFactory::GetForContext(browser_context_.get());
+  if (!service)
+    return false;
+
+#if BUILDFLAG(USE_BROWSER_SPELLCHECKER)
+  if (spellcheck::UseBrowserSpellChecker()) {
+    spellcheck_platform::RemoveWord(service->platform_spell_checker(),
+                                    base::UTF8ToUTF16(word));
+  }
+#endif
+  return service->GetCustomDictionary()->RemoveWord(word);
+}
 #endif
 
 // static
@@ -873,6 +888,8 @@ void Session::BuildPrototype(v8::Isolate* isolate,
                  &SetSpellCheckerDictionaryDownloadURL)
       .SetMethod("addWordToSpellCheckerDictionary",
                  &Session::AddWordToSpellCheckerDictionary)
+      .SetMethod("removeWordFromSpellCheckerDictionary",
+                 &Session::RemoveWordFromSpellCheckerDictionary)
 #endif
       .SetMethod("preconnect", &Session::Preconnect)
       .SetProperty("cookies", &Session::Cookies)

+ 1 - 0
shell/browser/api/electron_api_session.h

@@ -96,6 +96,7 @@ class Session : public gin_helper::TrackableObject<Session>,
   void SetSpellCheckerLanguages(gin_helper::ErrorThrower thrower,
                                 const std::vector<std::string>& languages);
   bool AddWordToSpellCheckerDictionary(const std::string& word);
+  bool RemoveWordFromSpellCheckerDictionary(const std::string& word);
 #endif
 
 #if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)