Commit 2bc4628a authored by Eriko Kurimoto's avatar Eriko Kurimoto Committed by Commit Bot

Referrer: Return null string when outgoing_referrer is an empty string

This CL changes the constructor of blink::WebFetchClientSettingsObject
to set blink::WebFetchClientSettingsObject::outgoing_referrer to a null
string when given outgoing_referrer argument is a non-null empty string.
outgoing_referrer is not allowed to take a non-null empty string (i.e. String("")).
However, null string are converted into non-null empty string when
outgoing_referrer is passed via mojo which takes url.mojom.Url.
To keep prohibiting blink::WebFetchClientSettingsObject::outgoing_referrer
to be non-null empty string, this CL converts empty strings back
to null string at constructors.

Bug: 1047612
Change-Id: Iac8ea9ca4e752454f524e6ee28a9dce932ca572c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2033004
Commit-Queue: Eriko Kurimoto <elkurin@google.com>
Reviewed-by: default avatarMatt Falkenhagen <falken@chromium.org>
Reviewed-by: default avatarDominic Farolino <dom@chromium.org>
Reviewed-by: default avatarHiroki Nakagawa <nhiroki@chromium.org>
Reviewed-by: default avatarHiroshige Hayashizaki <hiroshige@chromium.org>
Reviewed-by: default avatarKenichi Ishibashi <bashi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#738070}
parent 0564679b
......@@ -23,6 +23,9 @@ namespace blink {
struct WebFetchClientSettingsObject {
network::mojom::ReferrerPolicy referrer_policy =
network::mojom::ReferrerPolicy::kDefault;
// outgoing_referrer must be either invalid (!IsValid()) or a valid, non-empty
// WebURL (IsValid() && !IsEmpty()).
// See https://crbug.com/1047612.
WebURL outgoing_referrer;
mojom::InsecureRequestsPolicy insecure_requests_policy =
blink::mojom::InsecureRequestsPolicy::kDoNotUpgrade;
......@@ -32,14 +35,26 @@ struct WebFetchClientSettingsObject {
WebURL outgoing_referrer,
mojom::InsecureRequestsPolicy insecure_requests_policy)
: referrer_policy(referrer_policy),
outgoing_referrer(outgoing_referrer),
// As per the comment on the |outgoing_referrer| member, it cannot be
// set to a valid, empty WebURL. But the given |outgoing_referrer| may
// be a valid, empty WebURL, for example, due to conversion from
// mojom::Url that doesn't distinguish between null and empty. We
// canonicalize it to an invalid WebURL if it's empty.
outgoing_referrer(outgoing_referrer.IsEmpty() ? WebURL()
: outgoing_referrer),
insecure_requests_policy(insecure_requests_policy) {}
#if INSIDE_BLINK
explicit WebFetchClientSettingsObject(
const FetchClientSettingsObject& settings_object)
: referrer_policy(settings_object.GetReferrerPolicy()),
outgoing_referrer(KURL(settings_object.GetOutgoingReferrer())),
// As per the comment on the |outgoing_referrer| member, it cannot be
// set to a valid, empty WebURL. But the given |outgoing_referrer| may
// be a non-null empty String since the caller may pass one.
// We canonicalize it to an invalid WebURL if it's empty.
outgoing_referrer(settings_object.GetOutgoingReferrer().IsEmpty()
? KURL()
: KURL(settings_object.GetOutgoingReferrer())),
insecure_requests_policy(
settings_object.GetInsecureRequestsPolicy() &
blink::kUpgradeInsecureRequests
......
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