diff --git a/MotionMark/developer.html b/MotionMark/developer.html index b2de742..0239a83 100644 --- a/MotionMark/developer.html +++ b/MotionMark/developer.html @@ -158,6 +158,7 @@

MotionMark score

'j': Show JSON results
+ 'd': Download JSON results
's': Select various results for copy/paste (use repeatedly to cycle)

diff --git a/MotionMark/resources/runner/motionmark.js b/MotionMark/resources/runner/motionmark.js index 193e212..f0ca68d 100644 --- a/MotionMark/resources/runner/motionmark.js +++ b/MotionMark/resources/runner/motionmark.js @@ -331,6 +331,9 @@ class BenchmarkController { case 106: // j benchmarkController.showDebugInfo(); break; + case 100: // d + benchmarkController.downloadDebugInfo(); + break; case 115: // s benchmarkController.selectResults(event.target); break; @@ -380,11 +383,39 @@ class BenchmarkController { selection.addRange(range); }; - var button = Utilities.createElement("button", {}, container); - button.textContent = "Done"; - button.onclick = () => { + var doneButton = Utilities.createElement("button", {}, container); + doneButton.textContent = "Done"; + doneButton.onclick = () => { this.hideDebugInfo(); }; + + var downloadButton = Utilities.createElement("button", {}, container); + downloadButton.textContent = "Download"; + downloadButton.onclick = () => { + this.downloadDebugInfo(); + }; + } + + downloadDebugInfo() + { + var output = { + version: this.runnerClient.scoreCalculator.version, + options: this.runnerClient.scoreCalculator.options, + data: this.runnerClient.scoreCalculator.data + }; + var json = JSON.stringify(output, (key, value) => { + if (typeof value === 'number') + return Utilities.toFixedNumber(value, 3); + return value; + }, 1); + var blob = new Blob([json], { type: "application/json" }); + var url = URL.createObjectURL(blob); + + var a = document.createElement('a'); + a.href = url; + a.download = 'motionmark-results.json'; + a.click(); + URL.revokeObjectURL(url); } selectResults(target)