fix: uv loop polling when render process reuse enabled (#25869)
This commit is contained in:
parent
d57cd09f14
commit
e8166db9d7
2 changed files with 27 additions and 3 deletions
|
@ -108,12 +108,12 @@ void ElectronRendererClient::DidCreateScriptContext(
|
||||||
|
|
||||||
injected_frames_.insert(render_frame);
|
injected_frames_.insert(render_frame);
|
||||||
|
|
||||||
// If this is the first environment we are creating, prepare the node
|
|
||||||
// bindings.
|
|
||||||
if (!node_integration_initialized_) {
|
if (!node_integration_initialized_) {
|
||||||
node_integration_initialized_ = true;
|
node_integration_initialized_ = true;
|
||||||
node_bindings_->Initialize();
|
node_bindings_->Initialize();
|
||||||
node_bindings_->PrepareMessageLoop();
|
node_bindings_->PrepareMessageLoop();
|
||||||
|
} else if (reuse_renderer_processes_enabled) {
|
||||||
|
node_bindings_->PrepareMessageLoop();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup node tracing controller.
|
// Setup node tracing controller.
|
||||||
|
@ -129,7 +129,7 @@ void ElectronRendererClient::DidCreateScriptContext(
|
||||||
|
|
||||||
// If we have disabled the site instance overrides we should prevent loading
|
// If we have disabled the site instance overrides we should prevent loading
|
||||||
// any non-context aware native module
|
// any non-context aware native module
|
||||||
if (command_line->HasSwitch(switches::kDisableElectronSiteInstanceOverrides))
|
if (reuse_renderer_processes_enabled)
|
||||||
env->set_force_context_aware(true);
|
env->set_force_context_aware(true);
|
||||||
env->set_warn_context_aware(true);
|
env->set_warn_context_aware(true);
|
||||||
|
|
||||||
|
|
|
@ -4286,6 +4286,30 @@ describe('BrowserWindow module', () => {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
describe('reloading with allowRendererProcessReuse enabled', () => {
|
||||||
|
it('does not cause Node.js module API hangs after reload', (done) => {
|
||||||
|
const w = new BrowserWindow({
|
||||||
|
show: false,
|
||||||
|
webPreferences: {
|
||||||
|
nodeIntegration: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let count = 0;
|
||||||
|
ipcMain.on('async-node-api-done', () => {
|
||||||
|
if (count === 3) {
|
||||||
|
ipcMain.removeAllListeners('async-node-api-done');
|
||||||
|
done();
|
||||||
|
} else {
|
||||||
|
count++;
|
||||||
|
w.reload();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
w.loadFile(path.join(fixtures, 'pages', 'send-after-node.html'));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('window.webContents.focus()', () => {
|
describe('window.webContents.focus()', () => {
|
||||||
afterEach(closeAllWindows);
|
afterEach(closeAllWindows);
|
||||||
it('focuses window', async () => {
|
it('focuses window', async () => {
|
||||||
|
|
Loading…
Reference in a new issue