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

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: Fixes based on review. 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
« no previous file with comments | « chrome/browser/extensions/api/web_navigation/web_navigation_api_helpers.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..9659414e4ad83240cba00ccf8c4eb91f4e9e6f86 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,18 @@ 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());
+
+ Profile* profile = Profile::FromBrowserContext(
+ navigation_handle->GetWebContents()->GetBrowserContext());
+ if (profile) {
+ event->restrict_to_browser_context = profile;
Devlin 2016/12/02 21:58:31 Just use browser context directly.
nasko 2016/12/02 23:41:39 Done.
+ event->filter_info = info;
+ }
+
+ return event;
}
// Constructs and dispatches an onCommitted or onReferenceFragmentUpdated
@@ -203,6 +215,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.
« no previous file with comments | « chrome/browser/extensions/api/web_navigation/web_navigation_api_helpers.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698