| <!-- |
| Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| Use of this source code is governed by a BSD-style license that can be |
| found in the LICENSE file. |
| --> |
| |
| <script type="text/javascript" src="nacltest.js"></script> |
| |
| <div id="scratch_space"></div> |
| |
| <script type="text/javascript"> |
| |
| var tester = new Tester(); |
| |
| tester.addAsyncTest('trusted_crash_during_startup', function(status) { |
| var embed = document.createElement('embed'); |
| embed.width = 0; |
| embed.height = 0; |
| // We trigger a crash in trusted code via the NACL_CRASH_TEST env var. |
| // Since the crash occurs during startup, untrusted code does not run, |
| // so the choice of NaCl executable is arbitrary. |
| embed.src = 'crash_test.nmf'; |
| embed.type = 'application/x-nacl'; |
| embed.name = 'foo'; |
| |
| // Webkit Bug Workaround |
| // THIS SHOULD BE REMOVED WHEN Webkit IS FIXED |
| // http://code.google.com/p/nativeclient/issues/detail?id=2428 |
| // http://code.google.com/p/chromium/issues/detail?id=103588 |
| ForcePluginLoadOnTimeout(embed, tester, 15000); |
| |
| var div = document.createElement('div'); |
| div.appendChild(embed); |
| |
| div.addEventListener('load', status.wrap(function(event) { |
| status.fail('We expected this process to crash during startup'); |
| }), true); |
| |
| div.addEventListener('error', status.wrap(function(event) { |
| var error = embed.lastError; |
| status.log('Received error: ' + error); |
| // This error occurs only because NACL_CRASH_TEST is set. We would |
| // not normally expect to get this error in the browser. |
| var expected_error_prefix = 'NaCl module load failed: ServiceRuntime: '; |
| var suffix1 = 'command channel creation failed'; |
| var suffix2 = 'failed to start'; |
| status.assert(error == expected_error_prefix + suffix1 || |
| error == expected_error_prefix + suffix2); |
| status.pass(); |
| }), true); |
| |
| document.getElementById('scratch_space').appendChild(div); |
| }); |
| |
| tester.run(); |
| |
| </script> |