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

Side by Side Diff: Source/devtools/front_end/timeline/TimelineUIUtils.js

Issue 341483005: Timeline: remove redundant header from frame statistics (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: rebased, fixed test Created 6 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « Source/devtools/front_end/timeline/TimelinePanel.js ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Google Inc. All rights reserved. 2 * Copyright (C) 2013 Google Inc. All rights reserved.
3 * Copyright (C) 2012 Intel Inc. All rights reserved. 3 * Copyright (C) 2012 Intel Inc. All rights reserved.
4 * 4 *
5 * Redistribution and use in source and binary forms, with or without 5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are 6 * modification, are permitted provided that the following conditions are
7 * met: 7 * met:
8 * 8 *
9 * * Redistributions of source code must retain the above copyright 9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 359 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 rowElement.createTextChild(WebInspector.UIString("%s %s", formatter(val ue), category.title)); 370 rowElement.createTextChild(WebInspector.UIString("%s %s", formatter(val ue), category.title));
371 } 371 }
372 return element; 372 return element;
373 } 373 }
374 374
375 /** 375 /**
376 * @param {!WebInspector.TimelineFrameModel} frameModel 376 * @param {!WebInspector.TimelineFrameModel} frameModel
377 * @param {!WebInspector.TimelineFrame} frame 377 * @param {!WebInspector.TimelineFrame} frame
378 * @return {!Element} 378 * @return {!Element}
379 */ 379 */
380 WebInspector.TimelineUIUtils.generatePopupContentForFrame = function(frameModel, frame) 380 WebInspector.TimelineUIUtils.generateDetailsContentForFrame = function(frameMode l, frame)
381 { 381 {
382 var contentHelper = new WebInspector.TimelinePopupContentHelper(WebInspector .UIString("Frame")); 382 var contentHelper = new WebInspector.TimelineDetailsContentHelper(null, null , true);
383 var durationInMillis = frame.endTime - frame.startTime; 383 var durationInMillis = frame.endTime - frame.startTime;
384 var durationText = WebInspector.UIString("%s (at %s)", Number.millisToString (frame.endTime - frame.startTime, true), 384 var durationText = WebInspector.UIString("%s (at %s)", Number.millisToString (frame.endTime - frame.startTime, true),
385 Number.millisToString(frame.startTimeOffset, true)); 385 Number.millisToString(frame.startTimeOffset, true));
386 contentHelper.appendTextRow(WebInspector.UIString("Duration"), durationText) ; 386 contentHelper.appendTextRow(WebInspector.UIString("Duration"), durationText) ;
387 contentHelper.appendTextRow(WebInspector.UIString("FPS"), Math.floor(1000 / durationInMillis)); 387 contentHelper.appendTextRow(WebInspector.UIString("FPS"), Math.floor(1000 / durationInMillis));
388 contentHelper.appendTextRow(WebInspector.UIString("CPU time"), Number.millis ToString(frame.cpuTime, true)); 388 contentHelper.appendTextRow(WebInspector.UIString("CPU time"), Number.millis ToString(frame.cpuTime, true));
389 contentHelper.appendElementRow(WebInspector.UIString("Aggregated Time"), 389 contentHelper.appendElementRow(WebInspector.UIString("Aggregated Time"),
390 WebInspector.TimelineUIUtils._generateAggregatedInfo(frame.timeByCategor y)); 390 WebInspector.TimelineUIUtils._generateAggregatedInfo(frame.timeByCategor y));
391 if (WebInspector.experimentsSettings.layersPanel.isEnabled() && frame.layerT ree) { 391 if (WebInspector.experimentsSettings.layersPanel.isEnabled() && frame.layerT ree) {
392 contentHelper.appendElementRow(WebInspector.UIString("Layer tree"), 392 contentHelper.appendElementRow(WebInspector.UIString("Layer tree"),
393 WebInspector.Linkifier.linkifyUsingReveal er(frame.layerTree, WebInspector.UIString("show"))); 393 WebInspector.Linkifier.linkifyUsingReveal er(frame.layerTree, WebInspector.UIString("show")));
394 } 394 }
395 return contentHelper.contentTable();
396 }
397
398 /**
399 * @param {!WebInspector.FrameStatistics} statistics
400 * @return {!Element}
401 */
402 WebInspector.TimelineUIUtils.generatePopupContentForFrameStatistics = function(s tatistics)
403 {
404 /**
405 * @param {number} time
406 */
407 function formatTimeAndFPS(time)
408 {
409 return WebInspector.UIString("%s (%.0f FPS)", Number.millisToString(time , true), 1 / time);
410 }
411
412 var contentHelper = new WebInspector.TimelineDetailsContentHelper(null, null , false);
413 contentHelper.appendTextRow(WebInspector.UIString("Minimum Time"), formatTim eAndFPS(statistics.minDuration));
414 contentHelper.appendTextRow(WebInspector.UIString("Average Time"), formatTim eAndFPS(statistics.average));
415 contentHelper.appendTextRow(WebInspector.UIString("Maximum Time"), formatTim eAndFPS(statistics.maxDuration));
416 contentHelper.appendTextRow(WebInspector.UIString("Standard Deviation"), Num ber.millisToString(statistics.stddev, true));
417
418 return contentHelper.element; 395 return contentHelper.element;
419 } 396 }
420 397
421 /** 398 /**
422 * @param {!CanvasRenderingContext2D} context 399 * @param {!CanvasRenderingContext2D} context
423 * @param {number} width 400 * @param {number} width
424 * @param {number} height 401 * @param {number} height
425 * @param {string} color0 402 * @param {string} color0
426 * @param {string} color1 403 * @param {string} color1
427 * @param {string} color2 404 * @param {string} color2
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
467 "}"; 444 "}";
468 } 445 }
469 446
470 /** 447 /**
471 * @param {!WebInspector.TimelineModel.Record} record 448 * @param {!WebInspector.TimelineModel.Record} record
472 * @param {!WebInspector.TimelineModel} model 449 * @param {!WebInspector.TimelineModel} model
473 * @param {!WebInspector.Linkifier} linkifier 450 * @param {!WebInspector.Linkifier} linkifier
474 * @param {function(!DocumentFragment)} callback 451 * @param {function(!DocumentFragment)} callback
475 * @param {boolean} loadedFromFile 452 * @param {boolean} loadedFromFile
476 */ 453 */
477 WebInspector.TimelineUIUtils.generatePopupContent = function(record, model, link ifier, callback, loadedFromFile) 454 WebInspector.TimelineUIUtils.generateDetailsContent = function(record, model, li nkifier, callback, loadedFromFile)
478 { 455 {
479 var imageElement = /** @type {?Element} */ (record.getUserObject("TimelineUI Utils::preview-element") || null); 456 var imageElement = /** @type {?Element} */ (record.getUserObject("TimelineUI Utils::preview-element") || null);
480 var relatedNode = null; 457 var relatedNode = null;
481 var recordData = record.data(); 458 var recordData = record.data();
482 var barrier = new CallbackBarrier(); 459 var barrier = new CallbackBarrier();
483 if (!imageElement && WebInspector.TimelineUIUtils.needsPreviewElement(record .type())) 460 if (!imageElement && WebInspector.TimelineUIUtils.needsPreviewElement(record .type()))
484 WebInspector.DOMPresentationUtils.buildImagePreviewContents(record.targe t(), recordData["url"], false, barrier.createCallback(saveImage)); 461 WebInspector.DOMPresentationUtils.buildImagePreviewContents(record.targe t(), recordData["url"], false, barrier.createCallback(saveImage));
485 if (recordData["backendNodeId"]) 462 if (recordData["backendNodeId"])
486 record.target().domModel.pushNodesByBackendIdsToFrontend([recordData["ba ckendNodeId"]], barrier.createCallback(setRelatedNode)); 463 record.target().domModel.pushNodesByBackendIdsToFrontend([recordData["ba ckendNodeId"]], barrier.createCallback(setRelatedNode));
487 barrier.callWhenDone(callbackWrapper); 464 barrier.callWhenDone(callbackWrapper);
(...skipping 11 matching lines...) Expand all
499 * @param {?Array.<!DOMAgent.NodeId>} nodeIds 476 * @param {?Array.<!DOMAgent.NodeId>} nodeIds
500 */ 477 */
501 function setRelatedNode(nodeIds) 478 function setRelatedNode(nodeIds)
502 { 479 {
503 if (nodeIds) 480 if (nodeIds)
504 relatedNode = record.target().domModel.nodeForId(nodeIds[0]); 481 relatedNode = record.target().domModel.nodeForId(nodeIds[0]);
505 } 482 }
506 483
507 function callbackWrapper() 484 function callbackWrapper()
508 { 485 {
509 callback(WebInspector.TimelineUIUtils._generatePopupContentSynchronously (record, model, linkifier, imageElement, relatedNode, loadedFromFile)); 486 callback(WebInspector.TimelineUIUtils._generateDetailsContentSynchronous ly(record, model, linkifier, imageElement, relatedNode, loadedFromFile));
510 } 487 }
511 } 488 }
512 489
513 /** 490 /**
514 * @param {!WebInspector.TimelineModel.Record} record 491 * @param {!WebInspector.TimelineModel.Record} record
515 * @param {!WebInspector.TimelineModel} model 492 * @param {!WebInspector.TimelineModel} model
516 * @param {!WebInspector.Linkifier} linkifier 493 * @param {!WebInspector.Linkifier} linkifier
517 * @param {?Element} imagePreviewElement 494 * @param {?Element} imagePreviewElement
518 * @param {?WebInspector.DOMNode} relatedNode 495 * @param {?WebInspector.DOMNode} relatedNode
519 * @param {boolean} loadedFromFile 496 * @param {boolean} loadedFromFile
520 * @return {!DocumentFragment} 497 * @return {!DocumentFragment}
521 */ 498 */
522 WebInspector.TimelineUIUtils._generatePopupContentSynchronously = function(recor d, model, linkifier, imagePreviewElement, relatedNode, loadedFromFile) 499 WebInspector.TimelineUIUtils._generateDetailsContentSynchronously = function(rec ord, model, linkifier, imagePreviewElement, relatedNode, loadedFromFile)
523 { 500 {
524 var fragment = document.createDocumentFragment(); 501 var fragment = document.createDocumentFragment();
525 if (record.children().length) 502 if (record.children().length)
526 fragment.appendChild(WebInspector.TimelineUIUtils.generatePieChart(recor d.aggregatedStats(), record.category(), record.selfTime())); 503 fragment.appendChild(WebInspector.TimelineUIUtils.generatePieChart(recor d.aggregatedStats(), record.category(), record.selfTime()));
527 else 504 else
528 fragment.appendChild(WebInspector.TimelineUIUtils.generatePieChart(recor d.aggregatedStats())); 505 fragment.appendChild(WebInspector.TimelineUIUtils.generatePieChart(recor d.aggregatedStats()));
529 506
530 const recordTypes = WebInspector.TimelineModel.RecordType; 507 const recordTypes = WebInspector.TimelineModel.RecordType;
531 508
532 // The messages may vary per record.type(); 509 // The messages may vary per record.type();
(...skipping 478 matching lines...) Expand 10 before | Expand all | Expand 10 after
1011 for (var i = 0; i < stackTrace.length; ++i) { 988 for (var i = 0; i < stackTrace.length; ++i) {
1012 var stackFrame = stackTrace[i]; 989 var stackFrame = stackTrace[i];
1013 var row = stackTraceElement.createChild("div"); 990 var row = stackTraceElement.createChild("div");
1014 row.createTextChild(stackFrame.functionName || WebInspector.UIString ("(anonymous function)")); 991 row.createTextChild(stackFrame.functionName || WebInspector.UIString ("(anonymous function)"));
1015 row.createTextChild(" @ "); 992 row.createTextChild(" @ ");
1016 var urlElement = this._linkifier.linkifyLocation(this._target, stack Frame.url, stackFrame.lineNumber - 1); 993 var urlElement = this._linkifier.linkifyLocation(this._target, stack Frame.url, stackFrame.lineNumber - 1);
1017 row.appendChild(urlElement); 994 row.appendChild(urlElement);
1018 } 995 }
1019 } 996 }
1020 } 997 }
OLDNEW
« no previous file with comments | « Source/devtools/front_end/timeline/TimelinePanel.js ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698