Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 { |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 162 "US-ASCII", | 162 "US-ASCII", |
| 163 "hello world" }, | 163 "hello world" }, |
| 164 | 164 |
| 165 // Bad encoding (truncated). | 165 // Bad encoding (truncated). |
| 166 { "data:;base64,aGVsbG8gd29yb", | 166 { "data:;base64,aGVsbG8gd29yb", |
| 167 false, | 167 false, |
| 168 "", | 168 "", |
| 169 "", | 169 "", |
| 170 "" }, | 170 "" }, |
| 171 | 171 |
| 172 // TODO(darin): add more interesting tests | 172 // Bad scheme. |
| 173 { ":text/plain;charset=utf-8;base64,SGVsbMO2", | |
| 174 false, | |
| 175 "", | |
| 176 "", | |
| 177 "" }, | |
| 178 | |
| 179 // Bad scheme. | |
| 180 { ":,", | |
| 181 false, | |
| 182 "", | |
| 183 "", | |
| 184 "" }, | |
| 185 | |
| 186 // Fragment base64 (valid). | |
| 187 { "data:text/html;base64,PCFkb2N0eXBlIGh0bWw+PHN0eWxlPmRpdiB7IGJhY2tncm91bmQ tY29sb3I6IHJlZDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6MjAwcHg7IH0gOnRhcmdldCB7IGJhY2tncm9 1bmQtY29sb3I6IGdyZWVuOyB9PC9zdHlsZT48ZGl2IGlkPSd0YXJnZXQnPjwvZGl2Pg==#target", | |
| 188 true, | |
| 189 "text/html", | |
| 190 "US-ASCII", | |
| 191 "<!doctype html><style>div { background-color: red; width: 200px; height: 200px; } :target { background-color: green; }</style><div id='target'></div>" }, | |
| 192 | |
| 193 // Fragment (valid). | |
| 194 { "data:text/html,%3C!doctype%20html%3E%3Cstyle%3Ediv%20%7B%20background-col or:%20red;%20width:%20200px;%20height:200px;%20%7D%20:target%20%7B%20background- color:%20green;%20%7D%3C/style%3E%3Cdiv%20id='target'%3E%3C/div%3E#target", | |
| 195 true, | |
| 196 "text/html", | |
| 197 "US-ASCII", | |
| 198 "<!doctype html><style>div { background-color: red; width: 200px; height: 200px; } :target { background-color: green; }</style><div id='target'></div>" }, | |
| 199 | |
| 200 // Query base64 (valid). | |
| 201 { "data:text/html;base64,PCFkb2N0eXBlIGh0bWw+PHN0eWxlPmRpdiB7IGJhY2tncm91bmQ tY29sb3I6IHJlZDsgd2lkdGg6IDIwMHB4OyBoZWlnaHQ6MjAwcHg7IH0gOnRhcmdldCB7IGJhY2tncm9 1bmQtY29sb3I6IGdyZWVuOyB9PC9zdHlsZT48ZGl2IGlkPSd0YXJnZXQnPjwvZGl2Pg==?foo=bar", | |
| 202 true, | |
| 203 "text/html", | |
| 204 "US-ASCII", | |
| 205 "<!doctype html><style>div { background-color: red; width: 200px; height: 200px; } :target { background-color: green; }</style><div id='target'></div>" }, | |
| 206 | |
| 207 // Query (valid). | |
| 208 { "data:text/html,%3C!doctype%20html%3E%3Cstyle%3Ediv%20%7B%20background-col or:%20red;%20width:%20200px;%20height:200px;%20%7D%20:target%20%7B%20background- color:%20green;%20%7D%3C/style%3E%3Cdiv%20id='target'%3E%3C/div%3E?foo=bar", | |
| 209 true, | |
| 210 "text/html", | |
| 211 "US-ASCII", | |
| 212 "<!doctype html><style>div { background-color: red; width: 200px; height: 200px; } :target { background-color: green; }</style><div id='target'></div>" }, | |
| 213 | |
|
asanka
2014/06/16 17:45:48
Add a test case for an percent escaped '#'.
asanka
2014/06/16 17:45:48
Would you mind going through http://greenbytes.de/
Erik Dahlström (inactive)
2014/06/17 13:10:21
Will do.
Erik Dahlström (inactive)
2014/06/17 13:10:21
Done.
| |
| 214 // TODO(darin): add more interesting tests | |
| 173 }; | 215 }; |
| 174 | 216 |
| 175 for (size_t i = 0; i < arraysize(tests); ++i) { | 217 for (size_t i = 0; i < arraysize(tests); ++i) { |
| 176 std::string mime_type; | 218 std::string mime_type; |
| 177 std::string charset; | 219 std::string charset; |
| 178 std::string data; | 220 std::string data; |
| 179 bool ok = | 221 bool ok = |
| 180 net::DataURL::Parse(GURL(tests[i].url), &mime_type, &charset, &data); | 222 net::DataURL::Parse(GURL(tests[i].url), &mime_type, &charset, &data); |
| 181 EXPECT_EQ(ok, tests[i].is_valid); | 223 EXPECT_EQ(ok, tests[i].is_valid); |
| 182 if (tests[i].is_valid) { | 224 if (tests[i].is_valid) { |
| 183 EXPECT_EQ(tests[i].mime_type, mime_type); | 225 EXPECT_EQ(tests[i].mime_type, mime_type); |
| 184 EXPECT_EQ(tests[i].charset, charset); | 226 EXPECT_EQ(tests[i].charset, charset); |
| 185 EXPECT_EQ(tests[i].data, data); | 227 EXPECT_EQ(tests[i].data, data); |
| 186 } | 228 } |
| 187 } | 229 } |
| 188 } | 230 } |
| OLD | NEW |