| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 /** | 5 /** |
| 6 * @constructor | 6 * @constructor |
| 7 * @extends {WebInspector.VBox} | 7 * @extends {WebInspector.VBox} |
| 8 * @implements {WebInspector.TargetManager.Observer} | 8 * @implements {WebInspector.TargetManager.Observer} |
| 9 */ | 9 */ |
| 10 WebInspector.PromisePane = function() | 10 WebInspector.PromisePane = function() |
| 11 { | 11 { |
| 12 WebInspector.VBox.call(this); | 12 WebInspector.VBox.call(this); |
| 13 this.registerRequiredCSS("ui/filter.css"); | 13 this.registerRequiredCSS("ui/filter.css"); |
| 14 this.registerRequiredCSS("promises/promisePane.css"); | 14 this.registerRequiredCSS("promises/promisePane.css"); |
| 15 this.element.classList.add("promises"); | 15 this.element.classList.add("promises"); |
| 16 | 16 |
| 17 var toolbar = new WebInspector.Toolbar(this.element); | 17 var toolbar = new WebInspector.Toolbar(this.element); |
| 18 this._recordButton = new WebInspector.ToolbarButton("", "record-toolbar-item
"); | 18 this._recordButton = new WebInspector.ToolbarButton("", "record-toolbar-item
"); |
| 19 this._recordButton.addEventListener("click", this._recordButtonClicked.bind(
this)); | 19 this._recordButton.addEventListener("click", this._recordButtonClicked.bind(
this)); |
| 20 toolbar.appendToolbarItem(this._recordButton); | 20 toolbar.appendToolbarItem(this._recordButton); |
| 21 | 21 |
| 22 var clearButton = new WebInspector.ToolbarButton(WebInspector.UIString("Clea
r"), "clear-toolbar-item"); | 22 var clearButton = new WebInspector.ToolbarButton(WebInspector.UIString("Clea
r"), "clear-toolbar-item"); |
| 23 clearButton.addEventListener("click", this._clearButtonClicked.bind(this)); | 23 clearButton.addEventListener("click", this._clearButtonClicked.bind(this)); |
| 24 toolbar.appendToolbarItem(clearButton); | 24 toolbar.appendToolbarItem(clearButton); |
| 25 toolbar.appendSeparator(); |
| 25 | 26 |
| 26 this._filter = new WebInspector.PromisePaneFilter(this._refresh.bind(this)); | 27 this._promiseStatusFiltersSetting = WebInspector.settings.createSetting("pro
miseStatusFilters", {}); |
| 27 toolbar.appendToolbarItem(this._filter.filterButton()); | 28 this._hideCollectedPromisesSetting = WebInspector.settings.createSetting("hi
deCollectedPromises", false); |
| 29 |
| 30 this._createFilterBar(); |
| 31 toolbar.appendToolbarItem(this._filterBar.filterButton()); |
| 28 | 32 |
| 29 var garbageCollectButton = new WebInspector.ToolbarButton(WebInspector.UIStr
ing("Collect garbage"), "garbage-collect-toolbar-item"); | 33 var garbageCollectButton = new WebInspector.ToolbarButton(WebInspector.UIStr
ing("Collect garbage"), "garbage-collect-toolbar-item"); |
| 30 garbageCollectButton.addEventListener("click", this._garbageCollectButtonCli
cked, this); | 34 garbageCollectButton.addEventListener("click", this._garbageCollectButtonCli
cked, this); |
| 31 toolbar.appendToolbarItem(garbageCollectButton); | 35 toolbar.appendToolbarItem(garbageCollectButton); |
| 32 | 36 |
| 37 toolbar.appendSeparator(); |
| 33 var asyncCheckbox = new WebInspector.ToolbarCheckbox(WebInspector.UIString("
Async"), WebInspector.UIString("Capture async stack traces"), WebInspector.modul
eSetting("enableAsyncStackTraces")); | 38 var asyncCheckbox = new WebInspector.ToolbarCheckbox(WebInspector.UIString("
Async"), WebInspector.UIString("Capture async stack traces"), WebInspector.modul
eSetting("enableAsyncStackTraces")); |
| 34 toolbar.appendToolbarItem(asyncCheckbox); | 39 toolbar.appendToolbarItem(asyncCheckbox); |
| 35 | 40 |
| 36 this.element.appendChild(this._filter.filtersContainer()); | 41 this.element.appendChild(this._filterBar.filtersElement()); |
| 37 | 42 |
| 38 this._hiddenByFilterCount = 0; | 43 this._hiddenByFilterCount = 0; |
| 39 this._filterStatusMessageElement = this.element.createChild("div", "promises
-filter-status hidden"); | 44 this._filterStatusMessageElement = this.element.createChild("div", "promises
-filter-status hidden"); |
| 40 this._filterStatusTextElement = this._filterStatusMessageElement.createChild
("span"); | 45 this._filterStatusTextElement = this._filterStatusMessageElement.createChild
("span"); |
| 41 this._filterStatusMessageElement.createTextChild(" "); | 46 this._filterStatusMessageElement.createTextChild(" "); |
| 42 var resetFiltersLink = this._filterStatusMessageElement.createChild("span",
"link"); | 47 var resetFiltersLink = this._filterStatusMessageElement.createChild("span",
"link"); |
| 43 resetFiltersLink.textContent = WebInspector.UIString("Show all promises."); | 48 resetFiltersLink.textContent = WebInspector.UIString("Show all promises."); |
| 44 resetFiltersLink.addEventListener("click", this._resetFilters.bind(this), tr
ue); | 49 resetFiltersLink.addEventListener("click", this._resetFilters.bind(this), tr
ue); |
| 45 | 50 |
| 46 this._dataGridContainer = new WebInspector.VBox(); | 51 this._dataGridContainer = new WebInspector.VBox(); |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 114 this.asyncCreationStack = details.asyncCreationStack; | 119 this.asyncCreationStack = details.asyncCreationStack; |
| 115 if (details.settlementStack) | 120 if (details.settlementStack) |
| 116 this.settlementStack = details.settlementStack; | 121 this.settlementStack = details.settlementStack; |
| 117 if (details.asyncSettlementStack) | 122 if (details.asyncSettlementStack) |
| 118 this.asyncSettlementStack = details.asyncSettlementStack; | 123 this.asyncSettlementStack = details.asyncSettlementStack; |
| 119 } | 124 } |
| 120 } | 125 } |
| 121 | 126 |
| 122 | 127 |
| 123 WebInspector.PromisePane.prototype = { | 128 WebInspector.PromisePane.prototype = { |
| 129 _createFilterBar: function() |
| 130 { |
| 131 this._filterBar = new WebInspector.FilterBar("promisePane"); |
| 132 |
| 133 this._textFilterUI = new WebInspector.TextFilterUI(true); |
| 134 this._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterC
hanged, this._onFilterChanged, this); |
| 135 this._filterBar.addFilter(this._textFilterUI); |
| 136 |
| 137 var statuses = [ |
| 138 { name: "pending", label: WebInspector.UIString("Pending") }, |
| 139 { name: "resolved", label: WebInspector.UIString("Fulfilled") }, |
| 140 { name: "rejected", label: WebInspector.UIString("Rejected") } |
| 141 ]; |
| 142 this._statusFilterUI = new WebInspector.NamedBitSetFilterUI(statuses, th
is._promiseStatusFiltersSetting); |
| 143 this._statusFilterUI.addEventListener(WebInspector.FilterUI.Events.Filte
rChanged, this._onFilterChanged, this); |
| 144 this._filterBar.addFilter(this._statusFilterUI); |
| 145 |
| 146 var hideCollectedCheckbox = new WebInspector.CheckboxFilterUI("hide-coll
ected-promises", WebInspector.UIString("Hide collected promises"), true, this._h
ideCollectedPromisesSetting); |
| 147 hideCollectedCheckbox.addEventListener(WebInspector.FilterUI.Events.Filt
erChanged, this._onFilterChanged, this); |
| 148 this._filterBar.addFilter(hideCollectedCheckbox); |
| 149 }, |
| 150 |
| 151 /** |
| 152 * @param {!WebInspector.PromiseDetails} details |
| 153 * @param {!WebInspector.DataGridNode} node |
| 154 * @return {boolean} |
| 155 */ |
| 156 _shouldBeVisible: function(details, node) |
| 157 { |
| 158 if (!this._statusFilterUI.accept(details.status)) |
| 159 return false; |
| 160 |
| 161 if (this._hideCollectedPromisesSetting.get() && details.isGarbageCollect
ed) |
| 162 return false; |
| 163 |
| 164 var regex = this._textFilterUI.regex(); |
| 165 if (!regex) |
| 166 return true; |
| 167 |
| 168 var text = node.dataTextForSearch(); |
| 169 regex.lastIndex = 0; |
| 170 return regex.test(text); |
| 171 }, |
| 172 |
| 173 _onFilterChanged: function() |
| 174 { |
| 175 if (this._filterChangedTimeout) |
| 176 clearTimeout(this._filterChangedTimeout); |
| 177 this._filterChangedTimeout = setTimeout(onTimerFired.bind(this), 100); |
| 178 |
| 179 /** |
| 180 * @this {WebInspector.PromisePane} |
| 181 */ |
| 182 function onTimerFired() |
| 183 { |
| 184 delete this._filterChangedTimeout; |
| 185 this._refresh(); |
| 186 } |
| 187 }, |
| 188 |
| 124 /** | 189 /** |
| 125 * @override | 190 * @override |
| 126 * @return {!Array.<!Element>} | 191 * @return {!Array.<!Element>} |
| 127 */ | 192 */ |
| 128 elementsToRestoreScrollPositionsFor: function() | 193 elementsToRestoreScrollPositionsFor: function() |
| 129 { | 194 { |
| 130 return [this._dataGrid.scrollContainer]; | 195 return [this._dataGrid.scrollContainer]; |
| 131 }, | 196 }, |
| 132 | 197 |
| 133 /** | 198 /** |
| (...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 245 | 310 |
| 246 _clearButtonClicked: function() | 311 _clearButtonClicked: function() |
| 247 { | 312 { |
| 248 this._clear(); | 313 this._clear(); |
| 249 if (this._debuggerModel) | 314 if (this._debuggerModel) |
| 250 this._promiseDetailsByDebuggerModel.delete(this._debuggerModel); | 315 this._promiseDetailsByDebuggerModel.delete(this._debuggerModel); |
| 251 }, | 316 }, |
| 252 | 317 |
| 253 _resetFilters: function() | 318 _resetFilters: function() |
| 254 { | 319 { |
| 255 this._filter.reset(); | 320 this._hideCollectedPromisesSetting.set(false); |
| 321 this._promiseStatusFiltersSetting.set({}); |
| 322 this._textFilterUI.setValue(""); |
| 256 }, | 323 }, |
| 257 | 324 |
| 258 _updateFilterStatus: function() | 325 _updateFilterStatus: function() |
| 259 { | 326 { |
| 260 this._filterStatusTextElement.textContent = WebInspector.UIString(this._
hiddenByFilterCount === 1 ? "%d promise is hidden by filters." : "%d promises ar
e hidden by filters.", this._hiddenByFilterCount); | 327 this._filterStatusTextElement.textContent = WebInspector.UIString(this._
hiddenByFilterCount === 1 ? "%d promise is hidden by filters." : "%d promises ar
e hidden by filters.", this._hiddenByFilterCount); |
| 261 this._filterStatusMessageElement.classList.toggle("hidden", !this._hidde
nByFilterCount); | 328 this._filterStatusMessageElement.classList.toggle("hidden", !this._hidde
nByFilterCount); |
| 262 }, | 329 }, |
| 263 | 330 |
| 264 _garbageCollectButtonClicked: function() | 331 _garbageCollectButtonClicked: function() |
| 265 { | 332 { |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 333 } | 400 } |
| 334 if (truncated || this._refreshIsNeeded) { | 401 if (truncated || this._refreshIsNeeded) { |
| 335 this._refresh(); | 402 this._refresh(); |
| 336 return; | 403 return; |
| 337 } | 404 } |
| 338 | 405 |
| 339 var node = /** @type {!WebInspector.DataGridNode} */ (this._promiseI
dToNode.get(details.id)); | 406 var node = /** @type {!WebInspector.DataGridNode} */ (this._promiseI
dToNode.get(details.id)); |
| 340 var wasVisible = !node || !node._isPromiseHidden; | 407 var wasVisible = !node || !node._isPromiseHidden; |
| 341 | 408 |
| 342 // Check for the fast path on GC events. | 409 // Check for the fast path on GC events. |
| 343 if (eventType === "gc" && node && node.parent && !this._filter.shoul
dHideCollectedPromises()) | 410 if (eventType === "gc" && node && node.parent && !this._hideCollecte
dPromisesSetting.get()) |
| 344 node.update(details); | 411 node.update(details); |
| 345 else | 412 else |
| 346 this._attachDataGridNode(details); | 413 this._attachDataGridNode(details); |
| 347 | 414 |
| 348 var isVisible = this._filter.shouldBeVisible(details, /** @type {!We
bInspector.DataGridNode} */(this._promiseIdToNode.get(details.id))); | 415 var isVisible = this._shouldBeVisible(details, /** @type {!WebInspec
tor.DataGridNode} */(this._promiseIdToNode.get(details.id))); |
| 349 if (wasVisible !== isVisible) { | 416 if (wasVisible !== isVisible) { |
| 350 this._hiddenByFilterCount += wasVisible ? 1 : -1; | 417 this._hiddenByFilterCount += wasVisible ? 1 : -1; |
| 351 this._updateFilterStatus(); | 418 this._updateFilterStatus(); |
| 352 } | 419 } |
| 353 } | 420 } |
| 354 }, | 421 }, |
| 355 | 422 |
| 356 /** | 423 /** |
| 357 * @param {!WebInspector.PromiseDetails} details | 424 * @param {!WebInspector.PromiseDetails} details |
| 358 */ | 425 */ |
| 359 _attachDataGridNode: function(details) | 426 _attachDataGridNode: function(details) |
| 360 { | 427 { |
| 361 var node = this._createDataGridNode(details); | 428 var node = this._createDataGridNode(details); |
| 362 var parentNode = this._findVisibleParentNodeDetails(details); | 429 var parentNode = this._findVisibleParentNodeDetails(details); |
| 363 if (parentNode !== node.parent) | 430 if (parentNode !== node.parent) |
| 364 parentNode.appendChild(node); | 431 parentNode.appendChild(node); |
| 365 if (this._filter.shouldBeVisible(details, node)) | 432 if (this._shouldBeVisible(details, node)) |
| 366 parentNode.expanded = true; | 433 parentNode.expanded = true; |
| 367 else | 434 else |
| 368 node.remove(); | 435 node.remove(); |
| 369 }, | 436 }, |
| 370 | 437 |
| 371 /** | 438 /** |
| 372 * @param {!WebInspector.PromiseDetails} details | 439 * @param {!WebInspector.PromiseDetails} details |
| 373 * @return {!WebInspector.DataGridNode} | 440 * @return {!WebInspector.DataGridNode} |
| 374 */ | 441 */ |
| 375 _findVisibleParentNodeDetails: function(details) | 442 _findVisibleParentNodeDetails: function(details) |
| 376 { | 443 { |
| 377 var promiseIdToDetails = /** @type {!Map.<number, !WebInspector.PromiseD
etails>} */ (this._promiseDetailsByDebuggerModel.get(this._debuggerModel)); | 444 var promiseIdToDetails = /** @type {!Map.<number, !WebInspector.PromiseD
etails>} */ (this._promiseDetailsByDebuggerModel.get(this._debuggerModel)); |
| 378 var currentDetails = details; | 445 var currentDetails = details; |
| 379 while (currentDetails) { | 446 while (currentDetails) { |
| 380 var parentId = currentDetails.parentId; | 447 var parentId = currentDetails.parentId; |
| 381 if (typeof parentId !== "number") | 448 if (typeof parentId !== "number") |
| 382 break; | 449 break; |
| 383 currentDetails = promiseIdToDetails.get(parentId); | 450 currentDetails = promiseIdToDetails.get(parentId); |
| 384 if (!currentDetails) | 451 if (!currentDetails) |
| 385 break; | 452 break; |
| 386 var node = this._promiseIdToNode.get(currentDetails.id); | 453 var node = this._promiseIdToNode.get(currentDetails.id); |
| 387 if (node && this._filter.shouldBeVisible(currentDetails, node)) | 454 if (node && this._shouldBeVisible(currentDetails, node)) |
| 388 return node; | 455 return node; |
| 389 } | 456 } |
| 390 return this._dataGrid.rootNode(); | 457 return this._dataGrid.rootNode(); |
| 391 }, | 458 }, |
| 392 | 459 |
| 393 /** | 460 /** |
| 394 * @param {!WebInspector.PromiseDetails} details | 461 * @param {!WebInspector.PromiseDetails} details |
| 395 * @return {!WebInspector.DataGridNode} | 462 * @return {!WebInspector.DataGridNode} |
| 396 */ | 463 */ |
| 397 _createDataGridNode: function(details) | 464 _createDataGridNode: function(details) |
| (...skipping 19 matching lines...) Expand all Loading... |
| 417 | 484 |
| 418 var rootNode = this._dataGrid.rootNode(); | 485 var rootNode = this._dataGrid.rootNode(); |
| 419 var promiseIdToDetails = /** @type {!Map.<number, !WebInspector.PromiseD
etails>} */ (this._promiseDetailsByDebuggerModel.get(this._debuggerModel)); | 486 var promiseIdToDetails = /** @type {!Map.<number, !WebInspector.PromiseD
etails>} */ (this._promiseDetailsByDebuggerModel.get(this._debuggerModel)); |
| 420 | 487 |
| 421 var nodesToInsert = { __proto__: null }; | 488 var nodesToInsert = { __proto__: null }; |
| 422 // The for..of loop iterates in insertion order. | 489 // The for..of loop iterates in insertion order. |
| 423 for (var pair of promiseIdToDetails) { | 490 for (var pair of promiseIdToDetails) { |
| 424 var id = /** @type {number} */ (pair[0]); | 491 var id = /** @type {number} */ (pair[0]); |
| 425 var details = /** @type {!WebInspector.PromiseDetails} */ (pair[1]); | 492 var details = /** @type {!WebInspector.PromiseDetails} */ (pair[1]); |
| 426 var node = this._createDataGridNode(details); | 493 var node = this._createDataGridNode(details); |
| 427 node._isPromiseHidden = !this._filter.shouldBeVisible(details, node)
; | 494 node._isPromiseHidden = !this._shouldBeVisible(details, node); |
| 428 if (node._isPromiseHidden) { | 495 if (node._isPromiseHidden) { |
| 429 ++this._hiddenByFilterCount; | 496 ++this._hiddenByFilterCount; |
| 430 continue; | 497 continue; |
| 431 } | 498 } |
| 432 nodesToInsert[id] = { details: details, node: node }; | 499 nodesToInsert[id] = { details: details, node: node }; |
| 433 } | 500 } |
| 434 | 501 |
| 435 for (var id in nodesToInsert) { | 502 for (var id in nodesToInsert) { |
| 436 var node = nodesToInsert[id].node; | 503 var node = nodesToInsert[id].node; |
| 437 var details = nodesToInsert[id].details; | 504 var details = nodesToInsert[id].details; |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 721 WebInspector.beautifyFunctionName(details.callFrame ? details.callFr
ame.functionName : ""), | 788 WebInspector.beautifyFunctionName(details.callFrame ? details.callFr
ame.functionName : ""), |
| 722 this._callFrameAnchorTextForSearch(details.callFrame), | 789 this._callFrameAnchorTextForSearch(details.callFrame), |
| 723 this._callFrameAnchorTextForSearch(details.settlementStack ? details
.settlementStack[0] : null), | 790 this._callFrameAnchorTextForSearch(details.settlementStack ? details
.settlementStack[0] : null), |
| 724 this._ttsCellText().replace(/\u2009/g, " ") // \u2009 is a thin spac
e. | 791 this._ttsCellText().replace(/\u2009/g, " ") // \u2009 is a thin spac
e. |
| 725 ]; | 792 ]; |
| 726 return texts.join(" "); | 793 return texts.join(" "); |
| 727 }, | 794 }, |
| 728 | 795 |
| 729 __proto__: WebInspector.ViewportDataGridNode.prototype | 796 __proto__: WebInspector.ViewportDataGridNode.prototype |
| 730 } | 797 } |
| 731 | |
| 732 /** | |
| 733 * @constructor | |
| 734 * @param {function()} filterChanged | |
| 735 */ | |
| 736 WebInspector.PromisePaneFilter = function(filterChanged) | |
| 737 { | |
| 738 this._filterChangedCallback = filterChanged; | |
| 739 this._filterBar = new WebInspector.FilterBar(); | |
| 740 | |
| 741 this._filtersContainer = createElementWithClass("div", "promises-filters-hea
der hidden"); | |
| 742 this._filtersContainer.appendChild(this._filterBar.filtersElement()); | |
| 743 this._filterBar.addEventListener(WebInspector.FilterBar.Events.FiltersToggle
d, this._onFiltersToggled, this); | |
| 744 this._filterBar.setName("promisePane"); | |
| 745 | |
| 746 this._textFilterUI = new WebInspector.TextFilterUI(true); | |
| 747 this._textFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterChang
ed, this._onFilterChanged, this); | |
| 748 this._filterBar.addFilter(this._textFilterUI); | |
| 749 | |
| 750 var statuses = [ | |
| 751 { name: "pending", label: WebInspector.UIString("Pending") }, | |
| 752 { name: "resolved", label: WebInspector.UIString("Fulfilled") }, | |
| 753 { name: "rejected", label: WebInspector.UIString("Rejected") } | |
| 754 ]; | |
| 755 this._promiseStatusFiltersSetting = WebInspector.settings.createSetting("pro
miseStatusFilters", {}); | |
| 756 this._statusFilterUI = new WebInspector.NamedBitSetFilterUI(statuses, this._
promiseStatusFiltersSetting); | |
| 757 this._statusFilterUI.addEventListener(WebInspector.FilterUI.Events.FilterCha
nged, this._onFilterChanged, this); | |
| 758 this._filterBar.addFilter(this._statusFilterUI); | |
| 759 | |
| 760 this._hideCollectedPromisesSetting = WebInspector.settings.createSetting("hi
deCollectedPromises", false); | |
| 761 var hideCollectedCheckbox = new WebInspector.CheckboxFilterUI("hide-collecte
d-promises", WebInspector.UIString("Hide collected promises"), true, this._hideC
ollectedPromisesSetting); | |
| 762 hideCollectedCheckbox.addEventListener(WebInspector.FilterUI.Events.FilterCh
anged, this._onFilterChanged, this); | |
| 763 this._filterBar.addFilter(hideCollectedCheckbox); | |
| 764 } | |
| 765 | |
| 766 WebInspector.PromisePaneFilter.prototype = { | |
| 767 /** | |
| 768 * @return {!WebInspector.ToolbarButton} | |
| 769 */ | |
| 770 filterButton: function() | |
| 771 { | |
| 772 return this._filterBar.filterButton(); | |
| 773 }, | |
| 774 | |
| 775 /** | |
| 776 * @return {!Element} | |
| 777 */ | |
| 778 filtersContainer: function() | |
| 779 { | |
| 780 return this._filtersContainer; | |
| 781 }, | |
| 782 | |
| 783 /** | |
| 784 * @return {boolean} | |
| 785 */ | |
| 786 shouldHideCollectedPromises: function() | |
| 787 { | |
| 788 return this._hideCollectedPromisesSetting.get(); | |
| 789 }, | |
| 790 | |
| 791 /** | |
| 792 * @param {!WebInspector.PromiseDetails} details | |
| 793 * @param {!WebInspector.DataGridNode} node | |
| 794 * @return {boolean} | |
| 795 */ | |
| 796 shouldBeVisible: function(details, node) | |
| 797 { | |
| 798 if (!this._statusFilterUI.accept(details.status)) | |
| 799 return false; | |
| 800 | |
| 801 if (this.shouldHideCollectedPromises() && details.isGarbageCollected) | |
| 802 return false; | |
| 803 | |
| 804 var regex = this._textFilterUI.regex(); | |
| 805 if (!regex) | |
| 806 return true; | |
| 807 | |
| 808 var text = node.dataTextForSearch(); | |
| 809 regex.lastIndex = 0; | |
| 810 return regex.test(text); | |
| 811 }, | |
| 812 | |
| 813 /** | |
| 814 * @param {!WebInspector.Event} event | |
| 815 */ | |
| 816 _onFiltersToggled: function(event) | |
| 817 { | |
| 818 var toggled = /** @type {boolean} */ (event.data); | |
| 819 this._filtersContainer.classList.toggle("hidden", !toggled); | |
| 820 }, | |
| 821 | |
| 822 _onFilterChanged: function() | |
| 823 { | |
| 824 if (this._filterChangedTimeout) | |
| 825 clearTimeout(this._filterChangedTimeout); | |
| 826 this._filterChangedTimeout = setTimeout(onTimerFired.bind(this), 100); | |
| 827 | |
| 828 /** @this {WebInspector.PromisePaneFilter} */ | |
| 829 function onTimerFired() | |
| 830 { | |
| 831 delete this._filterChangedTimeout; | |
| 832 this._filterChangedCallback(); | |
| 833 } | |
| 834 }, | |
| 835 | |
| 836 reset: function() | |
| 837 { | |
| 838 this._hideCollectedPromisesSetting.set(false); | |
| 839 this._promiseStatusFiltersSetting.set({}); | |
| 840 this._textFilterUI.setValue(""); | |
| 841 } | |
| 842 } | |
| OLD | NEW |