Path: blob/main/src/vs/platform/accessibilitySignal/browser/progressAccessibilitySignalScheduler.ts
3296 views
/*---------------------------------------------------------------------------------------------1* Copyright (c) Microsoft Corporation. All rights reserved.2* Licensed under the MIT License. See License.txt in the project root for license information.3*--------------------------------------------------------------------------------------------*/45import { RunOnceScheduler } from '../../../base/common/async.js';6import { Disposable, IDisposable } from '../../../base/common/lifecycle.js';7import { AccessibilitySignal, IAccessibilitySignalService } from './accessibilitySignalService.js';89const PROGRESS_SIGNAL_LOOP_DELAY = 5000;1011/**12* Schedules a signal to play while progress is happening.13*/14export class AccessibilityProgressSignalScheduler extends Disposable {15private _scheduler: RunOnceScheduler;16private _signalLoop: IDisposable | undefined;17constructor(msDelayTime: number, msLoopTime: number | undefined, @IAccessibilitySignalService private readonly _accessibilitySignalService: IAccessibilitySignalService) {18super();19this._scheduler = this._register(new RunOnceScheduler(() => {20this._signalLoop = this._accessibilitySignalService.playSignalLoop(AccessibilitySignal.progress, msLoopTime ?? PROGRESS_SIGNAL_LOOP_DELAY);21}, msDelayTime));22this._scheduler.schedule();23}24override dispose(): void {25super.dispose();26this._signalLoop?.dispose();27this._scheduler.dispose();28}29}303132