2 Copyright 2014 The Chromium Authors. All rights reserved.
3 Use of this source code is governed by a BSD-style license that can
4 be found in the LICENSE file.
6 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
7 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
10 <meta http-equiv="Pragma" content="no-cache" />
11 <meta http-equiv="Expires" content="-1" />
12 <script type="text/javascript" src="nacltest.js"></script>
13 <title>Native Client Post Message Manifest File Test</title>
17 <h1>Native Client Post Message Manifest File Test</h1>
18 <script type="text/javascript">
20 function createModule(id, src, type) {
21 return createNaClEmbed({
29 var mime = 'application/x-nacl';
30 if (getTestArguments()['pnacl'] !== undefined) {
31 mime = 'application/x-pnacl';
33 var embed = createModule('naclModule', 'pm_manifest_file.nmf', mime);
34 embed.basic_tests ='2';
35 embed.stress_tests = '0';
36 document.body.appendChild(embed);
38 function setupTests(tester, plugin) {
39 tester.addAsyncTest('Test_00_Init', function(status) {
40 plugin.addEventListener('message', function(message_event) {
41 this.removeEventListener('message', arguments.callee, false);
42 status.assertEqual(message_event.data,
43 'NaClSrpcClientCtor succeeded\n');
46 plugin.postMessage('init');
48 tester.addAsyncTest('Test_01_NameService', function(status) {
49 plugin.addEventListener('message', function(message_event) {
50 this.removeEventListener('message', arguments.callee, false);
51 status.assertEqual(message_event.data,
52 'EnumerateNames: in_out_nbytes 4\nEnumerateNames: in_out_nbytes 8\nEnumerateNames: in_out_nbytes 16\nEnumerateNames: in_out_nbytes 32\nEnumerateNames: in_out_nbytes 47\nnbytes = 47\nKernelService\nManifestNameService\nSecureRandom\n');
55 plugin.postMessage('name_dump');
57 tester.addAsyncTest('Test_02_ManifestList', function(status) {
58 plugin.addEventListener('message', function(message_event) {
59 this.removeEventListener('message', arguments.callee, false);
61 message_event.data.indexOf('Manifest Contents:\n') != -1,
62 '"Manifest Contents:" not found in "' + message_event.data + '"')
64 message_event.data.indexOf('nmf says hello world\n') != -1,
65 '"nmf says hello world" not found in "' + message_event.data + '"')
67 message_event.data.indexOf('test_file\n') != -1,
68 '"test_file" not found in "' + message_event.data + '"')
71 plugin.postMessage('manifest_list');
73 tester.addAsyncTest('Test_03_ManifestOpen', function(status) {
74 plugin.addEventListener('message', function(message_event) {
75 this.removeEventListener('message', arguments.callee, false);
76 var golden = 'File Contents:\nTest File Content';
77 status.log('expecting golden: ' + golden);
78 status.log('golden.length: ' + golden.length);
79 status.log('message_event.data.length: ' + message_event.data.length);
80 var min_length = Math.min(message_event.data.length, golden.length);
81 status.log('min_length = ' + min_length);
83 for (i = 0; i < min_length; i++) {
84 var mchar = message_event.data.charAt(i);
85 var gchar = golden.charAt(i);
87 status.log('char at ' + i + ' differ: ' + mchar + ' != ' + gchar);
88 status.log('charcodes: ' + mchar.charCodeAt(0) + ' != ' + gchar.charCodeAt(0));
91 status.assertEqual(message_event.data, golden);
94 plugin.postMessage('manifest_open');
98 var tester = new Tester();
99 setupTests(tester, $('naclModule'));
100 tester.waitFor($('naclModule'));