Index: media/base/pipeline_unittest.cc |
diff --git a/media/base/pipeline_unittest.cc b/media/base/pipeline_unittest.cc |
index 45cc73ba36fa7b1a46c5f19aed717b78da5be1fe..ecdad550f0309acf7ef576bb5c1354346d82d885 100644 |
--- a/media/base/pipeline_unittest.cc |
+++ b/media/base/pipeline_unittest.cc |
@@ -753,6 +753,9 @@ TEST_F(PipelineTest, StartTimeIsZero) { |
EXPECT_TRUE(metadata_.has_video); |
EXPECT_EQ(base::TimeDelta(), pipeline_->GetMediaTime()); |
+ const base::TimeDelta kSeekPoint = kDuration / 2; |
+ ExpectSeek(kSeekPoint); |
+ DoSeek(kSeekPoint); |
} |
TEST_F(PipelineTest, StartTimeIsNonZero) { |
@@ -774,6 +777,34 @@ TEST_F(PipelineTest, StartTimeIsNonZero) { |
EXPECT_TRUE(metadata_.has_video); |
EXPECT_EQ(kStartTime, pipeline_->GetMediaTime()); |
+ const base::TimeDelta kSeekPoint = kDuration / 2; |
+ ExpectSeek(kSeekPoint + kStartTime); |
+ DoSeek(kSeekPoint); |
+} |
+ |
+TEST_F(PipelineTest, StartTimeIsNegative) { |
+ const base::TimeDelta kStartTime = base::TimeDelta::FromSeconds(-4); |
+ const base::TimeDelta kDuration = base::TimeDelta::FromSeconds(100); |
+ |
+ EXPECT_CALL(*demuxer_, GetStartTime()) |
+ .WillRepeatedly(Return(kStartTime)); |
+ |
+ CreateVideoStream(); |
+ MockDemuxerStreamVector streams; |
+ streams.push_back(video_stream()); |
+ |
+ InitializeDemuxer(&streams, kDuration); |
+ InitializeVideoRenderer(video_stream()); |
+ |
+ InitializePipeline(PIPELINE_OK); |
+ EXPECT_FALSE(metadata_.has_audio); |
+ EXPECT_TRUE(metadata_.has_video); |
+ |
+ // The media time should be clamped to zero. |
+ EXPECT_EQ(base::TimeDelta(), pipeline_->GetMediaTime()); |
+ const base::TimeDelta kSeekPoint = kDuration / 2; |
+ ExpectSeek(kSeekPoint + kStartTime); |
+ DoSeek(kSeekPoint); |
} |
static void RunTimeCB(const AudioRenderer::TimeCB& time_cb, |