15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2012 Google Inc. All rights reserved. 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modification, are permitted provided that the following conditions are 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * met: 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions of source code must retain the above copyright 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * notice, this list of conditions and the following disclaimer. 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Redistributions in binary form must reproduce the above 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * copyright notice, this list of conditions and the following disclaimer 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * in the documentation and/or other materials provided with the 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * distribution. 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * * Neither the name of Google Inc. nor the names of its 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * contributors may be used to endorse or promote products derived from 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * this software without specific prior written permission. 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 3309380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @extends {WebInspector.PanelWithSidebarTree} 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditsPanel = function() 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) WebInspector.PanelWithSidebarTree.call(this, "audits"); 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.registerRequiredCSS("panelEnablerView.css"); 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.registerRequiredCSS("auditsPanel.css"); 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditsTreeElement = new WebInspector.SidebarSectionTreeElement("", {}, true); 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.sidebarTree.appendChild(this.auditsTreeElement); 43a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) this.auditsTreeElement.listItemElement.classList.add("hidden"); 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditsItemTreeElement = new WebInspector.AuditsSidebarTreeElement(this); 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditsTreeElement.appendChild(this.auditsItemTreeElement); 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditResultsTreeElement = new WebInspector.SidebarSectionTreeElement(WebInspector.UIString("RESULTS"), {}, true); 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.sidebarTree.appendChild(this.auditResultsTreeElement); 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditResultsTreeElement.expand(); 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._constructCategories(); 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 549e12abdf8c3a23d52091ea54ebb6a04d327f9300Torne (Richard Coles) this._auditController = new WebInspector.AuditController(this); 55926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) this._launcherView = new WebInspector.AuditLauncherView(this._auditController); 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var id in this.categoriesById) 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._launcherView.addCategory(this.categoriesById[id]); 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditsPanel.prototype = { 615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 62f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) * @return {boolean} 63f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) */ 64f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) canSearch: function() 65f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) { 66f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) return false; 67f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) }, 68f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) 69f79f16f17ddc4f842d7b7a38603e280e94be826aTorne (Richard Coles) /** 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {!Object.<string, !WebInspector.AuditCategory>} 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get categoriesById() 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._auditCategoriesById; 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!WebInspector.AuditCategory} category 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addCategory: function(category) 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.categoriesById[category.id] = category; 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._launcherView.addCategory(category); 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} id 88a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @return {!WebInspector.AuditCategory} 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) getCategory: function(id) 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.categoriesById[id]; 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _constructCategories: function() 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._auditCategoriesById = {}; 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var categoryCtorID in WebInspector.AuditCategories) { 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var auditCategory = new WebInspector.AuditCategories[categoryCtorID](); 1005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) auditCategory._id = categoryCtorID; 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.categoriesById[categoryCtorID] = auditCategory; 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} mainResourceURL 1075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!Array.<!WebInspector.AuditCategoryResult>} results 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 109926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) auditFinishedCallback: function(mainResourceURL, results) 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var children = this.auditResultsTreeElement.children; 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var ordinal = 1; 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < children.length; ++i) { 1145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (children[i].mainResourceURL === mainResourceURL) 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ordinal++; 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var resultTreeElement = new WebInspector.AuditResultSidebarTreeElement(this, results, mainResourceURL, ordinal); 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditResultsTreeElement.appendChild(resultTreeElement); 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resultTreeElement.revealAndSelect(); 1215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!Array.<!WebInspector.AuditCategoryResult>} categoryResults 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) showResults: function(categoryResults) 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!categoryResults._resultView) 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) categoryResults._resultView = new WebInspector.AuditResultView(categoryResults); 1305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.visibleView = categoryResults._resultView; 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) showLauncherView: function() 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.visibleView = this._launcherView; 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get visibleView() 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._visibleView; 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set visibleView(x) 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._visibleView === x) 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (this._visibleView) 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._visibleView.detach(); 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._visibleView = x; 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (x) 15509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) x.show(this.mainElement()); 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) wasShown: function() 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.Panel.prototype.wasShown.call(this); 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._visibleView) 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditsItemTreeElement.select(); 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 165bfe3590b1806e3ff18f46ee3af5d4b83078f305aTorne (Richard Coles) clearResults: function() 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditsItemTreeElement.revealAndSelect(); 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.auditResultsTreeElement.removeChildren(); 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 17109380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) __proto__: WebInspector.PanelWithSidebarTree.prototype 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 17609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @implements {WebInspector.AuditCategory} 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} displayName 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 17909380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.AuditCategoryImpl = function(displayName) 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._displayName = displayName; 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._rules = []; 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 18509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles)WebInspector.AuditCategoryImpl.prototype = { 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 18709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @override 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get id() 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // this._id value is injected at construction time. 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._id; 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 19709380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @override 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {string} 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get displayName() 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._displayName; 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!WebInspector.AuditRule} rule 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!WebInspector.AuditRule.Severity} severity 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addRule: function(rule, severity) 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) rule.severity = severity; 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._rules.push(rule); 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 21609380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @override 217aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!Array.<!WebInspector.NetworkRequest>} requests 219a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.AuditRuleResult)} ruleResultCallback 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {function()} categoryDoneCallback 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!WebInspector.Progress} progress 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 223aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch run: function(target, requests, ruleResultCallback, categoryDoneCallback, progress) 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._ensureInitialized(); 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var remainingRulesCount = this._rules.length; 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) progress.setTotalWork(remainingRulesCount); 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function callbackWrapper(result) 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ruleResultCallback(result); 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) progress.worked(); 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!--remainingRulesCount) 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) categoryDoneCallback(); 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < this._rules.length; ++i) 236aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this._rules[i].run(target, requests, callbackWrapper, progress); 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) _ensureInitialized: function() 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this._initialized) { 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if ("initialize" in this) 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.initialize(); 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._initialized = true; 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} id 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} displayName 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRule = function(id, displayName) 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._id = id; 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._displayName = displayName; 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @enum {string} 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRule.Severity = { 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Info: "info", 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Warning: "warning", 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Severe: "severe" 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRule.SeverityOrder = { 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "info": 3, 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "warning": 2, 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) "severe": 1 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRule.prototype = { 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get id() 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._id; 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get displayName() 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this._displayName; 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 287a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.AuditRule.Severity} severity 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) set severity(severity) 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._severity = severity; 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 295aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!Array.<!WebInspector.NetworkRequest>} requests 297a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.AuditRuleResult)} callback 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!WebInspector.Progress} progress 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 300aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch run: function(target, requests, callback, progress) 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (progress.isCanceled()) 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return; 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var result = new WebInspector.AuditRuleResult(this.displayName); 3065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) result.severity = this._severity; 307aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch this.doRun(target, requests, result, callback, progress); 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 311aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch * @param {!WebInspector.Target} target 312a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!Array.<!WebInspector.NetworkRequest>} requests 313a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.AuditRuleResult} result 314a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {function(!WebInspector.AuditRuleResult)} callback 315a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.Progress} progress 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 317aafa69cb17c9d6606c07663ade5f81388a2c5986Ben Murdoch doRun: function(target, requests, result, callback, progress) 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) throw new Error("doRun() not implemented"); 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!WebInspector.AuditCategory} category 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditCategoryResult = function(category) 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.title = category.displayName; 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.ruleResults = []; 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditCategoryResult.prototype = { 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 33509380295ba73501a205346becac22c6978e4671dTorne (Richard Coles) * @param {!WebInspector.AuditRuleResult} ruleResult 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addRuleResult: function(ruleResult) 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.ruleResults.push(ruleResult); 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 345a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {(string|boolean|number|!Object)} value 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} expanded 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} className 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRuleResult = function(value, expanded, className) 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.value = value; 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.className = className; 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.expanded = expanded; 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.violationCount = 0; 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formatters = { 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) r: WebInspector.AuditRuleResult.linkifyDisplayName 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var standardFormatters = Object.keys(String.standardFormatters); 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < standardFormatters.length; ++i) 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._formatters[standardFormatters[i]] = String.standardFormatters[standardFormatters[i]]; 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {!Element} 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRuleResult.linkifyDisplayName = function(url) 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return WebInspector.linkifyURLAsNode(url, WebInspector.displayNameForURL(url)); 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3725d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)/** 3735d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @param {string} domain 3745d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) * @return {string} 3755d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) */ 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRuleResult.resourceDomain = function(domain) 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return domain || WebInspector.UIString("[empty domain]"); 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRuleResult.prototype = { 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 383a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {(string|boolean|number|!Object)} value 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {boolean=} expanded 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string=} className 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {!WebInspector.AuditRuleResult} 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 3885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addChild: function(value, expanded, className) 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!this.children) 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.children = []; 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var entry = new WebInspector.AuditRuleResult(value, expanded, className); 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.children.push(entry); 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return entry; 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} url 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addURL: function(url) 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.addChild(WebInspector.AuditRuleResult.linkifyDisplayName(url)); 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!Array.<string>} urls 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addURLs: function(urls) 4095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) for (var i = 0; i < urls.length; ++i) 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.addURL(urls[i]); 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} snippet 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addSnippet: function(snippet) 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.addChild(snippet, false, "source-code"); 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) /** 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} format 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {...*} vararg 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @return {!WebInspector.AuditRuleResult} 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) addFormatted: function(format, vararg) 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var substitutions = Array.prototype.slice.call(arguments, 1); 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var fragment = document.createDocumentFragment(); 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) function append(a, b) 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(b instanceof Node)) 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) b = document.createTextNode(b); 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) a.appendChild(b); 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return a; 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) var formattedResult = String.format(format, substitutions, this._formatters, fragment, append).formattedResult; 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (formattedResult instanceof Node) 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) formattedResult.normalize(); 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return this.addChild(formattedResult); 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.SidebarTreeElement} 450a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @param {!WebInspector.AuditsPanel} panel 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditsSidebarTreeElement = function(panel) 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._panel = panel; 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.small = false; 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.SidebarTreeElement.call(this, "audits-sidebar-tree-item", WebInspector.UIString("Audits"), "", null, false); 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditsSidebarTreeElement.prototype = { 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onattach: function() 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.SidebarTreeElement.prototype.onattach.call(this); 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4657242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 4667242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {boolean} 4677242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 4685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onselect: function() 4695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._panel.showLauncherView(); 4717242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return true; 4725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get selectable() 4755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 4775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) refresh: function() 4805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.refreshTitles(); 4825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 4835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.SidebarTreeElement.prototype 4855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 4865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 4885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @constructor 4895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @extends {WebInspector.SidebarTreeElement} 4905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!WebInspector.AuditsPanel} panel 4915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {!Array.<!WebInspector.AuditCategoryResult>} results 4925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {string} mainResourceURL 4935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * @param {number} ordinal 4945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 4955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditResultSidebarTreeElement = function(panel, results, mainResourceURL, ordinal) 4965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){ 4975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._panel = panel; 4985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.results = results; 4995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this.mainResourceURL = mainResourceURL; 5005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WebInspector.SidebarTreeElement.call(this, "audit-result-sidebar-tree-item", String.sprintf("%s (%d)", mainResourceURL, ordinal), "", {}, false); 5015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditResultSidebarTreeElement.prototype = { 5047242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci /** 5057242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci * @return {boolean} 5067242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci */ 5075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) onselect: function() 5085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) this._panel.showResults(this.results); 5107242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci return true; 5115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) get selectable() 5145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 5155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return true; 5165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }, 5175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) __proto__: WebInspector.SidebarTreeElement.prototype 5195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} 5205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)// Contributed audit rules should go into this namespace. 5225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditRules = {}; 5235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 5245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/** 5255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Contributed audit categories should go into this namespace. 526a854de003a23bf3c7f95ec0f8154ada64092ff5cTorne (Richard Coles) * @type {!Object.<string, function(new:WebInspector.AuditCategory)>} 5275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */ 5285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)WebInspector.AuditCategories = {}; 529