[bfcache]Update reason names to match the spec
This CL updates the reason names reported by NotRestoredReasonsAPI so
that they match the ones in the spec.
On the spec PR we decided some reasons should not be exposed, i.e.
reported as masked, and changed other reasons names. Mainly we are
changing the reporting name to be 'masked' in this CL.
The change is guarded with a runtime flag.
Note that session restore should be reported as null but with this CL it
is still reported as "session-restored". I will address this case and
add a test in a separate CL.
Spec PR: https://github.com/whatwg/html/pull/10154
PSA: https://groups.google.com/a/chromium.org/g/blink-dev/c/keA8QE_uFxo/m/OqtfRXq6BwAJ?utm_medium=email&utm_source=footer
Bug: 331754704
Change-Id: I0d4224f599bc4cdae7a70b9bbb38ff798bae2917
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5907581
Commit-Queue: Yuzu Saijo <yuzus@chromium.org>
Reviewed-by: Fergal Daly <fergal@chromium.org>
Reviewed-by: Kent Tamura <tkent@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1381607}
diff --git a/components/back_forward_cache/DEPS b/components/back_forward_cache/DEPS
index 1c35d9c..4ca429a 100644
--- a/components/back_forward_cache/DEPS
+++ b/components/back_forward_cache/DEPS
@@ -1,3 +1,4 @@
include_rules = [
"+content/public/browser",
+ "+third_party/blink/public/common",
]
diff --git a/components/back_forward_cache/back_forward_cache_disable.cc b/components/back_forward_cache/back_forward_cache_disable.cc
index ca56e63..45132c1 100644
--- a/components/back_forward_cache/back_forward_cache_disable.cc
+++ b/components/back_forward_cache/back_forward_cache_disable.cc
@@ -3,7 +3,9 @@
// found in the LICENSE file.
#include "components/back_forward_cache/back_forward_cache_disable.h"
+
#include "content/public/browser/back_forward_cache.h"
+#include "third_party/blink/public/common/features_generated.h"
namespace back_forward_cache {
@@ -48,11 +50,17 @@
switch (reason_id) {
case DisabledReasonId::kExtensionMessaging:
case DisabledReasonId::kExtensionSentMessageToCachedFrame:
- return "extension-messaging";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "extension-messaging";
+ case DisabledReasonId::kPermissionRequestManager:
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "pending-permission-request";
case DisabledReasonId::kModalDialog:
return "modals";
- case DisabledReasonId::kPermissionRequestManager:
- return "pending-permission-request";
default:
return "masked";
}
diff --git a/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc b/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc
index 5a01442..588d0db3 100644
--- a/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc
+++ b/content/browser/renderer_host/back_forward_cache_can_store_document_result.cc
@@ -5,6 +5,7 @@
#include "content/browser/renderer_host/back_forward_cache_can_store_document_result.h"
#include <inttypes.h>
+
#include <cstdint>
#include "base/debug/dump_without_crashing.h"
@@ -473,7 +474,10 @@
// If you ever add a new one, you have to add it to the spec as well.
// https://html.spec.whatwg.org/#nrr-details-reason
case Reason::kNotPrimaryMainFrame:
- return "not-main-frame";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "not-main-frame";
case Reason::kRelatedActiveContentsExist:
return "non-trivial-browsing-context-group";
case Reason::kSchemeNotHTTPOrHTTPS:
@@ -485,25 +489,43 @@
// reported.
return "Blocklisted feature";
case Reason::kHTTPMethodNotGET:
- return "response-method-not-get";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "request-method-not-get"
+ : "response-method-not-get";
case Reason::kSubframeIsNavigating:
- return "frame-navigating";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "frame-navigating";
case Reason::kTimeout:
- return "timeout";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "timeout";
case Reason::kServiceWorkerVersionActivation:
- return "serviceworker-version-activation";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "serviceworker-version-activated"
+ : "serviceworker-version-activation";
case Reason::kSessionRestored:
return "session-restored";
case Reason::kServiceWorkerPostMessage:
return "serviceworker-postmessage";
case Reason::kEnteredBackForwardCacheBeforeServiceWorkerHostAdded:
- return "serviceworker-added-after-bfcache";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "serviceworker-added"
+ : "serviceworker-added-after-bfcache";
case Reason::kServiceWorkerClaim:
- return "serviceworker-claim";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "serviceworker-claimed"
+ : "serviceworker-claim";
case Reason::kNavigationCancelledWhileRestoring:
return "navigation-canceled";
case Reason::kServiceWorkerUnregistration:
- return "serviceworker-unregistration";
+ return "serviceworker-unregistered";
case Reason::kErrorDocument:
case Reason::kHTTPStatusNotOK:
return "response-status-not-ok";
@@ -522,11 +544,17 @@
case Reason::kCacheControlNoStoreHTTPOnlyCookieModified:
return "response-cache-control-no-store";
case Reason::kCookieDisabled:
- return "cookie-disabled";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "cookie-disabled";
case Reason::kHTTPAuthRequired:
return "response-auth-required";
case Reason::kCookieFlushed:
- return "cookie-removed";
+ return base::FeatureList::IsEnabled(
+ blink::features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "cookie-removed";
case Reason::kDisableForRenderFrameHostCalled:
return DisabledReasonsToString(disabled_reasons_,
/*for_not_restored_reasons=*/true);
diff --git a/third_party/blink/common/scheduler/web_scheduler_tracked_feature.cc b/third_party/blink/common/scheduler/web_scheduler_tracked_feature.cc
index 473fb48..11f2e97 100644
--- a/third_party/blink/common/scheduler/web_scheduler_tracked_feature.cc
+++ b/third_party/blink/common/scheduler/web_scheduler_tracked_feature.cc
@@ -8,6 +8,8 @@
#include <map>
#include <vector>
+#include "third_party/blink/public/common/features.h"
+
namespace blink {
namespace scheduler {
@@ -85,9 +87,17 @@
case WebSchedulerTrackedFeature::kWebNfc:
return {"webnfc", "WebNfc"};
case WebSchedulerTrackedFeature::kPrinting:
- return {"printing", "Printing"};
+ return {base::FeatureList::IsEnabled(
+ features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "printing",
+ "Printing"};
case WebSchedulerTrackedFeature::kWebDatabase:
- return {"web-database", "WebDatabase"};
+ return {base::FeatureList::IsEnabled(
+ features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "web-database",
+ "WebDatabase"};
case WebSchedulerTrackedFeature::kPictureInPicture:
return {"pictureinpicturewindow", "PictureInPicture"};
case WebSchedulerTrackedFeature::kSpeechRecognizer:
@@ -104,9 +114,17 @@
return {"outstanding-network-request",
"outstanding network request (direct socket)"};
case WebSchedulerTrackedFeature::kInjectedJavascript:
- return {"injected-javascript", "External javascript injected"};
+ return {base::FeatureList::IsEnabled(
+ features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "injected-javascript",
+ "External javascript injected"};
case WebSchedulerTrackedFeature::kInjectedStyleSheet:
- return {"injected-stylesheet", "External systesheet injected"};
+ return {base::FeatureList::IsEnabled(
+ features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "masked"
+ : "injected-stylesheet",
+ "External stylesheet injected"};
case WebSchedulerTrackedFeature::kKeepaliveRequest:
return {"response-keep-alive", "requests with keepalive set"};
case WebSchedulerTrackedFeature::kDummy:
@@ -125,7 +143,11 @@
case WebSchedulerTrackedFeature::kLiveMediaStreamTrack:
return {"mediastream", "page has live MediaStreamTrack"};
case WebSchedulerTrackedFeature::kUnloadHandler:
- return {"unload-handler", "page contains unload handler"};
+ return {base::FeatureList::IsEnabled(
+ features::kBackForwardCacheUpdateNotRestoredReasonsName)
+ ? "unload-handler"
+ : "unload-listener",
+ "page contains unload handler"};
case WebSchedulerTrackedFeature::kParserAborted:
return {"parser-aborted", "parser was aborted"};
}
diff --git a/third_party/blink/common/scheduler/web_scheduler_tracked_feature_unittest.cc b/third_party/blink/common/scheduler/web_scheduler_tracked_feature_unittest.cc
index 53a10022..3e6d74a 100644
--- a/third_party/blink/common/scheduler/web_scheduler_tracked_feature_unittest.cc
+++ b/third_party/blink/common/scheduler/web_scheduler_tracked_feature_unittest.cc
@@ -10,7 +10,8 @@
namespace scheduler {
TEST(WebSchedulerTrackedFeatureTest, StringToFeature) {
- ASSERT_EQ(WebSchedulerTrackedFeature::kPrinting, StringToFeature("printing"));
+ ASSERT_EQ(WebSchedulerTrackedFeature::kOutstandingNetworkRequestFetch,
+ StringToFeature("fetch"));
ASSERT_EQ(WebSchedulerTrackedFeature::kDocumentLoaded,
StringToFeature("document-loaded"));
ASSERT_EQ(std::nullopt, StringToFeature("FeatureThatNeverExists"));
diff --git a/third_party/blink/renderer/platform/runtime_enabled_features.json5 b/third_party/blink/renderer/platform/runtime_enabled_features.json5
index 167cbb4..60a9725 100644
--- a/third_party/blink/renderer/platform/runtime_enabled_features.json5
+++ b/third_party/blink/renderer/platform/runtime_enabled_features.json5
@@ -511,6 +511,10 @@
copied_from_base_feature_if: "overridden",
},
{
+ name: "BackForwardCacheUpdateNotRestoredReasonsName",
+ status: "experimental",
+ },
+ {
// Used to enable Blink side of features flags for Default Nav Transition.
name: "BackForwardTransitions",
},