return "AllAccess"; return "AllAccess"; return "AllAccess"; return "AllAccess"; = self.animationSteps) { self.animationStep = self.animationSteps; clearInterval(self.animationTimer); self.animationTimer = null; } // XXX might be good to do logarithmic steps, maybe use timer error too (for smoothness)? self.controls.style.opacity = self.animationStep / self.animationSteps; }, togglePause : function () { if (this.video.paused) this.video.play(); else this.video.pause(); // We'll handle style changes in the event listener for // the "play" and "pause" events, same as if content // script was controlling video playback. }, toggleMute : function () { this.video.muted = !this.video.muted; // We'll handle style changes in the event listener for // the "volumechange" event, same as if content script was // controlling volume. }, isChildNode : function (node) { while (node) { if (node == this.controls) break; node = node.parentNode; } return (node == this); }, log : function (msg) { if (this.debug) dump("videoctl: " + msg + "\n"); } }) ]]>