summaryrefslogtreecommitdiffstats
path: root/testing/web-platform/tests/XMLHttpRequest/responsexml-document-properties.htm
blob: 18e3fb2f2b786c21344cd273d42144c1f285bb19 (plain)
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
<!doctype html>
<html>
  <head>
    <title>XMLHttpRequest: responseXML document properties</title>
    <script src="/resources/testharness.js"></script>
    <script src="/resources/testharnessreport.js"></script>
    <link rel="help" href="https://xhr.spec.whatwg.org/#the-responsexml-attribute" data-tested-assertations="following::ol[1]/li[4]" />
    <link rel="help" href="https://xhr.spec.whatwg.org/#document-response-entity-body" data-tested-assertations="following::ol[1]/li[6] following::ol[1]/li[7] following::ol[1]/li[8] following::ol[1]/li[10]" />
  </head>
  <body>
    <div id="log"></div>
    <script>
      var timePreXHR = Math.floor(new Date().getTime(new Date().getTime() - 3000) / 1000); // three seconds ago, in case there's clock drift
      var client = new XMLHttpRequest()
      client.open("GET", "resources/well-formed.xml", false)
      client.send(null)
      var expected = {
        domain:undefined,
        URL:location.href.replace(/[^/]*$/, 'resources/well-formed.xml'),
        documentURI:location.href.replace(/[^/]*$/, 'resources/well-formed.xml'),
        referrer:'',
        title:'',
        contentType:'application/xml',
        readyState:'complete',
        location:null,
        defaultView:null,
        body:undefined,
        images: undefined,
        doctype:null,
        forms:undefined,
        all:undefined,
        links: undefined,
        cookie:''
      }

      for (var name in expected) {
        runTest(name, expected[name])
      }

      function runTest(name, value){
        test(function(){
          assert_equals(client.responseXML[name], value)
        }, name)
      }

      test(function() {
        var lastModified = Math.floor(new Date(client.responseXML.lastModified).getTime() / 1000);
        var now = Math.floor(new Date().getTime(new Date().getTime() + 3000) / 1000); // three seconds from now, in case there's clock drift
        assert_greater_than_equal(lastModified, timePreXHR);
        assert_less_than_equal(lastModified, now);
      }, 'lastModified set to time of response if no HTTP header provided')

      test(function() {
        var client2 = new XMLHttpRequest()
        client2.open("GET", "resources/last-modified.py", false)
        client2.send(null)
        assert_equals((new Date(client2.getResponseHeader('Last-Modified'))).getTime(), (new Date(client2.responseXML.lastModified)).getTime())
      }, 'lastModified set to related HTTP header if provided')

      test(function() {
        client.responseXML.cookie = "thisshouldbeignored"
        assert_equals(client.responseXML.cookie, "")
      }, 'cookie (after setting it)')

      test(function() {
        assert_equals(typeof(client.responseXML.styleSheets), "object")
      }, 'styleSheets')

      test(function() {
        assert_equals(typeof(client.responseXML.implementation), "object")
      }, 'implementation')
    </script>
  </body>
</html>