1 // Copyright 2023 The Chromium Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef MEDIA_FILTERS_HLS_TEST_HELPERS_H_
6 #define MEDIA_FILTERS_HLS_TEST_HELPERS_H_
8 #include "media/filters/hls_codec_detector.h"
9 #include "media/filters/hls_data_source_provider.h"
10 #include "media/filters/hls_rendition.h"
11 #include "media/filters/manifest_demuxer.h"
12 #include "testing/gmock/include/gmock/gmock.h"
16 class MockCodecDetector : public HlsCodecDetector {
18 ~MockCodecDetector() override;
21 DetermineContainerAndCodec,
22 (std::unique_ptr<HlsDataSourceStream>, CodecCallback),
25 DetermineContainerOnly,
26 (std::unique_ptr<HlsDataSourceStream> stream, CodecCallback cb),
30 class MockHlsDataSourceProvider : public HlsDataSourceProvider {
32 MockHlsDataSourceProvider();
33 ~MockHlsDataSourceProvider() override;
37 absl::optional<hls::types::ByteRange>,
38 HlsDataSourceProvider::ReadCb),
41 ReadFromExistingStream,
42 (std::unique_ptr<HlsDataSourceStream>,
43 HlsDataSourceProvider::ReadCb),
47 (base::OnceClosure callback),
51 class StringHlsDataSourceStreamFactory {
53 static std::unique_ptr<HlsDataSourceStream> CreateStream(std::string content);
56 class FileHlsDataSourceStreamFactory {
58 static std::unique_ptr<HlsDataSourceStream> CreateStream(std::string file);
61 class MockManifestDemuxerEngineHost : public ManifestDemuxerEngineHost {
63 MockManifestDemuxerEngineHost();
64 ~MockManifestDemuxerEngineHost() override;
67 (base::StringPiece, std::string, std::string),
69 MOCK_METHOD(void, RemoveRole, (base::StringPiece), (override));
70 MOCK_METHOD(void, SetSequenceMode, (base::StringPiece, bool), (override));
71 MOCK_METHOD(void, SetDuration, (double), (override));
72 MOCK_METHOD(Ranges<base::TimeDelta>,
78 (base::StringPiece, base::TimeDelta, base::TimeDelta),
83 (base::StringPiece, base::TimeDelta, base::TimeDelta, base::TimeDelta*),
86 SetGroupStartIfParsingAndSequenceMode,
87 (base::StringPiece, base::TimeDelta),
91 (base::StringPiece, base::TimeDelta, size_t),
102 MOCK_METHOD(void, OnError, (PipelineStatus), (override));
103 MOCK_METHOD(void, RequestSeek, (base::TimeDelta), (override));
105 SetGroupStartTimestamp,
106 (base::StringPiece role, base::TimeDelta time),
108 MOCK_METHOD(void, SetEndOfStream, (), (override));
109 MOCK_METHOD(void, UnsetEndOfStream, (), (override));
112 class MockHlsRenditionHost : public HlsRenditionHost {
114 MockHlsRenditionHost();
115 ~MockHlsRenditionHost() override;
120 absl::optional<hls::types::ByteRange> range,
121 HlsDataSourceProvider::ReadCb cb),
124 MOCK_METHOD(hls::ParseStatus::Or<scoped_refptr<hls::MediaPlaylist>>,
125 ParseMediaPlaylistFromStringSource,
126 (base::StringPiece source,
128 hls::types::DecimalInteger version),
133 (std::unique_ptr<HlsDataSourceStream>,
134 HlsDataSourceProvider::ReadCb),
138 class MockHlsRendition : public HlsRendition {
141 ~MockHlsRendition() override;
145 (base::TimeDelta time,
147 ManifestDemuxer::DelayCallback cb),
149 MOCK_METHOD(ManifestDemuxer::SeekResponse,
151 (base::TimeDelta time),
153 MOCK_METHOD(void, StartWaitingForSeek, (), (override));
154 MOCK_METHOD(absl::optional<base::TimeDelta>, GetDuration, (), (override));
155 MOCK_METHOD(void, Stop, (), (override));
160 #endif // MEDIA_FILTERS_HLS_TEST_HELPERS_H_