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 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
50 this._progressBarContainer = progressBarContainer; | 50 this._progressBarContainer = progressBarContainer; |
51 this._networkLogLargeRowsSetting = networkLogLargeRowsSetting; | 51 this._networkLogLargeRowsSetting = networkLogLargeRowsSetting; |
52 this._networkLogLargeRowsSetting.addChangeListener(updateRowHeight.bind(this
), this); | 52 this._networkLogLargeRowsSetting.addChangeListener(updateRowHeight.bind(this
), this); |
53 | 53 |
54 /** @type {!Network.NetworkTransferTimeCalculator} */ | 54 /** @type {!Network.NetworkTransferTimeCalculator} */ |
55 this._timeCalculator = new Network.NetworkTransferTimeCalculator(); | 55 this._timeCalculator = new Network.NetworkTransferTimeCalculator(); |
56 /** @type {!Network.NetworkTransferDurationCalculator} */ | 56 /** @type {!Network.NetworkTransferDurationCalculator} */ |
57 this._durationCalculator = new Network.NetworkTransferDurationCalculator(); | 57 this._durationCalculator = new Network.NetworkTransferDurationCalculator(); |
58 this._calculator = this._timeCalculator; | 58 this._calculator = this._timeCalculator; |
59 | 59 |
60 /** @type {?Network.NetworkGroupLookupInterface} */ | |
61 this._activeGroupLookup = null; | |
62 | |
63 /** | 60 /** |
64 * @this {Network.NetworkLogView} | 61 * @this {Network.NetworkLogView} |
65 */ | 62 */ |
66 function updateRowHeight() { | 63 function updateRowHeight() { |
67 /** @type {number} */ | 64 /** @type {number} */ |
68 this._rowHeight = !!this._networkLogLargeRowsSetting.get() ? 41 : 21; | 65 this._rowHeight = !!this._networkLogLargeRowsSetting.get() ? 41 : 21; |
69 } | 66 } |
70 updateRowHeight.call(this); | 67 updateRowHeight.call(this); |
71 | 68 |
72 this._columns = new Network.NetworkLogViewColumns( | 69 this._columns = new Network.NetworkLogViewColumns( |
73 this, this._timeCalculator, this._durationCalculator, networkLogLargeRow
sSetting); | 70 this, this._timeCalculator, this._durationCalculator, networkLogLargeRow
sSetting); |
74 | 71 |
75 /** @type {!Map.<string, !Network.NetworkRequestNode>} */ | 72 /** @type {!Map.<string, !Network.NetworkRequestNode>} */ |
76 this._nodesByRequestId = new Map(); | 73 this._nodesByRequestId = new Map(); |
77 /** @type {!Map<*, !Network.NetworkGroupNode>} */ | 74 /** @type {!Map<*, !Network.NetworkGroupNode>} */ |
78 this._nodeGroups = new Map(); | 75 this._nodeGroups = new Map(); |
79 /** @type {!Set<!Network.NetworkRowDecorator>} */ | |
80 this._rowDecorators = new Set(); | |
81 | |
82 /** @type {!Object.<string, boolean>} */ | 76 /** @type {!Object.<string, boolean>} */ |
83 this._staleRequestIds = {}; | 77 this._staleRequestIds = {}; |
84 /** @type {number} */ | 78 /** @type {number} */ |
85 this._mainRequestLoadTime = -1; | 79 this._mainRequestLoadTime = -1; |
86 /** @type {number} */ | 80 /** @type {number} */ |
87 this._mainRequestDOMContentLoadedTime = -1; | 81 this._mainRequestDOMContentLoadedTime = -1; |
88 this._matchedRequestCount = 0; | 82 this._matchedRequestCount = 0; |
89 this._highlightedSubstringChanges = []; | 83 this._highlightedSubstringChanges = []; |
90 | 84 |
91 /** @type {!Array.<!Network.NetworkLogView.Filter>} */ | 85 /** @type {!Array.<!Network.NetworkLogView.Filter>} */ |
92 this._filters = []; | 86 this._filters = []; |
93 /** @type {?Network.NetworkLogView.Filter} */ | 87 /** @type {?Network.NetworkLogView.Filter} */ |
94 this._timeFilter = null; | 88 this._timeFilter = null; |
95 /** @type {?Network.NetworkNode} */ | 89 /** @type {?Network.NetworkNode} */ |
96 this._hoveredNode = null; | 90 this._hoveredNode = null; |
97 | 91 |
98 this._currentMatchedRequestNode = null; | 92 this._currentMatchedRequestNode = null; |
99 this._currentMatchedRequestIndex = -1; | 93 this._currentMatchedRequestIndex = -1; |
100 | 94 |
101 /** @type {!Components.Linkifier} */ | 95 /** @type {!Components.Linkifier} */ |
102 this.linkifier = new Components.Linkifier(); | 96 this.linkifier = new Components.Linkifier(); |
103 | 97 |
104 this._recording = false; | 98 this._recording = false; |
105 this._preserveLog = false; | 99 this._preserveLog = false; |
106 | 100 |
107 this._headerHeight = 0; | 101 this._headerHeight = 0; |
108 | 102 |
| 103 /** @type {!Map<string, !Network.GroupLookupInterface>} */ |
| 104 this._groupLookups = new Map(); |
| 105 this._groupLookups.set('Product', new Network.ProductGrouper()); |
| 106 this._groupLookups.set('Frame', new Network.FrameGrouper()); |
| 107 |
| 108 /** @type {?Network.GroupLookupInterface} */ |
| 109 this._activeGroupLookup = null; |
| 110 |
109 this._addFilters(); | 111 this._addFilters(); |
110 this._resetSuggestionBuilder(); | 112 this._resetSuggestionBuilder(); |
111 this._initializeView(); | 113 this._initializeView(); |
112 | 114 |
113 Common.moduleSetting('networkColorCodeResourceTypes') | 115 Common.moduleSetting('networkColorCodeResourceTypes') |
114 .addChangeListener(this._invalidateAllItems.bind(this, false), this); | 116 .addChangeListener(this._invalidateAllItems.bind(this, false), this); |
115 | 117 |
116 SDK.targetManager.observeModels(SDK.NetworkManager, this); | 118 SDK.targetManager.observeModels(SDK.NetworkManager, this); |
117 SDK.targetManager.addModelListener( | 119 SDK.targetManager.addModelListener( |
118 SDK.NetworkManager, SDK.NetworkManager.Events.RequestStarted, this._onRe
questStarted, this); | 120 SDK.NetworkManager, SDK.NetworkManager.Events.RequestStarted, this._onRe
questStarted, this); |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
345 */ | 347 */ |
346 static _requestTimeFilter(windowStart, windowEnd, request) { | 348 static _requestTimeFilter(windowStart, windowEnd, request) { |
347 if (request.issueTime() > windowEnd) | 349 if (request.issueTime() > windowEnd) |
348 return false; | 350 return false; |
349 if (request.endTime !== -1 && request.endTime < windowStart) | 351 if (request.endTime !== -1 && request.endTime < windowStart) |
350 return false; | 352 return false; |
351 return true; | 353 return true; |
352 } | 354 } |
353 | 355 |
354 /** | 356 /** |
355 * @param {?Network.NetworkGroupLookupInterface} grouping | 357 * @return {!Map<string, !Network.GroupLookupInterface>} |
356 */ | 358 */ |
357 setGrouping(grouping) { | 359 groupLookups() { |
358 this._activeGroupLookup = grouping; | 360 return this._groupLookups; |
359 this._nodeGroups.clear(); | |
360 this._invalidateAllItems(); | |
361 } | 361 } |
362 | 362 |
363 /** | 363 /** |
364 * @return {!Set<!Network.NetworkRowDecorator>} | 364 * @param {string} groupKey |
365 */ | 365 */ |
366 rowDecorators() { | 366 setGrouping(groupKey) { |
367 return this._rowDecorators; | 367 var groupLookup = this._groupLookups.get(groupKey) || null; |
| 368 this._activeGroupLookup = groupLookup; |
| 369 if (!groupLookup) { |
| 370 this._nodeGroups.clear(); |
| 371 this._invalidateAllItems(); |
| 372 return; |
| 373 } |
| 374 groupLookup.initialize().then(() => { |
| 375 if (this._activeGroupLookup !== groupLookup) |
| 376 return; |
| 377 this._nodeGroups.clear(); |
| 378 this._invalidateAllItems(); |
| 379 }); |
368 } | 380 } |
369 | 381 |
370 /** | 382 /** |
371 * @param {!SDK.NetworkRequest} request | 383 * @param {!SDK.NetworkRequest} request |
372 * @return {?Network.NetworkRequestNode} | 384 * @return {?Network.NetworkRequestNode} |
373 */ | 385 */ |
374 nodeForRequest(request) { | 386 nodeForRequest(request) { |
375 return this._nodesByRequestId.get(request.requestId()); | 387 return this._nodesByRequestId.get(request.requestId()); |
376 } | 388 } |
377 | 389 |
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
491 _filterChanged(event) { | 503 _filterChanged(event) { |
492 this.removeAllNodeHighlights(); | 504 this.removeAllNodeHighlights(); |
493 this._parseFilterQuery(this._textFilterUI.value()); | 505 this._parseFilterQuery(this._textFilterUI.value()); |
494 this._filterRequests(); | 506 this._filterRequests(); |
495 } | 507 } |
496 | 508 |
497 _initializeView() { | 509 _initializeView() { |
498 this.element.id = 'network-container'; | 510 this.element.id = 'network-container'; |
499 this._setupDataGrid(); | 511 this._setupDataGrid(); |
500 | 512 |
501 self.runtime.allInstances(Network.NetworkRowDecorator).then(instances => { | |
502 for (var instance of instances) | |
503 this._rowDecorators.add(instance); | |
504 this._invalidateAllItems(true); | |
505 }); | |
506 | |
507 this._columns.show(this.element); | 513 this._columns.show(this.element); |
508 | 514 |
509 this._summaryBarElement = this.element.createChild('div', 'network-summary-b
ar'); | 515 this._summaryBarElement = this.element.createChild('div', 'network-summary-b
ar'); |
510 | 516 |
511 this._columns.sortByCurrentColumn(); | 517 this._columns.sortByCurrentColumn(); |
512 } | 518 } |
513 | 519 |
514 _showRecordingHint() { | 520 _showRecordingHint() { |
515 this._hideRecordingHint(); | 521 this._hideRecordingHint(); |
516 this._recordingHint = this.element.createChild('div', 'network-status-pane f
ill'); | 522 this._recordingHint = this.element.createChild('div', 'network-status-pane f
ill'); |
(...skipping 376 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
893 return this._dataGrid.rootNode(); | 899 return this._dataGrid.rootNode(); |
894 | 900 |
895 var groupKey = this._activeGroupLookup.groupForRequest(node.request()); | 901 var groupKey = this._activeGroupLookup.groupForRequest(node.request()); |
896 if (!groupKey) | 902 if (!groupKey) |
897 return this._dataGrid.rootNode(); | 903 return this._dataGrid.rootNode(); |
898 | 904 |
899 var group = this._nodeGroups.get(groupKey); | 905 var group = this._nodeGroups.get(groupKey); |
900 if (group) | 906 if (group) |
901 return group; | 907 return group; |
902 group = new Network.NetworkGroupNode(this, this._activeGroupLookup.groupName
(groupKey)); | 908 group = new Network.NetworkGroupNode(this, this._activeGroupLookup.groupName
(groupKey)); |
903 group.setColumnExtensions(this._columns.columnExtensions()); | |
904 this._nodeGroups.set(groupKey, group); | 909 this._nodeGroups.set(groupKey, group); |
905 return group; | 910 return group; |
906 } | 911 } |
907 | 912 |
908 reset() { | 913 reset() { |
909 this._requestWithHighlightedInitiators = null; | 914 this._requestWithHighlightedInitiators = null; |
910 this.dispatchEventToListeners(Network.NetworkLogView.Events.RequestSelected,
null); | 915 this.dispatchEventToListeners(Network.NetworkLogView.Events.RequestSelected,
null); |
911 | 916 |
912 this._clearSearchMatchedList(); | 917 this._clearSearchMatchedList(); |
913 | 918 |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
955 return; | 960 return; |
956 var request = /** @type {!SDK.NetworkRequest} */ (event.data); | 961 var request = /** @type {!SDK.NetworkRequest} */ (event.data); |
957 this._appendRequest(request); | 962 this._appendRequest(request); |
958 } | 963 } |
959 | 964 |
960 /** | 965 /** |
961 * @param {!SDK.NetworkRequest} request | 966 * @param {!SDK.NetworkRequest} request |
962 */ | 967 */ |
963 _appendRequest(request) { | 968 _appendRequest(request) { |
964 var node = new Network.NetworkRequestNode(this, request); | 969 var node = new Network.NetworkRequestNode(this, request); |
965 node.setColumnExtensions(this._columns.columnExtensions()); | |
966 node[Network.NetworkLogView._isFilteredOutSymbol] = true; | 970 node[Network.NetworkLogView._isFilteredOutSymbol] = true; |
967 node[Network.NetworkLogView._isMatchingSearchQuerySymbol] = false; | 971 node[Network.NetworkLogView._isMatchingSearchQuerySymbol] = false; |
968 | 972 |
969 // In case of redirect request id is reassigned to a redirected | 973 // In case of redirect request id is reassigned to a redirected |
970 // request and we need to update _nodesByRequestId and search results. | 974 // request and we need to update _nodesByRequestId and search results. |
971 var originalRequestNode = this._nodesByRequestId.get(request.requestId()); | 975 var originalRequestNode = this._nodesByRequestId.get(request.requestId()); |
972 if (originalRequestNode) | 976 if (originalRequestNode) |
973 this._nodesByRequestId.set(originalRequestNode.request().requestId(), orig
inalRequestNode); | 977 this._nodesByRequestId.set(originalRequestNode.request().requestId(), orig
inalRequestNode); |
974 this._nodesByRequestId.set(request.requestId(), node); | 978 this._nodesByRequestId.set(request.requestId(), node); |
975 | 979 |
(...skipping 836 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1812 /** @type {!Array<string>} */ | 1816 /** @type {!Array<string>} */ |
1813 Network.NetworkLogView._searchKeys = | 1817 Network.NetworkLogView._searchKeys = |
1814 Object.keys(Network.NetworkLogView.FilterType).map(key => Network.NetworkLog
View.FilterType[key]); | 1818 Object.keys(Network.NetworkLogView.FilterType).map(key => Network.NetworkLog
View.FilterType[key]); |
1815 | 1819 |
1816 /** @typedef {function(!SDK.NetworkRequest): boolean} */ | 1820 /** @typedef {function(!SDK.NetworkRequest): boolean} */ |
1817 Network.NetworkLogView.Filter; | 1821 Network.NetworkLogView.Filter; |
1818 | 1822 |
1819 /** | 1823 /** |
1820 * @interface | 1824 * @interface |
1821 */ | 1825 */ |
1822 Network.NetworkGroupLookupInterface = function() {}; | 1826 Network.GroupLookupInterface = function() {}; |
1823 | 1827 |
1824 Network.NetworkGroupLookupInterface.prototype = { | 1828 Network.GroupLookupInterface.prototype = { |
| 1829 /** |
| 1830 * @return {!Promise} |
| 1831 */ |
| 1832 initialize: function() {}, |
| 1833 |
1825 /** | 1834 /** |
1826 * @param {!SDK.NetworkRequest} request | 1835 * @param {!SDK.NetworkRequest} request |
1827 * @return {?*} | 1836 * @return {?*} |
1828 */ | 1837 */ |
1829 groupForRequest(request) {}, | 1838 groupForRequest: function(request) {}, |
1830 | 1839 |
1831 /** | 1840 /** |
1832 * @param {!*} key | 1841 * @param {!*} key |
1833 * @return {string} | 1842 * @return {string} |
1834 */ | 1843 */ |
1835 groupName(key) {} | 1844 groupName: function(key) {} |
1836 }; | 1845 }; |
1837 | |
1838 /** | |
1839 * @interface | |
1840 */ | |
1841 Network.NetworkRowDecorator = function() {}; | |
1842 | |
1843 Network.NetworkRowDecorator.prototype = { | |
1844 /** | |
1845 * @param {!Network.NetworkNode} node | |
1846 */ | |
1847 decorate(node) {} | |
1848 }; | |
OLD | NEW |