From 3475cd168eb090ec2944e682fedabab8e8cb22c1 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Thu, 28 Mar 2019 11:13:05 -0700 Subject: [PATCH] fix: handle a race condition between preload scripts executing and (#17577) navigations There is a race condition between DidCreateScriptContext and another navigation occuring in the main process. If the navigation occurs while the preload script is running, the same process is re-used. This ensures that any pending navigations are completely removed / ignored when we trigger a new navigation. Fixes #17576 --- atom/browser/api/atom_api_web_contents.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/atom/browser/api/atom_api_web_contents.cc b/atom/browser/api/atom_api_web_contents.cc index e5f6b948d273b..05149fe88604f 100644 --- a/atom/browser/api/atom_api_web_contents.cc +++ b/atom/browser/api/atom_api_web_contents.cc @@ -1200,6 +1200,9 @@ void WebContents::LoadURL(const GURL& url, const mate::Dictionary& options) { params.transition_type = ui::PAGE_TRANSITION_TYPED; params.should_clear_history_list = true; params.override_user_agent = content::NavigationController::UA_OVERRIDE_TRUE; + // Discord non-committed entries to ensure that we don't re-use a pending + // entry + web_contents()->GetController().DiscardNonCommittedEntries(); web_contents()->GetController().LoadURLWithParams(params); // Set the background color of RenderWidgetHostView.