Index: chrome/test/data/dromaeo/patches/webrunner.patch |
diff --git a/chrome/test/data/dromaeo/patches/webrunner.patch b/chrome/test/data/dromaeo/patches/webrunner.patch |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a273425dca4ab8bef7e67611851d59ef280d33e2 |
--- /dev/null |
+++ b/chrome/test/data/dromaeo/patches/webrunner.patch |
@@ -0,0 +1,156 @@ |
+diff --git a/chrome/test/data/dromaeo/webrunner.js b/chrome/test/data/dromaeo/webrunner.js |
+index 63d777b..598998b 100644 |
+--- a/chrome/test/data/dromaeo/webrunner.js |
++++ b/chrome/test/data/dromaeo/webrunner.js |
+@@ -230,6 +230,8 @@ |
+ var time = 0; |
+ var title, testName, testID, testSummary = {} , testSummaryNum = {}, maxTotal = 0, maxTotalNum = 0; |
+ var nameDone = {}; |
++ var automated = false; |
++ var post_json = false; |
+ |
+ // Query String Parsing |
+ var search = window.limitSearch || (window.location.search || "?").substr(1); |
+@@ -269,6 +271,11 @@ |
+ m = /^numTests=(\d+)$/.exec(parts[i]); |
+ if (m) |
+ numTests = Number(m[1]); |
++ |
++ if (/^automated$/.exec(parts[i])) |
++ automated = true; |
++ if (/^post_json$/.exec(parts[i])) |
++ post_json = true; |
+ } |
+ |
+ jQuery(function(){ |
+@@ -377,17 +384,28 @@ |
+ } |
+ |
+ } else if ( dataStore && dataStore.length ) { |
+- $("body").addClass("alldone"); |
+- var div = jQuery("<div class='results'>Saving...</div>").insertBefore("#overview"); |
+- jQuery.ajax({ |
+- type: "POST", |
+- url: "store.php", |
+- data: "data=" + encodeURIComponent(JSON.stringify(dataStore)) + "&style=" + runStyle, |
+- success: function(id){ |
+- var url = window.location.href.replace(/\?.*$/, "") + "?id=" + id; |
+- div.html("Results saved. You can access them at a later time at the following URL:<br/><strong><a href='" + url + "'>" + url + "</a></strong></div>"); |
+- } |
+- }); |
++ if (!automated) { |
++ $("body").addClass("alldone"); |
++ var div = jQuery("<div class='results'>Saving...</div>").insertBefore("#overview"); |
++ jQuery.ajax({ |
++ type: "POST", |
++ url: "store.php", |
++ data: "data=" + encodeURIComponent(JSON.stringify(dataStore)) + "&style=" + runStyle, |
++ success: function(id){ |
++ var url = window.location.href.replace(/\?.*$/, "") + "?id=" + id; |
++ div.html("Results saved. You can access them at a later time at the following URL:<br/><strong><a href='" + url + "'>" + url + "</a></strong></div>"); |
++ } |
++ }); |
++ } else if (post_json) { |
++ jQuery.ajax({ |
++ type: "POST", |
++ url: "store.php", |
++ data: "data=" + encodeURIComponent(JSON.stringify(window.automation.GetResults())) |
++ }); |
++ } |
++ else { |
++ window.automation.SetDone(); |
++ } |
+ } |
+ } |
+ } |
+@@ -406,20 +424,28 @@ |
+ time += timePerTest; |
+ updateTime(); |
+ |
+- $("#pause") |
+- .val("Run") |
+- .click(function(){ |
+- if ( interval ) { |
+- interval = null; |
+- this.value = "Run"; |
+- } else { |
+- if ( !interval ) { |
+- interval = true; |
+- dequeue(); |
++ if (!automated) { |
++ $("#pause") |
++ .val("Run") |
++ .click(function(){ |
++ if ( interval ) { |
++ interval = null; |
++ this.value = "Run"; |
++ } else { |
++ if ( !interval ) { |
++ interval = true; |
++ dequeue(); |
++ } |
++ this.value = "Pause"; |
+ } |
+- this.value = "Pause"; |
+- } |
+- }); |
++ }); |
++ } else { |
++ $("#pause") |
++ .val("Automated") |
++ .click(function(){}); |
++ interval = true; |
++ dequeue(); |
++ } |
+ |
+ if ( window.limitSearch ) { |
+ $("#pause").click(); |
+@@ -778,4 +804,45 @@ |
+ |
+ updateTestPos({curID: testID, collection: tests[testID] ? tests[testID].name : testID, version: testVersions[testID]}, true); |
+ } |
++ |
++ if (automated) { |
++ // Add some more stuff if running in automated mode. |
++ window.automation = {} |
++ window.automation.SetDone = function() { |
++ console.log("Total: " + this.GetScore()); |
++ window.document.cookie = "__done=1; path=/"; |
++ } |
++ window.automation.GetScore = function() { |
++ return (runStyle === "runs/s" ? Math.pow(Math.E, maxTotal / maxTotalNum) : maxTotal).toString(); |
++ } |
++ window.automation.GetResults = function() { |
++ var results = {}; |
++ var aggregated = {}; |
++ function normalizeName(name) { |
++ // At least for ui_tests, dots are not allowed. |
++ return name.replace(".", "_"); |
++ } |
++ function appendToAggregated(name, value) { |
++ name = normalizeName(name); |
++ (aggregated[name] || (aggregated[name] = [])).push(Math.log(value)); |
++ } |
++ |
++ for (var i = 0; i < dataStore.length; i++) { |
++ var data = dataStore[i]; |
++ var topName = data.collection.split("-", 1)[0]; |
++ appendToAggregated(topName, data.mean); |
++ appendToAggregated(data.collection, data.mean); |
++ results[normalizeName(data.collection + "/" + data.name)] = data.mean.toString(); |
++ } |
++ |
++ for (var name in aggregated) { |
++ var means = aggregated[name]; |
++ var sum = 0; |
++ for (var i = 0; i < means.length; i++) sum += means[i]; |
++ results[name] = Math.pow(Math.E, sum/means.length).toString(); |
++ } |
++ |
++ return results; |
++ } |
++ } |
+ })(); |
+-- |
+2.8.0.rc3.226.g39d4020 |
+ |