Index: third_party/WebKit/LayoutTests/resources/js-test.js |
diff --git a/third_party/WebKit/LayoutTests/resources/js-test.js b/third_party/WebKit/LayoutTests/resources/js-test.js |
index c0988cea14a0d4c2c8eff34ebcf4cac0e81376a6..d94f49b5a8af1e54bbd6284b97eadf2e163d6c50 100644 |
--- a/third_party/WebKit/LayoutTests/resources/js-test.js |
+++ b/third_party/WebKit/LayoutTests/resources/js-test.js |
@@ -2,6 +2,7 @@ |
// results once at the end of the test instead of building them up. To enable |
// this option, call setPrintTestResultsLazily() before running any tests. |
var _lazyTestResults; // Set by setPrintTestResultsLazily(). |
+var _lazyDescription; // Set by description() after setPrintTestResultsLazily(). |
// svg/dynamic-updates tests set enablePixelTesting=true, as we want to dump text + pixel results |
if (self.testRunner) { |
@@ -13,7 +14,7 @@ if (self.testRunner) { |
var isJsTest = true; |
-var description, debug, successfullyParsed; |
+var description, debug, successfullyParsed, getOrCreateTestElement; |
var expectingError; // set by shouldHaveError() |
var expectedErrorMessage; // set by onerror when expectingError is true |
@@ -21,7 +22,7 @@ var unexpectedErrorMessage; // set by onerror when expectingError is not true |
(function() { |
- function getOrCreate(id, tagName) |
+ getOrCreateTestElement = function(id, tagName) |
{ |
var element = document.getElementById(id); |
if (element) |
@@ -32,7 +33,7 @@ var unexpectedErrorMessage; // set by onerror when expectingError is not true |
var refNode; |
var parent = document.body || document.documentElement; |
if (id == "description") |
- refNode = getOrCreate("console", "div"); |
+ refNode = getOrCreateTestElement("console", "div"); |
else |
refNode = parent.firstChild; |
@@ -49,7 +50,12 @@ var unexpectedErrorMessage; // set by onerror when expectingError is not true |
else |
span.innerHTML = '<p>' + msg + '</p><p>On success, you will see a series of "<span class="pass">PASS</span>" messages, followed by "<span class="pass">TEST COMPLETE</span>".</p>'; |
- var description = getOrCreate("description", "p"); |
+ if (_lazyTestResults) { |
+ _lazyDescription = span; |
+ return; |
+ } |
+ |
+ var description = getOrCreateTestElement("description", "p"); |
if (description.firstChild) |
description.replaceChild(span, description.firstChild); |
else |
@@ -62,7 +68,8 @@ var unexpectedErrorMessage; // set by onerror when expectingError is not true |
self._lazyTestResults.push(msg); |
} else { |
var span = document.createElement("span"); |
- getOrCreate("console", "div").appendChild(span); // insert it first so XHTML knows the namespace |
+ // insert it first so XHTML knows the namespace; |
+ getOrCreateTestElement("console", "div").appendChild(span); |
span.innerHTML = msg + '<br />'; |
} |
}; |
@@ -811,18 +818,15 @@ function finishJSTest() |
return; |
isSuccessfullyParsed(); |
+ if (self._lazyDescription) |
+ getOrCreateTestElement("description", "p").appendChild(self._lazyDescription); |
+ |
if (self._lazyTestResults && self._lazyTestResults.length > 0) { |
- var consoleElement = document.getElementById("console"); |
- if (!consoleElement) { |
- consoleElement = document.createElement("div"); |
- consoleElement.id = "console"; |
- var parent = document.body || document.documentElement; |
- parent.insertBefore(consoleElement, parent.firstChild); |
- } |
+ var consoleElement = getOrCreateTestElement("console", "div"); |
self._lazyTestResults.forEach(function(msg) { |
var span = document.createElement("span"); |
- span.innerHTML = msg + '<br />'; |
consoleElement.appendChild(span); |
+ span.innerHTML = msg + '<br />'; |
}); |
} |