feat: add session.storagePath to get path on disk for session data (#28665)
This commit is contained in:
		
					parent
					
						
							
								b97b973306
							
						
					
				
			
			
				commit
				
					
						fa61e3b119
					
				
			
		
					 4 changed files with 39 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -817,6 +817,11 @@ Returns `Extension[]` - A list of all loaded extensions.
 | 
			
		|||
**Note:** This API cannot be called before the `ready` event of the `app` module
 | 
			
		||||
is emitted.
 | 
			
		||||
 | 
			
		||||
#### `ses.getStoragePath()`
 | 
			
		||||
 | 
			
		||||
A `String | null` indicating the absolute file system path where data for this
 | 
			
		||||
session is persisted on disk.  For in memory sessions this returns `null`.
 | 
			
		||||
 | 
			
		||||
### Instance Properties
 | 
			
		||||
 | 
			
		||||
The following properties are available on instances of `Session`:
 | 
			
		||||
| 
						 | 
				
			
			@ -830,6 +835,11 @@ code to the `setSpellCheckerLanguages` API that isn't in this array will result
 | 
			
		|||
 | 
			
		||||
A `Boolean` indicating whether builtin spell checker is enabled.
 | 
			
		||||
 | 
			
		||||
#### `ses.storagePath` _Readonly_
 | 
			
		||||
 | 
			
		||||
A `String | null` indicating the absolute file system path where data for this
 | 
			
		||||
session is persisted on disk.  For in memory sessions this returns `null`.
 | 
			
		||||
 | 
			
		||||
#### `ses.cookies` _Readonly_
 | 
			
		||||
 | 
			
		||||
A [`Cookies`](cookies.md) object for this session.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -964,6 +964,13 @@ v8::Local<v8::Promise> Session::CloseAllConnections() {
 | 
			
		|||
  return handle;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
v8::Local<v8::Value> Session::GetPath(v8::Isolate* isolate) {
 | 
			
		||||
  if (browser_context_->IsOffTheRecord()) {
 | 
			
		||||
    return v8::Null(isolate);
 | 
			
		||||
  }
 | 
			
		||||
  return gin::ConvertToV8(isolate, browser_context_->GetPath());
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
 | 
			
		||||
base::Value Session::GetSpellCheckerLanguages() {
 | 
			
		||||
  return browser_context_->prefs()
 | 
			
		||||
| 
						 | 
				
			
			@ -1188,11 +1195,13 @@ gin::ObjectTemplateBuilder Session::GetObjectTemplateBuilder(
 | 
			
		|||
#endif
 | 
			
		||||
      .SetMethod("preconnect", &Session::Preconnect)
 | 
			
		||||
      .SetMethod("closeAllConnections", &Session::CloseAllConnections)
 | 
			
		||||
      .SetMethod("getStoragePath", &Session::GetPath)
 | 
			
		||||
      .SetProperty("cookies", &Session::Cookies)
 | 
			
		||||
      .SetProperty("netLog", &Session::NetLog)
 | 
			
		||||
      .SetProperty("protocol", &Session::Protocol)
 | 
			
		||||
      .SetProperty("serviceWorkers", &Session::ServiceWorkerContext)
 | 
			
		||||
      .SetProperty("webRequest", &Session::WebRequest);
 | 
			
		||||
      .SetProperty("webRequest", &Session::WebRequest)
 | 
			
		||||
      .SetProperty("storagePath", &Session::GetPath);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
const char* Session::GetTypeName() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -124,6 +124,7 @@ class Session : public gin::Wrappable<Session>,
 | 
			
		|||
  v8::Local<v8::Value> NetLog(v8::Isolate* isolate);
 | 
			
		||||
  void Preconnect(const gin_helper::Dictionary& options, gin::Arguments* args);
 | 
			
		||||
  v8::Local<v8::Promise> CloseAllConnections();
 | 
			
		||||
  v8::Local<v8::Value> GetPath(v8::Isolate* isolate);
 | 
			
		||||
#if BUILDFLAG(ENABLE_BUILTIN_SPELLCHECKER)
 | 
			
		||||
  base::Value GetSpellCheckerLanguages();
 | 
			
		||||
  void SetSpellCheckerLanguages(gin_helper::ErrorThrower thrower,
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1090,6 +1090,24 @@ describe('session module', () => {
 | 
			
		|||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('session.storagePage', () => {
 | 
			
		||||
    it('returns a string', () => {
 | 
			
		||||
      expect(session.defaultSession.storagePath).to.be.a('string');
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('returns null for in memory sessions', () => {
 | 
			
		||||
      expect(session.fromPartition('in-memory').storagePath).to.equal(null);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('returns different paths for partitions and the default session', () => {
 | 
			
		||||
      expect(session.defaultSession.storagePath).to.not.equal(session.fromPartition('persist:two').storagePath);
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    it('returns different paths for different partitions', () => {
 | 
			
		||||
      expect(session.fromPartition('persist:one').storagePath).to.not.equal(session.fromPartition('persist:two').storagePath);
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
 | 
			
		||||
  describe('ses.setSSLConfig()', () => {
 | 
			
		||||
    it('can disable cipher suites', async () => {
 | 
			
		||||
      const ses = session.fromPartition('' + Math.random());
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue