OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
6 * met: | 6 * met: |
7 * | 7 * |
8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
456 WebInspector.TimelineOverviewBase.call(this, model); | 456 WebInspector.TimelineOverviewBase.call(this, model); |
457 this.element.id = "timeline-overview-memory"; | 457 this.element.id = "timeline-overview-memory"; |
458 | 458 |
459 this._maxHeapSizeLabel = this.element.createChild("div", "max memory-graph-l
abel"); | 459 this._maxHeapSizeLabel = this.element.createChild("div", "max memory-graph-l
abel"); |
460 this._minHeapSizeLabel = this.element.createChild("div", "min memory-graph-l
abel"); | 460 this._minHeapSizeLabel = this.element.createChild("div", "min memory-graph-l
abel"); |
461 } | 461 } |
462 | 462 |
463 WebInspector.TimelineMemoryOverview.prototype = { | 463 WebInspector.TimelineMemoryOverview.prototype = { |
464 update: function() | 464 update: function() |
465 { | 465 { |
| 466 this._resetCanvas(); |
| 467 |
466 var records = this._model.records; | 468 var records = this._model.records; |
467 if (!records.length) | 469 if (!records.length) |
468 return; | 470 return; |
469 | 471 |
470 this._resetCanvas(); | |
471 | |
472 const lowerOffset = 3; | 472 const lowerOffset = 3; |
473 var maxUsedHeapSize = 0; | 473 var maxUsedHeapSize = 0; |
474 var minUsedHeapSize = 100000000000; | 474 var minUsedHeapSize = 100000000000; |
475 var minTime = this._model.minimumRecordTime(); | 475 var minTime = this._model.minimumRecordTime(); |
476 var maxTime = this._model.maximumRecordTime(); | 476 var maxTime = this._model.maximumRecordTime(); |
477 WebInspector.TimelinePresentationModel.forAllRecords(records, function(r
) { | 477 WebInspector.TimelinePresentationModel.forAllRecords(records, function(r
) { |
478 maxUsedHeapSize = Math.max(maxUsedHeapSize, r.usedHeapSize || maxUse
dHeapSize); | 478 maxUsedHeapSize = Math.max(maxUsedHeapSize, r.usedHeapSize || maxUse
dHeapSize); |
479 minUsedHeapSize = Math.min(minUsedHeapSize, r.usedHeapSize || minUse
dHeapSize); | 479 minUsedHeapSize = Math.min(minUsedHeapSize, r.usedHeapSize || minUse
dHeapSize); |
480 }); | 480 }); |
481 minUsedHeapSize = Math.min(minUsedHeapSize, maxUsedHeapSize); | 481 minUsedHeapSize = Math.min(minUsedHeapSize, maxUsedHeapSize); |
482 | 482 |
483 var width = this._canvas.width; | 483 var width = this._canvas.width; |
484 var height = this._canvas.height - lowerOffset; | 484 var height = this._canvas.height - lowerOffset; |
485 var xFactor = width / (maxTime - minTime); | 485 var xFactor = width / (maxTime - minTime); |
486 var yFactor = height / Math.max(maxUsedHeapSize - minUsedHeapSize, 1); | 486 var yFactor = height / Math.max(maxUsedHeapSize - minUsedHeapSize, 1); |
487 | 487 |
488 var histogram = new Array(width); | 488 var histogram = new Array(width); |
489 WebInspector.TimelinePresentationModel.forAllRecords(records, function(r
) { | 489 WebInspector.TimelinePresentationModel.forAllRecords(records, function(r
) { |
490 if (!r.usedHeapSize) | 490 if (!r.usedHeapSize) |
491 return; | 491 return; |
492 var x = Math.round((WebInspector.TimelineModel.endTimeInSeconds(r) -
minTime) * xFactor); | 492 var x = Math.round((WebInspector.TimelineModel.endTimeInSeconds(r) -
minTime) * xFactor); |
493 var y = Math.round((r.usedHeapSize - minUsedHeapSize) * yFactor); | 493 var y = Math.round((r.usedHeapSize - minUsedHeapSize) * yFactor); |
494 histogram[x] = Math.max(histogram[x] || 0, y); | 494 histogram[x] = Math.max(histogram[x] || 0, y); |
495 }); | 495 }); |
496 | 496 |
497 var ctx = this._context; | |
498 this._clear(ctx); | |
499 | |
500 height++; // +1 so that the border always fit into the canvas area. | 497 height++; // +1 so that the border always fit into the canvas area. |
501 | 498 |
502 var y = 0; | 499 var y = 0; |
503 var isFirstPoint = true; | 500 var isFirstPoint = true; |
| 501 var ctx = this._context; |
504 ctx.beginPath(); | 502 ctx.beginPath(); |
505 ctx.moveTo(0, this._canvas.height); | 503 ctx.moveTo(0, this._canvas.height); |
506 for (var x = 0; x < histogram.length; x++) { | 504 for (var x = 0; x < histogram.length; x++) { |
507 if (typeof histogram[x] === "undefined") | 505 if (typeof histogram[x] === "undefined") |
508 continue; | 506 continue; |
509 if (isFirstPoint) { | 507 if (isFirstPoint) { |
510 isFirstPoint = false; | 508 isFirstPoint = false; |
511 y = histogram[x]; | 509 y = histogram[x]; |
512 ctx.lineTo(0, height - y); | 510 ctx.lineTo(0, height - y); |
513 } | 511 } |
(...skipping 10 matching lines...) Expand all Loading... |
524 ctx.strokeStyle = "rgba(20,0,0,0.8)"; | 522 ctx.strokeStyle = "rgba(20,0,0,0.8)"; |
525 ctx.stroke(); | 523 ctx.stroke(); |
526 | 524 |
527 ctx.fillStyle = "rgba(214,225,254, 0.8);"; | 525 ctx.fillStyle = "rgba(214,225,254, 0.8);"; |
528 ctx.fill(); | 526 ctx.fill(); |
529 | 527 |
530 this._maxHeapSizeLabel.textContent = Number.bytesToString(maxUsedHeapSiz
e); | 528 this._maxHeapSizeLabel.textContent = Number.bytesToString(maxUsedHeapSiz
e); |
531 this._minHeapSizeLabel.textContent = Number.bytesToString(minUsedHeapSiz
e); | 529 this._minHeapSizeLabel.textContent = Number.bytesToString(minUsedHeapSiz
e); |
532 }, | 530 }, |
533 | 531 |
534 _clear: function(ctx) | |
535 { | |
536 ctx.fillStyle = "rgba(255,255,255,0.8)"; | |
537 ctx.fillRect(0, 0, this._canvas.width, this._canvas.height); | |
538 }, | |
539 | |
540 __proto__: WebInspector.TimelineOverviewBase.prototype | 532 __proto__: WebInspector.TimelineOverviewBase.prototype |
541 } | 533 } |
542 | 534 |
543 /** | 535 /** |
544 * @constructor | 536 * @constructor |
545 * @extends {WebInspector.TimelineOverviewBase} | 537 * @extends {WebInspector.TimelineOverviewBase} |
546 * @param {WebInspector.TimelineModel} model | 538 * @param {WebInspector.TimelineModel} model |
547 */ | 539 */ |
548 WebInspector.TimelineEventOverview = function(model) | 540 WebInspector.TimelineEventOverview = function(model) |
549 { | 541 { |
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
963 WebInspector.TimelineWindowFilter.prototype = { | 955 WebInspector.TimelineWindowFilter.prototype = { |
964 /** | 956 /** |
965 * @param {!WebInspector.TimelinePresentationModel.Record} record | 957 * @param {!WebInspector.TimelinePresentationModel.Record} record |
966 * @return {boolean} | 958 * @return {boolean} |
967 */ | 959 */ |
968 accept: function(record) | 960 accept: function(record) |
969 { | 961 { |
970 return record.lastChildEndTime >= this._pane._windowStartTime && record.
startTime <= this._pane._windowEndTime; | 962 return record.lastChildEndTime >= this._pane._windowStartTime && record.
startTime <= this._pane._windowEndTime; |
971 } | 963 } |
972 } | 964 } |
OLD | NEW |