fix: window.open doesn't work correctly in child window (#25080)
If speculative render view host is deleted during naviagation to page we try to open with call to window.open window is destroyed right after it is created. It may happen when naviagation triggers redirect from http to https. To void that we should emit event current-render-view-deleted only when render view host which was destroyed is the current webcontent's rvh.
This commit is contained in:
parent
3e627f7700
commit
73adeef877
3 changed files with 26 additions and 16 deletions
|
@ -1066,22 +1066,13 @@ void WebContents::RenderFrameCreated(
|
|||
rwh_impl->disable_hidden_ = !background_throttling_;
|
||||
}
|
||||
|
||||
void WebContents::RenderViewHostChanged(content::RenderViewHost* old_host,
|
||||
content::RenderViewHost* new_host) {
|
||||
currently_committed_process_id_ = new_host->GetProcess()->GetID();
|
||||
}
|
||||
|
||||
void WebContents::RenderViewDeleted(content::RenderViewHost* render_view_host) {
|
||||
// This event is necessary for tracking any states with respect to
|
||||
// intermediate render view hosts aka speculative render view hosts. Currently
|
||||
// used by object-registry.js to ref count remote objects.
|
||||
Emit("render-view-deleted", render_view_host->GetProcess()->GetID());
|
||||
|
||||
if (-1 == currently_committed_process_id_ ||
|
||||
render_view_host->GetProcess()->GetID() ==
|
||||
currently_committed_process_id_) {
|
||||
currently_committed_process_id_ = -1;
|
||||
|
||||
if (web_contents()->GetRenderViewHost() == render_view_host) {
|
||||
// When the RVH that has been deleted is the current RVH it means that the
|
||||
// the web contents are being closed. This is communicated by this event.
|
||||
// Currently tracked by guest-window-manager.js to destroy the
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue