Browse Source

fix: reset render_frame_disposed_ after render frame host change (#31401)

* fix: reset render_frame_disposed_ after hang

* fix: handle exception in webContents.send
Keeley Hammond 3 years ago
parent
commit
bff20bd769

+ 10 - 2
lib/browser/api/web-frame-main.ts

@@ -7,7 +7,11 @@ WebFrameMain.prototype.send = function (channel, ...args) {
     throw new Error('Missing required channel argument');
   }
 
-  return this._send(false /* internal */, channel, args);
+  try {
+    return this._send(false /* internal */, channel, args);
+  } catch (e) {
+    console.error('Error sending from webFrameMain: ', e);
+  }
 };
 
 WebFrameMain.prototype._sendInternal = function (channel, ...args) {
@@ -15,7 +19,11 @@ WebFrameMain.prototype._sendInternal = function (channel, ...args) {
     throw new Error('Missing required channel argument');
   }
 
-  return this._send(true /* internal */, channel, args);
+  try {
+    return this._send(true /* internal */, channel, args);
+  } catch (e) {
+    console.error('Error sending from webFrameMain: ', e);
+  }
 };
 
 WebFrameMain.prototype.postMessage = function (...args) {

+ 1 - 1
shell/browser/api/electron_api_web_frame_main.cc

@@ -100,7 +100,7 @@ void WebFrameMain::MarkRenderFrameDisposed() {
 
 void WebFrameMain::UpdateRenderFrameHost(content::RenderFrameHost* rfh) {
   // Should only be called when swapping frames.
-  DCHECK(render_frame_);
+  render_frame_disposed_ = false;
   render_frame_ = rfh;
   renderer_api_.reset();
 }