Index: Source/core/html/shadow/MediaControlElements.cpp |
diff --git a/Source/core/html/shadow/MediaControlElements.cpp b/Source/core/html/shadow/MediaControlElements.cpp |
index 2439bb62e1be659462f2a824b329da9646fcf7fd..ecf407457684f156fd0e13da09c8e0dd43139111 100644 |
--- a/Source/core/html/shadow/MediaControlElements.cpp |
+++ b/Source/core/html/shadow/MediaControlElements.cpp |
@@ -37,6 +37,7 @@ |
#include "core/frame/LocalFrame.h" |
#include "core/html/HTMLVideoElement.h" |
#include "core/html/MediaController.h" |
+#include "core/html/TimeRanges.h" |
#include "core/html/shadow/MediaControls.h" |
#include "core/html/track/TextTrack.h" |
#include "core/html/track/vtt/VTTRegionList.h" |
@@ -418,10 +419,12 @@ void MediaControlTimelineElement::defaultEventHandler(Event* event) |
if (event->type() == EventTypeNames::input) { |
// FIXME: This will need to take the timeline offset into consideration |
// once that concept is supported, see https://crbug.com/312699 |
- if (mediaElement().controller()) |
- mediaElement().controller()->setCurrentTime(time); |
- else |
+ if (mediaElement().controller()) { |
+ if (mediaElement().controller()->seekable()->contain(time)) |
+ mediaElement().controller()->setCurrentTime(time); |
+ } else if (mediaElement().seekable()->contain(time)) { |
mediaElement().setCurrentTime(time, IGNORE_EXCEPTION); |
+ } |
} |
RenderSlider* slider = toRenderSlider(renderer()); |