OLD | NEW |
---|---|
(Empty) | |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | |
Kibeom Kim (inactive)
2014/04/30 00:58:56
from
https://chrome-internal.googlesource.com/blin
| |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "content/public/common/referrer.h" | |
6 #include "testing/gtest/include/gtest/gtest.h" | |
7 | |
8 namespace { | |
9 | |
10 const char* kTestURL = "http://google.com/"; | |
11 | |
12 // Check that copying Referrer objects works. | |
13 TEST(ReferrerTest, Copy) { | |
14 content::Referrer r1(GURL(kTestURL), blink::WebReferrerPolicyAlways); | |
15 content::Referrer r2; | |
16 | |
17 r2 = r1; | |
18 EXPECT_EQ(GURL(kTestURL), r2.url); | |
19 EXPECT_EQ(blink::WebReferrerPolicyAlways, r2.policy); | |
20 } | |
21 | |
22 TEST(ReferrerTest, Sanitization) { | |
23 content::Referrer referrer( | |
24 GURL("http://user:password@foo.com/bar/baz.html#fragment"), | |
25 blink::WebReferrerPolicyAlways); | |
26 GURL sanitized = | |
27 referrer.ReferrerHeaderUrlForNavigation(GURL("http://www.bar.com")); | |
28 EXPECT_EQ("http://foo.com/bar/baz.html", sanitized.spec()); | |
29 } | |
30 | |
31 TEST(ReferrerTest, PolicyHandling) { | |
32 const char* test_urls[] = { | |
33 "http://insecure.com/foo/bar.html", | |
34 "https://secure.net/trustworthy.html", | |
35 }; | |
36 | |
37 // Default: all but secure->insecure should have a full referrer. | |
38 for (unsigned int source = 0; source < arraysize(test_urls); ++source) { | |
39 for (unsigned int dest = 0; dest < arraysize(test_urls); ++dest) { | |
40 content::Referrer referrer(GURL(test_urls[source]), | |
41 blink::WebReferrerPolicyDefault); | |
42 const GURL referrer_url = | |
43 referrer.ReferrerHeaderUrlForNavigation(GURL(test_urls[dest])); | |
44 if (source == 1 && dest == 0) { | |
45 EXPECT_EQ("", referrer_url.spec()); | |
46 } else { | |
47 EXPECT_EQ(test_urls[source], referrer_url.spec()); | |
48 } | |
49 } | |
50 } | |
51 | |
52 // Never: always empty string. | |
53 for (unsigned int source = 0; source < arraysize(test_urls); ++source) { | |
54 for (unsigned int dest = 0; dest < arraysize(test_urls); ++dest) { | |
55 content::Referrer referrer(GURL(test_urls[source]), | |
56 blink::WebReferrerPolicyNever); | |
57 const GURL referrer_url = | |
58 referrer.ReferrerHeaderUrlForNavigation(GURL(test_urls[dest])); | |
59 EXPECT_EQ("", referrer_url.spec()); | |
60 } | |
61 } | |
62 | |
63 // Always: always the full referrer. | |
64 for (unsigned int source = 0; source < arraysize(test_urls); ++source) { | |
65 for (unsigned int dest = 0; dest < arraysize(test_urls); ++dest) { | |
66 content::Referrer referrer(GURL(test_urls[source]), | |
67 blink::WebReferrerPolicyAlways); | |
68 const GURL referrer_url = | |
69 referrer.ReferrerHeaderUrlForNavigation(GURL(test_urls[dest])); | |
70 EXPECT_EQ(test_urls[source], referrer_url.spec()); | |
71 } | |
72 } | |
73 | |
74 // Always: always just the origin. | |
75 for (unsigned int source = 0; source < arraysize(test_urls); ++source) { | |
76 for (unsigned int dest = 0; dest < arraysize(test_urls); ++dest) { | |
77 content::Referrer referrer(GURL(test_urls[source]), | |
78 blink::WebReferrerPolicyOrigin); | |
79 const GURL referrer_url = | |
80 referrer.ReferrerHeaderUrlForNavigation(GURL(test_urls[dest])); | |
81 EXPECT_EQ(GURL(test_urls[source]).GetOrigin().spec(), | |
82 referrer_url.spec()); | |
83 } | |
84 } | |
85 } | |
86 | |
87 } // namespace | |
OLD | NEW |