| // 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} | |
| */ | |
| export default class NetworkFrameGrouper { | |
| /** | |
| * @param {!Network.NetworkLogView} parentView | |
| */ | |
| constructor(parentView) { | |
| this._parentView = parentView; | |
| /** @type {!Map<!SDK.ResourceTreeFrame, !FrameGroupNode>} */ | |
| this._activeGroups = new Map(); | |
| } | |
| /** | |
| * @override | |
| * @param {!SDK.NetworkRequest} request | |
| * @return {?Network.NetworkGroupNode} | |
| */ | |
| groupNodeForRequest(request) { | |
| const frame = SDK.ResourceTreeModel.frameForRequest(request); | |
| if (!frame || frame.isTopFrame()) { | |
| return null; | |
| } | |
| let groupNode = this._activeGroups.get(frame); | |
| if (groupNode) { | |
| return groupNode; | |
| } | |
| groupNode = new FrameGroupNode(this._parentView, frame); | |
| this._activeGroups.set(frame, groupNode); | |
| return groupNode; | |
| } | |
| /** | |
| * @override | |
| */ | |
| reset() { | |
| this._activeGroups.clear(); | |
| } | |
| } | |
| export class FrameGroupNode extends Network.NetworkGroupNode { | |
| /** | |
| * @param {!Network.NetworkLogView} parentView | |
| * @param {!SDK.ResourceTreeFrame} frame | |
| */ | |
| constructor(parentView, frame) { | |
| super(parentView); | |
| this._frame = frame; | |
| } | |
| /** | |
| * @override | |
| */ | |
| displayName() { | |
| return new Common.ParsedURL(this._frame.url).domain() || this._frame.name || '<iframe>'; | |
| } | |
| /** | |
| * @override | |
| * @param {!Element} cell | |
| * @param {string} columnId | |
| */ | |
| renderCell(cell, columnId) { | |
| super.renderCell(cell, columnId); | |
| const columnIndex = this.dataGrid.indexOfVisibleColumn(columnId); | |
| if (columnIndex === 0) { | |
| const name = this.displayName(); | |
| cell.appendChild(UI.Icon.create('largeicon-navigator-frame', 'network-frame-group-icon')); | |
| cell.createTextChild(name); | |
| cell.title = name; | |
| } | |
| } | |
| } | |
| /* Legacy exported object */ | |
| self.Network = self.Network || {}; | |
| /* Legacy exported object */ | |
| Network = Network || {}; | |
| /** | |
| * @constructor | |
| */ | |
| Network.NetworkFrameGrouper = NetworkFrameGrouper; | |
| /** | |
| * @constructor | |
| */ | |
| Network.FrameGroupNode = FrameGroupNode; |