| OLD | NEW |
| 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | |
| 5 /** | 4 /** |
| 6 * @constructor | 5 * @unrestricted |
| 7 * @extends {WebInspector.VBox} | |
| 8 * @param {!Array.<!Image>} images | |
| 9 */ | 6 */ |
| 10 WebInspector.AnimationScreenshotPopover = function(images) | 7 WebInspector.AnimationScreenshotPopover = class extends WebInspector.VBox { |
| 11 { | 8 /** |
| 12 WebInspector.VBox.call(this, true); | 9 * @param {!Array.<!Image>} images |
| 10 */ |
| 11 constructor(images) { |
| 12 super(true); |
| 13 console.assert(images.length); | 13 console.assert(images.length); |
| 14 this.registerRequiredCSS("animation/animationScreenshotPopover.css"); | 14 this.registerRequiredCSS('animation/animationScreenshotPopover.css'); |
| 15 this.contentElement.classList.add("animation-screenshot-popover"); | 15 this.contentElement.classList.add('animation-screenshot-popover'); |
| 16 this._frames = images; | 16 this._frames = images; |
| 17 for (var image of images) { | 17 for (var image of images) { |
| 18 this.contentElement.appendChild(image); | 18 this.contentElement.appendChild(image); |
| 19 image.style.display = "none"; | 19 image.style.display = 'none'; |
| 20 } | 20 } |
| 21 this._currentFrame = 0; | 21 this._currentFrame = 0; |
| 22 this._frames[0].style.display = "block"; | 22 this._frames[0].style.display = 'block'; |
| 23 this._progressBar = this.contentElement.createChild("div", "animation-progre
ss"); | 23 this._progressBar = this.contentElement.createChild('div', 'animation-progre
ss'); |
| 24 } |
| 25 |
| 26 /** |
| 27 * @override |
| 28 */ |
| 29 wasShown() { |
| 30 this._rafId = this.contentElement.window().requestAnimationFrame(this._chang
eFrame.bind(this)); |
| 31 } |
| 32 |
| 33 /** |
| 34 * @override |
| 35 */ |
| 36 willHide() { |
| 37 this.contentElement.window().cancelAnimationFrame(this._rafId); |
| 38 delete this._endDelay; |
| 39 } |
| 40 |
| 41 _changeFrame() { |
| 42 this._rafId = this.contentElement.window().requestAnimationFrame(this._chang
eFrame.bind(this)); |
| 43 |
| 44 if (this._endDelay) { |
| 45 this._endDelay--; |
| 46 return; |
| 47 } |
| 48 this._showFrame = !this._showFrame; |
| 49 if (!this._showFrame) |
| 50 return; |
| 51 |
| 52 var numFrames = this._frames.length; |
| 53 this._frames[this._currentFrame % numFrames].style.display = 'none'; |
| 54 this._currentFrame++; |
| 55 this._frames[(this._currentFrame) % numFrames].style.display = 'block'; |
| 56 if (this._currentFrame % numFrames === numFrames - 1) |
| 57 this._endDelay = 50; |
| 58 this._progressBar.style.width = (this._currentFrame % numFrames + 1) / numFr
ames * 100 + '%'; |
| 59 } |
| 24 }; | 60 }; |
| 25 | |
| 26 WebInspector.AnimationScreenshotPopover.prototype = { | |
| 27 wasShown: function() | |
| 28 { | |
| 29 this._rafId = this.contentElement.window().requestAnimationFrame(this._c
hangeFrame.bind(this)); | |
| 30 }, | |
| 31 | |
| 32 willHide: function() | |
| 33 { | |
| 34 this.contentElement.window().cancelAnimationFrame(this._rafId); | |
| 35 delete this._endDelay; | |
| 36 }, | |
| 37 | |
| 38 _changeFrame: function() | |
| 39 { | |
| 40 this._rafId = this.contentElement.window().requestAnimationFrame(this._c
hangeFrame.bind(this)); | |
| 41 | |
| 42 if (this._endDelay) { | |
| 43 this._endDelay--; | |
| 44 return; | |
| 45 } | |
| 46 this._showFrame = !this._showFrame; | |
| 47 if (!this._showFrame) | |
| 48 return; | |
| 49 | |
| 50 var numFrames = this._frames.length; | |
| 51 this._frames[this._currentFrame % numFrames].style.display = "none"; | |
| 52 this._currentFrame++; | |
| 53 this._frames[(this._currentFrame) % numFrames].style.display = "block"; | |
| 54 if (this._currentFrame % numFrames === numFrames - 1) | |
| 55 this._endDelay = 50; | |
| 56 this._progressBar.style.width = (this._currentFrame % numFrames + 1) / n
umFrames * 100 + "%"; | |
| 57 }, | |
| 58 | |
| 59 __proto__: WebInspector.VBox.prototype | |
| 60 }; | |
| OLD | NEW |