| Index: third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp
|
| diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp
|
| index 19caa77d06e23f5d97f51275f8c21f9d241465f0..be8bd727ef4b5bfa5962c880dce21d967ca339db 100644
|
| --- a/third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp
|
| +++ b/third_party/WebKit/Source/core/html/shadow/MediaControlsTest.cpp
|
| @@ -192,6 +192,16 @@ class MediaControlsTest : public ::testing::Test {
|
|
|
| HistogramTester& histogramTester() { return m_histogramTester; }
|
|
|
| + void loadMediaWithDuration(double duration) {
|
| + mediaControls().mediaElement().setSrc("https://example.com/foo.mp4");
|
| + testing::runPendingTasks();
|
| + WebTimeRange timeRange(0.0, duration);
|
| + webMediaPlayer()->m_seekable.assign(&timeRange, 1);
|
| + mediaControls().mediaElement().durationChanged(duration,
|
| + false /* requestSeek */);
|
| + simulateLoadedMetadata();
|
| + }
|
| +
|
| private:
|
| std::unique_ptr<DummyPageHolder> m_pageHolder;
|
| Persistent<MediaControls> m_mediaControls;
|
| @@ -481,20 +491,12 @@ TEST_F(MediaControlsTest, TimelineSeekToRoundedEnd) {
|
| mediaControls(), "-webkit-media-controls-timeline"));
|
| ASSERT_NE(nullptr, timeline);
|
|
|
| - mediaControls().mediaElement().setSrc("https://example.com/foo.mp4");
|
| - testing::runPendingTasks();
|
| -
|
| // Tests the case where the real length of the video, |exactDuration|, gets
|
| // rounded up slightly to |roundedUpDuration| when setting the timeline's
|
| // |max| attribute (crbug.com/695065).
|
| double exactDuration = 596.586667;
|
| double roundedUpDuration = 596.587;
|
| -
|
| - WebTimeRange timeRange(0.0, exactDuration);
|
| - webMediaPlayer()->m_seekable.assign(&timeRange, 1);
|
| - mediaControls().mediaElement().durationChanged(exactDuration,
|
| - false /* requestSeek */);
|
| - simulateLoadedMetadata();
|
| + loadMediaWithDuration(exactDuration);
|
|
|
| // Simulate a click slightly past the end of the track of the timeline's
|
| // underlying <input type="range">. This would set the |value| to the |max|
|
| @@ -506,4 +508,27 @@ TEST_F(MediaControlsTest, TimelineSeekToRoundedEnd) {
|
| EXPECT_EQ(exactDuration, mediaControls().mediaElement().currentTime());
|
| }
|
|
|
| +TEST_F(MediaControlsTest, TimelineImmediatelyUpdatesCurrentTime) {
|
| + ensureLayout();
|
| +
|
| + MediaControlTimelineElement* timeline =
|
| + static_cast<MediaControlTimelineElement*>(getElementByShadowPseudoId(
|
| + mediaControls(), "-webkit-media-controls-timeline"));
|
| + ASSERT_NE(nullptr, timeline);
|
| + MediaControlCurrentTimeDisplayElement* currentTimeDisplay =
|
| + static_cast<MediaControlCurrentTimeDisplayElement*>(
|
| + getElementByShadowPseudoId(
|
| + mediaControls(), "-webkit-media-controls-current-time-display"));
|
| + ASSERT_NE(nullptr, currentTimeDisplay);
|
| +
|
| + double duration = 600;
|
| + loadMediaWithDuration(duration);
|
| +
|
| + // Simulate seeking the underlying range to 50%. Current time display should
|
| + // update synchronously (rather than waiting for media to finish seeking).
|
| + timeline->setValueAsNumber(duration / 2, ASSERT_NO_EXCEPTION);
|
| + timeline->dispatchInputEvent();
|
| + EXPECT_EQ(duration / 2, currentTimeDisplay->currentValue());
|
| +}
|
| +
|
| } // namespace blink
|
|
|