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

Unified Diff: third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-lifetime-multiple-mediakeys.html

Issue 2618603002: [eme] Convert lifetime tests to promise_tests (Closed)
Patch Set: move to utils Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-lifetime-multiple-mediakeys.html
diff --git a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-lifetime-multiple-mediakeys.html b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-lifetime-multiple-mediakeys.html
index 2ccba75ea2252f822f79fd2ccca29a01a7aec6a3..dc65e58eccd4e8387bf4a3146457a1a297455f98 100644
--- a/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-lifetime-multiple-mediakeys.html
+++ b/third_party/WebKit/LayoutTests/media/encrypted-media/encrypted-media-lifetime-multiple-mediakeys.html
@@ -9,16 +9,13 @@
<body>
<script>
// For this test, create several MediaKeys and verify lifetime.
- async_test(function(test)
+ promise_test(function(test)
{
- gc();
- var mediaKeys;
- var startingMediaKeysCount = window.internals.mediaKeysCount();
-
- function numMediaKeysCreated()
- {
- return window.internals.mediaKeysCount() - startingMediaKeysCount;
- }
+ var mediaKeys1;
+ var mediaKeys2;
+ var mediaKeys3;
+ var mediaKeys4;
+ var mediaKeys5;
// Create a MediaKeys object. Returns a promise that resolves
// with the new MediaKeys object.
@@ -26,60 +23,79 @@
{
return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) {
return access.createMediaKeys();
- }).then(function(mediaKeys) {
- return mediaKeys;
});
}
- // Create a few MediaKeys objects. Only keep a reference to the
- // last one created.
- createMediaKeys().then(function(result) {
- assert_equals(numMediaKeysCreated(), 1);
+ // Create a few MediaKeys objects. Keep references to them,
+ // to avoid issues if gc() runs.
+ // Even though there should be no existing objects, start by
+ // running gc() and verifying that none exist. This also
+ // allows the failures to be reported from inside a promise
+ // so that the test fails properly.
+ return createGCPromise().then(function() {
+ verifyMediaKeyAndMediaKeySessionCount(0, 0, 'After initial gc()');
return createMediaKeys();
}).then(function(result) {
- assert_equals(numMediaKeysCreated(), 2);
+ assert_not_equals(result, null);
+ mediaKeys1 = result;
+ verifyMediaKeyAndMediaKeySessionCount(1, 0, 'Create first MediaKeys');
return createMediaKeys();
}).then(function(result) {
- assert_equals(numMediaKeysCreated(), 3);
+ assert_not_equals(result, null);
+ mediaKeys2 = result;
+ verifyMediaKeyAndMediaKeySessionCount(2, 0, 'Create second MediaKeys');
return createMediaKeys();
}).then(function(result) {
- assert_equals(numMediaKeysCreated(), 4);
+ assert_not_equals(result, null);
+ mediaKeys3 = result;
+ verifyMediaKeyAndMediaKeySessionCount(3, 0, 'Create third MediaKeys');
return createMediaKeys();
}).then(function(result) {
- assert_equals(numMediaKeysCreated(), 5);
+ assert_not_equals(result, null);
+ mediaKeys4 = result;
+ verifyMediaKeyAndMediaKeySessionCount(4, 0, 'Create fourth MediaKeys');
- // |mediaKeys| refers to the most recently created MediaKeys
- // object.
- mediaKeys = result;
+ return createMediaKeys();
+ }).then(function(result) {
+ assert_not_equals(result, null);
+ mediaKeys5 = result;
+ verifyMediaKeyAndMediaKeySessionCount(5, 0, 'Create fifth MediaKeys');
// In order for the MediaKey objects to be garbage
// collected, it needs time to process any pending events.
return delayToAllowEventProcessingPromise();
- }).then(function(result) {
- assert_equals(numMediaKeysCreated(), 5);
+ }).then(function() {
+ verifyMediaKeyAndMediaKeySessionCount(5, 0, 'All alive');
- // As we only have a reference (|mediaKeys|) to the last
- // created MediaKeys object, the other 4 MediaKeys objects
- // are available to be garbage collected.
+ // Now run garbage collection. Since we have references to
+ // all 5 MediaKeys, none will be collected.
return createGCPromise();
- }).then(function(result) {
- assert_equals(numMediaKeysCreated(), 1);
- assert_equals(typeof mediaKeys.createSession, 'function');
+ }).then(function() {
+ verifyMediaKeyAndMediaKeySessionCount(5, 0, 'All still alive');
+
+ // Drop references to 4 of the MediaKeys. As we will only
+ // have a reference to the last created MediaKeys object,
+ // the other 4 MediaKeys objects are available to be
+ // garbage collected.
+ mediaKeys1 = null;
+ mediaKeys2 = null;
+ mediaKeys3 = null;
+ mediaKeys4 = null;
+ return createGCPromise();
+ }).then(function() {
+ verifyMediaKeyAndMediaKeySessionCount(1, 0, 'Only 1 left');
// Release the last MediaKeys object created.
- mediaKeys = null;
+ mediaKeys5 = null;
// Run gc() again to reclaim the remaining MediaKeys object.
return createGCPromise();
- }).then(function(result) {
- assert_equals(numMediaKeysCreated(), 0);
- test.done();
- }).catch(function(error) {
- forceTestFailureFromPromise(test, error);
+ }).then(function() {
+ verifyMediaKeyAndMediaKeySessionCount(0, 0, 'After final gc()');
});
}, 'Multiple MediaKeys lifetime');
</script>

Powered by Google App Engine
This is Rietveld 408576698