Make postMessage's behavior more sane

Fixes #146253

Two parts to this change:

- Make postMessage return false if a message cannot be delivered to a webview

- Don't queue messages for hidden (and non-retained) webviews. This was potentially causing a huge flood of messages to be dumped into the webview once it becomes visible again
This commit is contained in:
Matt Bierner
2022-04-11 15:17:58 -07:00
parent a4e3e86c59
commit 21173541e1
5 changed files with 39 additions and 19 deletions

View File

@@ -65,8 +65,7 @@ export class MainThreadWebviews extends Disposable implements extHostProtocol.Ma
public async $postMessage(handle: extHostProtocol.WebviewHandle, jsonMessage: string, ...buffers: VSBuffer[]): Promise<boolean> {
const webview = this.getWebview(handle);
const { message, arrayBuffers } = deserializeWebviewMessage(jsonMessage, buffers);
webview.postMessage(message, arrayBuffers);
return true;
return webview.postMessage(message, arrayBuffers);
}
private hookupWebviewEventDelegate(handle: extHostProtocol.WebviewHandle, webview: IOverlayWebview, options: { serializeBuffersForPostMessage: boolean }) {