1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
<!DOCTYPE HTML>
<html>
<head>
<title>Tests for <input type='url'> validity</title>
<script src="/tests/SimpleTest/SimpleTest.js"></script>
<link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
</head>
<body>
<p id="display"></p>
<div id="content" style="display: none">
<input type='url' id='i' oninvalid='invalidEventHandler(event);'>
</div>
<pre id="test">
<script type="application/javascript">
/** Tests for <input type='url'> validity **/
// More checks are done in test_bug551670.html.
var gInvalid = false;
function invalidEventHandler(e)
{
is(e.type, "invalid", "Invalid event type should be invalid");
gInvalid = true;
}
function checkValidURL(element)
{
info(`Checking ${element.value}\n`);
gInvalid = false;
ok(!element.validity.typeMismatch,
"Element should not suffer from type mismatch");
ok(element.validity.valid, "Element should be valid");
ok(element.checkValidity(), "Element should be valid");
ok(!gInvalid, "The invalid event should not have been thrown");
is(element.validationMessage, '',
"Validation message should be the empty string");
ok(element.matches(":valid"), ":valid pseudo-class should apply");
}
function checkInvalidURL(element)
{
gInvalid = false;
ok(element.validity.typeMismatch,
"Element should suffer from type mismatch");
ok(!element.validity.valid, "Element should not be valid");
ok(!element.checkValidity(), "Element should not be valid");
ok(gInvalid, "The invalid event should have been thrown");
is(element.validationMessage, "Please enter a URL.",
"Validation message should be related to invalid URL");
ok(element.matches(":invalid"),
":invalid pseudo-class should apply");
}
var url = document.getElementById('i');
var values = [
// [ value, validity ]
// The empty string should be considered as valid.
[ "", true ],
[ "foo", false ],
[ "http://mozilla.com/", true ],
[ "http://mozilla.com", true ],
[ "http://mozil\nla\r.com/", true ],
[ " http://mozilla.com/ ", true ],
[ "\r http://mozilla.com/ \n", true ],
[ "file:///usr/bin/tulip", true ],
[ "../../bar.html", false ],
[ "http://mozillá.org", true ],
[ "https://mózillä.org", true ],
[ "http://mózillä.órg", true ],
[ "ht://mózillä.órg", true ],
[ "httŭ://mózillä.órg", false ],
[ "chrome://bookmarks", true ],
];
values.forEach(function([value, valid]) {
url.value = value;
if (valid) {
checkValidURL(url);
} else {
checkInvalidURL(url);
}
});
</script>
</pre>
</body>
</html>
|