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

Unified Diff: third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js

Issue 2859343002: DevTools: Add Product field in timeline event details. (Closed)
Patch Set: . 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js
diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js
index 28f3e7bb359f6daf366764b1d24ceaf8c3af734b..bf5f41fedd46e37c480ab8427d0be97eadf964ac 100644
--- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js
+++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineUIUtils.js
@@ -688,51 +688,35 @@ Timeline.TimelineUIUtils = class {
*/
static async buildTraceEventDetails(event, model, linkifier, detailed) {
var maybeTarget = model.targetByEvent(event);
- if (!maybeTarget) {
- return Timeline.TimelineUIUtils._buildTraceEventDetailsSynchronously(
- event, model, linkifier, detailed, null);
- }
-
- var target = /** @type {!SDK.Target} */ (maybeTarget);
- if (typeof event[Timeline.TimelineUIUtils._previewElementSymbol] === 'undefined') {
- var previewElement = null;
- var url = TimelineModel.TimelineData.forEvent(event).url;
- if (url)
- previewElement = await Components.DOMPresentationUtils.buildImagePreviewContents(target, url, false);
- else if (TimelineModel.TimelineData.forEvent(event).picture)
- previewElement = await Timeline.TimelineUIUtils.buildPicturePreviewContent(event, target);
- event[Timeline.TimelineUIUtils._previewElementSymbol] = previewElement;
- }
+ var relatedNodesMap = null;
allada 2017/05/05 01:27:38 nit: When you assign null to a variable like this
alph 2017/05/05 21:46:41 Done.
+ if (maybeTarget) {
+ var target = /** @type {!SDK.Target} */ (maybeTarget);
+ if (typeof event[Timeline.TimelineUIUtils._previewElementSymbol] === 'undefined') {
+ var previewElement = null;
+ var url = TimelineModel.TimelineData.forEvent(event).url;
+ if (url)
+ previewElement = await Components.DOMPresentationUtils.buildImagePreviewContents(target, url, false);
+ else if (TimelineModel.TimelineData.forEvent(event).picture)
+ previewElement = await Timeline.TimelineUIUtils.buildPicturePreviewContent(event, target);
+ event[Timeline.TimelineUIUtils._previewElementSymbol] = previewElement;
+ }
- var nodeIdsToResolve = new Set();
- var timelineData = TimelineModel.TimelineData.forEvent(event);
- if (timelineData.backendNodeId)
- nodeIdsToResolve.add(timelineData.backendNodeId);
- var invalidationTrackingEvents = TimelineModel.InvalidationTracker.invalidationEventsFor(event);
- if (invalidationTrackingEvents)
- Timeline.TimelineUIUtils._collectInvalidationNodeIds(nodeIdsToResolve, invalidationTrackingEvents);
- var relatedNodes = null;
- if (nodeIdsToResolve.size) {
- var domModel = target.model(SDK.DOMModel);
- if (domModel) {
- relatedNodes = await new Promise(fulfill =>
- domModel.pushNodesByBackendIdsToFrontend(nodeIdsToResolve, fulfill));
+ var nodeIdsToResolve = new Set();
allada 2017/05/05 01:27:38 nit: also here, closure only knows it's a set, but
alph 2017/05/05 21:46:40 Done. Though I just moved the code. ;-)
+ var timelineData = TimelineModel.TimelineData.forEvent(event);
+ if (timelineData.backendNodeId)
+ nodeIdsToResolve.add(timelineData.backendNodeId);
+ var invalidationTrackingEvents = TimelineModel.InvalidationTracker.invalidationEventsFor(event);
+ if (invalidationTrackingEvents)
+ Timeline.TimelineUIUtils._collectInvalidationNodeIds(nodeIdsToResolve, invalidationTrackingEvents);
+ if (nodeIdsToResolve.size) {
+ var domModel = target.model(SDK.DOMModel);
+ if (domModel) {
+ relatedNodesMap =
+ await new Promise(fulfill => domModel.pushNodesByBackendIdsToFrontend(nodeIdsToResolve, fulfill));
+ }
}
}
- return Timeline.TimelineUIUtils._buildTraceEventDetailsSynchronously(
- event, model, linkifier, detailed, relatedNodes);
- }
-
- /**
- * @param {!SDK.TracingModel.Event} event
- * @param {!TimelineModel.TimelineModel} model
- * @param {!Components.Linkifier} linkifier
- * @param {boolean} detailed
- * @param {?Map<number, ?SDK.DOMNode>} relatedNodesMap
- * @return {!DocumentFragment}
- */
- static _buildTraceEventDetailsSynchronously(event, model, linkifier, detailed, relatedNodesMap) {
var recordTypes = TimelineModel.TimelineModel.RecordType;
// This message may vary per event.name;
var relatedNodeLabel;
@@ -744,6 +728,7 @@ Timeline.TimelineUIUtils = class {
var eventData = event.args['data'];
var timelineData = TimelineModel.TimelineData.forEvent(event);
var initiator = timelineData.initiator();
+ var url = null;
if (timelineData.warning)
contentHelper.appendWarningRow(event);
@@ -785,7 +770,7 @@ Timeline.TimelineUIUtils = class {
case recordTypes.ResourceReceiveResponse:
case recordTypes.ResourceReceivedData:
case recordTypes.ResourceFinish:
- var url = timelineData.url;
+ url = timelineData.url;
if (url)
contentHelper.appendElementRow(Common.UIString('Resource'), Components.Linkifier.linkifyURL(url));
if (eventData['requestMethod'])
@@ -809,7 +794,7 @@ Timeline.TimelineUIUtils = class {
break;
case recordTypes.CompileScript:
case recordTypes.EvaluateScript:
- var url = eventData && eventData['url'];
+ url = eventData && eventData['url'];
if (url) {
contentHelper.appendLocationRow(
Common.UIString('Script'), url, eventData['lineNumber'], eventData['columnNumber']);
@@ -834,13 +819,12 @@ Timeline.TimelineUIUtils = class {
case recordTypes.ResizeImage:
case recordTypes.DrawLazyPixelRef:
relatedNodeLabel = Common.UIString('Owner Element');
- if (timelineData.url) {
- contentHelper.appendElementRow(
- Common.UIString('Image URL'), Components.Linkifier.linkifyURL(timelineData.url));
- }
+ url = timelineData.url;
+ if (url)
+ contentHelper.appendElementRow(Common.UIString('Image URL'), Components.Linkifier.linkifyURL(url));
break;
case recordTypes.ParseAuthorStyleSheet:
- var url = eventData['styleSheetUrl'];
+ url = eventData['styleSheetUrl'];
if (url)
contentHelper.appendElementRow(Common.UIString('Stylesheet URL'), Components.Linkifier.linkifyURL(url));
break;
@@ -879,9 +863,9 @@ Timeline.TimelineUIUtils = class {
break;
case recordTypes.ParseHTML:
var beginData = event.args['beginData'];
- var url = beginData['url'];
var startLine = beginData['startLine'] - 1;
var endLine = event.args['endData'] ? event.args['endData']['endLine'] - 1 : undefined;
+ url = beginData['url'];
if (url)
contentHelper.appendLocationRange(Common.UIString('Range'), url, startLine, endLine);
break;
@@ -908,6 +892,8 @@ Timeline.TimelineUIUtils = class {
break;
}
+ await Timeline.TimelineUIUtils._appendProductToDetails(contentHelper, url || eventData && eventData['url']);
+
if (timelineData.timeWaitingForMainThread) {
contentHelper.appendTextRow(
Common.UIString('Time Waiting for Main Thread'),
@@ -943,6 +929,23 @@ Timeline.TimelineUIUtils = class {
}
/**
+ * @param {!Timeline.TimelineDetailsContentHelper} contentHelper
+ * @param {?string} url
+ * @return {!Promise}
+ */
+ static async _appendProductToDetails(contentHelper, url) {
+ var parsedURL = url && url.asParsedURL();
+ if (!parsedURL)
caseq 2017/05/05 00:58:15 _maybeAppend... then?
alph 2017/05/05 21:46:40 Done.
+ return;
+ var productNode = createElement('div');
+ contentHelper.appendElementRow(Common.UIString('Product'), productNode);
+ var registry = await ProductRegistry.instance();
+ var name = registry.nameForUrl(parsedURL);
allada 2017/05/05 01:27:38 If we do not find a name here, shouldn't we have n
alph 2017/05/05 21:46:40 Done.
+ if (name)
+ productNode.textContent = name;
+ }
+
+ /**
* @param {!TimelineModel.TimelineModel} model
* @param {number} startTime
* @param {number} endTime
@@ -1081,7 +1084,7 @@ Timeline.TimelineUIUtils = class {
* @param {!Components.Linkifier} linkifier
* @return {!Promise<!DocumentFragment>}
*/
- static buildNetworkRequestDetails(request, model, linkifier) {
+ static async buildNetworkRequestDetails(request, model, linkifier) {
const target = model.targetByEvent(request.children[0]);
const contentHelper = new Timeline.TimelineDetailsContentHelper(target, linkifier);
const category = Timeline.TimelineUIUtils.networkRequestCategory(request);
@@ -1091,6 +1094,7 @@ Timeline.TimelineUIUtils = class {
const duration = request.endTime - (request.startTime || -Infinity);
if (request.url)
contentHelper.appendElementRow(Common.UIString('URL'), Components.Linkifier.linkifyURL(request.url));
+ await Timeline.TimelineUIUtils._appendProductToDetails(contentHelper, request.url);
if (isFinite(duration))
contentHelper.appendTextRow(Common.UIString('Duration'), Number.millisToString(duration, true));
if (request.requestMethod)
@@ -1131,37 +1135,14 @@ Timeline.TimelineUIUtils = class {
}
}
- /**
- * @param {function(?Element)} fulfill
- */
- function action(fulfill) {
- Components.DOMPresentationUtils
- .buildImagePreviewContents(
- /** @type {!SDK.Target} */ (target), request.url, false)
- .then(saveImage);
- /**
- * @param {?Element} element
- */
- function saveImage(element) {
- request.previewElement = element;
- fulfill(request.previewElement);
- }
+ var preview = request.previewElement;
caseq 2017/05/05 00:58:15 let's drop preview and inline request.previewEleme
alph 2017/05/05 21:46:40 Done.
+ if (!preview && request.url && target) {
+ preview = await Components.DOMPresentationUtils.buildImagePreviewContents(target, request.url, false);
+ request.previewElement = preview;
}
- var previewPromise;
- if (request.previewElement)
- previewPromise = Promise.resolve(request.previewElement);
- else
- previewPromise = request.url && target ? new Promise(action) : Promise.resolve(null);
- /**
- * @param {?Element} element
- * @return {!DocumentFragment}
- */
- function appendPreview(element) {
- if (element)
- contentHelper.appendElementRow(Common.UIString('Preview'), request.previewElement);
- return contentHelper.fragment;
- }
- return previewPromise.then(appendPreview);
+ if (preview)
+ contentHelper.appendElementRow(Common.UIString('Preview'), request.previewElement);
+ return contentHelper.fragment;
}
/**

Powered by Google App Engine
This is Rietveld 408576698