Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / chrome / test / data / nacl / crash / ppapi_crash.js
blob6f7603c32224f01c76227cae801265ed1244c4d0
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 // Helper routines for generating crash load tests.
6 // Depends on nacltest.js.
8 function createModule(id, type) {
9   return createNaClEmbed({
10     id: id,
11     src: 'ppapi_' + id + '.nmf',
12     width: 1,
13     height: 1,
14     type: type
15   });
19 function crashTest(pluginName, testName, pingToDetectCrash) {
20   var mime = 'application/x-nacl';
21   if (getTestArguments()['pnacl'] !== undefined) {
22     mime = 'application/x-pnacl';
23   }
25   var plugin = createModule(pluginName, mime);
26   document.body.appendChild(plugin);
28   var tester = new Tester();
29   tester.addAsyncTest(testName, function(test) {
30     test.expectEvent(plugin, 'crash', function(e) { test.pass(); });
31     test.expectEvent(plugin, 'error', function(e) { test.fail(); });
32     plugin.postMessage(testName);
33     // In case the nexe does not crash right away, we will ping it
34     // until we detect that it's dead. DidChangeView and other events
35     // can do this too, but are less reliable.
36     if (pingToDetectCrash) {
37       function PingBack(message) {
38         test.log(message.data);
39         plugin.postMessage('Ping');
40       }
41       plugin.addEventListener('message', PingBack, false);
42       plugin.postMessage("Ping");
43     }
44   });
45   tester.waitFor(plugin);
46   tester.run();