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: third_party/WebKit/Source/devtools/front_end/timeline/TimelineEventOverview.js

Issue 2313093004: Timeline: always create filmstrip model and share single instance of it (Closed)
Patch Set: Timeline: always create filmstrip model Created 4 years, 3 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
OLDNEW
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 414 matching lines...) Expand 10 before | Expand all | Expand 10 after
425 } 425 }
426 }, 426 },
427 427
428 __proto__: WebInspector.TimelineEventOverview.prototype 428 __proto__: WebInspector.TimelineEventOverview.prototype
429 } 429 }
430 430
431 /** 431 /**
432 * @constructor 432 * @constructor
433 * @extends {WebInspector.TimelineEventOverview} 433 * @extends {WebInspector.TimelineEventOverview}
434 * @param {!WebInspector.TimelineModel} model 434 * @param {!WebInspector.TimelineModel} model
435 * @param {!WebInspector.TracingModel} tracingModel 435 * @param {!WebInspector.FilmStripModel} filmStripModel
436 */ 436 */
437 WebInspector.TimelineFilmStripOverview = function(model, tracingModel) 437 WebInspector.TimelineFilmStripOverview = function(model, filmStripModel)
438 { 438 {
439 WebInspector.TimelineEventOverview.call(this, "filmstrip", null, model); 439 WebInspector.TimelineEventOverview.call(this, "filmstrip", null, model);
440 this._tracingModel = tracingModel; 440 this._filmStripModel = filmStripModel;
441 this.reset(); 441 this.reset();
442 } 442 }
443 443
444 WebInspector.TimelineFilmStripOverview.Padding = 2; 444 WebInspector.TimelineFilmStripOverview.Padding = 2;
445 445
446 WebInspector.TimelineFilmStripOverview.prototype = { 446 WebInspector.TimelineFilmStripOverview.prototype = {
447 /** 447 /**
448 * @override 448 * @override
449 */ 449 */
450 update: function() 450 update: function()
451 { 451 {
452 WebInspector.TimelineEventOverview.prototype.update.call(this); 452 WebInspector.TimelineEventOverview.prototype.update.call(this);
453 if (!this._filmStripModel)
454 return;
455 var frames = this._filmStripModel.frames(); 453 var frames = this._filmStripModel.frames();
456 if (!frames.length) 454 if (!frames.length)
457 return; 455 return;
458 456
459 var drawGeneration = Symbol("drawGeneration"); 457 var drawGeneration = Symbol("drawGeneration");
460 this._drawGeneration = drawGeneration; 458 this._drawGeneration = drawGeneration;
461 this._imageByFrame(frames[0]).then(image => { 459 this._imageByFrame(frames[0]).then(image => {
462 if (this._drawGeneration !== drawGeneration) 460 if (this._drawGeneration !== drawGeneration)
463 return; 461 return;
464 if (!image.naturalWidth || !image.naturalHeight) 462 if (!image.naturalWidth || !image.naturalHeight)
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
496 return image.completePromise(); 494 return image.completePromise();
497 } 495 }
498 }, 496 },
499 497
500 /** 498 /**
501 * @param {number} imageWidth 499 * @param {number} imageWidth
502 * @param {number} imageHeight 500 * @param {number} imageHeight
503 */ 501 */
504 _drawFrames: function(imageWidth, imageHeight) 502 _drawFrames: function(imageWidth, imageHeight)
505 { 503 {
506 if (!this._filmStripModel || !imageWidth) 504 if (!imageWidth)
507 return; 505 return;
508 if (!this._filmStripModel.frames().length) 506 if (!this._filmStripModel.frames().length)
509 return; 507 return;
510 var padding = WebInspector.TimelineFilmStripOverview.Padding; 508 var padding = WebInspector.TimelineFilmStripOverview.Padding;
511 var width = this._canvas.width; 509 var width = this._canvas.width;
512 var zeroTime = this._tracingModel.minimumRecordTime(); 510 var zeroTime = this._filmStripModel.zeroTime();
513 var spanTime = this._tracingModel.maximumRecordTime() - zeroTime; 511 var spanTime = this._filmStripModel.spanTime();
514 var scale = spanTime / width; 512 var scale = spanTime / width;
515 var context = this._canvas.getContext("2d"); 513 var context = this._canvas.getContext("2d");
516 var drawGeneration = this._drawGeneration; 514 var drawGeneration = this._drawGeneration;
517 515
518 context.beginPath(); 516 context.beginPath();
519 for (var x = padding; x < width; x += imageWidth + 2 * padding) { 517 for (var x = padding; x < width; x += imageWidth + 2 * padding) {
520 var time = zeroTime + (x + imageWidth / 2) * scale; 518 var time = zeroTime + (x + imageWidth / 2) * scale;
521 var frame = this._filmStripModel.frameByTimestamp(time); 519 var frame = this._filmStripModel.frameByTimestamp(time);
522 if (!frame) 520 if (!frame)
523 continue; 521 continue;
(...skipping 17 matching lines...) Expand all
541 } 539 }
542 }, 540 },
543 541
544 /** 542 /**
545 * @override 543 * @override
546 * @param {number} x 544 * @param {number} x
547 * @return {!Promise<?Element>} 545 * @return {!Promise<?Element>}
548 */ 546 */
549 popoverElementPromise: function(x) 547 popoverElementPromise: function(x)
550 { 548 {
551 if (!this._filmStripModel || !this._filmStripModel.frames().length) 549 if (!this._filmStripModel.frames().length)
552 return Promise.resolve(/** @type {?Element} */ (null)); 550 return Promise.resolve(/** @type {?Element} */ (null));
553 551
554 var time = this._calculator.positionToTime(x); 552 var time = this._calculator.positionToTime(x);
555 var frame = this._filmStripModel.frameByTimestamp(time); 553 var frame = this._filmStripModel.frameByTimestamp(time);
556 if (frame === this._lastFrame) 554 if (frame === this._lastFrame)
557 return Promise.resolve(this._lastElement); 555 return Promise.resolve(this._lastElement);
558 var imagePromise = frame ? this._imageByFrame(frame) : Promise.resolve(t his._emptyImage); 556 var imagePromise = frame ? this._imageByFrame(frame) : Promise.resolve(t his._emptyImage);
559 return imagePromise.then(createFrameElement.bind(this)); 557 return imagePromise.then(createFrameElement.bind(this));
560 558
561 /** 559 /**
(...skipping 12 matching lines...) Expand all
574 } 572 }
575 }, 573 },
576 574
577 /** 575 /**
578 * @override 576 * @override
579 */ 577 */
580 reset: function() 578 reset: function()
581 { 579 {
582 this._lastFrame = undefined; 580 this._lastFrame = undefined;
583 this._lastElement = null; 581 this._lastElement = null;
584 this._filmStripModel = new WebInspector.FilmStripModel(this._tracingMode l);
585 /** @type {!Map<!WebInspector.FilmStripModel.Frame,!Promise<!HTMLImageEl ement>>} */ 582 /** @type {!Map<!WebInspector.FilmStripModel.Frame,!Promise<!HTMLImageEl ement>>} */
586 this._frameToImagePromise = new Map(); 583 this._frameToImagePromise = new Map();
587 this._imageWidth = 0; 584 this._imageWidth = 0;
588 }, 585 },
589 586
590 __proto__: WebInspector.TimelineEventOverview.prototype 587 __proto__: WebInspector.TimelineEventOverview.prototype
591 } 588 }
592 589
593 /** 590 /**
594 * @constructor 591 * @constructor
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
812 counters[group] = this._quantDuration; 809 counters[group] = this._quantDuration;
813 this._callback(counters); 810 this._callback(counters);
814 interval -= this._quantDuration; 811 interval -= this._quantDuration;
815 } 812 }
816 this._counters = []; 813 this._counters = [];
817 this._counters[group] = interval; 814 this._counters[group] = interval;
818 this._lastTime = time; 815 this._lastTime = time;
819 this._remainder = this._quantDuration - interval; 816 this._remainder = this._quantDuration - interval;
820 } 817 }
821 } 818 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698