Skip to content

Commit 4f8b405

Browse files
authored
Merge pull request microsoft#209965 from microsoft/merogge/view-acc-api-proposal
`accessibilityHelpContent` view API proposal
2 parents 437a79c + fd871b4 commit 4f8b405

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

src/vs/workbench/api/browser/viewsExtensionPoint.ts

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import { HoverPosition } from 'vs/base/browser/ui/hover/hoverWidget';
3737
import { ILogService } from 'vs/platform/log/common/log';
3838
import { IExtensionFeatureTableRenderer, IRenderedData, ITableData, IRowData, IExtensionFeaturesRegistry, Extensions as ExtensionFeaturesRegistryExtensions } from 'vs/workbench/services/extensionManagement/common/extensionFeatures';
3939
import { Disposable } from 'vs/base/common/lifecycle';
40+
import { MarkdownString } from 'vs/base/common/htmlContent';
4041

4142
export interface IUserFriendlyViewsContainerDescriptor {
4243
id: string;
@@ -104,6 +105,8 @@ interface IUserFriendlyViewDescriptor {
104105
group?: string;
105106
remoteName?: string | string[];
106107
virtualWorkspace?: string;
108+
109+
accessibilityHelpContent: string;
107110
}
108111

109112
enum InitialVisibility {
@@ -167,6 +170,10 @@ const viewDescriptor: IJSONSchema = {
167170
initialSize: {
168171
type: 'number',
169172
description: localize('vscode.extension.contributs.view.size', "The initial size of the view. The size will behave like the css 'flex' property, and will set the initial size when the view is first shown. In the side bar, this is the height of the view. This value is only respected when the same extension owns both the view and the view container."),
173+
},
174+
accessibilityHelpContent: {
175+
type: 'string',
176+
description: localize('vscode.extension.contributes.view.accessibilityHelpContent', "When the accessibility help dialog is invoked in this view, this content will be presented to the user as a markdown string.")
170177
}
171178
}
172179
};
@@ -538,6 +545,11 @@ class ViewsExtensionHandler implements IWorkbenchContribution {
538545
}
539546
}
540547

548+
let accessibilityHelpContent;
549+
if (isProposedApiEnabled(extension.description, 'contribAccessibilityHelpContent') && item.accessibilityHelpContent) {
550+
accessibilityHelpContent = new MarkdownString(item.accessibilityHelpContent);
551+
}
552+
541553
const viewDescriptor: ICustomViewDescriptor = {
542554
type: type,
543555
ctorDescriptor: type === ViewType.Tree ? new SyncDescriptor(TreeViewPane) : new SyncDescriptor(WebviewViewPane),
@@ -558,7 +570,8 @@ class ViewsExtensionHandler implements IWorkbenchContribution {
558570
virtualWorkspace: item.virtualWorkspace,
559571
hideByDefault: initialVisibility === InitialVisibility.Hidden,
560572
workspace: viewContainer?.id === REMOTE ? true : undefined,
561-
weight
573+
weight,
574+
accessibilityHelpContent
562575
};
563576

564577

src/vs/workbench/common/views.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import { SyncDescriptor } from 'vs/platform/instantiation/common/descriptors';
2020
import { IProgressIndicator } from 'vs/platform/progress/common/progress';
2121
import Severity from 'vs/base/common/severity';
2222
import { IAccessibilityInformation } from 'vs/platform/accessibility/common/accessibility';
23-
import { IMarkdownString } from 'vs/base/common/htmlContent';
23+
import { IMarkdownString, MarkdownString } from 'vs/base/common/htmlContent';
2424
import { mixin } from 'vs/base/common/objects';
2525
import { Codicon } from 'vs/base/common/codicons';
2626
import { registerIcon } from 'vs/platform/theme/common/iconRegistry';
@@ -300,6 +300,8 @@ export interface IViewDescriptor {
300300
readonly virtualWorkspace?: string;
301301

302302
readonly openCommandActionDescriptor?: OpenCommandActionDescriptor;
303+
304+
readonly accessibilityHelpContent?: MarkdownString;
303305
}
304306

305307
export interface ICustomViewDescriptor extends IViewDescriptor {

src/vs/workbench/services/extensions/common/extensionsApiProposals.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ export const allApiProposals = Object.freeze({
2525
commentThreadApplicability: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentThreadApplicability.d.ts',
2626
commentingRangeHint: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentingRangeHint.d.ts',
2727
commentsDraftState: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.commentsDraftState.d.ts',
28+
contribAccessibilityHelpContent: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribAccessibilityHelpContent.d.ts',
2829
contribCommentEditorActionsMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentEditorActionsMenu.d.ts',
2930
contribCommentPeekContext: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentPeekContext.d.ts',
3031
contribCommentThreadAdditionalMenu: 'https://raw.githubusercontent.com/microsoft/vscode/main/src/vscode-dts/vscode.proposed.contribCommentThreadAdditionalMenu.d.ts',
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
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+
// empty placeholder declaration for the `accessibilityHelpContent`-property of the `views`-contribution
7+
8+
// https://github.com/microsoft/vscode/issues/209855 @meganrogge
9+
10+
/**
11+
* View contributions can include an `accessibilityHelpContent` property that provides help content for screen readers
12+
* when the accessibility help dialog is invoked by the user with focus in the view.
13+
*
14+
* The content is provided as a markdown string and can contain commands that will be resolved along with their keybindings.
15+
*/

0 commit comments

Comments
 (0)