| Index: third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js b/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js
|
| index 5936f76efacc558498248eaa753e88c7cbdb6b30..f9b4b4045171d2df172684468288dd4ad8e9c3a9 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/network/NetworkDataGridNode.js
|
| @@ -39,11 +39,10 @@ Network.NetworkNode = class extends DataGrid.SortableDataGridNode {
|
| super({});
|
| this._parentView = parentView;
|
| this._isHovered = false;
|
| + this._isProduct = false;
|
| this._showingInitiatorChain = false;
|
| /** @type {?SDK.NetworkRequest} */
|
| this._requestOrFirstKnownChildRequest = null;
|
| - /** @type {?Common.Color} */
|
| - this._backgroundColor = null;
|
| }
|
|
|
| /**
|
| @@ -65,6 +64,39 @@ Network.NetworkNode = class extends DataGrid.SortableDataGridNode {
|
| /**
|
| * @return {string}
|
| */
|
| + displayName() {
|
| + return '';
|
| + }
|
| +
|
| + /**
|
| + * @return {boolean}
|
| + */
|
| + isFromFrame() {
|
| + return false;
|
| + }
|
| +
|
| + /**
|
| + * @override
|
| + * @param {string} columnId
|
| + * @return {!Element}
|
| + */
|
| + createCell(columnId) {
|
| + var cell = this.createTD(columnId);
|
| + this.renderCell(cell, columnId);
|
| + return cell;
|
| + }
|
| +
|
| + /**
|
| + * @protected
|
| + * @param {!Element} cell
|
| + * @param {string} columnId
|
| + */
|
| + renderCell(cell, columnId) {
|
| + }
|
| +
|
| + /**
|
| + * @return {string}
|
| + */
|
| backgroundColor() {
|
| var bgColors = Network.NetworkNode._themedBackgroundColors();
|
| var color = this.isStriped() ? bgColors.Stripe : bgColors.Default;
|
| @@ -72,8 +104,10 @@ Network.NetworkNode = class extends DataGrid.SortableDataGridNode {
|
| color = color.blendWith(bgColors.Navigation);
|
| if (this.hovered())
|
| color = color.blendWith(bgColors.Hovered);
|
| - if (this._backgroundColor)
|
| - color = color.blendWith(this._backgroundColor);
|
| + if (this.isFromFrame())
|
| + color = color.blendWith(bgColors.FromFrame);
|
| + else if (this._isProduct)
|
| + color = color.blendWith(bgColors.IsProduct);
|
| if (this.isOnInitiatorPath())
|
| color = color.blendWith(bgColors.InitiatorPath);
|
| if (this.isOnInitiatedPath())
|
| @@ -185,20 +219,6 @@ Network.NetworkNode = class extends DataGrid.SortableDataGridNode {
|
| }
|
|
|
| /**
|
| - * @return {?Network.NetworkRequestNode}
|
| - */
|
| - asRequestNode() {
|
| - return null;
|
| - }
|
| -
|
| - /**
|
| - * @return {?Network.NetworkGroupNode}
|
| - */
|
| - asGroupNode() {
|
| - return null;
|
| - }
|
| -
|
| - /**
|
| * @override
|
| */
|
| clearFlatNodes() {
|
| @@ -239,7 +259,9 @@ Network.NetworkNode._backgroundColors = {
|
| Hovered: [235, 242, 252, 0.7],
|
| InitiatorPath: [58, 217, 58, 0.4],
|
| InitiatedPath: [217, 58, 58, 0.4],
|
| - Selected: [63, 81, 181, .6]
|
| + Selected: [63, 81, 181, .6],
|
| + FromFrame: [224, 247, 250, .4],
|
| + IsProduct: [255, 252, 225, .6],
|
| };
|
|
|
| /** @typedef {!{
|
| @@ -249,7 +271,9 @@ Network.NetworkNode._backgroundColors = {
|
| Hovered: !Common.Color,
|
| InitiatorPath: !Common.Color,
|
| InitiatedPath: !Common.Color,
|
| - Selected: !Common.Color
|
| + Selected: !Common.Color,
|
| + FromFrame: !Common.Color,
|
| + IsProduct: !Common.Color
|
| }} */
|
| Network.NetworkNode._SupportedBackgroundColors;
|
|
|
| @@ -277,36 +301,28 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
| this.selectable = true;
|
| this._isOnInitiatorPath = false;
|
| this._isOnInitiatedPath = false;
|
| + this._isFromFrame = false;
|
| + if (!Runtime.experiments.isEnabled('networkGroupingRequests'))
|
| + return;
|
| + var frame = request.resourceTreeFrame();
|
| + this._isFromFrame = frame ? !frame.isMainFrame() : false;
|
| }
|
|
|
| +
|
| /**
|
| * @param {!Network.NetworkNode} a
|
| * @param {!Network.NetworkNode} b
|
| * @return {number}
|
| */
|
| static NameComparator(a, b) {
|
| - var aGroupNode = a.asGroupNode();
|
| - var bGroupNode = b.asGroupNode();
|
| -
|
| - if ((!aGroupNode && bGroupNode) || (aGroupNode && !bGroupNode))
|
| - return aGroupNode ? 1 : -1;
|
| -
|
| - var aName;
|
| - var bName;
|
| - if (aGroupNode && bGroupNode) {
|
| - aName = aGroupNode.displayName();
|
| - bName = bGroupNode.displayName();
|
| - if (aName === bName)
|
| - return Network.NetworkRequestNode.RequestPropertyComparator('startTime', a, b);
|
| - } else {
|
| + var aName = a.displayName().toLowerCase();
|
| + var bName = b.displayName().toLowerCase();
|
| + if (aName === bName) {
|
| var aRequest = a.requestOrFirstKnownChildRequest();
|
| var bRequest = b.requestOrFirstKnownChildRequest();
|
| - if (!aRequest || !bRequest)
|
| - return aRequest ? 1 : -1;
|
| - aName = aRequest.name();
|
| - bName = bRequest.name();
|
| - if (aName === bName)
|
| + if (aRequest && bRequest)
|
| return aRequest.indentityCompare(bRequest);
|
| + return aRequest ? -1 : 1;
|
| }
|
| return aName < bName ? -1 : 1;
|
| }
|
| @@ -376,8 +392,8 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
| var bRequest = b.requestOrFirstKnownChildRequest();
|
| if (!aRequest || !bRequest)
|
| return !aRequest ? -1 : 1;
|
| - var aSimpleType = a.asRequestNode().displayType();
|
| - var bSimpleType = b.asRequestNode().displayType();
|
| + var aSimpleType = a.displayType();
|
| + var bSimpleType = b.displayType();
|
|
|
| if (aSimpleType > bSimpleType)
|
| return 1;
|
| @@ -624,6 +640,14 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
| }
|
|
|
| /**
|
| + * @override
|
| + * @return {boolean}
|
| + */
|
| + isFromFrame() {
|
| + return this._isFromFrame;
|
| + }
|
| +
|
| + /**
|
| * @return {string}
|
| */
|
| displayType() {
|
| @@ -639,18 +663,18 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
|
|
| /**
|
| * @override
|
| - * @return {!SDK.NetworkRequest}
|
| + * @return {string}
|
| */
|
| - request() {
|
| - return this._request;
|
| + displayName() {
|
| + return this._request.name();
|
| }
|
|
|
| /**
|
| * @override
|
| - * @return {!Network.NetworkRequestNode}
|
| + * @return {!SDK.NetworkRequest}
|
| */
|
| - asRequestNode() {
|
| - return this;
|
| + request() {
|
| + return this._request;
|
| }
|
|
|
| /**
|
| @@ -687,6 +711,17 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
| element.classList.toggle('network-navigation-row', this._isNavigationRequest);
|
| super.createCells(element);
|
| this._updateBackgroundColor();
|
| + if (!Runtime.experiments.isEnabled('networkGroupingRequests'))
|
| + return;
|
| + ProductRegistry.instance().then(productRegistry => {
|
| + var frame = this._request.resourceTreeFrame();
|
| + if (frame && frame.isMainFrame())
|
| + frame = null;
|
| + if (productRegistry.entryForUrl(this._request.parsedURL)) {
|
| + this._isProduct = true;
|
| + this._updateBackgroundColor();
|
| + }
|
| + });
|
| }
|
|
|
| /**
|
| @@ -700,22 +735,20 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
|
|
| /**
|
| * @override
|
| - * @param {string} columnIdentifier
|
| - * @return {!Element}
|
| + * @param {!Element} cell
|
| + * @param {string} columnId
|
| */
|
| - createCell(columnIdentifier) {
|
| - var cell = this.createTD(columnIdentifier);
|
| - switch (columnIdentifier) {
|
| + renderCell(cell, columnId) {
|
| + switch (columnId) {
|
| case 'name':
|
| this._renderNameCell(cell);
|
| break;
|
| case 'product':
|
| if (!Runtime.experiments.isEnabled('networkGroupingRequests')) {
|
| - this._setTextAndTitle(cell, this._request.responseHeaderValue(columnIdentifier) || '');
|
| + this._setTextAndTitle(cell, this._request.responseHeaderValue(columnId) || '');
|
| break;
|
| }
|
| - if (this.request())
|
| - ProductRegistry.instance().then(this._renderProductCell.bind(this, cell));
|
| + ProductRegistry.instance().then(this._renderProductCell.bind(this, cell));
|
| break;
|
| case 'method':
|
| this._setTextAndTitle(cell, this._request.requestMethod);
|
| @@ -764,11 +797,9 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
| this._setTextAndTitle(cell, '');
|
| break;
|
| default:
|
| - this._setTextAndTitle(cell, this._request.responseHeaderValue(columnIdentifier) || '');
|
| + this._setTextAndTitle(cell, this._request.responseHeaderValue(columnId) || '');
|
| break;
|
| }
|
| -
|
| - return cell;
|
| }
|
|
|
| /**
|
| @@ -869,35 +900,19 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
| * @param {!ProductRegistry.Registry} productRegistry
|
| */
|
| _renderProductCell(cell, productRegistry) {
|
| - var request = this.request();
|
| - if (!request)
|
| + var rowElement = this.existingElement();
|
| + if (!rowElement)
|
| return;
|
| - var entry = productRegistry.entryForUrl(request.parsedURL);
|
| + var frame = this._request.resourceTreeFrame();
|
| + if (frame && frame.isMainFrame())
|
| + frame = null;
|
| + var entry = frame ? productRegistry.entryForFrame(frame) : null;
|
| + if (!entry)
|
| + entry = productRegistry.entryForUrl(this._request.parsedURL);
|
| if (!entry)
|
| return;
|
| - this._setTextAndTitle(cell, entry.name);
|
| - if (entry.type !== null) {
|
| - var element = this.existingElement();
|
| - if (!element)
|
| - return;
|
| - switch (entry.type) {
|
| - case 0:
|
| - this._backgroundColor = Common.Color.fromRGBA([224, 247, 250, .6]);
|
| - cell.classList.add('product-ad');
|
| - break;
|
| - case 1:
|
| - this._backgroundColor = Common.Color.fromRGBA([255, 252, 225, .6]);
|
| - cell.classList.add('product-tracking');
|
| - break;
|
| - case 2:
|
| - this._backgroundColor = Common.Color.fromRGBA([211, 253, 211, .6]);
|
| - cell.classList.add('product-cdn');
|
| - break;
|
| - default:
|
| - this._backgroundColor = null;
|
| - }
|
| - this._updateBackgroundColor();
|
| - }
|
| + cell.textContent = entry.name;
|
| + cell.title = entry.name;
|
| }
|
|
|
| /**
|
| @@ -1056,59 +1071,18 @@ Network.NetworkRequestNode = class extends Network.NetworkNode {
|
| }
|
| };
|
|
|
| -/**
|
| - * @unrestricted
|
| - */
|
| Network.NetworkGroupNode = class extends Network.NetworkNode {
|
| /**
|
| - * @param {!Network.NetworkLogView} parentView
|
| - * @param {string} displayName
|
| - * @param {string=} sortKey
|
| - */
|
| - constructor(parentView, displayName, sortKey) {
|
| - super(parentView);
|
| - this._displayName = displayName;
|
| - this._name = sortKey;
|
| - }
|
| -
|
| - /**
|
| - * @override
|
| - * @return {?Network.NetworkGroupNode}
|
| - */
|
| - asGroupNode() {
|
| - return this;
|
| - }
|
| -
|
| - /**
|
| - * @return {string}
|
| - */
|
| - displayName() {
|
| - return this._displayName;
|
| - }
|
| -
|
| - /**
|
| - * @param {!Element} element
|
| - * @param {string} text
|
| - */
|
| - _setTextAndTitle(element, text) {
|
| - element.textContent = text;
|
| - element.title = text;
|
| - }
|
| -
|
| - /**
|
| * @override
|
| - * @param {string} columnIdentifier
|
| - * @return {!Element}
|
| + * @param {!Element} cell
|
| + * @param {string} columnId
|
| */
|
| - createCell(columnIdentifier) {
|
| - var cell = this.createTD(columnIdentifier);
|
| - if (columnIdentifier === 'name') {
|
| + renderCell(cell, columnId) {
|
| + if (columnId === 'name') {
|
| var leftPadding = this.leftPadding ? this.leftPadding + 'px' : '';
|
| cell.style.setProperty('padding-left', leftPadding);
|
| cell.classList.add('disclosure');
|
| - this._setTextAndTitle(cell, this._displayName);
|
| }
|
| - return cell;
|
| }
|
|
|
| /**
|
|
|