| Index: Source/devtools/front_end/timeline/TimelinePanel.js
|
| diff --git a/Source/devtools/front_end/timeline/TimelinePanel.js b/Source/devtools/front_end/timeline/TimelinePanel.js
|
| index 7325975dba24818d6cdba85c7a833e52a74f1c3a..81bfb2aebbdbcfb90ebdc4a35f0612e8352d0d15 100644
|
| --- a/Source/devtools/front_end/timeline/TimelinePanel.js
|
| +++ b/Source/devtools/front_end/timeline/TimelinePanel.js
|
| @@ -1820,6 +1820,7 @@ WebInspector.TimelineFilmStripOverview = function(tracingModel)
|
| this._filmStripView = new WebInspector.FilmStripView();
|
| this._filmStripView.show(this.element);
|
| this._lastFrame = null;
|
| + /** @type {?Element} */
|
| this._lastElement = null;
|
| }
|
|
|
| @@ -1837,20 +1838,31 @@ WebInspector.TimelineFilmStripOverview.prototype = {
|
| /**
|
| * @override
|
| * @param {number} x
|
| - * @return {?Element}
|
| + * @return {!Promise<?Element>}
|
| */
|
| - popoverElement: function(x)
|
| + popoverElementPromise: function(x)
|
| {
|
| if (!this._filmStripModel || !this._filmStripModel.frames().length)
|
| - return null;
|
| + return Promise.resolve(/** @type {?Element} */ (null));
|
| +
|
| var time = this._calculator.positionToTime(x);
|
| var frame = this._filmStripView.frameByTime(time);
|
| - if (frame !== this._lastFrame) {
|
| + if (frame === this._lastFrame)
|
| + return Promise.resolve(this._lastElement);
|
| +
|
| + return /** @type {!Promise<?Element>} */ (this._filmStripView.createFrameElement(frame).then(onElementCreated.bind(this)));
|
| + /**
|
| + * @this {WebInspector.TimelineFilmStripOverview}
|
| + * @param {!Element} frameElement
|
| + * @return {!Element}
|
| + */
|
| + function onElementCreated(frameElement)
|
| + {
|
| this._lastFrame = frame;
|
| - this._lastElement = this._filmStripView.createFrameElement(frame);
|
| + this._lastElement = frameElement;
|
| this._lastElement.appendChild(WebInspector.Widget.createStyleElement("timeline/timelinePanel.css"));
|
| + return this._lastElement;
|
| }
|
| - return this._lastElement;
|
| },
|
|
|
| /**
|
|
|