Skip to content

Commit

Permalink
Merge branch '21-x-y' into trop/21-x-y-bp-feat-webframemain-origin-16…
Browse files Browse the repository at this point in the history
…61992876090
  • Loading branch information
miniak committed Sep 15, 2022
2 parents 22d86db + 12992b2 commit fae2425
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 1 deletion.
2 changes: 1 addition & 1 deletion docs/api/session.md
Expand Up @@ -932,7 +932,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)`

Expand Down
4 changes: 4 additions & 0 deletions shell/browser/api/electron_api_session.cc
Expand Up @@ -1024,6 +1024,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);
Expand All @@ -1039,17 +1040,20 @@ 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 "
"valid URL");
return;
}
SpellcheckHunspellDictionary::SetBaseDownloadURL(url);
#endif
}

v8::Local<v8::Promise> Session::ListWordsInSpellCheckerDictionary() {
Expand Down
38 changes: 38 additions & 0 deletions spec-main/spellchecker-spec.ts
Expand Up @@ -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');
Expand Down

0 comments on commit fae2425

Please sign in to comment.