1/* 2 * Copyright (C) 2013-2014 Apple Inc. All rights reserved. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 1. Redistributions of source code must retain the above copyright 8 * notice, this list of conditions and the following disclaimer. 9 * 2. Redistributions in binary form must reproduce the above copyright 10 * notice, this list of conditions and the following disclaimer in the 11 * documentation and/or other materials provided with the distribution. 12 * 13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24 */ 25 26#ifndef MockSourceBufferPrivate_h 27#define MockSourceBufferPrivate_h 28 29#if ENABLE(MEDIA_SOURCE) 30 31#include "SourceBufferPrivate.h" 32#include <wtf/HashMap.h> 33#include <wtf/MediaTime.h> 34#include <wtf/RefPtr.h> 35#include <wtf/RetainPtr.h> 36#include <wtf/Vector.h> 37 38namespace WebCore { 39 40class AudioTrackPrivate; 41class InbandTextTrackPrivate; 42class MockInitializationBox; 43class MockMediaSourcePrivate; 44class MockSampleBox; 45class TimeRanges; 46class VideoTrackPrivate; 47 48class MockSourceBufferPrivate : public SourceBufferPrivate { 49public: 50 static RefPtr<MockSourceBufferPrivate> create(MockMediaSourcePrivate*); 51 virtual ~MockSourceBufferPrivate(); 52 53 void clearMediaSource() { m_mediaSource = nullptr; } 54 55 bool hasVideo() const; 56 bool hasAudio() const; 57 58 void seekToTime(const MediaTime&); 59 MediaTime fastSeekTimeForMediaTime(const MediaTime&, const MediaTime& negativeThreshold, const MediaTime& positiveThreshold); 60 61private: 62 explicit MockSourceBufferPrivate(MockMediaSourcePrivate*); 63 64 // SourceBufferPrivate overrides 65 virtual void setClient(SourceBufferPrivateClient*) override; 66 virtual void append(const unsigned char* data, unsigned length) override; 67 virtual void abort() override; 68 virtual void removedFromMediaSource() override; 69 virtual MediaPlayer::ReadyState readyState() const override; 70 virtual void setReadyState(MediaPlayer::ReadyState) override; 71 72 virtual void flushAndEnqueueNonDisplayingSamples(Vector<RefPtr<MediaSample>>, AtomicString) override { } 73 virtual void enqueueSample(PassRefPtr<MediaSample>, AtomicString) override; 74 virtual bool isReadyForMoreSamples(AtomicString) override { return true; } 75 virtual void setActive(bool) override; 76 77 void didReceiveInitializationSegment(const MockInitializationBox&); 78 void didReceiveSample(const MockSampleBox&); 79 80 MockMediaSourcePrivate* m_mediaSource; 81 SourceBufferPrivateClient* m_client; 82 83 Vector<char> m_inputBuffer; 84}; 85 86} 87 88#endif // ENABLE(MEDIA_SOURCE) && USE(AVFOUNDATION) 89 90#endif 91 92