| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2010 Google Inc. All rights reserved. | 2 * Copyright (C) 2010 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 const char* ref; | 66 const char* ref; |
| 67 bool hasRef; | 67 bool hasRef; |
| 68 } cases[] = { | 68 } cases[] = { |
| 69 {"http://www.google.com/foo/blah?bar=baz#ref", "http", "www.google.com",
0, "", 0, "blah", "bar=baz", "ref", true}, | 69 {"http://www.google.com/foo/blah?bar=baz#ref", "http", "www.google.com",
0, "", 0, "blah", "bar=baz", "ref", true}, |
| 70 {"http://foo.com:1234/foo/bar/", "http", "foo.com", 1234, "", 0, "bar",
0, 0, false}, | 70 {"http://foo.com:1234/foo/bar/", "http", "foo.com", 1234, "", 0, "bar",
0, 0, false}, |
| 71 {"http://www.google.com?#", "http", "www.google.com", 0, "", 0, 0, "", "
", true}, | 71 {"http://www.google.com?#", "http", "www.google.com", 0, "", 0, 0, "", "
", true}, |
| 72 {"https://me:pass@google.com:23#foo", "https", "google.com", 23, "me", "
pass", 0, 0, "foo", true}, | 72 {"https://me:pass@google.com:23#foo", "https", "google.com", 23, "me", "
pass", 0, 0, "foo", true}, |
| 73 {"javascript:hello!//world", "javascript", "", 0, "", 0, "world", 0, 0,
false}, | 73 {"javascript:hello!//world", "javascript", "", 0, "", 0, "world", 0, 0,
false}, |
| 74 }; | 74 }; |
| 75 | 75 |
| 76 for (size_t i = 0; i < arraysize(cases); i++) { | 76 for (size_t i = 0; i < WTF_ARRAY_LENGTH(cases); i++) { |
| 77 // UTF-8 | 77 // UTF-8 |
| 78 KURL kurl(ParsedURLString, cases[i].url); | 78 KURL kurl(ParsedURLString, cases[i].url); |
| 79 | 79 |
| 80 EXPECT_EQ(cases[i].protocol, kurl.protocol()); | 80 EXPECT_EQ(cases[i].protocol, kurl.protocol()); |
| 81 EXPECT_EQ(cases[i].host, kurl.host()); | 81 EXPECT_EQ(cases[i].host, kurl.host()); |
| 82 EXPECT_EQ(cases[i].port, kurl.port()); | 82 EXPECT_EQ(cases[i].port, kurl.port()); |
| 83 EXPECT_EQ(cases[i].user, kurl.user()); | 83 EXPECT_EQ(cases[i].user, kurl.user()); |
| 84 EXPECT_EQ(cases[i].pass, kurl.pass()); | 84 EXPECT_EQ(cases[i].pass, kurl.pass()); |
| 85 EXPECT_EQ(cases[i].lastPathComponent, kurl.lastPathComponent()); | 85 EXPECT_EQ(cases[i].lastPathComponent, kurl.lastPathComponent()); |
| 86 EXPECT_EQ(cases[i].query, kurl.query()); | 86 EXPECT_EQ(cases[i].query, kurl.query()); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 118 // disagree with us about where the path is for this URL. | 118 // disagree with us about where the path is for this URL. |
| 119 {"http://a.com/hello;world", "http", "a.com", 0,
"", 0, "hello", 0, 0}, | 119 {"http://a.com/hello;world", "http", "a.com", 0,
"", 0, "hello", 0, 0}, |
| 120 | 120 |
| 121 // WebKit doesn't like UTF-8 or UTF-16 input. | 121 // WebKit doesn't like UTF-8 or UTF-16 input. |
| 122 {"http://\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xbd\xa0\xe5\xa5\xbd/", "http", "xn
--6qqa088eba", 0, "", 0, 0, 0, 0}, | 122 {"http://\xe4\xbd\xa0\xe5\xa5\xbd\xe4\xbd\xa0\xe5\xa5\xbd/", "http", "xn
--6qqa088eba", 0, "", 0, 0, 0, 0}, |
| 123 | 123 |
| 124 // WebKit %-escapes non-ASCII characters in reference, but we don't. | 124 // WebKit %-escapes non-ASCII characters in reference, but we don't. |
| 125 {"http://www.google.com/foo/blah?bar=baz#\xce\xb1\xce\xb2", "http", "www
.google.com", 0, "", 0, "blah", "bar=baz", "\xce\xb1\xce\xb2"}, | 125 {"http://www.google.com/foo/blah?bar=baz#\xce\xb1\xce\xb2", "http", "www
.google.com", 0, "", 0, "blah", "bar=baz", "\xce\xb1\xce\xb2"}, |
| 126 }; | 126 }; |
| 127 | 127 |
| 128 for (size_t i = 0; i < arraysize(cases); i++) { | 128 for (size_t i = 0; i < WTF_ARRAY_LENGTH(cases); i++) { |
| 129 KURL kurl(ParsedURLString, cases[i].url); | 129 KURL kurl(ParsedURLString, cases[i].url); |
| 130 | 130 |
| 131 EXPECT_EQ(cases[i].protocol, kurl.protocol()); | 131 EXPECT_EQ(cases[i].protocol, kurl.protocol()); |
| 132 EXPECT_EQ(cases[i].host, kurl.host()); | 132 EXPECT_EQ(cases[i].host, kurl.host()); |
| 133 EXPECT_EQ(cases[i].port, kurl.port()); | 133 EXPECT_EQ(cases[i].port, kurl.port()); |
| 134 EXPECT_EQ(cases[i].user, kurl.user()); | 134 EXPECT_EQ(cases[i].user, kurl.user()); |
| 135 EXPECT_EQ(cases[i].pass, kurl.pass()); | 135 EXPECT_EQ(cases[i].pass, kurl.pass()); |
| 136 EXPECT_EQ(cases[i].lastPath, kurl.lastPathComponent()); | 136 EXPECT_EQ(cases[i].lastPath, kurl.lastPathComponent()); |
| 137 EXPECT_EQ(cases[i].query, kurl.query()); | 137 EXPECT_EQ(cases[i].query, kurl.query()); |
| 138 // Want to compare UCS-16 refs (or to null). | 138 // Want to compare UCS-16 refs (or to null). |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 229 "", "http://:pass@goo.com:92/a?f#b", | 229 "", "http://:pass@goo.com:92/a?f#b", |
| 230 // pass | 230 // pass |
| 231 "", "http://goo.com:92/a?f#b", | 231 "", "http://goo.com:92/a?f#b", |
| 232 // path | 232 // path |
| 233 "/", "http://goo.com:92/?f#b", | 233 "/", "http://goo.com:92/?f#b", |
| 234 // query | 234 // query |
| 235 0, "http://goo.com:92/#b" | 235 0, "http://goo.com:92/#b" |
| 236 }, | 236 }, |
| 237 }; | 237 }; |
| 238 | 238 |
| 239 for (size_t i = 0; i < arraysize(cases); i++) { | 239 for (size_t i = 0; i < WTF_ARRAY_LENGTH(cases); i++) { |
| 240 KURL kurl(ParsedURLString, cases[i].url); | 240 KURL kurl(ParsedURLString, cases[i].url); |
| 241 | 241 |
| 242 kurl.setProtocol(cases[i].protocol); | 242 kurl.setProtocol(cases[i].protocol); |
| 243 EXPECT_STREQ(cases[i].expectedProtocol, kurl.string().utf8().data()); | 243 EXPECT_STREQ(cases[i].expectedProtocol, kurl.string().utf8().data()); |
| 244 | 244 |
| 245 kurl.setHost(cases[i].host); | 245 kurl.setHost(cases[i].host); |
| 246 EXPECT_STREQ(cases[i].expectedHost, kurl.string().utf8().data()); | 246 EXPECT_STREQ(cases[i].expectedHost, kurl.string().utf8().data()); |
| 247 | 247 |
| 248 kurl.setPort(cases[i].port); | 248 kurl.setPort(cases[i].port); |
| 249 EXPECT_STREQ(cases[i].expectedPort, kurl.string().utf8().data()); | 249 EXPECT_STREQ(cases[i].expectedPort, kurl.string().utf8().data()); |
| (...skipping 28 matching lines...) Expand all Loading... |
| 278 {"%20%21%22%23%24%25%26%27%28%29%2a%2B%2C%2D%2e%2f/", " !\"#$%&'()*+,-./
/"}, | 278 {"%20%21%22%23%24%25%26%27%28%29%2a%2B%2C%2D%2e%2f/", " !\"#$%&'()*+,-./
/"}, |
| 279 {"%30%31%32%33%34%35%36%37%38%39%3a%3B%3C%3D%3e%3f/", "0123456789:;<=>?/
"}, | 279 {"%30%31%32%33%34%35%36%37%38%39%3a%3B%3C%3D%3e%3f/", "0123456789:;<=>?/
"}, |
| 280 {"%40%41%42%43%44%45%46%47%48%49%4a%4B%4C%4D%4e%4f/", "@ABCDEFGHIJKLMNO/
"}, | 280 {"%40%41%42%43%44%45%46%47%48%49%4a%4B%4C%4D%4e%4f/", "@ABCDEFGHIJKLMNO/
"}, |
| 281 {"%50%51%52%53%54%55%56%57%58%59%5a%5B%5C%5D%5e%5f/", "PQRSTUVWXYZ[\\]^_
/"}, | 281 {"%50%51%52%53%54%55%56%57%58%59%5a%5B%5C%5D%5e%5f/", "PQRSTUVWXYZ[\\]^_
/"}, |
| 282 {"%60%61%62%63%64%65%66%67%68%69%6a%6B%6C%6D%6e%6f/", "`abcdefghijklmno/
"}, | 282 {"%60%61%62%63%64%65%66%67%68%69%6a%6B%6C%6D%6e%6f/", "`abcdefghijklmno/
"}, |
| 283 {"%70%71%72%73%74%75%76%77%78%79%7a%7B%7C%7D%7e%7f/", "pqrstuvwxyz{|}~\x
7f/"}, | 283 {"%70%71%72%73%74%75%76%77%78%79%7a%7B%7C%7D%7e%7f/", "pqrstuvwxyz{|}~\x
7f/"}, |
| 284 // Test un-UTF-8-ization. | 284 // Test un-UTF-8-ization. |
| 285 {"%e4%bd%a0%e5%a5%bd", "\xe4\xbd\xa0\xe5\xa5\xbd"}, | 285 {"%e4%bd%a0%e5%a5%bd", "\xe4\xbd\xa0\xe5\xa5\xbd"}, |
| 286 }; | 286 }; |
| 287 | 287 |
| 288 for (size_t i = 0; i < arraysize(decodeCases); i++) { | 288 for (size_t i = 0; i < WTF_ARRAY_LENGTH(decodeCases); i++) { |
| 289 String input(decodeCases[i].input); | 289 String input(decodeCases[i].input); |
| 290 String str = decodeURLEscapeSequences(input); | 290 String str = decodeURLEscapeSequences(input); |
| 291 EXPECT_STREQ(decodeCases[i].output, str.utf8().data()); | 291 EXPECT_STREQ(decodeCases[i].output, str.utf8().data()); |
| 292 } | 292 } |
| 293 | 293 |
| 294 // Our decode should decode %00 | 294 // Our decode should decode %00 |
| 295 String zero = decodeURLEscapeSequences("%00"); | 295 String zero = decodeURLEscapeSequences("%00"); |
| 296 EXPECT_STRNE("%00", zero.utf8().data()); | 296 EXPECT_STRNE("%00", zero.utf8().data()); |
| 297 | 297 |
| 298 // Test the error behavior for invalid UTF-8 (we differ from WebKit here). | 298 // Test the error behavior for invalid UTF-8 (we differ from WebKit here). |
| (...skipping 22 matching lines...) Expand all Loading... |
| 321 {"@ABCDEFGHIJKLMNO", | 321 {"@ABCDEFGHIJKLMNO", |
| 322 "%40ABCDEFGHIJKLMNO"}, | 322 "%40ABCDEFGHIJKLMNO"}, |
| 323 {"PQRSTUVWXYZ[\\]^_", | 323 {"PQRSTUVWXYZ[\\]^_", |
| 324 "PQRSTUVWXYZ%5B%5C%5D%5E_"}, | 324 "PQRSTUVWXYZ%5B%5C%5D%5E_"}, |
| 325 {"`abcdefghijklmno", | 325 {"`abcdefghijklmno", |
| 326 "%60abcdefghijklmno"}, | 326 "%60abcdefghijklmno"}, |
| 327 {"pqrstuvwxyz{|}~\x7f", | 327 {"pqrstuvwxyz{|}~\x7f", |
| 328 "pqrstuvwxyz%7B%7C%7D~%7F"}, | 328 "pqrstuvwxyz%7B%7C%7D~%7F"}, |
| 329 }; | 329 }; |
| 330 | 330 |
| 331 for (size_t i = 0; i < arraysize(encode_cases); i++) { | 331 for (size_t i = 0; i < WTF_ARRAY_LENGTH(encode_cases); i++) { |
| 332 String input(encode_cases[i].input); | 332 String input(encode_cases[i].input); |
| 333 String expectedOutput(encode_cases[i].output); | 333 String expectedOutput(encode_cases[i].output); |
| 334 String output = encodeWithURLEscapeSequences(input); | 334 String output = encodeWithURLEscapeSequences(input); |
| 335 EXPECT_EQ(expectedOutput, output); | 335 EXPECT_EQ(expectedOutput, output); |
| 336 } | 336 } |
| 337 | 337 |
| 338 // Our encode escapes NULLs for safety, so we need to check that too. | 338 // Our encode escapes NULLs for safety, so we need to check that too. |
| 339 String input("\x00\x01", 2); | 339 String input("\x00\x01", 2); |
| 340 String reference("%00%01"); | 340 String reference("%00%01"); |
| 341 | 341 |
| (...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 748 {"about:config", ""}, | 748 {"about:config", ""}, |
| 749 {"https://www.google.com/", "https://www.google.com/"}, | 749 {"https://www.google.com/", "https://www.google.com/"}, |
| 750 {"http://me@news.google.com:8888/", "http://news.google.com:8888/"}, | 750 {"http://me@news.google.com:8888/", "http://news.google.com:8888/"}, |
| 751 {"http://:pass@news.google.com:8888/foo", "http://news.google.com:8888/f
oo"}, | 751 {"http://:pass@news.google.com:8888/foo", "http://news.google.com:8888/f
oo"}, |
| 752 {"http://me:pass@news.google.com:8888/", "http://news.google.com:8888/"}
, | 752 {"http://me:pass@news.google.com:8888/", "http://news.google.com:8888/"}
, |
| 753 {"https://www.google.com/a?f#b", "https://www.google.com/a?f"}, | 753 {"https://www.google.com/a?f#b", "https://www.google.com/a?f"}, |
| 754 {"file:///tmp/test.html", ""}, | 754 {"file:///tmp/test.html", ""}, |
| 755 {"https://www.google.com/#", "https://www.google.com/"}, | 755 {"https://www.google.com/#", "https://www.google.com/"}, |
| 756 }; | 756 }; |
| 757 | 757 |
| 758 for (size_t i = 0; i < arraysize(referrerCases); i++) { | 758 for (size_t i = 0; i < WTF_ARRAY_LENGTH(referrerCases); i++) { |
| 759 KURL kurl(ParsedURLString, referrerCases[i].input); | 759 KURL kurl(ParsedURLString, referrerCases[i].input); |
| 760 String referrer = kurl.strippedForUseAsReferrer(); | 760 String referrer = kurl.strippedForUseAsReferrer(); |
| 761 EXPECT_STREQ(referrerCases[i].output, referrer.utf8().data()); | 761 EXPECT_STREQ(referrerCases[i].output, referrer.utf8().data()); |
| 762 } | 762 } |
| 763 } | 763 } |
| 764 | 764 |
| 765 } // namespace blink | 765 } // namespace blink |
| OLD | NEW |