example.js revision effb81e5f8246d0db0270817048dc992db66e9fb
1// Copyright (c) 2012 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. 4// Called by the common.js module. 5function moduleDidLoad() { 6 // The module is not hidden by default so we can easily see if the plugin 7 // failed to load. 8 common.hideModule(); 9} 10 11var currentTestEl = null; 12var failedTests = 0; 13var testsFinished = false; 14 15function startCommand(testName) { 16 var testListEl = document.getElementById('tests'); 17 var testEl = document.createElement('li'); 18 var testRowEl = document.createElement('div'); 19 var testNameEl = document.createElement('span'); 20 var testResultEl = document.createElement('span'); 21 testRowEl.classList.add('row'); 22 testNameEl.classList.add('name'); 23 testNameEl.textContent = testName; 24 testResultEl.classList.add('result'); 25 testRowEl.appendChild(testNameEl); 26 testRowEl.appendChild(testResultEl); 27 testEl.appendChild(testRowEl); 28 testListEl.appendChild(testEl); 29 30 currentTestEl = testEl; 31} 32 33function failCommand(fileName, lineNumber, summary) { 34 var testMessageEl = document.createElement('pre'); 35 testMessageEl.textContent += fileName + ':' + lineNumber + ': ' + summary; 36 currentTestEl.appendChild(testMessageEl); 37 failedTests++; 38} 39 40function endCommand(testName, testResult) { 41 var testRowEl = currentTestEl.querySelector('.row'); 42 var testResultEl = currentTestEl.querySelector('.result'); 43 testRowEl.classList.add(testResult); 44 testResultEl.textContent = testResult; 45} 46 47function testendCommand(exitCode) { 48 testsFinished = true; 49 50 if (failedTests) { 51 common.updateStatus('FAILED'); 52 document.getElementById('statusField').classList.add('failed'); 53 } else { 54 common.updateStatus('OK'); 55 document.getElementById('statusField').classList.add('ok'); 56 } 57} 58 59function handleMessage(event) { 60 var msg = event.data; 61 var firstColon = msg.indexOf(':'); 62 var cmd = firstColon !== -1 ? msg.substr(0, firstColon) : msg; 63 if (cmd == 'testend') 64 event.srcElement.postMessage({'testend' : ''}); 65 66 var cmdFunctionName = cmd + 'Command'; 67 var cmdFunction = window[cmdFunctionName]; 68 69 if (typeof(cmdFunction) !== 'function') { 70 console.log('Unknown command: ' + cmd); 71 console.log(' message: ' + msg); 72 return; 73 } 74 75 var argCount = cmdFunction.length; 76 77 // Don't use split, because it will split all commas (for example any commas 78 // in the test failure summary). 79 var argList = msg.substr(firstColon + 1); 80 args = []; 81 for (var i = 0; i < argCount - 1; ++i) { 82 var arg; 83 var comma = argList.indexOf(','); 84 if (comma === -1) { 85 if (i !== argCount - 1) { 86 console.log('Bad arg count to command "' + cmd + '", expected ' + 87 argCount); 88 console.log(' message: ' + msg); 89 } else { 90 arg = argList; 91 } 92 } else { 93 arg = argList.substr(0, comma); 94 argList = argList.substr(comma + 1); 95 } 96 args.push(arg); 97 } 98 99 // Last argument is the rest of the message. 100 args.push(argList); 101 102 cmdFunction.apply(null, args); 103} 104