[whatwg] Adding and removing media source elements

I want to clarify something about <media>'s child <source> element... In 
the <source> element spec [ 
http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#the-source-element 
] it says:
> If a source element is inserted into a media element that is already 
> in a document and whose networkState is in the NETWORK_EMPTY state, 
> the user agent must queue a task that implicitly invokes the load() 
> method on the media element, and ignores any resulting exceptions.
So we only trigger a load when adding a child <source> element to a 
<media> element if the media element is in NETWORK_EMPTY networkState.

Additionally, in the spec for <media>'s src attribute [ 
http://www.whatwg.org/specs/web-apps/current-work/multipage/video.html#attr-media-src 
] it says:
> If the src attribute of a media element that is already in a document 
> and whose networkState is in the NETWORK_EMPTY state is added, 
> changed, or removed, the user agent must queue a task that implicitly 
> invokes the load() method on the media element, and ignores any 
> resulting exceptions. 
Almost the same, except that we invoke the load algorithm when the src 
is removed or changed in this case.

I have the following questions:

(1) Should removing a media element's child source element while the 
networkState is NETWORK_EMPTY cause the load() algorithm to be invoked? 
This would match the behviour of removing the media element's src 
attribute when networkState is NETWORK_EMPTY.

It seems that in order to start a load in an already loaded media 
element, you must change the src attribute or add source element 
children to the media element, and then call load() on the media 
element. Whereas when you initially create the media element, the first 
time you add the src attribute or add a child source element to the 
media element, you'll start an asynchronous load immediately.

(2) Why don't we invoke load() whenever a media element's src attribute 
or <source> children are changed, regardless of networkState? That way 
changes to the media's src/source other than the first change would have 
the same effect as first change, i.e. they'd have an immediate effect, 
causing load() to be invoked.

Thanks,
Chris Pearce.

Received on Monday, 2 February 2009 20:06:14 UTC