| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. | 2 * Copyright (C) 2007, 2008 Apple Inc. All rights reserved. |
| 3 * Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org> | 3 * Copyright (C) 2008, 2009 Anthony Ricaud <rik@webkit.org> |
| 4 * Copyright (C) 2011 Google Inc. All rights reserved. | 4 * Copyright (C) 2011 Google Inc. All rights reserved. |
| 5 * | 5 * |
| 6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
| 7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
| 8 * are met: | 8 * are met: |
| 9 * | 9 * |
| 10 * 1. Redistributions of source code must retain the above copyright | 10 * 1. Redistributions of source code must retain the above copyright |
| (...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 this._popupLinkifier = new WebInspector.Linkifier(); | 83 this._popupLinkifier = new WebInspector.Linkifier(); |
| 84 /** @type {!WebInspector.Linkifier} */ | 84 /** @type {!WebInspector.Linkifier} */ |
| 85 this.linkifier = new WebInspector.Linkifier(); | 85 this.linkifier = new WebInspector.Linkifier(); |
| 86 | 86 |
| 87 this._gridMode = true; | 87 this._gridMode = true; |
| 88 this._recording = false; | 88 this._recording = false; |
| 89 this._preserveLog = false; | 89 this._preserveLog = false; |
| 90 | 90 |
| 91 /** @type {number} */ | 91 /** @type {number} */ |
| 92 this._rowHeight = 0; | 92 this._rowHeight = 0; |
| 93 /** @type {!WebInspector.NetworkTimeCalculator} */ |
| 94 this._calculator = new WebInspector.NetworkTimeCalculator(); |
| 93 | 95 |
| 94 this._addFilters(); | 96 this._addFilters(); |
| 95 this._resetSuggestionBuilder(); | 97 this._resetSuggestionBuilder(); |
| 96 this._initializeView(); | 98 this._initializeView(); |
| 97 | 99 |
| 98 this._overview.addEventListener(WebInspector.NetworkOverview.Events.WindowCh
anged, this._onWindowChanged, this); | 100 this._overview.addEventListener(WebInspector.NetworkOverview.Events.WindowCh
anged, this._onWindowChanged, this); |
| 99 | 101 |
| 100 WebInspector.settings.networkColorCodeResourceTypes.addChangeListener(this._
invalidateAllItems, this); | 102 WebInspector.settings.networkColorCodeResourceTypes.addChangeListener(this._
invalidateAllItems, this); |
| 101 WebInspector.settings.networkLogLargeRows.addChangeListener(this._updateRows
Size, this); | 103 WebInspector.settings.networkLogLargeRows.addChangeListener(this._updateRows
Size, this); |
| 102 | 104 |
| (...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 231 | 233 |
| 232 /** | 234 /** |
| 233 * @param {!WebInspector.Event} event | 235 * @param {!WebInspector.Event} event |
| 234 */ | 236 */ |
| 235 _onWindowChanged: function(event) | 237 _onWindowChanged: function(event) |
| 236 { | 238 { |
| 237 var start = /** @type {number} */ (event.data.start); | 239 var start = /** @type {number} */ (event.data.start); |
| 238 var end = /** @type {number} */ (event.data.end); | 240 var end = /** @type {number} */ (event.data.end); |
| 239 if (!start && !end) { | 241 if (!start && !end) { |
| 240 this._timeFilter = null; | 242 this._timeFilter = null; |
| 241 this._timeCalculator.setWindow(null); | 243 this._calculator.setWindow(null); |
| 242 } else { | 244 } else { |
| 243 this._timeFilter = WebInspector.NetworkLogView._requestTimeFilter.bi
nd(null, start, end); | 245 this._timeFilter = WebInspector.NetworkLogView._requestTimeFilter.bi
nd(null, start, end); |
| 244 this._timeCalculator.setWindow(new WebInspector.NetworkTimeBoundary(
start, end)); | 246 this._calculator.setWindow(new WebInspector.NetworkTimeBoundary(star
t, end)); |
| 245 } | 247 } |
| 246 this._updateDividersIfNeeded(); | 248 this._updateDividersIfNeeded(); |
| 247 this._filterRequests(); | 249 this._filterRequests(); |
| 248 }, | 250 }, |
| 249 | 251 |
| 250 clearSelection: function() | 252 clearSelection: function() |
| 251 { | 253 { |
| 252 if (this._dataGrid.selectedNode) | 254 if (this._dataGrid.selectedNode) |
| 253 this._dataGrid.selectedNode.deselect(); | 255 this._dataGrid.selectedNode.deselect(); |
| 254 }, | 256 }, |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 this._removeAllNodeHighlights(); | 296 this._removeAllNodeHighlights(); |
| 295 this._parseFilterQuery(this._textFilterUI.value()); | 297 this._parseFilterQuery(this._textFilterUI.value()); |
| 296 this._filterRequests(); | 298 this._filterRequests(); |
| 297 }, | 299 }, |
| 298 | 300 |
| 299 _initializeView: function() | 301 _initializeView: function() |
| 300 { | 302 { |
| 301 this.element.id = "network-container"; | 303 this.element.id = "network-container"; |
| 302 | 304 |
| 303 this._createSortingFunctions(); | 305 this._createSortingFunctions(); |
| 304 this._createCalculators(); | |
| 305 this._createTable(); | 306 this._createTable(); |
| 306 this._createTimelineGrid(); | 307 this._createTimelineGrid(); |
| 307 this._summaryBarElement = this.element.createChild("div", "network-summa
ry-bar"); | 308 this._summaryBarElement = this.element.createChild("div", "network-summa
ry-bar"); |
| 308 | 309 |
| 309 this._updateRowsSize(); | 310 this._updateRowsSize(); |
| 310 | 311 |
| 311 this._popoverHelper = new WebInspector.PopoverHelper(this.element, this.
_getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.
bind(this)); | 312 this._popoverHelper = new WebInspector.PopoverHelper(this.element, this.
_getPopoverAnchor.bind(this), this._showPopover.bind(this), this._onHidePopover.
bind(this)); |
| 312 // Enable faster hint. | 313 // Enable faster hint. |
| 313 this._popoverHelper.setTimeout(250, 250); | 314 this._popoverHelper.setTimeout(250, 250); |
| 314 | 315 |
| (...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 458 weight: 6 | 459 weight: 6 |
| 459 }; | 460 }; |
| 460 if (headerName === "Content-Length") | 461 if (headerName === "Content-Length") |
| 461 descriptor.align = WebInspector.DataGrid.Align.Right; | 462 descriptor.align = WebInspector.DataGrid.Align.Right; |
| 462 columns.push(descriptor); | 463 columns.push(descriptor); |
| 463 } | 464 } |
| 464 | 465 |
| 465 columns.push({ | 466 columns.push({ |
| 466 id: "timeline", | 467 id: "timeline", |
| 467 title: WebInspector.NetworkLogView._columnTitles["timeline"], | 468 title: WebInspector.NetworkLogView._columnTitles["timeline"], |
| 468 sortable: false, | 469 sortable: true, |
| 469 weight: 40, | 470 weight: 40, |
| 470 sort: WebInspector.DataGrid.Order.Ascending | 471 sort: WebInspector.DataGrid.Order.Ascending |
| 471 }); | 472 }); |
| 472 | 473 |
| 473 this._dataGrid = new WebInspector.SortableDataGrid(columns); | 474 this._dataGrid = new WebInspector.SortableDataGrid(columns); |
| 474 this._dataGrid.setStickToBottom(true); | 475 this._dataGrid.setStickToBottom(true); |
| 475 this._updateColumns(); | 476 this._updateColumns(); |
| 476 this._dataGrid.setName("networkLog"); | 477 this._dataGrid.setName("networkLog"); |
| 477 this._dataGrid.setResizeMethod(WebInspector.DataGrid.ResizeMethod.Last); | 478 this._dataGrid.setResizeMethod(WebInspector.DataGrid.ResizeMethod.Last); |
| 478 this._dataGrid.element.classList.add("network-log-grid"); | 479 this._dataGrid.element.classList.add("network-log-grid"); |
| 479 this._dataGrid.element.addEventListener("contextmenu", this._contextMenu
.bind(this), true); | 480 this._dataGrid.element.addEventListener("contextmenu", this._contextMenu
.bind(this), true); |
| 480 this._dataGrid.element.addEventListener("mousedown", this._dataGridMouse
Down.bind(this), true); | 481 this._dataGrid.element.addEventListener("mousedown", this._dataGridMouse
Down.bind(this), true); |
| 481 this._dataGrid.element.addEventListener("mousemove", this._mouseMove.bin
d(this), true); | 482 this._dataGrid.element.addEventListener("mousemove", this._mouseMove.bin
d(this), true); |
| 482 this._dataGrid.show(this.element); | 483 this._dataGrid.show(this.element); |
| 483 | 484 |
| 484 // Event listeners need to be added _after_ we attach to the document, s
o that owner document is properly update. | 485 // Event listeners need to be added _after_ we attach to the document, s
o that owner document is properly update. |
| 485 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChan
ged, this._sortItems, this); | 486 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.SortingChan
ged, this._sortItems, this); |
| 486 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.ColumnsResi
zed, this._updateDividersIfNeeded, this); | 487 this._dataGrid.addEventListener(WebInspector.DataGrid.Events.ColumnsResi
zed, this._updateDividersIfNeeded, this); |
| 487 | 488 |
| 488 this._patchTimelineHeader(); | 489 this._sortItems(); |
| 489 this._dataGrid.sortNodes(this._sortingFunctions.startTime, false); | |
| 490 }, | 490 }, |
| 491 | 491 |
| 492 /** | 492 /** |
| 493 * @param {!Event} event | 493 * @param {!Event} event |
| 494 */ | 494 */ |
| 495 _dataGridMouseDown: function(event) | 495 _dataGridMouseDown: function(event) |
| 496 { | 496 { |
| 497 if ((!this._dataGrid.selectedNode && event.button) || event.target.enclo
singNodeOrSelfWithNodeName("a")) | 497 if ((!this._dataGrid.selectedNode && event.button) || event.target.enclo
singNodeOrSelfWithNodeName("a")) |
| 498 event.consume(); | 498 event.consume(); |
| 499 }, | 499 }, |
| (...skipping 24 matching lines...) Expand all Loading... |
| 524 */ | 524 */ |
| 525 _makeHeaderFragment: function(title, subtitle) | 525 _makeHeaderFragment: function(title, subtitle) |
| 526 { | 526 { |
| 527 var fragment = createDocumentFragment(); | 527 var fragment = createDocumentFragment(); |
| 528 fragment.createTextChild(title); | 528 fragment.createTextChild(title); |
| 529 var subtitleDiv = fragment.createChild("div", "network-header-subtitle")
; | 529 var subtitleDiv = fragment.createChild("div", "network-header-subtitle")
; |
| 530 subtitleDiv.createTextChild(subtitle); | 530 subtitleDiv.createTextChild(subtitle); |
| 531 return fragment; | 531 return fragment; |
| 532 }, | 532 }, |
| 533 | 533 |
| 534 _patchTimelineHeader: function() | |
| 535 { | |
| 536 var timelineSorting = createElement("select"); | |
| 537 | |
| 538 var option = createElement("option"); | |
| 539 option.value = "startTime"; | |
| 540 option.label = WebInspector.UIString("Timeline"); | |
| 541 timelineSorting.appendChild(option); | |
| 542 | |
| 543 option = createElement("option"); | |
| 544 option.value = "startTime"; | |
| 545 option.label = WebInspector.UIString("Start Time"); | |
| 546 timelineSorting.appendChild(option); | |
| 547 | |
| 548 option = createElement("option"); | |
| 549 option.value = "responseTime"; | |
| 550 option.label = WebInspector.UIString("Response Time"); | |
| 551 timelineSorting.appendChild(option); | |
| 552 | |
| 553 option = createElement("option"); | |
| 554 option.value = "endTime"; | |
| 555 option.label = WebInspector.UIString("End Time"); | |
| 556 timelineSorting.appendChild(option); | |
| 557 | |
| 558 option = createElement("option"); | |
| 559 option.value = "duration"; | |
| 560 option.label = WebInspector.UIString("Duration"); | |
| 561 timelineSorting.appendChild(option); | |
| 562 | |
| 563 option = createElement("option"); | |
| 564 option.value = "latency"; | |
| 565 option.label = WebInspector.UIString("Latency"); | |
| 566 timelineSorting.appendChild(option); | |
| 567 | |
| 568 var header = this._dataGrid.headerTableHeader("timeline"); | |
| 569 header.replaceChild(timelineSorting, header.firstChild); | |
| 570 | |
| 571 timelineSorting.addEventListener("click", function(event) { event.consum
e(); }, false); | |
| 572 timelineSorting.addEventListener("change", this._sortByTimeline.bind(thi
s), false); | |
| 573 this._timelineSortSelector = timelineSorting; | |
| 574 }, | |
| 575 | |
| 576 _createSortingFunctions: function() | 534 _createSortingFunctions: function() |
| 577 { | 535 { |
| 578 this._sortingFunctions = {}; | 536 this._sortingFunctions = {}; |
| 579 this._sortingFunctions.name = WebInspector.NetworkDataGridNode.NameCompa
rator; | 537 this._sortingFunctions.name = WebInspector.NetworkDataGridNode.NameCompa
rator; |
| 580 this._sortingFunctions.method = WebInspector.NetworkDataGridNode.Request
PropertyComparator.bind(null, "method", false); | 538 this._sortingFunctions.method = WebInspector.NetworkDataGridNode.Request
PropertyComparator.bind(null, "method", false); |
| 581 this._sortingFunctions.status = WebInspector.NetworkDataGridNode.Request
PropertyComparator.bind(null, "statusCode", false); | 539 this._sortingFunctions.status = WebInspector.NetworkDataGridNode.Request
PropertyComparator.bind(null, "statusCode", false); |
| 582 this._sortingFunctions.protocol = WebInspector.NetworkDataGridNode.Reque
stPropertyComparator.bind(null, "protocol", false); | 540 this._sortingFunctions.protocol = WebInspector.NetworkDataGridNode.Reque
stPropertyComparator.bind(null, "protocol", false); |
| 583 this._sortingFunctions.scheme = WebInspector.NetworkDataGridNode.Request
PropertyComparator.bind(null, "scheme", false); | 541 this._sortingFunctions.scheme = WebInspector.NetworkDataGridNode.Request
PropertyComparator.bind(null, "scheme", false); |
| 584 this._sortingFunctions.domain = WebInspector.NetworkDataGridNode.Request
PropertyComparator.bind(null, "domain", false); | 542 this._sortingFunctions.domain = WebInspector.NetworkDataGridNode.Request
PropertyComparator.bind(null, "domain", false); |
| 585 this._sortingFunctions.remoteAddress = WebInspector.NetworkDataGridNode.
RemoteAddressComparator; | 543 this._sortingFunctions.remoteAddress = WebInspector.NetworkDataGridNode.
RemoteAddressComparator; |
| 586 this._sortingFunctions.type = WebInspector.NetworkDataGridNode.RequestPr
opertyComparator.bind(null, "mimeType", false); | 544 this._sortingFunctions.type = WebInspector.NetworkDataGridNode.RequestPr
opertyComparator.bind(null, "mimeType", false); |
| 587 this._sortingFunctions.initiator = WebInspector.NetworkDataGridNode.Init
iatorComparator; | 545 this._sortingFunctions.initiator = WebInspector.NetworkDataGridNode.Init
iatorComparator; |
| 588 this._sortingFunctions.cookies = WebInspector.NetworkDataGridNode.Reques
tCookiesCountComparator; | 546 this._sortingFunctions.cookies = WebInspector.NetworkDataGridNode.Reques
tCookiesCountComparator; |
| 589 this._sortingFunctions.setCookies = WebInspector.NetworkDataGridNode.Res
ponseCookiesCountComparator; | 547 this._sortingFunctions.setCookies = WebInspector.NetworkDataGridNode.Res
ponseCookiesCountComparator; |
| 590 this._sortingFunctions.size = WebInspector.NetworkDataGridNode.SizeCompa
rator; | 548 this._sortingFunctions.size = WebInspector.NetworkDataGridNode.SizeCompa
rator; |
| 591 this._sortingFunctions.time = WebInspector.NetworkDataGridNode.RequestPr
opertyComparator.bind(null, "duration", false); | 549 this._sortingFunctions.time = WebInspector.NetworkDataGridNode.RequestPr
opertyComparator.bind(null, "duration", false); |
| 592 this._sortingFunctions.connectionId = WebInspector.NetworkDataGridNode.R
equestPropertyComparator.bind(null, "connectionId", false); | 550 this._sortingFunctions.connectionId = WebInspector.NetworkDataGridNode.R
equestPropertyComparator.bind(null, "connectionId", false); |
| 593 this._sortingFunctions.timeline = WebInspector.NetworkDataGridNode.Reque
stPropertyComparator.bind(null, "startTime", false); | 551 this._sortingFunctions.timeline = WebInspector.NetworkDataGridNode.Reque
stPropertyComparator.bind(null, "startTime", false); |
| 594 this._sortingFunctions.startTime = WebInspector.NetworkDataGridNode.Requ
estPropertyComparator.bind(null, "startTime", false); | |
| 595 this._sortingFunctions.endTime = WebInspector.NetworkDataGridNode.Reques
tPropertyComparator.bind(null, "endTime", false); | |
| 596 this._sortingFunctions.responseTime = WebInspector.NetworkDataGridNode.R
equestPropertyComparator.bind(null, "responseReceivedTime", false); | |
| 597 this._sortingFunctions.duration = WebInspector.NetworkDataGridNode.Reque
stPropertyComparator.bind(null, "duration", true); | |
| 598 this._sortingFunctions.latency = WebInspector.NetworkDataGridNode.Reques
tPropertyComparator.bind(null, "latency", true); | |
| 599 }, | |
| 600 | |
| 601 _createCalculators: function() | |
| 602 { | |
| 603 /** @type {!WebInspector.NetworkTransferTimeCalculator} */ | |
| 604 this._timeCalculator = new WebInspector.NetworkTransferTimeCalculator(); | |
| 605 /** @type {!WebInspector.NetworkTransferDurationCalculator} */ | |
| 606 this._durationCalculator = new WebInspector.NetworkTransferDurationCalcu
lator(); | |
| 607 | |
| 608 /** @type {!Object.<string, !WebInspector.NetworkTimeCalculator>} */ | |
| 609 this._calculators = {}; | |
| 610 this._calculators.timeline = this._timeCalculator; | |
| 611 this._calculators.startTime = this._timeCalculator; | |
| 612 this._calculators.endTime = this._timeCalculator; | |
| 613 this._calculators.responseTime = this._timeCalculator; | |
| 614 this._calculators.duration = this._durationCalculator; | |
| 615 this._calculators.latency = this._durationCalculator; | |
| 616 | |
| 617 this._calculator = this._timeCalculator; | |
| 618 }, | 552 }, |
| 619 | 553 |
| 620 _sortItems: function() | 554 _sortItems: function() |
| 621 { | 555 { |
| 622 this._removeAllNodeHighlights(); | 556 this._removeAllNodeHighlights(); |
| 623 var columnIdentifier = this._dataGrid.sortColumnIdentifier(); | 557 var columnIdentifier = this._dataGrid.sortColumnIdentifier(); |
| 624 if (columnIdentifier === "timeline") { | |
| 625 this._sortByTimeline(); | |
| 626 return; | |
| 627 } | |
| 628 var sortingFunction = this._sortingFunctions[columnIdentifier]; | 558 var sortingFunction = this._sortingFunctions[columnIdentifier]; |
| 629 if (!sortingFunction) | 559 if (!sortingFunction) |
| 630 return; | 560 return; |
| 631 | 561 |
| 632 this._dataGrid.sortNodes(sortingFunction, !this._dataGrid.isSortOrderAsc
ending()); | 562 this._dataGrid.sortNodes(sortingFunction, !this._dataGrid.isSortOrderAsc
ending()); |
| 633 this._highlightNthMatchedRequestForSearch(this._updateMatchCountAndFindM
atchIndex(this._currentMatchedRequestNode), false); | 563 this._highlightNthMatchedRequestForSearch(this._updateMatchCountAndFindM
atchIndex(this._currentMatchedRequestNode), false); |
| 634 this._timelineSortSelector.selectedIndex = 0; | |
| 635 | 564 |
| 636 WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMet
rics.UserAction, { | 565 WebInspector.notifications.dispatchEventToListeners(WebInspector.UserMet
rics.UserAction, { |
| 637 action: WebInspector.UserMetrics.UserActionNames.NetworkSort, | 566 action: WebInspector.UserMetrics.UserActionNames.NetworkSort, |
| 638 column: columnIdentifier, | 567 column: columnIdentifier, |
| 639 sortOrder: this._dataGrid.sortOrder() | 568 sortOrder: this._dataGrid.sortOrder() |
| 640 }); | 569 }); |
| 641 }, | 570 }, |
| 642 | 571 |
| 643 _sortByTimeline: function() | |
| 644 { | |
| 645 this._removeAllNodeHighlights(); | |
| 646 var selectedIndex = this._timelineSortSelector.selectedIndex; | |
| 647 if (!selectedIndex) | |
| 648 selectedIndex = 1; // Sort by start time by default. | |
| 649 var selectedOption = this._timelineSortSelector[selectedIndex]; | |
| 650 var value = selectedOption.value; | |
| 651 | |
| 652 this._setCalculator(this._calculators[value]); | |
| 653 var sortingFunction = this._sortingFunctions[value]; | |
| 654 this._dataGrid.sortNodes(sortingFunction); | |
| 655 this._highlightNthMatchedRequestForSearch(this._updateMatchCountAndFindM
atchIndex(this._currentMatchedRequestNode), false); | |
| 656 this._dataGrid.markColumnAsSortedBy("timeline", WebInspector.DataGrid.Or
der.Ascending); | |
| 657 }, | |
| 658 | |
| 659 _updateSummaryBar: function() | 572 _updateSummaryBar: function() |
| 660 { | 573 { |
| 661 var requestsNumber = this._nodesByRequestId.size; | 574 var requestsNumber = this._nodesByRequestId.size; |
| 662 | 575 |
| 663 if (!requestsNumber) { | 576 if (!requestsNumber) { |
| 664 if (this._summaryBarElement._isDisplayingWarning) | 577 if (this._summaryBarElement._isDisplayingWarning) |
| 665 return; | 578 return; |
| 666 this._summaryBarElement._isDisplayingWarning = true; | 579 this._summaryBarElement._isDisplayingWarning = true; |
| 667 this._summaryBarElement.removeChildren(); | 580 this._summaryBarElement.removeChildren(); |
| 668 this._summaryBarElement.createChild("label", "", "dt-icon-label").ty
pe = "warning-icon"; | 581 this._summaryBarElement.createChild("label", "", "dt-icon-label").ty
pe = "warning-icon"; |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 | 668 |
| 756 var timelineOffset = this._dataGrid.columnOffset("timeline"); | 669 var timelineOffset = this._dataGrid.columnOffset("timeline"); |
| 757 // Position timline grid location. | 670 // Position timline grid location. |
| 758 if (timelineOffset) | 671 if (timelineOffset) |
| 759 this._timelineGrid.element.style.left = timelineOffset + "px"; | 672 this._timelineGrid.element.style.left = timelineOffset + "px"; |
| 760 | 673 |
| 761 var calculator = this.calculator(); | 674 var calculator = this.calculator(); |
| 762 calculator.setDisplayWindow(this._timelineGrid.dividersElement.clientWid
th); | 675 calculator.setDisplayWindow(this._timelineGrid.dividersElement.clientWid
th); |
| 763 this._timelineGrid.updateDividers(calculator, 50); | 676 this._timelineGrid.updateDividers(calculator, 50); |
| 764 | 677 |
| 765 if (calculator.startAtZero) { | |
| 766 // If our current sorting method starts at zero, that means it shows
all | |
| 767 // requests starting at the same point, and so onLoad event and DOMC
ontent | |
| 768 // event lines really wouldn't make much sense here, so don't render
them. | |
| 769 return; | |
| 770 } | |
| 771 | |
| 772 this._updateEventDividers(); | 678 this._updateEventDividers(); |
| 773 }, | 679 }, |
| 774 | 680 |
| 775 _updateEventDividers: function() | 681 _updateEventDividers: function() |
| 776 { | 682 { |
| 777 var calculator = this.calculator(); | 683 var calculator = this.calculator(); |
| 778 | 684 |
| 779 var selectedFrameTime = this._showSelectedFrame ? this._selectedFrameTim
e : -1; | 685 var selectedFrameTime = this._showSelectedFrame ? this._selectedFrameTim
e : -1; |
| 780 var selectedFrameTimePercent = calculator.computePercentageFromEventTime
(selectedFrameTime); | 686 var selectedFrameTimePercent = calculator.computePercentageFromEventTime
(selectedFrameTime); |
| 781 this._selectedFrameDivider.classList.toggle("invisible", selectedFrameTi
me === -1 || selectedFrameTimePercent < 0); | 687 this._selectedFrameDivider.classList.toggle("invisible", selectedFrameTi
me === -1 || selectedFrameTimePercent < 0); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 800 { | 706 { |
| 801 var requestIds = this._nodesByRequestId.keysArray(); | 707 var requestIds = this._nodesByRequestId.keysArray(); |
| 802 for (var i = 0; i < requestIds.length; ++i) | 708 for (var i = 0; i < requestIds.length; ++i) |
| 803 this._staleRequestIds[requestIds[i]] = true; | 709 this._staleRequestIds[requestIds[i]] = true; |
| 804 this.refresh(); | 710 this.refresh(); |
| 805 }, | 711 }, |
| 806 | 712 |
| 807 /** | 713 /** |
| 808 * @return {!WebInspector.NetworkTimeCalculator} | 714 * @return {!WebInspector.NetworkTimeCalculator} |
| 809 */ | 715 */ |
| 810 timeCalculator: function() | |
| 811 { | |
| 812 return this._timeCalculator; | |
| 813 }, | |
| 814 | |
| 815 /** | |
| 816 * @return {!WebInspector.NetworkTimeCalculator} | |
| 817 */ | |
| 818 calculator: function() | 716 calculator: function() |
| 819 { | 717 { |
| 820 return this._calculator; | 718 return this._calculator; |
| 821 }, | 719 }, |
| 822 | 720 |
| 823 /** | 721 /** |
| 824 * @param {!WebInspector.NetworkTimeCalculator} x | |
| 825 */ | |
| 826 _setCalculator: function(x) | |
| 827 { | |
| 828 if (!x || this._calculator === x) | |
| 829 return; | |
| 830 | |
| 831 this._calculator = x; | |
| 832 this._calculator.reset(); | |
| 833 | |
| 834 if (this._calculator.startAtZero) | |
| 835 this._timelineGrid.hideEventDividers(); | |
| 836 else | |
| 837 this._timelineGrid.showEventDividers(); | |
| 838 | |
| 839 this._invalidateAllItems(); | |
| 840 }, | |
| 841 | |
| 842 /** | |
| 843 * @param {!WebInspector.Event} event | 722 * @param {!WebInspector.Event} event |
| 844 */ | 723 */ |
| 845 _loadEventFired: function(event) | 724 _loadEventFired: function(event) |
| 846 { | 725 { |
| 847 if (!this._recording) | 726 if (!this._recording) |
| 848 return; | 727 return; |
| 849 | 728 |
| 850 var data = /** @type {number} */ (event.data); | 729 var data = /** @type {number} */ (event.data); |
| 851 this._mainRequestLoadTime = data || -1; | 730 this._mainRequestLoadTime = data || -1; |
| 852 // Schedule refresh to update boundaries and draw the new line. | 731 // Schedule refresh to update boundaries and draw the new line. |
| (...skipping 27 matching lines...) Expand all Loading... |
| 880 { | 759 { |
| 881 this._needsRefresh = false; | 760 this._needsRefresh = false; |
| 882 if (this._refreshTimeout) { | 761 if (this._refreshTimeout) { |
| 883 clearTimeout(this._refreshTimeout); | 762 clearTimeout(this._refreshTimeout); |
| 884 delete this._refreshTimeout; | 763 delete this._refreshTimeout; |
| 885 } | 764 } |
| 886 | 765 |
| 887 this._removeAllNodeHighlights(); | 766 this._removeAllNodeHighlights(); |
| 888 | 767 |
| 889 var oldBoundary = this.calculator().boundary(); | 768 var oldBoundary = this.calculator().boundary(); |
| 890 this._timeCalculator.updateBoundariesForEventTime(this._mainRequestLoadT
ime); | 769 this._calculator.updateBoundariesForEventTime(this._mainRequestLoadTime)
; |
| 891 this._durationCalculator.updateBoundariesForEventTime(this._mainRequestL
oadTime); | 770 this._calculator.updateBoundariesForEventTime(this._mainRequestDOMConten
tLoadedTime); |
| 892 this._timeCalculator.updateBoundariesForEventTime(this._mainRequestDOMCo
ntentLoadedTime); | |
| 893 this._durationCalculator.updateBoundariesForEventTime(this._mainRequestD
OMContentLoadedTime); | |
| 894 | 771 |
| 895 var dataGrid = this._dataGrid; | 772 var dataGrid = this._dataGrid; |
| 896 var rootNode = dataGrid.rootNode(); | 773 var rootNode = dataGrid.rootNode(); |
| 897 var nodesToInsert = []; | 774 var nodesToInsert = []; |
| 898 for (var requestId in this._staleRequestIds) { | 775 for (var requestId in this._staleRequestIds) { |
| 899 var node = this._nodesByRequestId.get(requestId); | 776 var node = this._nodesByRequestId.get(requestId); |
| 900 if (!node) | 777 if (!node) |
| 901 continue; | 778 continue; |
| 902 if (!node[WebInspector.NetworkLogView._isFilteredOutSymbol]) | 779 if (!node[WebInspector.NetworkLogView._isFilteredOutSymbol]) |
| 903 rootNode.removeChild(node); | 780 rootNode.removeChild(node); |
| 904 node[WebInspector.NetworkLogView._isFilteredOutSymbol] = !this._appl
yFilter(node); | 781 node[WebInspector.NetworkLogView._isFilteredOutSymbol] = !this._appl
yFilter(node); |
| 905 if (!node[WebInspector.NetworkLogView._isFilteredOutSymbol]) | 782 if (!node[WebInspector.NetworkLogView._isFilteredOutSymbol]) |
| 906 nodesToInsert.push(node); | 783 nodesToInsert.push(node); |
| 907 var request = node.request(); | 784 var request = node.request(); |
| 908 this._timeCalculator.updateBoundaries(request); | 785 this._calculator.updateBoundaries(request); |
| 909 this._durationCalculator.updateBoundaries(request); | |
| 910 } | 786 } |
| 911 | 787 |
| 912 for (var i = 0; i < nodesToInsert.length; ++i) { | 788 for (var i = 0; i < nodesToInsert.length; ++i) { |
| 913 var node = nodesToInsert[i]; | 789 var node = nodesToInsert[i]; |
| 914 var request = node.request(); | 790 var request = node.request(); |
| 915 node.refresh(); | 791 node.refresh(); |
| 916 dataGrid.insertChild(node); | 792 dataGrid.insertChild(node); |
| 917 node[WebInspector.NetworkLogView._isMatchingSearchQuerySymbol] = thi
s._matchRequest(request); | 793 node[WebInspector.NetworkLogView._isMatchingSearchQuerySymbol] = thi
s._matchRequest(request); |
| 918 } | 794 } |
| 919 | 795 |
| 920 this._highlightNthMatchedRequestForSearch(this._updateMatchCountAndFindM
atchIndex(this._currentMatchedRequestNode), false); | 796 this._highlightNthMatchedRequestForSearch(this._updateMatchCountAndFindM
atchIndex(this._currentMatchedRequestNode), false); |
| 921 | 797 |
| 922 if (this._shouldSetWaterfallWindow && this._mainRequestLoadTime !== -1)
{ | 798 if (this._shouldSetWaterfallWindow && this._mainRequestLoadTime !== -1)
{ |
| 923 var waterfallWindow = this.calculator().boundary(); | 799 var waterfallWindow = this.calculator().boundary(); |
| 924 var overtime = this._mainRequestLoadTime - waterfallWindow.minimum; | 800 var overtime = this._mainRequestLoadTime - waterfallWindow.minimum; |
| 925 overtime = Number.constrain(overtime, WebInspector.NetworkLogView._w
aterfallMinOvertime, WebInspector.NetworkLogView._waterfallMaxOvertime) | 801 overtime = Number.constrain(overtime, WebInspector.NetworkLogView._w
aterfallMinOvertime, WebInspector.NetworkLogView._waterfallMaxOvertime) |
| 926 var waterfallEnd = this._mainRequestLoadTime + overtime; | 802 var waterfallEnd = this._mainRequestLoadTime + overtime; |
| 927 if (waterfallEnd <= waterfallWindow.maximum) { | 803 if (waterfallEnd <= waterfallWindow.maximum) { |
| 928 waterfallWindow.maximum = waterfallEnd; | 804 waterfallWindow.maximum = waterfallEnd; |
| 929 this._shouldSetWaterfallWindow = false; | 805 this._shouldSetWaterfallWindow = false; |
| 930 this._timeCalculator.setWindow(waterfallWindow); | 806 this._calculator.setWindow(waterfallWindow); |
| 931 } | 807 } |
| 932 } | 808 } |
| 933 | 809 |
| 934 if (!this.calculator().boundary().equals(oldBoundary)) { | 810 if (!this.calculator().boundary().equals(oldBoundary)) { |
| 935 // The boundaries changed, so all item graphs are stale. | 811 // The boundaries changed, so all item graphs are stale. |
| 936 this._updateDividersIfNeeded(); | 812 this._updateDividersIfNeeded(); |
| 937 var nodes = this._nodesByRequestId.valuesArray(); | 813 var nodes = this._nodesByRequestId.valuesArray(); |
| 938 for (var i = 0; i < nodes.length; ++i) | 814 for (var i = 0; i < nodes.length; ++i) |
| 939 nodes[i].refreshGraph(); | 815 nodes[i].refreshGraph(); |
| 940 } | 816 } |
| (...skipping 10 matching lines...) Expand all Loading... |
| 951 this._shouldSetWaterfallWindow = Runtime.experiments.isEnabled("showPrim
aryLoadWaterfallInNetworkTimeline") && WebInspector.settings.networkShowPrimaryL
oadWaterfall.get(); | 827 this._shouldSetWaterfallWindow = Runtime.experiments.isEnabled("showPrim
aryLoadWaterfallInNetworkTimeline") && WebInspector.settings.networkShowPrimaryL
oadWaterfall.get(); |
| 952 | 828 |
| 953 this._clearSearchMatchedList(); | 829 this._clearSearchMatchedList(); |
| 954 if (this._popoverHelper) | 830 if (this._popoverHelper) |
| 955 this._popoverHelper.hidePopover(); | 831 this._popoverHelper.hidePopover(); |
| 956 | 832 |
| 957 this._overview.reset(); | 833 this._overview.reset(); |
| 958 this._timeFilter = null; | 834 this._timeFilter = null; |
| 959 this._calculator.reset(); | 835 this._calculator.reset(); |
| 960 | 836 |
| 961 this._timeCalculator.setWindow(null); | 837 this._calculator.setWindow(null); |
| 962 | 838 |
| 963 var nodes = this._nodesByRequestId.valuesArray(); | 839 var nodes = this._nodesByRequestId.valuesArray(); |
| 964 for (var i = 0; i < nodes.length; ++i) | 840 for (var i = 0; i < nodes.length; ++i) |
| 965 nodes[i].dispose(); | 841 nodes[i].dispose(); |
| 966 | 842 |
| 967 this._nodesByRequestId.clear(); | 843 this._nodesByRequestId.clear(); |
| 968 this._staleRequestIds = {}; | 844 this._staleRequestIds = {}; |
| 969 this._resetSuggestionBuilder(); | 845 this._resetSuggestionBuilder(); |
| 970 | 846 |
| 971 this._selectedFrameTime = -1; | 847 this._selectedFrameTime = -1; |
| (...skipping 187 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1159 */ | 1035 */ |
| 1160 _showPopover: function(anchor, popover) | 1036 _showPopover: function(anchor, popover) |
| 1161 { | 1037 { |
| 1162 var content; | 1038 var content; |
| 1163 if (anchor.classList.contains("network-script-initiated")) { | 1039 if (anchor.classList.contains("network-script-initiated")) { |
| 1164 var request = /** @type {!WebInspector.NetworkRequest} */ (anchor.re
quest); | 1040 var request = /** @type {!WebInspector.NetworkRequest} */ (anchor.re
quest); |
| 1165 var initiator = /** @type {!NetworkAgent.Initiator} */ (request.init
iator()); | 1041 var initiator = /** @type {!NetworkAgent.Initiator} */ (request.init
iator()); |
| 1166 content = WebInspector.DOMPresentationUtils.buildStackTracePreviewCo
ntents(request.target(), this._popupLinkifier, initiator.stackTrace, initiator.a
syncStackTrace); | 1042 content = WebInspector.DOMPresentationUtils.buildStackTracePreviewCo
ntents(request.target(), this._popupLinkifier, initiator.stackTrace, initiator.a
syncStackTrace); |
| 1167 popover.setCanShrink(true); | 1043 popover.setCanShrink(true); |
| 1168 } else { | 1044 } else { |
| 1169 content = WebInspector.RequestTimingView.createTimingTable(anchor.pa
rentElement.request, this._timeCalculator.minimumBoundary()); | 1045 content = WebInspector.RequestTimingView.createTimingTable(anchor.pa
rentElement.request, this._calculator.minimumBoundary()); |
| 1170 popover.setCanShrink(false); | 1046 popover.setCanShrink(false); |
| 1171 } | 1047 } |
| 1172 popover.showForAnchor(content, anchor); | 1048 popover.showForAnchor(content, anchor); |
| 1173 }, | 1049 }, |
| 1174 | 1050 |
| 1175 _onHidePopover: function() | 1051 _onHidePopover: function() |
| 1176 { | 1052 { |
| 1177 this._popupLinkifier.reset(); | 1053 this._popupLinkifier.reset(); |
| 1178 }, | 1054 }, |
| 1179 | 1055 |
| (...skipping 856 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2036 return false; | 1912 return false; |
| 2037 return true; | 1913 return true; |
| 2038 } | 1914 } |
| 2039 | 1915 |
| 2040 WebInspector.NetworkLogView.EventTypes = { | 1916 WebInspector.NetworkLogView.EventTypes = { |
| 2041 RequestSelected: "RequestSelected", | 1917 RequestSelected: "RequestSelected", |
| 2042 SearchCountUpdated: "SearchCountUpdated", | 1918 SearchCountUpdated: "SearchCountUpdated", |
| 2043 SearchIndexUpdated: "SearchIndexUpdated", | 1919 SearchIndexUpdated: "SearchIndexUpdated", |
| 2044 TimeHovered: "TimeHovered" | 1920 TimeHovered: "TimeHovered" |
| 2045 }; | 1921 }; |
| OLD | NEW |