17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper routines for generating bad load tests.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Webpage must have an 'embeds' div for injecting NaCl modules.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Depends on nacltest.js.
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
97d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)function createModule(id, src, type) {
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return createNaClEmbed({
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    id: id,
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    src: src,
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    width: 100,
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    height: 20,
157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    type: type
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  });
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function addModule(module) {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('embeds').appendChild(module);
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)function removeModule(module) {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  $('embeds').removeChild(module);
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
307d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)function badLoadTest(tester, id, src, type, error_string) {
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  tester.addAsyncTest(id, function(test){
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)    var module = createModule(id, src, type);
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test.expectEvent(module, 'load', function(e) {
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      removeModule(module);
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test.fail('Module loaded successfully.');
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    });
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    test.expectEvent(module, 'error', function(e) {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test.assertEqual(module.readyState, 4);
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test.assertEqual(module.lastError, error_string);
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      test.expectEvent(module, 'loadend', function(e) {
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        removeModule(module);
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        test.pass();
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)      });
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    });
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    addModule(module);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  });
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
49