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

Unified Diff: chrome/browser/chrome_content_browser_client.cc

Issue 2946113002: Use FrameIsAd to decide whether to isolate a frame in TopDocumentIsolation mode. (Closed)
Patch Set: Addressing CR feedback from jkarlin@ and creis@. Created 3 years, 5 months 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/chrome_content_browser_client.cc
diff --git a/chrome/browser/chrome_content_browser_client.cc b/chrome/browser/chrome_content_browser_client.cc
index 2a6c4cb5e480edfd3a234224490b7a75f09266c8..b3a32bfe8bca44e0cb7abe948fdbd53942e48463 100644
--- a/chrome/browser/chrome_content_browser_client.cc
+++ b/chrome/browser/chrome_content_browser_client.cc
@@ -19,6 +19,7 @@
#include "base/lazy_instance.h"
#include "base/macros.h"
#include "base/memory/ptr_util.h"
+#include "base/metrics/field_trial_params.h"
#include "base/metrics/histogram_macros.h"
#include "base/path_service.h"
#include "base/strings/string_number_conversions.h"
@@ -55,6 +56,7 @@
#include "chrome/browser/nacl_host/nacl_browser_delegate_impl.h"
#include "chrome/browser/net_benchmarking.h"
#include "chrome/browser/notifications/platform_notification_service_impl.h"
+#include "chrome/browser/page_load_metrics/ads_detection.h"
#include "chrome/browser/page_load_metrics/experiments/delay_navigation_throttle.h"
#include "chrome/browser/page_load_metrics/metrics_navigation_throttle.h"
#include "chrome/browser/page_load_metrics/page_load_metrics_util.h"
@@ -1263,20 +1265,37 @@ void ChromeContentBrowserClient::OverrideNavigationParams(
#endif
}
-bool ChromeContentBrowserClient::
- ShouldFrameShareParentSiteInstanceDespiteTopDocumentIsolation(
- const GURL& url,
- content::SiteInstance* parent_site_instance) {
- if (IsNTPSiteInstance(parent_site_instance))
- return true;
+bool ChromeContentBrowserClient::ShouldIsolateFrameForTopDocumentIsolation(
+ content::NavigationHandle* navigation_handle,
+ content::SiteInstance* main_frame_site_instance) {
+ if (IsNTPSiteInstance(main_frame_site_instance))
+ return false;
#if BUILDFLAG(ENABLE_EXTENSIONS)
- return ChromeContentBrowserClientExtensionsPart::
- ShouldFrameShareParentSiteInstanceDespiteTopDocumentIsolation(
- url, parent_site_instance);
-#else
- return false;
+ if (ChromeContentBrowserClientExtensionsPart::
+ IsMainFrameSiteInstanceExcludedFromTopDocumentIsolation(
+ main_frame_site_instance)) {
+ return false;
+ }
#endif
+
+ features::TopDocumentIsolationMode tdiMode =
+ static_cast<features::TopDocumentIsolationMode>(
+ base::GetFieldTrialParamByFeatureAsInt(
+ ::features::kTopDocumentIsolation,
+ ::features::kTopDocumentIsolationModeParam,
+ static_cast<int>(
+ features::TopDocumentIsolationMode::Unspecified)));
+ switch (tdiMode) {
+ case features::TopDocumentIsolationMode::Unspecified:
+ case features::TopDocumentIsolationMode::Ads:
+ return page_load_metrics::GetDetectedAdTypes(navigation_handle).any();
+
+ case features::TopDocumentIsolationMode::CrossSite:
+ return true;
+ }
+ NOTREACHED();
+ return false;
}
bool ChromeContentBrowserClient::IsSuitableHost(

Powered by Google App Engine
This is Rietveld 408576698