ap@apple.com | ee4f301 | 2013-05-07 17:58:45 +0000 | [diff] [blame] | 1 | <!DOCTYPE html> |
abarth@webkit.org | c5c5d9e | 2010-04-15 08:14:50 +0000 | [diff] [blame] | 2 | <html> |
| 3 | <head> |
mark.lam@apple.com | eac91eb | 2013-09-08 01:01:30 +0000 | [diff] [blame] | 4 | <script src="../../resources/js-test-pre.js"></script> |
abarth@webkit.org | c5c5d9e | 2010-04-15 08:14:50 +0000 | [diff] [blame] | 5 | <script src="resources/utilities.js"></script> |
| 6 | </head> |
| 7 | <body> |
ap@apple.com | ee4f301 | 2013-05-07 17:58:45 +0000 | [diff] [blame] | 8 | <script> |
| 9 | description("Tests mailto: URL canonicalization"); |
| 10 | |
| 11 | cases = [ |
| 12 | ["addr1", "addr1"], |
| 13 | ["addr1@foo.com", "addr1@foo.com"], |
| 14 | |
| 15 | // Trailing whitespace is stripped. |
| 16 | ["addr1 \t ", "addr1"], |
| 17 | ["addr1?to=jon", "addr1?to=jon"], |
| 18 | ["addr1,addr2", "addr1,addr2"], |
| 19 | ["addr1, addr2", "addr1, addr2"], |
| 20 | ["addr1%2caddr2", "addr1%2caddr2"], |
| 21 | |
| 22 | // U+10300 input as UTF-16 surrogate pair, expected as escaped UTF-8 |
| 23 | ["\uD800\uDF00", "%F0%90%8C%80"], |
| 24 | ["addr1?", "addr1?"], |
| 25 | |
| 26 | // Null character should be escaped to %00 |
| 27 | // Not sure how to test null characters in JavaScript. They appear to get |
| 28 | // stripped out. |
| 29 | // ["addr1\\0addr2?foo", "addr1%00addr2?foo"], |
| 30 | ]; |
| 31 | |
| 32 | for (var i = 0; i < cases.length; ++i) { |
| 33 | shouldBe("canonicalize('mailto:" + cases[i][0] + "')", |
| 34 | "'mailto:" + cases[i][1] + "'"); |
| 35 | } |
| 36 | // Invalid -- UTF-8 encoded surrogate value. |
| 37 | shouldBeFalse("canonicalize('mailto:\xed\xa0\x80') == 'mailto:%EF%BF%BD'"); |
| 38 | </script> |
mark.lam@apple.com | eac91eb | 2013-09-08 01:01:30 +0000 | [diff] [blame] | 39 | <script src="../../resources/js-test-post.js"></script> |
abarth@webkit.org | c5c5d9e | 2010-04-15 08:14:50 +0000 | [diff] [blame] | 40 | </body> |
| 41 | </html> |