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.
5 function moduleDidLoad() {
6 // The module is not hidden by default so we can easily see if the plugin
11 var currentTestEl
= null;
13 var testsFinished
= false;
15 function 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
);
30 currentTestEl
= testEl
;
33 function failCommand(fileName
, lineNumber
, summary
) {
34 var testMessageEl
= document
.createElement('pre');
35 testMessageEl
.textContent
+= fileName
+ ':' + lineNumber
+ ': ' + summary
;
36 currentTestEl
.appendChild(testMessageEl
);
40 function endCommand(testName
, testResult
) {
41 var testRowEl
= currentTestEl
.querySelector('.row');
42 var testResultEl
= currentTestEl
.querySelector('.result');
43 testRowEl
.classList
.add(testResult
);
44 testResultEl
.textContent
= testResult
;
47 function testendCommand(exitCode
) {
51 common
.updateStatus('FAILED');
52 document
.getElementById('statusField').classList
.add('failed');
54 common
.updateStatus('OK');
55 document
.getElementById('statusField').classList
.add('ok');
59 function handleMessage(event
) {
61 var firstColon
= msg
.indexOf(':');
62 var cmd
= firstColon
!== -1 ? msg
.substr(0, firstColon
) : msg
;
63 var cmdFunctionName
= cmd
+ 'Command';
64 var cmdFunction
= window
[cmdFunctionName
];
66 event
.srcElement
.postMessage({'testend' : ''});
68 if (typeof(cmdFunction
) !== 'function') {
69 console
.log('Unknown command: ' + cmd
);
70 console
.log(' message: ' + msg
);
74 var argCount
= cmdFunction
.length
;
76 // Don't use split, because it will split all commas (for example any commas
77 // in the test failure summary).
78 var argList
= msg
.substr(firstColon
+ 1);
80 for (var i
= 0; i
< argCount
- 1; ++i
) {
82 var comma
= argList
.indexOf(',');
84 if (i
!== argCount
- 1) {
85 console
.log('Bad arg count to command "' + cmd
+ '", expected ' +
87 console
.log(' message: ' + msg
);
92 arg
= argList
.substr(0, comma
);
93 argList
= argList
.substr(comma
+ 1);
98 // Last argument is the rest of the message.
101 cmdFunction
.apply(null, args
);