feat: add API to check if session is persistent (#22622)

This commit is contained in:
Erick Zhao 2020-03-11 00:02:22 -07:00 committed by GitHub
parent 19314d3caf
commit 34e004015d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 37 additions and 0 deletions

View file

@ -439,6 +439,13 @@ example `"en-US,fr,de,ko,zh-CN,ja"`.
This doesn't affect existing `WebContents`, and each `WebContents` can use
`webContents.setUserAgent` to override the session-wide user agent.
#### `ses.isPersistent()`
Returns `Boolean` - Whether or not this session is a persistent one. The default
`webContents` session of a `BrowserWindow` is persistent. When creating a session
from a partition, session prefixed with `persist:` will be persistent, while others
will be temporary.
#### `ses.getUserAgent()`
Returns `String` - The user agent for this session.

View file

@ -615,6 +615,10 @@ std::string Session::GetUserAgent() {
return browser_context_->GetUserAgent();
}
bool Session::IsPersistent() {
return !browser_context_->IsOffTheRecord();
}
v8::Local<v8::Promise> Session::GetBlobData(v8::Isolate* isolate,
const std::string& uuid) {
gin::Handle<DataPipeHolder> holder = DataPipeHolder::From(isolate, uuid);
@ -981,6 +985,7 @@ void Session::BuildPrototype(v8::Isolate* isolate,
.SetMethod("clearAuthCache", &Session::ClearAuthCache)
.SetMethod("allowNTLMCredentialsForDomains",
&Session::AllowNTLMCredentialsForDomains)
.SetMethod("isPersistent", &Session::IsPersistent)
.SetMethod("setUserAgent", &Session::SetUserAgent)
.SetMethod("getUserAgent", &Session::GetUserAgent)
.SetMethod("getBlobData", &Session::GetBlobData)

View file

@ -86,6 +86,7 @@ class Session : public gin_helper::TrackableObject<Session>,
void AllowNTLMCredentialsForDomains(const std::string& domains);
void SetUserAgent(const std::string& user_agent, gin_helper::Arguments* args);
std::string GetUserAgent();
bool IsPersistent();
v8::Local<v8::Promise> GetBlobData(v8::Isolate* isolate,
const std::string& uuid);
void DownloadURL(const GURL& url);

View file

@ -898,6 +898,30 @@ describe('session module', () => {
})
})
describe('ses.isPersistent()', () => {
afterEach(closeAllWindows)
it('returns default session as persistent', () => {
const w = new BrowserWindow({
show: false
})
const ses = w.webContents.session
expect(ses.isPersistent()).to.be.true()
})
it('returns persist: session as persistent', () => {
const ses = session.fromPartition(`persist:${Math.random()}`)
expect(ses.isPersistent()).to.be.true()
})
it('returns temporary session as not persistent', () => {
const ses = session.fromPartition(`${Math.random()}`)
expect(ses.isPersistent()).to.be.false()
})
})
describe('ses.setUserAgent()', () => {
afterEach(closeAllWindows)