Sync web-platform-tests up to revision a5b95cb31914507088a4eda16f7674bbc6f3313f
[WebKit-https.git] / LayoutTests / imported / w3c / web-platform-tests / XMLHttpRequest / status-error.htm
1 <!doctype html>
2 <html>
3   <head>
4     <title>XMLHttpRequest: status error handling</title>
5     <script src="/resources/testharness.js"></script>
6     <script src="/resources/testharnessreport.js"></script>
7     <link rel="help" href="https://xhr.spec.whatwg.org/#handler-xhr-onerror" data-tested-assertations="../.." />
8     <link rel="help" href="https://xhr.spec.whatwg.org/#the-status-attribute" data-tested-assertations="/following::ol/li[3]" />
9   </head>
10   <body>
11     <p>This shouldn't be tested inside a tunnel.</p>
12     <div id="log"></div>
13     <script>
14       function noError(method, code) {
15         var test = async_test(document.title + " " + method + " " + code)
16
17         test.step(function() {
18           var client = new XMLHttpRequest()
19           client.open(method, "resources/status.py?code=" + code, true)
20
21           client.onreadystatechange = test.step_func(function() {
22             assert_equals(client.response, "", "response data")
23             assert_equals(client.status, code, "response status")
24
25             if (client.readyState == client.DONE)
26               /* Give extra time for a bogus error event to pop up */
27               test.step_timeout(() => { test.done() }, 100)
28           })
29           client.onerror = test.step_func(function() {
30             assert_unreached("HTTP error should not throw error event")
31           })
32           client.send()
33         })
34       }
35
36       noError('GET', 200)
37       noError('GET', 400)
38       noError('GET', 401)
39       noError('GET', 404)
40       noError('GET', 410)
41       noError('GET', 500)
42       noError('GET', 699)
43
44       noError('HEAD', 200)
45       noError('HEAD', 404)
46       noError('HEAD', 500)
47       noError('HEAD', 699)
48
49       noError('POST', 200)
50       noError('POST', 404)
51       noError('POST', 500)
52       noError('POST', 699)
53
54       noError('PUT', 200)
55       noError('PUT', 404)
56       noError('PUT', 500)
57       noError('PUT', 699)
58     </script>
59   </body>
60 </html>