33 * Licensed under the MIT License. See License.txt in the project root for license information.
44 *--------------------------------------------------------------------------------------------*/
55
6- import { IAccessibilityService , AccessibilitySupport } from 'vs/platform/accessibility/common/accessibility' ;
7- import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey' ;
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' ;
810import { IConfigurationService } from 'vs/platform/configuration/common/configuration' ;
9- import { AbstractAccessibilityService } from 'vs/platform/accessibility/common/abstractAccessibilityService' ;
10-
11- export class BrowserAccessibilityService extends AbstractAccessibilityService implements IAccessibilityService {
1211
12+ export class AccessibilityService extends Disposable implements IAccessibilityService {
1313 _serviceBrand : undefined ;
1414
15- private _accessibilitySupport = AccessibilitySupport . Unknown ;
15+ private _accessibilityModeEnabledContext : IContextKey < boolean > ;
16+ protected _accessibilitySupport = AccessibilitySupport . Unknown ;
17+ protected readonly _onDidChangeScreenReaderOptimized = new Emitter < void > ( ) ;
1618
1719 constructor (
18- @IContextKeyService readonly contextKeyService : IContextKeyService ,
19- @IConfigurationService readonly configurationService : IConfigurationService ,
20+ @IContextKeyService private readonly _contextKeyService : IContextKeyService ,
21+ @IConfigurationService protected readonly _configurationService : IConfigurationService ,
2022 ) {
21- super ( contextKeyService , configurationService ) ;
23+ super ( ) ;
24+ this . _accessibilityModeEnabledContext = CONTEXT_ACCESSIBILITY_MODE_ENABLED . bindTo ( this . _contextKeyService ) ;
25+ const updateContextKey = ( ) => this . _accessibilityModeEnabledContext . set ( this . isScreenReaderOptimized ( ) ) ;
26+ this . _register ( this . _configurationService . onDidChangeConfiguration ( e => {
27+ if ( e . affectsConfiguration ( 'editor.accessibilitySupport' ) ) {
28+ updateContextKey ( ) ;
29+ this . _onDidChangeScreenReaderOptimized . fire ( ) ;
30+ }
31+ } ) ) ;
32+ updateContextKey ( ) ;
33+ this . onDidChangeScreenReaderOptimized ( ( ) => updateContextKey ( ) ) ;
34+ }
35+
36+ get onDidChangeScreenReaderOptimized ( ) : Event < void > {
37+ return this . _onDidChangeScreenReaderOptimized . event ;
38+ }
39+
40+ isScreenReaderOptimized ( ) : boolean {
41+ const config = this . _configurationService . getValue ( 'editor.accessibilitySupport' ) ;
42+ return config === 'on' || ( config === 'auto' && this . _accessibilitySupport === AccessibilitySupport . Enabled ) ;
2243 }
2344
2445 alwaysUnderlineAccessKeys ( ) : Promise < boolean > {
@@ -31,10 +52,6 @@ export class BrowserAccessibilityService extends AbstractAccessibilityService im
3152 }
3253
3354 this . _accessibilitySupport = accessibilitySupport ;
34- this . _onDidChangeAccessibilitySupport . fire ( ) ;
35- }
36-
37- getAccessibilitySupport ( ) : AccessibilitySupport {
38- return this . _accessibilitySupport ;
55+ this . _onDidChangeScreenReaderOptimized . fire ( ) ;
3956 }
40- }
57+ }
0 commit comments