mirror of
https://github.com/electron/electron.git
synced 2026-01-09 15:38:08 -05:00
fix: crash when clicking links with target=_blank from webview (#29874)
This commit is contained in:
@@ -105,13 +105,18 @@ content::WebContents* WebViewGuestDelegate::CreateNewGuestWindow(
|
||||
guest_params.context = embedder_web_contents_->GetNativeView();
|
||||
std::unique_ptr<content::WebContents> guest_contents =
|
||||
content::WebContents::Create(guest_params);
|
||||
content::RenderWidgetHost* render_widget_host =
|
||||
guest_contents->GetRenderViewHost()->GetWidget();
|
||||
auto* guest_contents_impl =
|
||||
static_cast<content::WebContentsImpl*>(guest_contents.release());
|
||||
guest_contents_impl->GetView()->CreateViewForWidget(render_widget_host);
|
||||
|
||||
return guest_contents_impl;
|
||||
if (!create_params.opener_suppressed) {
|
||||
auto* guest_contents_impl =
|
||||
static_cast<content::WebContentsImpl*>(guest_contents.release());
|
||||
auto* new_guest_view = guest_contents_impl->GetView();
|
||||
content::RenderWidgetHostView* widget_view =
|
||||
new_guest_view->CreateViewForWidget(
|
||||
guest_contents_impl->GetRenderViewHost()->GetWidget());
|
||||
if (!create_params.initially_hidden)
|
||||
widget_view->Show();
|
||||
return guest_contents_impl;
|
||||
}
|
||||
return guest_contents.release();
|
||||
}
|
||||
|
||||
} // namespace electron
|
||||
|
||||
@@ -488,6 +488,15 @@ describe('<webview> tag', function () {
|
||||
|
||||
await webContentsCreated;
|
||||
});
|
||||
|
||||
it('does not crash when creating window with noopener', async () => {
|
||||
loadWebView(w.webContents, {
|
||||
allowpopups: 'on',
|
||||
webpreferences: 'nativeWindowOpen=1',
|
||||
src: `file://${path.join(fixtures, 'api', 'native-window-open-noopener.html')}`
|
||||
});
|
||||
await emittedOnce(app, 'browser-window-created');
|
||||
});
|
||||
});
|
||||
|
||||
describe('webpreferences attribute', () => {
|
||||
|
||||
10
spec/fixtures/api/native-window-open-noopener.html
vendored
Normal file
10
spec/fixtures/api/native-window-open-noopener.html
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
<html>
|
||||
<body>
|
||||
<a href="blank.html" target="_blank">noopener example</a>
|
||||
</body>
|
||||
<script type="text/javascript" charset="utf-8">
|
||||
window.onload = () => {
|
||||
document.querySelector('a').click()
|
||||
}
|
||||
</script>
|
||||
</html>
|
||||
Reference in New Issue
Block a user