From 8e1a291e62819975accf330e07a83e9bacf30775 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Thu, 6 Aug 2020 13:51:15 -0700 Subject: [PATCH] Use joinPath Also cleans up a bit more --- webview-codicons-sample/src/extension.ts | 37 ++++++------------------ 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/webview-codicons-sample/src/extension.ts b/webview-codicons-sample/src/extension.ts index b5c58028..a4a1d66b 100644 --- a/webview-codicons-sample/src/extension.ts +++ b/webview-codicons-sample/src/extension.ts @@ -1,10 +1,9 @@ -import * as path from 'path'; import * as vscode from 'vscode'; export function activate(context: vscode.ExtensionContext) { context.subscriptions.push( vscode.commands.registerCommand('catCodicons.show', () => { - CatCodiconsPanel.show(context.extensionPath); + CatCodiconsPanel.show(context.extensionUri); }) ); } @@ -14,7 +13,7 @@ class CatCodiconsPanel { public static readonly viewType = 'catCodicons'; - public static show(extensionPath: string) { + public static show(extensionUri: vscode.Uri) { const column = vscode.window.activeTextEditor ? vscode.window.activeTextEditor.viewColumn : undefined; @@ -25,25 +24,15 @@ class CatCodiconsPanel { column || vscode.ViewColumn.One ); - panel.webview.html = this._getHtmlForWebview(panel.webview, extensionPath); + panel.webview.html = this._getHtmlForWebview(panel.webview, extensionUri); } - private static _getHtmlForWebview(webview: vscode.Webview, extensionPath: string) { + private static _getHtmlForWebview(webview: vscode.Webview, extensionUri: vscode.Uri) { - // Use a nonce to only allow specific resources - const nonce = getNonce(); - - const styleUri = webview.asWebviewUri(vscode.Uri.file( - path.join(extensionPath, "media", "styles.css") - )); - - const codiconsUri = webview.asWebviewUri(vscode.Uri.file( - path.join(extensionPath, 'node_modules', 'vscode-codicons', 'dist', 'codicon.css') - )); - - const codiconsFontUri = webview.asWebviewUri(vscode.Uri.file( - path.join(extensionPath, 'node_modules', 'vscode-codicons', 'dist', 'codicon.ttf') - )); + // Get resource paths + const styleUri = webview.asWebviewUri(vscode.Uri.joinPath(extensionUri, 'media', 'styles.css')); + const codiconsUri = webview.asWebviewUri(vscode.Uri.joinPath(extensionUri, 'node_modules', 'vscode-codicons', 'dist', 'codicon.css')); + const codiconsFontUri = webview.asWebviewUri(vscode.Uri.joinPath(extensionUri, 'node_modules', 'vscode-codicons', 'dist', 'codicon.ttf')); return ` @@ -54,7 +43,7 @@ class CatCodiconsPanel { Use a content security policy to only allow loading images from https or from our extension directory, and only allow scripts that have a specific nonce. --> - + Cat Coding @@ -396,11 +385,3 @@ class CatCodiconsPanel { } } -function getNonce() { - let text = ''; - const possible = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; - for (let i = 0; i < 32; i++) { - text += possible.charAt(Math.floor(Math.random() * possible.length)); - } - return text; -}