| Index: net/base/data_url_unittest.cc
|
| diff --git a/net/base/data_url_unittest.cc b/net/base/data_url_unittest.cc
|
| index 3876301cad5ecb441630d1669bbbc8a6fcac8118..1a50b9efc1c9a1a4bd8394ce9753bb0ed30470a6 100644
|
| --- a/net/base/data_url_unittest.cc
|
| +++ b/net/base/data_url_unittest.cc
|
| @@ -16,175 +16,118 @@ struct ParseTestData {
|
| 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,
|
| - "",
|
| - "",
|
| - "" },
|
| -
|
| - // TODO(darin): add more interesting 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, "", "", ""},
|
| +
|
| + // TODO(darin): add more interesting tests
|
| };
|
|
|
| for (size_t i = 0; i < arraysize(tests); ++i) {
|
|
|