This commit is contained in:
meganrogge
2023-10-16 08:56:54 -07:00
parent 9e9c4e4bf7
commit 7818968def
8 changed files with 13 additions and 20 deletions
@@ -56,7 +56,6 @@ export const IAccessibleNotificationService = createDecorator<IAccessibleNotific
export interface IAccessibleNotificationService {
readonly _serviceBrand: undefined;
notify(event: AccessibleNotificationEvent): void;
notifySaved(userGesture: boolean): void;
}
export const enum AccessibleNotificationEvent {
@@ -14,7 +14,6 @@ import { IEditorGroupsService } from 'vs/workbench/services/editor/common/editor
import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService';
import { IWorkingCopy, WorkingCopyCapabilities } from 'vs/workbench/services/workingCopy/common/workingCopy';
import { ILogService } from 'vs/platform/log/common/log';
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
export class EditorAutoSave extends Disposable implements IWorkbenchContribution {
@@ -33,8 +32,7 @@ export class EditorAutoSave extends Disposable implements IWorkbenchContribution
@IEditorService private readonly editorService: IEditorService,
@IEditorGroupsService private readonly editorGroupService: IEditorGroupsService,
@IWorkingCopyService private readonly workingCopyService: IWorkingCopyService,
@ILogService private readonly logService: ILogService,
@IAccessibleNotificationService private readonly _accessibleNotificationService: IAccessibleNotificationService
@ILogService private readonly logService: ILogService
) {
super();
@@ -198,7 +196,6 @@ export class EditorAutoSave extends Disposable implements IWorkbenchContribution
// Save if dirty
if (workingCopy.isDirty()) {
this.logService.trace(`[editor auto save] running auto save`, workingCopy.resource.toString(), workingCopy.typeId);
this._accessibleNotificationService.notifySaved(false);
workingCopy.save({ reason: SaveReason.AUTO });
}
}, this.autoSaveAfterDelay);
@@ -14,7 +14,7 @@ import { EditorAccessibilityHelpContribution, HoverAccessibleViewContribution, I
import { AccessibilityStatus } from 'vs/workbench/contrib/accessibility/browser/accessibilityStatus';
import { CommentsAccessibilityHelpContribution } from 'vs/workbench/contrib/comments/browser/comments.contribution';
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
import { AccessibleNotificationService } from 'vs/platform/accessibility/browser/accessibleNotificationService';
import { AccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService';
registerAccessibilityConfiguration();
registerSingleton(IAccessibleViewService, AccessibleViewService, InstantiationType.Delayed);
@@ -8,6 +8,8 @@ import { localize } from 'vs/nls';
import { AccessibleNotificationEvent, IAccessibilityService, IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
import { AudioCue, IAudioCueService, Sound } from 'vs/platform/audioCues/browser/audioCueService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { SaveReason } from 'vs/workbench/common/editor';
import { IWorkingCopyService } from 'vs/workbench/services/workingCopy/common/workingCopyService';
export class AccessibleNotificationService extends Disposable implements IAccessibleNotificationService {
declare readonly _serviceBrand: undefined;
@@ -15,10 +17,12 @@ export class AccessibleNotificationService extends Disposable implements IAccess
constructor(
@IAudioCueService private readonly _audioCueService: IAudioCueService,
@IConfigurationService private readonly _configurationService: IConfigurationService,
@IAccessibilityService private readonly _accessibilityService: IAccessibilityService) {
@IAccessibilityService private readonly _accessibilityService: IAccessibilityService,
@IWorkingCopyService private readonly _workingCopyService: IWorkingCopyService) {
super();
this._events.set(AccessibleNotificationEvent.Clear, { audioCue: AudioCue.clear, alertMessage: localize('cleared', "Cleared") });
this._events.set(AccessibleNotificationEvent.Save, { audioCue: AudioCue.save, alertMessage: localize('saved', "Saved") });
this._register(this._workingCopyService.onDidSave((e) => this._notifySaved(e.reason === SaveReason.EXPLICIT)));
}
notify(event: AccessibleNotificationEvent): void {
@@ -31,7 +35,7 @@ export class AccessibleNotificationService extends Disposable implements IAccess
}
}
notifySaved(userGesture: boolean): void {
private _notifySaved(userGesture: boolean): void {
const { audioCue, alertMessage } = this._events.get(AccessibleNotificationEvent.Save)!;
const alertSetting: NotificationSetting = this._configurationService.getValue('accessibility.alert.save');
if (this._shouldNotify(alertSetting, userGesture)) {
@@ -55,5 +59,4 @@ export class TestAccessibleNotificationService extends Disposable implements IAc
declare readonly _serviceBrand: undefined;
notify(event: AccessibleNotificationEvent): void { }
notifySaved(userGesture: boolean): void { }
}
@@ -24,7 +24,7 @@ import { TestWorkspace } from 'vs/platform/workspace/test/common/testWorkspace';
import { TestContextService } from 'vs/workbench/test/common/workbenchTestServices';
import { UriIdentityService } from 'vs/platform/uriIdentity/common/uriIdentityService';
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
import { TestAccessibleNotificationService } from 'vs/platform/accessibility/browser/accessibleNotificationService';
import { TestAccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService';
suite('EditorAutoSave', () => {
@@ -7,7 +7,6 @@ import * as assert from 'assert';
import { importAMDNodeModule } from 'vs/amdX';
import { isWindows } from 'vs/base/common/platform';
import { ensureNoDisposablesAreLeakedInTestSuite } from 'vs/base/test/common/utils';
import { TestAccessibleNotificationService } from 'vs/platform/accessibility/browser/accessibleNotificationService';
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
@@ -22,6 +21,7 @@ import { TerminalCapabilityStore } from 'vs/platform/terminal/common/capabilitie
import { ITerminalLogService } from 'vs/platform/terminal/common/terminal';
import { IThemeService } from 'vs/platform/theme/common/themeService';
import { TestThemeService } from 'vs/platform/theme/test/common/testThemeService';
import { TestAccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService';
import { TerminalConfigHelper } from 'vs/workbench/contrib/terminal/browser/terminalConfigHelper';
import { writeP } from 'vs/workbench/contrib/terminal/browser/terminalTestHelpers';
import { XtermTerminal } from 'vs/workbench/contrib/terminal/browser/xterm/xtermTerminal';
@@ -33,7 +33,6 @@ import { IWorkspaceTrustRequestService, WorkspaceTrustUriResponse } from 'vs/pla
import { IHostService } from 'vs/workbench/services/host/browser/host';
import { findGroup } from 'vs/workbench/services/editor/common/editorGroupFinder';
import { ITextEditorService } from 'vs/workbench/services/textfile/common/textEditorService';
import { IAccessibleNotificationService } from 'vs/platform/accessibility/common/accessibility';
export class EditorService extends Disposable implements EditorServiceImpl {
@@ -71,8 +70,7 @@ export class EditorService extends Disposable implements EditorServiceImpl {
@IEditorResolverService private readonly editorResolverService: IEditorResolverService,
@IWorkspaceTrustRequestService private readonly workspaceTrustRequestService: IWorkspaceTrustRequestService,
@IHostService private readonly hostService: IHostService,
@ITextEditorService private readonly textEditorService: ITextEditorService,
@IAccessibleNotificationService private readonly accessibleNotificationService: IAccessibleNotificationService
@ITextEditorService private readonly textEditorService: ITextEditorService
) {
super();
@@ -974,12 +972,8 @@ export class EditorService extends Disposable implements EditorServiceImpl {
}
}
}
const success = saveResults.every(result => !!result);
if (success) {
this.accessibleNotificationService.notifySaved(options?.reason === SaveReason.EXPLICIT);
}
return {
success,
success: saveResults.every(result => !!result),
editors: coalesce(saveResults)
};
}
@@ -166,7 +166,7 @@ import { IHoverOptions, IHoverService, IHoverWidget } from 'vs/workbench/service
import { IRemoteExtensionsScannerService } from 'vs/platform/remote/common/remoteExtensionsScanner';
import { IRemoteSocketFactoryService, RemoteSocketFactoryService } from 'vs/platform/remote/common/remoteSocketFactoryService';
import { EditorParts } from 'vs/workbench/browser/parts/editor/editorParts';
import { TestAccessibleNotificationService } from 'vs/platform/accessibility/browser/accessibleNotificationService';
import { TestAccessibleNotificationService } from 'vs/workbench/contrib/accessibility/browser/accessibleNotificationService';
export function createFileEditorInput(instantiationService: IInstantiationService, resource: URI): FileEditorInput {
return instantiationService.createInstance(FileEditorInput, resource, undefined, undefined, undefined, undefined, undefined, undefined);