fix: prevent in-memory sessions from writing to custom spellchecker dictionary (#22157)
* fix: prevent in-memory sessions from writing to custom dictionary * docs * spec
This commit is contained in:
parent
c0374b5796
commit
3ff98e15d0
3 changed files with 23 additions and 2 deletions
|
@ -538,7 +538,8 @@ Resolves when the full dictionary is loaded from disk.
|
||||||
|
|
||||||
* `word` String - The word you want to add to the dictionary
|
* `word` String - The word you want to add to the dictionary
|
||||||
|
|
||||||
Returns `Boolean` - Whether the word was successfully written to the custom dictionary.
|
Returns `Boolean` - Whether the word was successfully written to the custom dictionary. This API
|
||||||
|
will not work on non-persistent (in-memory) sessions.
|
||||||
|
|
||||||
**Note:** On macOS and Windows 10 this word will be written to the OS custom dictionary as well
|
**Note:** On macOS and Windows 10 this word will be written to the OS custom dictionary as well
|
||||||
|
|
||||||
|
@ -546,7 +547,8 @@ Returns `Boolean` - Whether the word was successfully written to the custom dict
|
||||||
|
|
||||||
* `word` String - The word you want to remove from the dictionary
|
* `word` String - The word you want to remove from the dictionary
|
||||||
|
|
||||||
Returns `Boolean` - Whether the word was successfully removed from the custom dictionary.
|
Returns `Boolean` - Whether the word was successfully removed from the custom dictionary. This API
|
||||||
|
will not work on non-persistent (in-memory) sessions.
|
||||||
|
|
||||||
**Note:** On macOS and Windows 10 this word will be removed from the OS custom dictionary as well
|
**Note:** On macOS and Windows 10 this word will be removed from the OS custom dictionary as well
|
||||||
|
|
||||||
|
|
|
@ -868,6 +868,12 @@ v8::Local<v8::Promise> Session::ListWordsInSpellCheckerDictionary() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Session::AddWordToSpellCheckerDictionary(const std::string& word) {
|
bool Session::AddWordToSpellCheckerDictionary(const std::string& word) {
|
||||||
|
// don't let in-memory sessions add spellchecker words
|
||||||
|
// because files will persist unintentionally
|
||||||
|
bool is_in_memory = browser_context_->IsOffTheRecord();
|
||||||
|
if (is_in_memory)
|
||||||
|
return false;
|
||||||
|
|
||||||
SpellcheckService* service =
|
SpellcheckService* service =
|
||||||
SpellcheckServiceFactory::GetForContext(browser_context_.get());
|
SpellcheckServiceFactory::GetForContext(browser_context_.get());
|
||||||
if (!service)
|
if (!service)
|
||||||
|
@ -883,6 +889,12 @@ bool Session::AddWordToSpellCheckerDictionary(const std::string& word) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Session::RemoveWordFromSpellCheckerDictionary(const std::string& word) {
|
bool Session::RemoveWordFromSpellCheckerDictionary(const std::string& word) {
|
||||||
|
// don't let in-memory sessions remove spellchecker words
|
||||||
|
// because files will persist unintentionally
|
||||||
|
bool is_in_memory = browser_context_->IsOffTheRecord();
|
||||||
|
if (is_in_memory)
|
||||||
|
return false;
|
||||||
|
|
||||||
SpellcheckService* service =
|
SpellcheckService* service =
|
||||||
SpellcheckServiceFactory::GetForContext(browser_context_.get());
|
SpellcheckServiceFactory::GetForContext(browser_context_.get());
|
||||||
if (!service)
|
if (!service)
|
||||||
|
|
|
@ -105,6 +105,13 @@ describe('spellchecker', () => {
|
||||||
const wordList = await ses.listWordsInSpellCheckerDictionary
|
const wordList = await ses.listWordsInSpellCheckerDictionary
|
||||||
expect(wordList).to.have.length(0)
|
expect(wordList).to.have.length(0)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// remove API will always return false because we can't add words
|
||||||
|
it('should fail for non-persistent sessions', async () => {
|
||||||
|
const tempSes = session.fromPartition('temporary')
|
||||||
|
const result = tempSes.addWordToSpellCheckerDictionary('foobar')
|
||||||
|
expect(result).to.equal(false)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe('ses.removeWordFromSpellCheckerDictionary', () => {
|
describe('ses.removeWordFromSpellCheckerDictionary', () => {
|
||||||
|
|
Loading…
Reference in a new issue