OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/memory/scoped_ptr.h" | 7 #include "base/memory/scoped_ptr.h" |
8 #include "base/strings/string_util.h" | 8 #include "base/strings/string_util.h" |
9 #include "build/build_config.h" | 9 #include "build/build_config.h" |
10 #include "media/base/cdm_callback_promise.h" | 10 #include "media/base/cdm_callback_promise.h" |
(...skipping 641 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
652 | 652 |
653 class PipelineIntegrationTest : public PipelineIntegrationTestHost { | 653 class PipelineIntegrationTest : public PipelineIntegrationTestHost { |
654 public: | 654 public: |
655 void StartPipelineWithMediaSource(MockMediaSource* source) { | 655 void StartPipelineWithMediaSource(MockMediaSource* source) { |
656 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); | 656 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); |
657 EXPECT_CALL(*this, OnMetadata(_)) | 657 EXPECT_CALL(*this, OnMetadata(_)) |
658 .Times(AtMost(1)) | 658 .Times(AtMost(1)) |
659 .WillRepeatedly(SaveArg<0>(&metadata_)); | 659 .WillRepeatedly(SaveArg<0>(&metadata_)); |
660 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) | 660 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) |
661 .Times(AtMost(1)); | 661 .Times(AtMost(1)); |
| 662 |
| 663 // Encrypted content not used, so this is never called. |
| 664 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); |
| 665 |
662 demuxer_ = source->GetDemuxer().Pass(); | 666 demuxer_ = source->GetDemuxer().Pass(); |
663 pipeline_->Start( | 667 pipeline_->Start( |
664 demuxer_.get(), CreateRenderer(), | 668 demuxer_.get(), CreateRenderer(), |
665 base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), | 669 base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), |
666 base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), | 670 base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), |
667 base::Bind(&PipelineIntegrationTest::OnStatusCallback, | 671 base::Bind(&PipelineIntegrationTest::OnStatusCallback, |
668 base::Unretained(this)), | 672 base::Unretained(this)), |
669 base::Bind(&PipelineIntegrationTest::OnMetadata, | 673 base::Bind(&PipelineIntegrationTest::OnMetadata, |
670 base::Unretained(this)), | 674 base::Unretained(this)), |
671 base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, | 675 base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, |
672 base::Unretained(this)), | 676 base::Unretained(this)), |
673 base::Bind(&PipelineIntegrationTest::OnVideoFramePaint, | 677 base::Bind(&PipelineIntegrationTest::OnVideoFramePaint, |
674 base::Unretained(this)), | 678 base::Unretained(this)), |
675 base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, | 679 base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, |
676 base::Unretained(this))); | 680 base::Unretained(this)), |
| 681 base::Bind(&PipelineIntegrationTest::OnWaitingForDecryptionKey, |
| 682 base::Unretained(this))); |
677 message_loop_.Run(); | 683 message_loop_.Run(); |
678 EXPECT_EQ(PIPELINE_OK, pipeline_status_); | 684 EXPECT_EQ(PIPELINE_OK, pipeline_status_); |
679 } | 685 } |
680 | 686 |
681 void StartHashedPipelineWithMediaSource(MockMediaSource* source) { | 687 void StartHashedPipelineWithMediaSource(MockMediaSource* source) { |
682 hashing_enabled_ = true; | 688 hashing_enabled_ = true; |
683 StartPipelineWithMediaSource(source); | 689 StartPipelineWithMediaSource(source); |
684 } | 690 } |
685 | 691 |
686 void StartPipelineWithEncryptedMedia( | 692 void StartPipelineWithEncryptedMedia( |
687 MockMediaSource* source, | 693 MockMediaSource* source, |
688 FakeEncryptedMedia* encrypted_media) { | 694 FakeEncryptedMedia* encrypted_media) { |
689 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); | 695 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); |
690 EXPECT_CALL(*this, OnMetadata(_)) | 696 EXPECT_CALL(*this, OnMetadata(_)) |
691 .Times(AtMost(1)) | 697 .Times(AtMost(1)) |
692 .WillRepeatedly(SaveArg<0>(&metadata_)); | 698 .WillRepeatedly(SaveArg<0>(&metadata_)); |
693 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) | 699 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) |
694 .Times(AtMost(1)); | 700 .Times(AtMost(1)); |
695 EXPECT_CALL(*this, DecryptorAttached(true)); | 701 EXPECT_CALL(*this, DecryptorAttached(true)); |
696 | 702 |
| 703 // Encrypted content used but keys provided in advance, so this is |
| 704 // never called. |
| 705 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); |
| 706 |
697 demuxer_ = source->GetDemuxer().Pass(); | 707 demuxer_ = source->GetDemuxer().Pass(); |
698 | 708 |
699 pipeline_->SetCdm(encrypted_media->GetCdmContext(), | 709 pipeline_->SetCdm(encrypted_media->GetCdmContext(), |
700 base::Bind(&PipelineIntegrationTest::DecryptorAttached, | 710 base::Bind(&PipelineIntegrationTest::DecryptorAttached, |
701 base::Unretained(this))); | 711 base::Unretained(this))); |
702 | 712 |
703 pipeline_->Start( | 713 pipeline_->Start( |
704 demuxer_.get(), CreateRenderer(), | 714 demuxer_.get(), CreateRenderer(), |
705 base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), | 715 base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), |
706 base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), | 716 base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), |
707 base::Bind(&PipelineIntegrationTest::OnStatusCallback, | 717 base::Bind(&PipelineIntegrationTest::OnStatusCallback, |
708 base::Unretained(this)), | 718 base::Unretained(this)), |
709 base::Bind(&PipelineIntegrationTest::OnMetadata, | 719 base::Bind(&PipelineIntegrationTest::OnMetadata, |
710 base::Unretained(this)), | 720 base::Unretained(this)), |
711 base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, | 721 base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, |
712 base::Unretained(this)), | 722 base::Unretained(this)), |
713 base::Bind(&PipelineIntegrationTest::OnVideoFramePaint, | 723 base::Bind(&PipelineIntegrationTest::OnVideoFramePaint, |
714 base::Unretained(this)), | 724 base::Unretained(this)), |
715 base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, | 725 base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, |
716 base::Unretained(this))); | 726 base::Unretained(this)), |
| 727 base::Bind(&PipelineIntegrationTest::OnWaitingForDecryptionKey, |
| 728 base::Unretained(this))); |
717 | 729 |
718 source->set_encrypted_media_init_data_cb( | 730 source->set_encrypted_media_init_data_cb( |
719 base::Bind(&FakeEncryptedMedia::OnEncryptedMediaInitData, | 731 base::Bind(&FakeEncryptedMedia::OnEncryptedMediaInitData, |
720 base::Unretained(encrypted_media))); | 732 base::Unretained(encrypted_media))); |
721 | 733 |
722 message_loop_.Run(); | 734 message_loop_.Run(); |
723 EXPECT_EQ(PIPELINE_OK, pipeline_status_); | 735 EXPECT_EQ(PIPELINE_OK, pipeline_status_); |
724 } | 736 } |
725 | 737 |
726 // Verifies that seeking works properly for ChunkDemuxer when the | 738 // Verifies that seeking works properly for ChunkDemuxer when the |
(...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1714 | 1726 |
1715 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { | 1727 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { |
1716 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); | 1728 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); |
1717 Play(); | 1729 Play(); |
1718 ASSERT_TRUE(WaitUntilOnEnded()); | 1730 ASSERT_TRUE(WaitUntilOnEnded()); |
1719 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), | 1731 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), |
1720 demuxer_->GetStartTime()); | 1732 demuxer_->GetStartTime()); |
1721 } | 1733 } |
1722 | 1734 |
1723 } // namespace media | 1735 } // namespace media |
OLD | NEW |