[EME] Bug 25966 - Fix links broken by the introduction of BufferSource.
authorDavid Dorwin <ddorwin@google.com>
Wed, 22 Oct 2014 16:30:38 -0700
changeset 484 e1d077a277e6
parent 483 01e1fd38ee4b
child 485 8b2f1cee7e87
[EME] Bug 25966 - Fix links broken by the introduction of BufferSource.
encrypted-media/encrypted-media.html
encrypted-media/encrypted-media.js
--- a/encrypted-media/encrypted-media.html	Tue Oct 21 10:22:23 2014 -0700
+++ b/encrypted-media/encrypted-media.html	Wed Oct 22 16:30:38 2014 -0700
@@ -445,7 +445,7 @@
   </p>
   <h1 class="title p-name" id="title" property="dcterms:title">Encrypted Media Extensions</h1>
   
-  <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2014-10-21T17:06:28.000Z" id="w3c-editor-s-draft-21-october-2014"><abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft <time class="dt-published" datetime="2014-10-21">21 October 2014</time></h2>
+  <h2 property="dcterms:issued" datatype="xsd:dateTime" content="2014-10-22T23:25:15.000Z" id="w3c-editor-s-draft-22-october-2014"><abbr title="World Wide Web Consortium">W3C</abbr> Editor's Draft <time class="dt-published" datetime="2014-10-22">22 October 2014</time></h2>
   <dl>
     
       <dt>This version:</dt>
@@ -636,7 +636,9 @@
             <div class="note"><div class="note-title" aria-level="2" role="heading" id="h_note_2"><span>Note</span></div><p class="">For example, an initialization, provisioning, or individualization process for a client device that involves communicating with a server hosted by the user agent or CDM vendor and does not contain application- or origin-specific information <em class="rfc2119" title="MUST">MUST</em> be performed by the user agent without involving the application.
               The same applies to reinitialization, reprovisioning, or reindividualization.
             </p></div>
-            <p>For implementations that support per-origin initialization, such messages <em class="rfc2119" title="MUST">MUST</em> be passed to the application via the APIs.</p>
+            <p>For implementations that support per-origin initialization, such messages <em class="rfc2119" title="MUST">MUST</em> be passed to the application via the APIs.
+              As with all other uses of the APIs, responses passed to the CDM <em class="rfc2119" title="MUST NOT">MUST NOT</em> contain executable code.
+            </p>
           </dd>
     
           <dt id="key-system">Key System</dt>
@@ -663,7 +665,7 @@
           <dd>
             <p>A Key Session, or simply Session, provides a context for message exchange with the CDM as a result of which key(s) are made available to the <a href="#cdm">CDM</a>.
             Sessions are embodied as <code><a href="#idl-def-MediaKeySession">MediaKeySession</a></code> objects.
-            Each Key session is associated with a single instance of <a href="#initialization-data">Initialization Data</a> provided in the <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest()</a></code> call.
+            Each Key session is associated with a single instance of <a href="#initialization-data">Initialization Data</a> provided in the <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest()</a></code> call.
             </p>
             <p>Each Key Session is associated with a single <code><a href="#idl-def-MediaKeys">MediaKeys</a></code> object, and only media element(s) associated with that object may access key(s) associated with the session.
             Other <code><a href="#idl-def-MediaKeys">MediaKeys</a></code> objects, <a href="#cdm">CDM</a> instances, and media elements <em class="rfc2119" title="MUST NOT">MUST NOT</em> access the key session or use its key(s).
@@ -689,7 +691,7 @@
             <p>Unless otherwise stated, key refers to a decryption key that can be used to decrypt blocks within <a href="http://www.w3.org/TR/html5/embedded-content-0.html#media-data">media data</a>.
             Each such key is uniquely identified by a <a href="#decryption-key-id">key ID</a>.
             A key is associated with the <a href="#key-session">session</a> used to provide it to the CDM. (The same key may be present in multiple sessions.)
-            Such keys <em class="rfc2119" title="MUST">MUST</em> only be provided to the <a href="#cdm">CDM</a> via an <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> call. (They may later be loaded by <code><a href="#widl-MediaKeySession-load-Promise-boolean--DOMString-sessionId">load()</a></code> as part of the stored session data.)
+            Such keys <em class="rfc2119" title="MUST">MUST</em> only be provided to the <a href="#cdm">CDM</a> via an <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> call. (They may later be loaded by <code><a href="#widl-MediaKeySession-load-Promise-boolean--DOMString-sessionId">load()</a></code> as part of the stored session data.)
             </p>
             
             <p>A key is considered <em>usable</em> if the CDM is certain the key is currently usable for decryption.</p>
@@ -739,7 +741,7 @@
 
             <p>Initialization Data <em class="rfc2119" title="MUST">MUST</em> be a fixed value for a given set of stream(s) or <a href="http://www.w3.org/TR/html5/embedded-content-0.html#media-data">media data</a>.
               It <em class="rfc2119" title="MUST">MUST</em> only contain information related to the keys required to play a given set of stream(s) or <a href="http://www.w3.org/TR/html5/embedded-content-0.html#media-data">media data</a>.
-              It <em class="rfc2119" title="MUST NOT">MUST NOT</em> contain application data, client-specific data, user-specific data, or <a href="#decryption-key">key(s)</a>.
+              It <em class="rfc2119" title="MUST NOT">MUST NOT</em> contain application data, client-specific data, user-specific data, <a href="#decryption-key">key(s)</a>, or executable code.
             </p>
             
             <p>Initialization Data <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em> contain Key System-specific data or values.
@@ -1014,6 +1016,7 @@
         <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">serverCertificate</td><td class="prmType"><code>BufferSource</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc">
               The server certificate.
               The contents are <a href="#key-system">Key System</a>-specific.
+              It <em class="rfc2119" title="MUST NOT">MUST NOT</em> contain executable code.
             </td></tr></tbody></table><div><em>Return type: </em><code>Promise&lt;void&gt;</code></div><p>When this method is invoked, the user agent must run the following steps:</p><ol class="method-algorithm">
             <li><p>If <var title="true">serverCertificate</var> is an empty array, return a promise rejected with a new a new <code><a href="http://heycam.github.io/webidl/#dfn-DOMException">DOMException</a></code> whose name is <code><a href="#dfn-InvalidAccessError">InvalidAccessError</a></code>.</p></li>
             <li><p>If the <a href="#cdm">CDM</a> corresponding to the <code><a href="#widl-MediaKeySystemAccess-keySystem">keySystem</a></code> attribute does not support server certificates, return a promise rejected with a new <code><a href="http://heycam.github.io/webidl/#dfn-DOMException">DOMException</a></code> whose name is <code><a href="#dfn-NotSupportedError">NotSupportedError</a></code>.</p></li>
@@ -1275,6 +1278,7 @@
         <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">response</td><td class="prmType"><code>BufferSource</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc">
               A message to be provided to the CDM.
               The contents are <a href="#key-system">Key System</a>-specific.
+              It <em class="rfc2119" title="MUST NOT">MUST NOT</em> contain executable code.
             </td></tr></tbody></table><div><em>Return type: </em><code>Promise&lt;void&gt;</code></div><p>When this method is invoked, the user agent must run the following steps:</p><ol class="method-algorithm">
             <li><p>If this object's <var title="true">callable</var> value is false, return a promise rejected with a new <code><a href="http://heycam.github.io/webidl/#dfn-DOMException">DOMException</a></code> whose name is <code><a href="#dfn-InvalidStateError">InvalidStateError</a></code>.</p></li>
             <li><p>If <var title="true">response</var> is an empty array, return a promise rejected with a new <code><a href="http://heycam.github.io/webidl/#dfn-DOMException">DOMException</a></code> whose name is <code><a href="#dfn-InvalidAccessError">InvalidAccessError</a></code>.</p></li>
@@ -1431,7 +1435,7 @@
         <section id="algorithms-keys-changed" typeof="bibo:Chapter" resource="#algorithms-keys-changed" rel="bibo:Chapter">
           <h4 role="heading" id="h4_algorithms-keys-changed"><span class="secno">5.5.2 </span>Usable Keys Changed</h4>
           <p>The Usable Keys Changed algorithm is run when the CDM changes the set of keys in the session that may be used for decryption.
-          This can happen as the result of an <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> call or some other event.
+          This can happen as the result of an <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> call or some other event.
           Requests to run this algorithm include a target <code><a href="#idl-def-MediaKeySession">MediaKeySession</a></code> object.
           </p>
           <p>The following steps are run:</p>
@@ -1448,7 +1452,7 @@
         <section id="algorithms-update-expiration" typeof="bibo:Chapter" resource="#algorithms-update-expiration" rel="bibo:Chapter">
           <h4 role="heading" id="h4_algorithms-update-expiration"><span class="secno">5.5.3 </span>Update Expiration</h4>
           <p>The Update Expiration algorithm is run when the CDM changes the expiration time of a session.
-          This can happen as the result of an <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> call or some other event.
+          This can happen as the result of an <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> call or some other event.
           Requests to run this algorithm include a target <code><a href="#idl-def-MediaKeySession">MediaKeySession</a></code> object and the new expiration time, which may be <code>NaN</code>.
           </p>
           <p>The following steps are run:</p>
@@ -1539,12 +1543,12 @@
         <p>Persisted data <em class="rfc2119" title="MUST">MUST</em> always be stored such that only the <a href="http://www.w3.org/TR/html5/browsers.html#origin-0">origin</a> of this object's <a href="http://dom.spec.whatwg.org/#concept-document">Document</a> can access it.
           In addition, the data <em class="rfc2119" title="MUST">MUST</em> only be accessible by the current profile of this user agent - other user agent profiles, user agents, and applications <em class="rfc2119" title="MUST NOT">MUST NOT</em> be able to access the stored data.
         </p>
-        <p>The CDM <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em> store session data, including the Session ID, until <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> is called the first time.
-          Specifically, the CDM <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em> store session data during the <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest()</a></code> algorithm.
+        <p>The CDM <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em> store session data, including the Session ID, until <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> is called the first time.
+          Specifically, the CDM <em class="rfc2119" title="SHOULD NOT">SHOULD NOT</em> store session data during the <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest()</a></code> algorithm.
           This ensures that the application is aware of the session and knows it needs to eventually remove it.
         </p>
         <p>The CDM <em class="rfc2119" title="MUST">MUST</em> ensure that data for a given session is only present in one active unclosed session in any <a href="http://dom.spec.whatwg.org/#concept-document">Document</a>.
-          In other words, <code><a href="#widl-MediaKeySession-load-Promise-boolean--DOMString-sessionId">load()</a></code> <em class="rfc2119" title="MUST">MUST</em> fail when there is already a <code><a href="#idl-def-MediaKeySession">MediaKeySession</a></code> representing the session specified by the <var title="true">sessionId</var> parameter, either because the object that created it via <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest()</a></code> is still active or it has been loaded into another object via <code><a href="#widl-MediaKeySession-load-Promise-boolean--DOMString-sessionId">load()</a></code>.
+          In other words, <code><a href="#widl-MediaKeySession-load-Promise-boolean--DOMString-sessionId">load()</a></code> <em class="rfc2119" title="MUST">MUST</em> fail when there is already a <code><a href="#idl-def-MediaKeySession">MediaKeySession</a></code> representing the session specified by the <var title="true">sessionId</var> parameter, either because the object that created it via <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest()</a></code> is still active or it has been loaded into another object via <code><a href="#widl-MediaKeySession-load-Promise-boolean--DOMString-sessionId">load()</a></code>.
           A session <em class="rfc2119" title="MAY">MAY</em> only be loaded again after the <a href="#algorithms-session-close">session close algorithm</a> has not been run on the object representing it.
         </p>
         <p>An application that creates a <code><a href="#idl-def-SessionType.persistent">"persistent"</a></code> session <em class="rfc2119" title="SHOULD">SHOULD</em> later remove the stored data using <code><a href="#widl-MediaKeySession-remove-Promise-void">remove()</a></code>.
@@ -1895,7 +1899,7 @@
           <p>The following describe how Clear Key supports key system-specific capabilities:</p>
           <ul>
             <li><p>The <code><a href="#widl-HTMLMediaElement-setMediaKeys-Promise-void--MediaKeys-mediaKeys">setMediaKeys()</a></code> method: Implementations <em class="rfc2119" title="MAY">MAY</em> support associating the <code><a href="#idl-def-MediaKeys">MediaKeys</a></code> object with more than one <code><a href="http://www.w3.org/TR/html5/embedded-content-0.html#htmlmediaelement">HTMLMediaElement</a></code>.</p></li>
-            <li><p>The <code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--ArrayBuffer-ArrayBufferView-serverCertificate">setServerCertificate()</a></code> method: Not supported.</p></li>
+            <li><p>The <code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--BufferSource-serverCertificate">setServerCertificate()</a></code> method: Not supported.</p></li>
             <li><p>The <a href="#idl-def-MediaKeySystemOptions" class="idlType"><code>MediaKeySystemOptions</code></a>: There are no supported capability values.</p></li>
             <li><p>The <code><a href="#idl-def-SessionType.persistent">"persistent"</a></code> <code><a href="#idl-def-SessionType">SessionType</a></code>: Implementations <em class="rfc2119" title="MAY">MAY</em> support this type.</p></li>
           </ul>
@@ -1905,7 +1909,7 @@
           <h4 role="heading" id="h4_clear-key-behavior"><span class="secno">7.1.2 </span>Behavior</h4>
           <p>The following describe how Clear Key implements key system-specific behaviors:</p>
           <ul>
-            <li><p>In the <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest()</a></code> algorithm:</p>
+            <li><p>In the <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest()</a></code> algorithm:</p>
               <ul>
                 <li><p>The generated <var title="true">message</var> is a JSON object encoded in UTF-8 as described in <a href="#clear-key-request-format">License Request Format</a>.</p></li>
                 <li><p>The request is generated by extracting the key IDs from the <var>init data</var>.</p></li>
@@ -1914,13 +1918,13 @@
             </li>
             <li><p>The <code><a href="#widl-MediaKeySession-sessionId">sessionId</a></code> attribute is a numerical value representable by a 32-bit integer.</p></li>
             <li><p>The <code><a href="#widl-MediaKeySession-expiration">expiration</a></code> attribute is always <code>NaN</code>.</p></li>
-            <li><p>In the <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> algorithm:</p>
+            <li><p>In the <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> algorithm:</p>
               <ul>
                 <li><p>The <var title="true">response</var> parameter is a JWK Set as described in <a href="#clear-key-license-format">License Format</a>.</p></li>
                 <li><p><var>sanitized response</var> is considered invalid if it is not a valid JWK Set with at least one valid JWK key of a valid length for the media type.</p></li>
               </ul>
             </li>
-            <li><p>The <code><a href="#widl-MediaKeySession-getUsableKeyIds-Promise-sequence-ArrayBuffer">getUsableKeyIds()</a></code> method always returns all key IDs that have been provided via <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code>.</p></li>
+            <li><p>The <code><a href="#widl-MediaKeySession-getUsableKeyIds-Promise-sequence-ArrayBuffer">getUsableKeyIds()</a></code> method always returns all key IDs that have been provided via <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code>.</p></li>
             <li><p><a href="#initialization-data">Initialization Data</a>: Implementations <em class="rfc2119" title="MAY">MAY</em> support any combination of registered Initialization Data Types [<cite><a class="bibref" href="#bib-EME-REGISTRY">EME-REGISTRY</a></cite>].
               Implementations <em class="rfc2119" title="SHOULD">SHOULD</em> support the <code><a href="keyids-format.html">"keyids"</a></code> type and other types appropriate for content types supported by the user agent.
             </p></li>
@@ -1959,7 +1963,7 @@
     
         <section id="clear-key-license-format" typeof="bibo:Chapter" resource="#clear-key-license-format" rel="bibo:Chapter">
           <h4 role="heading" id="h4_clear-key-license-format"><span class="secno">7.1.4 </span>License Format</h4>
-          <p>This section describes the format of the license to be provided via the <var title="true">response</var> parameter of the <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> method.</p>
+          <p>This section describes the format of the license to be provided via the <var title="true">response</var> parameter of the <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> method.</p>
       
           <p>The format is a JSON Web Key (JWK) Set containing representation of the symmetric key to be used for decryption, as defined in the JSON Web Key (JWK) specification [<cite><a class="bibref" href="#bib-JWK">JWK</a></cite>].</p>
       
@@ -1977,10 +1981,10 @@
       
           <p>The JSON object <em class="rfc2119" title="MAY">MAY</em> have an optional "type" member value, which <em class="rfc2119" title="MUST">MUST</em> be one of the <code><a href="#idl-def-SessionType">SessionType</a></code> values.
             If not specified, the default value of <code><a href="#idl-def-SessionType.temporary">"temporary"</a></code> is used.
-            The <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> algorithm compares this value to the <var title="true">sessionType</var>.
+            The <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> algorithm compares this value to the <var title="true">sessionType</var>.
           </p>
       
-          <p>When passed to the <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> method as the ArrayBuffer <var title="true">response</var> parameter, the JSON string <em class="rfc2119" title="MUST">MUST</em> be encoded in UTF-8 as specified in the Encoding specification [<cite><a class="bibref" href="#bib-ENCODING">ENCODING</a></cite>].
+          <p>When passed to the <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> method as the ArrayBuffer <var title="true">response</var> parameter, the JSON string <em class="rfc2119" title="MUST">MUST</em> be encoded in UTF-8 as specified in the Encoding specification [<cite><a class="bibref" href="#bib-ENCODING">ENCODING</a></cite>].
             Applications <em class="rfc2119" title="MAY">MAY</em> encode the JSON string using the <a href="http://www.w3.org/TR/encoding/#interface-textencoder">TextEncoder interface</a> [<cite><a class="bibref" href="#bib-ENCODING">ENCODING</a></cite>].
           </p>
       
@@ -2013,12 +2017,12 @@
     <section id="security" class="informative" typeof="bibo:Chapter" resource="#security" rel="bibo:Chapter">
       <!--OddPage--><h2 role="heading" id="h2_security"><span class="secno">8. </span>Security Considerations</h2><p><em>This section is non-normative.</em></p>
   
-      <p>User Agent and Key System implementations must consider <a href="http://www.w3.org/TR/html5/embedded-content-0.html#media-data">media data</a>, <a href="#initialization-data">Initialization Data</a>, responses (i.e. data passed to <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code>), licenses, key data, and all other data provided by the application as untrusted content and potential attack vectors.
+      <p>User Agent and Key System implementations must consider <a href="http://www.w3.org/TR/html5/embedded-content-0.html#media-data">media data</a>, <a href="#initialization-data">Initialization Data</a>, responses (i.e. data passed to <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code>), licenses, key data, and all other data provided by the application as untrusted content and potential attack vectors.
       They must use appropriate safeguards to mitigate any associated threats and take care to safely parse, decrypt, etc. such data.
       User Agents <em class="rfc2119" title="SHOULD">SHOULD</em> validate data before passing it to the CDM, especially if the CDM does not run in the same (sandboxed) context as the DOM (i.e. rendering).
       </p>
       <p>Implementations <em class="rfc2119" title="MUST NOT">MUST NOT</em> return active content or passive content that affects program control flow to the application.
-      For example, it is not safe to expose URLs or other information that may have come from media data, such as is the case for the <a href="#initialization-data">Initialization Data</a> passed to <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest()</a></code>.
+      For example, it is not safe to expose URLs or other information that may have come from media data, such as is the case for the <a href="#initialization-data">Initialization Data</a> passed to <code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest()</a></code>.
       Applications must determine the URLs to use. The <code><a href="#widl-MediaKeyMessageEvent-type">type</a></code> attribute of the <code><a href="#dom-evt-message">message</a></code> event can be used by the application to select among a set of URLs if applicable.
       </p>
       <p>User Agents are responsible for providing users with a secure way to browse the web. Since User Agents may integrate with third party CDM implementations, CDM implementers must provide sufficient information and controls to user agent implementers to enable them to properly asses the security implications of integrating with the Key System.</p>
@@ -2164,7 +2168,7 @@
         <p>In order to protect identifiers and other information discussed in previous sections, user agents <em class="rfc2119" title="MAY">MAY</em> choose to only support the EME APIs and/or specific Key Systems (i.e. based on privacy and security risks) on secure origins.
         This is especially important if a user agent chooses to support a Key System implementation that exposes identifiers or other such information without effectively anonymizing it in transit (i.e. without <a href="#identifier-encryption">encrypting identifiers</a>).
         </p>
-        <p>Regardless of user agent limitations, applications should use secure transport (e.g. HTTPS) for all traffic containing messages from the CDM (i.e. all data passed from <code><a href="#dom-evt-message">message</a></code> events and to <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code>).</p>
+        <p>Regardless of user agent limitations, applications should use secure transport (e.g. HTTPS) for all traffic containing messages from the CDM (i.e. all data passed from <code><a href="#dom-evt-message">message</a></code> events and to <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code>).</p>
         <p>All user agents should properly handle Mixed Content [<cite><a class="bibref" href="#bib-MIXED-CONTENT">MIXED-CONTENT</a></cite>] to avoid exposure to insecure content or transport when the user agent or application wish to enforce secure origin and transport.</p>
       </section>
 
@@ -2206,7 +2210,7 @@
               </span><span class="kwd">var</span><span class="pln"> initData </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Uint8Array</span><span class="pun">([</span><span class="pln"> </span><span class="pun">...</span><span class="pln"> </span><span class="pun">]);</span><span class="pln">
               </span><span class="kwd">var</span><span class="pln"> keySession </span><span class="pun">=</span><span class="pln"> createdMediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-createSession-MediaKeySession-SessionType-sessionType">createSession</a></code><span class="pun">();</span><span class="pln">
               keySession</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">"</span><code><a href="#dom-evt-message">message</a></code><span class="str">"</span><span class="pun">,</span><span class="pln"> handleMessage</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
-              </span><span class="kwd">return</span><span class="pln"> keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest</a></code><span class="pun">(</span><span class="str">"webm"</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">);</span><span class="pln">
+              </span><span class="kwd">return</span><span class="pln"> keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest</a></code><span class="pun">(</span><span class="str">"webm"</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">);</span><span class="pln">
             </span><span class="pun">}</span><span class="pln">
           </span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
             console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">.</span><span class="pln">bind</span><span class="pun">(</span><span class="pln">console</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Unable to create or initialize key session"</span><span class="pun">)</span><span class="pln">
@@ -2220,7 +2224,7 @@
     </span><span class="kwd">var</span><span class="pln"> keySession </span><span class="pun">=</span><span class="pln"> event</span><span class="pun">.</span><span class="pln">target</span><span class="pun">;</span><span class="pln">
 
     </span><span class="kwd">var</span><span class="pln"> license </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Uint8Array</span><span class="pun">([</span><span class="pln"> </span><span class="pun">...</span><span class="pln"> </span><span class="pun">]);</span><span class="pln">
-    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update</a></code><span class="pun">(</span><span class="pln">license</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
+    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update</a></code><span class="pun">(</span><span class="pln">license</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
       console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">.</span><span class="pln">bind</span><span class="pun">(</span><span class="pln">console</span><span class="pun">,</span><span class="pln"> </span><span class="str">"update() failed"</span><span class="pun">)</span><span class="pln">
     </span><span class="pun">);</span><span class="pln">
   </span><span class="pun">}</span><span class="pln">
@@ -2286,7 +2290,7 @@
           video</span><span class="pun">.</span><span class="pln">mediaKeysObject </span><span class="pun">=</span><span class="pln"> createdMediaKeys</span><span class="pun">;</span><span class="pln">
 
           </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">)</span><span class="pln">
-            createdMediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--ArrayBuffer-ArrayBufferView-serverCertificate">setServerCertificate</a></code><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">);</span><span class="pln">
+            createdMediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--BufferSource-serverCertificate">setServerCertificate</a></code><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">);</span><span class="pln">
 
           </span><span class="kwd">for</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> video</span><span class="pun">.</span><span class="pln">pendingSessionData</span><span class="pun">.</span><span class="pln">length</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
             </span><span class="kwd">var</span><span class="pln"> data </span><span class="pun">=</span><span class="pln"> video</span><span class="pun">.</span><span class="pln">pendingSessionData</span><span class="pun">[</span><span class="pln">i</span><span class="pun">];</span><span class="pln">
@@ -2314,7 +2318,7 @@
   </span><span class="kwd">function</span><span class="pln"> makeNewRequest</span><span class="pun">(</span><span class="pln">mediaKeys</span><span class="pun">,</span><span class="pln"> initDataType</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="kwd">var</span><span class="pln"> keySession </span><span class="pun">=</span><span class="pln"> mediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-createSession-MediaKeySession-SessionType-sessionType">createSession</a></code><span class="pun">();</span><span class="pln">
     keySession</span><span class="pun">.</span><span class="pln">addEventListener</span><span class="pun">(</span><span class="str">"</span><code><a href="#dom-evt-message">message</a></code><span class="str">"</span><span class="pun">,</span><span class="pln"> licenseRequestReady</span><span class="pun">,</span><span class="pln"> </span><span class="kwd">false</span><span class="pun">);</span><span class="pln">
-    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest</a></code><span class="pun">(</span><span class="pln">initDataType</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
+    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest</a></code><span class="pun">(</span><span class="pln">initDataType</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
       console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">.</span><span class="pln">bind</span><span class="pun">(</span><span class="pln">console</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Unable to create or initialize key session"</span><span class="pun">)</span><span class="pln">
     </span><span class="pun">);</span><span class="pln">
   </span><span class="pun">}</span><span class="pln">
@@ -2328,7 +2332,7 @@
     xmlhttp</span><span class="pun">.</span><span class="pln">onreadystatechange </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
       </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">xmlhttp</span><span class="pun">.</span><span class="pln">readyState </span><span class="pun">==</span><span class="pln"> </span><span class="lit">4</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
         </span><span class="kwd">var</span><span class="pln"> license </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Uint8Array</span><span class="pun">(</span><span class="pln">xmlhttp</span><span class="pun">.</span><span class="pln">response</span><span class="pun">);</span><span class="pln">
-        xmlhttp</span><span class="pun">.</span><span class="pln">keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update</a></code><span class="pun">(</span><span class="pln">license</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
+        xmlhttp</span><span class="pun">.</span><span class="pln">keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update</a></code><span class="pun">(</span><span class="pln">license</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
           console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">.</span><span class="pln">bind</span><span class="pun">(</span><span class="pln">console</span><span class="pun">,</span><span class="pln"> </span><span class="str">"update() failed"</span><span class="pun">)</span><span class="pln">
         </span><span class="pun">);</span><span class="pln">
       </span><span class="pun">}</span><span class="pln">
@@ -2367,7 +2371,7 @@
       </span><span class="kwd">var</span><span class="pln"> video </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">"v"</span><span class="pun">);</span><span class="pln">
       video</span><span class="pun">.</span><span class="pln">src </span><span class="pun">=</span><span class="pln"> </span><span class="str">"foo.webm"</span><span class="pun">;</span><span class="pln">
       </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">)</span><span class="pln">
-        mediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--ArrayBuffer-ArrayBufferView-serverCertificate">setServerCertificate</a></code><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">);</span><span class="pln">
+        mediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--BufferSource-serverCertificate">setServerCertificate</a></code><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">);</span><span class="pln">
       </span><span class="kwd">return</span><span class="pln"> video</span><span class="pun">.</span><code><a href="#widl-HTMLMediaElement-setMediaKeys-Promise-void--MediaKeys-mediaKeys">setMediaKeys</a></code><span class="pun">(</span><span class="pln">mediaKeys</span><span class="pun">);</span><span class="pln">
     </span><span class="pun">}</span><span class="pln">
   </span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
@@ -2381,7 +2385,7 @@
       <section id="example-using-all-events" typeof="bibo:Chapter" resource="#example-using-all-events" rel="bibo:Chapter">
         <h3 role="heading" id="h3_example-using-all-events"><span class="secno">10.4 </span>Using All Events</h3>
         <p class="exampledescription">This is a more complete example showing all events being used.</p>
-        <p class="exampledescription">Note that <code>handleMessage()</code> could be called multiple times, including in response to the <code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update()</a></code> call if multiple round trips are required and for any other reason the Key System might need to send a message.</p>
+        <p class="exampledescription">Note that <code>handleMessage()</code> could be called multiple times, including in response to the <code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update()</a></code> call if multiple round trips are required and for any other reason the Key System might need to send a message.</p>
     
         <div class="example"><div class="example-title"><span>Example 6</span></div><pre class="example highlight prettyprint prettyprinted"><span class="tag">&lt;script&gt;</span><span class="pln">
   </span><span class="kwd">var</span><span class="pln"> licenseUrl</span><span class="pun">;</span><span class="pln">
@@ -2401,14 +2405,14 @@
     keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-closed">closed</a></code><span class="pun">.</span><span class="pln">then</span><span class="pun">(</span><span class="pln">
       console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">.</span><span class="pln">bind</span><span class="pun">(</span><span class="pln">console</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Session closed"</span><span class="pun">)</span><span class="pln">
     </span><span class="pun">);</span><span class="pln">
-    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest</a></code><span class="pun">(</span><span class="pln">initDataType</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
+    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest</a></code><span class="pun">(</span><span class="pln">initDataType</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
       console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">.</span><span class="pln">bind</span><span class="pun">(</span><span class="pln">console</span><span class="pun">,</span><span class="pln"> </span><span class="str">"Unable to create or initialize key session"</span><span class="pun">)</span><span class="pln">
     </span><span class="pun">);</span><span class="pln">
   </span><span class="pun">}</span><span class="pln">
 
   </span><span class="kwd">function</span><span class="pln"> handleMessageResponse</span><span class="pun">(</span><span class="pln">keySession</span><span class="pun">,</span><span class="pln"> response</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="kwd">var</span><span class="pln"> license </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Uint8Array</span><span class="pun">(</span><span class="pln">response</span><span class="pun">);</span><span class="pln">
-    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update</a></code><span class="pun">(</span><span class="pln">license</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
+    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update</a></code><span class="pun">(</span><span class="pln">license</span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
       </span><span class="kwd">function</span><span class="pun">(</span><span class="pln">err</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
         console</span><span class="pun">.</span><span class="pln">error</span><span class="pun">(</span><span class="str">"update() failed: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> err</span><span class="pun">);</span><span class="pln">
       </span><span class="pun">}</span><span class="pln">
@@ -2455,7 +2459,7 @@
       </span><span class="kwd">var</span><span class="pln"> video </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">"v"</span><span class="pun">);</span><span class="pln">
       video</span><span class="pun">.</span><span class="pln">src </span><span class="pun">=</span><span class="pln"> </span><span class="str">"foo.webm"</span><span class="pun">;</span><span class="pln">
       </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">)</span><span class="pln">
-        mediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--ArrayBuffer-ArrayBufferView-serverCertificate">setServerCertificate</a></code><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">);</span><span class="pln">
+        mediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--BufferSource-serverCertificate">setServerCertificate</a></code><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">);</span><span class="pln">
       </span><span class="kwd">return</span><span class="pln"> video</span><span class="pun">.</span><code><a href="#widl-HTMLMediaElement-setMediaKeys-Promise-void--MediaKeys-mediaKeys">setMediaKeys</a></code><span class="pun">(</span><span class="pln">mediaKeys</span><span class="pun">);</span><span class="pln">
     </span><span class="pun">}</span><span class="pln">
   </span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
@@ -2491,7 +2495,7 @@
         console</span><span class="pun">.</span><span class="pln">log</span><span class="pun">(</span><span class="str">"Session "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="kwd">this</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-sessionId">sessionId</a></code><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">" closed"</span><span class="pun">);</span><span class="pln">
       </span><span class="pun">}.</span><span class="pln">bind</span><span class="pun">(</span><span class="pln">keySession</span><span class="pun">)</span><span class="pln">        
     </span><span class="pun">);</span><span class="pln">
-    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData">generateRequest</a></code><span class="pun">(</span><span class="pln">initDataType</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">).</span><span class="pln">then</span><span class="pun">(</span><span class="pln">
+    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData">generateRequest</a></code><span class="pun">(</span><span class="pln">initDataType</span><span class="pun">,</span><span class="pln"> initData</span><span class="pun">).</span><span class="pln">then</span><span class="pun">(</span><span class="pln">
       </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
         </span><span class="com">// Store this.</span><code><a href="#widl-MediaKeySession-sessionId">sessionId</a></code><span class="com"> in the application.</span><span class="pln">
       </span><span class="pun">}.</span><span class="pln">bind</span><span class="pun">(</span><span class="pln">keySession</span><span class="pun">)</span><span class="pln">
@@ -2542,7 +2546,7 @@
   </span><span class="com">// This replaces the implementation in the previous example.</span><span class="pln">
   </span><span class="kwd">function</span><span class="pln"> handleMessageResponse</span><span class="pun">(</span><span class="pln">keySession</span><span class="pun">,</span><span class="pln"> response</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
     </span><span class="kwd">var</span><span class="pln"> license </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">Uint8Array</span><span class="pun">(</span><span class="pln">response</span><span class="pun">);</span><span class="pln">
-    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response">update</a></code><span class="pun">(</span><span class="pln">license</span><span class="pun">).</span><span class="pln">then</span><span class="pun">(</span><span class="pln">
+    keySession</span><span class="pun">.</span><code><a href="#widl-MediaKeySession-update-Promise-void--BufferSource-response">update</a></code><span class="pun">(</span><span class="pln">license</span><span class="pun">).</span><span class="pln">then</span><span class="pun">(</span><span class="pln">
       </span><span class="kwd">function</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
         </span><span class="com">// If this was the last required message from the server, the license is</span><span class="pln">
         </span><span class="com">// now stored. Update the application state as appropriate.</span><span class="pln">
@@ -2557,7 +2561,7 @@
       mediaKeys </span><span class="pun">=</span><span class="pln"> createdMediaKeys</span><span class="pun">;</span><span class="pln">
       </span><span class="kwd">var</span><span class="pln"> video </span><span class="pun">=</span><span class="pln"> document</span><span class="pun">.</span><span class="pln">getElementById</span><span class="pun">(</span><span class="str">"v"</span><span class="pun">);</span><span class="pln">
       </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">)</span><span class="pln">
-        mediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--ArrayBuffer-ArrayBufferView-serverCertificate">setServerCertificate</a></code><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">);</span><span class="pln">
+        mediaKeys</span><span class="pun">.</span><code><a href="#widl-MediaKeys-setServerCertificate-Promise-void--BufferSource-serverCertificate">setServerCertificate</a></code><span class="pun">(</span><span class="pln">serverCertificate</span><span class="pun">);</span><span class="pln">
       </span><span class="kwd">return</span><span class="pln"> video</span><span class="pun">.</span><code><a href="#widl-HTMLMediaElement-setMediaKeys-Promise-void--MediaKeys-mediaKeys">setMediaKeys</a></code><span class="pun">(</span><span class="pln">mediaKeys</span><span class="pun">);</span><span class="pln">
     </span><span class="pun">}</span><span class="pln">
   </span><span class="pun">).</span><span class="kwd">catch</span><span class="pun">(</span><span class="pln">
--- a/encrypted-media/encrypted-media.js	Tue Oct 21 10:22:23 2014 -0700
+++ b/encrypted-media/encrypted-media.js	Wed Oct 22 16:30:38 2014 -0700
@@ -188,8 +188,8 @@
     'mediakeys': { func: idlref_helper, fragment: 'idl-def-MediaKeys', link_text: 'MediaKeys',  },
 //    'createSession': { func: idlref_helper, fragment: 'widl-MediaKeys-createSession-MediaKeySession-SessionType-sessionType', link_text: 'createSession()',  },
     'createSession-call': { func: idlref_helper, fragment: 'widl-MediaKeys-createSession-MediaKeySession-SessionType-sessionType', link_text: 'createSession',  },
-    'setServerCertificate': { func: idlref_helper, fragment: 'widl-MediaKeys-setServerCertificate-Promise-void--ArrayBuffer-ArrayBufferView-serverCertificate', link_text: 'setServerCertificate()',  },
-    'setServerCertificate-call': { func: idlref_helper, fragment: 'widl-MediaKeys-setServerCertificate-Promise-void--ArrayBuffer-ArrayBufferView-serverCertificate', link_text: 'setServerCertificate',  },
+    'setServerCertificate': { func: idlref_helper, fragment: 'widl-MediaKeys-setServerCertificate-Promise-void--BufferSource-serverCertificate', link_text: 'setServerCertificate()',  },
+    'setServerCertificate-call': { func: idlref_helper, fragment: 'widl-MediaKeys-setServerCertificate-Promise-void--BufferSource-serverCertificate', link_text: 'setServerCertificate',  },
     /* TODO: Move or remove depending on the outcome of Bug 25923.
     'isTypeSupported': { func: idlref_helper, fragment: 'widl-MediaKeys-isTypeSupported-IsTypeSupportedResult-DOMstring-keySystem-DOMString-initDataType-DOMString-contentType-DOMString-capability', link_text: 'isTypeSupported()',  },
     'isTypeSupported-call': { func: idlref_helper, fragment: 'widl-MediaKeys-isTypeSupported-IsTypeSupportedResult-DOMstring-keySystem-DOMString-initDataType-DOMString-contentType-DOMString-capability', link_text: 'isTypeSupported',  },
@@ -200,12 +200,12 @@
     'sessionId': { func: idlref_helper, fragment: 'widl-MediaKeySession-sessionId', link_text: 'sessionId',  },
     'expiration': { func: idlref_helper, fragment: 'widl-MediaKeySession-expiration', link_text: 'expiration',  },
     'closed': { func: idlref_helper, fragment: 'widl-MediaKeySession-closed', link_text: 'closed',  },
-    'generateRequest': { func: idlref_helper, fragment: 'widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData', link_text: 'generateRequest()',  },
-    'generateRequest-call': { func: idlref_helper, fragment: 'widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-ArrayBuffer-ArrayBufferView-initData', link_text: 'generateRequest',  },
+    'generateRequest': { func: idlref_helper, fragment: 'widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData', link_text: 'generateRequest()',  },
+    'generateRequest-call': { func: idlref_helper, fragment: 'widl-MediaKeySession-generateRequest-Promise-void--DOMString-initDataType-BufferSource-initData', link_text: 'generateRequest',  },
     'load': { func: idlref_helper, fragment: 'widl-MediaKeySession-load-Promise-boolean--DOMString-sessionId', link_text: 'load()',  },
     'load-call': { func: idlref_helper, fragment: 'widl-MediaKeySession-load-Promise-boolean--DOMString-sessionId', link_text: 'load',  },
-    'update': { func: idlref_helper, fragment: 'widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response', link_text: 'update()',  },
-    'update-call': { func: idlref_helper, fragment: 'widl-MediaKeySession-update-Promise-void--ArrayBuffer-ArrayBufferView-response', link_text: 'update',  },
+    'update': { func: idlref_helper, fragment: 'widl-MediaKeySession-update-Promise-void--BufferSource-response', link_text: 'update()',  },
+    'update-call': { func: idlref_helper, fragment: 'widl-MediaKeySession-update-Promise-void--BufferSource-response', link_text: 'update',  },
     'close': { func: idlref_helper, fragment: 'widl-MediaKeySession-close-Promise-void', link_text: 'close()',  },
     'close-call': { func: idlref_helper, fragment: 'widl-MediaKeySession-close-Promise-void', link_text: 'close',  },
     'remove': { func: idlref_helper, fragment: 'widl-MediaKeySession-remove-Promise-void', link_text: 'remove()',  },