1635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/* 26b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner * Copyright (c) 2010 Google Inc. All rights reserved. 38f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 4635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Redistribution and use in source and binary forms, with or without 5635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * modification, are permitted provided that the following conditions are 6635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * met: 78f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 8635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions of source code must retain the above copyright 9635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * notice, this list of conditions and the following disclaimer. 10635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Redistributions in binary form must reproduce the above 11635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * copyright notice, this list of conditions and the following disclaimer 12635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * in the documentation and/or other materials provided with the 13635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * distribution. 14635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * * Neither the name of Google Inc. nor the names of its 15635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * contributors may be used to endorse or promote products derived from 16635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * this software without specific prior written permission. 178f72e70a9fd78eec56623b3a62e68f16b7b27e28Feng Qian * 18635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 316b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar results; 326b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar testsByFailureType = {}; 336b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar testsByDirectory = {}; 346b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennervar selectedTests = []; 35635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 366b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerfunction $(id) 376b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner{ 386b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return document.getElementById(id); 396b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner} 40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 416b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerfunction getSelectValue(id) 426b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner{ 436b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner var select = $(id); 446b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner if (select.selectedIndex == -1) { 456b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return null; 466b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner } else { 476b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner return select.options[select.selectedIndex].value; 486b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner } 496b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner} 50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 516b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brennerfunction loadText(url, callback) 526b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner{ 536b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner var xhr = new XMLHttpRequest(); 546b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner xhr.open('GET', url); 556b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner xhr.addEventListener('load', function() { callback(xhr.responseText); }); 566b70adc33054f8aee8c54d0f460458a9df11b8a5Russell Brenner xhr.send(); 57ca9cb53ed1119a3fd98fafa0972ffeb56dee1c24Steve Block} 584576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 594576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangfunction log(text, type) 604576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 614576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang var node = $('log'); 624576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 634576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (type) { 644576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang var typeNode = document.createElement('span'); 654576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang typeNode.textContent = type.text; 664576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang typeNode.style.color = type.color; 674576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang node.appendChild(typeNode); 684576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 694576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 704576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang node.appendChild(document.createTextNode(text + '\n')); 714576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang node.scrollTop = node.scrollHeight; 724576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 734576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 744576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanglog.WARNING = {text: 'Warning: ', color: '#aa3'}; 754576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanglog.SUCCESS = {text: 'Success: ', color: 'green'}; 764576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wanglog.ERROR = {text: 'Error: ', color: 'red'}; 774576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 784576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangfunction toggle(id) 794576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 804576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang var element = $(id); 814576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang var toggler = $('toggle-' + id); 824576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (element.style.display == 'none') { 834576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang element.style.display = ''; 844576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang toggler.className = 'link selected'; 854576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } else { 864576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang element.style.display = 'none'; 874576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang toggler.className = 'link'; 884576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang } 894576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang} 904576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 914576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wangfunction getTracUrl(layoutTestPath) 924576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang{ 934576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return 'http://trac.webkit.org/browser/trunk/LayoutTests/' + layoutTestPath; 94f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch} 95f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch 96f05b935882198ccf7d81675736e3aeb089c5113aBen Murdochfunction getSortedKeys(obj) 97f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch{ 98f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch var keys = []; 99f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch for (var key in obj) { 100f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch keys.push(key); 101f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch } 102f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch keys.sort(); 103f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch return keys; 1044576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang}