• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<meta charset=windows-1252>
3<title>Character Decoding: UTF-32 (not supported) subresource of windows-1252 document</title>
4<script src="/resources/testharness.js"></script>
5<script src="/resources/testharnessreport.js"></script>
6<body>
7<script>
8
9// Since UTF-32 is not supported:
10//  * HTML resources will use the parent encoding (windows-1252)
11//  * XML resources will default to UTF-8
12// ... except for the UTF-32LE-with-BOM case, where the UTF-32
13// BOM will be mistaken for a UTF-16LE BOM (FF FE 00 00), in which
14// case it will be interpreted as UTF-16LE.
15
16const samples = [
17  {file: 'resources/utf-32-big-endian-bom.html',
18   characterSet: 'windows-1252',
19   contentType: 'text/html'
20  },
21  {file: 'resources/utf-32-big-endian-bom.xml',
22   characterSet: 'UTF-8',
23   contentType: 'application/xml'
24  },
25  {file: 'resources/utf-32-big-endian-nobom.html',
26   characterSet: 'windows-1252',
27   contentType: 'text/html'
28  },
29  {file: 'resources/utf-32-big-endian-nobom.xml',
30   characterSet: 'UTF-8',
31   contentType: 'application/xml'
32  },
33
34  {file: 'resources/utf-32-little-endian-bom.html',
35   characterSet: 'UTF-16LE',
36   contentType: 'text/html'
37  },
38  {file: 'resources/utf-32-little-endian-bom.xml',
39   characterSet: 'UTF-16LE',
40   contentType: 'application/xml'
41  },
42  {file: 'resources/utf-32-little-endian-nobom.html',
43   characterSet: 'windows-1252',
44   contentType: 'text/html'
45  },
46  {file: 'resources/utf-32-little-endian-nobom.xml',
47   characterSet: 'UTF-8',
48   contentType: 'application/xml'
49  }
50];
51
52samples.forEach(expected => async_test(t => {
53  const iframe = document.createElement('iframe');
54  iframe.src = expected.file;
55  iframe.onload = t.step_func_done(() => {
56    const doc = iframe.contentDocument;
57    assert_equals(doc.contentType, expected.contentType);
58    assert_equals(doc.characterSet, expected.characterSet);
59    // The following is a little quirky as non-well-formed XML isn't defined in sufficient detail to
60    // be able to use more precise assertions.
61    assert_true(
62      !('dataset' in doc.documentElement) ||
63      doc.documentElement.dataset['parsed'] !== 'yes',
64      'Should not have parsed as (X)HTML');
65  });
66  document.body.appendChild(iframe);
67  t.add_cleanup(() => iframe.remove());
68}, `Expect ${expected.file} to parse as ${expected.characterSet}`));
69
70</script>
71</body>
72