OLD | NEW |
1 /* | 1 /* |
2 * THIS FILE INTENTIONALLY LEFT BLANK | 2 * THIS FILE INTENTIONALLY LEFT BLANK |
3 * | 3 * |
4 * More specifically, this file is intended for vendors to implement | 4 * More specifically, this file is intended for vendors to implement |
5 * code needed to integrate testharness.js tests with their own test systems. | 5 * code needed to integrate testharness.js tests with their own test systems. |
6 * | 6 * |
7 * Typically such integration will attach callbacks when each test is | 7 * Typically such integration will attach callbacks when each test is |
8 * has run, using add_result_callback(callback(test)), or when the whole test fi
le has | 8 * has run, using add_result_callback(callback(test)), or when the whole test fi
le has |
9 * completed, using add_completion_callback(callback(tests, harness_status)). | 9 * completed, using add_completion_callback(callback(tests, harness_status)). |
10 * | 10 * |
11 * For more documentation about the callback functions and the | 11 * For more documentation about the callback functions and the |
12 * parameters they are called with see testharness.js | 12 * parameters they are called with see testharness.js |
13 */ | 13 */ |
14 | 14 |
15 (function() { | 15 (function() { |
16 | 16 |
| 17 var output_document = document; |
| 18 |
17 // Setup for WebKit JavaScript tests | 19 // Setup for WebKit JavaScript tests |
18 if (self.testRunner) { | 20 if (self.testRunner) { |
19 testRunner.dumpAsText(); | 21 testRunner.dumpAsText(); |
20 testRunner.waitUntilDone(); | 22 testRunner.waitUntilDone(); |
21 testRunner.setCanOpenWindows(); | 23 testRunner.setCanOpenWindows(); |
22 testRunner.setCloseRemainingWindowsWhenComplete(true); | 24 testRunner.setCloseRemainingWindowsWhenComplete(true); |
23 testRunner.setDumpJavaScriptDialogs(false); | 25 testRunner.setDumpJavaScriptDialogs(false); |
24 } | 26 } |
25 | 27 |
26 // Disable the default output of testharness.js. The default output formats | 28 // Disable the default output of testharness.js. The default output formats |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
139 } | 141 } |
140 | 142 |
141 var didDispatchLoadEvent = false; | 143 var didDispatchLoadEvent = false; |
142 window.addEventListener('load', function() { | 144 window.addEventListener('load', function() { |
143 didDispatchLoadEvent = true; | 145 didDispatchLoadEvent = true; |
144 if (isWPTManualTest()) { | 146 if (isWPTManualTest()) { |
145 setTimeout(loadAutomationScript, 0); | 147 setTimeout(loadAutomationScript, 0); |
146 } | 148 } |
147 }, { once: true }); | 149 }, { once: true }); |
148 | 150 |
| 151 add_start_callback(function(properties) { |
| 152 if (properties.output_document) |
| 153 output_document = properties.output_document; |
| 154 }); |
| 155 |
149 // Using a callback function, test results will be added to the page in a | 156 // Using a callback function, test results will be added to the page in a |
150 // manner that allows dumpAsText to produce readable test results. | 157 // manner that allows dumpAsText to produce readable test results. |
151 add_completion_callback(function (tests, harness_status) { | 158 add_completion_callback(function (tests, harness_status) { |
152 | 159 |
153 // Create element to hold results. | 160 // Create element to hold results. |
154 var results = document.createElement("pre"); | 161 var results = output_document.createElement("pre"); |
155 | 162 |
156 // Declare result string. | 163 // Declare result string. |
157 var resultStr = "This is a testharness.js-based test.\n"; | 164 var resultStr = "This is a testharness.js-based test.\n"; |
158 | 165 |
159 // Check harness_status. If it is not 0, tests did not execute | 166 // Check harness_status. If it is not 0, tests did not execute |
160 // correctly, output the error code and message. | 167 // correctly, output the error code and message. |
161 if (harness_status.status != 0) { | 168 if (harness_status.status != 0) { |
162 resultStr += "Harness Error. harness_status.status = " + | 169 resultStr += "Harness Error. harness_status.status = " + |
163 harness_status.status + | 170 harness_status.status + |
164 " , harness_status.message = " + | 171 " , harness_status.message = " + |
165 harness_status.message + | 172 harness_status.message + |
166 "\n"; | 173 "\n"; |
167 } | 174 } |
168 // reflection tests contain huge number of tests, and Chromium code | 175 // reflection tests contain huge number of tests, and Chromium code |
169 // review tool has the 1MB diff size limit. We merge PASS lines. | 176 // review tool has the 1MB diff size limit. We merge PASS lines. |
170 if (document.URL.indexOf("/html/dom/reflection") >= 0) { | 177 if (output_document.URL.indexOf("/html/dom/reflection") >= 0) { |
171 for (var i = 0; i < tests.length; ++i) { | 178 for (var i = 0; i < tests.length; ++i) { |
172 if (tests[i].status == 0) { | 179 if (tests[i].status == 0) { |
173 var colon = tests[i].name.indexOf(':'); | 180 var colon = tests[i].name.indexOf(':'); |
174 if (colon > 0) { | 181 if (colon > 0) { |
175 var prefix = tests[i].name.substring(0, colon + 1); | 182 var prefix = tests[i].name.substring(0, colon + 1); |
176 var j = i + 1; | 183 var j = i + 1; |
177 for (; j < tests.length; ++j) { | 184 for (; j < tests.length; ++j) { |
178 if (!tests[j].name.startsWith(prefix) || tests[j].st
atus != 0) | 185 if (!tests[j].name.startsWith(prefix) || tests[j].st
atus != 0) |
179 break; | 186 break; |
180 } | 187 } |
(...skipping 27 matching lines...) Expand all Loading... |
208 function done() { | 215 function done() { |
209 if (self.testRunner) { | 216 if (self.testRunner) { |
210 // The following DOM operations may show console messages. We | 217 // The following DOM operations may show console messages. We |
211 // suppress them because they are not related to the running | 218 // suppress them because they are not related to the running |
212 // test. | 219 // test. |
213 testRunner.setDumpConsoleMessages(false); | 220 testRunner.setDumpConsoleMessages(false); |
214 | 221 |
215 if (isCSSWGTest() || isJSTest()) { | 222 if (isCSSWGTest() || isJSTest()) { |
216 // Anything isn't material to the testrunner output, so | 223 // Anything isn't material to the testrunner output, so |
217 // should be hidden from the text dump. | 224 // should be hidden from the text dump. |
218 if (document.body && document.body.tagName == 'BODY') | 225 if (output_document.body && output_document.body.tagName ==
'BODY') |
219 document.body.textContent = ''; | 226 output_document.body.textContent = ''; |
220 } | 227 } |
221 } | 228 } |
222 | 229 |
223 // Add results element to document. | 230 // Add results element to output_document. |
224 if (!document.body || document.body.tagName != 'BODY') { | 231 if (!output_document.body || output_document.body.tagName != 'BODY')
{ |
225 if (!document.documentElement) | 232 if (!output_document.documentElement) |
226 document.appendChild(document.createElement('html')); | 233 output_document.appendChild(output_document.createElement('h
tml')); |
227 else if (document.body) // document.body is <frameset>. | 234 else if (output_document.body) // output_document.body is <frame
set>. |
228 document.body.remove(); | 235 output_document.body.remove(); |
229 document.documentElement.appendChild(document.createElement("bod
y")); | 236 output_document.documentElement.appendChild(output_document.crea
teElement("body")); |
230 } | 237 } |
231 document.body.appendChild(results); | 238 output_document.body.appendChild(results); |
232 | 239 |
233 if (self.testRunner) | 240 if (self.testRunner) |
234 testRunner.notifyDone(); | 241 testRunner.notifyDone(); |
235 } | 242 } |
236 | 243 |
237 if (didDispatchLoadEvent || document.readyState != 'loading') { | 244 if (didDispatchLoadEvent || output_document.readyState != 'loading') { |
238 // This function might not be the last 'completion callback', and | 245 // This function might not be the last 'completion callback', and |
239 // another completion callback might generate more results. So, we | 246 // another completion callback might generate more results. So, we |
240 // don't dump the results immediately. | 247 // don't dump the results immediately. |
241 setTimeout(done, 0); | 248 setTimeout(done, 0); |
242 } else { | 249 } else { |
243 // Parsing the test HTML isn't finished yet. | 250 // Parsing the test HTML isn't finished yet. |
244 window.addEventListener('load', done); | 251 window.addEventListener('load', done); |
245 } | 252 } |
246 }); | 253 }); |
247 | 254 |
248 })(); | 255 })(); |
OLD | NEW |