Skip to content

Commit 6476690

Browse files
committed
Pull common parts into abstract a11y service
1 parent 0d2926c commit 6476690

3 files changed

Lines changed: 57 additions & 49 deletions

File tree

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*---------------------------------------------------------------------------------------------
2+
* Copyright (c) Microsoft Corporation. All rights reserved.
3+
* Licensed under the MIT License. See License.txt in the project root for license information.
4+
*--------------------------------------------------------------------------------------------*/
5+
6+
import { Disposable } from 'vs/base/common/lifecycle';
7+
import { IAccessibilityService, AccessibilitySupport, CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
8+
import { Event, Emitter } from 'vs/base/common/event';
9+
import { IContextKey, IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
10+
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
11+
12+
export abstract class AbstractAccessibilityService extends Disposable implements IAccessibilityService {
13+
_serviceBrand: any;
14+
15+
private _accessibilityModeEnabledContext: IContextKey<boolean>;
16+
protected readonly _onDidChangeAccessibilitySupport = new Emitter<void>();
17+
readonly onDidChangeAccessibilitySupport: Event<void> = this._onDidChangeAccessibilitySupport.event;
18+
19+
constructor(
20+
@IContextKeyService private readonly _contextKeyService: IContextKeyService,
21+
@IConfigurationService private readonly _configurationService: IConfigurationService,
22+
) {
23+
super();
24+
this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);
25+
this._register(this._configurationService.onDidChangeConfiguration(e => {
26+
if (e.affectsConfiguration('editor.accessibilitySupport')) {
27+
this._updateContextKey();
28+
}
29+
}));
30+
this._updateContextKey();
31+
this.onDidChangeAccessibilitySupport(() => this._updateContextKey());
32+
}
33+
34+
abstract alwaysUnderlineAccessKeys(): Promise<boolean>;
35+
abstract getAccessibilitySupport(): AccessibilitySupport;
36+
abstract setAccessibilitySupport(accessibilitySupport: AccessibilitySupport): void;
37+
38+
private _updateContextKey(): void {
39+
const detected = this.getAccessibilitySupport() === AccessibilitySupport.Enabled;
40+
const config = this._configurationService.getValue('editor.accessibilitySupport');
41+
this._accessibilityModeEnabledContext.set(config === 'on' || (config === 'auto' && detected));
42+
}
43+
}

src/vs/platform/accessibility/common/accessibilityService.ts

Lines changed: 7 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,33 +3,22 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { Emitter, Event } from 'vs/base/common/event';
7-
import { IAccessibilityService, AccessibilitySupport, CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
8-
import { Disposable } from 'vs/base/common/lifecycle';
9-
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
6+
import { IAccessibilityService, AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility';
7+
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
108
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
9+
import { AbstractAccessibilityService } from 'vs/platform/accessibility/common/abstractAccessibilityService';
1110

12-
export class BrowserAccessibilityService extends Disposable implements IAccessibilityService {
11+
export class BrowserAccessibilityService extends AbstractAccessibilityService implements IAccessibilityService {
1312

1413
_serviceBrand: any;
1514

1615
private _accessibilitySupport = AccessibilitySupport.Unknown;
17-
private _accessibilityModeEnabledContext: IContextKey<boolean>;
18-
private readonly _onDidChangeAccessibilitySupport = new Emitter<void>();
19-
readonly onDidChangeAccessibilitySupport: Event<void> = this._onDidChangeAccessibilitySupport.event;
2016

2117
constructor(
22-
@IContextKeyService private readonly _contextKeyService: IContextKeyService,
23-
@IConfigurationService private readonly _configurationService: IConfigurationService,
18+
@IContextKeyService readonly contextKeyService: IContextKeyService,
19+
@IConfigurationService readonly configurationService: IConfigurationService,
2420
) {
25-
super();
26-
this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);
27-
this._register(this._configurationService.onDidChangeConfiguration(e => {
28-
if (e.affectsConfiguration('editor.accessibilitySupport')) {
29-
this._updateContextKey();
30-
}
31-
}));
32-
this._updateContextKey();
21+
super(contextKeyService, configurationService);
3322
}
3423

3524
alwaysUnderlineAccessKeys(): Promise<boolean> {
@@ -43,16 +32,9 @@ export class BrowserAccessibilityService extends Disposable implements IAccessib
4332

4433
this._accessibilitySupport = accessibilitySupport;
4534
this._onDidChangeAccessibilitySupport.fire();
46-
this._updateContextKey();
4735
}
4836

4937
getAccessibilitySupport(): AccessibilitySupport {
5038
return this._accessibilitySupport;
5139
}
52-
53-
private _updateContextKey(): void {
54-
const detected = this.getAccessibilitySupport() === AccessibilitySupport.Enabled;
55-
const config = this._configurationService.getValue('editor.accessibilitySupport');
56-
this._accessibilityModeEnabledContext.set(config === 'on' || (config === 'auto' && detected));
57-
}
5840
}

src/vs/workbench/services/accessibility/node/accessibilityService.ts

Lines changed: 7 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,24 @@
33
* Licensed under the MIT License. See License.txt in the project root for license information.
44
*--------------------------------------------------------------------------------------------*/
55

6-
import { IAccessibilityService, AccessibilitySupport, CONTEXT_ACCESSIBILITY_MODE_ENABLED } from 'vs/platform/accessibility/common/accessibility';
6+
import { IAccessibilityService, AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility';
77
import { isWindows } from 'vs/base/common/platform';
8-
import { Emitter, Event } from 'vs/base/common/event';
98
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
10-
import { IContextKeyService, IContextKey } from 'vs/platform/contextkey/common/contextkey';
9+
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
1110
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
12-
import { Disposable } from 'vs/base/common/lifecycle';
11+
import { AbstractAccessibilityService } from 'vs/platform/accessibility/common/abstractAccessibilityService';
1312

14-
export class AccessibilityService extends Disposable implements IAccessibilityService {
13+
export class AccessibilityService extends AbstractAccessibilityService implements IAccessibilityService {
1514
_serviceBrand: any;
1615

1716
private _accessibilitySupport = AccessibilitySupport.Unknown;
18-
private _accessibilityModeEnabledContext: IContextKey<boolean>;
19-
private readonly _onDidChangeAccessibilitySupport = new Emitter<void>();
20-
readonly onDidChangeAccessibilitySupport: Event<void> = this._onDidChangeAccessibilitySupport.event;
2117

2218
constructor(
2319
@IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
24-
@IContextKeyService private readonly _contextKeyService: IContextKeyService,
25-
@IConfigurationService private readonly _configurationService: IConfigurationService
20+
@IContextKeyService readonly contextKeyService: IContextKeyService,
21+
@IConfigurationService readonly configurationService: IConfigurationService
2622
) {
27-
super();
28-
this._accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED.bindTo(this._contextKeyService);
29-
this._register(this._configurationService.onDidChangeConfiguration(e => {
30-
if (e.affectsConfiguration('editor.accessibilitySupport')) {
31-
this._updateContextKey();
32-
}
33-
}));
34-
this._updateContextKey();
23+
super(contextKeyService, configurationService);
3524
}
3625

3726
alwaysUnderlineAccessKeys(): Promise<boolean> {
@@ -70,10 +59,4 @@ export class AccessibilityService extends Disposable implements IAccessibilitySe
7059

7160
return this._accessibilitySupport;
7261
}
73-
74-
private _updateContextKey(): void {
75-
const detected = this.getAccessibilitySupport() === AccessibilitySupport.Enabled;
76-
const config = this._configurationService.getValue('editor.accessibilitySupport');
77-
this._accessibilityModeEnabledContext.set(config === 'on' || (config === 'auto' && detected));
78-
}
7962
}

0 commit comments

Comments
 (0)