Commit 860ac88c authored by Rakina Zata Amni's avatar Rakina Zata Amni Committed by Chromium LUCI CQ

Add flag for VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch

With a flag, we can control which params we verify in which releases, so
we won't block releases if we found inconsistencies with certain params.

Bug: 1155414
Change-Id: I1fb608e20f1bc22025b12a5ec21d000151acb21c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2574649
Commit-Queue: Rakina Zata Amni <rakina@chromium.org>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#834256}
parent 9065a120
...@@ -9437,11 +9437,26 @@ bool CalculateURLIsUnreachable( ...@@ -9437,11 +9437,26 @@ bool CalculateURLIsUnreachable(
return net_error_code != net::OK || has_history_url_for_data_url; return net_error_code != net::OK || has_history_url_for_data_url;
} }
bool ShouldVerify(const std::string& param) {
#if DCHECK_IS_ON()
return true;
#else
return GetFieldTrialParamByFeatureAsBool(features::kVerifyDidCommitParams,
param, false);
#endif
}
void RenderFrameHostImpl:: void RenderFrameHostImpl::
VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch( VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch(
NavigationRequest* request, NavigationRequest* request,
const mojom::DidCommitProvisionalLoadParams& params, const mojom::DidCommitProvisionalLoadParams& params,
bool is_same_document_navigation) { bool is_same_document_navigation) {
#if !DCHECK_IS_ON()
// Only check for the flag if DCHECK is not enabled, so that we will always
// verify the params for tests.
if (!base::FeatureList::IsEnabled(features::kVerifyDidCommitParams))
return;
#endif
// Check if these values from DidCommitProvisionalLoadParams sent by the // Check if these values from DidCommitProvisionalLoadParams sent by the
// renderer can be calculated entirely in the browser side: // renderer can be calculated entirely in the browser side:
// - intended_as_new_entry // - intended_as_new_entry
...@@ -9474,12 +9489,18 @@ void RenderFrameHostImpl:: ...@@ -9474,12 +9489,18 @@ void RenderFrameHostImpl::
is_same_document_navigation ? is_overriding_user_agent_ is_same_document_navigation ? is_overriding_user_agent_
: (request->IsOverridingUserAgent() && : (request->IsOverridingUserAgent() &&
frame_tree_node_->IsMainFrame()); frame_tree_node_->IsMainFrame());
if (request->commit_params().intended_as_new_entry ==
params.intended_as_new_entry && if ((!ShouldVerify("intended_as_new_entry") ||
request->common_params().method == params.method && request->commit_params().intended_as_new_entry ==
browser_url_is_unreachable == params.url_is_unreachable && params.intended_as_new_entry) &&
base_url_expectations_match && browser_post_id == params.post_id && (!ShouldVerify("method") ||
browser_is_overriding_user_agent == params.is_overriding_user_agent) { request->common_params().method == params.method) &&
(!ShouldVerify("url_is_unreachable") ||
browser_url_is_unreachable == params.url_is_unreachable) &&
(!ShouldVerify("base_url") || base_url_expectations_match) &&
(!ShouldVerify("post_id") || browser_post_id == params.post_id) &&
(!ShouldVerify("is_overriding_user_agent") ||
browser_is_overriding_user_agent == params.is_overriding_user_agent)) {
return; return;
} }
......
...@@ -725,6 +725,11 @@ const base::Feature kUserActivationSameOriginVisibility{ ...@@ -725,6 +725,11 @@ const base::Feature kUserActivationSameOriginVisibility{
const base::Feature kUserAgentClientHint{"UserAgentClientHint", const base::Feature kUserAgentClientHint{"UserAgentClientHint",
base::FEATURE_DISABLED_BY_DEFAULT}; base::FEATURE_DISABLED_BY_DEFAULT};
// Enables comparing browser and renderer's DidCommitProvisionalLoadParams in
// RenderFrameHostImpl::VerifyThatBrowserAndRendererCalculatedDidCommitParamsMatch.
const base::Feature kVerifyDidCommitParams{"VerifyDidCommitParams",
base::FEATURE_DISABLED_BY_DEFAULT};
// Controls whether the <video>.getVideoPlaybackQuality() API is enabled. // Controls whether the <video>.getVideoPlaybackQuality() API is enabled.
const base::Feature kVideoPlaybackQuality{"VideoPlaybackQuality", const base::Feature kVideoPlaybackQuality{"VideoPlaybackQuality",
base::FEATURE_ENABLED_BY_DEFAULT}; base::FEATURE_ENABLED_BY_DEFAULT};
......
...@@ -174,6 +174,7 @@ CONTENT_EXPORT extern const base::Feature kTrustedDOMTypes; ...@@ -174,6 +174,7 @@ CONTENT_EXPORT extern const base::Feature kTrustedDOMTypes;
CONTENT_EXPORT extern const base::Feature kUseFramePriorityInRenderProcessHost; CONTENT_EXPORT extern const base::Feature kUseFramePriorityInRenderProcessHost;
CONTENT_EXPORT extern const base::Feature kUserActivationSameOriginVisibility; CONTENT_EXPORT extern const base::Feature kUserActivationSameOriginVisibility;
CONTENT_EXPORT extern const base::Feature kUserAgentClientHint; CONTENT_EXPORT extern const base::Feature kUserAgentClientHint;
CONTENT_EXPORT extern const base::Feature kVerifyDidCommitParams;
CONTENT_EXPORT extern const base::Feature kVideoPlaybackQuality; CONTENT_EXPORT extern const base::Feature kVideoPlaybackQuality;
CONTENT_EXPORT extern const base::Feature kV8VmFuture; CONTENT_EXPORT extern const base::Feature kV8VmFuture;
CONTENT_EXPORT extern const base::Feature kWebAppManifestDisplayOverride; CONTENT_EXPORT extern const base::Feature kWebAppManifestDisplayOverride;
......
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