| OLD | NEW | 
|---|
| 1 <!DOCTYPE html> | 1 <!DOCTYPE html> | 
| 2 <html> | 2 <html> | 
| 3     <head> | 3     <head> | 
| 4         <title>Test multiple MediaKeys lifetimes</title> | 4         <title>Test multiple MediaKeys lifetimes</title> | 
| 5         <script src="encrypted-media-utils.js"></script> | 5         <script src="encrypted-media-utils.js"></script> | 
| 6         <script src="../../resources/testharness.js"></script> | 6         <script src="../../resources/testharness.js"></script> | 
| 7         <script src="../../resources/testharnessreport.js"></script> | 7         <script src="../../resources/testharnessreport.js"></script> | 
| 8     </head> | 8     </head> | 
| 9     <body> | 9     <body> | 
| 10         <div id="log"></div> | 10         <div id="log"></div> | 
| (...skipping 26 matching lines...) Expand all  Loading... | 
| 37                 { | 37                 { | 
| 38                     return window.internals.activeDOMObjectCount(document) - sta
     rtingActiveDOMObjectCount; | 38                     return window.internals.activeDOMObjectCount(document) - sta
     rtingActiveDOMObjectCount; | 
| 39                 } | 39                 } | 
| 40 | 40 | 
| 41                 // Create a MediaKeys object and an associated MediaKeySession | 41                 // Create a MediaKeys object and an associated MediaKeySession | 
| 42                 // object. |mediaKeys| is updated to refer to the new MediaKeys | 42                 // object. |mediaKeys| is updated to refer to the new MediaKeys | 
| 43                 // object. Returns a promise that resolves with the new | 43                 // object. Returns a promise that resolves with the new | 
| 44                 // MediaKeySession object. | 44                 // MediaKeySession object. | 
| 45                 function createMediaKeyWithMediaKeySession() | 45                 function createMediaKeyWithMediaKeySession() | 
| 46                 { | 46                 { | 
| 47                     return MediaKeys.create('org.w3.clearkey').then(function(res
     ult) { | 47                     return navigator.requestMediaKeySystemAccess('org.w3.clearke
     y').then(function(access) { | 
|  | 48                         return access.createMediaKeys(); | 
|  | 49                     }).then(function(result) { | 
| 48                         mediaKeys = result; | 50                         mediaKeys = result; | 
| 49                         var mediaKeySession = mediaKeys.createSession(); | 51                         var mediaKeySession = mediaKeys.createSession(); | 
| 50                         return mediaKeySession.generateRequest(initDataType, ini
     tData).then(function() { | 52                         return mediaKeySession.generateRequest(initDataType, ini
     tData).then(function() { | 
| 51                             return mediaKeySession; | 53                             return mediaKeySession; | 
| 52                         }); | 54                         }); | 
| 53                     }); | 55                     }); | 
| 54                 } | 56                 } | 
| 55 | 57 | 
| 56                 // Create a few MediaKeys + MediaKeySession objects. Only keep | 58                 // Create a few MediaKeys + MediaKeySession objects. Only keep | 
| 57                 // a reference to the last one created. | 59                 // a reference to the last one created. | 
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 98                     // MediaKeySession object first, and doesn't collect it | 100                     // MediaKeySession object first, and doesn't collect it | 
| 99                     // since MediaKeys hasn't been collected yet. Thus run gc() | 101                     // since MediaKeys hasn't been collected yet. Thus run gc() | 
| 100                     // twice, to ensure that the unreferenced MediaKeySession | 102                     // twice, to ensure that the unreferenced MediaKeySession | 
| 101                     // objects get collected. | 103                     // objects get collected. | 
| 102                     return createGCPromise(); | 104                     return createGCPromise(); | 
| 103                 }).then(function(result) { | 105                 }).then(function(result) { | 
| 104                     return createGCPromise(); | 106                     return createGCPromise(); | 
| 105                 }).then(function(result) { | 107                 }).then(function(result) { | 
| 106                     // Should be 1 MediaKeySession, the session for |mediaKeys|. | 108                     // Should be 1 MediaKeySession, the session for |mediaKeys|. | 
| 107                     assert_equals(numActiveDOMObjectsCreated(), 1); | 109                     assert_equals(numActiveDOMObjectsCreated(), 1); | 
| 108                     assert_equals(mediaKeys.keySystem, 'org.w3.clearkey'); |  | 
| 109 | 110 | 
| 110                     // Release the last MediaKeys object created. | 111                     // Release the last MediaKeys object created. | 
| 111                     mediaKeys = null; | 112                     mediaKeys = null; | 
| 112 | 113 | 
| 113                     // Run gc() again to reclaim the remaining MediaKeys object | 114                     // Run gc() again to reclaim the remaining MediaKeys object | 
| 114                     // and the last MediaKeySession. gc() run twice in case | 115                     // and the last MediaKeySession. gc() run twice in case | 
| 115                     // MediaKeySession checked first and not collected in the | 116                     // MediaKeySession checked first and not collected in the | 
| 116                     // first pass. | 117                     // first pass. | 
| 117                     return createGCPromise(); | 118                     return createGCPromise(); | 
| 118                 }).then(function(result) { | 119                 }).then(function(result) { | 
| 119                     return createGCPromise(); | 120                     return createGCPromise(); | 
| 120                 }).then(function(result) { | 121                 }).then(function(result) { | 
| 121                     assert_equals(numActiveDOMObjectsCreated(), 0); | 122                     assert_equals(numActiveDOMObjectsCreated(), 0); | 
| 122                     test.done(); | 123                     test.done(); | 
| 123                 }).catch(function(error) { | 124                 }).catch(function(error) { | 
| 124                     forceTestFailureFromPromise(test, error); | 125                     forceTestFailureFromPromise(test, error); | 
| 125                 }); | 126                 }); | 
| 126             }, 'Multiple MediaKeys lifetime'); | 127             }, 'Multiple MediaKeys lifetime'); | 
| 127         </script> | 128         </script> | 
| 128     </body> | 129     </body> | 
| 129 </html> | 130 </html> | 
| OLD | NEW | 
|---|