OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "core/loader/LinkHeader.h" | 5 #include "platform/network/LinkHeader.h" |
6 | 6 |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 #include <base/macros.h> | 8 #include <base/macros.h> |
9 | 9 |
10 namespace blink { | 10 namespace blink { |
11 | 11 |
12 TEST(LinkHeaderTest, Empty) | 12 TEST(LinkHeaderTest, Empty) |
13 { | 13 { |
14 String nullString; | 14 String nullString; |
15 LinkHeaderSet nullHeaderSet(nullString); | 15 LinkHeaderSet nullHeaderSet(nullString); |
(...skipping 11 matching lines...) Expand all Loading... |
27 const char* rel; | 27 const char* rel; |
28 const char* as; | 28 const char* as; |
29 bool valid; | 29 bool valid; |
30 } cases[] = { | 30 } cases[] = { |
31 {"</images/cat.jpg>; rel=prefetch", "/images/cat.jpg", "prefetch", "", t
rue}, | 31 {"</images/cat.jpg>; rel=prefetch", "/images/cat.jpg", "prefetch", "", t
rue}, |
32 {"</images/cat.jpg>;rel=prefetch", "/images/cat.jpg", "prefetch", "", tr
ue}, | 32 {"</images/cat.jpg>;rel=prefetch", "/images/cat.jpg", "prefetch", "", tr
ue}, |
33 {"</images/cat.jpg> ;rel=prefetch", "/images/cat.jpg", "prefetch", "",
true}, | 33 {"</images/cat.jpg> ;rel=prefetch", "/images/cat.jpg", "prefetch", "",
true}, |
34 {"</images/cat.jpg> ; rel=prefetch", "/images/cat.jpg", "prefetch",
"", true}, | 34 {"</images/cat.jpg> ; rel=prefetch", "/images/cat.jpg", "prefetch",
"", true}, |
35 {"< /images/cat.jpg> ; rel=prefetch", "/images/cat.jpg", "prefetch",
"", true}, | 35 {"< /images/cat.jpg> ; rel=prefetch", "/images/cat.jpg", "prefetch",
"", true}, |
36 {"</images/cat.jpg > ; rel=prefetch", "/images/cat.jpg", "prefetch",
"", true}, | 36 {"</images/cat.jpg > ; rel=prefetch", "/images/cat.jpg", "prefetch",
"", true}, |
37 {"</images/cat.jpg wutwut> ; rel=prefetch", "/images/cat.jpg", "pref
etch", "", true}, | 37 {"</images/cat.jpg wutwut> ; rel=prefetch", "/images/cat.jpg wutwut"
, "prefetch", "", true}, |
38 {"</images/cat.jpg wutwut \t > ; rel=prefetch", "/images/cat.jpg",
"prefetch", "", true}, | 38 {"</images/cat.jpg wutwut \t > ; rel=prefetch", "/images/cat.jpg wu
twut", "prefetch", "", true}, |
39 {"</images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch", ""
, true}, | 39 {"</images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch", ""
, true}, |
40 {"</images/cat.jpg>; Rel=prefetch ", "/images/cat.jpg", "prefetch", ""
, true}, | 40 {"</images/cat.jpg>; Rel=prefetch ", "/images/cat.jpg", "prefetch", ""
, true}, |
41 {"</images/cat.jpg>; Rel=PReFetCh ", "/images/cat.jpg", "prefetch", ""
, true}, | 41 {"</images/cat.jpg>; Rel=PReFetCh ", "/images/cat.jpg", "prefetch", ""
, true}, |
42 {"</images/cat.jpg>; rel=prefetch; rel=somethingelse", "/images/cat.jpg"
, "prefetch", "", true}, | 42 {"</images/cat.jpg>; rel=prefetch; rel=somethingelse", "/images/cat.jpg"
, "prefetch", "", true}, |
43 {" </images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch",
"", true}, | 43 {" </images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch",
"", true}, |
44 {"\t </images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch"
, "", true}, | 44 {"\t </images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch"
, "", true}, |
45 {"</images/cat.jpg>\t\t ; \trel=prefetch \t ", "/images/cat.jpg", "pref
etch", "", true}, | 45 {"</images/cat.jpg>\t\t ; \trel=prefetch \t ", "/images/cat.jpg", "pref
etch", "", true}, |
46 {"\f</images/cat.jpg>\t\t ; \trel=prefetch \t ", "", "", "", false}, | 46 {"\f</images/cat.jpg>\t\t ; \trel=prefetch \t ", "", "", "", false}, |
47 {"</images/cat.jpg>; rel= prefetch", "/images/cat.jpg", "prefetch", "",
true}, | 47 {"</images/cat.jpg>; rel= prefetch", "/images/cat.jpg", "prefetch", "",
true}, |
48 {"<../images/cat.jpg?dog>; rel= prefetch", "../images/cat.jpg?dog", "pre
fetch", "", true}, | 48 {"<../images/cat.jpg?dog>; rel= prefetch", "../images/cat.jpg?dog", "pre
fetch", "", true}, |
49 {"</images/cat.jpg>; rel =prefetch", "/images/cat.jpg", "prefetch", "",
true}, | 49 {"</images/cat.jpg>; rel =prefetch", "/images/cat.jpg", "prefetch", "",
true}, |
50 {"</images/cat.jpg>; rel pel=prefetch", "/images/cat.jpg", "", "", false
}, | 50 {"</images/cat.jpg>; rel pel=prefetch", "/images/cat.jpg", "", "", true}
, |
51 {"< /images/cat.jpg>", "/images/cat.jpg", "", "", true}, | 51 {"< /images/cat.jpg>", "/images/cat.jpg", "", "", true}, |
52 {"</images/cat.jpg>; rel =", "/images/cat.jpg", "", "", false}, | 52 {"</images/cat.jpg>; rel =", "/images/cat.jpg", "", "", true}, |
53 {"</images/cat.jpg>; wut=sup; rel =prefetch", "/images/cat.jpg", "prefet
ch", "", true}, | 53 {"</images/cat.jpg>; wut=sup; rel =prefetch", "/images/cat.jpg", "prefet
ch", "", true}, |
54 {"</images/cat.jpg>; wut=sup ; rel =prefetch", "/images/cat.jpg", "prefe
tch", "", true}, | 54 {"</images/cat.jpg>; wut=sup ; rel =prefetch", "/images/cat.jpg", "prefe
tch", "", true}, |
55 {"</images/cat.jpg>; wut=sup ; rel =prefetch \t ;", "/images/cat.jpg",
"prefetch", "", true}, | 55 {"</images/cat.jpg>; wut=sup ; rel =prefetch \t ;", "/images/cat.jpg",
"prefetch", "", true}, |
56 {"</images/cat.jpg> wut=sup ; rel =prefetch \t ;", "/images/cat.jpg",
"", "", false}, | 56 {"</images/cat.jpg> wut=sup ; rel =prefetch \t ;", "/images/cat.jpg",
"", "", false}, |
57 {"< /images/cat.jpg", "", "", "", false}, | 57 {"< /images/cat.jpg", "", "", "", false}, |
58 {"< http://wut.com/ sdfsdf ?sd>; rel=dns-prefetch", "http://wut.com/"
, "dns-prefetch", "", true}, | 58 {"< http://wut.com/ sdfsdf ?sd>; rel=dns-prefetch", "http://wut.com/
sdfsdf ?sd", "dns-prefetch", "", true}, |
59 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=dns-prefetch", "http://wut
.com/%20%20%3dsdfsdf?sd", "dns-prefetch", "", true}, | 59 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=dns-prefetch", "http://wut
.com/%20%20%3dsdfsdf?sd", "dns-prefetch", "", true}, |
60 {"< http://wut.com/dfsdf?sdf=ghj&wer=rty>; rel=prefetch", "http://wut.
com/dfsdf?sdf=ghj&wer=rty", "prefetch", "", true}, | 60 {"< http://wut.com/dfsdf?sdf=ghj&wer=rty>; rel=prefetch", "http://wut.
com/dfsdf?sdf=ghj&wer=rty", "prefetch", "", true}, |
61 {"< http://wut.com/dfsdf?sdf=ghj&wer=rty>;;;;; rel=prefetch", "http://
wut.com/dfsdf?sdf=ghj&wer=rty", "prefetch", "", true}, | 61 {"< http://wut.com/dfsdf?sdf=ghj&wer=rty>;;;;; rel=prefetch", "http://
wut.com/dfsdf?sdf=ghj&wer=rty", "prefetch", "", true}, |
62 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=preload;as=image", "http:/
/wut.com/%20%20%3dsdfsdf?sd", "preload", "image", true}, | 62 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=preload;as=image", "http:/
/wut.com/%20%20%3dsdfsdf?sd", "preload", "image", true}, |
63 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=preload;as=whatever", "htt
p://wut.com/%20%20%3dsdfsdf?sd", "preload", "whatever", true}, | 63 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=preload;as=whatever", "htt
p://wut.com/%20%20%3dsdfsdf?sd", "preload", "whatever", true}, |
64 {"</images/cat.jpg>; anchor=foo; rel=prefetch;", "/images/cat.jpg", "",
"", false}, | 64 {"</images/cat.jpg>; anchor=foo; rel=prefetch;", "/images/cat.jpg", "pre
fetch", "", false}, |
65 {"</images/cat.jpg>; rel=prefetch;anchor=foo ", "/images/cat.jpg", "pref
etch", "", false}, | 65 {"</images/cat.jpg>; rel=prefetch;anchor=foo ", "/images/cat.jpg", "pref
etch", "", false}, |
66 {"</images/cat.jpg>; anchor='foo'; rel=prefetch;", "/images/cat.jpg", ""
, "", false}, | 66 {"</images/cat.jpg>; anchor='foo'; rel=prefetch;", "/images/cat.jpg", "p
refetch", "", false}, |
67 {"</images/cat.jpg>; rel=prefetch;anchor='foo' ", "/images/cat.jpg", "pr
efetch", "", false}, | 67 {"</images/cat.jpg>; rel=prefetch;anchor='foo' ", "/images/cat.jpg", "pr
efetch", "", false}, |
68 {"</images/cat.jpg>; rel=prefetch;anchor='' ", "/images/cat.jpg", "prefe
tch", "", false}, | 68 {"</images/cat.jpg>; rel=prefetch;anchor='' ", "/images/cat.jpg", "prefe
tch", "", false}, |
69 {"</images/cat.jpg>; rel=prefetch;", "/images/cat.jpg", "prefetch", "",
true}, | 69 {"</images/cat.jpg>; rel=prefetch;", "/images/cat.jpg", "prefetch", "",
true}, |
70 {"</images/cat.jpg>; rel=prefetch ;", "/images/cat.jpg", "prefetch",
"", true}, | 70 {"</images/cat.jpg>; rel=prefetch ;", "/images/cat.jpg", "prefetch",
"", true}, |
71 {"</images/ca,t.jpg>; rel=prefetch ;", "/images/ca,t.jpg", "prefetch"
, "", true}, | 71 {"</images/ca,t.jpg>; rel=prefetch ;", "/images/ca,t.jpg", "prefetch"
, "", true}, |
72 {"<simple.css>; rel=stylesheet; title=\"title with a DQUOTE and backslas
h\"", "simple.css", "stylesheet", "", true}, | 72 {"<simple.css>; rel=stylesheet; title=\"title with a DQUOTE and backslas
h\"", "simple.css", "stylesheet", "", true}, |
73 {"<simple.css>; rel=stylesheet; title=\"title with a DQUOTE \\\" and bac
kslash: \\\"", "simple.css", "stylesheet", "", false}, | 73 {"<simple.css>; rel=stylesheet; title=\"title with a DQUOTE \\\" and bac
kslash: \\\"", "simple.css", "stylesheet", "", true}, |
74 {"<simple.css>; title=\"title with a DQUOTE \\\" and backslash: \"; rel=
stylesheet; ", "simple.css", "stylesheet", "", true}, | 74 {"<simple.css>; title=\"title with a DQUOTE \\\" and backslash: \"; rel=
stylesheet; ", "simple.css", "stylesheet", "", true}, |
75 {"<simple.css>; title=\'title with a DQUOTE \\\' and backslash: \'; rel=
stylesheet; ", "simple.css", "stylesheet", "", true}, | 75 {"<simple.css>; title=\'title with a DQUOTE \\\' and backslash: \'; rel=
stylesheet; ", "simple.css", "stylesheet", "", true}, |
76 {"<simple.css>; title=\"title with a DQUOTE \\\" and ;backslash,: \"; re
l=stylesheet; ", "simple.css", "stylesheet", "", true}, | 76 {"<simple.css>; title=\"title with a DQUOTE \\\" and ;backslash,: \"; re
l=stylesheet; ", "simple.css", "stylesheet", "", true}, |
77 {"<simple.css>; title=\"title with a DQUOTE \' and ;backslash,: \"; rel=
stylesheet; ", "simple.css", "stylesheet", "", true}, | 77 {"<simple.css>; title=\"title with a DQUOTE \' and ;backslash,: \"; rel=
stylesheet; ", "simple.css", "stylesheet", "", true}, |
78 {"<simple.css>; title=\"\"; rel=stylesheet; ", "simple.css", "stylesheet
", "", true}, | 78 {"<simple.css>; title=\"\"; rel=stylesheet; ", "simple.css", "stylesheet
", "", true}, |
79 {"<simple.css>; title=\"\"; rel=\"stylesheet\"; ", "simple.css", "styles
heet", "", true}, | 79 {"<simple.css>; title=\"\"; rel=\"stylesheet\"; ", "simple.css", "styles
heet", "", true}, |
80 {"<simple.css>; rel=stylesheet; title=\"", "simple.css", "stylesheet", "
", false}, | 80 {"<simple.css>; rel=stylesheet; title=\"", "simple.css", "stylesheet", "
", true}, |
81 {"<simple.css>; rel=stylesheet; title=\"\"", "simple.css", "stylesheet",
"", true}, | 81 {"<simple.css>; rel=stylesheet; title=\"\"", "simple.css", "stylesheet",
"", true}, |
82 {"<simple.css>; rel=\"stylesheet\"; title=\"", "simple.css", "stylesheet
", "", false}, | 82 {"<simple.css>; rel=\"stylesheet\"; title=\"", "simple.css", "stylesheet
", "", true}, |
83 {"<simple.css>; rel=\";style,sheet\"; title=\"", "simple.css", ";style,s
heet", "", false}, | 83 {"<simple.css>; rel=\";style,sheet\"; title=\"", "simple.css", ";style,s
heet", "", true}, |
84 {"<simple.css>; rel=\"bla'sdf\"; title=\"", "simple.css", "bla'sdf", "",
false}, | 84 {"<simple.css>; rel=\"bla'sdf\"; title=\"", "simple.css", "bla'sdf", "",
true}, |
85 {"<simple.css>; rel=\"\"; title=\"\"", "simple.css", "", "", true}, | 85 {"<simple.css>; rel=\"\"; title=\"\"", "simple.css", "", "", true}, |
86 {"<simple.css>; rel=''; title=\"\"", "simple.css", "", "", true}, | 86 {"<simple.css>; rel=''; title=\"\"", "simple.css", "", "", true}, |
87 {"<simple.css>; rel=''; title=", "simple.css", "", "", false}, | 87 {"<simple.css>; rel=''; title=", "simple.css", "", "", true}, |
88 {"<simple.css>; rel=''; title", "simple.css", "", "", false}, | 88 {"<simple.css>; rel=''; title", "simple.css", "", "", true}, |
89 {"<simple.css>; rel=''; media", "simple.css", "", "", false}, | 89 {"<simple.css>; rel=''; media", "simple.css", "", "", true}, |
90 {"<simple.css>; rel=''; hreflang", "simple.css", "", "", false}, | 90 {"<simple.css>; rel=''; hreflang", "simple.css", "", "", true}, |
91 {"<simple.css>; rel=''; type", "simple.css", "", "", false}, | 91 {"<simple.css>; rel=''; type", "simple.css", "", "", true}, |
92 {"<simple.css>; rel=''; rev", "simple.css", "", "", false}, | 92 {"<simple.css>; rel=''; rev", "simple.css", "", "", true}, |
93 {"<simple.css>; rel=''; bla", "simple.css", "", "", true}, | 93 {"<simple.css>; rel=''; bla", "simple.css", "", "", true}, |
94 {"<simple.css>; rel='prefetch", "simple.css", "", "", false}, | 94 {"<simple.css>; rel='prefetch", "simple.css", "prefetch", "", true}, |
95 {"<simple.css>; rel=\"prefetch", "simple.css", "", "", false}, | 95 {"<simple.css>; rel=\"prefetch", "simple.css", "prefetch", "", true}, |
96 {"<simple.css>; rel=\"", "simple.css", "", "", false}, | 96 {"<simple.css>; rel=\"", "simple.css", "", "", true}, |
97 }; | 97 }; |
98 | 98 |
99 | 99 |
100 // Test the cases with a single header | 100 // Test the cases with a single header |
101 for (auto& testCase : cases) { | 101 for (auto& testCase : cases) { |
102 LinkHeaderSet headerSet(testCase.headerValue); | 102 LinkHeaderSet headerSet(testCase.headerValue); |
| 103 ASSERT_EQ(1u, headerSet.size()); |
103 LinkHeader& header = headerSet[0]; | 104 LinkHeader& header = headerSet[0]; |
104 ASSERT_STREQ(testCase.url, header.url().ascii().data()); | 105 ASSERT_STREQ(testCase.url, header.url().ascii().data()); |
105 ASSERT_STREQ(testCase.rel, header.rel().ascii().data()); | 106 ASSERT_STREQ(testCase.rel, header.rel().ascii().data()); |
106 ASSERT_EQ(testCase.valid, header.valid()); | 107 ASSERT_EQ(testCase.valid, header.valid()); |
107 } | 108 } |
108 } | 109 } |
109 | 110 |
110 TEST(LinkHeaderTest, Double) | 111 TEST(LinkHeaderTest, Double) |
111 { | 112 { |
112 struct DoubleTestCase { | 113 struct DoubleTestCase { |
113 const char* headerValue; | 114 const char* headerValue; |
114 const char* url; | 115 const char* url; |
115 const char* rel; | 116 const char* rel; |
116 bool valid; | 117 bool valid; |
117 const char* url2; | 118 const char* url2; |
118 const char* rel2; | 119 const char* rel2; |
119 bool valid2; | 120 bool valid2; |
120 } cases[] = { | 121 } cases[] = { |
121 {"<ybg.css>; rel=stylesheet, <simple.css>; rel=stylesheet", "ybg.css", "
stylesheet", true, "simple.css", "stylesheet", true}, | 122 {"<ybg.css>; rel=stylesheet, <simple.css>; rel=stylesheet", "ybg.css", "
stylesheet", true, "simple.css", "stylesheet", true}, |
122 {"<ybg.css>; rel=stylesheet,<simple.css>; rel=stylesheet", "ybg.css", "s
tylesheet", true, "simple.css", "stylesheet", true}, | 123 {"<ybg.css>; rel=stylesheet,<simple.css>; rel=stylesheet", "ybg.css", "s
tylesheet", true, "simple.css", "stylesheet", true}, |
123 {"<ybg.css>; rel=stylesheet;crossorigin,<simple.css>; rel=stylesheet", "
ybg.css", "stylesheet", true, "simple.css", "stylesheet", true}, | 124 {"<ybg.css>; rel=stylesheet;crossorigin,<simple.css>; rel=stylesheet", "
ybg.css", "stylesheet", true, "simple.css", "stylesheet", true}, |
| 125 {"<hel,lo.css>; rel=stylesheet; title=\"foo,bar\", <simple.css>; rel=sty
lesheet; title=\"foo;bar\"", "hel,lo.css", "stylesheet", true, "simple.css", "st
ylesheet", true}, |
124 }; | 126 }; |
125 | 127 |
126 for (auto& testCase : cases) { | 128 for (auto& testCase : cases) { |
127 LinkHeaderSet headerSet(testCase.headerValue); | 129 LinkHeaderSet headerSet(testCase.headerValue); |
| 130 ASSERT_EQ(2u, headerSet.size()); |
128 LinkHeader& header1 = headerSet[0]; | 131 LinkHeader& header1 = headerSet[0]; |
129 LinkHeader& header2 = headerSet[1]; | 132 LinkHeader& header2 = headerSet[1]; |
130 ASSERT_STREQ(testCase.url, header1.url().ascii().data()); | 133 ASSERT_STREQ(testCase.url, header1.url().ascii().data()); |
131 ASSERT_STREQ(testCase.rel, header1.rel().ascii().data()); | 134 ASSERT_STREQ(testCase.rel, header1.rel().ascii().data()); |
132 ASSERT_EQ(testCase.valid, header1.valid()); | 135 ASSERT_EQ(testCase.valid, header1.valid()); |
133 ASSERT_STREQ(testCase.url2, header2.url().ascii().data()); | 136 ASSERT_STREQ(testCase.url2, header2.url().ascii().data()); |
134 ASSERT_STREQ(testCase.rel2, header2.rel().ascii().data()); | 137 ASSERT_STREQ(testCase.rel2, header2.rel().ascii().data()); |
135 ASSERT_EQ(testCase.valid2, header2.valid()); | 138 ASSERT_EQ(testCase.valid2, header2.valid()); |
136 } | 139 } |
137 } | 140 } |
138 | 141 |
139 TEST(LinkHeaderTest, CrossOrigin) | 142 TEST(LinkHeaderTest, CrossOrigin) |
140 { | 143 { |
141 struct TestCase { | 144 struct TestCase { |
142 const char* headerValue; | 145 const char* headerValue; |
143 const char* url; | 146 const char* url; |
144 const char* rel; | 147 const char* rel; |
145 const CrossOriginAttributeValue crossorigin; | 148 const char* crossorigin; |
146 bool valid; | 149 bool valid; |
147 } cases[] = { | 150 } cases[] = { |
148 {"<http://whatever.com>; rel=preconnect", "http://whatever.com", "precon
nect", CrossOriginAttributeNotSet, true}, | 151 {"<http://whatever.com>; rel=preconnect", "http://whatever.com", "precon
nect", nullptr, true}, |
149 {"<http://whatever.com>; rel=preconnect; crossorigin=", "http://whatever
.com", "preconnect", CrossOriginAttributeAnonymous, true}, | 152 {"<http://whatever.com>; rel=preconnect; crossorigin=", "http://whatever
.com", "preconnect", "", true}, |
150 {"<http://whatever.com>; rel=preconnect; crossorigin", "http://whatever.
com", "preconnect", CrossOriginAttributeAnonymous, true}, | 153 {"<http://whatever.com>; rel=preconnect; crossorigin", "http://whatever.
com", "preconnect", "", true}, |
151 {"<http://whatever.com>; rel=preconnect; crossorigin ", "http://whatever
.com", "preconnect", CrossOriginAttributeAnonymous, true}, | 154 {"<http://whatever.com>; rel=preconnect; crossorigin ", "http://whatever
.com", "preconnect", "", true}, |
152 {"<http://whatever.com>; rel=preconnect; crossorigin;", "http://whatever
.com", "preconnect", CrossOriginAttributeAnonymous, true}, | 155 {"<http://whatever.com>; rel=preconnect; crossorigin;", "http://whatever
.com", "preconnect", "", true}, |
153 {"<http://whatever.com>; rel=preconnect; crossorigin, <http://whatever2.
com>; rel=preconnect", "http://whatever.com", "preconnect", CrossOriginAttribute
Anonymous, true}, | 156 {"<http://whatever.com>; rel=preconnect; crossorigin, <http://whatever2.
com>; rel=preconnect", "http://whatever.com", "preconnect", "", true}, |
154 {"<http://whatever.com>; rel=preconnect; crossorigin , <http://whatever2
.com>; rel=preconnect", "http://whatever.com", "preconnect", CrossOriginAttribut
eAnonymous, true}, | 157 {"<http://whatever.com>; rel=preconnect; crossorigin , <http://whatever2
.com>; rel=preconnect", "http://whatever.com", "preconnect", "", true}, |
155 {"<http://whatever.com>; rel=preconnect; crossorigin,<http://whatever2.c
om>; rel=preconnect", "http://whatever.com", "preconnect", CrossOriginAttributeA
nonymous, true}, | 158 {"<http://whatever.com>; rel=preconnect; crossorigin,<http://whatever2.c
om>; rel=preconnect", "http://whatever.com", "preconnect", "", true}, |
156 {"<http://whatever.com>; rel=preconnect; crossorigin=anonymous", "http:/
/whatever.com", "preconnect", CrossOriginAttributeAnonymous, true}, | 159 {"<http://whatever.com>; rel=preconnect; crossorigin=anonymous", "http:/
/whatever.com", "preconnect", "anonymous", true}, |
157 {"<http://whatever.com>; rel=preconnect; crossorigin=use-credentials", "
http://whatever.com", "preconnect", CrossOriginAttributeUseCredentials, true}, | 160 {"<http://whatever.com>; rel=preconnect; crossorigin=use-credentials", "
http://whatever.com", "preconnect", "use-credentials", true}, |
158 {"<http://whatever.com>; rel=preconnect; crossorigin=whatever", "http://
whatever.com", "preconnect", CrossOriginAttributeAnonymous, true}, | 161 {"<http://whatever.com>; rel=preconnect; crossorigin=whatever", "http://
whatever.com", "preconnect", "whatever", true}, |
159 {"<http://whatever.com>; rel=preconnect; crossorig|in=whatever", "http:/
/whatever.com", "preconnect", CrossOriginAttributeNotSet, true}, | 162 {"<http://whatever.com>; rel=preconnect; crossorig|in=whatever", "http:/
/whatever.com", "preconnect", nullptr, true}, |
160 {"<http://whatever.com>; rel=preconnect; crossorigin|=whatever", "http:/
/whatever.com", "preconnect", CrossOriginAttributeNotSet, true}, | 163 {"<http://whatever.com>; rel=preconnect; crossorigin|=whatever", "http:/
/whatever.com", "preconnect", nullptr, true}, |
161 {"<http://whatever.com>; rel=preconnect; valid!", "http://whatever.com",
"preconnect", CrossOriginAttributeNotSet, true}, | 164 {"<http://whatever.com>; rel=preconnect; valid!", "http://whatever.com",
"preconnect", nullptr, true}, |
162 {"<http://whatever.com>; rel=preconnect; valid$", "http://whatever.com",
"preconnect", CrossOriginAttributeNotSet, true}, | 165 {"<http://whatever.com>; rel=preconnect; valid$", "http://whatever.com",
"preconnect", nullptr, true}, |
163 {"<http://whatever.com>; rel=preconnect; invalid@", "http://whatever.com
", "preconnect", CrossOriginAttributeNotSet, false}, | 166 {"<http://whatever.com>; rel=preconnect; invalid@", "http://whatever.com
", "preconnect", nullptr, true}, |
164 {"<http://whatever.com>; rel=preconnect; invalid*", "http://whatever.com
", "preconnect", CrossOriginAttributeNotSet, false}, | 167 {"<http://whatever.com>; rel=preconnect; invalid*", "http://whatever.com
", "preconnect", nullptr, true}, |
165 }; | 168 }; |
166 | 169 |
167 | 170 |
168 // Test the cases with a single header | 171 // Test the cases with a single header |
169 for (auto& testCase : cases) { | 172 for (auto& testCase : cases) { |
170 LinkHeaderSet headerSet(testCase.headerValue); | 173 LinkHeaderSet headerSet(testCase.headerValue); |
171 LinkHeader& header = headerSet[0]; | 174 LinkHeader& header = headerSet[0]; |
172 ASSERT_STREQ(testCase.url, header.url().ascii().data()); | 175 ASSERT_STREQ(testCase.url, header.url().ascii().data()); |
173 ASSERT_STREQ(testCase.rel, header.rel().ascii().data()); | 176 ASSERT_STREQ(testCase.rel, header.rel().ascii().data()); |
174 ASSERT_EQ(testCase.crossorigin, header.crossOrigin()); | 177 if (!testCase.crossorigin) |
| 178 ASSERT_TRUE(header.crossOrigin().isNull()); |
| 179 else |
| 180 ASSERT_STREQ(testCase.crossorigin, header.crossOrigin().ascii().data
()); |
175 ASSERT_EQ(testCase.valid, header.valid()); | 181 ASSERT_EQ(testCase.valid, header.valid()); |
176 } | 182 } |
177 } | 183 } |
178 } // namespace blink | 184 } // namespace blink |
OLD | NEW |