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

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 // In non-Oilpan, numActiveDOMObjectsCreate() == 0.
43 // In Oilpan, numActiveDOMObjetsCreated() <= 2.
44 // (1 MediaKeysInitializer and
45 // 1 MediaKeySystemAccessInitializer).
46 assert_less_than_equal(numActiveDOMObjectsCreated(), 2, 'Med iaKeys.create()');
43 47
44 // Create 3 sessions. 48 // Create 3 sessions.
45 mediaKeySession1 = mediaKeys.createSession(); 49 mediaKeySession1 = mediaKeys.createSession();
46 return mediaKeySession1.generateRequest(initDataType, initDa ta); 50 return mediaKeySession1.generateRequest(initDataType, initDa ta);
47 }).then(function() { 51 }).then(function() {
48 assert_true(mediaKeySession1.sessionId && mediaKeySession1.s essionId.length > 0); 52 assert_true(mediaKeySession1.sessionId && mediaKeySession1.s essionId.length > 0);
49 // Should be 1 MediaKeySession. 53 // Should be 1 MediaKeySession.
50 assert_equals(numActiveDOMObjectsCreated(), 1, 'mediaKeys.cr eateSession(1)'); 54 // In non-Oilpan, numActiveDOMObjectsCreate() == 1.
55 // In Oilpan, numActiveDOMObjectsCreated() <= 4.
56 // (1 MediaKeysInitializer,
57 // 1 MediaKeySystemAccessInitializer,
58 // 1 ContentDecryptionModuleResultPromise and
59 // 1 MediaKeySession).
60 assert_less_than_equal(numActiveDOMObjectsCreated(), 4, 'Med iaKeys.createSession(1)');
51 mediaKeySession2 = mediaKeys.createSession(); 61 mediaKeySession2 = mediaKeys.createSession();
52 return mediaKeySession2.generateRequest(initDataType, initDa ta); 62 return mediaKeySession2.generateRequest(initDataType, initDa ta);
53 }).then(function() { 63 }).then(function() {
54 assert_true(mediaKeySession2.sessionId && mediaKeySession2.s essionId.length > 0); 64 assert_true(mediaKeySession2.sessionId && mediaKeySession2.s essionId.length > 0);
55 // Should be 2 MediaKeySessions. 65 // Should be 2 MediaKeySessions.
56 assert_equals(numActiveDOMObjectsCreated(), 2, 'mediaKeys.cr eateSession(2)'); 66 // In non-Oilpan, numActiveDOMObjectsCreate() == 2.
67 // In Oilpan, numActiveDOMObjectsCreate() <= 6.
68 // (1 MediaKeysInitializer,
69 // 1 MediaKeySystemAccessInitializer,
70 // 2 ContentDecryptionModuleResultPromise and
71 // 2 MediaKeySession).
72 assert_less_than_equal(numActiveDOMObjectsCreated(), 6, 'med iaKeys.createSession(2)');
57 mediaKeySession3 = mediaKeys.createSession(); 73 mediaKeySession3 = mediaKeys.createSession();
58 return mediaKeySession3.generateRequest(initDataType, initDa ta); 74 return mediaKeySession3.generateRequest(initDataType, initDa ta);
59 }).then(function() { 75 }).then(function() {
60 assert_true(mediaKeySession3.sessionId && mediaKeySession3.s essionId.length > 0); 76 assert_true(mediaKeySession3.sessionId && mediaKeySession3.s essionId.length > 0);
61 // Should be 3 MediaKeySessions. 77 // Should be 3 MediaKeySessions.
62 assert_equals(numActiveDOMObjectsCreated(), 3, 'mediaKeys.cr eateSession(3)'); 78 // In non-Oilpan, numActiveDOMObjectsCreate() == 3.
79 // In Oilpan, numActiveDOMObjectsCreate() <= 8.
80 // (1 MediaKeysInitializer,
81 // 1 MediaKeySystemAccessInitializer,
82 // 3 ContentDecryptionModuleResultPromise and
83 // 3 MediaKeySession).
84 // numActiveDOMObjectsCreated() <= 8 (ditto)
85 assert_less_than_equal(numActiveDOMObjectsCreated(), 8, 'med iaKeys.createSession(3)');
63 86
64 // Run gc(). All sessions should remain as we have a 87 // Run gc(). All sessions should remain as we have a
65 // reference to each one. However, running gc() 88 // reference to each one. However, running gc()
66 // asynchronously should free up the last PromiseResolver. 89 // asynchronously should free up the last PromiseResolver.
67 return createGCPromise(); 90 return createGCPromise();
68 }).then(function(result) { 91 }).then(function(result) {
69 assert_equals(numActiveDOMObjectsCreated(), 3, 'After gc()') ; 92 assert_equals(numActiveDOMObjectsCreated(), 3, 'After gc()') ;
70 93
71 // Now drop references to 2 of the sessions. Even though we 94 // Now drop references to 2 of the sessions. Even though we
72 // don't have a reference, MediaKeys is still around (and 95 // don't have a reference, MediaKeys is still around (and
(...skipping 29 matching lines...) Expand all
102 }).then(function(result) { 125 }).then(function(result) {
103 assert_equals(numActiveDOMObjectsCreated(), 0); 126 assert_equals(numActiveDOMObjectsCreated(), 0);
104 test.done(); 127 test.done();
105 }).catch(function(error) { 128 }).catch(function(error) {
106 forceTestFailureFromPromise(test, error); 129 forceTestFailureFromPromise(test, error);
107 }); 130 });
108 }, 'MediaKeySession lifetime without release()'); 131 }, 'MediaKeySession lifetime without release()');
109 </script> 132 </script>
110 </body> 133 </body>
111 </html> 134 </html>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698