From 51a39e9b19ffdf77efec4672f5b216678d2af03b Mon Sep 17 00:00:00 2001 From: Michael Liao Date: Tue, 15 Jun 2021 12:28:28 -0700 Subject: [PATCH] [Feature]: Added ability to switch targets with DevTools open (#415) * [Feature]: Added ability to switch targets with DevTools open * Adding tests * updating urls --- src/devtoolsPanel.ts | 7 +++++-- test/devtoolsPanel.test.ts | 10 ++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/devtoolsPanel.ts b/src/devtoolsPanel.ts index f3357693..59446e1b 100644 --- a/src/devtoolsPanel.ts +++ b/src/devtoolsPanel.ts @@ -363,9 +363,12 @@ export class DevToolsPanel { config: IRuntimeConfig): void { const column = vscode.ViewColumn.Beside; - if (DevToolsPanel.instance) { - DevToolsPanel.instance.panel.reveal(column); + if (DevToolsPanel.instance && DevToolsPanel.instance.targetUrl === targetUrl) { + DevToolsPanel.instance.panel.reveal(column); } else { + if (DevToolsPanel.instance) { + DevToolsPanel.instance.dispose(); + } const panel = vscode.window.createWebviewPanel(SETTINGS_STORE_NAME, SETTINGS_WEBVIEW_NAME, column, { enableCommandUris: true, enableScripts: true, diff --git a/test/devtoolsPanel.test.ts b/test/devtoolsPanel.test.ts index 92b777d7..15b2df0a 100644 --- a/test/devtoolsPanel.test.ts +++ b/test/devtoolsPanel.test.ts @@ -99,6 +99,16 @@ describe("devtoolsPanel", () => { expect(mockPanel.onDidDispose).toHaveBeenCalled(); }); + it("switches targets with active session", async () => { + const dtp = await import("../src/devtoolsPanel"); + const mockVsCode = jest.requireMock("vscode"); + + dtp.DevToolsPanel.createOrShow(context, mockTelemetry, "https://www.bing.com/", mockRuntimeConfig); + dtp.DevToolsPanel.createOrShow(context, mockTelemetry, "https://www.microsoft.com/", mockRuntimeConfig); + expect(mockPanel.onDidDispose).toHaveBeenCalledTimes(2); + expect(mockVsCode.window.createWebviewPanel).toHaveBeenCalledTimes(2); + }); + it("calls reveal on existing instance", async () => { const dtp = await import("../src/devtoolsPanel"); dtp.DevToolsPanel.createOrShow(context, mockTelemetry, "", mockRuntimeConfig);