blob: 0b58c93bdd9eb486a8cff0b132c505362dcd9d16 [file] [log] [blame]
ap@apple.comee4f3012013-05-07 17:58:45 +00001<!DOCTYPE html>
abarth@webkit.orgc5c5d9e2010-04-15 08:14:50 +00002<html>
3<head>
mark.lam@apple.comeac91eb2013-09-08 01:01:30 +00004<script src="../../resources/js-test-pre.js"></script>
abarth@webkit.orgc5c5d9e2010-04-15 08:14:50 +00005<script src="resources/utilities.js"></script>
6</head>
7<body>
ap@apple.comee4f3012013-05-07 17:58:45 +00008<script>
9description("Tests mailto: URL canonicalization");
10
11cases = [
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
32for (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.
37shouldBeFalse("canonicalize('mailto:\xed\xa0\x80') == 'mailto:%EF%BF%BD'");
38</script>
mark.lam@apple.comeac91eb2013-09-08 01:01:30 +000039<script src="../../resources/js-test-post.js"></script>
abarth@webkit.orgc5c5d9e2010-04-15 08:14:50 +000040</body>
41</html>