提交 9ef29de2 编写于 作者: D Daniel Imms

Fix tests/http links

上级 5f0eaf63
......@@ -15,6 +15,7 @@ import { ICommandService } from 'vs/platform/commands/common/commands';
import { IWorkspaceContextService } from 'vs/platform/workspace/common/workspace';
import { IHostService } from 'vs/workbench/services/host/browser/host';
import { IUriIdentityService } from 'vs/workbench/services/uriIdentity/common/uriIdentity';
import { Schemas } from 'vs/base/common/network';
export class TerminalProtocolLinkProvider extends TerminalBaseLinkProvider {
private _linkComputerTarget: ILinkComputerTarget | undefined;
......@@ -68,8 +69,26 @@ export class TerminalProtocolLinkProvider extends TerminalBaseLinkProvider {
continue;
}
const linkText = link.url?.toString() || '';
// Handle http links
if (uri.scheme !== Schemas.file) {
result.push(this._instantiationService.createInstance(TerminalLink,
this._xterm,
bufferRange,
linkText,
this._xterm.buffer.active.viewportY,
this._activateCallback,
this._tooltipCallback,
true,
undefined
));
continue;
}
// Handle files and folders
const validatedLink = await new Promise<TerminalLink | undefined>(r => {
this._validationCallback(uri.fsPath, (result) => {
this._validationCallback(linkText, (result) => {
if (result) {
const label = result.isDirectory
? (this._isDirectoryInsideWorkspace(result.uri) ? FOLDER_IN_WORKSPACE_LABEL : FOLDER_NOT_IN_WORKSPACE_LABEL)
......@@ -78,14 +97,14 @@ export class TerminalProtocolLinkProvider extends TerminalBaseLinkProvider {
if (result.isDirectory) {
this._handleLocalFolderLink(result.uri);
} else {
this._activateCallback(event, result.uri.path);
this._activateCallback(event, linkText);
}
});
r(this._instantiationService.createInstance(
TerminalLink,
this._xterm,
bufferRange,
uri.fsPath,
linkText,
this._xterm.buffer.active.viewportY,
activateCallback,
this._tooltipCallback,
......
......@@ -9,8 +9,9 @@ import { Terminal, ILink } from 'xterm';
import { TestInstantiationService } from 'vs/platform/instantiation/test/common/instantiationServiceMock';
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
import { URI } from 'vs/base/common/uri';
suite('Workbench - TerminalWebLinkProvider', () => {
suite('Workbench - TerminalProtocolLinkProvider', () => {
let instantiationService: TestInstantiationService;
setup(() => {
......@@ -20,7 +21,9 @@ suite('Workbench - TerminalWebLinkProvider', () => {
async function assertLink(text: string, expected: { text: string, range: [number, number][] }[]) {
const xterm = new Terminal();
const provider = instantiationService.createInstance(TerminalProtocolLinkProvider, xterm, () => { }, () => { });
const provider = instantiationService.createInstance(TerminalProtocolLinkProvider, xterm, () => { }, () => { }, () => { }, (text: string, cb: (result: { uri: URI, isDirectory: boolean } | undefined) => void) => {
cb({ uri: URI.parse(text), isDirectory: false });
});
// Write the text and wait for the parser to finish
await new Promise<void>(r => xterm.write(text, r));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册