| 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(
|
|
|