MockMediaDataDemuxer.h (2466B)
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this file, 5 * You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #ifndef MOCK_MEDIA_DATA_DEMUXER_H_ 8 #define MOCK_MEDIA_DATA_DEMUXER_H_ 9 10 #include "MediaContainerType.h" 11 #include "MediaDecoderOwner.h" 12 #include "MediaMIMETypes.h" 13 #include "VideoUtils.h" 14 #include "gmock/gmock.h" 15 16 namespace mozilla { 17 18 class MockMediaDataDemuxer : public MediaDataDemuxer { 19 public: 20 MockMediaDataDemuxer() { 21 ON_CALL(*this, Init).WillByDefault([]() { 22 return InitPromise::CreateAndResolve(NS_OK, __func__); 23 }); 24 } 25 26 MOCK_METHOD(RefPtr<InitPromise>, Init, (), (override)); 27 MOCK_METHOD(uint32_t, GetNumberTracks, (TrackInfo::TrackType aType), 28 (const, override)); 29 MOCK_METHOD(already_AddRefed<MediaTrackDemuxer>, GetTrackDemuxer, 30 (TrackInfo::TrackType aType, uint32_t aTrackNumber), (override)); 31 MOCK_METHOD(bool, IsSeekable, (), (const, override)); 32 33 protected: 34 ~MockMediaDataDemuxer() override = default; 35 }; 36 37 class MockMediaTrackDemuxer : public MediaTrackDemuxer { 38 public: 39 // aExtendedMimeType must be a static string or otherwise alive when 40 // GetInfo() is called. 41 explicit MockMediaTrackDemuxer(const char* aExtendedMimeType) { 42 ON_CALL(*this, GetInfo).WillByDefault([=]() { 43 auto extended = MakeMediaContainerType(aExtendedMimeType).value(); 44 return CreateTrackInfoWithMIMETypeAndContainerTypeExtraParameters( 45 extended.Type().AsString(), extended); 46 }); 47 } 48 49 MOCK_METHOD(UniquePtr<TrackInfo>, GetInfo, (), (const, override)); 50 MOCK_METHOD(RefPtr<SeekPromise>, Seek, (const media::TimeUnit& aTime), 51 (override)); 52 RefPtr<SamplesPromise> GetSamples(int32_t aNumSamples = 1) override { 53 EXPECT_EQ(aNumSamples, 1) << "Multiple samples not implemented"; 54 return MockGetSamples(); 55 } 56 MOCK_METHOD(RefPtr<SamplesPromise>, MockGetSamples, ()); 57 MOCK_METHOD(void, Reset, (), (override)); 58 MOCK_METHOD(RefPtr<SkipAccessPointPromise>, SkipToNextRandomAccessPoint, 59 (const media::TimeUnit& aTimeThreshold), (override)); 60 MOCK_METHOD(media::TimeIntervals, GetBuffered, (), (override)); 61 62 protected: 63 ~MockMediaTrackDemuxer() override = default; 64 }; 65 66 } // namespace mozilla 67 68 #endif /* MOCK_MEDIA_DATA_DEMUXER_H_ */