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

Side by Side Diff: net/base/data_url_unittest.cc

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "base/basictypes.h" 5 #include "base/basictypes.h"
6 #include "net/base/data_url.h" 6 #include "net/base/data_url.h"
7 #include "testing/gtest/include/gtest/gtest.h" 7 #include "testing/gtest/include/gtest/gtest.h"
8 #include "url/gurl.h" 8 #include "url/gurl.h"
9 9
10 namespace { 10 namespace {
11 11
12 struct ParseTestData { 12 struct ParseTestData {
13 const char* url; 13 const char* url;
14 bool is_valid; 14 bool is_valid;
15 const char* mime_type; 15 const char* mime_type;
16 const char* charset; 16 const char* charset;
17 const char* data; 17 const char* data;
18 }; 18 };
19
20 } 19 }
21 20
22 TEST(DataURLTest, Parse) { 21 TEST(DataURLTest, Parse) {
23 const ParseTestData tests[] = { 22 const ParseTestData tests[] = {
24 { "data:", 23 {"data:", false, "", "", ""},
25 false, 24 {"data:,", true, "text/plain", "US-ASCII", ""},
26 "", 25 {"data:;base64,", true, "text/plain", "US-ASCII", ""},
27 "", 26 {"data:;charset=,test", true, "text/plain", "US-ASCII", "test"},
28 "" }, 27 {"data:TeXt/HtMl,<b>x</b>", true, "text/html", "US-ASCII", "<b>x</b>"},
28 {"data:,foo", true, "text/plain", "US-ASCII", "foo"},
29 {"data:;base64,aGVsbG8gd29ybGQ=", true, "text/plain", "US-ASCII",
30 "hello world"},
31 {"data:foo/bar;baz=1;charset=kk,boo", true, "foo/bar", "kk", "boo"},
32 {"data:foo/bar;charset=kk;baz=1,boo", true, "foo/bar", "kk", "boo"},
33 {"data:text/html,%3Chtml%3E%3Cbody%3E%3Cb%3Ehello%20world"
34 "%3C%2Fb%3E%3C%2Fbody%3E%3C%2Fhtml%3E",
35 true, "text/html", "US-ASCII",
36 "<html><body><b>hello world</b></body></html>"},
37 {"data:text/html,<html><body><b>hello world</b></body></html>", true,
38 "text/html", "US-ASCII", "<html><body><b>hello world</b></body></html>"},
29 39
30 { "data:,", 40 // the comma cannot be url-escaped!
31 true, 41 {"data:%2Cblah", false, "", "", ""},
32 "text/plain",
33 "US-ASCII",
34 "" },
35 42
36 { "data:;base64,", 43 // invalid base64 content
37 true, 44 {"data:;base64,aGVs_-_-", false, "", "", ""},
38 "text/plain",
39 "US-ASCII",
40 "" },
41 45
42 { "data:;charset=,test", 46 // Spaces should be removed from non-text data URLs (we already tested
43 true, 47 // spaces above).
44 "text/plain", 48 {"data:image/fractal,a b c d e f g", true, "image/fractal", "US-ASCII",
45 "US-ASCII", 49 "abcdefg"},
46 "test" },
47 50
48 { "data:TeXt/HtMl,<b>x</b>", 51 // Spaces should also be removed from anything base-64 encoded
49 true, 52 {"data:;base64,aGVs bG8gd2 9ybGQ=", true, "text/plain", "US-ASCII",
50 "text/html", 53 "hello world"},
51 "US-ASCII",
52 "<b>x</b>" },
53 54
54 { "data:,foo", 55 // Other whitespace should also be removed from anything base-64 encoded.
55 true, 56 {"data:;base64,aGVs bG8gd2 \n9ybGQ=", true, "text/plain", "US-ASCII",
56 "text/plain", 57 "hello world"},
57 "US-ASCII",
58 "foo" },
59 58
60 { "data:;base64,aGVsbG8gd29ybGQ=", 59 // In base64 encoding, escaped whitespace should be stripped.
61 true, 60 // (This test was taken from acid3)
62 "text/plain", 61 // http://b/1054495
63 "US-ASCII", 62 {"data:text/javascript;base64,%20ZD%20Qg%0D%0APS%20An%20Zm91cic%0D%0A%207"
64 "hello world" }, 63 "%20",
64 true, "text/javascript", "US-ASCII", "d4 = 'four';"},
65 65
66 { "data:foo/bar;baz=1;charset=kk,boo", 66 // Only unescaped whitespace should be stripped in non-base64.
67 true, 67 // http://b/1157796
68 "foo/bar", 68 {"data:img/png,A B %20 %0A C", true, "img/png", "US-ASCII", "AB \nC"},
69 "kk", 69 {"data:text/plain;charset=utf-8;base64,SGVsbMO2", true, "text/plain",
70 "boo" }, 70 "utf-8", "Hell\xC3\xB6"},
71 71
72 { "data:foo/bar;charset=kk;baz=1,boo", 72 // Not sufficiently padded.
73 true, 73 {"data:;base64,aGVsbG8gd29ybGQ", true, "text/plain", "US-ASCII",
74 "foo/bar", 74 "hello world"},
75 "kk",
76 "boo" },
77 75
78 { "data:text/html,%3Chtml%3E%3Cbody%3E%3Cb%3Ehello%20world" 76 // Bad encoding (truncated).
79 "%3C%2Fb%3E%3C%2Fbody%3E%3C%2Fhtml%3E", 77 {"data:;base64,aGVsbG8gd29yb", false, "", "", ""},
80 true,
81 "text/html",
82 "US-ASCII",
83 "<html><body><b>hello world</b></body></html>" },
84 78
85 { "data:text/html,<html><body><b>hello world</b></body></html>", 79 // TODO(darin): add more interesting tests
86 true,
87 "text/html",
88 "US-ASCII",
89 "<html><body><b>hello world</b></body></html>" },
90
91 // the comma cannot be url-escaped!
92 { "data:%2Cblah",
93 false,
94 "",
95 "",
96 "" },
97
98 // invalid base64 content
99 { "data:;base64,aGVs_-_-",
100 false,
101 "",
102 "",
103 "" },
104
105 // Spaces should be removed from non-text data URLs (we already tested
106 // spaces above).
107 { "data:image/fractal,a b c d e f g",
108 true,
109 "image/fractal",
110 "US-ASCII",
111 "abcdefg" },
112
113 // Spaces should also be removed from anything base-64 encoded
114 { "data:;base64,aGVs bG8gd2 9ybGQ=",
115 true,
116 "text/plain",
117 "US-ASCII",
118 "hello world" },
119
120 // Other whitespace should also be removed from anything base-64 encoded.
121 { "data:;base64,aGVs bG8gd2 \n9ybGQ=",
122 true,
123 "text/plain",
124 "US-ASCII",
125 "hello world" },
126
127 // In base64 encoding, escaped whitespace should be stripped.
128 // (This test was taken from acid3)
129 // http://b/1054495
130 { "data:text/javascript;base64,%20ZD%20Qg%0D%0APS%20An%20Zm91cic%0D%0A%207"
131 "%20",
132 true,
133 "text/javascript",
134 "US-ASCII",
135 "d4 = 'four';" },
136
137 // Only unescaped whitespace should be stripped in non-base64.
138 // http://b/1157796
139 { "data:img/png,A B %20 %0A C",
140 true,
141 "img/png",
142 "US-ASCII",
143 "AB \nC" },
144
145 { "data:text/plain;charset=utf-8;base64,SGVsbMO2",
146 true,
147 "text/plain",
148 "utf-8",
149 "Hell\xC3\xB6" },
150
151 // Not sufficiently padded.
152 { "data:;base64,aGVsbG8gd29ybGQ",
153 true,
154 "text/plain",
155 "US-ASCII",
156 "hello world" },
157
158 // Bad encoding (truncated).
159 { "data:;base64,aGVsbG8gd29yb",
160 false,
161 "",
162 "",
163 "" },
164
165 // TODO(darin): add more interesting tests
166 }; 80 };
167 81
168 for (size_t i = 0; i < arraysize(tests); ++i) { 82 for (size_t i = 0; i < arraysize(tests); ++i) {
169 std::string mime_type; 83 std::string mime_type;
170 std::string charset; 84 std::string charset;
171 std::string data; 85 std::string data;
172 bool ok = 86 bool ok =
173 net::DataURL::Parse(GURL(tests[i].url), &mime_type, &charset, &data); 87 net::DataURL::Parse(GURL(tests[i].url), &mime_type, &charset, &data);
174 EXPECT_EQ(ok, tests[i].is_valid); 88 EXPECT_EQ(ok, tests[i].is_valid);
175 if (tests[i].is_valid) { 89 if (tests[i].is_valid) {
176 EXPECT_EQ(tests[i].mime_type, mime_type); 90 EXPECT_EQ(tests[i].mime_type, mime_type);
177 EXPECT_EQ(tests[i].charset, charset); 91 EXPECT_EQ(tests[i].charset, charset);
178 EXPECT_EQ(tests[i].data, data); 92 EXPECT_EQ(tests[i].data, data);
179 } 93 }
180 } 94 }
181 } 95 }
OLDNEW
« no previous file with comments | « net/base/data_url.cc ('k') | net/base/directory_lister.h » ('j') | net/base/mime_sniffer.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698