| Index: LayoutTests/media/encrypted-media/encrypted-media-keystatuses-multiple-updates.html
 | 
| diff --git a/LayoutTests/media/encrypted-media/encrypted-media-keystatuses.html b/LayoutTests/media/encrypted-media/encrypted-media-keystatuses-multiple-updates.html
 | 
| similarity index 56%
 | 
| copy from LayoutTests/media/encrypted-media/encrypted-media-keystatuses.html
 | 
| copy to LayoutTests/media/encrypted-media/encrypted-media-keystatuses-multiple-updates.html
 | 
| index 6283c1e5cce50d3f05a9d9abfcf85a5fe2380e27..c1ea893494a7171a9f445d7a5be08cc32bc6ee89 100644
 | 
| --- a/LayoutTests/media/encrypted-media/encrypted-media-keystatuses.html
 | 
| +++ b/LayoutTests/media/encrypted-media/encrypted-media-keystatuses-multiple-updates.html
 | 
| @@ -1,7 +1,7 @@
 | 
|  <!DOCTYPE html>
 | 
|  <html>
 | 
|      <head>
 | 
| -        <title>Verify MediaKeySession.keyStatuses</title>
 | 
| +        <title>Verify MediaKeySession.keyStatuses with multiple updates</title>
 | 
|          <script src="encrypted-media-utils.js"></script>
 | 
|          <script src="../../resources/testharness.js"></script>
 | 
|          <script src="../../resources/testharnessreport.js"></script>
 | 
| @@ -10,6 +10,7 @@
 | 
|          <div id="log"></div>
 | 
|          <script>
 | 
|              var mediaKeySession;
 | 
| +            var firstEvent;
 | 
|  
 | 
|              // Even though key ids are uint8, using printable values so that
 | 
|              // they can be verified easily.
 | 
| @@ -25,11 +26,11 @@
 | 
|                  function processMessage(event)
 | 
|                  {
 | 
|                      // No keys added yet.
 | 
| -                    assert_equals(mediaKeySession.keyStatuses.size, 0);
 | 
| -
 | 
| -                    waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test);
 | 
| +                    verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [], unexpected: [key1, key2] });
 | 
|  
 | 
| -                    var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1), createJWK(key2, rawKey2)));
 | 
| +                    // Add key1 to the session.
 | 
| +                    firstEvent = true;
 | 
| +                    var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1)));
 | 
|                      mediaKeySession.update(jwkSet).catch(function(error) {
 | 
|                          forceTestFailureFromPromise(test, error);
 | 
|                      });
 | 
| @@ -37,30 +38,24 @@
 | 
|  
 | 
|                  function processKeyStatusesChange(event)
 | 
|                  {
 | 
| -                    assert_equals(mediaKeySession.keyStatuses.size, 2);
 | 
| -                    consoleWrite("for (var entry of keyStatuses)");
 | 
| -                    for (var entry of mediaKeySession.keyStatuses) {
 | 
| -                        consoleWrite(arrayBufferAsString(entry[0]) + ", " + entry[1]);
 | 
| -                    }
 | 
| -                    consoleWrite("for (var key of keyStatuses.keys())");
 | 
| -                    for (var key of mediaKeySession.keyStatuses.keys()) {
 | 
| -                        consoleWrite(arrayBufferAsString(key));
 | 
| -                    }
 | 
| -                    consoleWrite("for (var value of keyStatuses.values())");
 | 
| -                    for (var value of mediaKeySession.keyStatuses.values()) {
 | 
| -                        consoleWrite(value);
 | 
| -                    }
 | 
| -                    consoleWrite("for (var entry of keyStatuses.entries())");
 | 
| -                    for (var entry of mediaKeySession.keyStatuses.entries()) {
 | 
| -                        consoleWrite(arrayBufferAsString(entry[0]) + ", " + entry[1]);
 | 
| +                    if (firstEvent) {
 | 
| +                        // Verify that the session only contains key1.
 | 
| +                        dumpKeyStatuses(mediaKeySession.keyStatuses);
 | 
| +                        verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [key1], unexpected: [key2] });
 | 
| +
 | 
| +                        // Now add key2 to the session.
 | 
| +                        firstEvent = false;
 | 
| +                        var jwkSet = stringToUint8Array(createJWKSet(createJWK(key2, rawKey2)));
 | 
| +                        mediaKeySession.update(jwkSet).catch(function(error) {
 | 
| +                            forceTestFailureFromPromise(test, error);
 | 
| +                        });
 | 
| +                    } else {
 | 
| +                        // Verify that the session now contains key1 and key2.
 | 
| +                        dumpKeyStatuses(mediaKeySession.keyStatuses);
 | 
| +                        verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [key1, key2] });
 | 
| +
 | 
| +                        test.done();
 | 
|                      }
 | 
| -                    assert_true(mediaKeySession.keyStatuses.has(key1));
 | 
| -                    assert_true(mediaKeySession.keyStatuses.has(key2));
 | 
| -                    assert_false(mediaKeySession.keyStatuses.has(stringToUint8Array('123456')));
 | 
| -                    assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable');
 | 
| -                    assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable');
 | 
| -                    assert_equals(mediaKeySession.keyStatuses.get(stringToUint8Array('123456')), undefined);
 | 
| -                    test.done();
 | 
|                  }
 | 
|  
 | 
|                  navigator.requestMediaKeySystemAccess('org.w3.clearkey').then(function(access) {
 | 
| @@ -73,11 +68,13 @@
 | 
|                      assert_equals(mediaKeySession.keyStatuses.size, 0);
 | 
|  
 | 
|                      waitForEventAndRunStep('message', mediaKeySession, processMessage, test);
 | 
| +                    waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test);
 | 
| +
 | 
|                      return mediaKeySession.generateRequest(initDataType, getInitData(initDataType));
 | 
|                  }).catch(function(error) {
 | 
|                      forceTestFailureFromPromise(test, error);
 | 
|                  });
 | 
| -            }, 'Verify MediaKeySession.keyStatuses.');
 | 
| +            }, 'Verify MediaKeySession.keyStatuses with multiple updates.');
 | 
|          </script>
 | 
|      </body>
 | 
|  </html>
 | 
| 
 |