@@ -13,6 +13,7 @@ import { ILogService } from 'vs/platform/log/common/log';
1313export const ISecretStorageService = createDecorator < ISecretStorageService > ( 'secretStorageService' ) ;
1414
1515export interface ISecretStorageProvider {
16+ type : 'in-memory' | 'persisted' | 'unknown' ;
1617 get ( key : string ) : Promise < string | undefined > ;
1718 set ( key : string , value : string ) : Promise < void > ;
1819 delete ( key : string ) : Promise < void > ;
@@ -34,6 +35,8 @@ export class SecretStorageService implements ISecretStorageService {
3435 private readonly _sequencer = new SequencerByKey < string > ( ) ;
3536 private initialized = this . init ( ) ;
3637
38+ private _type : 'in-memory' | 'persisted' | 'unknown' = 'unknown' ;
39+
3740 constructor (
3841 @IStorageService private _storageService : IStorageService ,
3942 @IEncryptionService private _encryptionService : IEncryptionService ,
@@ -42,6 +45,10 @@ export class SecretStorageService implements ISecretStorageService {
4245 this . _storageService . onDidChangeValue ( e => this . onDidChangeValue ( e . key ) ) ;
4346 }
4447
48+ get type ( ) {
49+ return this . _type ;
50+ }
51+
4552 private onDidChangeValue ( key : string ) : void {
4653 if ( ! key . startsWith ( this . _storagePrefix ) ) {
4754 return ;
@@ -109,11 +116,13 @@ export class SecretStorageService implements ISecretStorageService {
109116
110117 private async init ( ) : Promise < void > {
111118 if ( await this . _encryptionService . isEncryptionAvailable ( ) ) {
119+ this . _type = 'persisted' ;
112120 return ;
113121 }
114122
115123 this . _logService . trace ( '[SecretStorageService] Encryption is not available, falling back to in-memory storage' ) ;
116124
125+ this . _type = 'in-memory' ;
117126 this . _storageService = new InMemoryStorageService ( ) ;
118127 }
119128
0 commit comments