Skip to content

Commit

Permalink
fix: handle exception in webContents.send
Browse files Browse the repository at this point in the history
  • Loading branch information
VerteDinde committed Oct 13, 2021
1 parent f99fbc2 commit 73a902e
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 8 deletions.
7 changes: 6 additions & 1 deletion lib/browser/api/web-contents.ts
Expand Up @@ -122,7 +122,12 @@ WebContents.prototype.postMessage = function (...args) {
};

WebContents.prototype.send = function (channel, ...args) {
return this.mainFrame.send(channel, ...args);
// Catch unhandled rejections if webFrameMain is disposed/unavailable
try {
return this.mainFrame.send(channel, ...args);
} catch (e) {
console.error(e);
}
};

WebContents.prototype._sendInternal = function (channel, ...args) {
Expand Down
10 changes: 3 additions & 7 deletions shell/browser/api/electron_api_web_frame_main.cc
Expand Up @@ -100,11 +100,7 @@ void WebFrameMain::MarkRenderFrameDisposed() {

void WebFrameMain::UpdateRenderFrameHost(content::RenderFrameHost* rfh) {
// Should only be called when swapping frames.
if (!render_frame_disposed_) {
DCHECK(render_frame_);
} else {
render_frame_disposed_ = false;
}
render_frame_disposed_ = false;
render_frame_ = rfh;
renderer_api_.reset();
}
Expand Down Expand Up @@ -162,7 +158,7 @@ v8::Local<v8::Promise> WebFrameMain::ExecuteJavaScript(
}

bool WebFrameMain::Reload() {
if (render_frame_disposed_)
if (!CheckRenderFrame())
return false;
return render_frame_->Reload();
}
Expand All @@ -178,7 +174,7 @@ void WebFrameMain::Send(v8::Isolate* isolate,
return;
}

if (render_frame_disposed_)
if (!CheckRenderFrame())
return;

GetRendererApi()->Message(internal, channel, std::move(message),
Expand Down

0 comments on commit 73a902e

Please sign in to comment.