chore: make macOS spellchecker fns formal no-ops (#35514)

* chore: make macOS spellchecker fns formal no-ops

* docs: correct no-op note

* test: add no-op specs
This commit is contained in:
Shelley Vohr 2022-09-15 00:10:16 +02:00 коммит произвёл GitHub
Родитель bf20aabb9e
Коммит 38a7da692a
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
3 изменённых файлов: 43 добавлений и 1 удалений

Просмотреть файл

@ -986,7 +986,7 @@ Returns `string[]` - An array of language codes the spellchecker is enabled for.
will fallback to using `en-US`. By default on launch if this setting is an empty list Electron will try to populate this
setting with the current OS locale. This setting is persisted across restarts.
**Note:** On macOS the OS spellchecker is used and has its own list of languages. This API is a no-op on macOS.
**Note:** On macOS the OS spellchecker is used and has its own list of languages. On macOS, this API will return whichever languages have been configured by the OS.
#### `ses.setSpellCheckerDictionaryDownloadURL(url)`

Просмотреть файл

@ -1043,6 +1043,7 @@ base::Value Session::GetSpellCheckerLanguages() {
void Session::SetSpellCheckerLanguages(
gin_helper::ErrorThrower thrower,
const std::vector<std::string>& languages) {
#if !BUILDFLAG(IS_MAC)
base::Value::List language_codes;
for (const std::string& lang : languages) {
std::string code = spellcheck::GetCorrespondingSpellCheckLanguage(lang);
@ -1058,10 +1059,12 @@ void Session::SetSpellCheckerLanguages(
// Enable spellcheck if > 0 languages, disable if no languages set
browser_context_->prefs()->SetBoolean(spellcheck::prefs::kSpellCheckEnable,
!languages.empty());
#endif
}
void SetSpellCheckerDictionaryDownloadURL(gin_helper::ErrorThrower thrower,
const GURL& url) {
#if !BUILDFLAG(IS_MAC)
if (!url.is_valid()) {
thrower.ThrowError(
"The URL you provided to setSpellCheckerDictionaryDownloadURL is not a "
@ -1069,6 +1072,7 @@ void SetSpellCheckerDictionaryDownloadURL(gin_helper::ErrorThrower thrower,
return;
}
SpellcheckHunspellDictionary::SetBaseDownloadURL(url);
#endif
}
v8::Local<v8::Promise> Session::ListWordsInSpellCheckerDictionary() {

Просмотреть файл

@ -212,6 +212,44 @@ ifdescribe(features.isBuiltinSpellCheckerEnabled())('spellchecker', function ()
});
});
describe('ses.setSpellCheckerLanguages', () => {
const isMac = process.platform === 'darwin';
ifit(isMac)('should be a no-op when setSpellCheckerLanguages is called on macOS', () => {
expect(() => {
w.webContents.session.setSpellCheckerLanguages(['i-am-a-nonexistent-language']);
}).to.not.throw();
});
ifit(!isMac)('should throw when a bad language is passed', () => {
expect(() => {
w.webContents.session.setSpellCheckerLanguages(['i-am-a-nonexistent-language']);
}).to.throw(/Invalid language code provided: "i-am-a-nonexistent-language" is not a valid language code/);
});
ifit(!isMac)('should not throw when a recognized language is passed', () => {
expect(() => {
w.webContents.session.setSpellCheckerLanguages(['es']);
}).to.not.throw();
});
});
describe('SetSpellCheckerDictionaryDownloadURL', () => {
const isMac = process.platform === 'darwin';
ifit(isMac)('should be a no-op when a bad url is passed on macOS', () => {
expect(() => {
w.webContents.session.setSpellCheckerDictionaryDownloadURL('i-am-not-a-valid-url');
}).to.not.throw();
});
ifit(!isMac)('should throw when a bad url is passed', () => {
expect(() => {
w.webContents.session.setSpellCheckerDictionaryDownloadURL('i-am-not-a-valid-url');
}).to.throw(/The URL you provided to setSpellCheckerDictionaryDownloadURL is not a valid URL/);
});
});
describe('ses.removeWordFromSpellCheckerDictionary', () => {
it('should successfully remove words to custom dictionary', async () => {
const result1 = ses.addWordToSpellCheckerDictionary('foobar');