Skip to content

Commit 0252ac4

Browse files
committed
Introduce and adopt extensionLocation
1 parent 6025f1f commit 0252ac4

23 files changed

Lines changed: 91 additions & 58 deletions

File tree

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,8 @@ class ViewsContainersExtensionHandler implements IWorkbenchContribution {
137137
private registerCustomViewContainers(containers: IUserFriendlyViewsContainerDescriptor[], extension: IExtensionDescription) {
138138
containers.forEach((descriptor, index) => {
139139
const cssClass = `extensionViewlet-${descriptor.id}`;
140-
const icon = join(extension.extensionFolderPath, descriptor.icon);
140+
// TODO@extensionLocation
141+
const icon = join(extension.extensionLocation.fsPath, descriptor.icon);
141142
this.registerCustomViewlet({ id: descriptor.id, title: descriptor.title, icon }, TEST_VIEW_CONTAINER_ORDER + index + 1, cssClass);
142143
});
143144
}

src/vs/workbench/api/electron-browser/mainThreadWebview.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55
import { IDisposable, dispose } from 'vs/base/common/lifecycle';
66
import * as map from 'vs/base/common/map';
7-
import URI from 'vs/base/common/uri';
7+
import URI, { UriComponents } from 'vs/base/common/uri';
88
import { TPromise } from 'vs/base/common/winjs.base';
99
import { localize } from 'vs/nls';
1010
import { IContextKeyService } from 'vs/platform/contextkey/common/contextkey';
@@ -71,9 +71,9 @@ export class MainThreadWebviews implements MainThreadWebviewsShape, WebviewReviv
7171
title: string,
7272
showOptions: { viewColumn: Position, preserveFocus: boolean },
7373
options: WebviewInputOptions,
74-
extensionFolderPath: string
74+
extensionLocation: UriComponents
7575
): void {
76-
const webview = this._webviewService.createWebview(MainThreadWebviews.viewType, title, showOptions, options, extensionFolderPath, this.createWebviewEventDelegate(handle));
76+
const webview = this._webviewService.createWebview(MainThreadWebviews.viewType, title, showOptions, options, URI.revive(extensionLocation), this.createWebviewEventDelegate(handle));
7777
webview.state = {
7878
viewType: viewType,
7979
state: undefined

src/vs/workbench/api/node/extHost.api.impl.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ export function createApiFactory(
415415
return extHostOutputService.createOutputChannel(name);
416416
},
417417
createWebviewPanel(viewType: string, title: string, showOptions: vscode.ViewColumn | { viewColumn: vscode.ViewColumn, preserveFocus?: boolean }, options: vscode.WebviewPanelOptions & vscode.WebviewOptions): vscode.WebviewPanel {
418-
return extHostWebviews.createWebview(viewType, title, showOptions, options, extension.extensionFolderPath);
418+
return extHostWebviews.createWebview(viewType, title, showOptions, options, extension.extensionLocation);
419419
},
420420
createTerminal(nameOrOptions: vscode.TerminalOptions | string, shellPath?: string, shellArgs?: string[]): vscode.Terminal {
421421
if (typeof nameOrOptions === 'object') {
@@ -725,7 +725,7 @@ class Extension<T> implements vscode.Extension<T> {
725725
constructor(extensionService: ExtHostExtensionService, description: IExtensionDescription) {
726726
this._extensionService = extensionService;
727727
this.id = description.id;
728-
this.extensionPath = paths.normalize(description.extensionFolderPath, true);
728+
this.extensionPath = paths.normalize(description.extensionLocation.fsPath, true);
729729
this.packageJSON = description;
730730
}
731731

@@ -788,6 +788,7 @@ const nullExtensionDescription: IExtensionDescription = {
788788
engines: undefined,
789789
extensionDependencies: undefined,
790790
extensionFolderPath: undefined,
791+
extensionLocation: undefined,
791792
isBuiltin: false,
792793
main: undefined,
793794
version: undefined

src/vs/workbench/api/node/extHost.protocol.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -355,7 +355,7 @@ export interface MainThreadTelemetryShape extends IDisposable {
355355
export type WebviewPanelHandle = string;
356356

357357
export interface MainThreadWebviewsShape extends IDisposable {
358-
$createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, viewOptions: { viewColumn: EditorPosition, preserveFocus: boolean }, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionFolderPath: string): void;
358+
$createWebviewPanel(handle: WebviewPanelHandle, viewType: string, title: string, viewOptions: { viewColumn: EditorPosition, preserveFocus: boolean }, options: vscode.WebviewPanelOptions & vscode.WebviewOptions, extensionLocation: UriComponents): void;
359359
$disposeWebview(handle: WebviewPanelHandle): void;
360360
$reveal(handle: WebviewPanelHandle, viewColumn: EditorPosition | null, preserveFocus: boolean): void;
361361
$setTitle(handle: WebviewPanelHandle, value: string): void;

src/vs/workbench/api/node/extHostExtensionService.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -243,8 +243,7 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
243243
if (!ext.main) {
244244
return undefined;
245245
}
246-
return realpath(ext.extensionFolderPath).then(value => tree.set(value, ext));
247-
246+
return realpath(ext.extensionLocation.fsPath).then(value => tree.set(value, ext));
248247
});
249248
this._extensionPathIndex = TPromise.join(extensions).then(() => tree);
250249
}
@@ -359,9 +358,9 @@ export class ExtHostExtensionService implements ExtHostExtensionServiceShape {
359358
globalState,
360359
workspaceState,
361360
subscriptions: [],
362-
get extensionPath() { return extensionDescription.extensionFolderPath; },
361+
get extensionPath() { return extensionDescription.extensionLocation.fsPath; },
363362
storagePath: this._storagePath.value(extensionDescription),
364-
asAbsolutePath: (relativePath: string) => { return join(extensionDescription.extensionFolderPath, relativePath); },
363+
asAbsolutePath: (relativePath: string) => { return join(extensionDescription.extensionLocation.fsPath, relativePath); },
365364
get logger() {
366365
checkProposedApiEnabled(extensionDescription);
367366
return that._extHostLogService.getExtLogger(extensionDescription.id);

src/vs/workbench/api/node/extHostWebview.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import * as typeConverters from 'vs/workbench/api/node/extHostTypeConverters';
1010
import { Position } from 'vs/platform/editor/common/editor';
1111
import { TPromise } from 'vs/base/common/winjs.base';
1212
import { Disposable } from './extHostTypes';
13+
import URI from 'vs/base/common/uri';
1314

1415
export class ExtHostWebview implements vscode.Webview {
1516
private readonly _handle: WebviewPanelHandle;
@@ -204,7 +205,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
204205
title: string,
205206
showOptions: vscode.ViewColumn | { viewColumn: vscode.ViewColumn, preserveFocus?: boolean },
206207
options: (vscode.WebviewPanelOptions & vscode.WebviewOptions) | undefined,
207-
extensionFolderPath: string
208+
extensionLocation: URI
208209
): vscode.WebviewPanel {
209210
options = options || {};
210211

@@ -215,7 +216,7 @@ export class ExtHostWebviews implements ExtHostWebviewsShape {
215216
};
216217

217218
const handle = ExtHostWebviews.webviewHandlePool++ + '';
218-
this._proxy.$createWebviewPanel(handle, viewType, title, webviewShowOptions, options, extensionFolderPath);
219+
this._proxy.$createWebviewPanel(handle, viewType, title, webviewShowOptions, options, extensionLocation);
219220

220221
const webview = new ExtHostWebview(handle, this._proxy, options);
221222
const panel = new ExtHostWebviewPanel(handle, this._proxy, viewType, title, viewColumn, options, webview);

src/vs/workbench/parts/debug/node/debugAdapter.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -365,7 +365,8 @@ export class DebugAdapter extends StreamDebugAdapter {
365365
if (debuggers && debuggers.length > 0) {
366366
debuggers.filter(dbg => strings.equalsIgnoreCase(dbg.type, debugType)).forEach(dbg => {
367367
// extract relevant attributes and make then absolute where needed
368-
const extractedDbg = DebugAdapter.extract(dbg, ed.extensionFolderPath);
368+
// TODO@extensionLocation
369+
const extractedDbg = DebugAdapter.extract(dbg, ed.extensionLocation.fsPath);
369370

370371
// merge
371372
objects.mixin(result, extractedDbg, ed.isBuiltin);

src/vs/workbench/parts/debug/test/node/debugger.test.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ import * as platform from 'vs/base/common/platform';
99
import { IAdapterExecutable, IConfigurationManager } from 'vs/workbench/parts/debug/common/debug';
1010
import { Debugger } from 'vs/workbench/parts/debug/node/debugger';
1111
import { TestConfigurationService } from 'vs/platform/configuration/test/common/testConfigurationService';
12-
import uri from 'vs/base/common/uri';
12+
import URI from 'vs/base/common/uri';
1313
import { TPromise } from 'vs/base/common/winjs.base';
1414
import { DebugAdapter } from 'vs/workbench/parts/debug/node/debugAdapter';
1515

1616

1717
suite('Debug - Debugger', () => {
1818
let _debugger: Debugger;
1919

20-
const extensionFolderPath = 'a/b/c/';
20+
const extensionFolderPath = '/a/b/c/';
2121
const debuggerContribution = {
2222
type: 'mock',
2323
label: 'Mock Debug',
@@ -53,6 +53,7 @@ suite('Debug - Debugger', () => {
5353
version: '1.0.0',
5454
publisher: 'vscode',
5555
extensionFolderPath: extensionFolderPath,
56+
extensionLocation: URI.file(extensionFolderPath),
5657
isBuiltin: false,
5758
engines: null,
5859
contributes: {
@@ -68,6 +69,7 @@ suite('Debug - Debugger', () => {
6869
version: '1.0.0',
6970
publisher: 'vscode',
7071
extensionFolderPath: '/e1/b/c/',
72+
extensionLocation: URI.file('/e1/b/c/'),
7173
isBuiltin: false,
7274
engines: null,
7375
contributes: {
@@ -89,6 +91,7 @@ suite('Debug - Debugger', () => {
8991
version: '1.0.0',
9092
publisher: 'vscode',
9193
extensionFolderPath: '/e2/b/c/',
94+
extensionLocation: URI.file('/e2/b/c/'),
9295
isBuiltin: false,
9396
engines: null,
9497
contributes: {
@@ -114,7 +117,7 @@ suite('Debug - Debugger', () => {
114117

115118

116119
const configurationManager = <IConfigurationManager>{
117-
debugAdapterExecutable(folderUri: uri | undefined, type: string): TPromise<IAdapterExecutable | undefined> {
120+
debugAdapterExecutable(folderUri: URI | undefined, type: string): TPromise<IAdapterExecutable | undefined> {
118121
return TPromise.as(undefined);
119122
}
120123
};

src/vs/workbench/parts/snippets/electron-browser/snippetsService.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,12 +61,13 @@ namespace schema {
6161
return false;
6262

6363
} else {
64-
const normalizedAbsolutePath = join(extension.description.extensionFolderPath, snippet.path);
65-
if (normalizedAbsolutePath.indexOf(extension.description.extensionFolderPath) !== 0) {
64+
// TODO@extensionLocation
65+
const normalizedAbsolutePath = join(extension.description.extensionLocation.fsPath, snippet.path);
66+
if (normalizedAbsolutePath.indexOf(extension.description.extensionLocation.fsPath) !== 0) {
6667
extension.collector.error(localize(
6768
'invalid.path.1',
6869
"Expected `contributes.{0}.path` ({1}) to be included inside extension's folder ({2}). This might make the extension non-portable.",
69-
extension.description.name, normalizedAbsolutePath, extension.description.extensionFolderPath
70+
extension.description.name, normalizedAbsolutePath, extension.description.extensionLocation.fsPath
7071
));
7172
return false;
7273
}

src/vs/workbench/parts/webview/electron-browser/webviewEditor.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,8 @@ export class WebviewEditor extends BaseWebviewEditor {
171171

172172
private getDefaultLocalResourceRoots(): URI[] {
173173
const rootPaths = this._contextService.getWorkspace().folders.map(x => x.uri);
174-
if ((this.input as WebviewEditorInput).extensionFolderPath) {
175-
rootPaths.push((this.input as WebviewEditorInput).extensionFolderPath);
174+
if ((this.input as WebviewEditorInput).extensionLocation) {
175+
rootPaths.push((this.input as WebviewEditorInput).extensionLocation);
176176
}
177177
return rootPaths;
178178
}

0 commit comments

Comments
 (0)