blob: ec7fda84c8ca992426a7520c2cb5282cad79f89b [file] [log] [blame]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef MEDIA_FILTERS_HLS_TEST_HELPERS_H_
#define MEDIA_FILTERS_HLS_TEST_HELPERS_H_
#include <string_view>
#include "media/filters/hls_data_source_provider.h"
#include "media/filters/hls_rendition.h"
#include "media/filters/manifest_demuxer.h"
#include "testing/gmock/include/gmock/gmock.h"
namespace media {
class MockHlsDataSourceProvider : public HlsDataSourceProvider {
public:
MockHlsDataSourceProvider();
~MockHlsDataSourceProvider() override;
MOCK_METHOD(void,
ReadFromCombinedUrlQueue,
(HlsDataSourceProvider::SegmentQueue,
HlsDataSourceProvider::ReadCb),
(override));
MOCK_METHOD(void,
ReadFromExistingStream,
(std::unique_ptr<HlsDataSourceStream>,
HlsDataSourceProvider::ReadCb),
(override));
MOCK_METHOD(void,
AbortPendingReads,
(base::OnceClosure callback),
(override));
};
class StringHlsDataSourceStreamFactory {
public:
static std::unique_ptr<HlsDataSourceStream> CreateStream(
std::string content,
bool taint_origin = false);
};
class FileHlsDataSourceStreamFactory {
public:
static std::unique_ptr<HlsDataSourceStream> CreateStream(
std::string file,
bool taint_origin = false);
};
class MockManifestDemuxerEngineHost : public ManifestDemuxerEngineHost {
public:
MockManifestDemuxerEngineHost();
~MockManifestDemuxerEngineHost() override;
MOCK_METHOD(bool,
AddRole,
(std::string_view, RelaxedParserSupportedType),
(override));
MOCK_METHOD(void, RemoveRole, (std::string_view), (override));
MOCK_METHOD(void, SetSequenceMode, (std::string_view, bool), (override));
MOCK_METHOD(void, SetDuration, (double), (override));
MOCK_METHOD(Ranges<base::TimeDelta>,
GetBufferedRanges,
(std::string_view),
(override));
MOCK_METHOD(void,
Remove,
(std::string_view, base::TimeDelta, base::TimeDelta),
(override));
MOCK_METHOD(
void,
RemoveAndReset,
(std::string_view, base::TimeDelta, base::TimeDelta, base::TimeDelta*),
(override));
MOCK_METHOD(void,
SetGroupStartIfParsingAndSequenceMode,
(std::string_view, base::TimeDelta),
(override));
MOCK_METHOD(void,
EvictCodedFrames,
(std::string_view, base::TimeDelta, size_t),
(override));
MOCK_METHOD(bool,
AppendAndParseData,
(std::string_view,
base::TimeDelta,
base::TimeDelta,
base::TimeDelta*,
const uint8_t*,
size_t),
(override));
MOCK_METHOD(void, OnError, (PipelineStatus), (override));
MOCK_METHOD(void, RequestSeek, (base::TimeDelta), (override));
MOCK_METHOD(void,
SetGroupStartTimestamp,
(std::string_view role, base::TimeDelta time),
(override));
MOCK_METHOD(void, SetEndOfStream, (), (override));
MOCK_METHOD(void, UnsetEndOfStream, (), (override));
};
class MockHlsRenditionHost : public HlsRenditionHost {
public:
MockHlsRenditionHost();
~MockHlsRenditionHost() override;
MOCK_METHOD(void,
ReadManifest,
(const GURL&, HlsDataSourceProvider::ReadCb),
(override));
MOCK_METHOD(
void,
ReadMediaSegment,
(const hls::MediaSegment&, bool, bool, HlsDataSourceProvider::ReadCb),
(override));
MOCK_METHOD(void,
UpdateRenditionManifestUri,
(std::string, GURL, base::OnceCallback<void(bool)>),
(override));
MOCK_METHOD(void,
ReadStream,
(std::unique_ptr<HlsDataSourceStream>,
HlsDataSourceProvider::ReadCb),
(override));
MOCK_METHOD(void, UpdateNetworkSpeed, (uint64_t), (override));
MOCK_METHOD(void, SetEndOfStream, (bool), (override));
};
class MockHlsRendition : public HlsRendition {
public:
MockHlsRendition();
~MockHlsRendition() override;
MOCK_METHOD(void,
CheckState,
(base::TimeDelta time,
double rate,
ManifestDemuxer::DelayCallback cb),
(override));
MOCK_METHOD(ManifestDemuxer::SeekResponse,
Seek,
(base::TimeDelta time),
(override));
MOCK_METHOD(void, StartWaitingForSeek, (), (override));
MOCK_METHOD(std::optional<base::TimeDelta>, GetDuration, (), (override));
MOCK_METHOD(void, Stop, (), (override));
MOCK_METHOD(void,
UpdatePlaylist,
(scoped_refptr<hls::MediaPlaylist>, std::optional<GURL>),
(override));
};
} // namespace media
#endif // MEDIA_FILTERS_HLS_TEST_HELPERS_H_