Index: net/base/data_url_unittest.cc |
diff --git a/net/base/data_url_unittest.cc b/net/base/data_url_unittest.cc |
deleted file mode 100644 |
index bcb2b49ad6c013ea88d7614a04089539c979cf67..0000000000000000000000000000000000000000 |
--- a/net/base/data_url_unittest.cc |
+++ /dev/null |
@@ -1,241 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "base/basictypes.h" |
-#include "net/base/data_url.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
-#include "url/gurl.h" |
- |
-namespace { |
- |
-struct ParseTestData { |
- const char* url; |
- bool is_valid; |
- const char* mime_type; |
- const char* charset; |
- const char* data; |
-}; |
- |
-} |
- |
-TEST(DataURLTest, Parse) { |
- const ParseTestData tests[] = { |
- { "data:", |
- false, |
- "", |
- "", |
- "" }, |
- |
- { "data:,", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "" }, |
- |
- { "data:;base64,", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "" }, |
- |
- { "data:;charset=,test", |
- false, |
- "", |
- "", |
- "" }, |
- |
- { "data:TeXt/HtMl,<b>x</b>", |
- true, |
- "text/html", |
- "US-ASCII", |
- "<b>x</b>" }, |
- |
- { "data:,foo", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "foo" }, |
- |
- { "data:;base64,aGVsbG8gd29ybGQ=", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "hello world" }, |
- |
- // Allow invalid mediatype for backward compatibility but set mime_type to |
- // "text/plain" instead of the invalid mediatype. |
- { "data:foo,boo", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "boo" }, |
- |
- // When accepting an invalid mediatype, override charset with "US-ASCII" |
- { "data:foo;charset=UTF-8,boo", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "boo" }, |
- |
- // Invalid mediatype. Includes a slash but the type part is not a token. |
- { "data:f(oo/bar;baz=1;charset=kk,boo", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "boo" }, |
- |
- { "data:foo/bar;baz=1;charset=kk,boo", |
- true, |
- "foo/bar", |
- "kk", |
- "boo" }, |
- |
- { "data:foo/bar;charset=kk;baz=1,boo", |
- true, |
- "foo/bar", |
- "kk", |
- "boo" }, |
- |
- { "data:text/html,%3Chtml%3E%3Cbody%3E%3Cb%3Ehello%20world" |
- "%3C%2Fb%3E%3C%2Fbody%3E%3C%2Fhtml%3E", |
- true, |
- "text/html", |
- "US-ASCII", |
- "<html><body><b>hello world</b></body></html>" }, |
- |
- { "data:text/html,<html><body><b>hello world</b></body></html>", |
- true, |
- "text/html", |
- "US-ASCII", |
- "<html><body><b>hello world</b></body></html>" }, |
- |
- // the comma cannot be url-escaped! |
- { "data:%2Cblah", |
- false, |
- "", |
- "", |
- "" }, |
- |
- // invalid base64 content |
- { "data:;base64,aGVs_-_-", |
- false, |
- "", |
- "", |
- "" }, |
- |
- // Spaces should be removed from non-text data URLs (we already tested |
- // spaces above). |
- { "data:image/fractal,a b c d e f g", |
- true, |
- "image/fractal", |
- "US-ASCII", |
- "abcdefg" }, |
- |
- // Spaces should also be removed from anything base-64 encoded |
- { "data:;base64,aGVs bG8gd2 9ybGQ=", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "hello world" }, |
- |
- // Other whitespace should also be removed from anything base-64 encoded. |
- { "data:;base64,aGVs bG8gd2 \n9ybGQ=", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "hello world" }, |
- |
- // In base64 encoding, escaped whitespace should be stripped. |
- // (This test was taken from acid3) |
- // http://b/1054495 |
- { "data:text/javascript;base64,%20ZD%20Qg%0D%0APS%20An%20Zm91cic%0D%0A%207" |
- "%20", |
- true, |
- "text/javascript", |
- "US-ASCII", |
- "d4 = 'four';" }, |
- |
- // Only unescaped whitespace should be stripped in non-base64. |
- // http://b/1157796 |
- { "data:img/png,A B %20 %0A C", |
- true, |
- "img/png", |
- "US-ASCII", |
- "AB \nC" }, |
- |
- { "data:text/plain;charset=utf-8;base64,SGVsbMO2", |
- true, |
- "text/plain", |
- "utf-8", |
- "Hell\xC3\xB6" }, |
- |
- // Not sufficiently padded. |
- { "data:;base64,aGVsbG8gd29ybGQ", |
- true, |
- "text/plain", |
- "US-ASCII", |
- "hello world" }, |
- |
- // Bad encoding (truncated). |
- { "data:;base64,aGVsbG8gd29yb", |
- false, |
- "", |
- "", |
- "" }, |
- |
- // BiDi control characters should be unescaped and preserved as is, and |
- // should not be replaced with % versions. In the below case, \xE2\x80\x8F |
- // is the RTL mark and the parsed text should preserve it as is. |
- { |
- "data:text/plain;charset=utf-8,\xE2\x80\x8Ftest", |
- true, |
- "text/plain", |
- "utf-8", |
- "\xE2\x80\x8Ftest"}, |
- |
- // Same as above but with Arabic text after RTL mark. |
- { |
- "data:text/plain;charset=utf-8," |
- "\xE2\x80\x8F\xD8\xA7\xD8\xAE\xD8\xAA\xD8\xA8\xD8\xA7\xD8\xB1", |
- true, |
- "text/plain", |
- "utf-8", |
- "\xE2\x80\x8F\xD8\xA7\xD8\xAE\xD8\xAA\xD8\xA8\xD8\xA7\xD8\xB1"}, |
- |
- // RTL mark encoded as %E2%80%8F should be unescaped too. Note that when |
- // wrapped in a GURL, this URL and the next effectively become the same as |
- // the previous two URLs. |
- { |
- "data:text/plain;charset=utf-8,%E2%80%8Ftest", |
- true, |
- "text/plain", |
- "utf-8", |
- "\xE2\x80\x8Ftest"}, |
- |
- // Same as above but with Arabic text after RTL mark. |
- { |
- "data:text/plain;charset=utf-8," |
- "%E2%80%8F\xD8\xA7\xD8\xAE\xD8\xAA\xD8\xA8\xD8\xA7\xD8\xB1", |
- true, |
- "text/plain", |
- "utf-8", |
- "\xE2\x80\x8F\xD8\xA7\xD8\xAE\xD8\xAA\xD8\xA8\xD8\xA7\xD8\xB1"} |
- |
- // TODO(darin): add more interesting tests |
- }; |
- |
- for (size_t i = 0; i < arraysize(tests); ++i) { |
- std::string mime_type; |
- std::string charset; |
- std::string data; |
- bool ok = |
- net::DataURL::Parse(GURL(tests[i].url), &mime_type, &charset, &data); |
- EXPECT_EQ(ok, tests[i].is_valid); |
- if (tests[i].is_valid) { |
- EXPECT_EQ(tests[i].mime_type, mime_type); |
- EXPECT_EQ(tests[i].charset, charset); |
- EXPECT_EQ(tests[i].data, data); |
- } |
- } |
-} |