From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Samuel Attard Date: Fri, 14 Feb 2020 13:35:47 -0800 Subject: fix: route mouse event navigations through the web_contents delegate This ensures that embedders can handle browser-side mouse navigations themselves. We need this so that we can correctly ensure that processes are not restarted for in-document navigations. Refs: https://chromium-review.googlesource.com/c/chromium/src/+/1769525 This patch can be removed once app.allowRendererProcessReuse is forced to true as then Chromiums assumptions around processes become correct. diff --git a/content/browser/web_contents/web_contents_impl.cc b/content/browser/web_contents/web_contents_impl.cc index 762d4d6164df6f097c3dd77c695a3270a225ec68..eac2487f18332616b1550bd7fa1f39f5c532b079 100644 --- a/content/browser/web_contents/web_contents_impl.cc +++ b/content/browser/web_contents/web_contents_impl.cc @@ -2971,11 +2971,13 @@ bool WebContentsImpl::HandleMouseEvent(const blink::WebMouseEvent& event) { WebContentsImpl* outermost = GetOutermostWebContents(); if (event.button == blink::WebPointerProperties::Button::kBack && outermost->controller_.CanGoBack()) { - outermost->controller_.GoBack(); + if (delegate_->OnGoToEntryOffset(-1)) + outermost->controller_.GoBack(); return true; } else if (event.button == blink::WebPointerProperties::Button::kForward && outermost->controller_.CanGoForward()) { - outermost->controller_.GoForward(); + if (delegate_->OnGoToEntryOffset(1)) + outermost->controller_.GoForward(); return true; } }