Bug 1277729: Ignore readyState value when reporting the buffered range. r?jwwang draft
authorJean-Yves Avenard <jyavenard@mozilla.com>
Fri, 03 Jun 2016 11:46:36 +1000
changeset 374939 ec9c6dd8b792883a4213bd3a3d711e68816fcfdf
parent 374919 aab70b265c91bdff5da43c4ceb3bef4865a3a3d9
child 375352 4256e5727d4f162d2c8c2b01cd40ea960f57c42a
push id20117
push userbmo:jyavenard@mozilla.com
push dateFri, 03 Jun 2016 01:47:53 +0000
reviewersjwwang
bugs1277729
milestone49.0a1
Bug 1277729: Ignore readyState value when reporting the buffered range. r?jwwang For plain media playback, the buffered range will always be empty if readyState is HAVE_NOTHING has we need to decode the metadata to determine the duration and eventually decode the first frame to determine the start time. With MSE however, the buffered range is per spec directly related to the source buffer buffered range. So we can always simply query the MediaDecoder to determine the buffered range regardless of the readyState value. MozReview-Commit-ID: BQs8iuUCiNw
dom/html/HTMLMediaElement.cpp
--- a/dom/html/HTMLMediaElement.cpp
+++ b/dom/html/HTMLMediaElement.cpp
@@ -4737,22 +4737,20 @@ HTMLMediaElement::CopyInnerTo(Element* a
   }
   return rv;
 }
 
 already_AddRefed<TimeRanges>
 HTMLMediaElement::Buffered() const
 {
   RefPtr<TimeRanges> ranges = new TimeRanges(ToSupports(OwnerDoc()));
-  if (mReadyState > nsIDOMHTMLMediaElement::HAVE_NOTHING) {
-    if (mDecoder) {
-      media::TimeIntervals buffered = mDecoder->GetBuffered();
-      if (!buffered.IsInvalid()) {
-        buffered.ToTimeRanges(ranges);
-      }
+  if (mDecoder) {
+    media::TimeIntervals buffered = mDecoder->GetBuffered();
+    if (!buffered.IsInvalid()) {
+      buffered.ToTimeRanges(ranges);
     }
   }
   return ranges.forget();
 }
 
 nsresult HTMLMediaElement::GetBuffered(nsIDOMTimeRanges** aBuffered)
 {
   RefPtr<TimeRanges> ranges = Buffered();