Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(7)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/coverage/CoverageView.js

Issue 2890863003: DevTools/Coverage: filter out content scripts (Closed)
Patch Set: DevTools/Coverage: filter out content scripts Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/coverage/CoverageModel.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2016 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 Coverage.CoverageView = class extends UI.VBox { 5 Coverage.CoverageView = class extends UI.VBox {
6 constructor() { 6 constructor() {
7 super(true); 7 super(true);
8 8
9 /** @type {?Coverage.CoverageModel} */ 9 /** @type {?Coverage.CoverageModel} */
10 this._model = null; 10 this._model = null;
(...skipping 13 matching lines...) Expand all
24 toolbar.appendToolbarItem(this._toggleRecordButton); 24 toolbar.appendToolbarItem(this._toggleRecordButton);
25 25
26 var startWithReloadAction = 26 var startWithReloadAction =
27 /** @type {!UI.Action }*/ (UI.actionRegistry.action('coverage.start-with -reload')); 27 /** @type {!UI.Action }*/ (UI.actionRegistry.action('coverage.start-with -reload'));
28 this._startWithReloadButton = UI.Toolbar.createActionButton(startWithReloadA ction); 28 this._startWithReloadButton = UI.Toolbar.createActionButton(startWithReloadA ction);
29 toolbar.appendToolbarItem(this._startWithReloadButton); 29 toolbar.appendToolbarItem(this._startWithReloadButton);
30 this._clearButton = new UI.ToolbarButton(Common.UIString('Clear all'), 'larg eicon-clear'); 30 this._clearButton = new UI.ToolbarButton(Common.UIString('Clear all'), 'larg eicon-clear');
31 this._clearButton.addEventListener(UI.ToolbarButton.Events.Click, this._clea r.bind(this)); 31 this._clearButton.addEventListener(UI.ToolbarButton.Events.Click, this._clea r.bind(this));
32 toolbar.appendToolbarItem(this._clearButton); 32 toolbar.appendToolbarItem(this._clearButton);
33 33
34 /** @type {?RegExp} */
35 this._textFilterRegExp = null;
36
34 toolbar.appendSeparator(); 37 toolbar.appendSeparator();
35 this._filterInput = new UI.ToolbarInput(Common.UIString('URL filter'), 0.4, 1, true); 38 this._filterInput = new UI.ToolbarInput(Common.UIString('URL filter'), 0.4, 1, true);
36 this._filterInput.setEnabled(false); 39 this._filterInput.setEnabled(false);
37 this._filterInput.addEventListener(UI.ToolbarInput.Event.TextChanged, this._ filterChanged, this); 40 this._filterInput.addEventListener(UI.ToolbarInput.Event.TextChanged, this._ onFilterChanged, this);
38 toolbar.appendToolbarItem(this._filterInput); 41 toolbar.appendToolbarItem(this._filterInput);
39 42
43 toolbar.appendSeparator();
44 this._showContentScriptsSetting = Common.settings.createSetting('showContent Scripts', false);
45 this._showContentScriptsSetting.addChangeListener(this._onFilterChanged, thi s);
46 var contentScriptsCheckbox = new UI.ToolbarSettingCheckbox(
47 this._showContentScriptsSetting, Common.UIString('Include extension cont ent scripts'),
48 Common.UIString('Content scripts'));
49 toolbar.appendToolbarItem(contentScriptsCheckbox);
50
40 this._coverageResultsElement = this.contentElement.createChild('div', 'cover age-results'); 51 this._coverageResultsElement = this.contentElement.createChild('div', 'cover age-results');
41 this._landingPage = this._buildLandingPage(); 52 this._landingPage = this._buildLandingPage();
42 this._listView = new Coverage.CoverageListView(); 53 this._listView = new Coverage.CoverageListView(this._isVisible.bind(this, fa lse));
43 54
44 this._statusToolbarElement = this.contentElement.createChild('div', 'coverag e-toolbar-summary'); 55 this._statusToolbarElement = this.contentElement.createChild('div', 'coverag e-toolbar-summary');
45 this._statusMessageElement = this._statusToolbarElement.createChild('div', ' coverage-message'); 56 this._statusMessageElement = this._statusToolbarElement.createChild('div', ' coverage-message');
46 this._landingPage.show(this._coverageResultsElement); 57 this._landingPage.show(this._coverageResultsElement);
47 } 58 }
48 59
49 /** 60 /**
50 * @return {!UI.VBox} 61 * @return {!UI.VBox}
51 */ 62 */
52 _buildLandingPage() { 63 _buildLandingPage() {
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
137 this._updateViews(updatedEntries); 148 this._updateViews(updatedEntries);
138 this._toggleRecordAction.setToggled(false); 149 this._toggleRecordAction.setToggled(false);
139 this._startWithReloadButton.setEnabled(true); 150 this._startWithReloadButton.setEnabled(true);
140 this._clearButton.setEnabled(true); 151 this._clearButton.setEnabled(true);
141 } 152 }
142 153
143 /** 154 /**
144 * @param {!Array<!Coverage.CoverageInfo>} updatedEntries 155 * @param {!Array<!Coverage.CoverageInfo>} updatedEntries
145 */ 156 */
146 async _updateViews(updatedEntries) { 157 async _updateViews(updatedEntries) {
147 var urlEntries = this._model.entries(); 158 this._updateStats();
148 this._updateStats(urlEntries); 159 this._listView.update(this._model.entries());
149 this._listView.update(urlEntries);
150 this._decorationManager.update(updatedEntries); 160 this._decorationManager.update(updatedEntries);
151 } 161 }
152 162
153 /** 163 _updateStats() {
154 * @param {!Array<!Coverage.URLCoverageInfo>} coverageInfo
155 */
156 _updateStats(coverageInfo) {
157 var total = 0; 164 var total = 0;
158 var unused = 0; 165 var unused = 0;
159 for (var info of coverageInfo) { 166 for (var info of this._model.entries()) {
167 if (!this._isVisible(true, info))
168 continue;
160 total += info.size(); 169 total += info.size();
161 unused += info.unusedSize(); 170 unused += info.unusedSize();
162 } 171 }
163 172
164 var percentUnused = total ? Math.round(100 * unused / total) : 0; 173 var percentUnused = total ? Math.round(100 * unused / total) : 0;
165 this._statusMessageElement.textContent = Common.UIString( 174 this._statusMessageElement.textContent = Common.UIString(
166 '%s of %s bytes are not used. (%d%%)', Number.bytesToString(unused), Num ber.bytesToString(total), 175 '%s of %s bytes are not used. (%d%%)', Number.bytesToString(unused), Num ber.bytesToString(total),
167 percentUnused); 176 percentUnused);
168 } 177 }
169 178
170 _filterChanged() { 179 _onFilterChanged() {
171 if (!this._listView) 180 if (!this._listView)
172 return; 181 return;
173 var text = this._filterInput.value(); 182 var text = this._filterInput.value();
174 this._listView.setFilter(text ? createPlainTextSearchRegex(text, 'i') : null ); 183 this._textFilterRegExp = text ? createPlainTextSearchRegex(text, 'i') : null ;
184 this._listView.updateFilterAndHighlight(this._textFilterRegExp);
185 this._updateStats();
186 }
187
188 /**
189 * @param {boolean} ignoreTextFilter
190 * @param {!Coverage.URLCoverageInfo} coverageInfo
191 * @return {boolean}
192 */
193 _isVisible(ignoreTextFilter, coverageInfo) {
194 var url = coverageInfo.url();
195 if (url.startsWith(Coverage.CoverageView._extensionBindingsURLPrefix))
196 return false;
197 if (coverageInfo.isContentScript() && !this._showContentScriptsSetting.get() )
198 return false;
199 return ignoreTextFilter || !this._textFilterRegExp || this._textFilterRegExp .test(url);
175 } 200 }
176 }; 201 };
177 202
203 Coverage.CoverageView._extensionBindingsURLPrefix = 'extensions::';
204
178 /** 205 /**
179 * @implements {UI.ActionDelegate} 206 * @implements {UI.ActionDelegate}
180 */ 207 */
181 Coverage.CoverageView.ActionDelegate = class { 208 Coverage.CoverageView.ActionDelegate = class {
182 /** 209 /**
183 * @override 210 * @override
184 * @param {!UI.Context} context 211 * @param {!UI.Context} context
185 * @param {string} actionId 212 * @param {string} actionId
186 * @return {boolean} 213 * @return {boolean}
187 */ 214 */
(...skipping 16 matching lines...) Expand all
204 coverageView._toggleRecording(); 231 coverageView._toggleRecording();
205 break; 232 break;
206 case 'coverage.start-with-reload': 233 case 'coverage.start-with-reload':
207 coverageView._startWithReload(); 234 coverageView._startWithReload();
208 break; 235 break;
209 default: 236 default:
210 console.assert(false, `Unknown action: ${actionId}`); 237 console.assert(false, `Unknown action: ${actionId}`);
211 } 238 }
212 } 239 }
213 }; 240 };
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/devtools/front_end/coverage/CoverageModel.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698