Commit dbead20a authored by Alex Moshchuk's avatar Alex Moshchuk Committed by Commit Bot

Android: Activate a synthetic trial when encountering an OOPIF.

This will help us better understand the perf difference between users
who encounter pages with OOPIFs and users who don't.

Bug: 946575
Change-Id: I021d1759f0c3c5b0863b9230d5f8d8aacad47e2f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1625842
Auto-Submit: Alex Moshchuk <alexmos@chromium.org>
Commit-Queue: Avi Drissman <avi@chromium.org>
Reviewed-by: default avatarAvi Drissman <avi@chromium.org>
Reviewed-by: default avatarCharlie Reis <creis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#662931}
parent 3b54a8c8
...@@ -1445,7 +1445,8 @@ class SiteIsolationForPasswordSitesBrowserTest ...@@ -1445,7 +1445,8 @@ class SiteIsolationForPasswordSitesBrowserTest
expected_entry) != synthetic_trials.end(); expected_entry) != synthetic_trials.end();
} }
const std::string kSyntheticTrialName = "SiteIsolationActive"; const std::string kSiteIsolationSyntheticTrialName = "SiteIsolationActive";
const std::string kOOPIFSyntheticTrialName = "OutOfProcessIframesActive";
const std::string kSyntheticTrialGroup = "Enabled"; const std::string kSyntheticTrialGroup = "Enabled";
protected: protected:
...@@ -1548,24 +1549,31 @@ IN_PROC_BROWSER_TEST_F(SiteIsolationForPasswordSitesBrowserTest, ...@@ -1548,24 +1549,31 @@ IN_PROC_BROWSER_TEST_F(SiteIsolationForPasswordSitesBrowserTest,
web_contents); web_contents);
recorder->EnableSiteIsolationSyntheticTrialForTesting(); recorder->EnableSiteIsolationSyntheticTrialForTesting();
EXPECT_FALSE(HasSyntheticTrial(kSyntheticTrialName)); EXPECT_FALSE(HasSyntheticTrial(kSiteIsolationSyntheticTrialName));
EXPECT_FALSE(HasSyntheticTrial(kOOPIFSyntheticTrialName));
// Browse to a page with some iframes without involving any isolated origins. // Browse to a page with some iframes without involving any isolated origins.
GURL unisolated_url(embedded_test_server()->GetURL( GURL unisolated_url(embedded_test_server()->GetURL(
"a.com", "/cross_site_iframe_factory.html?a(b,c(a))")); "a.com", "/cross_site_iframe_factory.html?a(b,c(a))"));
ui_test_utils::NavigateToURL(browser(), unisolated_url); ui_test_utils::NavigateToURL(browser(), unisolated_url);
EXPECT_FALSE(HasSyntheticTrial(kSyntheticTrialName)); EXPECT_FALSE(HasSyntheticTrial(kSiteIsolationSyntheticTrialName));
// Now browse to an isolated origin. // Now browse to an isolated origin.
GURL isolated_url( GURL isolated_url(
embedded_test_server()->GetURL("isolated1.com", "/title1.html")); embedded_test_server()->GetURL("isolated1.com", "/title1.html"));
ui_test_utils::NavigateToURL(browser(), isolated_url); ui_test_utils::NavigateToURL(browser(), isolated_url);
EXPECT_TRUE( EXPECT_TRUE(IsInSyntheticTrialGroup(kSiteIsolationSyntheticTrialName,
IsInSyntheticTrialGroup(kSyntheticTrialName, kSyntheticTrialGroup)); kSyntheticTrialGroup));
// The OOPIF synthetic trial shouldn't be activated, since the isolated
// oriign page doesn't have any OOPIFs.
EXPECT_FALSE(
IsInSyntheticTrialGroup(kOOPIFSyntheticTrialName, kSyntheticTrialGroup));
} }
// This test checks that the synthetic field trial is activated properly after // This test checks that the synthetic field trials for both site isolation and
// a navigation to an isolated origin commits in a subframe. // encountering OOPIFs are activated properly after a navigation to an isolated
// origin commits in a subframe.
IN_PROC_BROWSER_TEST_F(SiteIsolationForPasswordSitesBrowserTest, IN_PROC_BROWSER_TEST_F(SiteIsolationForPasswordSitesBrowserTest,
SyntheticTrialFromSubframe) { SyntheticTrialFromSubframe) {
content::WebContents* web_contents = content::WebContents* web_contents =
...@@ -1576,14 +1584,17 @@ IN_PROC_BROWSER_TEST_F(SiteIsolationForPasswordSitesBrowserTest, ...@@ -1576,14 +1584,17 @@ IN_PROC_BROWSER_TEST_F(SiteIsolationForPasswordSitesBrowserTest,
web_contents); web_contents);
recorder->EnableSiteIsolationSyntheticTrialForTesting(); recorder->EnableSiteIsolationSyntheticTrialForTesting();
EXPECT_FALSE(HasSyntheticTrial(kSyntheticTrialName)); EXPECT_FALSE(HasSyntheticTrial(kSiteIsolationSyntheticTrialName));
EXPECT_FALSE(HasSyntheticTrial(kOOPIFSyntheticTrialName));
// Browse to a page with an isolated origin on one of the iframes. // Browse to a page with an isolated origin on one of the iframes.
GURL isolated_url(embedded_test_server()->GetURL( GURL isolated_url(embedded_test_server()->GetURL(
"a.com", "/cross_site_iframe_factory.html?a(b,c,isolated2,d)")); "a.com", "/cross_site_iframe_factory.html?a(b,c,isolated2,d)"));
ui_test_utils::NavigateToURL(browser(), isolated_url); ui_test_utils::NavigateToURL(browser(), isolated_url);
EXPECT_TRUE(IsInSyntheticTrialGroup(kSiteIsolationSyntheticTrialName,
kSyntheticTrialGroup));
EXPECT_TRUE( EXPECT_TRUE(
IsInSyntheticTrialGroup(kSyntheticTrialName, kSyntheticTrialGroup)); IsInSyntheticTrialGroup(kOOPIFSyntheticTrialName, kSyntheticTrialGroup));
} }
// Verifies that persistent isolated sites survive restarts. Part 1. // Verifies that persistent isolated sites survive restarts. Part 1.
......
...@@ -60,6 +60,14 @@ void NavigationMetricsRecorder::DidFinishNavigation( ...@@ -60,6 +60,14 @@ void NavigationMetricsRecorder::DidFinishNavigation(
"SiteIsolationActive", "Enabled"); "SiteIsolationActive", "Enabled");
} }
// Also register a synthetic field trial when we encounter a navigation to an
// OOPIF.
if (is_synthetic_isolation_trial_enabled_ &&
navigation_handle->GetRenderFrameHost()->IsCrossProcessSubframe()) {
ChromeMetricsServiceAccessor::RegisterSyntheticFieldTrial(
"OutOfProcessIframesActive", "Enabled");
}
if (!navigation_handle->IsInMainFrame()) if (!navigation_handle->IsInMainFrame())
return; return;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment