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

Side by Side Diff: LayoutTests/media/encrypted-media/encrypted-media-lifetime-mediakeysession-release-noreference.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>Test MediaKeySession lifetime after release() without references< /title> 4 <title>Test MediaKeySession lifetime after release() without references< /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 return window.internals.activeDOMObjectCount(document) - sta rtingActiveDOMObjectCount; 26 return window.internals.activeDOMObjectCount(document) - sta rtingActiveDOMObjectCount;
27 } 27 }
28 28
29 // Create 2 sessions. 29 // Create 2 sessions.
30 var mediaKeys; 30 var mediaKeys;
31 var mediaKeySession1; 31 var mediaKeySession1;
32 var mediaKeySession2; 32 var mediaKeySession2;
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 associated then/catch function.
40 assert_equals(numActiveDOMObjectsCreated(), 1, 'MediaKeys.cr eate()');
41 38
42 return mediaKeys.createSession(initDataType, initData); 39 return mediaKeys.createSession(initDataType, initData);
43 }).then(function(result) { 40 }).then(function(result) {
44 mediaKeySession1 = result; 41 mediaKeySession1 = result;
45 assert_true(mediaKeySession1.sessionId && mediaKeySession1.s essionId.length > 0); 42 assert_true(mediaKeySession1.sessionId && mediaKeySession1.s essionId.length > 0);
46 // Should be 1 MediaKeySession + 1 PromiseResolver from the 43 // Should be 1 MediaKeySession.
47 // last createSession(). 44 assert_equals(numActiveDOMObjectsCreated(), 1, 'mediaKeys.cr eateSession(1)');
48 assert_equals(numActiveDOMObjectsCreated(), 2, 'mediaKeys.cr eateSession(1)');
49 return mediaKeys.createSession(initDataType, initData); 45 return mediaKeys.createSession(initDataType, initData);
50 }).then(function(result) { 46 }).then(function(result) {
51 mediaKeySession2 = result; 47 mediaKeySession2 = result;
52 assert_true(mediaKeySession2.sessionId && mediaKeySession2.s essionId.length > 0); 48 assert_true(mediaKeySession2.sessionId && mediaKeySession2.s essionId.length > 0);
53 // Should be 2 MediaKeySessions + 1 PromiseResolver from the 49 // Should be 2 MediaKeySessions.
54 // last createSession(). 50 assert_equals(numActiveDOMObjectsCreated(), 2, 'mediaKeys.cr eateSession(2)');
55 assert_equals(numActiveDOMObjectsCreated(), 3, 'mediaKeys.cr eateSession(2)');
56 }).then(function(result) { 51 }).then(function(result) {
57 // Run gc(). All sessions should remain as we have a 52 // Run gc(). All sessions should remain as we have a
58 // reference to each one. However, running gc() 53 // reference to each one.
59 // asynchronously should free up the last PromiseResolver.
60 return createGCPromise(); 54 return createGCPromise();
61 }).then(function(result) { 55 }).then(function(result) {
62 // Should be just the 2 MediaKeySessions. 56 // Should be just the 2 MediaKeySessions.
63 assert_equals(numActiveDOMObjectsCreated(), 2, 'After gc()') ; 57 assert_equals(numActiveDOMObjectsCreated(), 2, 'After gc()') ;
64 58
65 // Release the sessions. Once the close() event is received, 59 // Release the sessions. Once the close() event is received,
66 // they should get garbage collected as there are no JS 60 // they should get garbage collected as there are no JS
67 // references to them. 61 // references to them.
68 var promise = mediaKeySession1.release(); 62 var promise = mediaKeySession1.release();
69 mediaKeySession1 = null; 63 mediaKeySession1 = null;
(...skipping 20 matching lines...) Expand all
90 assert_equals(numActiveDOMObjectsCreated(), 0); 84 assert_equals(numActiveDOMObjectsCreated(), 0);
91 assert_not_equals(mediaKeys, null); 85 assert_not_equals(mediaKeys, null);
92 test.done(); 86 test.done();
93 }).catch(function(error) { 87 }).catch(function(error) {
94 forceTestFailureFromPromise(test, error); 88 forceTestFailureFromPromise(test, error);
95 }); 89 });
96 }, 'MediaKeySession lifetime after release() without references'); 90 }, 'MediaKeySession lifetime after release() without references');
97 </script> 91 </script>
98 </body> 92 </body>
99 </html> 93 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698