Microsoft/vscode

[webviews] deserializeWebviewPanel is not called when switching workspace trust to restricted

Open

#195.009 geöffnet am 6. Okt. 2023

Auf GitHub ansehen
 (0 Kommentare) (0 Reaktionen) (1 zugewiesene Person)TypeScript (10.221 Forks)batch import
bughelp wantedwebview

Repository-Metriken

Stars
 (74.848 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 11h 43m) (1.000 gemergte PRs in 30 T)

Beschreibung

Does this issue occur when all extensions are disabled?: Yes/No

It is a custom extension which uses the Webview Api.

  • VS Code Version: 1.83.0
  • OS Version: Ubuntu 23.04

Steps to Reproduce:

  1. Use a webview which implements deserializeWebviewPanel
  2. Write console.log() statements when extension starts, ends, registers deserializeWebviewPanel and inside deserializeWebviewPanel
  3. Notice that on VSCode reload deserializeWebviewPanel is called, on workspace trust change to false the extension is reloaded but deserializeWebviewPanel is not called.
  4. The webview becomes unusable as it is not tracked anymore by the extension (trust=false restarts extension apparently).

First lines are printed when Reload Window is triggered. Last lines when switching the workspace trust to false: Screenshot from 2023-10-06 17-17-51

Possible workarounds:

Use onDidGrantWorkspaceTrust which is fired only when trusting the workspace + window.tabGroup Api (available from 1.67) to find the Panel and reuse it.

Contributor Guide