Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1289)

Side by Side Diff: LayoutTests/media/encrypted-media/encrypted-media-lifetime-mediakeysession-release.html

Issue 441063003: Run microtasks at the end of each worker task. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 <!DOCTYPE html> 1 <!DOCTYPE html>
2 <html> 2 <html>
3 <head> 3 <head>
4 <title>MediaKeySession lifetime after release()</title> 4 <title>MediaKeySession lifetime after release()</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 15 matching lines...) Expand all
26 26
27 function numActiveDOMObjectsCreated() 27 function numActiveDOMObjectsCreated()
28 { 28 {
29 return window.internals.activeDOMObjectCount(document) - sta rtingActiveDOMObjectCount; 29 return window.internals.activeDOMObjectCount(document) - sta rtingActiveDOMObjectCount;
30 } 30 }
31 31
32 // Create 2 sessions. 32 // Create 2 sessions.
33 MediaKeys.create('org.w3.clearkey').then(function(result) { 33 MediaKeys.create('org.w3.clearkey').then(function(result) {
34 mediaKeys = result; 34 mediaKeys = result;
35 35
36 // Verify MediaKeys are not an ActiveDOMObject. However, the 36 // Verify MediaKeys are not an ActiveDOMObject.
37 // PromiseResolver objects used by MediaKeys/MediaKeySession 37 assert_equals(numActiveDOMObjectsCreated(), 0, 'MediaKeys.cr eate()');
38 // are ActiveDOMObjects, and they stay active until the end
39 // of the promise.
40 // Should be 1 PromiseResolver from create().
41 assert_equals(numActiveDOMObjectsCreated(), 1, 'MediaKeys.cr eate()');
42 38
43 return mediaKeys.createSession(initDataType, initData); 39 return mediaKeys.createSession(initDataType, initData);
44 }).then(function(result) { 40 }).then(function(result) {
45 mediaKeySession1 = result; 41 mediaKeySession1 = result;
46 // Should be 1 MediaKeySession + 1 PromiseResolver from 42 // Should be 1 MediaKeySession.
47 // createSession(). 43 assert_equals(numActiveDOMObjectsCreated(), 1, 'mediaKeys.cr eateSession(1)');
48 assert_equals(numActiveDOMObjectsCreated(), 2, 'mediaKeys.cr eateSession(1)');
49 return mediaKeys.createSession(initDataType, initData); 44 return mediaKeys.createSession(initDataType, initData);
50 }).then(function(result) { 45 }).then(function(result) {
51 mediaKeySession2 = result; 46 mediaKeySession2 = result;
52 // Should be 2 MediaKeySessions + 1 PromiseResolver from the 47 // Should be 2 MediaKeySessions.
53 // last createSession(). 48 assert_equals(numActiveDOMObjectsCreated(), 2, 'mediaKeys.cr eateSession(2)');
54 assert_equals(numActiveDOMObjectsCreated(), 3, 'mediaKeys.cr eateSession(2)');
55 49
56 // Release the sessions. Once completed, only the JS 50 // Release the sessions. Once completed, only the JS
57 // reference to them keeps them around. 51 // reference to them keeps them around.
58 return mediaKeySession1.release(); 52 return mediaKeySession1.release();
59 }).then(function(result) { 53 }).then(function(result) {
60 return mediaKeySession2.release(); 54 return mediaKeySession2.release();
61 }).then(function(result) { 55 }).then(function(result) {
62 // Since both sessions have been closed, dropping the 56 // Since both sessions have been closed, dropping the
63 // reference to them from JS will result in the session 57 // reference to them from JS will result in the session
64 // being garbage-collected. 58 // being garbage-collected.
65 // Should be 2 MediaKeySessions + 1 PromiseResolver from the 59 // Should be 2 MediaKeySessions.
66 // last release(). 60 assert_equals(numActiveDOMObjectsCreated(), 2);
67 assert_equals(numActiveDOMObjectsCreated(), 3);
68 61
69 mediaKeySession1 = null; 62 mediaKeySession1 = null;
70 return createGCPromise(); 63 return createGCPromise();
71 }).then(function(result) { 64 }).then(function(result) {
72 // Only mediaKeySession2 should remain. 65 // Only mediaKeySession2 should remain.
73 assert_equals(numActiveDOMObjectsCreated(), 1, 'mediaKeySess ion1 not collected'); 66 assert_equals(numActiveDOMObjectsCreated(), 1, 'mediaKeySess ion1 not collected');
74 67
75 mediaKeySession2 = null; 68 mediaKeySession2 = null;
76 return createGCPromise(); 69 return createGCPromise();
77 }).then(function(result) { 70 }).then(function(result) {
78 assert_equals(numActiveDOMObjectsCreated(), 0, 'mediaKeySess ion2 not collected'); 71 assert_equals(numActiveDOMObjectsCreated(), 0, 'mediaKeySess ion2 not collected');
79 test.done(); 72 test.done();
80 }).catch(function(error) { 73 }).catch(function(error) {
81 forceTestFailureFromPromise(test, error); 74 forceTestFailureFromPromise(test, error);
82 }); 75 });
83 }, 'MediaKeySession lifetime after release()'); 76 }, 'MediaKeySession lifetime after release()');
84 </script> 77 </script>
85 </body> 78 </body>
86 </html> 79 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698