Index: third_party/WebKit/Source/devtools/front_end/network/NetworkGroupers.js |
diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkGroupers.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkGroupers.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..70c089de370fd58ab4d9a5ec6e0c053e9aaa2d12 |
--- /dev/null |
+++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkGroupers.js |
@@ -0,0 +1,65 @@ |
+// Copyright 2017 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+/** |
+ * @implements {Network.GroupLookupInterface} |
+ */ |
+Network.ProductGrouper = class { |
+ /** |
+ * @override |
+ * @param {!SDK.NetworkRequest} request |
+ * @return {?*} |
+ */ |
+ groupForRequest(request) { |
+ var productRegistry = ProductRegistry.existingInstance(); |
+ if (!productRegistry) |
+ return null; |
+ var productName = productRegistry.nameForUrl(request.parsedURL); |
+ if (!productName) |
+ return null; |
+ return productName; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {!*} key |
+ * @return {string} |
+ */ |
+ groupName(key) { |
+ return /** @type {string} */ (key); |
+ } |
+}; |
+ |
+/** |
+ * @implements {Network.GroupLookupInterface} |
+ */ |
+Network.FrameGrouper = class { |
+ /** |
+ * @override |
+ * @param {!SDK.NetworkRequest} request |
+ * @return {?*} |
+ */ |
+ groupForRequest(request) { |
+ var resourceTreeModel = request.networkManager().target().model(SDK.ResourceTreeModel); |
+ if (!resourceTreeModel) |
+ return null; |
+ var frame = resourceTreeModel.frameForId(request.frameId); |
+ if (!frame || frame.isMainFrame()) |
+ return null; |
+ return frame; |
+ } |
+ |
+ /** |
+ * @override |
+ * @param {!*} frameArg |
+ * @return {string} |
+ */ |
+ groupName(frameArg) { |
+ var frame = /** @type {!SDK.ResourceTreeFrame} */ (frameArg); |
+ var productRegistry = ProductRegistry.existingInstance(); |
+ var entry = productRegistry ? productRegistry.entryForFrame(frame) : null; |
+ if (entry) |
+ return entry.name; |
+ return (new Common.ParsedURL(frame.url)).host || frame.name || '<iframe>'; |
+ } |
+}; |