// 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. // Called by the common.js module. function moduleDidLoad() { // The module is not hidden by default so we can easily see if the plugin // failed to load. common.hideModule(); } var currentTestEl = null; var failedTests = 0; var testsFinished = false; function startCommand(testName) { var testListEl = document.getElementById('tests'); var testEl = document.createElement('li'); var testRowEl = document.createElement('div'); var testNameEl = document.createElement('span'); var testResultEl = document.createElement('span'); testRowEl.classList.add('row'); testNameEl.classList.add('name'); testNameEl.textContent = testName; testResultEl.classList.add('result'); testRowEl.appendChild(testNameEl); testRowEl.appendChild(testResultEl); testEl.appendChild(testRowEl); testListEl.appendChild(testEl); currentTestEl = testEl; } function failCommand(fileName, lineNumber, summary) { var testMessageEl = document.createElement('pre'); testMessageEl.textContent += fileName + ':' + lineNumber + ': ' + summary; currentTestEl.appendChild(testMessageEl); failedTests++; } function endCommand(testName, testResult) { var testRowEl = currentTestEl.querySelector('.row'); var testResultEl = currentTestEl.querySelector('.result'); testRowEl.classList.add(testResult); testResultEl.textContent = testResult; } function testendCommand(exitCode) { testsFinished = true; if (failedTests) { common.updateStatus('FAILED'); document.getElementById('statusField').classList.add('failed'); } else { common.updateStatus('OK'); document.getElementById('statusField').classList.add('ok'); } } function handleMessage(event) { var msg = event.data; var firstColon = msg.indexOf(':'); var cmd = firstColon !== -1 ? msg.substr(0, firstColon) : msg; if (cmd == 'testend') event.srcElement.postMessage({'testend' : ''}); var cmdFunctionName = cmd + 'Command'; var cmdFunction = window[cmdFunctionName]; if (typeof(cmdFunction) !== 'function') { console.log('Unknown command: ' + cmd); console.log(' message: ' + msg); return; } var argCount = cmdFunction.length; // Don't use split, because it will split all commas (for example any commas // in the test failure summary). var argList = msg.substr(firstColon + 1); args = []; for (var i = 0; i < argCount - 1; ++i) { var arg; var comma = argList.indexOf(','); if (comma === -1) { if (i !== argCount - 1) { console.log('Bad arg count to command "' + cmd + '", expected ' + argCount); console.log(' message: ' + msg); } else { arg = argList; } } else { arg = argList.substr(0, comma); argList = argList.substr(comma + 1); } args.push(arg); } // Last argument is the rest of the message. args.push(argList); cmdFunction.apply(null, args); }