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

Side by Side Diff: third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/keystatuses-multiple-sessions.js

Issue 2546853003: Add W3C encrypted-media tests (Closed)
Patch Set: rebase now that content files landed Created 4 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
(Empty)
1 function runTest(config,qualifier)
2 {
3 var testname = testnamePrefix(qualifier, config.keysystem) + ', temporary, k eystatuses, multiple sessions';
4
5 var configuration = getSimpleConfigurationForContent(config.content);
6
7 if (config.initDataType && config.initData) configuration.initDataTypes = [c onfig.initDataType];
8
9 async_test(function(test)
10 {
11 var mediaKeySession1;
12 var mediaKeySession2;
13
14 // Even though key ids are uint8, using printable values so that
15 // they can be verified easily.
16 var key1 = new Uint8Array(config.content.keys[0].kid),
17 key2 = new Uint8Array(config.content.keys[1].kid),
18 variant1 = config.content.keys[0].variantId,
19 variant2 = config.content.keys[1].variantId;
20
21 function onFailure(error) {
22 forceTestFailureFromPromise(test,error);
23 }
24
25 function processMessage1(event)
26 {
27 // This should only be called for session1.
28 assert_equals(event.target, mediaKeySession1);
29
30 // No keys added yet.
31 verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [], unexp ected: [key1, key2]});
32
33 // Add key1 to session1.
34 config.messagehandler(event.messageType, event.message, {variantId:v ariant1}).then(function(response) {
35 return event.target.update(response);
36 }).catch(onFailure);
37
38 }
39
40 function processKeyStatusesChange1(event)
41 {
42 // This should only be called for session1.
43 assert_equals(event.target, mediaKeySession1);
44
45 // Check that keyStatuses contains the expected key1 only.
46 verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [key1], u nexpected: [key2]});
47
48 // Now trigger a message event on session2.
49 mediaKeySession2.generateRequest(config.initDataType, config.initDat a[1]).catch(onFailure);
50 }
51
52 function processMessage2(event)
53 {
54 // This should only be called for session2.
55 assert_equals(event.target, mediaKeySession2);
56
57 // session2 has no keys added yet.
58 verifyKeyStatuses(mediaKeySession2.keyStatuses, {expected: [], unexp ected: [key1, key2]});
59
60 // session1 should still have 1 key.
61 verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [key1], u nexpected: [key2]});
62
63 // Add key2 to session2.
64 config.messagehandler(event.messageType, event.message, {variantId:v ariant2}).then(function(response) {
65 return event.target.update(response);
66 }).catch(onFailure);
67 }
68
69 function processKeyStatusesChange2(event)
70 {
71 // This should only be called for session2.
72 assert_equals(event.target, mediaKeySession2);
73
74 // Check that keyStatuses contains the expected key2 only.
75 verifyKeyStatuses(mediaKeySession2.keyStatuses, {expected: [key2], u nexpected: [key1]});
76
77 // session1 should still have 1 key.
78 verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [key1], u nexpected: [key2]});
79
80 test.done();
81 }
82
83 navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]) .then(function(access) {
84 return access.createMediaKeys();
85 }).then(function(mediaKeys) {
86 mediaKeySession1 = mediaKeys.createSession();
87 mediaKeySession2 = mediaKeys.createSession();
88
89 // There should be no keys defined on either session.
90 verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [], unexp ected: [key1, key2]});
91 verifyKeyStatuses(mediaKeySession2.keyStatuses, {expected: [], unexp ected: [key1, key2]});
92
93 // Bind all the event handlers now.
94 waitForEventAndRunStep('message', mediaKeySession1, processMessage1, test);
95 waitForEventAndRunStep('message', mediaKeySession2, processMessage2, test);
96 waitForEventAndRunStep('keystatuseschange', mediaKeySession1, proces sKeyStatusesChange1, test);
97 waitForEventAndRunStep('keystatuseschange', mediaKeySession2, proces sKeyStatusesChange2, test);
98
99 // Generate a request on session1.
100 return mediaKeySession1.generateRequest(config.initDataType, config. initData[0]);
101 }).catch(onFailure);
102 }, testname );
103 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698