Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(472)

Side by Side Diff: third_party/WebKit/Source/devtools/front_end/network_group_lookup/NetworkProductGroupLookup.js

Issue 2839273003: [Devtools] New structure and colorize rows for network products (Closed)
Patch Set: Merge remote-tracking branch 'origin/master' into NEW_DEPENDENCY_PRODUCTS Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(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');
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698