Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4147)

Unified Diff: chrome/browser/extensions/api/web_navigation/web_navigation_api_helpers.cc

Issue 2545133002: PlzNavigate: Fix ordering of onBeforeNavigate and onCreatedNavigationTarget. (Closed)
Patch Set: Rebase on ToT. Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/web_navigation/web_navigation_api_helpers.cc
diff --git a/chrome/browser/extensions/api/web_navigation/web_navigation_api_helpers.cc b/chrome/browser/extensions/api/web_navigation/web_navigation_api_helpers.cc
index 3f1e5a4aa9900b1928d6fb2b720e1357d11962f7..2cdcaa6f1c2df20c947360521eb56dfc54069fcc 100644
--- a/chrome/browser/extensions/api/web_navigation/web_navigation_api_helpers.cc
+++ b/chrome/browser/extensions/api/web_navigation/web_navigation_api_helpers.cc
@@ -13,6 +13,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/time/time.h"
#include "base/values.h"
+#include "chrome/browser/extensions/api/web_navigation/web_navigation_api.h"
#include "chrome/browser/extensions/api/web_navigation/web_navigation_api_constants.h"
#include "chrome/browser/extensions/extension_tab_util.h"
#include "chrome/browser/profiles/profile.h"
@@ -61,8 +62,9 @@ void DispatchEvent(content::BrowserContext* browser_context,
} // namespace
-// Constructs and dispatches an onBeforeNavigate event.
-void DispatchOnBeforeNavigate(content::NavigationHandle* navigation_handle) {
+// Constructs an onBeforeNavigate event.
+std::unique_ptr<Event> CreateOnBeforeNavigateEvent(
+ content::NavigationHandle* navigation_handle) {
GURL url(navigation_handle->GetURL());
if (navigation_handle->IsSrcdoc())
url = GURL(content::kAboutSrcDocURL);
@@ -81,8 +83,15 @@ void DispatchOnBeforeNavigate(content::NavigationHandle* navigation_handle) {
new Event(events::WEB_NAVIGATION_ON_BEFORE_NAVIGATE,
web_navigation::OnBeforeNavigate::kEventName,
web_navigation::OnBeforeNavigate::Create(details)));
- DispatchEvent(navigation_handle->GetWebContents()->GetBrowserContext(),
- std::move(event), url);
+
+ EventFilteringInfo info;
+ info.SetURL(navigation_handle->GetURL());
+
+ event->restrict_to_browser_context =
+ navigation_handle->GetWebContents()->GetBrowserContext();
+ event->filter_info = info;
+
+ return event;
}
// Constructs and dispatches an onCommitted or onReferenceFragmentUpdated
@@ -203,6 +212,12 @@ void DispatchOnCreatedNavigationTarget(
web_navigation::OnCreatedNavigationTarget::kEventName,
web_navigation::OnCreatedNavigationTarget::Create(details)));
DispatchEvent(browser_context, std::move(event), target_url);
+
+ // If the target WebContents already received the onBeforeNavigate event,
+ // send it immediately after the onCreatedNavigationTarget above.
+ WebNavigationTabObserver* target_observer =
+ WebNavigationTabObserver::Get(target_web_contents);
+ target_observer->DispatchCachedOnBeforeNavigate();
}
// Constructs and dispatches an onErrorOccurred event.

Powered by Google App Engine
This is Rietveld 408576698