summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ui/file_manager/audio_player/elements/control_panel.js28
-rw-r--r--ui/file_manager/video_player/js/media_controls.js11
2 files changed, 34 insertions, 5 deletions
diff --git a/ui/file_manager/audio_player/elements/control_panel.js b/ui/file_manager/audio_player/elements/control_panel.js
index 0267152..790c41a 100644
--- a/ui/file_manager/audio_player/elements/control_panel.js
+++ b/ui/file_manager/audio_player/elements/control_panel.js
@@ -139,6 +139,10 @@
if (!this.dragging)
this.dragging = true;
}.bind(this));
+ timeSlider.addEventListener('keydown',
+ this.onProgressKeyDownOrKeyPress_.bind(this));
+ timeSlider.addEventListener('keypress',
+ this.onProgressKeyDownOrKeyPress_.bind(this));
// Update volume on user inputs for volume slider.
// During a drag operation, the volume should be updated immediately.
@@ -269,6 +273,30 @@
this.$.volumeButton.setAttribute('aria-label',
this.volume !== 0 ? ariaLabels.mute : ariaLabels.unmute);
this.$.volumeSlider.setAttribute('aria-label', ariaLabels.volumeSlider);
+ },
+
+ /**
+ * Handles arrow keys on time slider to skip forward/backword.
+ * @param {!Event} event
+ * @private
+ */
+ onProgressKeyDownOrKeyPress_: function(event) {
+ if (event.code !== 'ArrowRight' && event.code !== 'ArrowLeft' &&
+ event.code !== 'ArrowUp' && event.code !== 'ArrowDown') {
+ return;
+ }
+
+ event.preventDefault();
+
+ if (this.duration > 0) {
+ // Skip 5 seconds or 10% of duration, whichever is smaller.
+ var millisecondsToSkip = Math.min(5000, this.duration / 10);
+ if (event.code === 'ArrowRight' || event.code === 'ArrowUp') {
+ this.time = Math.min(this.time + millisecondsToSkip, this.duration);
+ } else {
+ this.time = Math.max(this.time - millisecondsToSkip, 0);
+ }
+ }
}
});
})(); // Anonymous closure
diff --git a/ui/file_manager/video_player/js/media_controls.js b/ui/file_manager/video_player/js/media_controls.js
index 8138685..d89f14f 100644
--- a/ui/file_manager/video_player/js/media_controls.js
+++ b/ui/file_manager/video_player/js/media_controls.js
@@ -340,26 +340,27 @@ MediaControls.prototype.onProgressDrag_ = function() {
};
/**
- * Handles ArrowRight/ArrowLeft key on progress slider to skip forward/backword.
+ * Handles arrow keys on progress slider to skip forward/backword.
* @param {!Event} event
* @private
*/
MediaControls.prototype.onProgressKeyDownOrKeyPress_ = function(event) {
- if (event.code !== 'ArrowRight' && event.code !== 'ArrowLeft')
+ if (event.code !== 'ArrowRight' && event.code !== 'ArrowLeft' &&
+ event.code !== 'ArrowUp' && event.code !== 'ArrowDown') {
return;
+ }
event.preventDefault();
if (this.media_ && this.media_.duration > 0) {
- // On left/right key for progress bar, min(5 seconds, 10% of video) should
- // be skipped.
+ // Skip 5 seconds or 10% of duration, whichever is smaller.
var secondsToSkip = Math.min(
MediaControls.PROGRESS_MAX_SECONDS_TO_SKIP,
this.media_.duration * MediaControls.PROGRESS_MAX_RATIO_TO_SKIP);
var stepsToSkip = MediaControls.PROGRESS_RANGE *
(secondsToSkip / this.media_.duration);
- if (event.code === 'ArrowRight') {
+ if (event.code === 'ArrowRight' || event.code === 'ArrowUp') {
this.progressSlider_.value = Math.min(
this.progressSlider_.value + stepsToSkip,
this.progressSlider_.max);