[Bug 18515] Provide more details on behavior of the media element when the key for an encrypted block is not available

https://www.w3.org/Bugs/Public/show_bug.cgi?id=18515

--- Comment #16 from Jerry Smith <jdsmith@microsoft.com> ---
I’ve attached a proposed change below that adds a waitingFor attribute to the
Media Element, and sets it to either data or mediakeys to signal whether the
waiting event was triggered by readyState changes or the need for new media
keys.


Add a new Media Element property to section 2. Media Element Extensions:

  attribute waitingFor;

With these states defined:

  enum waitingFor {
    “notwaiting”,
    “mediakeys”,
    “data”
  }; 

Add to the playing condition text under 4.2 Encrypted Block Encountered.

Existing:
The following paragraph is added to Playing the media resource.
•  A media element is said to be waiting for a key when it would be potentially
playing but the user agent has reached a point in the media resource that must
be decrypted for the resource to continue and the CDM does not have the
necessary key. 
•  The media element leaves this state when seeking but could re-enter it if
the same conditions exist.

New:
•  It is possible for media element to be playing protected media and then
encounter content that requires new media keys.  For state changes caused by
pending key requests or delivery, apply the first appropriate substeps from the
following list:
   o  If media element was previously playing and had a waitingFor value of
“notwaiting”: 
      -  If readyState changes queue a task to fire a waiting event, the user
agent must also set the waitingFor attribute on the Media Element to “data”.
      -  If new mediaKeys are needed to continue and the element has not ended
play back, the user agent must set the waitingFor attribute on the Media
Element to “mediakeys”, queue a task to fire a simple event named timeupdate at
the element, and queue a task to fire a simple event named waiting at the
element.
   o  If media element was previously waiting and had a waitingFor value of
“data”: 
      -  If readyState changes queue a task to fire a canplay event, the user
agent must also set the waitingFor attribute on the Media Element to
“notwaiting”.
   o  If media element was previously waiting and had a waitingFor value of
“mediakeys”: 
      -  If mediaKeys becomes available for playback to proceed, the user agent
must set the waitingFor attribute on the Media Element to “notwaiting”, queue a
task to fire a simple event named timeupdate at the element, and queue a task
to fire a simple event named canplay at the element.

-- 
You are receiving this mail because:
You are the QA Contact for the bug.

Received on Tuesday, 14 January 2014 16:28:49 UTC