Index: chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
diff --git a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
index ef6ee6b46d3390770c47ec4b385629628cf736a9..4991a9e42119f5946462571b6bcff32b383e6bb8 100644 |
--- a/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
+++ b/chrome/browser/extensions/chrome_content_browser_client_extensions_part.cc |
@@ -21,10 +21,12 @@ |
#include "chrome/browser/sync_file_system/local/sync_file_system_backend.h" |
#include "chrome/common/chrome_constants.h" |
#include "chrome/common/chrome_switches.h" |
+#include "chrome/common/extensions/extension_constants.h" |
#include "chrome/common/extensions/extension_process_policy.h" |
#include "components/guest_view/browser/guest_view_message_filter.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/browser_url_handler.h" |
+#include "content/public/browser/page_navigator.h" |
#include "content/public/browser/render_process_host.h" |
#include "content/public/browser/render_view_host.h" |
#include "content/public/browser/resource_dispatcher_host.h" |
@@ -535,6 +537,31 @@ bool ChromeContentBrowserClientExtensionsPart::ShouldAllowOpenURL( |
return false; |
} |
+void ChromeContentBrowserClientExtensionsPart::OverrideOpenURLParams( |
+ content::SiteInstance* site_instance, |
+ content::OpenURLParams* params) { |
+ const Extension* extension = |
+ ExtensionRegistry::Get(site_instance->GetBrowserContext()) |
+ ->enabled_extensions() |
+ .GetExtensionOrAppByURL(site_instance->GetSiteURL()); |
+ if (!extension) |
+ return; |
+ |
+ if (extension->id() == extension_misc::kBookmarkManagerId && |
+ ui::PageTransitionCoreTypeIs(params->transition, |
+ ui::PAGE_TRANSITION_LINK)) { |
+ // Link clicks in the bookmark manager count as bookmarks and as browser- |
+ // initiated navigations. |
+ params->transition = ui::PAGE_TRANSITION_AUTO_BOOKMARK; |
+ params->is_renderer_initiated = false; |
+ } |
+ |
+ // Hide the referrer for extension pages. We don't want sites to see a |
+ // referrer of chrome-extension://<...>. |
+ if (extension->is_extension()) |
Devlin
2016/11/02 22:01:43
Note: this was the behavior prior to https://chrom
Charlie Reis
2016/11/04 23:31:59
Agreed.
|
+ params->referrer = content::Referrer(); |
+} |
+ |
// static |
std::unique_ptr<content::VpnServiceProxy> |
ChromeContentBrowserClientExtensionsPart::GetVpnServiceProxy( |