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 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
632 | 632 |
633 class PipelineIntegrationTest : public PipelineIntegrationTestHost { | 633 class PipelineIntegrationTest : public PipelineIntegrationTestHost { |
634 public: | 634 public: |
635 void StartPipelineWithMediaSource(MockMediaSource* source) { | 635 void StartPipelineWithMediaSource(MockMediaSource* source) { |
636 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); | 636 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); |
637 EXPECT_CALL(*this, OnMetadata(_)) | 637 EXPECT_CALL(*this, OnMetadata(_)) |
638 .Times(AtMost(1)) | 638 .Times(AtMost(1)) |
639 .WillRepeatedly(SaveArg<0>(&metadata_)); | 639 .WillRepeatedly(SaveArg<0>(&metadata_)); |
640 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) | 640 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) |
641 .Times(AtMost(1)); | 641 .Times(AtMost(1)); |
| 642 |
| 643 // Encrypted content not used, so this is never called. |
| 644 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); |
| 645 |
642 demuxer_ = source->GetDemuxer().Pass(); | 646 demuxer_ = source->GetDemuxer().Pass(); |
643 pipeline_->Start( | 647 pipeline_->Start( |
644 demuxer_.get(), CreateRenderer(), | 648 demuxer_.get(), CreateRenderer(), |
645 base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), | 649 base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), |
646 base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), | 650 base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), |
647 base::Bind(&PipelineIntegrationTest::OnStatusCallback, | 651 base::Bind(&PipelineIntegrationTest::OnStatusCallback, |
648 base::Unretained(this)), | 652 base::Unretained(this)), |
649 base::Bind(&PipelineIntegrationTest::OnMetadata, | 653 base::Bind(&PipelineIntegrationTest::OnMetadata, |
650 base::Unretained(this)), | 654 base::Unretained(this)), |
651 base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, | 655 base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, |
652 base::Unretained(this)), | 656 base::Unretained(this)), |
653 base::Bind(&PipelineIntegrationTest::OnVideoFramePaint, | 657 base::Bind(&PipelineIntegrationTest::OnVideoFramePaint, |
654 base::Unretained(this)), | 658 base::Unretained(this)), |
655 base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, | 659 base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, |
656 base::Unretained(this))); | 660 base::Unretained(this)), |
| 661 base::Bind(&PipelineIntegrationTest::OnWaitingForDecryptionKey, |
| 662 base::Unretained(this))); |
657 message_loop_.Run(); | 663 message_loop_.Run(); |
658 EXPECT_EQ(PIPELINE_OK, pipeline_status_); | 664 EXPECT_EQ(PIPELINE_OK, pipeline_status_); |
659 } | 665 } |
660 | 666 |
661 void StartHashedPipelineWithMediaSource(MockMediaSource* source) { | 667 void StartHashedPipelineWithMediaSource(MockMediaSource* source) { |
662 hashing_enabled_ = true; | 668 hashing_enabled_ = true; |
663 StartPipelineWithMediaSource(source); | 669 StartPipelineWithMediaSource(source); |
664 } | 670 } |
665 | 671 |
666 void StartPipelineWithEncryptedMedia( | 672 void StartPipelineWithEncryptedMedia( |
667 MockMediaSource* source, | 673 MockMediaSource* source, |
668 FakeEncryptedMedia* encrypted_media) { | 674 FakeEncryptedMedia* encrypted_media) { |
669 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); | 675 EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1)); |
670 EXPECT_CALL(*this, OnMetadata(_)) | 676 EXPECT_CALL(*this, OnMetadata(_)) |
671 .Times(AtMost(1)) | 677 .Times(AtMost(1)) |
672 .WillRepeatedly(SaveArg<0>(&metadata_)); | 678 .WillRepeatedly(SaveArg<0>(&metadata_)); |
673 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) | 679 EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) |
674 .Times(AtMost(1)); | 680 .Times(AtMost(1)); |
675 EXPECT_CALL(*this, DecryptorAttached(true)); | 681 EXPECT_CALL(*this, DecryptorAttached(true)); |
676 | 682 |
| 683 // Encrypted content used but keys provided in advance, so this is |
| 684 // never called. |
| 685 EXPECT_CALL(*this, OnWaitingForDecryptionKey()).Times(0); |
| 686 |
677 demuxer_ = source->GetDemuxer().Pass(); | 687 demuxer_ = source->GetDemuxer().Pass(); |
678 | 688 |
679 pipeline_->SetCdm(encrypted_media->GetCdmContext(), | 689 pipeline_->SetCdm(encrypted_media->GetCdmContext(), |
680 base::Bind(&PipelineIntegrationTest::DecryptorAttached, | 690 base::Bind(&PipelineIntegrationTest::DecryptorAttached, |
681 base::Unretained(this))); | 691 base::Unretained(this))); |
682 | 692 |
683 pipeline_->Start( | 693 pipeline_->Start( |
684 demuxer_.get(), CreateRenderer(), | 694 demuxer_.get(), CreateRenderer(), |
685 base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), | 695 base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), |
686 base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), | 696 base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), |
687 base::Bind(&PipelineIntegrationTest::OnStatusCallback, | 697 base::Bind(&PipelineIntegrationTest::OnStatusCallback, |
688 base::Unretained(this)), | 698 base::Unretained(this)), |
689 base::Bind(&PipelineIntegrationTest::OnMetadata, | 699 base::Bind(&PipelineIntegrationTest::OnMetadata, |
690 base::Unretained(this)), | 700 base::Unretained(this)), |
691 base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, | 701 base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, |
692 base::Unretained(this)), | 702 base::Unretained(this)), |
693 base::Bind(&PipelineIntegrationTest::OnVideoFramePaint, | 703 base::Bind(&PipelineIntegrationTest::OnVideoFramePaint, |
694 base::Unretained(this)), | 704 base::Unretained(this)), |
695 base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, | 705 base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, |
696 base::Unretained(this))); | 706 base::Unretained(this)), |
| 707 base::Bind(&PipelineIntegrationTest::OnWaitingForDecryptionKey, |
| 708 base::Unretained(this))); |
697 | 709 |
698 source->set_encrypted_media_init_data_cb( | 710 source->set_encrypted_media_init_data_cb( |
699 base::Bind(&FakeEncryptedMedia::OnEncryptedMediaInitData, | 711 base::Bind(&FakeEncryptedMedia::OnEncryptedMediaInitData, |
700 base::Unretained(encrypted_media))); | 712 base::Unretained(encrypted_media))); |
701 | 713 |
702 message_loop_.Run(); | 714 message_loop_.Run(); |
703 EXPECT_EQ(PIPELINE_OK, pipeline_status_); | 715 EXPECT_EQ(PIPELINE_OK, pipeline_status_); |
704 } | 716 } |
705 | 717 |
706 // Verifies that seeking works properly for ChunkDemuxer when the | 718 // Verifies that seeking works properly for ChunkDemuxer when the |
(...skipping 987 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1694 | 1706 |
1695 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { | 1707 TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { |
1696 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); | 1708 ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); |
1697 Play(); | 1709 Play(); |
1698 ASSERT_TRUE(WaitUntilOnEnded()); | 1710 ASSERT_TRUE(WaitUntilOnEnded()); |
1699 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), | 1711 ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), |
1700 demuxer_->GetStartTime()); | 1712 demuxer_->GetStartTime()); |
1701 } | 1713 } |
1702 | 1714 |
1703 } // namespace media | 1715 } // namespace media |
OLD | NEW |