Bug 20798 - keySystem strings should be compared case-sensitively
authorAdrian Bateman <adrianba@microsoft.com>
Tue, 02 Jul 2013 07:45:03 -0700
changeset 135 7fba91203de5
parent 134 f4d8dc9bdacc
child 136 da1d34e19d4f
Bug 20798 - keySystem strings should be compared case-sensitively
encrypted-media/encrypted-media.html
encrypted-media/encrypted-media.xml
--- a/encrypted-media/encrypted-media.html	Tue Jul 02 07:32:53 2013 -0700
+++ b/encrypted-media/encrypted-media.html	Tue Jul 02 07:45:03 2013 -0700
@@ -220,6 +220,8 @@
     <span class="non-normative">Key System providers should keep in mind that these will be used for comparison and discovery, so they should be easy to compare and the structure should remain reasonably simple.</span>
     </p>
 
+    <p>Key System strings are compared using case-sensitive matching. <span class="non-normative">It is recommended that CDMs use simple lower-case ASCII key system strings.</span></p>
+
     <h4 id="session-id">1.2.3. Session ID</h4>
     <p>A session ID is an optional string ID used to associate calls related to a key/license lifetime, starting with the request.
     <span class="non-normative">It is a local binding between a request and key/license.
@@ -323,7 +325,7 @@
     <ol>
       <li><p>If <var title="true">keySystem</var> is null or an empty string, throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_access_err">INVALID_ACCESS_ERR</a></code> exception and abort these steps.</p></li>
 
-      <li><p>If <var title="true">keySystem</var> is not one of the user agent's supported <a href="#key-system">Key Systems</a>, throw a <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-not_supported_err">NOT_SUPPORTED_ERR</a></code> and abort these steps.</p></li>
+      <li><p>If <var title="true">keySystem</var> is not one of the user agent's supported <a href="#key-system">Key Systems</a>, throw a <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-not_supported_err">NOT_SUPPORTED_ERR</a></code> and abort these steps. Key system string comparison is case-sensitive.</p></li>
 
       <li><p>Let <var title="true">cdm</var> be the <a href="#cdm">content decryption module</a> corresponding to <var title="true">keySystem</var>.</p></li>
 
@@ -448,7 +450,7 @@
     <p>It must run the following steps:</p>
     
     <ol>
-      <li><p>If <var title="true">keySystem</var> contains an unrecognized or unsupported <a href="#key-system">Key System</a>, return false and abort these steps.</p></li>
+      <li><p>If <var title="true">keySystem</var> contains an unrecognized or unsupported <a href="#key-system">Key System</a>, return false and abort these steps. Key system string comparison is case-sensitive.</p></li>
       <li><p>If <var title="true">type</var> is null or an empty string, return true and abort these steps.</p></li>
       <li><p>If the <a href="#key-system">Key System</a> specified by <var title="true">keySystem</var> does not support decrypting the container and/or codec specified by <var title="true">type</var>, return false and abort these steps.</p></li>
       <li><p>Return true.</p></li>
--- a/encrypted-media/encrypted-media.xml	Tue Jul 02 07:32:53 2013 -0700
+++ b/encrypted-media/encrypted-media.xml	Tue Jul 02 07:45:03 2013 -0700
@@ -216,6 +216,8 @@
     <span class="non-normative">Key System providers should keep in mind that these will be used for comparison and discovery, so they should be easy to compare and the structure should remain reasonably simple.</span>
     </p>
 
+    <p>Key System strings are compared using case-sensitive matching. <span class="non-normative">It is recommended that CDMs use simple lower-case ASCII key system strings.</span></p>
+
     <h4 id="session-id">1.2.3. Session ID</h4>
     <p>A session ID is an optional string ID used to associate calls related to a key/license lifetime, starting with the request.
     <span class="non-normative">It is a local binding between a request and key/license.
@@ -318,7 +320,7 @@
     <ol>
       <li><p>If <var title="true">keySystem</var> is null or an empty string, throw an <invalid-access-err/> exception and abort these steps.</p></li>
 
-      <li><p>If <var title="true">keySystem</var> is not one of the user agent's supported <a href="#key-system">Key Systems</a>, throw a <not-supported-err/> and abort these steps.</p></li>
+      <li><p>If <var title="true">keySystem</var> is not one of the user agent's supported <a href="#key-system">Key Systems</a>, throw a <not-supported-err/> and abort these steps. Key system string comparison is case-sensitive.</p></li>
 
       <li><p>Let <var title="true">cdm</var> be the <a href="#cdm">content decryption module</a> corresponding to <var title="true">keySystem</var>.</p></li>
 
@@ -432,7 +434,7 @@
     <p>It must run the following steps:</p>
     
     <ol>
-      <li><p>If <var title="true">keySystem</var> contains an unrecognized or unsupported <a href="#key-system">Key System</a>, return false and abort these steps.</p></li>
+      <li><p>If <var title="true">keySystem</var> contains an unrecognized or unsupported <a href="#key-system">Key System</a>, return false and abort these steps. Key system string comparison is case-sensitive.</p></li>
       <li><p>If <var title="true">type</var> is null or an empty string, return true and abort these steps.</p></li>
       <li><p>If the <a href="#key-system">Key System</a> specified by <var title="true">keySystem</var> does not support decrypting the container and/or codec specified by <var title="true">type</var>, return false and abort these steps.</p></li>
       <li><p>Return true.</p></li>