OLD | NEW |
| (Empty) |
1 // Copyright 2017 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 /** | |
5 * @implements {Network.NetworkColumnExtensionInterface} | |
6 * @implements {Network.NetworkGroupLookupInterface} | |
7 */ | |
8 NetworkGroupLookup.NetworkProductGroupLookup = class { | |
9 /** | |
10 * @override | |
11 * @param {!SDK.NetworkRequest} request | |
12 * @return {?*} | |
13 */ | |
14 groupForRequest(request) { | |
15 var productName = ProductRegistry.nameForUrl(request.parsedURL); | |
16 if (!productName) | |
17 return null; | |
18 return productName; | |
19 } | |
20 | |
21 /** | |
22 * @override | |
23 * @param {!*} key | |
24 * @return {string} | |
25 */ | |
26 groupName(key) { | |
27 return /** @type {string} */ (key); | |
28 } | |
29 | |
30 /** | |
31 * @override | |
32 * @param {!SDK.NetworkRequest} request | |
33 * @return {string} | |
34 */ | |
35 lookupColumnValue(request) { | |
36 return ProductRegistry.nameForUrl(request.parsedURL) || ''; | |
37 } | |
38 | |
39 /** | |
40 * @override | |
41 * @param {!SDK.NetworkRequest} aRequest | |
42 * @param {!SDK.NetworkRequest} bRequest | |
43 * @return {number} | |
44 */ | |
45 requestComparator(aRequest, bRequest) { | |
46 var aValue = this.lookupColumnValue(aRequest); | |
47 var bValue = this.lookupColumnValue(bRequest); | |
48 if (aValue === bValue) | |
49 return aRequest.indentityCompare(bRequest); | |
50 return aValue > bValue ? 1 : -1; | |
51 } | |
52 }; | |
53 | |
54 /** | |
55 * @implements {Network.NetworkGroupLookupInterface} | |
56 */ | |
57 NetworkGroupLookup.NetworkProductFrameGroupLookup = class { | |
58 /** | |
59 * @override | |
60 * @param {!SDK.NetworkRequest} request | |
61 * @return {?*} | |
62 */ | |
63 groupForRequest(request) { | |
64 var resourceTreeModel = request.networkManager().target().model(SDK.Resource
TreeModel); | |
65 if (!resourceTreeModel) | |
66 return null; | |
67 var frame = resourceTreeModel.frameForId(request.frameId); | |
68 if (!frame || frame.isMainFrame()) | |
69 return null; | |
70 return frame; | |
71 } | |
72 | |
73 /** | |
74 * @override | |
75 * @param {!*} frameArg | |
76 * @return {string} | |
77 */ | |
78 groupName(frameArg) { | |
79 var frame = /** @type {!SDK.ResourceTreeFrame} */ (frameArg); | |
80 var name; | |
81 var frameParsedURL = new Common.ParsedURL(frame.url); | |
82 if (frame.url) | |
83 name = ProductRegistry.nameForUrl(frameParsedURL); | |
84 if (name) | |
85 return name; | |
86 // We are not caching the frame url result because it may change. | |
87 var symbol = NetworkGroupLookup.NetworkProductFrameGroupLookup._productFrame
GroupNameSymbol; | |
88 if (frame[symbol]) | |
89 return frame[symbol]; | |
90 frame[symbol] = this._lookupFrameStacktraceName(frame) || frameParsedURL.hos
t || frame.name || '<iframe>'; | |
91 return frame[symbol]; | |
92 } | |
93 | |
94 /** | |
95 * @param {!SDK.ResourceTreeFrame} frame | |
96 * @return {?string} | |
97 */ | |
98 _lookupFrameStacktraceName(frame) { | |
99 // TODO(allada) This probably belongs in another shared module with some loo
kup that console will use for execution | |
100 // context name lookup. | |
101 var stackTrace = frame.creationStackTrace(); | |
102 var name; | |
103 while (stackTrace) { | |
104 for (var stack of stackTrace.callFrames) { | |
105 if (stack.url) | |
106 name = ProductRegistry.nameForUrl(new Common.ParsedURL(stack.url)); | |
107 if (name) | |
108 return name; | |
109 } | |
110 stackTrace = frame.parent; | |
111 } | |
112 return null; | |
113 } | |
114 }; | |
115 | |
116 /** | |
117 * @implements {Network.NetworkRowDecorator} | |
118 */ | |
119 NetworkGroupLookup.NetworkProductTypeGroupLookup = class { | |
120 /** | |
121 * @override | |
122 * @param {!Network.NetworkNode} node | |
123 */ | |
124 decorate(node) { | |
125 var request = node.request(); | |
126 var element = node.existingElement(); | |
127 if (!request || !element) | |
128 return; | |
129 var typeName = ProductRegistry.typeForUrl(request.parsedURL); | |
130 if (typeName === null) | |
131 return; | |
132 var icon = UI.Icon.create('smallicon-network-product'); | |
133 var color; | |
134 if (typeName === 1) { | |
135 color = Common.Color.fromRGBA([255, 252, 225, .6]); | |
136 icon.style.filter = 'hue-rotate(220deg) brightness(1.5)'; | |
137 } else if (typeName === 2) { | |
138 color = Common.Color.fromRGBA([211, 253, 211, .6]); | |
139 icon.style.filter = 'hue-rotate(-90deg) brightness(1.5)'; | |
140 } else { | |
141 color = Common.Color.fromRGBA([224, 247, 250, .6]); | |
142 } | |
143 node.setIconForColumn('product-extension', icon); | |
144 node.setBackgroundColor(color); | |
145 } | |
146 }; | |
147 | |
148 NetworkGroupLookup.NetworkProductFrameGroupLookup._productFrameGroupNameSymbol =
Symbol('ProductFrameGroupName'); | |
OLD | NEW |