Commit 516f7f49 authored by Dominic Farolino's avatar Dominic Farolino Committed by Commit Bot

Introduce a flag for cross-origin prefetch + NetworkIsolationKey

This CL introduces a flag specifically for NetworkIsolationKey changes
made to cross-origin main-resource prefetches. We'd like to implement
these changes incrementally and not have them enabled implicitly under
the SplitCacheByNetworkIsolationKey flag.

A future CL will actually put this flag to use, and remove more
instances of the SplitCache feature detection.

R=kinuko@chromium.org, yhirano@chromium.org

Bug: 939317
Change-Id: Ifd465d343b76e6533fffed46cfae1d2486fb078f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1775890
Commit-Queue: Dominic Farolino <dom@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#692021}
parent 5e7c21a6
...@@ -2938,6 +2938,13 @@ const FeatureEntry kFeatureEntries[] = { ...@@ -2938,6 +2938,13 @@ const FeatureEntry kFeatureEntries[] = {
flag_descriptions::kPrefetchRedirectErrorDescription, kOsAll, flag_descriptions::kPrefetchRedirectErrorDescription, kOsAll,
FEATURE_VALUE_TYPE(blink::features::kPrefetchRedirectError)}, FEATURE_VALUE_TYPE(blink::features::kPrefetchRedirectError)},
{"prefetch-main-resource-network-isolation-key",
flag_descriptions::kPrefetchMainResourceNetworkIsolationKeyName,
flag_descriptions::kPrefetchMainResourceNetworkIsolationKeyDescription,
kOsAll,
FEATURE_VALUE_TYPE(
network::features::kPrefetchMainResourceNetworkIsolationKey)},
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
{"omnibox-spare-renderer", flag_descriptions::kOmniboxSpareRendererName, {"omnibox-spare-renderer", flag_descriptions::kOmniboxSpareRendererName,
flag_descriptions::kOmniboxSpareRendererDescription, kOsAndroid, flag_descriptions::kOmniboxSpareRendererDescription, kOsAndroid,
......
...@@ -2830,10 +2830,15 @@ ...@@ -2830,10 +2830,15 @@
"owners": [ "//printing/OWNERS" ], "owners": [ "//printing/OWNERS" ],
"expiry_milestone": 76 "expiry_milestone": 76
}, },
{
"name": "prefetch-main-resource-network-isolation-key",
"owners": [ "dom", "yhirano" ],
"expiry_milestone": 85
},
{ {
"name": "prefetch-redirect-error", "name": "prefetch-redirect-error",
"owners": [ "dom", "yhirano" ], "owners": [ "dom", "yhirano" ],
"expiry_milestone": 83 "expiry_milestone": 85
}, },
{ {
"name": "proactive-tab-freeze-and-discard", "name": "proactive-tab-freeze-and-discard",
......
...@@ -1639,6 +1639,13 @@ const char kPrefetchRedirectErrorDescription[] = ...@@ -1639,6 +1639,13 @@ const char kPrefetchRedirectErrorDescription[] =
"Prefetch requests will not follow redirect responses, and instead be " "Prefetch requests will not follow redirect responses, and instead be "
"logged as errors. Redirect responses are still stored in the cache."; "logged as errors. Redirect responses are still stored in the cache.";
const char kPrefetchMainResourceNetworkIsolationKeyName[] =
"Prefetch requests for cross-origin main resources are fetched with a "
"special NetworkIsolationKey";
const char kPrefetchMainResourceNetworkIsolationKeyDescription[] =
"Prefetch requests for cross-origin main resources can be reused by next "
"top-level navigations when HTTP cache is double-keyed.";
const char kSafeBrowsingUseAPDownloadVerdictsName[] = const char kSafeBrowsingUseAPDownloadVerdictsName[] =
"Request Advanced Protection verdicts when inspecting downloads"; "Request Advanced Protection verdicts when inspecting downloads";
const char kSafeBrowsingUseAPDownloadVerdictsDescription[] = const char kSafeBrowsingUseAPDownloadVerdictsDescription[] =
......
...@@ -986,6 +986,9 @@ extern const char kResourceLoadSchedulerDescription[]; ...@@ -986,6 +986,9 @@ extern const char kResourceLoadSchedulerDescription[];
extern const char kPrefetchRedirectErrorName[]; extern const char kPrefetchRedirectErrorName[];
extern const char kPrefetchRedirectErrorDescription[]; extern const char kPrefetchRedirectErrorDescription[];
extern const char kPrefetchMainResourceNetworkIsolationKeyName[];
extern const char kPrefetchMainResourceNetworkIsolationKeyDescription[];
extern const char kSafeBrowsingUseAPDownloadVerdictsName[]; extern const char kSafeBrowsingUseAPDownloadVerdictsName[];
extern const char kSafeBrowsingUseAPDownloadVerdictsDescription[]; extern const char kSafeBrowsingUseAPDownloadVerdictsDescription[];
......
...@@ -100,6 +100,15 @@ const base::Feature kCrossOriginEmbedderPolicy{ ...@@ -100,6 +100,15 @@ const base::Feature kCrossOriginEmbedderPolicy{
const base::Feature kBlockNonSecureExternalRequests{ const base::Feature kBlockNonSecureExternalRequests{
"BlockNonSecureExternalRequests", base::FEATURE_DISABLED_BY_DEFAULT}; "BlockNonSecureExternalRequests", base::FEATURE_DISABLED_BY_DEFAULT};
// When kPrefetchMainResourceNetworkIsolationKey is enabled, cross-origin
// prefetch requests for main-resources, as well as their preload response
// headers, will use a special NetworkIsolationKey allowing them to be reusable
// from a cross-origin context when the HTTP cache is partitioned by the
// NetworkIsolationKey.
const base::Feature kPrefetchMainResourceNetworkIsolationKey{
"PrefetchMainResourceNetworkIsolationKey",
base::FEATURE_DISABLED_BY_DEFAULT};
bool ShouldEnableOutOfBlinkCors() { bool ShouldEnableOutOfBlinkCors() {
return base::FeatureList::IsEnabled(features::kOutOfBlinkCors); return base::FeatureList::IsEnabled(features::kOutOfBlinkCors);
} }
......
...@@ -41,6 +41,8 @@ COMPONENT_EXPORT(NETWORK_CPP) ...@@ -41,6 +41,8 @@ COMPONENT_EXPORT(NETWORK_CPP)
extern const base::Feature kCrossOriginEmbedderPolicy; extern const base::Feature kCrossOriginEmbedderPolicy;
COMPONENT_EXPORT(NETWORK_CPP) COMPONENT_EXPORT(NETWORK_CPP)
extern const base::Feature kBlockNonSecureExternalRequests; extern const base::Feature kBlockNonSecureExternalRequests;
COMPONENT_EXPORT(NETWORK_CPP)
extern const base::Feature kPrefetchMainResourceNetworkIsolationKey;
COMPONENT_EXPORT(NETWORK_CPP) bool ShouldEnableOutOfBlinkCors(); COMPONENT_EXPORT(NETWORK_CPP) bool ShouldEnableOutOfBlinkCors();
......
...@@ -36751,6 +36751,8 @@ from previous Chrome versions. ...@@ -36751,6 +36751,8 @@ from previous Chrome versions.
<int value="1106307305" label="AutofillPrimaryInfoStyleExperiment:enabled"/> <int value="1106307305" label="AutofillPrimaryInfoStyleExperiment:enabled"/>
<int value="1107543566" label="enable-one-copy"/> <int value="1107543566" label="enable-one-copy"/>
<int value="1108663108" label="disable-device-discovery-notifications"/> <int value="1108663108" label="disable-device-discovery-notifications"/>
<int value="1109907837"
label="PrefetchMainResourceNetworkIsolationKey:enabled"/>
<int value="1111871757" label="ForceUnifiedConsentBump:enabled"/> <int value="1111871757" label="ForceUnifiedConsentBump:enabled"/>
<int value="1112051724" label="DetectingHeavyPages:enabled"/> <int value="1112051724" label="DetectingHeavyPages:enabled"/>
<int value="1113196543" label="ShowManagedUi:disabled"/> <int value="1113196543" label="ShowManagedUi:disabled"/>
...@@ -36989,6 +36991,8 @@ from previous Chrome versions. ...@@ -36989,6 +36991,8 @@ from previous Chrome versions.
<int value="1408331660" label="enhanced-bookmarks-experiment"/> <int value="1408331660" label="enhanced-bookmarks-experiment"/>
<int value="1409437197" label="OfflinePagesLimitlessPrefetching:enabled"/> <int value="1409437197" label="OfflinePagesLimitlessPrefetching:enabled"/>
<int value="1410697724" label="mediadrm-enable-non-compositing"/> <int value="1410697724" label="mediadrm-enable-non-compositing"/>
<int value="1410846840"
label="PrefetchMainResourceNetworkIsolationKey:disabled"/>
<int value="1411679884" <int value="1411679884"
label="AutofillLocalCardMigrationUsesStrikeSystemV2:enabled"/> label="AutofillLocalCardMigrationUsesStrikeSystemV2:enabled"/>
<int value="1413158119" label="WebRtcRemoteEventLog:disabled"/> <int value="1413158119" label="WebRtcRemoteEventLog:disabled"/>
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