diff --git a/source b/source index be225bcd16c..291c45fff57 100644 --- a/source +++ b/source @@ -39605,11 +39605,11 @@ interface MediaError {

The buffered attribute must return a new static - normalized TimeRanges object that represents the ranges of the - media resource, if any, that the user agent has buffered, at the time the attribute - is evaluated. User agents must accurately determine the ranges available, even for media streams - where this can only be determined by tedious inspection.

+ data-x="dom-media-buffered">buffered getter steps are to return a new + normalized TimeRanges object that represents the ranges of + this's media resource, if any, that the user agent has buffered. User + agents must accurately determine the ranges available, even for media streams where this can + only be determined by tedious inspection.

Typically this will be a single range anchored at the zero point, but if, e.g. the @@ -40499,10 +40499,10 @@ interface MediaError {

The played - attribute must return a new static normalized TimeRanges object that - represents the ranges of points on the media timeline of the media - resource reached through the usual monotonic increase of the current playback - position during normal playback, if any, at the time the attribute is evaluated.

+ getter steps are to return a new normalized TimeRanges object that + represents the ranges of points on the media timeline of this's + media resource reached through the usual monotonic increase of this's + current playback position during normal playback, if any.

Returning a new object each time is a bad pattern for attribute getters and is @@ -41170,10 +41170,10 @@ interface MediaError {

The seekable attribute must return a new static - normalized TimeRanges object that represents the ranges of the - media resource, if any, that the user agent is able to seek to, at the time the - attribute is evaluated.

+ data-x="dom-media-seekable">seekable getter steps are to return a new + normalized TimeRanges object that represents the ranges of + this's media resource, if any, that the user agent is able to seek + to.

If the user agent can seek to anywhere in the media resource, e.g. @@ -43577,52 +43577,88 @@ interface TimeRanges {

+

A TimeRanges object has ranges, a + list of zero or more time ranges.

+ +

A time range is a struct with the following + items:

+ + +

The length - IDL attribute must return the number of ranges represented by the object.

+ getter steps are to return this's ranges's + size.

The start(index) method must return the position - of the start of the indexth range represented by the object, in seconds measured from - the start of the timeline that the object covers.

+ data-x="dom-TimeRanges-start">start(index) method steps are:

+ +
    +
  1. If index is greater than or equal to this's ranges's size, then throw an + "IndexSizeError" DOMException.

  2. + +
  3. Return this's ranges[index]'s start.

  4. +

The end(index) method must return the position of - the end of the indexth range represented by the object, in seconds measured from the - start of the timeline that the object covers.

-
+ data-x="dom-TimeRanges-end">end(index) method steps are:

+ +
    +
  1. If index is greater than or equal to this's ranges's size, then throw an + "IndexSizeError" DOMException.

  2. -

    These methods must throw "IndexSizeError" DOMExceptions - if called with an index argument greater than or equal to the number of ranges - represented by the object.

    +
  3. Return this's ranges[index]'s end.

  4. +
+
-

When a TimeRanges object is said to be a normalized TimeRanges object, - the ranges it represents must obey the following criteria:

+

A TimeRanges object is a normalized TimeRanges object if the following are true for each time range in its ranges:

-

In other words, the ranges in such an object are ordered, don't overlap, and don't touch - (adjacent ranges are folded into one bigger range). A range can be empty (referencing just a - single moment in time), e.g. to indicate that only one frame is currently buffered in the case - that the user agent has discarded the entire media resource except for the current - frame, when a media element is paused.

- -

Ranges in a TimeRanges object must be inclusive.

- -

Thus, the end of a range would be equal to the start of a following adjacent - (touching but not overlapping) range. Similarly, a range covering a whole timeline anchored at - zero would have a start equal to zero and an end equal to the duration of the timeline.

+

In other words, the time ranges in such an object are + ordered, don't overlap, and don't touch (adjacent ones are folded into one bigger time range). A time range + can be empty (referencing just a single moment in time), e.g., to indicate that only one frame is + currently buffered in the case that the user agent has discarded the entire media + resource except for the current frame, when a media element is paused.

+ +

A time range's start and end + are inclusive.

+ +

Thus, the end of a time range would be equal to the start of a following adjacent (touching but not + overlapping) time range. Similarly, a time range covering a whole timeline anchored at zero would have + a start equal to zero and an end equal to the duration of the timeline.

The timelines used by the objects returned by the buffered, seekable, and