Use "= default" to denote default constructor or destructor
[WebKit-https.git] / Source / WebCore / platform / mock / mediasource / MockSourceBufferPrivate.cpp
index 369ff34..de15c9e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2013-2014 Apple Inc. All rights reserved.
+ * Copyright (C) 2013-2017 Apple Inc. All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -20,7 +20,7 @@
  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
 #include "config.h"
 #include "SourceBufferPrivateClient.h"
 #include <map>
 #include <runtime/ArrayBuffer.h>
-#include <wtf/PrintStream.h>
+#include <wtf/StringPrintStream.h>
 
 namespace WebCore {
 
 class MockMediaSample final : public MediaSample {
 public:
-    static RefPtr<MockMediaSample> create(const MockSampleBox& box) { return adoptRef(new MockMediaSample(box)); }
-    virtual ~MockMediaSample() { }
+    static Ref<MockMediaSample> create(const MockSampleBox& box) { return adoptRef(*new MockMediaSample(box)); }
+    virtual ~MockMediaSample() = default;
 
 private:
     MockMediaSample(const MockSampleBox& box)
@@ -54,16 +54,21 @@ private:
     {
     }
 
-    virtual MediaTime presentationTime() const override { return m_box.presentationTimestamp(); }
-    virtual MediaTime decodeTime() const override { return m_box.decodeTimestamp(); }
-    virtual MediaTime duration() const override { return m_box.duration(); }
-    virtual AtomicString trackID() const override { return m_id; }
-    virtual size_t sizeInBytes() const override { return sizeof(m_box); }
-    virtual SampleFlags flags() const override;
-    virtual PlatformSample platformSample() override;
-    virtual FloatSize presentationSize() const override { return FloatSize(); }
-    virtual void dump(PrintStream&) const override;
-    virtual void offsetTimestampsBy(const MediaTime& offset) override { m_box.offsetTimestampsBy(offset); }
+    MediaTime presentationTime() const override { return m_box.presentationTimestamp(); }
+    MediaTime decodeTime() const override { return m_box.decodeTimestamp(); }
+    MediaTime duration() const override { return m_box.duration(); }
+    AtomicString trackID() const override { return m_id; }
+    void setTrackID(const String& id) override { m_id = id; }
+    size_t sizeInBytes() const override { return sizeof(m_box); }
+    SampleFlags flags() const override;
+    PlatformSample platformSample() override;
+    FloatSize presentationSize() const override { return FloatSize(); }
+    void dump(PrintStream&) const override;
+    void offsetTimestampsBy(const MediaTime& offset) override { m_box.offsetTimestampsBy(offset); }
+    void setTimestamps(const MediaTime& presentationTimestamp, const MediaTime& decodeTimestamp) override { m_box.setTimestamps(presentationTimestamp, decodeTimestamp); }
+    bool isDivisable() const override { return false; }
+    std::pair<RefPtr<MediaSample>, RefPtr<MediaSample>> divide(const MediaTime&) override { return {nullptr, nullptr}; }
+    Ref<MediaSample> createNonDisplayingCopy() const override;
 
     unsigned generation() const { return m_box.generation(); }
 
@@ -74,8 +79,10 @@ private:
 MediaSample::SampleFlags MockMediaSample::flags() const
 {
     unsigned flags = None;
-    if (m_box.flags() & MockSampleBox::IsSync)
+    if (m_box.isSync())
         flags |= IsSync;
+    if (m_box.isNonDisplaying())
+        flags |= IsNonDisplaying;
     return SampleFlags(flags);
 }
 
@@ -90,15 +97,22 @@ void MockMediaSample::dump(PrintStream& out) const
     out.print("{PTS(", presentationTime(), "), DTS(", decodeTime(), "), duration(", duration(), "), flags(", (int)flags(), "), generation(", generation(), ")}");
 }
 
+Ref<MediaSample> MockMediaSample::createNonDisplayingCopy() const
+{
+    auto copy = MockMediaSample::create(m_box);
+    copy->m_box.setFlag(MockSampleBox::IsNonDisplaying);
+    return WTFMove(copy);
+}
+
 class MockMediaDescription final : public MediaDescription {
 public:
     static RefPtr<MockMediaDescription> create(const MockTrackBox& box) { return adoptRef(new MockMediaDescription(box)); }
-    virtual ~MockMediaDescription() { }
+    virtual ~MockMediaDescription() = default;
 
-    virtual AtomicString codec() const override { return m_box.codec(); }
-    virtual bool isVideo() const override { return m_box.kind() == MockTrackBox::Video; }
-    virtual bool isAudio() const override { return m_box.kind() == MockTrackBox::Audio; }
-    virtual bool isText() const override { return m_box.kind() == MockTrackBox::Text; }
+    AtomicString codec() const override { return m_box.codec(); }
+    bool isVideo() const override { return m_box.kind() == MockTrackBox::Video; }
+    bool isAudio() const override { return m_box.kind() == MockTrackBox::Audio; }
+    bool isText() const override { return m_box.kind() == MockTrackBox::Text; }
 
 protected:
     MockMediaDescription(const MockTrackBox& box) : m_box(box) { }
@@ -116,18 +130,16 @@ MockSourceBufferPrivate::MockSourceBufferPrivate(MockMediaSourcePrivate* parent)
 {
 }
 
-MockSourceBufferPrivate::~MockSourceBufferPrivate()
-{
-}
+MockSourceBufferPrivate::~MockSourceBufferPrivate() = default;
 
 void MockSourceBufferPrivate::setClient(SourceBufferPrivateClient* client)
 {
     m_client = client;
 }
 
-void MockSourceBufferPrivate::append(const unsigned char* data, unsigned length)
+void MockSourceBufferPrivate::append(Vector<unsigned char>&& data)
 {
-    m_inputBuffer.append(data, length);
+    m_inputBuffer.appendVector(data);
     SourceBufferPrivateClient::AppendResult result = SourceBufferPrivateClient::AppendSucceeded;
 
     while (m_inputBuffer.size() && result == SourceBufferPrivateClient::AppendSucceeded) {
@@ -150,7 +162,7 @@ void MockSourceBufferPrivate::append(const unsigned char* data, unsigned length)
     }
 
     if (m_client)
-        m_client->sourceBufferPrivateAppendComplete(this, result);
+        m_client->sourceBufferPrivateAppendComplete(result);
 }
 
 void MockSourceBufferPrivate::didReceiveInitializationSegment(const MockInitializationBox& initBox)
@@ -181,7 +193,7 @@ void MockSourceBufferPrivate::didReceiveInitializationSegment(const MockInitiali
         }
     }
 
-    m_client->sourceBufferPrivateDidReceiveInitializationSegment(this, segment);
+    m_client->sourceBufferPrivateDidReceiveInitializationSegment(segment);
 }
 
 
@@ -190,13 +202,17 @@ void MockSourceBufferPrivate::didReceiveSample(const MockSampleBox& sampleBox)
     if (!m_client)
         return;
 
-    m_client->sourceBufferPrivateDidReceiveSample(this, MockMediaSample::create(sampleBox));
+    m_client->sourceBufferPrivateDidReceiveSample(MockMediaSample::create(sampleBox));
 }
 
 void MockSourceBufferPrivate::abort()
 {
 }
 
+void MockSourceBufferPrivate::resetParserState()
+{
+}
+
 void MockSourceBufferPrivate::removedFromMediaSource()
 {
     if (m_mediaSource)
@@ -220,16 +236,21 @@ void MockSourceBufferPrivate::setActive(bool isActive)
         m_mediaSource->sourceBufferPrivateDidChangeActiveState(this, isActive);
 }
 
-void MockSourceBufferPrivate::enqueueSample(PassRefPtr<MediaSample> sample, AtomicString)
+Vector<String> MockSourceBufferPrivate::enqueuedSamplesForTrackID(const AtomicString&)
 {
-    if (!m_mediaSource || !sample)
+    return m_enqueuedSamples;
+}
+
+void MockSourceBufferPrivate::enqueueSample(Ref<MediaSample>&& sample, const AtomicString&)
+{
+    if (!m_mediaSource)
         return;
 
     PlatformSample platformSample = sample->platformSample();
     if (platformSample.type != PlatformSample::MockSampleBoxType)
         return;
 
-    MockSampleBox* box = platformSample.sample.mockSampleBox;
+    auto* box = platformSample.sample.mockSampleBox;
     if (!box)
         return;
 
@@ -240,36 +261,31 @@ void MockSourceBufferPrivate::enqueueSample(PassRefPtr<MediaSample> sample, Atom
         m_mediaSource->incrementDroppedFrames();
     if (box->isDelayed())
         m_mediaSource->incrementTotalFrameDelayBy(MediaTime(1, 1));
+
+    m_enqueuedSamples.append(toString(sample.get()));
 }
 
 bool MockSourceBufferPrivate::hasVideo() const
 {
-    if (!m_client)
-        return false;
-
-    return m_client->sourceBufferPrivateHasVideo(this);
+    return m_client && m_client->sourceBufferPrivateHasVideo();
 }
 
 bool MockSourceBufferPrivate::hasAudio() const
 {
-    if (!m_client)
-        return false;
-
-    return m_client->sourceBufferPrivateHasAudio(this);
+    return m_client && m_client->sourceBufferPrivateHasAudio();
 }
 
-
 MediaTime MockSourceBufferPrivate::fastSeekTimeForMediaTime(const MediaTime& time, const MediaTime& negativeThreshold, const MediaTime& positiveThreshold)
 {
     if (m_client)
-        return m_client->sourceBufferPrivateFastSeekTimeForMediaTime(this, time, negativeThreshold, positiveThreshold);
+        return m_client->sourceBufferPrivateFastSeekTimeForMediaTime(time, negativeThreshold, positiveThreshold);
     return time;
 }
 
 void MockSourceBufferPrivate::seekToTime(const MediaTime& time)
 {
     if (m_client)
-        m_client->sourceBufferPrivateSeekToTime(this, time);
+        m_client->sourceBufferPrivateSeekToTime(time);
 }
 
 }