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

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

Issue 1184383002: DevTools: adopt FilmStripModel to new screenshot recorder trace format (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: made popover generation async Created 5 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 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 1802 matching lines...) Expand 10 before | Expand all | Expand 10 after
1813 * @extends {WebInspector.TimelineOverviewBase} 1813 * @extends {WebInspector.TimelineOverviewBase}
1814 * @param {!WebInspector.TracingModel} tracingModel 1814 * @param {!WebInspector.TracingModel} tracingModel
1815 */ 1815 */
1816 WebInspector.TimelineFilmStripOverview = function(tracingModel) 1816 WebInspector.TimelineFilmStripOverview = function(tracingModel)
1817 { 1817 {
1818 WebInspector.TimelineOverviewBase.call(this); 1818 WebInspector.TimelineOverviewBase.call(this);
1819 this._tracingModel = tracingModel; 1819 this._tracingModel = tracingModel;
1820 this._filmStripView = new WebInspector.FilmStripView(); 1820 this._filmStripView = new WebInspector.FilmStripView();
1821 this._filmStripView.show(this.element); 1821 this._filmStripView.show(this.element);
1822 this._lastFrame = null; 1822 this._lastFrame = null;
1823 /** @type {?Element} */
1823 this._lastElement = null; 1824 this._lastElement = null;
1824 } 1825 }
1825 1826
1826 WebInspector.TimelineFilmStripOverview.prototype = { 1827 WebInspector.TimelineFilmStripOverview.prototype = {
1827 /** 1828 /**
1828 * @override 1829 * @override
1829 */ 1830 */
1830 update: function() 1831 update: function()
1831 { 1832 {
1832 var model = this._tracingModel; 1833 var model = this._tracingModel;
1833 this._filmStripModel = new WebInspector.FilmStripModel(model); 1834 this._filmStripModel = new WebInspector.FilmStripModel(model);
1834 this._filmStripView.setModel(this._filmStripModel, model.minimumRecordTi me(), model.maximumRecordTime() - model.minimumRecordTime()); 1835 this._filmStripView.setModel(this._filmStripModel, model.minimumRecordTi me(), model.maximumRecordTime() - model.minimumRecordTime());
1835 }, 1836 },
1836 1837
1837 /** 1838 /**
1838 * @override 1839 * @override
1839 * @param {number} x 1840 * @param {number} x
1840 * @return {?Element} 1841 * @return {!Promise<?Element>}
alph 2015/06/19 14:22:38 Maybe ?Promise<!Element> instead. By the time of i
1841 */ 1842 */
1842 popoverElement: function(x) 1843 popoverElementPromise: function(x)
1843 { 1844 {
1844 if (!this._filmStripModel || !this._filmStripModel.frames().length) 1845 if (!this._filmStripModel || !this._filmStripModel.frames().length)
1845 return null; 1846 return Promise.resolve(/** @type {?Element} */ (null));
1847
1846 var time = this._calculator.positionToTime(x); 1848 var time = this._calculator.positionToTime(x);
1847 var frame = this._filmStripView.frameByTime(time); 1849 var frame = this._filmStripView.frameByTime(time);
1848 if (frame !== this._lastFrame) { 1850 if (frame === this._lastFrame)
1851 return Promise.resolve(this._lastElement);
1852
1853 return new Promise(createElement.bind(this));
1854 /**
1855 * @this {WebInspector.TimelineFilmStripOverview}
1856 * @param {function(?Element)} resolve
1857 */
1858 function createElement(resolve)
1859 {
1849 this._lastFrame = frame; 1860 this._lastFrame = frame;
1850 this._lastElement = this._filmStripView.createFrameElement(frame); 1861 this._lastElement = this._filmStripView.createFrameElement(frame, on ImageLoaded.bind(this));
1851 this._lastElement.appendChild(WebInspector.Widget.createStyleElement ("timeline/timelinePanel.css")); 1862 this._lastElement.appendChild(WebInspector.Widget.createStyleElement ("timeline/timelinePanel.css"));
1863
1864 /**
1865 * @this {WebInspector.TimelineFilmStripOverview}
1866 */
1867 function onImageLoaded()
1868 {
1869 resolve(this._lastElement);
alph 2015/06/19 14:22:38 Can the this._lastElement change by the time image
1870 }
1852 } 1871 }
1853 return this._lastElement;
1854 }, 1872 },
1855 1873
1856 /** 1874 /**
1857 * @override 1875 * @override
1858 */ 1876 */
1859 reset: function() 1877 reset: function()
1860 { 1878 {
1861 this._filmStripView.reset(); 1879 this._filmStripView.reset();
1862 this._lastFrame = null; 1880 this._lastFrame = null;
1863 this._lastElement = null; 1881 this._lastElement = null;
1864 }, 1882 },
1865 1883
1866 __proto__: WebInspector.TimelineOverviewBase.prototype 1884 __proto__: WebInspector.TimelineOverviewBase.prototype
1867 } 1885 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698