blob: a28369dc3f2a325e3e1d8b42224a3044a64d8159 [file] [log] [blame]
// Copyright (c) 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "content/public/common/referrer.h"
#include "base/test/gtest_util.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace content {
using ReferrerSanitizerTest = testing::Test;
TEST_F(ReferrerSanitizerTest, SanitizesPolicyForEmptyReferrers) {
EXPECT_DCHECK_DEATH(ignore_result(Referrer::SanitizeForRequest(
GURL("https://a"),
Referrer(GURL(), static_cast<network::mojom::ReferrerPolicy>(200)))));
}
TEST_F(ReferrerSanitizerTest, SanitizesPolicyForNonEmptyReferrers) {
EXPECT_DCHECK_DEATH(ignore_result(Referrer::SanitizeForRequest(
GURL("https://a"),
Referrer(GURL("http://b"),
static_cast<network::mojom::ReferrerPolicy>(200)))));
}
TEST(ReferrerSanitizerTest, OnlyHTTPFamilyReferrer) {
auto result = Referrer::SanitizeForRequest(
GURL("https://a"),
Referrer(GURL("chrome-extension://ghbmnnjooekpmoecnnnilnnbdlolhkhi"),
network::mojom::ReferrerPolicy::kAlways));
EXPECT_TRUE(result.url.is_empty());
}
TEST(ReferrerTest, BlinkNetRoundTripConversion) {
const net::URLRequest::ReferrerPolicy policies[] = {
net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
net::URLRequest::REDUCE_REFERRER_GRANULARITY_ON_TRANSITION_CROSS_ORIGIN,
net::URLRequest::ORIGIN_ONLY_ON_TRANSITION_CROSS_ORIGIN,
net::URLRequest::NEVER_CLEAR_REFERRER,
net::URLRequest::ORIGIN,
net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_CROSS_ORIGIN,
net::URLRequest::ORIGIN_CLEAR_ON_TRANSITION_FROM_SECURE_TO_INSECURE,
net::URLRequest::NO_REFERRER,
};
for (auto policy : policies) {
EXPECT_EQ(Referrer::ReferrerPolicyForUrlRequest(
Referrer::NetReferrerPolicyToBlinkReferrerPolicy(policy)),
policy);
}
}
} // namespace content