From 31419adc341f8e264776fe27daf94f3c38bdb839 Mon Sep 17 00:00:00 2001 From: Rachel Macfarlane Date: Mon, 12 Oct 2020 10:31:00 -0700 Subject: [PATCH] Polish onDidChangePassword changes --- .../github-authentication/src/common/keychain.ts | 6 ------ extensions/github-authentication/src/extension.ts | 2 +- extensions/github-authentication/src/github.ts | 4 ++-- extensions/microsoft-authentication/src/AADHelper.ts | 10 ++++++++-- extensions/microsoft-authentication/src/extension.ts | 1 + extensions/microsoft-authentication/src/keychain.ts | 6 ------ src/vs/workbench/api/common/extHostAuthentication.ts | 4 +--- .../services/credentials/browser/credentialsService.ts | 2 +- .../services/credentials/common/credentials.ts | 2 +- 9 files changed, 15 insertions(+), 22 deletions(-) diff --git a/extensions/github-authentication/src/common/keychain.ts b/extensions/github-authentication/src/common/keychain.ts index 9753650508e..96afff43b09 100644 --- a/extensions/github-authentication/src/common/keychain.ts +++ b/extensions/github-authentication/src/common/keychain.ts @@ -84,12 +84,6 @@ export class Keychain { return Promise.resolve(undefined); } } - - onDidChangePassword(listener: () => void) { - vscode.authentication.onDidChangePassword(_ => { - listener(); - }); - } } export const keychain = new Keychain(); diff --git a/extensions/github-authentication/src/extension.ts b/extensions/github-authentication/src/extension.ts index d2022806057..98b715f807e 100644 --- a/extensions/github-authentication/src/extension.ts +++ b/extensions/github-authentication/src/extension.ts @@ -16,7 +16,7 @@ export async function activate(context: vscode.ExtensionContext) { context.subscriptions.push(vscode.window.registerUriHandler(uriHandler)); const loginService = new GitHubAuthenticationProvider(); - await loginService.initialize(); + await loginService.initialize(context); context.subscriptions.push(vscode.commands.registerCommand('github.provide-token', () => { return loginService.manuallyProvideToken(); diff --git a/extensions/github-authentication/src/github.ts b/extensions/github-authentication/src/github.ts index 7b9b745f211..29f9b30919f 100644 --- a/extensions/github-authentication/src/github.ts +++ b/extensions/github-authentication/src/github.ts @@ -26,14 +26,14 @@ export class GitHubAuthenticationProvider { private _sessions: vscode.AuthenticationSession[] = []; private _githubServer = new GitHubServer(); - public async initialize(): Promise { + public async initialize(context: vscode.ExtensionContext): Promise { try { this._sessions = await this.readSessions(); } catch (e) { // Ignore, network request failed } - keychain.onDidChangePassword(() => this.checkForUpdates()); + context.subscriptions.push(vscode.authentication.onDidChangePassword(() => this.checkForUpdates())); } private async checkForUpdates() { diff --git a/extensions/microsoft-authentication/src/AADHelper.ts b/extensions/microsoft-authentication/src/AADHelper.ts index 7d7dbacf126..d0872e17e1f 100644 --- a/extensions/microsoft-authentication/src/AADHelper.ts +++ b/extensions/microsoft-authentication/src/AADHelper.ts @@ -93,10 +93,11 @@ export class AzureActiveDirectoryService { private _tokens: IToken[] = []; private _refreshTimeouts: Map = new Map(); private _uriHandler: UriEventHandler; + private _disposables: vscode.Disposable[] = []; constructor() { this._uriHandler = new UriEventHandler(); - vscode.window.registerUriHandler(this._uriHandler); + this._disposables.push(vscode.window.registerUriHandler(this._uriHandler)); } public async initialize(): Promise { @@ -140,7 +141,7 @@ export class AzureActiveDirectoryService { } } - keychain.onDidChangePassword(() => this.checkForUpdates); + this._disposables.push(vscode.authentication.onDidChangePassword(() => this.checkForUpdates)); } private parseStoredData(data: string): IStoredSession[] { @@ -340,6 +341,11 @@ export class AzureActiveDirectoryService { }); } + public dispose(): void { + this._disposables.forEach(disposable => disposable.dispose()); + this._disposables = []; + } + private getCallbackEnvironment(callbackUri: vscode.Uri): string { if (callbackUri.authority.endsWith('.workspaces.github.com') || callbackUri.authority.endsWith('.github.dev')) { return `${callbackUri.authority},`; diff --git a/extensions/microsoft-authentication/src/extension.ts b/extensions/microsoft-authentication/src/extension.ts index 102a0863c0e..f31d72d8467 100644 --- a/extensions/microsoft-authentication/src/extension.ts +++ b/extensions/microsoft-authentication/src/extension.ts @@ -14,6 +14,7 @@ export async function activate(context: vscode.ExtensionContext) { const telemetryReporter = new TelemetryReporter(name, version, aiKey); const loginService = new AzureActiveDirectoryService(); + context.subscriptions.push(loginService); await loginService.initialize(); diff --git a/extensions/microsoft-authentication/src/keychain.ts b/extensions/microsoft-authentication/src/keychain.ts index 6b13eded95b..f0e487760eb 100644 --- a/extensions/microsoft-authentication/src/keychain.ts +++ b/extensions/microsoft-authentication/src/keychain.ts @@ -101,12 +101,6 @@ export class Keychain { return Promise.resolve(null); } } - - onDidChangePassword(listener: () => void) { - vscode.authentication.onDidChangePassword(_ => { - listener(); - }); - } } export const keychain = new Keychain(); diff --git a/src/vs/workbench/api/common/extHostAuthentication.ts b/src/vs/workbench/api/common/extHostAuthentication.ts index d97c7d4b29f..a5d97d15a11 100644 --- a/src/vs/workbench/api/common/extHostAuthentication.ts +++ b/src/vs/workbench/api/common/extHostAuthentication.ts @@ -24,7 +24,6 @@ export class ExtHostAuthentication implements ExtHostAuthenticationShape { private _onDidChangeSessions = new Emitter(); readonly onDidChangeSessions: Event = this._onDidChangeSessions.event; - private _onDidChangePassword = new Emitter(); readonly onDidChangePassword: Event = this._onDidChangePassword.event; @@ -208,9 +207,8 @@ export class ExtHostAuthentication implements ExtHostAuthenticationShape { return Promise.resolve(); } - $onDidChangePassword(): Promise { + async $onDidChangePassword(): Promise { this._onDidChangePassword.fire(); - return Promise.resolve(); } getPassword(requestingExtension: IExtensionDescription, key: string): Promise { diff --git a/src/vs/workbench/services/credentials/browser/credentialsService.ts b/src/vs/workbench/services/credentials/browser/credentialsService.ts index 98e2856f1b9..537ed64f70b 100644 --- a/src/vs/workbench/services/credentials/browser/credentialsService.ts +++ b/src/vs/workbench/services/credentials/browser/credentialsService.ts @@ -13,7 +13,7 @@ export class BrowserCredentialsService implements ICredentialsService { declare readonly _serviceBrand: undefined; private _onDidChangePassword: Emitter = new Emitter(); - onDidChangePassword = this._onDidChangePassword.event; + readonly onDidChangePassword = this._onDidChangePassword.event; private credentialsProvider: ICredentialsProvider; diff --git a/src/vs/workbench/services/credentials/common/credentials.ts b/src/vs/workbench/services/credentials/common/credentials.ts index f6a3a2de020..b1280cd463a 100644 --- a/src/vs/workbench/services/credentials/common/credentials.ts +++ b/src/vs/workbench/services/credentials/common/credentials.ts @@ -18,5 +18,5 @@ export interface ICredentialsProvider { export interface ICredentialsService extends ICredentialsProvider { readonly _serviceBrand: undefined; - onDidChangePassword: Event; + readonly onDidChangePassword: Event; }