| 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 |