Bug 1368837 - Implement SourceBufferResource::GetCachedDataEnd - r=cpearce draft
authorGerald Squelart <gsquelart@mozilla.com>
Mon, 29 May 2017 14:51:08 +1200
changeset 587478 e0613fc0d2e833a2527e826cc055a84ffcb2b65b
parent 587477 501905bf2428e4ccd998ef23ac37ef5860c46bcb
child 587479 c47454bddce37e09e0f598c891e1332ef33103cb
push id61722
push usergsquelart@mozilla.com
push dateThu, 01 Jun 2017 04:10:47 +0000
reviewerscpearce
bugs1368837
milestone55.0a1
Bug 1368837 - Implement SourceBufferResource::GetCachedDataEnd - r=cpearce MediaResourceIndex caching requires GetCachedDataEnd and ReadFromCache. Implementing SourceBufferResource::GetCachedDataEnd is trivial, as it's just a buffer from 0 to GetLength(), so if the requested cached-data offset is inside the buffer, we can just return the total length as known cached data. MozReview-Commit-ID: 1DO0PzDnjQp
dom/media/mediasource/SourceBufferResource.h
--- a/dom/media/mediasource/SourceBufferResource.h
+++ b/dom/media/mediasource/SourceBufferResource.h
@@ -79,18 +79,24 @@ public:
       return mInputBuffer.GetOffset();
     } else if (aOffset == GetLength()) {
       return -1;
     }
     return aOffset;
   }
   int64_t GetCachedDataEnd(int64_t aOffset) override
   {
-    UNIMPLEMENTED();
-    return -1;
+    MOZ_ASSERT(OnTaskQueue());
+    MOZ_ASSERT(aOffset >= 0);
+    if (uint64_t(aOffset) < mInputBuffer.GetOffset() ||
+        aOffset >= GetLength()) {
+      // aOffset is outside of the buffered range.
+      return aOffset;
+    }
+    return GetLength();
   }
   bool IsDataCachedToEndOfResource(int64_t aOffset) override { return false; }
   bool IsSuspendedByCache() override
   {
     UNIMPLEMENTED();
     return false;
   }
   bool IsSuspended() override