1d0825bca7fe65beaee391d30da42e937db621564Steve Block/* 2ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch * Copyright (C) 2011 Google Inc. All rights reserved. 3d0825bca7fe65beaee391d30da42e937db621564Steve Block * 4d0825bca7fe65beaee391d30da42e937db621564Steve Block * Redistribution and use in source and binary forms, with or without 5d0825bca7fe65beaee391d30da42e937db621564Steve Block * modification, are permitted provided that the following conditions are 6d0825bca7fe65beaee391d30da42e937db621564Steve Block * met: 7d0825bca7fe65beaee391d30da42e937db621564Steve Block * 8d0825bca7fe65beaee391d30da42e937db621564Steve Block * * Redistributions of source code must retain the above copyright 9d0825bca7fe65beaee391d30da42e937db621564Steve Block * notice, this list of conditions and the following disclaimer. 10d0825bca7fe65beaee391d30da42e937db621564Steve Block * * Redistributions in binary form must reproduce the above 11d0825bca7fe65beaee391d30da42e937db621564Steve Block * copyright notice, this list of conditions and the following disclaimer 12d0825bca7fe65beaee391d30da42e937db621564Steve Block * in the documentation and/or other materials provided with the 13d0825bca7fe65beaee391d30da42e937db621564Steve Block * distribution. 14d0825bca7fe65beaee391d30da42e937db621564Steve Block * * Neither the name of Google Inc. nor the names of its 15d0825bca7fe65beaee391d30da42e937db621564Steve Block * contributors may be used to endorse or promote products derived from 16d0825bca7fe65beaee391d30da42e937db621564Steve Block * this software without specific prior written permission. 17d0825bca7fe65beaee391d30da42e937db621564Steve Block * 18d0825bca7fe65beaee391d30da42e937db621564Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19d0825bca7fe65beaee391d30da42e937db621564Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20d0825bca7fe65beaee391d30da42e937db621564Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 21d0825bca7fe65beaee391d30da42e937db621564Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22d0825bca7fe65beaee391d30da42e937db621564Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 23d0825bca7fe65beaee391d30da42e937db621564Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 24d0825bca7fe65beaee391d30da42e937db621564Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25d0825bca7fe65beaee391d30da42e937db621564Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 26d0825bca7fe65beaee391d30da42e937db621564Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 27d0825bca7fe65beaee391d30da42e937db621564Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 28d0825bca7fe65beaee391d30da42e937db621564Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29d0825bca7fe65beaee391d30da42e937db621564Steve Block */ 30d0825bca7fe65beaee391d30da42e937db621564Steve Block 315ddde30071f639962dd557c453f2ad01f8f0fd00Kristian MonsenWebInspector.AuditLauncherView = function(runnerCallback) 32d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 33d0825bca7fe65beaee391d30da42e937db621564Steve Block WebInspector.View.call(this); 34d0825bca7fe65beaee391d30da42e937db621564Steve Block this._runnerCallback = runnerCallback; 35d0825bca7fe65beaee391d30da42e937db621564Steve Block this._categoryIdPrefix = "audit-category-item-"; 36d0825bca7fe65beaee391d30da42e937db621564Steve Block this._auditRunning = false; 37d0825bca7fe65beaee391d30da42e937db621564Steve Block 38d0825bca7fe65beaee391d30da42e937db621564Steve Block this.element.addStyleClass("audit-launcher-view"); 39d0825bca7fe65beaee391d30da42e937db621564Steve Block 40d0825bca7fe65beaee391d30da42e937db621564Steve Block this._contentElement = document.createElement("div"); 41d0825bca7fe65beaee391d30da42e937db621564Steve Block this._contentElement.className = "audit-launcher-view-content"; 42d0825bca7fe65beaee391d30da42e937db621564Steve Block this.element.appendChild(this._contentElement); 435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._boundCategoryClickListener = this._categoryClicked.bind(this); 44d0825bca7fe65beaee391d30da42e937db621564Steve Block 45dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._resetResourceCount(); 46dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 475ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._sortedCategories = []; 48d0825bca7fe65beaee391d30da42e937db621564Steve Block 495ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._headerElement = document.createElement("h1"); 505ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._headerElement.className = "no-audits"; 515ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._headerElement.textContent = WebInspector.UIString("No audits to run"); 525ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._contentElement.appendChild(this._headerElement); 53ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch 54ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WebInspector.networkManager.addEventListener(WebInspector.NetworkManager.EventTypes.ResourceStarted, this._onResourceStarted, this); 55ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch WebInspector.networkManager.addEventListener(WebInspector.NetworkManager.EventTypes.ResourceFinished, this._onResourceFinished, this); 56d0825bca7fe65beaee391d30da42e937db621564Steve Block} 57d0825bca7fe65beaee391d30da42e937db621564Steve Block 58d0825bca7fe65beaee391d30da42e937db621564Steve BlockWebInspector.AuditLauncherView.prototype = { 59ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch _resetResourceCount: function() 60dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block { 61ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch this._loadedResources = 0; 62ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch this._totalResources = 0; 63dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block }, 64dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 65ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch _onResourceStarted: function(event) 66dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block { 67ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch var resource = event.data; 68ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch // Ignore long-living WebSockets for the sake of progress indicator, as we won't be waiting them anyway. 69ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch if (resource.type === WebInspector.Resource.Type.WebSocket) 70dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 71ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch ++this._totalResources; 72dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._updateResourceProgress(); 73dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block }, 74dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 75ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch _onResourceFinished: function(event) 76dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block { 77ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch var resource = event.data; 78ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch // See resorceStarted for details. 79ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch if (resource.type === WebInspector.Resource.Type.WebSocket) 80dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 81ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch ++this._loadedResources; 82dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._updateResourceProgress(); 83dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block }, 84dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 855ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen addCategory: function(category) 865ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen { 875ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen if (!this._sortedCategories.length) 885ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._createLauncherUI(); 895ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 905ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen var categoryElement = this._createCategoryElement(category.displayName, category.id); 915ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen category._checkboxElement = categoryElement.firstChild; 925ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen if (this._selectAllCheckboxElement.checked) { 935ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen category._checkboxElement.checked = true; 945ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen ++this._currentCategoriesCount; 955ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen } 965ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 975ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen function compareCategories(a, b) 985ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen { 995ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen var aTitle = a.displayName || ""; 1005ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen var bTitle = b.displayName || ""; 1015ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen return aTitle.localeCompare(bTitle); 1025ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen } 1035ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen var insertBefore = insertionIndexForObjectInListSortedByFunction(category, this._sortedCategories, compareCategories); 1045ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._categoriesElement.insertBefore(categoryElement, this._categoriesElement.children[insertBefore]); 1055ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._sortedCategories.splice(insertBefore, 0, category); 1065ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._updateButton(); 1075ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen }, 1085ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 109d0825bca7fe65beaee391d30da42e937db621564Steve Block _setAuditRunning: function(auditRunning) 110d0825bca7fe65beaee391d30da42e937db621564Steve Block { 111d0825bca7fe65beaee391d30da42e937db621564Steve Block if (this._auditRunning === auditRunning) 112d0825bca7fe65beaee391d30da42e937db621564Steve Block return; 113d0825bca7fe65beaee391d30da42e937db621564Steve Block this._auditRunning = auditRunning; 114d0825bca7fe65beaee391d30da42e937db621564Steve Block this._updateButton(); 115dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._updateResourceProgress(); 116d0825bca7fe65beaee391d30da42e937db621564Steve Block }, 117d0825bca7fe65beaee391d30da42e937db621564Steve Block 118d0825bca7fe65beaee391d30da42e937db621564Steve Block _launchButtonClicked: function(event) 119d0825bca7fe65beaee391d30da42e937db621564Steve Block { 120d0825bca7fe65beaee391d30da42e937db621564Steve Block var catIds = []; 121d0825bca7fe65beaee391d30da42e937db621564Steve Block var childNodes = this._categoriesElement.childNodes; 1225ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen for (var category = 0; category < this._sortedCategories.length; ++category) { 1235ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen if (this._sortedCategories[category]._checkboxElement.checked) 1245ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen catIds.push(this._sortedCategories[category].id); 125d0825bca7fe65beaee391d30da42e937db621564Steve Block } 1265ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 127d0825bca7fe65beaee391d30da42e937db621564Steve Block this._setAuditRunning(true); 128dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._runnerCallback(catIds, this._auditPresentStateElement.checked, this._setAuditRunning.bind(this, false)); 129d0825bca7fe65beaee391d30da42e937db621564Steve Block }, 130d0825bca7fe65beaee391d30da42e937db621564Steve Block 131d0825bca7fe65beaee391d30da42e937db621564Steve Block _selectAllClicked: function(checkCategories) 132d0825bca7fe65beaee391d30da42e937db621564Steve Block { 133d0825bca7fe65beaee391d30da42e937db621564Steve Block var childNodes = this._categoriesElement.childNodes; 134d0825bca7fe65beaee391d30da42e937db621564Steve Block for (var i = 0, length = childNodes.length; i < length; ++i) 135d0825bca7fe65beaee391d30da42e937db621564Steve Block childNodes[i].firstChild.checked = checkCategories; 1365ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._currentCategoriesCount = checkCategories ? this._sortedCategories.length : 0; 137d0825bca7fe65beaee391d30da42e937db621564Steve Block this._updateButton(); 138d0825bca7fe65beaee391d30da42e937db621564Steve Block }, 139d0825bca7fe65beaee391d30da42e937db621564Steve Block 140d0825bca7fe65beaee391d30da42e937db621564Steve Block _categoryClicked: function(event) 141d0825bca7fe65beaee391d30da42e937db621564Steve Block { 142d0825bca7fe65beaee391d30da42e937db621564Steve Block this._currentCategoriesCount += event.target.checked ? 1 : -1; 1435ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._selectAllCheckboxElement.checked = this._currentCategoriesCount === this._sortedCategories.length; 144d0825bca7fe65beaee391d30da42e937db621564Steve Block this._updateButton(); 145d0825bca7fe65beaee391d30da42e937db621564Steve Block }, 146d0825bca7fe65beaee391d30da42e937db621564Steve Block 147d0825bca7fe65beaee391d30da42e937db621564Steve Block _createCategoryElement: function(title, id) 148d0825bca7fe65beaee391d30da42e937db621564Steve Block { 149d0825bca7fe65beaee391d30da42e937db621564Steve Block var labelElement = document.createElement("label"); 150d0825bca7fe65beaee391d30da42e937db621564Steve Block labelElement.id = this._categoryIdPrefix + id; 151d0825bca7fe65beaee391d30da42e937db621564Steve Block 152dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block var element = document.createElement("input"); 153d0825bca7fe65beaee391d30da42e937db621564Steve Block element.type = "checkbox"; 154bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen if (id !== "") 155bec39347bb3bb5bf1187ccaf471d26247f28b585Kristian Monsen element.addEventListener("click", this._boundCategoryClickListener, false); 156d0825bca7fe65beaee391d30da42e937db621564Steve Block labelElement.appendChild(element); 157d0825bca7fe65beaee391d30da42e937db621564Steve Block labelElement.appendChild(document.createTextNode(title)); 158d0825bca7fe65beaee391d30da42e937db621564Steve Block 159d0825bca7fe65beaee391d30da42e937db621564Steve Block return labelElement; 160d0825bca7fe65beaee391d30da42e937db621564Steve Block }, 161d0825bca7fe65beaee391d30da42e937db621564Steve Block 1625ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen _createLauncherUI: function() 163d0825bca7fe65beaee391d30da42e937db621564Steve Block { 164d0825bca7fe65beaee391d30da42e937db621564Steve Block this._headerElement = document.createElement("h1"); 165d0825bca7fe65beaee391d30da42e937db621564Steve Block this._headerElement.textContent = WebInspector.UIString("Select audits to run"); 1665ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 1675ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen for (var child = 0; child < this._contentElement.children.length; ++child) 1685ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen this._contentElement.removeChild(this._contentElement.children[child]); 1695ddde30071f639962dd557c453f2ad01f8f0fd00Kristian Monsen 170d0825bca7fe65beaee391d30da42e937db621564Steve Block this._contentElement.appendChild(this._headerElement); 171d0825bca7fe65beaee391d30da42e937db621564Steve Block 172d0825bca7fe65beaee391d30da42e937db621564Steve Block function handleSelectAllClick(event) 173d0825bca7fe65beaee391d30da42e937db621564Steve Block { 174d0825bca7fe65beaee391d30da42e937db621564Steve Block this._selectAllClicked(event.target.checked); 175d0825bca7fe65beaee391d30da42e937db621564Steve Block } 176d0825bca7fe65beaee391d30da42e937db621564Steve Block var categoryElement = this._createCategoryElement(WebInspector.UIString("Select All"), ""); 177d0825bca7fe65beaee391d30da42e937db621564Steve Block categoryElement.id = "audit-launcher-selectall"; 178d0825bca7fe65beaee391d30da42e937db621564Steve Block this._selectAllCheckboxElement = categoryElement.firstChild; 179d0825bca7fe65beaee391d30da42e937db621564Steve Block this._selectAllCheckboxElement.checked = true; 180d0825bca7fe65beaee391d30da42e937db621564Steve Block this._selectAllCheckboxElement.addEventListener("click", handleSelectAllClick.bind(this), false); 181d0825bca7fe65beaee391d30da42e937db621564Steve Block this._contentElement.appendChild(categoryElement); 182d0825bca7fe65beaee391d30da42e937db621564Steve Block 183d0825bca7fe65beaee391d30da42e937db621564Steve Block this._categoriesElement = document.createElement("div"); 184d0825bca7fe65beaee391d30da42e937db621564Steve Block this._categoriesElement.className = "audit-categories-container"; 185d0825bca7fe65beaee391d30da42e937db621564Steve Block this._contentElement.appendChild(this._categoriesElement); 186d0825bca7fe65beaee391d30da42e937db621564Steve Block 187d0825bca7fe65beaee391d30da42e937db621564Steve Block this._currentCategoriesCount = 0; 188d0825bca7fe65beaee391d30da42e937db621564Steve Block 189dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block var flexibleSpaceElement = document.createElement("div"); 190dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block flexibleSpaceElement.className = "flexible-space"; 191dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._contentElement.appendChild(flexibleSpaceElement); 192dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 193d0825bca7fe65beaee391d30da42e937db621564Steve Block this._buttonContainerElement = document.createElement("div"); 194d0825bca7fe65beaee391d30da42e937db621564Steve Block this._buttonContainerElement.className = "button-container"; 195d0825bca7fe65beaee391d30da42e937db621564Steve Block 196d0825bca7fe65beaee391d30da42e937db621564Steve Block var labelElement = document.createElement("label"); 197d0825bca7fe65beaee391d30da42e937db621564Steve Block this._auditPresentStateElement = document.createElement("input"); 198d0825bca7fe65beaee391d30da42e937db621564Steve Block this._auditPresentStateElement.name = "audit-mode"; 199d0825bca7fe65beaee391d30da42e937db621564Steve Block this._auditPresentStateElement.type = "radio"; 200d0825bca7fe65beaee391d30da42e937db621564Steve Block this._auditPresentStateElement.checked = true; 20165f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch this._auditPresentStateLabelElement = document.createTextNode(WebInspector.UIString("Audit Present State")); 202d0825bca7fe65beaee391d30da42e937db621564Steve Block labelElement.appendChild(this._auditPresentStateElement); 203d0825bca7fe65beaee391d30da42e937db621564Steve Block labelElement.appendChild(this._auditPresentStateLabelElement); 204d0825bca7fe65beaee391d30da42e937db621564Steve Block this._buttonContainerElement.appendChild(labelElement); 205d0825bca7fe65beaee391d30da42e937db621564Steve Block 206d0825bca7fe65beaee391d30da42e937db621564Steve Block labelElement = document.createElement("label"); 207d0825bca7fe65beaee391d30da42e937db621564Steve Block this.auditReloadedStateElement = document.createElement("input"); 208d0825bca7fe65beaee391d30da42e937db621564Steve Block this.auditReloadedStateElement.name = "audit-mode"; 209d0825bca7fe65beaee391d30da42e937db621564Steve Block this.auditReloadedStateElement.type = "radio"; 210d0825bca7fe65beaee391d30da42e937db621564Steve Block labelElement.appendChild(this.auditReloadedStateElement); 211d0825bca7fe65beaee391d30da42e937db621564Steve Block labelElement.appendChild(document.createTextNode("Reload Page and Audit on Load")); 212d0825bca7fe65beaee391d30da42e937db621564Steve Block this._buttonContainerElement.appendChild(labelElement); 213d0825bca7fe65beaee391d30da42e937db621564Steve Block 214d0825bca7fe65beaee391d30da42e937db621564Steve Block this._launchButton = document.createElement("button"); 215dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._launchButton.type = "button"; 216dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._launchButton.textContent = WebInspector.UIString("Run"); 217d0825bca7fe65beaee391d30da42e937db621564Steve Block this._launchButton.addEventListener("click", this._launchButtonClicked.bind(this), false); 218d0825bca7fe65beaee391d30da42e937db621564Steve Block this._buttonContainerElement.appendChild(this._launchButton); 219d0825bca7fe65beaee391d30da42e937db621564Steve Block 220dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._resourceProgressContainer = document.createElement("span"); 221dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._resourceProgressContainer.className = "resource-progress"; 222dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block var resourceProgressImage = document.createElement("img"); 223dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._resourceProgressContainer.appendChild(resourceProgressImage); 224dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._resourceProgressTextElement = document.createElement("span"); 225dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._resourceProgressContainer.appendChild(this._resourceProgressTextElement); 226dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._buttonContainerElement.appendChild(this._resourceProgressContainer); 227dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 228d0825bca7fe65beaee391d30da42e937db621564Steve Block this._contentElement.appendChild(this._buttonContainerElement); 229d0825bca7fe65beaee391d30da42e937db621564Steve Block 230d0825bca7fe65beaee391d30da42e937db621564Steve Block this._selectAllClicked(this._selectAllCheckboxElement.checked); 231d0825bca7fe65beaee391d30da42e937db621564Steve Block this._updateButton(); 232e14391e94c850b8bd03680c23b38978db68687a8John Reck this._updateResourceProgress(); 233d0825bca7fe65beaee391d30da42e937db621564Steve Block }, 234d0825bca7fe65beaee391d30da42e937db621564Steve Block 235dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block _updateResourceProgress: function() 236d0825bca7fe65beaee391d30da42e937db621564Steve Block { 237dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!this._resourceProgressContainer) 238dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 239d0825bca7fe65beaee391d30da42e937db621564Steve Block 24021939df44de1705786c545cd1bf519d47250322dBen Murdoch if (!this._auditRunning) { 24121939df44de1705786c545cd1bf519d47250322dBen Murdoch this._resetResourceCount(); 242dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._resourceProgressContainer.addStyleClass("hidden"); 24321939df44de1705786c545cd1bf519d47250322dBen Murdoch } else 244dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._resourceProgressContainer.removeStyleClass("hidden"); 245ab9e7a118cf1ea2e3a93dce683b2ded3e7291ddbBen Murdoch this._resourceProgressTextElement.textContent = WebInspector.UIString("Loading (%d of %d)", this._loadedResources, this._totalResources); 2468a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block }, 2478a0914b749bbe7da7768e07a7db5c6d4bb09472bSteve Block 248dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block _updateButton: function() 249d0825bca7fe65beaee391d30da42e937db621564Steve Block { 250dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block this._launchButton.disabled = !this._currentCategoriesCount || this._auditRunning; 251d0825bca7fe65beaee391d30da42e937db621564Steve Block } 252d0825bca7fe65beaee391d30da42e937db621564Steve Block} 253d0825bca7fe65beaee391d30da42e937db621564Steve Block 254d0825bca7fe65beaee391d30da42e937db621564Steve BlockWebInspector.AuditLauncherView.prototype.__proto__ = WebInspector.View.prototype; 255