Chromium Code Reviews| 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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 64 function updateRowHeight() { | 64 function updateRowHeight() { |
| 65 /** @type {number} */ | 65 /** @type {number} */ |
| 66 this._rawRowHeight = !!this._networkLogLargeRowsSetting.get() ? 41 : 21; | 66 this._rawRowHeight = !!this._networkLogLargeRowsSetting.get() ? 41 : 21; |
| 67 this._updateRowHeight(); | 67 this._updateRowHeight(); |
| 68 } | 68 } |
| 69 updateRowHeight.call(this); | 69 updateRowHeight.call(this); |
| 70 | 70 |
| 71 this._columns = new Network.NetworkLogViewColumns( | 71 this._columns = new Network.NetworkLogViewColumns( |
| 72 this, this._timeCalculator, this._durationCalculator, networkLogLargeRow sSetting); | 72 this, this._timeCalculator, this._durationCalculator, networkLogLargeRow sSetting); |
| 73 | 73 |
| 74 /** @type {!Map.<string, !Network.NetworkRequestNode>} */ | 74 /** @type {!Set<!SDK.NetworkRequest>} */ |
| 75 this._nodesByRequestId = new Map(); | 75 this._staleRequests = new Set(); |
| 76 /** @type {!Object.<string, boolean>} */ | |
| 77 this._staleRequestIds = {}; | |
| 78 /** @type {number} */ | 76 /** @type {number} */ |
| 79 this._mainRequestLoadTime = -1; | 77 this._mainRequestLoadTime = -1; |
| 80 /** @type {number} */ | 78 /** @type {number} */ |
| 81 this._mainRequestDOMContentLoadedTime = -1; | 79 this._mainRequestDOMContentLoadedTime = -1; |
| 82 this._matchedRequestCount = 0; | 80 this._matchedRequestCount = 0; |
| 83 this._highlightedSubstringChanges = []; | 81 this._highlightedSubstringChanges = []; |
| 84 | 82 |
| 85 /** @type {!Array.<!Network.NetworkLogView.Filter>} */ | 83 /** @type {!Array.<!Network.NetworkLogView.Filter>} */ |
| 86 this._filters = []; | 84 this._filters = []; |
| 87 /** @type {?Network.NetworkLogView.Filter} */ | 85 /** @type {?Network.NetworkLogView.Filter} */ |
| (...skipping 19 matching lines...) Expand all Loading... | |
| 107 this._activeGroupLookup = null; | 105 this._activeGroupLookup = null; |
| 108 | 106 |
| 109 this._addFilters(); | 107 this._addFilters(); |
| 110 this._resetSuggestionBuilder(); | 108 this._resetSuggestionBuilder(); |
| 111 this._initializeView(); | 109 this._initializeView(); |
| 112 | 110 |
| 113 Common.moduleSetting('networkColorCodeResourceTypes') | 111 Common.moduleSetting('networkColorCodeResourceTypes') |
| 114 .addChangeListener(this._invalidateAllItems.bind(this, false), this); | 112 .addChangeListener(this._invalidateAllItems.bind(this, false), this); |
| 115 | 113 |
| 116 SDK.targetManager.observeModels(SDK.NetworkManager, this); | 114 SDK.targetManager.observeModels(SDK.NetworkManager, this); |
| 117 SDK.targetManager.addModelListener( | 115 NetworkLog.networkLog.addEventListener(NetworkLog.NetworkLog.Events.RequestA dded, this._onRequestUpdated, this); |
| 118 SDK.NetworkManager, SDK.NetworkManager.Events.RequestStarted, this._onRe questStarted, this); | 116 NetworkLog.networkLog.addEventListener(NetworkLog.NetworkLog.Events.RequestU pdated, this._onRequestUpdated, this); |
| 119 SDK.targetManager.addModelListener( | 117 NetworkLog.networkLog.addEventListener(NetworkLog.NetworkLog.Events.Reset, t his._reset.bind(this)); |
|
dgozman
2017/06/01 20:56:27
this._reset, this
allada
2017/06/02 01:02:43
Done.
| |
| 120 SDK.NetworkManager, SDK.NetworkManager.Events.RequestUpdated, this._onRe questUpdated, this); | 118 NetworkLog.networkLog.addEventListener(NetworkLog.NetworkLog.Events.RequestR emoved, this._onRequestRemoved, this); |
| 121 SDK.targetManager.addModelListener( | |
| 122 SDK.NetworkManager, SDK.NetworkManager.Events.RequestFinished, this._onR equestUpdated, this); | |
| 123 | 119 |
| 124 this._updateGroupByFrame(); | 120 this._updateGroupByFrame(); |
| 125 Common.moduleSetting('network.group-by-frame').addChangeListener(() => this. _updateGroupByFrame()); | 121 Common.moduleSetting('network.group-by-frame').addChangeListener(() => this. _updateGroupByFrame()); |
| 126 } | 122 } |
| 127 | 123 |
| 128 _updateGroupByFrame() { | 124 _updateGroupByFrame() { |
| 129 var value = Common.moduleSetting('network.group-by-frame').get(); | 125 var value = Common.moduleSetting('network.group-by-frame').get(); |
| 130 this._setGrouping(value ? 'Frame' : null); | 126 this._setGrouping(value ? 'Frame' : null); |
| 131 } | 127 } |
| 132 | 128 |
| (...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 372 | 368 |
| 373 _updateRowHeight() { | 369 _updateRowHeight() { |
| 374 this._rowHeight = Math.floor(this._rawRowHeight * window.devicePixelRatio) / window.devicePixelRatio; | 370 this._rowHeight = Math.floor(this._rawRowHeight * window.devicePixelRatio) / window.devicePixelRatio; |
| 375 } | 371 } |
| 376 | 372 |
| 377 /** | 373 /** |
| 378 * @param {!SDK.NetworkRequest} request | 374 * @param {!SDK.NetworkRequest} request |
| 379 * @return {?Network.NetworkRequestNode} | 375 * @return {?Network.NetworkRequestNode} |
| 380 */ | 376 */ |
| 381 nodeForRequest(request) { | 377 nodeForRequest(request) { |
| 382 return this._nodesByRequestId.get(request.requestId()); | 378 return request[Network.NetworkLogView._networkNodeSymbol] || null; |
| 383 } | 379 } |
| 384 | 380 |
| 385 /** | 381 /** |
| 386 * @return {number} | 382 * @return {number} |
| 387 */ | 383 */ |
| 388 headerHeight() { | 384 headerHeight() { |
| 389 return this._headerHeight; | 385 return this._headerHeight; |
| 390 } | 386 } |
| 391 | 387 |
| 392 /** | 388 /** |
| 393 * @param {boolean} recording | 389 * @param {boolean} recording |
| 394 */ | 390 */ |
| 395 setRecording(recording) { | 391 setRecording(recording) { |
| 396 this._recording = recording; | 392 this._recording = recording; |
| 397 this._updateSummaryBar(); | 393 this._updateSummaryBar(); |
| 398 } | 394 } |
| 399 | 395 |
| 400 /** | 396 /** |
| 401 * @override | 397 * @override |
| 402 * @param {!SDK.NetworkManager} networkManager | 398 * @param {!SDK.NetworkManager} networkManager |
| 403 */ | 399 */ |
| 404 modelAdded(networkManager) { | 400 modelAdded(networkManager) { |
| 405 if (!networkManager.target().parentTarget()) { | 401 // TODO(allada) Remove dependency on networkManager and instead use NetworkL og and PageLoad for needed data. |
| 406 var resourceTreeModel = networkManager.target().model(SDK.ResourceTreeMode l); | 402 if (networkManager.target().parentTarget()) |
| 407 if (resourceTreeModel) { | 403 return; |
| 408 resourceTreeModel.addEventListener( | 404 var resourceTreeModel = networkManager.target().model(SDK.ResourceTreeModel) ; |
| 409 SDK.ResourceTreeModel.Events.MainFrameNavigated, this._mainFrameNavi gated, this); | 405 if (resourceTreeModel) { |
| 410 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Load, th is._loadEventFired, this); | 406 resourceTreeModel.addEventListener(SDK.ResourceTreeModel.Events.Load, this ._loadEventFired, this); |
| 411 resourceTreeModel.addEventListener( | 407 resourceTreeModel.addEventListener( |
| 412 SDK.ResourceTreeModel.Events.DOMContentLoaded, this._domContentLoade dEventFired, this); | 408 SDK.ResourceTreeModel.Events.DOMContentLoaded, this._domContentLoadedE ventFired, this); |
| 413 } | |
| 414 } | 409 } |
| 415 NetworkLog.networkLog.requestsForManager(networkManager).forEach(this._appen dRequest.bind(this)); | |
| 416 } | 410 } |
| 417 | 411 |
| 418 /** | 412 /** |
| 419 * @override | 413 * @override |
| 420 * @param {!SDK.NetworkManager} networkManager | 414 * @param {!SDK.NetworkManager} networkManager |
| 421 */ | 415 */ |
| 422 modelRemoved(networkManager) { | 416 modelRemoved(networkManager) { |
| 423 if (!networkManager.target().parentTarget()) { | 417 if (!networkManager.target().parentTarget()) { |
| 424 var resourceTreeModel = networkManager.target().model(SDK.ResourceTreeMode l); | 418 var resourceTreeModel = networkManager.target().model(SDK.ResourceTreeMode l); |
| 425 if (resourceTreeModel) { | 419 if (resourceTreeModel) { |
| 426 resourceTreeModel.removeEventListener( | |
| 427 SDK.ResourceTreeModel.Events.MainFrameNavigated, this._mainFrameNavi gated, this); | |
| 428 resourceTreeModel.removeEventListener(SDK.ResourceTreeModel.Events.Load, this._loadEventFired, this); | 420 resourceTreeModel.removeEventListener(SDK.ResourceTreeModel.Events.Load, this._loadEventFired, this); |
| 429 resourceTreeModel.removeEventListener( | 421 resourceTreeModel.removeEventListener( |
| 430 SDK.ResourceTreeModel.Events.DOMContentLoaded, this._domContentLoade dEventFired, this); | 422 SDK.ResourceTreeModel.Events.DOMContentLoaded, this._domContentLoade dEventFired, this); |
| 431 } | 423 } |
| 432 } | 424 } |
| 433 } | 425 } |
| 434 | 426 |
| 435 /** | 427 /** |
| 436 * @param {number} start | 428 * @param {number} start |
| 437 * @param {number} end | 429 * @param {number} end |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 593 | 585 |
| 594 /** | 586 /** |
| 595 * @param {!Event} event | 587 * @param {!Event} event |
| 596 */ | 588 */ |
| 597 _dataGridMouseDown(event) { | 589 _dataGridMouseDown(event) { |
| 598 if (!this._dataGrid.selectedNode && event.button) | 590 if (!this._dataGrid.selectedNode && event.button) |
| 599 event.consume(); | 591 event.consume(); |
| 600 } | 592 } |
| 601 | 593 |
| 602 _updateSummaryBar() { | 594 _updateSummaryBar() { |
| 603 var requestsNumber = this._nodesByRequestId.size; | |
| 604 | |
| 605 if (!requestsNumber) { | |
| 606 this._showRecordingHint(); | |
| 607 return; | |
| 608 } | |
| 609 this._hideRecordingHint(); | 595 this._hideRecordingHint(); |
| 610 | 596 |
| 611 var transferSize = 0; | 597 var transferSize = 0; |
| 612 var selectedRequestsNumber = 0; | 598 var selectedNodeNumber = 0; |
| 613 var selectedTransferSize = 0; | 599 var selectedTransferSize = 0; |
| 614 var baseTime = -1; | 600 var baseTime = -1; |
| 615 var maxTime = -1; | 601 var maxTime = -1; |
| 616 var nodes = this._nodesByRequestId.valuesArray(); | 602 |
| 617 for (var i = 0; i < nodes.length; ++i) { | 603 var nodeCount = 0; |
| 618 var request = nodes[i].request(); | 604 for (var request of NetworkLog.networkLog.requests()) { |
| 605 var node = request[Network.NetworkLogView._networkNodeSymbol]; | |
| 606 if (!node) | |
| 607 continue; | |
| 608 nodeCount++; | |
| 619 var requestTransferSize = request.transferSize; | 609 var requestTransferSize = request.transferSize; |
| 620 transferSize += requestTransferSize; | 610 transferSize += requestTransferSize; |
| 621 if (!nodes[i][Network.NetworkLogView._isFilteredOutSymbol]) { | 611 if (!node[Network.NetworkLogView._isFilteredOutSymbol]) { |
| 622 selectedRequestsNumber++; | 612 selectedNodeNumber++; |
| 623 selectedTransferSize += requestTransferSize; | 613 selectedTransferSize += requestTransferSize; |
| 624 } | 614 } |
| 625 if (request.url() === request.networkManager().target().inspectedURL() && | 615 if (request.url() === request.networkManager().target().inspectedURL() && |
| 626 request.resourceType() === Common.resourceTypes.Document) | 616 request.resourceType() === Common.resourceTypes.Document) |
| 627 baseTime = request.startTime; | 617 baseTime = request.startTime; |
| 628 if (request.endTime > maxTime) | 618 if (request.endTime > maxTime) |
| 629 maxTime = request.endTime; | 619 maxTime = request.endTime; |
| 630 } | 620 } |
| 631 | 621 |
| 622 if (!nodeCount) { | |
| 623 this._showRecordingHint(); | |
| 624 return; | |
| 625 } | |
| 626 | |
| 632 var summaryBar = this._summaryBarElement; | 627 var summaryBar = this._summaryBarElement; |
| 633 summaryBar.removeChildren(); | 628 summaryBar.removeChildren(); |
| 634 var separator = '\u2002\u2758\u2002'; | 629 var separator = '\u2002\u2758\u2002'; |
| 635 var text = ''; | 630 var text = ''; |
| 636 /** | 631 /** |
| 637 * @param {string} chunk | 632 * @param {string} chunk |
| 638 * @return {!Element} | 633 * @return {!Element} |
| 639 */ | 634 */ |
| 640 function appendChunk(chunk) { | 635 function appendChunk(chunk) { |
| 641 var span = summaryBar.createChild('span'); | 636 var span = summaryBar.createChild('span'); |
| 642 span.textContent = chunk; | 637 span.textContent = chunk; |
| 643 text += chunk; | 638 text += chunk; |
| 644 return span; | 639 return span; |
| 645 } | 640 } |
| 646 | 641 |
| 647 if (selectedRequestsNumber !== requestsNumber) { | 642 if (selectedNodeNumber !== nodeCount) { |
| 648 appendChunk(Common.UIString('%d / %d requests', selectedRequestsNumber, re questsNumber)); | 643 appendChunk(Common.UIString('%d / %d requests', selectedNodeNumber, nodeCo unt)); |
| 649 appendChunk(separator); | 644 appendChunk(separator); |
| 650 appendChunk(Common.UIString( | 645 appendChunk(Common.UIString( |
| 651 '%s / %s transferred', Number.bytesToString(selectedTransferSize), Num ber.bytesToString(transferSize))); | 646 '%s / %s transferred', Number.bytesToString(selectedTransferSize), Num ber.bytesToString(transferSize))); |
| 652 } else { | 647 } else { |
| 653 appendChunk(Common.UIString('%d requests', requestsNumber)); | 648 appendChunk(Common.UIString('%d requests', nodeCount)); |
| 654 appendChunk(separator); | 649 appendChunk(separator); |
| 655 appendChunk(Common.UIString('%s transferred', Number.bytesToString(transfe rSize))); | 650 appendChunk(Common.UIString('%s transferred', Number.bytesToString(transfe rSize))); |
| 656 } | 651 } |
| 657 if (baseTime !== -1 && maxTime !== -1) { | 652 if (baseTime !== -1 && maxTime !== -1) { |
| 658 appendChunk(separator); | 653 appendChunk(separator); |
| 659 appendChunk(Common.UIString('Finish: %s', Number.secondsToString(maxTime - baseTime))); | 654 appendChunk(Common.UIString('Finish: %s', Number.secondsToString(maxTime - baseTime))); |
| 660 if (this._mainRequestDOMContentLoadedTime !== -1 && this._mainRequestDOMCo ntentLoadedTime > baseTime) { | 655 if (this._mainRequestDOMContentLoadedTime !== -1 && this._mainRequestDOMCo ntentLoadedTime > baseTime) { |
| 661 appendChunk(separator); | 656 appendChunk(separator); |
| 662 var domContentLoadedText = Common.UIString( | 657 var domContentLoadedText = Common.UIString( |
| 663 'DOMContentLoaded: %s', Number.secondsToString(this._mainRequestDOMC ontentLoadedTime - baseTime)); | 658 'DOMContentLoaded: %s', Number.secondsToString(this._mainRequestDOMC ontentLoadedTime - baseTime)); |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 702 | 697 |
| 703 _refreshIfNeeded() { | 698 _refreshIfNeeded() { |
| 704 if (this._needsRefresh) | 699 if (this._needsRefresh) |
| 705 this._refresh(); | 700 this._refresh(); |
| 706 } | 701 } |
| 707 | 702 |
| 708 /** | 703 /** |
| 709 * @param {boolean=} deferUpdate | 704 * @param {boolean=} deferUpdate |
| 710 */ | 705 */ |
| 711 _invalidateAllItems(deferUpdate) { | 706 _invalidateAllItems(deferUpdate) { |
| 712 var requestIds = this._nodesByRequestId.keysArray(); | 707 this._staleRequests = new Set(NetworkLog.networkLog.requests()); |
| 713 for (var i = 0; i < requestIds.length; ++i) | |
| 714 this._staleRequestIds[requestIds[i]] = true; | |
| 715 if (deferUpdate) | 708 if (deferUpdate) |
| 716 this.scheduleRefresh(); | 709 this.scheduleRefresh(); |
| 717 else | 710 else |
| 718 this._refresh(); | 711 this._refresh(); |
| 719 } | 712 } |
| 720 | 713 |
| 721 /** | 714 /** |
| 722 * @return {!Network.NetworkTimeCalculator} | 715 * @return {!Network.NetworkTimeCalculator} |
| 723 */ | 716 */ |
| 724 timeCalculator() { | 717 timeCalculator() { |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 825 | 818 |
| 826 this._timeCalculator.updateBoundariesForEventTime(this._mainRequestLoadTime) ; | 819 this._timeCalculator.updateBoundariesForEventTime(this._mainRequestLoadTime) ; |
| 827 this._durationCalculator.updateBoundariesForEventTime(this._mainRequestLoadT ime); | 820 this._durationCalculator.updateBoundariesForEventTime(this._mainRequestLoadT ime); |
| 828 this._timeCalculator.updateBoundariesForEventTime(this._mainRequestDOMConten tLoadedTime); | 821 this._timeCalculator.updateBoundariesForEventTime(this._mainRequestDOMConten tLoadedTime); |
| 829 this._durationCalculator.updateBoundariesForEventTime(this._mainRequestDOMCo ntentLoadedTime); | 822 this._durationCalculator.updateBoundariesForEventTime(this._mainRequestDOMCo ntentLoadedTime); |
| 830 | 823 |
| 831 /** @type {!Map<!Network.NetworkNode, !Network.NetworkNode>} */ | 824 /** @type {!Map<!Network.NetworkNode, !Network.NetworkNode>} */ |
| 832 var nodesToInsert = new Map(); | 825 var nodesToInsert = new Map(); |
| 833 /** @type {!Array<!Network.NetworkNode>} */ | 826 /** @type {!Array<!Network.NetworkNode>} */ |
| 834 var nodesToRefresh = []; | 827 var nodesToRefresh = []; |
| 835 for (var requestId in this._staleRequestIds) { | 828 |
| 836 var node = this._nodesByRequestId.get(requestId); | 829 /** @type {!Set<!Network.NetworkRequestNode>} */ |
| 837 if (!node) | 830 var staleNodes = new Set(); |
| 838 continue; | 831 |
| 832 // While creating nodes it may add more entries into _staleRequests because redirect request nodes update the parent | |
| 833 // node so we loop until we have no more stale requests. | |
| 834 while (this._staleRequests.size) { | |
|
dgozman
2017/06/01 20:56:27
while (this._staleRequests.size) {
var request =
allada
2017/06/02 01:02:43
Done.
| |
| 835 var staleRequests = Array.from(this._staleRequests); | |
| 836 this._staleRequests.clear(); | |
| 837 for (var request of staleRequests) { | |
| 838 var node = request[Network.NetworkLogView._networkNodeSymbol]; | |
| 839 if (!node) | |
| 840 node = this._createNodeForRequest(request); | |
| 841 staleNodes.add(node); | |
| 842 } | |
| 843 } | |
| 844 | |
| 845 for (var node of staleNodes) { | |
| 839 var isFilteredOut = !this._applyFilter(node); | 846 var isFilteredOut = !this._applyFilter(node); |
| 840 if (isFilteredOut && node === this._hoveredNode) | 847 if (isFilteredOut && node === this._hoveredNode) |
| 841 this._setHoveredNode(null); | 848 this._setHoveredNode(null); |
| 842 | 849 |
| 843 if (!isFilteredOut) | 850 if (!isFilteredOut) |
| 844 nodesToRefresh.push(node); | 851 nodesToRefresh.push(node); |
| 845 var request = node.request(); | 852 var request = node.request(); |
| 846 this._timeCalculator.updateBoundaries(request); | 853 this._timeCalculator.updateBoundaries(request); |
| 847 this._durationCalculator.updateBoundaries(request); | 854 this._durationCalculator.updateBoundaries(request); |
| 848 var newParent = this._parentNodeForInsert(node); | 855 var newParent = this._parentNodeForInsert(node); |
| (...skipping 28 matching lines...) Expand all Loading... | |
| 877 node[Network.NetworkLogView._isMatchingSearchQuerySymbol] = this._matchR equest(request); | 884 node[Network.NetworkLogView._isMatchingSearchQuerySymbol] = this._matchR equest(request); |
| 878 parent.appendChild(node); | 885 parent.appendChild(node); |
| 879 } | 886 } |
| 880 | 887 |
| 881 for (var node of nodesToRefresh) | 888 for (var node of nodesToRefresh) |
| 882 node.refresh(); | 889 node.refresh(); |
| 883 | 890 |
| 884 this._highlightNthMatchedRequestForSearch( | 891 this._highlightNthMatchedRequestForSearch( |
| 885 this._updateMatchCountAndFindMatchIndex(this._currentMatchedRequestNode) , false); | 892 this._updateMatchCountAndFindMatchIndex(this._currentMatchedRequestNode) , false); |
| 886 | 893 |
| 887 this._staleRequestIds = {}; | |
| 888 this._updateSummaryBar(); | 894 this._updateSummaryBar(); |
| 889 | 895 |
| 890 if (nodesToInsert.size) | 896 if (nodesToInsert.size) |
| 891 this._columns.sortByCurrentColumn(); | 897 this._columns.sortByCurrentColumn(); |
| 892 | 898 |
| 893 this._dataGrid.updateInstantly(); | 899 this._dataGrid.updateInstantly(); |
| 900 this.didRefreshForTest(); | |
|
dgozman
2017/06/01 20:56:27
_didRefreshForTest
allada
2017/06/02 01:02:43
Done.
| |
| 901 } | |
| 902 | |
| 903 didRefreshForTest() { | |
| 894 } | 904 } |
| 895 | 905 |
| 896 /** | 906 /** |
| 897 * @param {!Network.NetworkRequestNode} node | 907 * @param {!Network.NetworkRequestNode} node |
| 898 * @return {?Network.NetworkNode} | 908 * @return {?Network.NetworkNode} |
| 899 */ | 909 */ |
| 900 _parentNodeForInsert(node) { | 910 _parentNodeForInsert(node) { |
| 901 if (!this._activeGroupLookup) | 911 if (!this._activeGroupLookup) |
| 902 return this._dataGrid.rootNode(); | 912 return this._dataGrid.rootNode(); |
| 903 | 913 |
| 904 var groupNode = this._activeGroupLookup.groupNodeForRequest(node.request()); | 914 var groupNode = this._activeGroupLookup.groupNodeForRequest(node.request()); |
| 905 if (!groupNode) | 915 if (!groupNode) |
| 906 return this._dataGrid.rootNode(); | 916 return this._dataGrid.rootNode(); |
| 907 return groupNode; | 917 return groupNode; |
| 908 } | 918 } |
| 909 | 919 |
| 910 reset() { | 920 _reset() { |
| 911 this._requestWithHighlightedInitiators = null; | 921 this._requestWithHighlightedInitiators = null; |
| 912 this.dispatchEventToListeners(Network.NetworkLogView.Events.RequestSelected, null); | 922 this.dispatchEventToListeners(Network.NetworkLogView.Events.RequestSelected, null); |
| 913 | 923 |
| 914 this._clearSearchMatchedList(); | 924 this._clearSearchMatchedList(); |
| 915 | 925 |
| 916 this._setHoveredNode(null); | 926 this._setHoveredNode(null); |
| 917 this._columns.reset(); | 927 this._columns.reset(); |
| 918 | 928 |
| 919 this._timeFilter = null; | 929 this._timeFilter = null; |
| 920 this._calculator.reset(); | 930 this._calculator.reset(); |
| 921 | 931 |
| 922 this._timeCalculator.setWindow(null); | 932 this._timeCalculator.setWindow(null); |
| 923 this.linkifier.reset(); | 933 this.linkifier.reset(); |
| 924 this.badgePool.reset(); | 934 this.badgePool.reset(); |
| 925 | 935 |
| 926 if (this._activeGroupLookup) | 936 if (this._activeGroupLookup) |
| 927 this._activeGroupLookup.reset(); | 937 this._activeGroupLookup.reset(); |
| 928 this._nodesByRequestId.clear(); | 938 this._staleRequests.clear(); |
| 929 this._staleRequestIds = {}; | |
| 930 this._resetSuggestionBuilder(); | 939 this._resetSuggestionBuilder(); |
| 931 | 940 |
| 932 this._mainRequestLoadTime = -1; | 941 this._mainRequestLoadTime = -1; |
| 933 this._mainRequestDOMContentLoadedTime = -1; | 942 this._mainRequestDOMContentLoadedTime = -1; |
| 934 | 943 |
| 935 this._dataGrid.rootNode().removeChildren(); | 944 this._dataGrid.rootNode().removeChildren(); |
| 936 this._updateSummaryBar(); | 945 this._updateSummaryBar(); |
| 937 this._dataGrid.setStickToBottom(true); | 946 this._dataGrid.setStickToBottom(true); |
| 938 } | 947 } |
| 939 | 948 |
| 940 /** | 949 /** |
| 941 * @param {string} filterString | 950 * @param {string} filterString |
| 942 */ | 951 */ |
| 943 setTextFilterValue(filterString) { | 952 setTextFilterValue(filterString) { |
| 944 this._textFilterUI.setValue(filterString); | 953 this._textFilterUI.setValue(filterString); |
| 945 this._textFilterUI.setRegexChecked(false); | 954 this._textFilterUI.setRegexChecked(false); |
| 946 this._dataURLFilterUI.setChecked(false); | 955 this._dataURLFilterUI.setChecked(false); |
| 947 this._resourceCategoryFilterUI.reset(); | 956 this._resourceCategoryFilterUI.reset(); |
| 948 } | 957 } |
| 949 | 958 |
| 950 /** | 959 /** |
| 960 * @param {!SDK.NetworkRequest} request | |
| 961 */ | |
| 962 _createNodeForRequest(request) { | |
| 963 var node = new Network.NetworkRequestNode(this, request); | |
| 964 request[Network.NetworkLogView._networkNodeSymbol] = node; | |
| 965 node[Network.NetworkLogView._isFilteredOutSymbol] = true; | |
| 966 node[Network.NetworkLogView._isMatchingSearchQuerySymbol] = false; | |
| 967 | |
| 968 // Pull all the redirects of the main request upon commit load. | |
|
dgozman
2017/06/01 20:56:27
You don't check that request is a main request.
allada
2017/06/02 01:02:43
This comment was moved and git made a horrible dif
| |
| 969 if (request.redirects) | |
| 970 request.redirects.forEach(this._refreshRequest.bind(this)); | |
| 971 return node; | |
| 972 } | |
| 973 | |
| 974 /** | |
| 951 * @param {!Common.Event} event | 975 * @param {!Common.Event} event |
| 952 */ | 976 */ |
| 953 _onRequestStarted(event) { | 977 _onRequestRemoved(event) { |
| 954 if (!this._recording) | |
|
dgozman
2017/06/01 20:56:27
Who handles this?
allada
2017/06/02 01:02:43
It's now in NetworkLog.
| |
| 955 return; | |
| 956 var request = /** @type {!SDK.NetworkRequest} */ (event.data); | 978 var request = /** @type {!SDK.NetworkRequest} */ (event.data); |
| 957 this._appendRequest(request); | 979 var node = request[Network.NetworkLogView._networkNodeSymbol]; |
| 980 while (node && node.parent) { | |
|
dgozman
2017/06/01 20:56:27
Why do you remove all parents? This removes the gr
allada
2017/06/02 01:02:43
good catch.
| |
| 981 var parent = node.parent; | |
| 982 parent.removeChild(node); | |
| 983 node = parent; | |
| 984 } | |
| 985 this._staleRequests.delete(request); | |
| 986 delete request[Network.NetworkLogView._networkNodeSymbol]; | |
| 958 } | 987 } |
| 959 | 988 |
| 960 /** | 989 /** |
| 961 * @param {!SDK.NetworkRequest} request | |
| 962 */ | |
| 963 _appendRequest(request) { | |
| 964 var node = new Network.NetworkRequestNode(this, request); | |
| 965 node[Network.NetworkLogView._isFilteredOutSymbol] = true; | |
| 966 node[Network.NetworkLogView._isMatchingSearchQuerySymbol] = false; | |
| 967 | |
| 968 // In case of redirect request id is reassigned to a redirected | |
| 969 // request and we need to update _nodesByRequestId and search results. | |
| 970 var originalRequestNode = this._nodesByRequestId.get(request.requestId()); | |
| 971 if (originalRequestNode) | |
| 972 this._nodesByRequestId.set(originalRequestNode.request().requestId(), orig inalRequestNode); | |
| 973 this._nodesByRequestId.set(request.requestId(), node); | |
| 974 | |
| 975 // Pull all the redirects of the main request upon commit load. | |
| 976 if (request.redirects) { | |
| 977 for (var i = 0; i < request.redirects.length; ++i) | |
| 978 this._refreshRequest(request.redirects[i]); | |
| 979 } | |
| 980 | |
| 981 this._refreshRequest(request); | |
| 982 } | |
| 983 | |
| 984 /** | |
| 985 * @param {!Common.Event} event | 990 * @param {!Common.Event} event |
| 986 */ | 991 */ |
| 987 _onRequestUpdated(event) { | 992 _onRequestUpdated(event) { |
| 988 var request = /** @type {!SDK.NetworkRequest} */ (event.data); | 993 var request = /** @type {!SDK.NetworkRequest} */ (event.data); |
| 989 this._refreshRequest(request); | 994 this._refreshRequest(request); |
| 990 } | 995 } |
| 991 | 996 |
| 992 /** | 997 /** |
| 993 * @param {!SDK.NetworkRequest} request | 998 * @param {!SDK.NetworkRequest} request |
| 994 */ | 999 */ |
| 995 _refreshRequest(request) { | 1000 _refreshRequest(request) { |
| 996 if (!this._nodesByRequestId.get(request.requestId())) | |
| 997 return; | |
| 998 | |
| 999 Network.NetworkLogView._subdomains(request.domain) | 1001 Network.NetworkLogView._subdomains(request.domain) |
| 1000 .forEach( | 1002 .forEach( |
| 1001 this._suggestionBuilder.addItem.bind(this._suggestionBuilder, Networ k.NetworkLogView.FilterType.Domain)); | 1003 this._suggestionBuilder.addItem.bind(this._suggestionBuilder, Networ k.NetworkLogView.FilterType.Domain)); |
| 1002 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.Method, re quest.requestMethod); | 1004 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.Method, re quest.requestMethod); |
| 1003 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.MimeType, request.mimeType); | 1005 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.MimeType, request.mimeType); |
| 1004 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.Scheme, '' + request.scheme); | 1006 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.Scheme, '' + request.scheme); |
| 1005 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.StatusCode , '' + request.statusCode); | 1007 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.StatusCode , '' + request.statusCode); |
| 1006 | 1008 |
| 1007 var priority = request.initialPriority(); | 1009 var priority = request.initialPriority(); |
| 1008 if (priority) { | 1010 if (priority) { |
| (...skipping 21 matching lines...) Expand all Loading... | |
| 1030 for (var i = 0, l = responseHeaders.length; i < l; ++i) | 1032 for (var i = 0, l = responseHeaders.length; i < l; ++i) |
| 1031 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.HasRespo nseHeader, responseHeaders[i].name); | 1033 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.HasRespo nseHeader, responseHeaders[i].name); |
| 1032 var cookies = request.responseCookies; | 1034 var cookies = request.responseCookies; |
| 1033 for (var i = 0, l = cookies ? cookies.length : 0; i < l; ++i) { | 1035 for (var i = 0, l = cookies ? cookies.length : 0; i < l; ++i) { |
| 1034 var cookie = cookies[i]; | 1036 var cookie = cookies[i]; |
| 1035 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.SetCooki eDomain, cookie.domain()); | 1037 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.SetCooki eDomain, cookie.domain()); |
| 1036 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.SetCooki eName, cookie.name()); | 1038 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.SetCooki eName, cookie.name()); |
| 1037 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.SetCooki eValue, cookie.value()); | 1039 this._suggestionBuilder.addItem(Network.NetworkLogView.FilterType.SetCooki eValue, cookie.value()); |
| 1038 } | 1040 } |
| 1039 | 1041 |
| 1040 this._staleRequestIds[request.requestId()] = true; | 1042 this._staleRequests.add(request); |
| 1041 this.dispatchEventToListeners(Network.NetworkLogView.Events.UpdateRequest, r equest); | |
| 1042 this.scheduleRefresh(); | 1043 this.scheduleRefresh(); |
| 1043 } | 1044 } |
| 1044 | 1045 |
| 1045 /** | 1046 /** |
| 1046 * @param {!Common.Event} event | |
| 1047 */ | |
| 1048 _mainFrameNavigated(event) { | |
| 1049 if (!this._recording) | |
| 1050 return; | |
| 1051 | |
| 1052 var frame = /** @type {!SDK.ResourceTreeFrame} */ (event.data); | |
| 1053 var loaderId = frame.loaderId; | |
| 1054 | |
| 1055 // Pick provisional load requests. | |
| 1056 var requestsToPick = []; | |
| 1057 var networkManager = frame.resourceTreeModel().target().model(SDK.NetworkMan ager); | |
| 1058 var requests = networkManager ? NetworkLog.networkLog.requestsForManager(net workManager) : []; | |
| 1059 for (var i = 0; i < requests.length; ++i) { | |
| 1060 var request = requests[i]; | |
| 1061 if (request.loaderId === loaderId) | |
| 1062 requestsToPick.push(request); | |
| 1063 } | |
| 1064 | |
| 1065 if (!Common.moduleSetting('network.preserve-log').get()) { | |
| 1066 this.reset(); | |
| 1067 for (var i = 0; i < requestsToPick.length; ++i) | |
| 1068 this._appendRequest(requestsToPick[i]); | |
| 1069 } | |
| 1070 for (var i = 0; i < requestsToPick.length; ++i) { | |
| 1071 var request = requestsToPick[i]; | |
| 1072 var node = this._nodesByRequestId.get(request.requestId()); | |
| 1073 if (node) { | |
| 1074 node.markAsNavigationRequest(); | |
| 1075 break; | |
| 1076 } | |
| 1077 } | |
| 1078 } | |
| 1079 | |
| 1080 /** | |
| 1081 * @return {number} | 1047 * @return {number} |
| 1082 */ | 1048 */ |
| 1083 rowHeight() { | 1049 rowHeight() { |
| 1084 return this._rowHeight; | 1050 return this._rowHeight; |
| 1085 } | 1051 } |
| 1086 | 1052 |
| 1087 /** | 1053 /** |
| 1088 * @param {boolean} gridMode | 1054 * @param {boolean} gridMode |
| 1089 */ | 1055 */ |
| 1090 switchViewMode(gridMode) { | 1056 switchViewMode(gridMode) { |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1182 } | 1148 } |
| 1183 | 1149 |
| 1184 if (request && request.canReplayRequest()) { | 1150 if (request && request.canReplayRequest()) { |
| 1185 contextMenu.appendSeparator(); | 1151 contextMenu.appendSeparator(); |
| 1186 contextMenu.appendItem(Common.UIString('Replay XHR'), request.replayReques t.bind(request)); | 1152 contextMenu.appendItem(Common.UIString('Replay XHR'), request.replayReques t.bind(request)); |
| 1187 contextMenu.appendSeparator(); | 1153 contextMenu.appendSeparator(); |
| 1188 } | 1154 } |
| 1189 } | 1155 } |
| 1190 | 1156 |
| 1191 _harRequests() { | 1157 _harRequests() { |
| 1192 var requests = this._nodesByRequestId.valuesArray().map(function(node) { | 1158 var httpRequests = Array.from(NetworkLog.networkLog.requests()).filter(Netwo rk.NetworkLogView.HTTPRequestsFilter); |
| 1193 return node.request(); | |
| 1194 }); | |
| 1195 var httpRequests = requests.filter(Network.NetworkLogView.HTTPRequestsFilter ); | |
| 1196 return httpRequests.filter(Network.NetworkLogView.FinishedRequestsFilter); | 1159 return httpRequests.filter(Network.NetworkLogView.FinishedRequestsFilter); |
| 1197 } | 1160 } |
| 1198 | 1161 |
| 1199 _copyAll() { | 1162 _copyAll() { |
| 1200 var harArchive = {log: (new NetworkLog.HARLog(this._harRequests())).build()} ; | 1163 var harArchive = {log: (new NetworkLog.HARLog(this._harRequests())).build()} ; |
| 1201 InspectorFrontendHost.copyText(JSON.stringify(harArchive, null, 2)); | 1164 InspectorFrontendHost.copyText(JSON.stringify(harArchive, null, 2)); |
| 1202 } | 1165 } |
| 1203 | 1166 |
| 1204 /** | 1167 /** |
| 1205 * @param {!SDK.NetworkRequest} request | 1168 * @param {!SDK.NetworkRequest} request |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 1235 * @param {string} platform | 1198 * @param {string} platform |
| 1236 */ | 1199 */ |
| 1237 _copyCurlCommand(request, platform) { | 1200 _copyCurlCommand(request, platform) { |
| 1238 InspectorFrontendHost.copyText(this._generateCurlCommand(request, platform)) ; | 1201 InspectorFrontendHost.copyText(this._generateCurlCommand(request, platform)) ; |
| 1239 } | 1202 } |
| 1240 | 1203 |
| 1241 /** | 1204 /** |
| 1242 * @param {string} platform | 1205 * @param {string} platform |
| 1243 */ | 1206 */ |
| 1244 _copyAllCurlCommand(platform) { | 1207 _copyAllCurlCommand(platform) { |
| 1245 var requests = this._nodesByRequestId.valuesArray().map(node => node.request ()); | 1208 var requests = NetworkLog.networkLog.requests(); |
| 1246 var commands = []; | 1209 var commands = []; |
| 1247 for (var request of requests) | 1210 for (var request of requests) |
| 1248 commands.push(this._generateCurlCommand(request, platform)); | 1211 commands.push(this._generateCurlCommand(request, platform)); |
| 1249 if (platform === 'win') | 1212 if (platform === 'win') |
| 1250 InspectorFrontendHost.copyText(commands.join(' &\r\n')); | 1213 InspectorFrontendHost.copyText(commands.join(' &\r\n')); |
| 1251 else | 1214 else |
| 1252 InspectorFrontendHost.copyText(commands.join(' ;\n')); | 1215 InspectorFrontendHost.copyText(commands.join(' ;\n')); |
| 1253 } | 1216 } |
| 1254 | 1217 |
| 1255 _exportAll() { | 1218 _exportAll() { |
| (...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1603 this._clearSearchMatchedList(); | 1566 this._clearSearchMatchedList(); |
| 1604 this.dispatchEventToListeners(Network.NetworkLogView.Events.SearchCountUpdat ed, 0); | 1567 this.dispatchEventToListeners(Network.NetworkLogView.Events.SearchCountUpdat ed, 0); |
| 1605 } | 1568 } |
| 1606 | 1569 |
| 1607 /** | 1570 /** |
| 1608 * @param {!SDK.NetworkRequest} request | 1571 * @param {!SDK.NetworkRequest} request |
| 1609 */ | 1572 */ |
| 1610 revealAndHighlightRequest(request) { | 1573 revealAndHighlightRequest(request) { |
| 1611 this.removeAllNodeHighlights(); | 1574 this.removeAllNodeHighlights(); |
| 1612 | 1575 |
| 1613 var node = this._nodesByRequestId.get(request.requestId()); | 1576 var node = request[Network.NetworkLogView._networkNodeSymbol]; |
| 1614 if (node) { | 1577 if (node) { |
| 1615 node.reveal(); | 1578 node.reveal(); |
| 1616 this._highlightNode(node); | 1579 this._highlightNode(node); |
| 1617 } | 1580 } |
| 1618 } | 1581 } |
| 1619 | 1582 |
| 1620 removeAllNodeHighlights() { | 1583 removeAllNodeHighlights() { |
| 1621 if (this._highlightedNode) { | 1584 if (this._highlightedNode) { |
| 1622 this._highlightedNode.element().classList.remove('highlighted-row'); | 1585 this._highlightedNode.element().classList.remove('highlighted-row'); |
| 1623 delete this._highlightedNode; | 1586 delete this._highlightedNode; |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1754 command.push('--compressed'); | 1717 command.push('--compressed'); |
| 1755 | 1718 |
| 1756 if (request.securityState() === Protocol.Security.SecurityState.Insecure) | 1719 if (request.securityState() === Protocol.Security.SecurityState.Insecure) |
| 1757 command.push('--insecure'); | 1720 command.push('--insecure'); |
| 1758 return command.join(' '); | 1721 return command.join(' '); |
| 1759 } | 1722 } |
| 1760 }; | 1723 }; |
| 1761 | 1724 |
| 1762 Network.NetworkLogView._isFilteredOutSymbol = Symbol('isFilteredOut'); | 1725 Network.NetworkLogView._isFilteredOutSymbol = Symbol('isFilteredOut'); |
| 1763 Network.NetworkLogView._isMatchingSearchQuerySymbol = Symbol('isMatchingSearchQu ery'); | 1726 Network.NetworkLogView._isMatchingSearchQuerySymbol = Symbol('isMatchingSearchQu ery'); |
| 1727 Network.NetworkLogView._networkNodeSymbol = Symbol('NetworkNode'); | |
| 1764 | 1728 |
| 1765 Network.NetworkLogView.HTTPSchemas = { | 1729 Network.NetworkLogView.HTTPSchemas = { |
| 1766 'http': true, | 1730 'http': true, |
| 1767 'https': true, | 1731 'https': true, |
| 1768 'ws': true, | 1732 'ws': true, |
| 1769 'wss': true | 1733 'wss': true |
| 1770 }; | 1734 }; |
| 1771 | 1735 |
| 1772 /** @enum {symbol} */ | 1736 /** @enum {symbol} */ |
| 1773 Network.NetworkLogView.Events = { | 1737 Network.NetworkLogView.Events = { |
| 1774 RequestSelected: Symbol('RequestSelected'), | 1738 RequestSelected: Symbol('RequestSelected'), |
| 1775 SearchCountUpdated: Symbol('SearchCountUpdated'), | 1739 SearchCountUpdated: Symbol('SearchCountUpdated'), |
| 1776 SearchIndexUpdated: Symbol('SearchIndexUpdated'), | 1740 SearchIndexUpdated: Symbol('SearchIndexUpdated') |
| 1777 UpdateRequest: Symbol('UpdateRequest') | |
| 1778 }; | 1741 }; |
| 1779 | 1742 |
| 1780 /** @enum {string} */ | 1743 /** @enum {string} */ |
| 1781 Network.NetworkLogView.FilterType = { | 1744 Network.NetworkLogView.FilterType = { |
| 1782 Domain: 'domain', | 1745 Domain: 'domain', |
| 1783 HasResponseHeader: 'has-response-header', | 1746 HasResponseHeader: 'has-response-header', |
| 1784 Is: 'is', | 1747 Is: 'is', |
| 1785 LargerThan: 'larger-than', | 1748 LargerThan: 'larger-than', |
| 1786 Method: 'method', | 1749 Method: 'method', |
| 1787 MimeType: 'mime-type', | 1750 MimeType: 'mime-type', |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1822 | 1785 |
| 1823 Network.GroupLookupInterface.prototype = { | 1786 Network.GroupLookupInterface.prototype = { |
| 1824 /** | 1787 /** |
| 1825 * @param {!SDK.NetworkRequest} request | 1788 * @param {!SDK.NetworkRequest} request |
| 1826 * @return {?Network.NetworkGroupNode} | 1789 * @return {?Network.NetworkGroupNode} |
| 1827 */ | 1790 */ |
| 1828 groupNodeForRequest: function(request) {}, | 1791 groupNodeForRequest: function(request) {}, |
| 1829 | 1792 |
| 1830 reset: function() {} | 1793 reset: function() {} |
| 1831 }; | 1794 }; |
| OLD | NEW |