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

Side by Side Diff: third_party/WebKit/Source/core/loader/LinkHeaderTest.cpp

Issue 1738133002: Add support for media attribute on link (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 4 years, 9 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 "core/loader/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);
16 ASSERT_EQ(nullHeaderSet.size(), unsigned(0)); 16 ASSERT_EQ(nullHeaderSet.size(), unsigned(0));
17 String emptyString(""); 17 String emptyString("");
18 LinkHeaderSet emptyHeaderSet(emptyString); 18 LinkHeaderSet emptyHeaderSet(emptyString);
19 ASSERT_EQ(emptyHeaderSet.size(), unsigned(0)); 19 ASSERT_EQ(emptyHeaderSet.size(), unsigned(0));
20 } 20 }
21 21
22 TEST(LinkHeaderTest, Single) 22 TEST(LinkHeaderTest, Single)
23 { 23 {
24 struct TestCase { 24 struct TestCase {
25 const char* headerValue; 25 const char* headerValue;
26 const char* url; 26 const char* url;
27 const char* rel; 27 const char* rel;
28 const char* as; 28 const char* as;
29 const char* media;
29 bool valid; 30 bool valid;
30 } cases[] = { 31 } cases[] = {
31 {"</images/cat.jpg>; rel=prefetch", "/images/cat.jpg", "prefetch", "", t rue}, 32 {"</images/cat.jpg>; rel=prefetch", "/images/cat.jpg", "prefetch", "", " ", true},
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 > ; rel=prefetch", "/images/cat.jpg", "prefetch", "", "", true},
37 {"</images/cat.jpg wutwut> ; rel=prefetch", "/images/cat.jpg", "pref etch", "", true}, 38 {"</images/cat.jpg wutwut> ; rel=prefetch", "/images/cat.jpg", "pref etch", "", "", true},
38 {"</images/cat.jpg wutwut \t > ; rel=prefetch", "/images/cat.jpg", "prefetch", "", true}, 39 {"</images/cat.jpg wutwut \t > ; 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 ", "/images/cat.jpg", "prefetch", "" , "", true},
42 {"</images/cat.jpg>; rel=prefetch; rel=somethingelse", "/images/cat.jpg" , "prefetch", "", true}, 43 {"</images/cat.jpg>; rel=prefetch; rel=somethingelse", "/images/cat.jpg" , "prefetch", "", "", true},
43 {" </images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch", "", true}, 44 {" </images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch", "", "", true},
44 {"\t </images/cat.jpg>; rel=prefetch ", "/images/cat.jpg", "prefetch" , "", true}, 45 {"\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}, 46 {"</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}, 47 {"\f</images/cat.jpg>\t\t ; \trel=prefetch \t ", "", "", "", "", false} ,
47 {"</images/cat.jpg>; rel= prefetch", "/images/cat.jpg", "prefetch", "", true}, 48 {"</images/cat.jpg>; rel= prefetch", "/images/cat.jpg", "prefetch", "", "", true},
48 {"<../images/cat.jpg?dog>; rel= prefetch", "../images/cat.jpg?dog", "pre fetch", "", true}, 49 {"<../images/cat.jpg?dog>; rel= prefetch", "../images/cat.jpg?dog", "pre fetch", "", "", true},
49 {"</images/cat.jpg>; rel =prefetch", "/images/cat.jpg", "prefetch", "", true}, 50 {"</images/cat.jpg>; rel =prefetch", "/images/cat.jpg", "prefetch", "", "", true},
50 {"</images/cat.jpg>; rel pel=prefetch", "/images/cat.jpg", "", "", false }, 51 {"</images/cat.jpg>; rel pel=prefetch", "/images/cat.jpg", "", "", "", f alse},
51 {"< /images/cat.jpg>", "/images/cat.jpg", "", "", true}, 52 {"< /images/cat.jpg>", "/images/cat.jpg", "", "", "", true},
52 {"</images/cat.jpg>; rel =", "/images/cat.jpg", "", "", false}, 53 {"</images/cat.jpg>; rel =", "/images/cat.jpg", "", "", "", false},
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", "prefet ch", "", "", true},
54 {"</images/cat.jpg>; wut=sup ; rel =prefetch", "/images/cat.jpg", "prefe tch", "", true}, 55 {"</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}, 56 {"</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}, 57 {"</images/cat.jpg> wut=sup ; rel =prefetch \t ;", "/images/cat.jpg", "", "", "", false},
57 {"< /images/cat.jpg", "", "", "", false}, 58 {"< /images/cat.jpg", "", "", "", "", false},
58 {"< http://wut.com/ sdfsdf ?sd>; rel=dns-prefetch", "http://wut.com/" , "dns-prefetch", "", true}, 59 {"< http://wut.com/ sdfsdf ?sd>; rel=dns-prefetch", "http://wut.com/" , "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/%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}, 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/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}, 63 {"< 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}, 64 {"< 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}, 65 {"</images/cat.jpg>; anchor=foo; rel=prefetch;", "/images/cat.jpg", "", "", "", false},
65 {"</images/cat.jpg>; rel=prefetch;anchor=foo ", "/images/cat.jpg", "pref etch", "", false}, 66 {"</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}, 67 {"</images/cat.jpg>; anchor='foo'; rel=prefetch;", "/images/cat.jpg", "" , "", "", false},
67 {"</images/cat.jpg>; rel=prefetch;anchor='foo' ", "/images/cat.jpg", "pr efetch", "", false}, 68 {"</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}, 69 {"</images/cat.jpg>; rel=prefetch;anchor='' ", "/images/cat.jpg", "prefe tch", "", "", false},
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/cat.jpg>; rel=prefetch;media='(max-width: 5000px)'", "/images /cat.jpg", "prefetch", "", "(max-width: 5000px)", true},
71 {"</images/ca,t.jpg>; rel=prefetch ;", "/images/ca,t.jpg", "prefetch" , "", true}, 72 {"</images/cat.jpg>; rel=prefetch;media=\"(max-width: 5000px)\"", "/imag es/cat.jpg", "prefetch", "", "(max-width: 5000px)", true},
72 {"<simple.css>; rel=stylesheet; title=\"title with a DQUOTE and backslas h\"", "simple.css", "stylesheet", "", true}, 73 {"</images/cat.jpg>; rel=prefetch;media=(max-width:5000px)", "/images/ca t.jpg", "prefetch", "", "(max-width:5000px)", true},
73 {"<simple.css>; rel=stylesheet; title=\"title with a DQUOTE \\\" and bac kslash: \\\"", "simple.css", "stylesheet", "", false}, 74 {"</images/cat.jpg>; rel=prefetch ;", "/images/cat.jpg", "prefetch", "", "", true},
74 {"<simple.css>; title=\"title with a DQUOTE \\\" and backslash: \"; rel= stylesheet; ", "simple.css", "stylesheet", "", true}, 75 {"</images/ca,t.jpg>; rel=prefetch ;", "/images/ca,t.jpg", "prefetch" , "", "", true},
75 {"<simple.css>; title=\'title with a DQUOTE \\\' and backslash: \'; rel= stylesheet; ", "simple.css", "stylesheet", "", true}, 76 {"<simple.css>; rel=stylesheet; title=\"title with a DQUOTE and backslas h\"", "simple.css", "stylesheet", "", "", true},
76 {"<simple.css>; title=\"title with a DQUOTE \\\" and ;backslash,: \"; re l=stylesheet; ", "simple.css", "stylesheet", "", true}, 77 {"<simple.css>; rel=stylesheet; title=\"title with a DQUOTE \\\" and bac kslash: \\\"", "simple.css", "stylesheet", "", "", false},
77 {"<simple.css>; title=\"title with a DQUOTE \' and ;backslash,: \"; rel= stylesheet; ", "simple.css", "stylesheet", "", true}, 78 {"<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}, 79 {"<simple.css>; title=\'title with a DQUOTE \\\' and backslash: \'; rel= stylesheet; ", "simple.css", "stylesheet", "", "", true},
79 {"<simple.css>; title=\"\"; rel=\"stylesheet\"; ", "simple.css", "styles heet", "", true}, 80 {"<simple.css>; title=\"title with a DQUOTE \\\" and ;backslash,: \"; re l=stylesheet; ", "simple.css", "stylesheet", "", "", true},
80 {"<simple.css>; rel=stylesheet; title=\"", "simple.css", "stylesheet", " ", false}, 81 {"<simple.css>; title=\"title with a DQUOTE \' and ;backslash,: \"; rel= stylesheet; ", "simple.css", "stylesheet", "", "", true},
81 {"<simple.css>; rel=stylesheet; title=\"\"", "simple.css", "stylesheet", "", true}, 82 {"<simple.css>; title=\"\"; rel=stylesheet; ", "simple.css", "stylesheet ", "", "", true},
82 {"<simple.css>; rel=\"stylesheet\"; title=\"", "simple.css", "stylesheet ", "", false}, 83 {"<simple.css>; title=\"\"; rel=\"stylesheet\"; ", "simple.css", "styles heet", "", "", true},
83 {"<simple.css>; rel=\";style,sheet\"; title=\"", "simple.css", ";style,s heet", "", false}, 84 {"<simple.css>; rel=stylesheet; title=\"", "simple.css", "stylesheet", " ", "", false},
84 {"<simple.css>; rel=\"bla'sdf\"; title=\"", "simple.css", "bla'sdf", "", false}, 85 {"<simple.css>; rel=stylesheet; title=\"\"", "simple.css", "stylesheet", "", "", true},
85 {"<simple.css>; rel=\"\"; title=\"\"", "simple.css", "", "", true}, 86 {"<simple.css>; rel=\"stylesheet\"; title=\"", "simple.css", "stylesheet ", "", "", false},
86 {"<simple.css>; rel=''; title=\"\"", "simple.css", "", "", true}, 87 {"<simple.css>; rel=\";style,sheet\"; title=\"", "simple.css", ";style,s heet", "", "", false},
87 {"<simple.css>; rel=''; title=", "simple.css", "", "", false}, 88 {"<simple.css>; rel=\"bla'sdf\"; title=\"", "simple.css", "bla'sdf", "", "", false},
88 {"<simple.css>; rel=''; title", "simple.css", "", "", false}, 89 {"<simple.css>; rel=\"\"; title=\"\"", "simple.css", "", "", "", true},
89 {"<simple.css>; rel=''; media", "simple.css", "", "", false}, 90 {"<simple.css>; rel=''; title=\"\"", "simple.css", "", "", "", true},
90 {"<simple.css>; rel=''; hreflang", "simple.css", "", "", false}, 91 {"<simple.css>; rel=''; title=", "simple.css", "", "", "", false},
91 {"<simple.css>; rel=''; type", "simple.css", "", "", false}, 92 {"<simple.css>; rel=''; title", "simple.css", "", "", "", false},
92 {"<simple.css>; rel=''; rev", "simple.css", "", "", false}, 93 {"<simple.css>; rel=''; media", "simple.css", "", "", "", false},
93 {"<simple.css>; rel=''; bla", "simple.css", "", "", true}, 94 {"<simple.css>; rel=''; hreflang", "simple.css", "", "", "", false},
94 {"<simple.css>; rel='prefetch", "simple.css", "", "", false}, 95 {"<simple.css>; rel=''; type", "simple.css", "", "", "", false},
95 {"<simple.css>; rel=\"prefetch", "simple.css", "", "", false}, 96 {"<simple.css>; rel=''; rev", "simple.css", "", "", "", false},
96 {"<simple.css>; rel=\"", "simple.css", "", "", false}, 97 {"<simple.css>; rel=''; bla", "simple.css", "", "", "", true},
98 {"<simple.css>; rel='prefetch", "simple.css", "", "", "", false},
99 {"<simple.css>; rel=\"prefetch", "simple.css", "", "", "", false},
100 {"<simple.css>; rel=\"", "simple.css", "", "", "", false},
97 }; 101 };
98 102
99 103
100 // Test the cases with a single header 104 // Test the cases with a single header
101 for (auto& testCase : cases) { 105 for (auto& testCase : cases) {
102 LinkHeaderSet headerSet(testCase.headerValue); 106 LinkHeaderSet headerSet(testCase.headerValue);
103 LinkHeader& header = headerSet[0]; 107 LinkHeader& header = headerSet[0];
104 ASSERT_STREQ(testCase.url, header.url().ascii().data()); 108 ASSERT_STREQ(testCase.url, header.url().ascii().data());
105 ASSERT_STREQ(testCase.rel, header.rel().ascii().data()); 109 ASSERT_STREQ(testCase.rel, header.rel().ascii().data());
110 ASSERT_STREQ(testCase.as, header.as().ascii().data());
111 ASSERT_STREQ(testCase.media, header.media().ascii().data());
106 ASSERT_EQ(testCase.valid, header.valid()); 112 ASSERT_EQ(testCase.valid, header.valid());
107 } 113 }
108 } 114 }
109 115
110 TEST(LinkHeaderTest, Double) 116 TEST(LinkHeaderTest, Double)
111 { 117 {
112 struct DoubleTestCase { 118 struct DoubleTestCase {
113 const char* headerValue; 119 const char* headerValue;
114 const char* url; 120 const char* url;
115 const char* rel; 121 const char* rel;
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
169 for (auto& testCase : cases) { 175 for (auto& testCase : cases) {
170 LinkHeaderSet headerSet(testCase.headerValue); 176 LinkHeaderSet headerSet(testCase.headerValue);
171 LinkHeader& header = headerSet[0]; 177 LinkHeader& header = headerSet[0];
172 ASSERT_STREQ(testCase.url, header.url().ascii().data()); 178 ASSERT_STREQ(testCase.url, header.url().ascii().data());
173 ASSERT_STREQ(testCase.rel, header.rel().ascii().data()); 179 ASSERT_STREQ(testCase.rel, header.rel().ascii().data());
174 ASSERT_EQ(testCase.crossorigin, header.crossOrigin()); 180 ASSERT_EQ(testCase.crossorigin, header.crossOrigin());
175 ASSERT_EQ(testCase.valid, header.valid()); 181 ASSERT_EQ(testCase.valid, header.valid());
176 } 182 }
177 } 183 }
178 } // namespace blink 184 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698