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

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

Issue 783423003: Make ScriptPromiseResolver RefCountedWillBeRefCountedGarbageCollected. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years 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 without release()</title> 4 <title>Test MediaKeySession lifetime without 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 21 matching lines...) Expand all
32 } 32 }
33 33
34 navigator.requestMediaKeySystemAccess('org.w3.clearkey').then(fu nction(access) { 34 navigator.requestMediaKeySystemAccess('org.w3.clearkey').then(fu nction(access) {
35 assert_equals(access.keySystem, 'org.w3.clearkey'); 35 assert_equals(access.keySystem, 'org.w3.clearkey');
36 return access.createMediaKeys(); 36 return access.createMediaKeys();
37 }).then(function(result) { 37 }).then(function(result) {
38 mediaKeys = result; 38 mediaKeys = result;
39 assert_equals(typeof mediaKeys.createSession, 'function'); 39 assert_equals(typeof mediaKeys.createSession, 'function');
40 40
41 // Verify MediaKeys are not an ActiveDOMObject. 41 // Verify MediaKeys are not an ActiveDOMObject.
42 assert_equals(numActiveDOMObjectsCreated(), 0, 'MediaKeys.cr eate()'); 42 // MediaKeys are not an ActiveDOMObject, but when creating M ediaKeys,
43 // creating ScriptPromiseResolvers, which are ActiveDOMObjec ts.
44 // so numActiveDOMObjetsCreated() <= 2 (1 is MediaKeysInitia lizer and
45 // the other is MediaKeySystemAccessInitializer).
46 // When enabling oilpan, the ScriptPromiseResolvers are not destroyed
47 // immediately. So numActiveDOMObjectsCreate() <= 2.
48 assert_less_than_equal(numActiveDOMObjectsCreated(), 2, 'Med iaKeys.create()');
43 49
44 // Create 3 sessions. 50 // Create 3 sessions.
45 mediaKeySession1 = mediaKeys.createSession(); 51 mediaKeySession1 = mediaKeys.createSession();
46 return mediaKeySession1.generateRequest(initDataType, initDa ta); 52 return mediaKeySession1.generateRequest(initDataType, initDa ta);
47 }).then(function() { 53 }).then(function() {
48 assert_true(mediaKeySession1.sessionId && mediaKeySession1.s essionId.length > 0); 54 assert_true(mediaKeySession1.sessionId && mediaKeySession1.s essionId.length > 0);
49 // Should be 1 MediaKeySession. 55 // Should be 1 MediaKeySession.
50 assert_equals(numActiveDOMObjectsCreated(), 1, 'mediaKeys.cr eateSession(1)'); 56 // numActiveDOMObjectsCreated() <= 4 (1 is a ScriptPromiseRe solver owned by
57 // ContentDecryptionModuleResultPromise and the other is Med iaKeySession).
58 assert_less_than_equal(numActiveDOMObjectsCreated(), 4, 'Med iaKeys.createSession(1)');
51 mediaKeySession2 = mediaKeys.createSession(); 59 mediaKeySession2 = mediaKeys.createSession();
52 return mediaKeySession2.generateRequest(initDataType, initDa ta); 60 return mediaKeySession2.generateRequest(initDataType, initDa ta);
53 }).then(function() { 61 }).then(function() {
54 assert_true(mediaKeySession2.sessionId && mediaKeySession2.s essionId.length > 0); 62 assert_true(mediaKeySession2.sessionId && mediaKeySession2.s essionId.length > 0);
55 // Should be 2 MediaKeySessions. 63 // Should be 2 MediaKeySessions.
56 assert_equals(numActiveDOMObjectsCreated(), 2, 'mediaKeys.cr eateSession(2)'); 64 // numActiveDOMObjectsCreated() <= 6 (ditto)
65 assert_less_than_equal(numActiveDOMObjectsCreated(), 6, 'med iaKeys.createSession(2)');
57 mediaKeySession3 = mediaKeys.createSession(); 66 mediaKeySession3 = mediaKeys.createSession();
58 return mediaKeySession3.generateRequest(initDataType, initDa ta); 67 return mediaKeySession3.generateRequest(initDataType, initDa ta);
59 }).then(function() { 68 }).then(function() {
60 assert_true(mediaKeySession3.sessionId && mediaKeySession3.s essionId.length > 0); 69 assert_true(mediaKeySession3.sessionId && mediaKeySession3.s essionId.length > 0);
61 // Should be 3 MediaKeySessions. 70 // Should be 3 MediaKeySessions.
62 assert_equals(numActiveDOMObjectsCreated(), 3, 'mediaKeys.cr eateSession(3)'); 71 // numActiveDOMObjectsCreated() <= 8 (ditto)
72 assert_less_than_equal(numActiveDOMObjectsCreated(), 8, 'med iaKeys.createSession(3)');
63 73
64 // Run gc(). All sessions should remain as we have a 74 // Run gc(). All sessions should remain as we have a
65 // reference to each one. However, running gc() 75 // reference to each one. However, running gc()
66 // asynchronously should free up the last PromiseResolver. 76 // asynchronously should free up the last PromiseResolver.
67 return createGCPromise(); 77 return createGCPromise();
68 }).then(function(result) { 78 }).then(function(result) {
69 assert_equals(numActiveDOMObjectsCreated(), 3, 'After gc()') ; 79 assert_equals(numActiveDOMObjectsCreated(), 3, 'After gc()') ;
70 80
71 // Now drop references to 2 of the sessions. Even though we 81 // Now drop references to 2 of the sessions. Even though we
72 // don't have a reference, MediaKeys is still around (and 82 // don't have a reference, MediaKeys is still around (and
(...skipping 29 matching lines...) Expand all
102 }).then(function(result) { 112 }).then(function(result) {
103 assert_equals(numActiveDOMObjectsCreated(), 0); 113 assert_equals(numActiveDOMObjectsCreated(), 0);
104 test.done(); 114 test.done();
105 }).catch(function(error) { 115 }).catch(function(error) {
106 forceTestFailureFromPromise(test, error); 116 forceTestFailureFromPromise(test, error);
107 }); 117 });
108 }, 'MediaKeySession lifetime without release()'); 118 }, 'MediaKeySession lifetime without release()');
109 </script> 119 </script>
110 </body> 120 </body>
111 </html> 121 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698