media_url_demuxer_unittest.cc 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. // Copyright 2016 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "media/base/media_url_demuxer.h"
  5. #include <memory>
  6. #include "base/bind.h"
  7. #include "base/callback_helpers.h"
  8. #include "base/run_loop.h"
  9. #include "base/test/task_environment.h"
  10. #include "base/threading/thread_task_runner_handle.h"
  11. #include "net/cookies/site_for_cookies.h"
  12. #include "testing/gmock/include/gmock/gmock.h"
  13. #include "testing/gtest/include/gtest/gtest.h"
  14. namespace media {
  15. class MediaUrlDemuxerTest : public testing::Test {
  16. public:
  17. MediaUrlDemuxerTest()
  18. : default_media_url_(GURL("http://example.com/file.mp4")),
  19. default_first_party_url_(GURL("http://example.com/")) {}
  20. MediaUrlDemuxerTest(const MediaUrlDemuxerTest&) = delete;
  21. MediaUrlDemuxerTest& operator=(const MediaUrlDemuxerTest&) = delete;
  22. void InitializeTest(const GURL& media_url,
  23. const GURL& first_party,
  24. bool allow_credentials) {
  25. demuxer_ = std::make_unique<MediaUrlDemuxer>(
  26. base::ThreadTaskRunnerHandle::Get(), media_url,
  27. net::SiteForCookies::FromUrl(first_party),
  28. url::Origin::Create(first_party), allow_credentials, false);
  29. }
  30. void InitializeTest() {
  31. InitializeTest(default_media_url_, default_first_party_url_, true);
  32. }
  33. void VerifyCallbackOk(PipelineStatus status) {
  34. EXPECT_EQ(PIPELINE_OK, status);
  35. }
  36. const GURL default_media_url_;
  37. const GURL default_first_party_url_;
  38. std::unique_ptr<Demuxer> demuxer_;
  39. // Necessary, or else base::ThreadTaskRunnerHandle::Get() fails.
  40. base::test::SingleThreadTaskEnvironment task_environment_;
  41. };
  42. TEST_F(MediaUrlDemuxerTest, BaseCase) {
  43. InitializeTest();
  44. EXPECT_EQ(MediaResource::Type::URL, demuxer_->GetType());
  45. const MediaUrlParams& params = demuxer_->GetMediaUrlParams();
  46. EXPECT_EQ(default_media_url_, params.media_url);
  47. EXPECT_TRUE(net::SiteForCookies::FromUrl(default_first_party_url_)
  48. .IsEquivalent(params.site_for_cookies));
  49. EXPECT_EQ(true, params.allow_credentials);
  50. }
  51. TEST_F(MediaUrlDemuxerTest, AcceptsEmptyStrings) {
  52. InitializeTest(GURL(), GURL(), false);
  53. const MediaUrlParams& params = demuxer_->GetMediaUrlParams();
  54. EXPECT_EQ(GURL::EmptyGURL(), params.media_url);
  55. EXPECT_TRUE(net::SiteForCookies::FromUrl(GURL::EmptyGURL())
  56. .IsEquivalent(params.site_for_cookies));
  57. EXPECT_EQ(false, params.allow_credentials);
  58. }
  59. TEST_F(MediaUrlDemuxerTest, InitializeReturnsPipelineOk) {
  60. InitializeTest();
  61. demuxer_->Initialize(nullptr,
  62. base::BindOnce(&MediaUrlDemuxerTest::VerifyCallbackOk,
  63. base::Unretained(this)));
  64. base::RunLoop().RunUntilIdle();
  65. }
  66. TEST_F(MediaUrlDemuxerTest, SeekReturnsPipelineOk) {
  67. InitializeTest();
  68. demuxer_->Seek(base::TimeDelta(),
  69. base::BindOnce(&MediaUrlDemuxerTest::VerifyCallbackOk,
  70. base::Unretained(this)));
  71. base::RunLoop().RunUntilIdle();
  72. }
  73. } // namespace media