Commit b7fceb80 authored by Ryan Sturm's avatar Ryan Sturm Committed by Commit Bot

Reland "Adding a FTT config for PreconnectSameOriginDesktop"

This is a reland of 4e23e8e8

Patchset 1 is what previously landed. This caused flakes in other
loading predictor browser tests, so I added the holdback to all
of the tests. In a follow-up, I will make sure the tests check
for preconnects on the appropriate URLs.

See https://chromium-review.googlesource.com/c/chromium/src/+/2004181
for revert rationale.

Original change's description:
> Adding a FTT config for PreconnectSameOriginDesktop
>
> This experiment is in canary/dev and should be moved to Beta.
>
> Bug: 1038774
> Change-Id: I4fc9c44e2b68aa58f9eee7210a625103f45edb01
> Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1992684
> Commit-Queue: Ryan Sturm <ryansturm@chromium.org>
> Reviewed-by: Alex Ilin <alexilin@chromium.org>
> Reviewed-by: Ilya Sherman <isherman@chromium.org>
> Reviewed-by: Tarun Bansal <tbansal@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#732219}

Bug: 1038774
Change-Id: Id7bd4bddf5b5812d02a8953d0733f8af73007fb6

TBR=tbansal@chromium.org,alexilin@chromium.org

Change-Id: Id7bd4bddf5b5812d02a8953d0733f8af73007fb6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2004691Reviewed-by: default avatarAlex Ilin <alexilin@chromium.org>
Reviewed-by: default avatarIlya Sherman <isherman@chromium.org>
Reviewed-by: default avatarRyan Sturm <ryansturm@chromium.org>
Commit-Queue: Ryan Sturm <ryansturm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#732553}
parent 3e781947
...@@ -23,7 +23,7 @@ ...@@ -23,7 +23,7 @@
#include "content/public/browser/web_contents.h" #include "content/public/browser/web_contents.h"
#include "net/base/features.h" #include "net/base/features.h"
namespace { namespace features {
// A holdback that prevents the preconnect to measure benefit of the feature. // A holdback that prevents the preconnect to measure benefit of the feature.
const base::Feature kNavigationPredictorPreconnectHoldback { const base::Feature kNavigationPredictorPreconnectHoldback {
...@@ -34,6 +34,9 @@ const base::Feature kNavigationPredictorPreconnectHoldback { ...@@ -34,6 +34,9 @@ const base::Feature kNavigationPredictorPreconnectHoldback {
base::FEATURE_ENABLED_BY_DEFAULT base::FEATURE_ENABLED_BY_DEFAULT
#endif #endif
}; };
} // namespace features
namespace {
// Experiment with which event triggers the preconnect after commit. // Experiment with which event triggers the preconnect after commit.
const base::Feature kPreconnectOnDidFinishNavigation{ const base::Feature kPreconnectOnDidFinishNavigation{
...@@ -110,7 +113,8 @@ void NavigationPredictorPreconnectClient::DidFinishLoad( ...@@ -110,7 +113,8 @@ void NavigationPredictorPreconnectClient::DidFinishLoad(
} }
void NavigationPredictorPreconnectClient::MaybePreconnectNow() { void NavigationPredictorPreconnectClient::MaybePreconnectNow() {
if (base::FeatureList::IsEnabled(kNavigationPredictorPreconnectHoldback)) if (base::FeatureList::IsEnabled(
features::kNavigationPredictorPreconnectHoldback))
return; return;
if (browser_context_->IsOffTheRecord()) if (browser_context_->IsOffTheRecord())
......
...@@ -19,6 +19,10 @@ class BrowserContext; ...@@ -19,6 +19,10 @@ class BrowserContext;
class RenderFrameHost; class RenderFrameHost;
} // namespace content } // namespace content
namespace features {
extern const base::Feature kNavigationPredictorPreconnectHoldback;
}
class NavigationPredictorPreconnectClient class NavigationPredictorPreconnectClient
: public content::WebContentsObserver, : public content::WebContentsObserver,
public content::WebContentsUserData<NavigationPredictorPreconnectClient> { public content::WebContentsUserData<NavigationPredictorPreconnectClient> {
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "base/task/post_task.h" #include "base/task/post_task.h"
#include "base/test/scoped_feature_list.h" #include "base/test/scoped_feature_list.h"
#include "chrome/browser/browser_features.h" #include "chrome/browser/browser_features.h"
#include "chrome/browser/navigation_predictor/navigation_predictor_preconnect_client.h"
#include "chrome/browser/predictors/loading_predictor.h" #include "chrome/browser/predictors/loading_predictor.h"
#include "chrome/browser/predictors/loading_predictor_factory.h" #include "chrome/browser/predictors/loading_predictor_factory.h"
#include "chrome/browser/predictors/loading_test_util.h" #include "chrome/browser/predictors/loading_test_util.h"
...@@ -444,7 +445,8 @@ class LoadingPredictorBrowserTest : public InProcessBrowserTest { ...@@ -444,7 +445,8 @@ class LoadingPredictorBrowserTest : public InProcessBrowserTest {
LoadingPredictorBrowserTest() { LoadingPredictorBrowserTest() {
scoped_feature_list_.InitWithFeatures( scoped_feature_list_.InitWithFeatures(
{features::kLoadingOnlyLearnHighPriorityResources, {features::kLoadingOnlyLearnHighPriorityResources,
features::kLoadingPreconnectToRedirectTarget}, features::kLoadingPreconnectToRedirectTarget,
features::kNavigationPredictorPreconnectHoldback},
{}); {});
} }
~LoadingPredictorBrowserTest() override {} ~LoadingPredictorBrowserTest() override {}
......
file://base/metrics/OWNERS file://base/metrics/OWNERS
# Use the following owners only if:
# - You work in the same area as them.
# - They are already aware of the field trial being modified.
per-file fieldtrial_testing_config.json=tbansal@chromium.org
# COMPONENT: Internals>Metrics>Variations # COMPONENT: Internals>Metrics>Variations
...@@ -4958,6 +4958,30 @@ ...@@ -4958,6 +4958,30 @@
] ]
} }
], ],
"PreconnectSameOriginDesktop": [
{
"platforms": [
"windows",
"chromeos",
"mac",
"linux"
],
"experiments": [
{
"name": "EnabledWithExtendedSocket",
"params": {
"unused_idle_socket_timeout_seconds": "60"
},
"enable_features": [
"NetUnusedIdleSocketTimeout"
],
"disable_features": [
"NavigationPredictorPreconnectHoldback"
]
}
]
}
],
"PrefetchSRPAndroid": [ "PrefetchSRPAndroid": [
{ {
"platforms": [ "platforms": [
......
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