Chromium Code Reviews| Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js |
| diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js |
| index a567915e008086f2ab413589cbb25a82c3cd16b6..5d81c4b4346ead1dc7010f49900afdf7fb485c2e 100644 |
| --- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js |
| +++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelinePanel.js |
| @@ -62,12 +62,9 @@ WebInspector.TimelinePanel = function() |
| this._model.addEventListener(WebInspector.TimelineModel.Events.BufferUsage, this._onTracingBufferUsage, this); |
| this._model.addEventListener(WebInspector.TimelineModel.Events.RetrieveEventsProgress, this._onRetrieveEventsProgress, this); |
| - this._categoryFilter = new WebInspector.TimelineCategoryFilter(); |
| - this._durationFilter = new WebInspector.TimelineIsLongFilter(); |
| - this._textFilter = new WebInspector.TimelineTextFilter(); |
| - this._model.addFilter(this._categoryFilter); |
| - this._model.addFilter(this._durationFilter); |
| - this._model.addFilter(this._textFilter); |
| + this._filters = new WebInspector.TimelineFilters(); |
| + for (var filter of this._filters.filters()) |
| + this._model.addFilter(filter); |
| this._model.addFilter(new WebInspector.TimelineStaticFilter()); |
| /** @type {!Array.<!WebInspector.TimelineModeView>} */ |
| @@ -163,8 +160,6 @@ WebInspector.TimelinePanel.State = { |
| WebInspector.TimelinePanel.rowHeight = 18; |
| WebInspector.TimelinePanel.headerHeight = 20; |
| -WebInspector.TimelinePanel.durationFilterPresetsMs = [0, 1, 15]; |
| - |
| WebInspector.TimelinePanel.prototype = { |
| /** |
| * @override |
| @@ -297,7 +292,7 @@ WebInspector.TimelinePanel.prototype = { |
| _addModeView: function(modeView) |
| { |
| modeView.setWindowTimes(this.windowStartTime(), this.windowEndTime()); |
| - modeView.refreshRecords(this._textFilter._regex); |
| + modeView.refreshRecords(this._filters.searchRegExp()); |
| this._stackView.appendView(modeView.view(), "timelinePanelTimelineStackSplitViewState", undefined, 112); |
| modeView.view().addEventListener(WebInspector.SplitWidget.Events.SidebarSizeChanged, this._sidebarResized, this); |
| this._currentViews.push(modeView); |
| @@ -350,8 +345,7 @@ WebInspector.TimelinePanel.prototype = { |
| this._panelToolbar.appendToolbarItem(clearButton); |
| this._panelToolbar.appendSeparator(); |
| - this._filterBar = this._createFilterBar(); |
| - this._panelToolbar.appendToolbarItem(this._filterBar.filterButton()); |
| + this._panelToolbar.appendToolbarItem(this._filters.filterButton()); |
| var garbageCollectButton = new WebInspector.ToolbarButton(WebInspector.UIString("Collect garbage"), "garbage-collect-toolbar-item"); |
| garbageCollectButton.addEventListener("click", this._garbageCollectButtonClicked, this); |
| @@ -402,75 +396,7 @@ WebInspector.TimelinePanel.prototype = { |
| this._progressToolbarItem.setVisible(false); |
| this._panelToolbar.appendToolbarItem(this._progressToolbarItem); |
| - this.element.appendChild(this._filterBar.filtersElement()); |
| - }, |
| - |
| - /** |
| - * @return {!WebInspector.FilterBar} |
| - */ |
| - _createFilterBar: function() |
| - { |
| - this._filterBar = new WebInspector.FilterBar("timelinePanel"); |
| - this._filters = {}; |
| - this._filters._textFilterUI = new WebInspector.TextFilterUI(); |
| - this._filters._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._textFilterChanged, this); |
| - this._filterBar.addFilter(this._filters._textFilterUI); |
| - |
| - var durationOptions = []; |
| - for (var presetIndex = 0; presetIndex < WebInspector.TimelinePanel.durationFilterPresetsMs.length; ++presetIndex) { |
| - var durationMs = WebInspector.TimelinePanel.durationFilterPresetsMs[presetIndex]; |
| - var durationOption = {}; |
| - if (!durationMs) { |
| - durationOption.label = WebInspector.UIString("All"); |
| - durationOption.title = WebInspector.UIString("Show all records"); |
| - } else { |
| - durationOption.label = WebInspector.UIString("\u2265 %dms", durationMs); |
| - durationOption.title = WebInspector.UIString("Hide records shorter than %dms", durationMs); |
| - } |
| - durationOption.value = durationMs; |
| - durationOptions.push(durationOption); |
| - } |
| - this._filters._durationFilterUI = new WebInspector.ComboBoxFilterUI(durationOptions); |
| - this._filters._durationFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._durationFilterChanged, this); |
| - this._filterBar.addFilter(this._filters._durationFilterUI); |
| - |
| - this._filters._categoryFiltersUI = {}; |
| - var categories = WebInspector.TimelineUIUtils.categories(); |
| - for (var categoryName in categories) { |
| - var category = categories[categoryName]; |
| - if (!category.visible) |
| - continue; |
| - var filter = new WebInspector.CheckboxFilterUI(category.name, category.title); |
| - filter.setColor(category.fillColorStop0, category.borderColor); |
| - this._filters._categoryFiltersUI[category.name] = filter; |
| - filter.addEventListener(WebInspector.FilterUI.Events.FilterChanged, this._categoriesFilterChanged.bind(this, categoryName), this); |
| - this._filterBar.addFilter(filter); |
| - } |
| - return this._filterBar; |
| - }, |
| - |
| - _textFilterChanged: function(event) |
| - { |
| - var searchQuery = this._filters._textFilterUI.value(); |
| - this.searchCanceled(); |
| - this._textFilter.setRegex(searchQuery ? createPlainTextSearchRegex(searchQuery, "i") : null); |
| - }, |
| - |
| - _durationFilterChanged: function() |
| - { |
| - var duration = this._filters._durationFilterUI.value(); |
| - var minimumRecordDuration = parseInt(duration, 10); |
| - this._durationFilter.setMinimumRecordDuration(minimumRecordDuration); |
| - }, |
| - |
| - /** |
| - * @param {string} name |
| - */ |
| - _categoriesFilterChanged: function(name) |
| - { |
| - var categories = WebInspector.TimelineUIUtils.categories(); |
| - categories[name].hidden = !this._filters._categoryFiltersUI[name].checked(); |
| - this._categoryFilter.notifyFilterChanged(); |
| + this.element.appendChild(this._filters.filtersElement()); |
| }, |
| /** |
| @@ -577,7 +503,7 @@ WebInspector.TimelinePanel.prototype = { |
| { |
| for (var i = 0; i < this._currentViews.length; ++i) { |
| var view = this._currentViews[i]; |
| - view.refreshRecords(this._textFilter._regex); |
| + view.refreshRecords(this._filters.searchRegExp()); |
| } |
| this._updateSelectionDetails(); |
| }, |
| @@ -610,20 +536,17 @@ WebInspector.TimelinePanel.prototype = { |
| } |
| this._flameChart = null; |
| if (viewMode === WebInspector.TimelinePanel.ViewMode.FlameChart) { |
| - this._filterBar.filterButton().setEnabled(false); |
| - this._filterBar.filtersElement().classList.toggle("hidden", true); |
| + this._filters.setEnabled(false); |
| this._flameChart = new WebInspector.TimelineFlameChartView(this, this._model, this._frameModel); |
| this._flameChart.enableNetworkPane(this._captureNetworkSetting.get()); |
| this._addModeView(this._flameChart); |
| } else if (viewMode === WebInspector.TimelinePanel.ViewMode.Waterfall) { |
| - this._filterBar.filterButton().setEnabled(true); |
| - this._filterBar.filtersElement().classList.toggle("hidden", !this._filterBar.filtersToggled()); |
| + this._filters.setEnabled(true); |
| var timelineView = new WebInspector.TimelineView(this, this._model); |
| this._addModeView(timelineView); |
| timelineView.setFrameModel(this._frameModel); |
| } else if (viewMode === WebInspector.TimelinePanel.ViewMode.CallTree || viewMode === WebInspector.TimelinePanel.ViewMode.BottomUp) { |
| - this._filterBar.filterButton().setEnabled(false); |
| - this._filterBar.filtersElement().classList.toggle("hidden", true); |
| + this._filters.setEnabled(false); |
| var innerView = viewMode === WebInspector.TimelinePanel.ViewMode.BottomUp ? new WebInspector.BottomUpTimelineTreeView(this._model) : new WebInspector.CallTreeTimelineTreeView(this._model); |
| var treeView = new WebInspector.TimelineTreeModeView(this, innerView); |
| this._addModeView(treeView); |
| @@ -958,7 +881,7 @@ WebInspector.TimelinePanel.prototype = { |
| */ |
| _updateSearchHighlight: function(revealRecord, shouldJump, jumpBackwards) |
| { |
| - if (!this._textFilter.isEmpty() || !this._searchRegex) { |
| + if (this._filters.searchRegExp() || !this._searchRegex) { |
| this._clearHighlight(); |
| return; |
| } |
| @@ -1702,19 +1625,11 @@ WebInspector.TimelineTextFilter = function() |
| WebInspector.TimelineTextFilter.prototype = { |
| /** |
| - * @return {boolean} |
| + * @param {?RegExp} regExp |
| */ |
| - isEmpty: function() |
| + _setRegExp: function(regExp) |
| { |
| - return !this._regex; |
| - }, |
| - |
| - /** |
| - * @param {?RegExp} regex |
| - */ |
| - setRegex: function(regex) |
| - { |
| - this._regex = regex; |
| + this._regExp = regExp; |
| this.notifyFilterChanged(); |
| }, |
| @@ -1725,7 +1640,7 @@ WebInspector.TimelineTextFilter.prototype = { |
| */ |
| accept: function(event) |
| { |
| - return !this._regex || WebInspector.TimelineUIUtils.testContentMatching(event, this._regex); |
| + return !this._regExp || WebInspector.TimelineUIUtils.testContentMatching(event, this._regExp); |
| }, |
| __proto__: WebInspector.TimelineModel.Filter.prototype |
| @@ -1946,3 +1861,131 @@ WebInspector.TimelinePanel.ActionDelegate.prototype = { |
| return false; |
| } |
| } |
| + |
| +/** |
| + * @constructor |
| + */ |
| +WebInspector.TimelineFilters = function() |
| +{ |
| + this._categoryFilter = new WebInspector.TimelineCategoryFilter(); |
| + this._durationFilter = new WebInspector.TimelineIsLongFilter(); |
| + this._textFilter = new WebInspector.TimelineTextFilter(); |
| + this._filters = [this._categoryFilter, this._durationFilter, this._textFilter]; |
| + |
| + this._createFilterBar(); |
| +} |
| + |
| +WebInspector.TimelineFilters._durationFilterPresetsMs = [0, 1, 15]; |
| + |
| +WebInspector.TimelineFilters.prototype = { |
| + /** |
| + * @return {!Array<!WebInspector.TimelineModel.Filter>} |
| + */ |
| + filters: function() |
| + { |
| + return this._filters; |
| + }, |
| + |
| + /** |
| + * @param {boolean} enabled |
| + */ |
| + setEnabled: function(enabled) |
| + { |
| + this.filterButton().setEnabled(enabled); |
| + this.filtersElement().classList.toggle("hidden", !enabled || !this._filterBar.filtersToggled()); |
| + }, |
| + |
| + /** |
| + * @return {?RegExp} |
| + */ |
| + searchRegExp: function() |
| + { |
| + return this._textFilter._regExp; |
| + }, |
| + |
| + /** |
| + * @return {!WebInspector.ToolbarItem} |
| + */ |
| + filterButton: function() |
| + { |
| + return this._filterBar.filterButton(); |
| + }, |
| + |
| + /** |
| + * @return {!Element} |
| + */ |
| + filtersElement: function() |
| + { |
| + return this._filterBar.filtersElement(); |
| + }, |
| + |
| + _createFilterBar: function() |
| + { |
| + this._filterBar = new WebInspector.FilterBar("timelinePanel"); |
| + |
| + var textFilterUI = new WebInspector.TextFilterUI(); |
| + textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, textFilterChanged, this); |
| + this._filterBar.addFilter(textFilterUI); |
| + |
| + var durationOptions = []; |
| + for (var durationMs of WebInspector.TimelineFilters._durationFilterPresetsMs) { |
| + var durationOption = {}; |
| + if (!durationMs) { |
| + durationOption.label = WebInspector.UIString("All"); |
| + durationOption.title = WebInspector.UIString("Show all records"); |
| + } else { |
| + durationOption.label = WebInspector.UIString("\u2265 %dms", durationMs); |
| + durationOption.title = WebInspector.UIString("Hide records shorter than %dms", durationMs); |
| + } |
| + durationOption.value = durationMs; |
| + durationOptions.push(durationOption); |
| + } |
| + var durationFilterUI = new WebInspector.ComboBoxFilterUI(durationOptions); |
| + durationFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChanged, durationFilterChanged, this); |
| + this._filterBar.addFilter(durationFilterUI); |
| + |
| + var categoryFiltersUI = {}; |
| + var categories = WebInspector.TimelineUIUtils.categories(); |
| + for (var categoryName in categories) { |
| + var category = categories[categoryName]; |
| + if (!category.visible) |
| + continue; |
| + var filter = new WebInspector.CheckboxFilterUI(category.name, category.title); |
| + filter.setColor(category.fillColorStop0, category.borderColor); |
| + categoryFiltersUI[category.name] = filter; |
| + filter.addEventListener(WebInspector.FilterUI.Events.FilterChanged, categoriesFilterChanged.bind(this, categoryName)); |
| + this._filterBar.addFilter(filter); |
| + } |
| + return this._filterBar; |
| + |
| + /** |
| + * @this {WebInspector.TimelineFilters} |
| + */ |
| + function textFilterChanged(event) |
|
alph
2015/11/12 02:25:27
remove arg
|
| + { |
| + var searchQuery = textFilterUI.value(); |
| + this._textFilter._setRegExp(searchQuery ? createPlainTextSearchRegex(searchQuery, "i") : null); |
| + } |
| + |
| + /** |
| + * @this {WebInspector.TimelineFilters} |
| + */ |
| + function durationFilterChanged() |
| + { |
| + var duration = durationFilterUI.value(); |
| + var minimumRecordDuration = parseInt(duration, 10); |
| + this._durationFilter.setMinimumRecordDuration(minimumRecordDuration); |
| + } |
| + |
| + /** |
| + * @param {string} name |
| + * @this {WebInspector.TimelineFilters} |
| + */ |
| + function categoriesFilterChanged(name) |
| + { |
| + var categories = WebInspector.TimelineUIUtils.categories(); |
| + categories[name].hidden = !categoryFiltersUI[name].checked(); |
| + this._categoryFilter.notifyFilterChanged(); |
| + } |
| + } |
| +}; |