| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2011 Google Inc. All rights reserved. | 2 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * 1. Redistributions of source code must retain the above copyright | 7 * 1. Redistributions of source code must retain the above copyright |
| 8 * notice, this list of conditions and the following disclaimer. | 8 * notice, this list of conditions and the following disclaimer. |
| 9 * 2. Redistributions in binary form must reproduce the above copyright | 9 * 2. Redistributions in binary form must reproduce the above copyright |
| 10 * notice, this list of conditions and the following disclaimer in the | 10 * notice, this list of conditions and the following disclaimer in the |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 * THE POSSIBILITY OF SUCH DAMAGE. | 23 * THE POSSIBILITY OF SUCH DAMAGE. |
| 24 */ | 24 */ |
| 25 | 25 |
| 26 var ui = ui || {}; | 26 var ui = ui || {}; |
| 27 ui.results = ui.results || {}; | 27 ui.results = ui.results || {}; |
| 28 | 28 |
| 29 (function(){ | 29 (function(){ |
| 30 | 30 |
| 31 var kResultsPrefetchDelayMS = 500; | 31 var kResultsPrefetchDelayMS = 500; |
| 32 | 32 |
| 33 ui.results.Comparison = base.extends('div', { | |
| 34 init: function() | |
| 35 { | |
| 36 this.className = 'comparison'; | |
| 37 this.innerHTML = '<div><h2>Expected</h2><div class="results-container ex
pected"></div></div>' + | |
| 38 '<div><h2>Actual</h2><div class="results-container actu
al"></div></div>' + | |
| 39 '<div><h2>Diff</h2><div class="results-container diff">
</div></div>'; | |
| 40 }, | |
| 41 _selectorForKind: function(kind) | |
| 42 { | |
| 43 switch (kind) { | |
| 44 case results.kExpectedKind: | |
| 45 return '.expected'; | |
| 46 case results.kActualKind: | |
| 47 return '.actual'; | |
| 48 case results.kDiffKind: | |
| 49 return '.diff'; | |
| 50 } | |
| 51 return '.unknown'; | |
| 52 }, | |
| 53 update: function(kind, result) | |
| 54 { | |
| 55 var selector = this._selectorForKind(kind); | |
| 56 $(selector, this).empty().append(result); | |
| 57 return result; | |
| 58 }, | |
| 59 }); | |
| 60 | |
| 61 // We'd really like TextResult and ImageResult to extend a common Result base | |
| 62 // class, but we can't seem to do that because they inherit from different | |
| 63 // HTMLElements. We could have them inherit from <div>, but that seems lame. | |
| 64 | |
| 65 ui.results.TextResult = base.extends('iframe', { | |
| 66 init: function(url) | |
| 67 { | |
| 68 this.className = 'text-result'; | |
| 69 this.src = url; | |
| 70 } | |
| 71 }); | |
| 72 | |
| 73 ui.results.ImageResult = base.extends('img', { | |
| 74 init: function(url) | |
| 75 { | |
| 76 this.className = 'image-result'; | |
| 77 this.src = url; | |
| 78 } | |
| 79 }); | |
| 80 | |
| 81 ui.results.AudioResult = base.extends('audio', { | |
| 82 init: function(url) | |
| 83 { | |
| 84 this.className = 'audio-result'; | |
| 85 this.src = url; | |
| 86 this.controls = 'controls'; | |
| 87 } | |
| 88 }); | |
| 89 | |
| 90 function constructorForResultType(type) | |
| 91 { | |
| 92 if (type == results.kImageType) | |
| 93 return ui.results.ImageResult; | |
| 94 if (type == results.kAudioType) | |
| 95 return ui.results.AudioResult; | |
| 96 return ui.results.TextResult; | |
| 97 } | |
| 98 | |
| 99 ui.results.ResultsGrid = base.extends('div', { | 33 ui.results.ResultsGrid = base.extends('div', { |
| 100 init: function() | 34 init: function() |
| 101 { | 35 { |
| 102 this.className = 'results-grid'; | 36 this.className = 'results-grid'; |
| 103 }, | 37 }, |
| 104 _addResult: function(comparison, constructor, resultsURLsByKind, kind) | |
| 105 { | |
| 106 var url = resultsURLsByKind[kind]; | |
| 107 if (!url) | |
| 108 return; | |
| 109 comparison.update(kind, new constructor(url)); | |
| 110 }, | |
| 111 addComparison: function(resultType, resultsURLsByKind) | |
| 112 { | |
| 113 var comparison = new ui.results.Comparison(); | |
| 114 var constructor = constructorForResultType(resultType); | |
| 115 | |
| 116 this._addResult(comparison, constructor, resultsURLsByKind, results.kExp
ectedKind); | |
| 117 this._addResult(comparison, constructor, resultsURLsByKind, results.kAct
ualKind); | |
| 118 this._addResult(comparison, constructor, resultsURLsByKind, results.kDif
fKind); | |
| 119 | |
| 120 this.appendChild(comparison); | |
| 121 return comparison; | |
| 122 }, | |
| 123 addRow: function(resultType, url) | |
| 124 { | |
| 125 var constructor = constructorForResultType(resultType); | |
| 126 var view = new constructor(url); | |
| 127 this.appendChild(view); | |
| 128 return view; | |
| 129 }, | |
| 130 addResults: function(resultsURLs) | 38 addResults: function(resultsURLs) |
| 131 { | 39 { |
| 132 var resultsURLsByTypeAndKind = {}; | 40 var resultsURLsByTypeAndKind = {}; |
| 133 | |
| 134 resultsURLsByTypeAndKind[results.kImageType] = {}; | |
| 135 resultsURLsByTypeAndKind[results.kAudioType] = {}; | |
| 136 resultsURLsByTypeAndKind[results.kTextType] = {}; | |
| 137 | |
| 138 resultsURLs.forEach(function(url) { | 41 resultsURLs.forEach(function(url) { |
| 139 resultsURLsByTypeAndKind[results.resultType(url)][results.resultKind
(url)] = url; | 42 var resultType = results.resultType(url); |
| 43 if (!resultsURLsByTypeAndKind[resultType]) |
| 44 resultsURLsByTypeAndKind[resultType] = {}; |
| 45 resultsURLsByTypeAndKind[resultType][results.resultKind(url)] = url; |
| 140 }); | 46 }); |
| 141 | 47 |
| 142 $.each(resultsURLsByTypeAndKind, function(resultType, resultsURLsByKind)
{ | 48 $.each(resultsURLsByTypeAndKind, function(resultType, resultsURLsByKind)
{ |
| 143 if ($.isEmptyObject(resultsURLsByKind)) | |
| 144 return; | |
| 145 if (results.kUnknownKind in resultsURLsByKind) { | 49 if (results.kUnknownKind in resultsURLsByKind) { |
| 146 // This is something like "crash" that isn't a comparison. | 50 // This is something like "crash" that isn't a comparison. |
| 147 this.addRow(resultType, resultsURLsByKind[results.kUnknownKind])
; | 51 var result = document.createElement('iframe'); |
| 52 result.src = resultsURLsByKind[results.kUnknownKind]; |
| 53 // FIXME: Move this to a stylesheet when we polymerize this comp
onent. |
| 54 result.style.border = 0; |
| 55 result.style.width = '100%'; |
| 56 result.style.height = '400px'; |
| 57 this.appendChild(result); |
| 148 return; | 58 return; |
| 149 } | 59 } |
| 150 this.addComparison(resultType, resultsURLsByKind); | 60 |
| 61 var comparison = document.createElement('results-comparison'); |
| 62 comparison.type = resultType; |
| 63 comparison.urlsByKind = resultsURLsByKind; |
| 64 this.appendChild(comparison); |
| 151 }.bind(this)); | 65 }.bind(this)); |
| 66 |
| 152 if (!this.children.length) | 67 if (!this.children.length) |
| 153 this.textContent = 'No results to display.' | 68 this.textContent = 'No results to display.' |
| 154 } | 69 } |
| 155 }); | 70 }); |
| 156 | 71 |
| 157 ui.results.ResultsDetails = base.extends('div', { | 72 ui.results.ResultsDetails = base.extends('div', { |
| 158 init: function(delegate, failureInfo) | 73 init: function(delegate, failureInfo) |
| 159 { | 74 { |
| 160 this.className = 'results-detail'; | 75 this.className = 'results-detail'; |
| 161 this._delegate = delegate; | 76 this._delegate = delegate; |
| 162 this._failureInfo = failureInfo; | 77 this._failureInfo = failureInfo; |
| 163 this._haveShownOnce = false; | 78 this._haveShownOnce = false; |
| 164 }, | 79 }, |
| 165 show: function() { | 80 show: function() { |
| 166 if (this._haveShownOnce) | 81 if (this._haveShownOnce) |
| 167 return; | 82 return; |
| 168 this._haveShownOnce = true; | 83 this._haveShownOnce = true; |
| 169 this._delegate.fetchResultsURLs(this._failureInfo).then(function(results
URLs) { | 84 this._delegate.fetchResultsURLs(this._failureInfo).then(function(results
URLs) { |
| 170 var resultsGrid = new ui.results.ResultsGrid(); | 85 var resultsGrid = new ui.results.ResultsGrid(); |
| 171 resultsGrid.addResults(resultsURLs); | 86 resultsGrid.addResults(resultsURLs); |
| 172 | 87 |
| 173 $(this).empty().append( | 88 $(this).empty().append( |
| 174 new ui.actions.List([ | 89 new ui.actions.List([ |
| 175 new ui.actions.Previous(), | 90 new ui.actions.Previous(), |
| 176 new ui.actions.Next() | 91 new ui.actions.Next() |
| 177 ])).append(resultsGrid); | 92 ])).append(resultsGrid); |
| 178 | |
| 179 | |
| 180 }.bind(this)); | 93 }.bind(this)); |
| 181 }, | 94 }, |
| 182 }); | 95 }); |
| 183 | 96 |
| 184 function isAnyReftest(testName, resultsByTest) | 97 function isAnyReftest(testName, resultsByTest) |
| 185 { | 98 { |
| 186 return Object.keys(resultsByTest[testName]).map(function(builder) { | 99 return Object.keys(resultsByTest[testName]).map(function(builder) { |
| 187 return resultsByTest[testName][builder]; | 100 return resultsByTest[testName][builder]; |
| 188 }).some(function(resultNode) { | 101 }).some(function(resultNode) { |
| 189 return resultNode.reftest_type && resultNode.reftest_type.length; | 102 return resultNode.reftest_type && resultNode.reftest_type.length; |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 456 { | 369 { |
| 457 this._testSelector.firstResult() | 370 this._testSelector.firstResult() |
| 458 }, | 371 }, |
| 459 currentTestName: function() | 372 currentTestName: function() |
| 460 { | 373 { |
| 461 return this._testSelector.currentTestName() | 374 return this._testSelector.currentTestName() |
| 462 } | 375 } |
| 463 }); | 376 }); |
| 464 | 377 |
| 465 })(); | 378 })(); |
| OLD | NEW |