Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(13)

Side by Side Diff: third_party/WebKit/Source/platform/network/LinkHeaderTest.cpp

Issue 1811163002: Share link header parsing code between blink and content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@base-optional
Patch Set: address mmenke's comments Created 4 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 namespace { 11 namespace {
12 12
13 TEST(LinkHeaderTest, Empty) 13 TEST(LinkHeaderTest, Empty)
14 { 14 {
15 String nullString; 15 String nullString;
(...skipping 11 matching lines...) Expand all
27 const char* rel; 27 const char* rel;
28 const char* as; 28 const char* as;
29 const char* media; 29 const char* media;
30 } singleTestCases[] = { 30 } singleTestCases[] = {
31 {"</images/cat.jpg>; rel=prefetch", true, "/images/cat.jpg", "prefetch", "", ""}, 31 {"</images/cat.jpg>; rel=prefetch", true, "/images/cat.jpg", "prefetch", "", ""},
32 {"</images/cat.jpg>;rel=prefetch", true, "/images/cat.jpg", "prefetch", "", ""}, 32 {"</images/cat.jpg>;rel=prefetch", true, "/images/cat.jpg", "prefetch", "", ""},
33 {"</images/cat.jpg> ;rel=prefetch", true, "/images/cat.jpg", "prefetch", " ", ""}, 33 {"</images/cat.jpg> ;rel=prefetch", true, "/images/cat.jpg", "prefetch", " ", ""},
34 {"</images/cat.jpg> ; rel=prefetch", true, "/images/cat.jpg", "prefetch" , "", ""}, 34 {"</images/cat.jpg> ; rel=prefetch", true, "/images/cat.jpg", "prefetch" , "", ""},
35 {"< /images/cat.jpg> ; rel=prefetch", true, "/images/cat.jpg", "prefetch ", "", ""}, 35 {"< /images/cat.jpg> ; rel=prefetch", true, "/images/cat.jpg", "prefetch ", "", ""},
36 {"</images/cat.jpg > ; rel=prefetch", true, "/images/cat.jpg", "prefetch ", "", ""}, 36 {"</images/cat.jpg > ; rel=prefetch", true, "/images/cat.jpg", "prefetch ", "", ""},
37 {"</images/cat.jpg wutwut> ; rel=prefetch", true, "/images/cat.jpg", "pr efetch", "", ""}, 37 {"</images/cat.jpg wutwut> ; rel=prefetch", true, "/images/cat.jpg wutwu t", "prefetch", "", ""},
38 {"</images/cat.jpg wutwut \t > ; rel=prefetch", true, "/images/cat.jpg" , "prefetch", "", ""}, 38 {"</images/cat.jpg wutwut \t > ; rel=prefetch", true, "/images/cat.jpg wutwut", "prefetch", "", ""},
39 {"</images/cat.jpg>; rel=prefetch ", true, "/images/cat.jpg", "prefetch", "", ""}, 39 {"</images/cat.jpg>; rel=prefetch ", true, "/images/cat.jpg", "prefetch", "", ""},
40 {"</images/cat.jpg>; Rel=prefetch ", true, "/images/cat.jpg", "prefetch", "", ""}, 40 {"</images/cat.jpg>; Rel=prefetch ", true, "/images/cat.jpg", "prefetch", "", ""},
41 {"</images/cat.jpg>; Rel=PReFetCh ", true, "/images/cat.jpg", "prefetch", "", ""}, 41 {"</images/cat.jpg>; Rel=PReFetCh ", true, "/images/cat.jpg", "prefetch", "", ""},
42 {"</images/cat.jpg>; rel=prefetch; rel=somethingelse", true, "/images/cat.jp g", "prefetch", "", ""}, 42 {"</images/cat.jpg>; rel=prefetch; rel=somethingelse", true, "/images/cat.jp g", "prefetch", "", ""},
43 {" </images/cat.jpg>; rel=prefetch ", true, "/images/cat.jpg", "prefetch" , "", ""}, 43 {" </images/cat.jpg>; rel=prefetch ", true, "/images/cat.jpg", "prefetch" , "", ""},
44 {"\t </images/cat.jpg>; rel=prefetch ", true, "/images/cat.jpg", "prefetc h", "", ""}, 44 {"\t </images/cat.jpg>; rel=prefetch ", true, "/images/cat.jpg", "prefetc h", "", ""},
45 {"</images/cat.jpg>\t\t ; \trel=prefetch \t ", true, "/images/cat.jpg", "pr efetch", "", ""}, 45 {"</images/cat.jpg>\t\t ; \trel=prefetch \t ", true, "/images/cat.jpg", "pr efetch", "", ""},
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", true, "/images/cat.jpg", "prefetch", "" , ""}, 47 {"</images/cat.jpg>; rel= prefetch", true, "/images/cat.jpg", "prefetch", "" , ""},
48 {"<../images/cat.jpg?dog>; rel= prefetch", true, "../images/cat.jpg?dog", "p refetch", "", ""}, 48 {"<../images/cat.jpg?dog>; rel= prefetch", true, "../images/cat.jpg?dog", "p refetch", "", ""},
49 {"</images/cat.jpg>; rel =prefetch", true, "/images/cat.jpg", "prefetch", "" , ""}, 49 {"</images/cat.jpg>; rel =prefetch", true, "/images/cat.jpg", "prefetch", "" , ""},
50 {"</images/cat.jpg>; rel pel=prefetch", false}, 50 {"</images/cat.jpg>; rel pel=prefetch", false},
51 {"< /images/cat.jpg>", true, "/images/cat.jpg", "", "", ""}, 51 {"< /images/cat.jpg>", true, "/images/cat.jpg", "", "", ""},
52 {"</images/cat.jpg>; rel =", false}, 52 {"</images/cat.jpg>; rel =", false},
53 {"</images/cat.jpg>; wut=sup; rel =prefetch", true, "/images/cat.jpg", "pref etch", "", ""}, 53 {"</images/cat.jpg>; wut=sup; rel =prefetch", true, "/images/cat.jpg", "pref etch", "", ""},
54 {"</images/cat.jpg>; wut=sup ; rel =prefetch", true, "/images/cat.jpg", "pre fetch", "", ""}, 54 {"</images/cat.jpg>; wut=sup ; rel =prefetch", true, "/images/cat.jpg", "pre fetch", "", ""},
55 {"</images/cat.jpg>; wut=sup ; rel =prefetch \t ;", true, "/images/cat.jpg ", "prefetch", "", ""}, 55 {"</images/cat.jpg>; wut=sup ; rel =prefetch \t ;", true, "/images/cat.jpg ", "prefetch", "", ""},
56 {"</images/cat.jpg> wut=sup ; rel =prefetch \t ;", false}, 56 {"</images/cat.jpg> wut=sup ; rel =prefetch \t ;", false},
57 {"< /images/cat.jpg", false}, 57 {"< /images/cat.jpg", false},
58 {"< http://wut.com/ sdfsdf ?sd>; rel=dns-prefetch", true, "http://wut.com /", "dns-prefetch", "", ""}, 58 {"< http://wut.com/ sdfsdf ?sd>; rel=dns-prefetch", true, "http://wut.com / sdfsdf ?sd", "dns-prefetch", "", ""},
59 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=dns-prefetch", true, "http://w ut.com/%20%20%3dsdfsdf?sd", "dns-prefetch", "", ""}, 59 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=dns-prefetch", true, "http://w ut.com/%20%20%3dsdfsdf?sd", "dns-prefetch", "", ""},
60 {"< http://wut.com/dfsdf?sdf=ghj&wer=rty>; rel=prefetch", true, "http://wu t.com/dfsdf?sdf=ghj&wer=rty", "prefetch", "", ""}, 60 {"< http://wut.com/dfsdf?sdf=ghj&wer=rty>; rel=prefetch", true, "http://wu t.com/dfsdf?sdf=ghj&wer=rty", "prefetch", "", ""},
61 {"< http://wut.com/dfsdf?sdf=ghj&wer=rty>;;;;; rel=prefetch", true, "http: //wut.com/dfsdf?sdf=ghj&wer=rty", "prefetch", "", ""}, 61 {"< http://wut.com/dfsdf?sdf=ghj&wer=rty>;;;;; rel=prefetch", true, "http: //wut.com/dfsdf?sdf=ghj&wer=rty", "prefetch", "", ""},
62 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=preload;as=image", true, "http ://wut.com/%20%20%3dsdfsdf?sd", "preload", "image", ""}, 62 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=preload;as=image", true, "http ://wut.com/%20%20%3dsdfsdf?sd", "preload", "image", ""},
63 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=preload;as=whatever", true, "h ttp://wut.com/%20%20%3dsdfsdf?sd", "preload", "whatever", ""}, 63 {"< http://wut.com/%20%20%3dsdfsdf?sd>; rel=preload;as=whatever", true, "h ttp://wut.com/%20%20%3dsdfsdf?sd", "preload", "whatever", ""},
64 {"</images/cat.jpg>; anchor=foo; rel=prefetch;", false}, 64 {"</images/cat.jpg>; anchor=foo; rel=prefetch;", false},
65 {"</images/cat.jpg>; rel=prefetch;anchor=foo ", false}, 65 {"</images/cat.jpg>; rel=prefetch;anchor=foo ", false},
66 {"</images/cat.jpg>; anchor='foo'; rel=prefetch;", false}, 66 {"</images/cat.jpg>; anchor='foo'; rel=prefetch;", false},
67 {"</images/cat.jpg>; rel=prefetch;anchor='foo' ", false}, 67 {"</images/cat.jpg>; rel=prefetch;anchor='foo' ", false},
68 {"</images/cat.jpg>; rel=prefetch;anchor='' ", false}, 68 {"</images/cat.jpg>; rel=prefetch;anchor='' ", false},
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 const char* url; 133 const char* url;
134 const char* rel; 134 const char* rel;
135 bool valid; 135 bool valid;
136 const char* url2; 136 const char* url2;
137 const char* rel2; 137 const char* rel2;
138 bool valid2; 138 bool valid2;
139 } doubleTestCases[] = { 139 } doubleTestCases[] = {
140 {"<ybg.css>; rel=stylesheet, <simple.css>; rel=stylesheet", "ybg.css", "styl esheet", true, "simple.css", "stylesheet", true}, 140 {"<ybg.css>; rel=stylesheet, <simple.css>; rel=stylesheet", "ybg.css", "styl esheet", true, "simple.css", "stylesheet", true},
141 {"<ybg.css>; rel=stylesheet,<simple.css>; rel=stylesheet", "ybg.css", "style sheet", true, "simple.css", "stylesheet", true}, 141 {"<ybg.css>; rel=stylesheet,<simple.css>; rel=stylesheet", "ybg.css", "style sheet", true, "simple.css", "stylesheet", true},
142 {"<ybg.css>; rel=stylesheet;crossorigin,<simple.css>; rel=stylesheet", "ybg. css", "stylesheet", true, "simple.css", "stylesheet", true}, 142 {"<ybg.css>; rel=stylesheet;crossorigin,<simple.css>; rel=stylesheet", "ybg. css", "stylesheet", true, "simple.css", "stylesheet", true},
143 {"<hel,lo.css>; rel=stylesheet; title=\"foo,bar\", <simple.css>; rel=stylesh eet; title=\"foo;bar\"", "hel,lo.css", "stylesheet", true, "simple.css", "styles heet", true},
143 }; 144 };
144 145
145 void PrintTo(const DoubleTestCase& test, std::ostream* os) 146 void PrintTo(const DoubleTestCase& test, std::ostream* os)
146 { 147 {
147 *os << ::testing::PrintToString(test.headerValue); 148 *os << ::testing::PrintToString(test.headerValue);
148 } 149 }
149 150
150 class DoubleLinkHeaderTest : public ::testing::TestWithParam<DoubleTestCase> {}; 151 class DoubleLinkHeaderTest : public ::testing::TestWithParam<DoubleTestCase> {};
151 152
152 TEST_P(DoubleLinkHeaderTest, Double) 153 TEST_P(DoubleLinkHeaderTest, Double)
(...skipping 10 matching lines...) Expand all
163 EXPECT_STREQ(testCase.rel2, header2.rel().ascii().data()); 164 EXPECT_STREQ(testCase.rel2, header2.rel().ascii().data());
164 EXPECT_EQ(testCase.valid2, header2.valid()); 165 EXPECT_EQ(testCase.valid2, header2.valid());
165 } 166 }
166 167
167 INSTANTIATE_TEST_CASE_P(LinkHeaderTest, DoubleLinkHeaderTest, testing::ValuesIn( doubleTestCases)); 168 INSTANTIATE_TEST_CASE_P(LinkHeaderTest, DoubleLinkHeaderTest, testing::ValuesIn( doubleTestCases));
168 169
169 struct CrossOriginTestCase { 170 struct CrossOriginTestCase {
170 const char* headerValue; 171 const char* headerValue;
171 const char* url; 172 const char* url;
172 const char* rel; 173 const char* rel;
173 const CrossOriginAttributeValue crossorigin; 174 const char* crossorigin;
174 bool valid; 175 bool valid;
175 } crossOriginTestCases[] = { 176 } crossOriginTestCases[] = {
176 {"<http://whatever.com>; rel=preconnect", "http://whatever.com", "preconnect ", CrossOriginAttributeNotSet, true}, 177 {"<http://whatever.com>; rel=preconnect", "http://whatever.com", "preconnect ", nullptr, true},
177 {"<http://whatever.com>; rel=preconnect; crossorigin=", "http://whatever.com ", "preconnect", CrossOriginAttributeAnonymous, true}, 178 {"<http://whatever.com>; rel=preconnect; crossorigin=", "", "", "", false},
178 {"<http://whatever.com>; rel=preconnect; crossorigin", "http://whatever.com" , "preconnect", CrossOriginAttributeAnonymous, true}, 179 {"<http://whatever.com>; rel=preconnect; crossorigin", "http://whatever.com" , "preconnect", "", true},
179 {"<http://whatever.com>; rel=preconnect; crossorigin ", "http://whatever.com ", "preconnect", CrossOriginAttributeAnonymous, true}, 180 {"<http://whatever.com>; rel=preconnect; crossorigin ", "http://whatever.com ", "preconnect", "", true},
180 {"<http://whatever.com>; rel=preconnect; crossorigin;", "http://whatever.com ", "preconnect", CrossOriginAttributeAnonymous, true}, 181 {"<http://whatever.com>; rel=preconnect; crossorigin;", "http://whatever.com ", "preconnect", "", true},
181 {"<http://whatever.com>; rel=preconnect; crossorigin, <http://whatever2.com> ; rel=preconnect", "http://whatever.com", "preconnect", CrossOriginAttributeAnon ymous, true}, 182 {"<http://whatever.com>; rel=preconnect; crossorigin, <http://whatever2.com> ; rel=preconnect", "http://whatever.com", "preconnect", "", true},
182 {"<http://whatever.com>; rel=preconnect; crossorigin , <http://whatever2.com >; rel=preconnect", "http://whatever.com", "preconnect", CrossOriginAttributeAno nymous, true}, 183 {"<http://whatever.com>; rel=preconnect; crossorigin , <http://whatever2.com >; rel=preconnect", "http://whatever.com", "preconnect", "", true},
183 {"<http://whatever.com>; rel=preconnect; crossorigin,<http://whatever2.com>; rel=preconnect", "http://whatever.com", "preconnect", CrossOriginAttributeAnony mous, true}, 184 {"<http://whatever.com>; rel=preconnect; crossorigin,<http://whatever2.com>; rel=preconnect", "http://whatever.com", "preconnect", "", true},
184 {"<http://whatever.com>; rel=preconnect; crossorigin=anonymous", "http://wha tever.com", "preconnect", CrossOriginAttributeAnonymous, true}, 185 {"<http://whatever.com>; rel=preconnect; crossorigin=anonymous", "http://wha tever.com", "preconnect", "anonymous", true},
185 {"<http://whatever.com>; rel=preconnect; crossorigin=use-credentials", "http ://whatever.com", "preconnect", CrossOriginAttributeUseCredentials, true}, 186 {"<http://whatever.com>; rel=preconnect; crossorigin=use-credentials", "http ://whatever.com", "preconnect", "use-credentials", true},
186 {"<http://whatever.com>; rel=preconnect; crossorigin=whatever", "http://what ever.com", "preconnect", CrossOriginAttributeAnonymous, true}, 187 {"<http://whatever.com>; rel=preconnect; crossorigin=whatever", "http://what ever.com", "preconnect", "whatever", true},
187 {"<http://whatever.com>; rel=preconnect; crossorig|in=whatever", "http://wha tever.com", "preconnect", CrossOriginAttributeNotSet, true}, 188 {"<http://whatever.com>; rel=preconnect; crossorig|in=whatever", "http://wha tever.com", "preconnect", nullptr, true},
188 {"<http://whatever.com>; rel=preconnect; crossorigin|=whatever", "http://wha tever.com", "preconnect", CrossOriginAttributeNotSet, true}, 189 {"<http://whatever.com>; rel=preconnect; crossorigin|=whatever", "http://wha tever.com", "preconnect", nullptr, true},
189 }; 190 };
190 191
191 void PrintTo(const CrossOriginTestCase& test, std::ostream* os) 192 void PrintTo(const CrossOriginTestCase& test, std::ostream* os)
192 { 193 {
193 *os << ::testing::PrintToString(test.headerValue); 194 *os << ::testing::PrintToString(test.headerValue);
194 } 195 }
195 196
196 class CrossOriginLinkHeaderTest : public ::testing::TestWithParam<CrossOriginTes tCase> {}; 197 class CrossOriginLinkHeaderTest : public ::testing::TestWithParam<CrossOriginTes tCase> {};
197 198
198 TEST_P(CrossOriginLinkHeaderTest, CrossOrigin) 199 TEST_P(CrossOriginLinkHeaderTest, CrossOrigin)
199 { 200 {
200 const CrossOriginTestCase testCase = GetParam(); 201 const CrossOriginTestCase testCase = GetParam();
201 LinkHeaderSet headerSet(testCase.headerValue); 202 LinkHeaderSet headerSet(testCase.headerValue);
202 ASSERT_GE(headerSet.size(), 1u); 203 ASSERT_GE(headerSet.size(), 1u);
203 LinkHeader& header = headerSet[0]; 204 LinkHeader& header = headerSet[0];
204 EXPECT_STREQ(testCase.url, header.url().ascii().data()); 205 EXPECT_STREQ(testCase.url, header.url().ascii().data());
205 EXPECT_STREQ(testCase.rel, header.rel().ascii().data()); 206 EXPECT_STREQ(testCase.rel, header.rel().ascii().data());
206 EXPECT_EQ(testCase.crossorigin, header.crossOrigin());
207 EXPECT_EQ(testCase.valid, header.valid()); 207 EXPECT_EQ(testCase.valid, header.valid());
208 if (!testCase.crossorigin)
209 EXPECT_TRUE(header.crossOrigin().isNull());
210 else
211 EXPECT_STREQ(testCase.crossorigin, header.crossOrigin().ascii().data());
208 } 212 }
209 213
210 INSTANTIATE_TEST_CASE_P(LinkHeaderTest, CrossOriginLinkHeaderTest, testing::Valu esIn(crossOriginTestCases)); 214 INSTANTIATE_TEST_CASE_P(LinkHeaderTest, CrossOriginLinkHeaderTest, testing::Valu esIn(crossOriginTestCases));
211 215
212 } // namespace 216 } // namespace
213 } // namespace blink 217 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698