| Index: third_party/WebKit/Source/devtools/front_end/timeline/TimelineEventOverview.js
|
| diff --git a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineEventOverview.js b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineEventOverview.js
|
| index 71c8a933e07ce608d3807f08a9bc5d9895b6ef11..45b6cab911621837f78a7b118348fa15ef44fbe2 100644
|
| --- a/third_party/WebKit/Source/devtools/front_end/timeline/TimelineEventOverview.js
|
| +++ b/third_party/WebKit/Source/devtools/front_end/timeline/TimelineEventOverview.js
|
| @@ -364,7 +364,7 @@
|
| this._imageByFrame(frames[0]).then(image => {
|
| if (this._drawGeneration !== drawGeneration)
|
| return;
|
| - if (!image || !image.naturalWidth || !image.naturalHeight)
|
| + if (!image.naturalWidth || !image.naturalHeight)
|
| return;
|
| var imageHeight = this.height() - 2 * Timeline.TimelineFilmStripOverview.Padding;
|
| var imageWidth = Math.ceil(imageHeight * image.naturalWidth / image.naturalHeight);
|
| @@ -376,15 +376,34 @@
|
|
|
| /**
|
| * @param {!SDK.FilmStripModel.Frame} frame
|
| - * @return {!Promise<?HTMLImageElement>}
|
| + * @return {!Promise<!HTMLImageElement>}
|
| */
|
| _imageByFrame(frame) {
|
| var imagePromise = this._frameToImagePromise.get(frame);
|
| if (!imagePromise) {
|
| - imagePromise = frame.imageDataPromise().then(data => UI.loadImage(data ? 'data:image/jpg;base64,' + data : ''));
|
| + imagePromise = frame.imageDataPromise().then(createImage);
|
| this._frameToImagePromise.set(frame, imagePromise);
|
| }
|
| return imagePromise;
|
| +
|
| + /**
|
| + * @param {?string} data
|
| + * @return {!Promise<!HTMLImageElement>}
|
| + */
|
| + function createImage(data) {
|
| + var fulfill;
|
| + var promise = new Promise(f => fulfill = f);
|
| +
|
| + var image = /** @type {!HTMLImageElement} */ (createElement('img'));
|
| + if (data) {
|
| + image.src = 'data:image/jpg;base64,' + data;
|
| + image.addEventListener('load', () => fulfill(image));
|
| + image.addEventListener('error', () => fulfill(image));
|
| + } else {
|
| + fulfill(image);
|
| + }
|
| + return promise;
|
| + }
|
| }
|
|
|
| /**
|
| @@ -419,12 +438,12 @@
|
|
|
| /**
|
| * @param {number} x
|
| - * @param {?HTMLImageElement} image
|
| + * @param {!HTMLImageElement} image
|
| * @this {Timeline.TimelineFilmStripOverview}
|
| */
|
| function drawFrameImage(x, image) {
|
| // Ignore draws deferred from a previous update call.
|
| - if (this._drawGeneration !== drawGeneration || !image)
|
| + if (this._drawGeneration !== drawGeneration)
|
| return;
|
| context.drawImage(image, x, 1, imageWidth, imageHeight);
|
| }
|
| @@ -448,13 +467,12 @@
|
|
|
| /**
|
| * @this {Timeline.TimelineFilmStripOverview}
|
| - * @param {?HTMLImageElement} image
|
| + * @param {!HTMLImageElement} image
|
| * @return {?Element}
|
| */
|
| function createFrameElement(image) {
|
| var element = createElementWithClass('div', 'frame');
|
| - if (image)
|
| - element.createChild('div', 'thumbnail').appendChild(image);
|
| + element.createChild('div', 'thumbnail').appendChild(image);
|
| this._lastFrame = frame;
|
| this._lastElement = element;
|
| return element;
|
|
|