File tree Expand file tree Collapse file tree 2 files changed +12
-4
lines changed
src/vs/workbench/api/common Expand file tree Collapse file tree 2 files changed +12
-4
lines changed Original file line number Diff line number Diff line change @@ -498,9 +498,10 @@ export abstract class AbstractExtHostExtensionService extends Disposable impleme
498
498
private _loadExtensionContext ( extensionDescription : IExtensionDescription ) : Promise < vscode . ExtensionContext > {
499
499
500
500
const lanuageModelAccessInformation = this . _extHostLanguageModels . createLanguageModelAccessInformation ( extensionDescription ) ;
501
- const globalState = new ExtensionGlobalMemento ( extensionDescription , this . _storage ) ;
502
- const workspaceState = new ExtensionMemento ( extensionDescription . identifier . value , false , this . _storage ) ;
503
- const secrets = new ExtensionSecrets ( extensionDescription , this . _secretState ) ;
501
+ // TODO: These should probably be disposed when the extension deactivates
502
+ const globalState = this . _register ( new ExtensionGlobalMemento ( extensionDescription , this . _storage ) ) ;
503
+ const workspaceState = this . _register ( new ExtensionMemento ( extensionDescription . identifier . value , false , this . _storage ) ) ;
504
+ const secrets = this . _register ( new ExtensionSecrets ( extensionDescription , this . _secretState ) ) ;
504
505
const extensionMode = extensionDescription . isUnderDevelopment
505
506
? ( this . _initData . environment . extensionTestsLocationURI ? ExtensionMode . Test : ExtensionMode . Development )
506
507
: ExtensionMode . Production ;
Original file line number Diff line number Diff line change @@ -10,24 +10,31 @@ import type * as vscode from 'vscode';
10
10
import { ExtHostSecretState } from 'vs/workbench/api/common/extHostSecretState' ;
11
11
import { ExtensionIdentifier , IExtensionDescription } from 'vs/platform/extensions/common/extensions' ;
12
12
import { Event } from 'vs/base/common/event' ;
13
+ import { DisposableStore } from 'vs/base/common/lifecycle' ;
13
14
14
15
export class ExtensionSecrets implements vscode . SecretStorage {
15
16
16
17
protected readonly _id : string ;
17
18
readonly #secretState: ExtHostSecretState ;
18
19
19
20
readonly onDidChange : Event < vscode . SecretStorageChangeEvent > ;
21
+ readonly disposables = new DisposableStore ( ) ;
20
22
21
23
constructor ( extensionDescription : IExtensionDescription , secretState : ExtHostSecretState ) {
22
24
this . _id = ExtensionIdentifier . toKey ( extensionDescription . identifier ) ;
23
25
this . #secretState = secretState ;
24
26
25
27
this . onDidChange = Event . map (
26
28
Event . filter ( this . #secretState. onDidChangePassword , e => e . extensionId === this . _id ) ,
27
- e => ( { key : e . key } )
29
+ e => ( { key : e . key } ) ,
30
+ this . disposables
28
31
) ;
29
32
}
30
33
34
+ dispose ( ) {
35
+ this . disposables . dispose ( ) ;
36
+ }
37
+
31
38
get ( key : string ) : Promise < string | undefined > {
32
39
return this . #secretState. get ( this . _id , key ) ;
33
40
}
You can’t perform that action at this time.
0 commit comments