diff options
author | Moonchild <moonchild@palemoon.org> | 2021-02-25 01:03:57 +0000 |
---|---|---|
committer | Moonchild <moonchild@palemoon.org> | 2021-02-25 01:03:57 +0000 |
commit | ceadffab6b357723981a429e11222daf6cd6dcfb (patch) | |
tree | 5603053048d6a460f79b22bdf165fb74d32d39b0 /testing/web-platform/tests/encrypted-media | |
parent | 14fb2f966e9b54598c451e3cb35b4aa0480dafed (diff) | |
parent | ad5a13bd501e379517da1a944c104a11d951a3f5 (diff) | |
download | UXP-RC_20210225.tar UXP-RC_20210225.tar.gz UXP-RC_20210225.tar.lz UXP-RC_20210225.tar.xz UXP-RC_20210225.zip |
Merge branch 'master' into releaseRC_20210225
Diffstat (limited to 'testing/web-platform/tests/encrypted-media')
218 files changed, 0 insertions, 16958 deletions
diff --git a/testing/web-platform/tests/encrypted-media/EncryptedMediaExtensions.idl b/testing/web-platform/tests/encrypted-media/EncryptedMediaExtensions.idl deleted file mode 100644 index fbe898b20..000000000 --- a/testing/web-platform/tests/encrypted-media/EncryptedMediaExtensions.idl +++ /dev/null @@ -1,119 +0,0 @@ -// Encrypted Media Extensions WebIDL -// -// NOTE: Please update the link below to the specification version from -// which this IDL was extracted. -// -// https://www.w3.org/TR/2016/WD-encrypted-media-20160610/ -// + commit 5499821932391ae2c2e53756ae7ab9fae89d5863 -// - -partial interface Navigator { - Promise<MediaKeySystemAccess> requestMediaKeySystemAccess (DOMString keySystem, sequence<MediaKeySystemConfiguration> supportedConfigurations); -}; - -enum MediaKeysRequirement { - "required", - "optional", - "not-allowed" -}; - -dictionary MediaKeySystemConfiguration { - DOMString label = ""; - sequence<DOMString> initDataTypes = []; - sequence<MediaKeySystemMediaCapability> audioCapabilities = []; - sequence<MediaKeySystemMediaCapability> videoCapabilities = []; - MediaKeysRequirement distinctiveIdentifier = "optional"; - MediaKeysRequirement persistentState = "optional"; - sequence<DOMString> sessionTypes; -}; - -dictionary MediaKeySystemMediaCapability { - DOMString contentType = ""; - DOMString robustness = ""; -}; - -interface MediaKeySystemAccess { - readonly attribute DOMString keySystem; - MediaKeySystemConfiguration getConfiguration (); - Promise<MediaKeys> createMediaKeys (); -}; - -enum MediaKeySessionType { - "temporary", - "persistent-usage-record", - "persistent-license" -}; - -interface MediaKeys { - MediaKeySession createSession (optional MediaKeySessionType sessionType = "temporary"); - Promise<boolean> setServerCertificate (BufferSource serverCertificate); -}; - -interface MediaKeySession : EventTarget { - readonly attribute DOMString sessionId; - readonly attribute unrestricted double expiration; - readonly attribute Promise<void> closed; - readonly attribute MediaKeyStatusMap keyStatuses; - attribute EventHandler onkeystatuseschange; - attribute EventHandler onmessage; - Promise<void> generateRequest (DOMString initDataType, BufferSource initData); - Promise<boolean> load (DOMString sessionId); - Promise<void> update (BufferSource response); - Promise<void> close (); - Promise<void> remove (); -}; - -interface MediaKeyStatusMap { - iterable<BufferSource,MediaKeyStatus>; - readonly attribute unsigned long size; - boolean has (BufferSource keyId); - any get (BufferSource keyId); -}; - -enum MediaKeyStatus { - "usable", - "expired", - "released", - "output-restricted", - "output-downscaled", - "status-pending", - "internal-error" -}; - -enum MediaKeyMessageType { - "license-request", - "license-renewal", - "license-release", - "individualization-request" -}; - -[Constructor(DOMString type, MediaKeyMessageEventInit eventInitDict)] -interface MediaKeyMessageEvent : Event { - readonly attribute MediaKeyMessageType messageType; - readonly attribute ArrayBuffer message; -}; - -dictionary MediaKeyMessageEventInit : EventInit { - required MediaKeyMessageType messageType; - required ArrayBuffer message; -}; - -// partial interface HTMLMediaElement : EventTarget { -partial interface HTMLMediaElement { - readonly attribute MediaKeys? mediaKeys; - attribute EventHandler onencrypted; - attribute EventHandler onwaitingforkey; - Promise<void> setMediaKeys (MediaKeys? mediaKeys); -}; - -[Constructor(DOMString type, optional MediaEncryptedEventInit eventInitDict)] -interface MediaEncryptedEvent : Event { - readonly attribute DOMString initDataType; - readonly attribute ArrayBuffer? initData; -}; - -dictionary MediaEncryptedEventInit : EventInit { - DOMString initDataType = ""; - ArrayBuffer? initData = null; -}; - diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-creation-with-gc.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-creation-with-gc.html deleted file mode 100644 index 4dd705f9f..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-creation-with-gc.html +++ /dev/null @@ -1,41 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test asynchronous creation of MediaKeys and MediaKeySession while running garbage collection</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - async_test(function(test) - { - // Run garbage collection often. - setInterval(asyncGC, 0); - - var initDataType; - var initData; - var mediaKeySession; - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.generateRequest(initDataType, initData); - }).then(function() { - return mediaKeySession.close(); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Test asynchronous creation of MediaKeys and MediaKeySession while running garbage collection.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-setcert-with-gc.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-setcert-with-gc.html deleted file mode 100644 index 4da562894..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-async-setcert-with-gc.html +++ /dev/null @@ -1,32 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test asynchronous setServerCertificate while running garbage collection</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // Run garbage collection continuously. - setInterval(asyncGC, 0); - - promise_test(function(test) - { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var cert = new Uint8Array(200); - return mediaKeys.setServerCertificate(cert); - }).then(function(result) { - assert_false(result); - }); - }, 'Test asynchronous setServerCertificate while running garbage collection.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys-with-session.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys-with-session.html deleted file mode 100644 index a892b969c..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys-with-session.html +++ /dev/null @@ -1,104 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test MediaKeys lifetime when adding a session</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // MediaKeySessions remain as long as: - // JavaScript has a reference to it - // OR (MediaKeys is around - // AND the session has not received a close() event) - // In the tests below, we do not close any session nor keep a - // Javascript reference to any session, so MediaKeySessions remain - // as long as the associated MediaKeys object is around. - - // For this test, create a MediaKeySession and verify lifetime. - async_test(function(test) - { - var initDataType; - var initData; - var mediaKeys; - var startingActiveDOMObjectCount = window.internals.activeDOMObjectCount(document); - - function numActiveDOMObjectsCreated() - { - return window.internals.activeDOMObjectCount(document) - startingActiveDOMObjectCount; - } - - // Create a MediaKeys object with a session. - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - - // Verify MediaKeys is an ActiveDOMObject. - // In non-Oilpan, numActiveDOMObjectsCreate() == 1. - // In Oilpan, numActiveDOMObjectsCreate() <= 4. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 1 MediaKeySystemAccessInitializer (navigator.requestMediaKeySystemAccess() use above), - // 1 MediaKeySystemAccessInitializer (isInitDataSupported() (via getSupportedInitDataType()))) - assert_between_inclusive(numActiveDOMObjectsCreated(), 1, 4, 'MediaKeys.create()'); - - var mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.generateRequest(initDataType, initData); - }).then(function() { - // Should be 1 MediaKeys + 1 MediaKeySession. - // In non-Oilpan, numActiveDOMObjectsCreate() == 2. - // In Oilpan, numActiveDOMObjectsCreate() <= 6. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 2 MediaKeySystemAccessInitializer, - // 1 ContentDecryptionModuleResultPromise and - // 1 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 2, 6, 'MediaKeys.createSession()'); - - // Run gc(), should not affect MediaKeys object nor the - // session since we still have a reference to it. - - // When enabling oilpan GC, the in-active - // ScriptPromiseResolvers will be destroyed. - return createGCPromise(); - }).then(function(result) { - assert_equals(typeof mediaKeys.createSession, 'function'); - - // MediaKeys + MediaKeySessions should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 2, 3, 'After gc()'); - - // Drop reference to the MediaKeys object and run gc() - // again. Object should be collected this time. Since - // MediaKeySessions remain alive as long as MediaKeys is - // around, it is possible that gc() checks the - // MediaKeySession object first, and doesn't collect it - // since MediaKeys hasn't been collected yet. Thus run gc() - // twice, to ensure that the unreferenced MediaKeySession - // object get collected. - mediaKeys = null; - return createGCPromise(); - }).then(function(result) { - return createGCPromise(); - }).then(function(result) { - // No MediaKeySessions should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 0, 1, 'After final gc()'); - - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'MediaKeys lifetime with session'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys.html deleted file mode 100644 index b8e79ac8b..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeys.html +++ /dev/null @@ -1,59 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test MediaKeys lifetime</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - async_test(function(test) - { - // Create a MediaKeys object and free immediately. - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(result) { - // Do nothing with the created object - }).then(function(result) { - // No way to verify that MediaKeys object is actually - // collected, but make sure it doesn't crash. - return createGCPromise(); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Creating and destroying MediaKeys does not crash'); - - async_test(function(test) - { - var mediaKeys; - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - return createGCPromise(); - }).then(function(result) { - // Check that the object still exists. - assert_equals(typeof mediaKeys.createSession, 'function'); - mediaKeys = null; - - // Now that the reference is dropped, it should be - // collected. No way to verify that it is actually - // collected, but make sure it doesn't crash. - return createGCPromise(); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'MediaKeys is not collected as long as we have a reference'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-reference.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-reference.html deleted file mode 100644 index 4b8ad1b46..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-reference.html +++ /dev/null @@ -1,157 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test MediaKeySession lifetime without release()</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // Since MediaKeySession (and MediaKeys) are ActiveDOMObjects, - // we can determine when they are garbage collected. - // MediaKeySessions remain as long as: - // JavaScript has a reference to it - // OR (MediaKeys is around - // AND the session has not received a close() event) - - async_test(function(test) - { - var mediaKeys; - var mediaKeySession1; - var mediaKeySession2; - var mediaKeySession3; - var initDataType; - var initData; - var startingActiveDOMObjectCount = window.internals.activeDOMObjectCount(document); - - function numActiveDOMObjectsCreated() - { - return window.internals.activeDOMObjectCount(document) - startingActiveDOMObjectCount; - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - assert_equals(typeof mediaKeys.createSession, 'function'); - - // Verify MediaKeys is an ActiveDOMObject. - // In non-Oilpan, numActiveDOMObjectsCreate() == 1. - // In Oilpan, numActiveDOMObjectsCreate() <= 4. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 1 MediaKeySystemAccessInitializer (navigator.requestMediaKeySystemAccess() use above), - // 1 MediaKeySystemAccessInitializer (isInitDataSupported() (via getSupportedInitDataType()))) - assert_between_inclusive(numActiveDOMObjectsCreated(), 1, 4, 'MediaKeys.create()'); - - // Create 3 sessions. - mediaKeySession1 = mediaKeys.createSession(); - return mediaKeySession1.generateRequest(initDataType, initData); - }).then(function() { - assert_true(mediaKeySession1.sessionId && mediaKeySession1.sessionId.length > 0); - - // Should be 1 MediaKeys + 1 MediaKeySession. - // In non-Oilpan, numActiveDOMObjectsCreate() == 2. - // In Oilpan, numActiveDOMObjectsCreate() <= 6. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 2 MediaKeySystemAccessInitializer, - // 1 ContentDecryptionModuleResultPromise and - // 1 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 2, 6, 'MediaKeys.createSession(1)'); - - mediaKeySession2 = mediaKeys.createSession(); - return mediaKeySession2.generateRequest(initDataType, initData); - }).then(function() { - assert_true(mediaKeySession2.sessionId && mediaKeySession2.sessionId.length > 0); - - // Should be 1 MediaKeys + 2 MediaKeySessions. - // In non-Oilpan, numActiveDOMObjectsCreate() == 3. - // In Oilpan, numActiveDOMObjectsCreate() <= 8. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 2 MediaKeySystemAccessInitializers, - // 2 ContentDecryptionModuleResultPromise and - // 2 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 3, 8, 'mediaKeys.createSession(2)'); - - mediaKeySession3 = mediaKeys.createSession(); - return mediaKeySession3.generateRequest(initDataType, initData); - }).then(function() { - assert_true(mediaKeySession3.sessionId && mediaKeySession3.sessionId.length > 0); - - // Should be 1 MediaKeys + 3 MediaKeySessions. - // In non-Oilpan, numActiveDOMObjectsCreate() == 4. - // In Oilpan, numActiveDOMObjectsCreate() <= 10. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 2 MediaKeySystemAccessInitializers, - // 3 ContentDecryptionModuleResultPromise and - // 3 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 4, 10, 'mediaKeys.createSession(3)'); - - // Run gc(). All sessions should remain as we have a - // reference to each one. However, running gc() - // asynchronously should free up the last PromiseResolver. - return createGCPromise(); - }).then(function(result) { - // Only MediaKeys + 3 MediaKeySessions should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 4, 5, 'After gc()'); - - // Now drop references to 2 of the sessions. Even though we - // don't have a reference, MediaKeys is still around (and - // the sessions aren't closed), so the objects won't be - // collected. - mediaKeySession1 = null; - mediaKeySession2 = null; - return createGCPromise(); - }).then(function(result) { - return createGCPromise(); - }).then(function(result) { - // MediaKeys + 3 MediaKeySessions should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 4, 5, 'After second gc()'); - - // Now drop the reference to MediaKeys. It and the 2 - // unreferenced sessions should be collected. Since - // MediaKeySessions remain alive as long as MediaKeys is - // around, it is possible that gc() checks one or both - // MediaKeySession objects first, and doesn't collect them - // since MediaKeys hasn't been collected yet. Thus run gc() - // twice, to ensure that the unreferenced MediaKeySession - // objects get collected. - mediaKeys = null; - return createGCPromise(); - }).then(function(result) { - return createGCPromise(); - }).then(function(result) { - // Only 1 MediaKeySessions should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 1, 2, 'After mediaKeys = null'); - - // Drop the reference to the last session. It should get - // collected now since MediaKeys is gone. - mediaKeySession3 = null; - return createGCPromise(); - }).then(function(result) { - // No MediaKeySessions should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 0, 1, 'After final gc()'); - - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'MediaKeySession lifetime without release()'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release-noreference.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release-noreference.html deleted file mode 100644 index a962844a3..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release-noreference.html +++ /dev/null @@ -1,131 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test MediaKeySession lifetime after release() without references</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // Since MediaKeySession (and MediaKeys) are ActiveDOMObjects, - // we can determine when they are garbage collected. - // MediaKeySessions remain as long as: - // JavaScript has a reference to it - // OR (MediaKeys is around - // AND the session has not received a close() event) - async_test(function(test) - { - var initDataType; - var initData; - var startingActiveDOMObjectCount = window.internals.activeDOMObjectCount(document); - - function numActiveDOMObjectsCreated() - { - return window.internals.activeDOMObjectCount(document) - startingActiveDOMObjectCount; - } - - // Create 2 sessions. - var mediaKeys; - var mediaKeySession1; - var mediaKeySession2; - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - - // Verify MediaKeys is an ActiveDOMObject. - // In non-Oilpan, numActiveDOMObjectsCreate() == 1. - // In Oilpan, numActiveDOMObjectsCreate() <= 4. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 1 MediaKeySystemAccessInitializer (navigator.requestMediaKeySystemAccess() use above), - // 1 MediaKeySystemAccessInitializer (isInitDataSupported() (via getSupportedInitDataType()))) - assert_between_inclusive(numActiveDOMObjectsCreated(), 1, 4, 'MediaKeys.create()'); - - mediaKeySession1 = mediaKeys.createSession(); - return mediaKeySession1.generateRequest(initDataType, initData); - }).then(function() { - assert_true(mediaKeySession1.sessionId && mediaKeySession1.sessionId.length > 0); - - // Should be 1 MediaKeys + 1 MediaKeySession. - // In non-Oilpan, numActiveDOMObjectsCreate() == 2. - // In Oilpan, numActiveDOMObjectsCreate() <= 6. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 2 MediaKeySystemAccessInitializer, - // 1 ContentDecryptionModuleResultPromise and - // 1 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 2, 6, 'MediaKeys.createSession(1)'); - - mediaKeySession2 = mediaKeys.createSession(); - return mediaKeySession2.generateRequest(initDataType, initData); - }).then(function() { - assert_true(mediaKeySession2.sessionId && mediaKeySession2.sessionId.length > 0); - - // Should be 1 MediaKeys + 2 MediaKeySessions. - // In non-Oilpan, numActiveDOMObjectsCreate() == 3. - // In Oilpan, numActiveDOMObjectsCreate() <= 8. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 2 MediaKeySystemAccessInitializers, - // 2 ContentDecryptionModuleResultPromise and - // 2 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 3, 8, 'mediaKeys.createSession(2)'); - }).then(function(result) { - // Run gc(). All sessions should remain as we have a - // reference to each one. - return createGCPromise(); - }).then(function(result) { - // Should be just 1 MediaKeys + 2 MediaKeySessions. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 3, 4, 'After gc()'); - - // Close the sessions. Once the close() event is received, - // they should get garbage collected as there are no JS - // references to them. - var promise = mediaKeySession1.close(); - mediaKeySession1 = null; - return promise; - }).then(function(result) { - // Give time so that the close event can be processed by - // MediaKeySession. - return delayToAllowEventProcessingPromise(); - }).then(function(result) { - return createGCPromise(); - }).then(function(result) { - // Only MediaKeys + mediaKeySession2 should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 2, 3, 'mediaKeySession1 not collected'); - - var promise = mediaKeySession2.close(); - mediaKeySession2 = null; - return promise; - }).then(function(result) { - // Provide time for the mediaKeySession2 close event to be - // handled. - return delayToAllowEventProcessingPromise(); - }).then(function(result) { - return createGCPromise(); - }).then(function(result) { - // Only MediaKeys should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 1, 2, 'mediaKeySession2 not collected'); - - assert_not_equals(mediaKeys, null); - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'MediaKeySession lifetime after release() without references'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release.html deleted file mode 100644 index 626526761..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-mediakeysession-release.html +++ /dev/null @@ -1,118 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>MediaKeySession lifetime after release()</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // Since MediaKeySession (and MediaKeys) are ActiveDOMObjects, - // we can determine when they are garbage collected. - // MediaKeySessions remain as long as: - // JavaScript has a reference to it - // OR (MediaKeys is around - // AND the session has not received a close() event) - async_test(function(test) - { - var mediaKeys; - var mediaKeySession1; - var mediaKeySession2; - var initDataType; - var initData; - var startingActiveDOMObjectCount = window.internals.activeDOMObjectCount(document); - - function numActiveDOMObjectsCreated() - { - return window.internals.activeDOMObjectCount(document) - startingActiveDOMObjectCount; - } - - // Create 2 sessions. - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - - // Verify MediaKeys is an ActiveDOMObject. - // In non-Oilpan, numActiveDOMObjectsCreate() == 1. - // In Oilpan, numActiveDOMObjectsCreate() <= 4. - // (1 MediaKeys, - // 1 MediaKeysInitializer and - // 1 MediaKeySystemAccessInitializer (navigator.requestMediaKeySystemAccess() use above), - // 1 MediaKeySystemAccessInitializer (isInitDataSupported() (via getSupportedInitDataType()))) - assert_between_inclusive(numActiveDOMObjectsCreated(), 1, 4, 'MediaKeys.create()'); - - mediaKeySession1 = mediaKeys.createSession(); - return mediaKeySession1.generateRequest(initDataType, initData); - }).then(function() { - // Should be 1 MediaKeys + 1 MediaKeySession. - // In non-Oilpan, numActiveDOMObjectsCreate() == 2. - // In Oilpan, numActiveDOMObjectsCreate() <= 6. - // (1 MediaKeys, - // 1 MediaKeysInitializer, - // 2 MediaKeySystemAccessInitializers, - // 1 ContentDecryptionModuleResultPromise and - // 1 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 2, 6, 'MediaKeys.createSession(1)'); - - mediaKeySession2 = mediaKeys.createSession(); - return mediaKeySession2.generateRequest(initDataType, initData); - }).then(function() { - // Should be 1 MediaKeys + 2 MediaKeySessions. - // In non-Oilpan, numActiveDOMObjectsCreate() == 3. - // In Oilpan, numActiveDOMObjectsCreate() <= 8. - // (1 MediaKeys, - // 1 MediaKeysInitializer, - // 2 MediaKeySystemAccessInitializers, - // 2 ContentDecryptionModuleResultPromise and - // 2 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 3, 8, 'mediaKeys.createSession(2)'); - - // Close the sessions. Once completed, only the JS - // reference to them keeps them around. - return mediaKeySession1.close(); - }).then(function(result) { - return mediaKeySession2.close(); - }).then(function(result) { - // Since both sessions have been closed, dropping the - // reference to them from JS will result in the session - // being garbage-collected. - // Should be 1 MediaKeys + 2 MediaKeySessions. - // In non-Oilpan, numActiveDOMObjectsCreate() == 3. - // In Oilpan, numActiveDOMObjectsCreate() <= 10. - // (1 MediaKeys, - // 1 MediaKeysInitializer, - // 2 MediaKeySystemAccessInitializers, - // 4 ContentDecryptionModuleResultPromise and - // 2 MediaKeySession). - assert_between_inclusive(numActiveDOMObjectsCreated(), 3, 10, 'after close'); - - mediaKeySession1 = null; - return createGCPromise(); - }).then(function() { - // Only MediaKeys + mediaKeySession2 should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 2, 3, 'mediaKeySession1 not collected'); - - mediaKeySession2 = null; - return createGCPromise(); - }).then(function() { - // Only MediaKeys should remain. - // In non-Oilpan, there is also something from createGCPromise(). - assert_between_inclusive(numActiveDOMObjectsCreated(), 1, 2, 'mediaKeySession2 not collected'); - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'MediaKeySession lifetime after release()'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-multiple-mediakeys.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-multiple-mediakeys.html deleted file mode 100644 index 42638a069..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-multiple-mediakeys.html +++ /dev/null @@ -1,131 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test multiple MediaKeys lifetimes</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // For this test, create several MediaKeys and verify lifetime. - async_test(function(test) - { - var mediaKeys; - var startingActiveDOMObjectCount = window.internals.activeDOMObjectCount(document); - - function numActiveDOMObjectsCreated() - { - return window.internals.activeDOMObjectCount(document) - startingActiveDOMObjectCount; - } - - // Create a MediaKeys object. Returns a promise that resolves - // with the new MediaKeys object. - function createMediaKeys() - { - 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) { - // Should be 1 MediaKeys. - // In non-Oilpan, numActiveDOMObjectsCreate() == 1. - // In Oilpan, numActiveDOMObjectsCreated() <= 4. - // (1 MediaKeysInitializer, - // 1 MediaKeySystemAccessInitializer (navigator.requestMediaKeySystemAccess() use above), - // 1 MediaKeySystemAccessInitializer (isInitDataSupported() (via getSupportedInitDataType())) and - // 1 ContentDecryptionModuleResultPromise). - assert_between_inclusive(numActiveDOMObjectsCreated(), 1, 4); - - return createMediaKeys(); - }).then(function(result) { - // Should be 2 MediaKeys. - // In non-Oilpan, numActiveDOMObjectsCreate() == 2. - // In Oilpan, numActiveDOMObjectsCreate() <= 8. - // (2 MediaKeysInitializer, - // 4 MediaKeySystemAccessInitializer and - // 2 ContentDecryptionModuleResultPromise). - assert_between_inclusive(numActiveDOMObjectsCreated(), 2, 8); - - return createMediaKeys(); - }).then(function(result) { - // Should be 3 MediaKeys. - // In non-Oilpan, numActiveDOMObjectsCreate() == 3. - // In Oilpan, numActiveDOMObjectsCreate() <= 12. - // (3 MediaKeysInitializer, - // 6 MediaKeySystemAccessInitializer and - // 3 ContentDecryptionModuleResultPromise). - assert_between_inclusive(numActiveDOMObjectsCreated(), 3, 12); - - return createMediaKeys(); - }).then(function(result) { - // Should be 4 MediaKeys. - // In non-Oilpan, numActiveDOMObjectsCreate() == 4. - // In Oilpan, numActiveDOMObjectsCreate() <= 16. - // (4 MediaKeysInitializer, - // 8 MediaKeySystemAccessInitializer and - // 4 ContentDecryptionModuleResultPromise). - assert_between_inclusive(numActiveDOMObjectsCreated(), 4, 16); - - return createMediaKeys(); - }).then(function(result) { - // Should be 5 MediaKeys. - // In non-Oilpan, numActiveDOMObjectsCreate() == 5. - // In Oilpan, numActiveDOMObjectsCreate() <= 20. - // (5 MediaKeysInitializer, - // 10 MediaKeySystemAccessInitializer and - // 5 ContentDecryptionModuleResultPromise). - assert_between_inclusive(numActiveDOMObjectsCreated(), 5, 20); - - // |mediaKeys| refers to the most recently created MediaKeys - // object. - mediaKeys = result; - - // In order for the MediaKey objects to be garbage - // collected, it needs time to process any pending events. - return delayToAllowEventProcessingPromise(); - }).then(function(result) { - // In non-Oilpan, numActiveDOMObjectsCreated() == 5 - // (5 MediaKeySession objects). - // In Oilpan, numActiveDOMObjectsCreated() <= 23 - // (5 MediaKeysInitializer, - // 12 MediaKeySystemAccessInitializer, - // 5 ContentDecryptionModuleResultPromise and - // 1 DOMTimer (in delayToAllowEventProcessingPromise)) - assert_between_inclusive(numActiveDOMObjectsCreated(), 5, 23); - - // As we only have a reference (|mediaKeys|) to the last - // created MediaKeys object, the other 4 MediaKeys objects - // are available to be garbage collected. - return createGCPromise(); - }).then(function(result) { - // Should be 1 MediaKeys and DOMTimer. - assert_less_than_equal(numActiveDOMObjectsCreated(), 2); - assert_equals(typeof mediaKeys.createSession, 'function'); - - // Release the last MediaKeys object created. - mediaKeys = null; - - // Run gc() again to reclaim the remaining MediaKeys object. - return createGCPromise(); - }).then(function(result) { - // Should be just a DOMTimer. - assert_less_than_equal(numActiveDOMObjectsCreated(), 1); - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Multiple MediaKeys lifetime'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-reload.html b/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-reload.html deleted file mode 100644 index b2f8ffb1f..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/chromium_specific_disabled/encrypted-media-lifetime-reload.html +++ /dev/null @@ -1,103 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Reloading during encrypted media playback</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test requires Chromium specific content and is being disabled. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - async_test(function(test) - { - var video = document.getElementById('testVideo'); - var content = 'webm/test-encrypted.webm'; - var mediaKeySession = null; - var hasSessionUpdateSucceeded = false; - var encryptedEventCount = 0; - - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - - function onEncrypted(event) - { - assert_equals(event.target, video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - // The same decryption key is used by both the audio and - // the video streams so only create a session once. To - // avoid issues when comparing the expected.txt file - // (which logs the events in the order they occur), create - // the session on the second event. This also ensures we - // see both events. - if (++encryptedEventCount != 2) - return; - - mediaKeySession = video.mediaKeys.createSession(); - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - mediaKeySession.generateRequest(event.initDataType, event.initData).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onMessage(event) - { - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.target, mediaKeySession); - assert_equals(event.type, 'message'); - assert_equals(event.messageType, 'license-request'); - - var keyId = extractSingleKeyIdFromMessage(event.message); - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey))); - mediaKeySession.update(jwkSet).then(function(result) { - hasSessionUpdateSucceeded = true; - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onPlaying(event) - { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - video.addEventListener('timeupdate', onTimeUpdate, true); - } - - function onTimeUpdate(event) - { - if (event.target.currentTime < 0.2 || !hasSessionUpdateSucceeded) - return; - - // Reload the page to catch any possible teardown issues. - if (location.hash == '#x') { - test.done(); - return; - } - - location.hash += 'x'; - location.reload(); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - waitForEventAndRunStep('playing', video, onPlaying, test); - video.src = content; - return video.setMediaKeys(mediaKeys); - }).then(function(result) { - video.play(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Reloading during encrypted media playback.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-check-init-data-type.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-check-init-data-type.html deleted file mode 100644 index f71cf48a8..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-check-init-data-type.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test support of different initDataTypes.</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - function checkInitDataType(initDataType) - { - return isInitDataTypeSupported(initDataType).then(function(result) { - // If |initDataType| is not supported, simply succeed. - if (!result) - return Promise.resolve('Not supported'); - - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfigurationForInitDataType(initDataType)) - .then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - var initData = getInitData(initDataType); - return mediaKeySession.generateRequest(initDataType, initData); - }); - }); - } - - promise_test(function() - { - return checkInitDataType('webm'); - }, 'Clear key support for "webm".'); - - promise_test(function() - { - return checkInitDataType('cenc'); - }, 'Clear key support for "cenc".'); - - promise_test(function() - { - return checkInitDataType('keyids'); - }, 'Clear key support for "keyids".'); - </script> - </body> -</html> - diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-clear-key-invalid-license.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-clear-key-invalid-license.html deleted file mode 100644 index f145dfad7..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-clear-key-invalid-license.html +++ /dev/null @@ -1,47 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Invalid Clear Key License.</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - async_test(function(test) - { - var initDataType; - var initData; - var invalidLicense = new Uint8Array( - [0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77]); - - function handleMessage(event) { - event.target.update(invalidLicense).then(function(event) { - assert_unreached('Error: update() succeeded unexpectedly.'); - test.done(); - }).catch(function(error) { - assert_equals(error.name, 'InvalidAccessError'); - test.done(); - }); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var keySession = mediaKeys.createSession(); - keySession.addEventListener('message', handleMessage, false); - keySession.generateRequest(initDataType, initData); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Invalid Clear Key License.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-clearkey-update-non-ascii-input.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-clearkey-update-non-ascii-input.html deleted file mode 100644 index cf237a7da..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-clearkey-update-non-ascii-input.html +++ /dev/null @@ -1,53 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test Clear Key handling of non-ASCII responses for update().</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // This test passes |response| to update() as a JSON Web Key Set. - // CDMs other than Clear Key won't expect |response| in this format. - - async_test(function(test) - { - var initDataType; - var initData; - var mediaKeySession; - - function processMessage(event) - { - // |jwkSet| includes some non-ASCII characters. - var jwkSet = '{"keys":[{' - + '"kty":"oct\uDC00\uD800",' - + '"k":"MDEyMzQ1Njc4OTAxMjM0NQ",' - + '"kid":"MDEyMzQ1Njc4OTAxMjM0NQ"' - + '\xff\xfe}]'; - mediaKeySession.update(stringToUint8Array(jwkSet)).then(function() { - forceTestFailureFromPromise(test, 'Error: update() succeeded'); - }, function(error) { - assert_equals(error.name, 'InvalidAccessError'); - test.done(); - }); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - waitForEventAndRunStep('message', mediaKeySession, processMessage, test); - return mediaKeySession.generateRequest(initDataType, initData); - }); - }, 'Clear Key update() with non-ASCII response.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-events.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-events.html deleted file mode 100644 index a2a70f169..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-events.html +++ /dev/null @@ -1,65 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Verify v2 events</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // Currently Clear Key only generates aynchronous "message" and - // "keychange" events. - async_test(function(test) - { - var initDataType; - var initData; - var mediaKeySession; - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - - function processMessage(event) - { - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.target, mediaKeySession); - assert_equals(event.type, 'message'); - assert_equals(event.messageType, 'license-request'); - - var keyId = extractSingleKeyIdFromMessage(event.message); - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey))); - - waitForEventAndRunStep('keystatuseschange', mediaKeySession, test.step_func(processKeyStatusesChange), test); - - mediaKeySession.update(jwkSet).catch(test.step_func(function(error) { - forceTestFailureFromPromise(test, error); - })); - } - - function processKeyStatusesChange(event) - { - assert_true(event instanceof Event); - assert_equals(event.target, mediaKeySession); - assert_equals(event.type, 'keystatuseschange'); - test.done(); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(test.step_func(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - waitForEventAndRunStep('message', mediaKeySession, test.step_func(processMessage), test); - return mediaKeySession.generateRequest(initDataType, initData); - })).catch(test.step_func(function(error) { - forceTestFailureFromPromise(test, error); - })); - }, 'Verify v2 events.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-generate-request-disallowed-input.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-generate-request-disallowed-input.html deleted file mode 100644 index 53e5c95b7..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-generate-request-disallowed-input.html +++ /dev/null @@ -1,107 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test handling of invalid initData for generateRequest().</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // Create a session and call generateRequest() with |initDataType| - // and |initData|. generateRequest() should fail with an - // InvalidAccessError. Returns a promise that resolves successfully - // if the error happened, rejects otherwise. - function test_session(initDataType, initData) - { - return isInitDataTypeSupported(initDataType).then(function(result) { - // If |initDataType| is not supported, simply succeed. - if (!result) - return Promise.resolve('Not supported'); - - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfigurationForInitDataType(initDataType)).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.generateRequest(initDataType, initData); - }).then(function() { - assert_unreached('generateRequest() succeeded'); - }, function(error) { - assert_equals(error.name, 'InvalidAccessError'); - return Promise.resolve('success'); - }); - }) - } - - promise_test(function() - { - var initData = new Uint8Array(70000); - return test_session('webm', initData); - }, 'generateRequest() with webm initData longer than 64Kb characters.'); - - promise_test(function() - { - var initData = new Uint8Array(70000); - return test_session('cenc', initData); - }, 'generateRequest() with cenc initData longer than 64Kb characters.'); - - promise_test(function() - { - var initData = new Uint8Array(70000); - return test_session('keyids', initData); - }, 'generateRequest() with keyids initData longer than 64Kb characters.'); - - promise_test(function() - { - // Invalid 'pssh' box as the size specified is larger than what - // is provided. - var initData = new Uint8Array([ - 0x00, 0x00, 0xff, 0xff, // size = huge - 0x70, 0x73, 0x73, 0x68, // 'pssh' - 0x00, // version = 0 - 0x00, 0x00, 0x00, // flags - 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID - 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, - 0x00, 0x00, 0x00, 0x00 // datasize - ]); - return test_session('cenc', initData); - }, 'generateRequest() with invalid pssh box size.'); - - promise_test(function() - { - // Invalid data as type = 'psss'. - var initData = new Uint8Array([ - 0x00, 0x00, 0x00, 0x20, // size = 32 - 0x70, 0x73, 0x73, 0x73, // 'psss' - 0x00, // version = 0 - 0x00, 0x00, 0x00, // flags - 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID - 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, - 0x00, 0x00, 0x00, 0x00 // datasize - ]); - return test_session('cenc', initData); - }, 'generateRequest() with non pssh data.'); - - promise_test(function() - { - // Valid key ID size must be at least 1 character for keyids. - var keyId = new Uint8Array(0); - var initData = stringToUint8Array(createKeyIDs(keyId)); - return test_session('keyids', initData); - }, 'generateRequest() with too short key ID.'); - - promise_test(function() - { - // Valid key ID size must be less than 512 characters for keyids. - var keyId = new Uint8Array(600); - var initData = stringToUint8Array(createKeyIDs(keyId)); - return test_session('keyids', initData); - }, 'generateRequest() with too long key ID.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses-multiple-sessions.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses-multiple-sessions.html deleted file mode 100644 index 3ee4e8c54..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses-multiple-sessions.html +++ /dev/null @@ -1,121 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Verify MediaKeySession.keyStatuses with multiple sessions</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - async_test(function(test) - { - var mediaKeySession1; - var mediaKeySession2; - var initDataType; - var initData; - - // Even though key ids are uint8, using printable values so that - // they can be verified easily. - var key1 = stringToUint8Array('123'); - var key2 = stringToUint8Array('4567890'); - var rawKey1 = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - var rawKey2 = new Uint8Array([0x3c, 0xae, 0xe4, 0xfc, 0x2a, 0x12, 0xef, 0x68, - 0x7b, 0xd2, 0x14, 0x68, 0xf1, 0x62, 0xdd, 0xeb]); - - function processMessage1(event) - { - // This should only be called for session1. - assert_equals(event.target, mediaKeySession1); - - // No keys added yet. - verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] }); - - // Add key1 to session1. - var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1))); - mediaKeySession1.update(jwkSet).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function processKeyStatusesChange1(event) - { - // This should only be called for session1. - assert_equals(event.target, mediaKeySession1); - - // Check that keyStatuses contains the expected key1 only. - dumpKeyStatuses(mediaKeySession1.keyStatuses); - verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] }); - - // Now trigger a message event on session2. - mediaKeySession2.generateRequest(initDataType, initData).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function processMessage2(event) - { - // This should only be called for session2. - assert_equals(event.target, mediaKeySession2); - - // session2 has no keys added yet. - verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [], unexpected: [key1, key2] }); - - // session1 should still have 1 key. - verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] }); - - // Add key2 to session2. - var jwkSet = stringToUint8Array(createJWKSet(createJWK(key2, rawKey2))); - mediaKeySession2.update(jwkSet).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function processKeyStatusesChange2(event) - { - // This should only be called for session2. - assert_equals(event.target, mediaKeySession2); - - // Check that keyStatuses contains the expected key2 only. - dumpKeyStatuses(mediaKeySession2.keyStatuses); - verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [key2], unexpected: [key1] }); - - // session1 should still have 1 key. - verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [key1], unexpected: [key2] }); - - test.done(); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession1 = mediaKeys.createSession(); - mediaKeySession2 = mediaKeys.createSession(); - - // There should be no keys defined on either session. - verifyKeyStatuses(mediaKeySession1.keyStatuses, { expected: [], unexpected: [key1, key2] }); - verifyKeyStatuses(mediaKeySession2.keyStatuses, { expected: [], unexpected: [key1, key2] }); - - // Bind all the event handlers now. - waitForEventAndRunStep('message', mediaKeySession1, processMessage1, test); - waitForEventAndRunStep('message', mediaKeySession2, processMessage2, test); - waitForEventAndRunStep('keystatuseschange', mediaKeySession1, processKeyStatusesChange1, test); - waitForEventAndRunStep('keystatuseschange', mediaKeySession2, processKeyStatusesChange2, test); - - // Generate a request on session1. - return mediaKeySession1.generateRequest(initDataType, initData); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Verify MediaKeySession.keyStatuses with multiple sessions.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses-multiple-updates.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses-multiple-updates.html deleted file mode 100644 index 809045d99..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses-multiple-updates.html +++ /dev/null @@ -1,87 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Verify MediaKeySession.keyStatuses with multiple updates</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - async_test(function(test) - { - var initDataType; - var initData; - var mediaKeySession; - var firstEvent; - - // Even though key ids are uint8, using printable values so that - // they can be verified easily. - var key1 = stringToUint8Array('123'); - var key2 = stringToUint8Array('4567890'); - var rawKey1 = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - var rawKey2 = new Uint8Array([0x3c, 0xae, 0xe4, 0xfc, 0x2a, 0x12, 0xef, 0x68, - 0x7b, 0xd2, 0x14, 0x68, 0xf1, 0x62, 0xdd, 0xeb]); - - function processMessage(event) - { - // No keys added yet. - verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [], unexpected: [key1, key2] }); - - // Add key1 to the session. - firstEvent = true; - var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1))); - mediaKeySession.update(jwkSet).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function processKeyStatusesChange(event) - { - if (firstEvent) { - // Verify that the session only contains key1. - dumpKeyStatuses(mediaKeySession.keyStatuses); - verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [key1], unexpected: [key2] }); - - // Now add key2 to the session. - firstEvent = false; - var jwkSet = stringToUint8Array(createJWKSet(createJWK(key2, rawKey2))); - mediaKeySession.update(jwkSet).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } else { - // Verify that the session now contains key1 and key2. - dumpKeyStatuses(mediaKeySession.keyStatuses); - verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [key1, key2] }); - - test.done(); - } - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - - // There should be no keys defined yet. - assert_equals(mediaKeySession.keyStatuses.size, 0); - - waitForEventAndRunStep('message', mediaKeySession, processMessage, test); - waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test); - - return mediaKeySession.generateRequest(initDataType, initData); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Verify MediaKeySession.keyStatuses with multiple updates.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses.html deleted file mode 100644 index 043bc1322..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-keystatuses.html +++ /dev/null @@ -1,174 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Verify MediaKeySession.keyStatuses</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - async_test(function(test) - { - var mediaKeySession; - var initDataType; - var initData; - var closed = false; - - // Even though key ids are uint8, using printable values so that - // they can be verified easily. - var key1String = '123'; - var key2String = '4567890'; - var key1 = stringToUint8Array(key1String); - var key2 = stringToUint8Array(key2String); - var rawKey1 = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - var rawKey2 = new Uint8Array([0x3c, 0xae, 0xe4, 0xfc, 0x2a, 0x12, 0xef, 0x68, - 0x7b, 0xd2, 0x14, 0x68, 0xf1, 0x62, 0xdd, 0xeb]); - - function processMessage(event) - { - // No keys added yet. - assert_equals(mediaKeySession.keyStatuses.size, 0); - - waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test); - - var jwkSet = stringToUint8Array(createJWKSet(createJWK(key1, rawKey1), createJWK(key2, rawKey2))); - mediaKeySession.update(jwkSet).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function checkKeyStatusFor2Keys() - { - // Two keys added, so both should show up in |keyStatuses|. - assert_equals(mediaKeySession.keyStatuses.size, 2); - dumpKeyStatuses(mediaKeySession.keyStatuses); - - // Check |keyStatuses| for 2 entries. - var result = []; - for (let [keyId, status] of mediaKeySession.keyStatuses) { - result.push({ key: arrayBufferAsString(keyId), value: status }); - } - assert_object_equals(result, - [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}], - 'keyStatuses fails'); - - // |keyStatuses| must contain both keys. - result = []; - for (var key of mediaKeySession.keyStatuses.keys()) { - result.push(arrayBufferAsString(key)); - } - assert_array_equals(result, - [key1String, key2String], - 'keyStatuses.keys() fails'); - - // Both values in |mediaKeySession| should be 'usable'. - result = []; - for (var value of mediaKeySession.keyStatuses.values()) { - result.push(value); - } - assert_array_equals(result, - ['usable', 'usable'], - 'keyStatuses.values() fails'); - - // Check |keyStatuses.entries()|. - result = []; - for (var entry of mediaKeySession.keyStatuses.entries()) { - result.push({ key: arrayBufferAsString(entry[0]), value: entry[1] }); - } - assert_object_equals(result, - [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}], - 'keyStatuses.entries() fails'); - - // forEach() should return both entries. - result = []; - mediaKeySession.keyStatuses.forEach(function(status, keyId) { - result.push({ key: arrayBufferAsString(keyId), value: status }); - }); - assert_object_equals(result, - [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}], - 'keyStatuses.forEach() fails'); - - // has() and get() should return the expected values. - assert_true(mediaKeySession.keyStatuses.has(key1)); - assert_true(mediaKeySession.keyStatuses.has(key2)); - assert_equals(mediaKeySession.keyStatuses.get(key1), 'usable'); - assert_equals(mediaKeySession.keyStatuses.get(key2), 'usable'); - - // Try some invalid keyIds. - var invalid1 = key1.subarray(0, key1.length - 1); - assert_false(mediaKeySession.keyStatuses.has(invalid1)); - assert_equals(mediaKeySession.keyStatuses.get(invalid1), undefined); - - var invalid2 = key1.subarray(1); - assert_false(mediaKeySession.keyStatuses.has(invalid2)); - assert_equals(mediaKeySession.keyStatuses.get(invalid2), undefined); - - var invalid3 = new Uint8Array(key1); - invalid3[0] += 1; - assert_false(mediaKeySession.keyStatuses.has(invalid3)); - assert_equals(mediaKeySession.keyStatuses.get(invalid3), undefined); - - var invalid4 = new Uint8Array(key1); - invalid4[invalid4.length - 1] -= 1; - assert_false(mediaKeySession.keyStatuses.has(invalid4)); - assert_equals(mediaKeySession.keyStatuses.get(invalid4), undefined); - - var invalid5 = new Uint8Array(key1.length + 1); - invalid5.set(key1, 1); // First element will be 0. - assert_false(mediaKeySession.keyStatuses.has(invalid5)); - assert_equals(mediaKeySession.keyStatuses.get(invalid5), undefined); - - var invalid6 = new Uint8Array(key1.length + 1); - invalid6.set(key1, 0); // Last element will be 0. - assert_false(mediaKeySession.keyStatuses.has(invalid6)); - assert_equals(mediaKeySession.keyStatuses.get(invalid6), undefined); - } - - function processKeyStatusesChange(event) - { - if ( !closed ) - { - // The first keystatuseschange (caused by update()) - // should include both keys. - checkKeyStatusFor2Keys(); - - mediaKeySession.close().catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - closed = true; - } - else - { - // The second keystatuseschange (caused by close()) - // should not have any keys. - assert_equals(mediaKeySession.keyStatuses.size, 0); - test.done(); - } - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - - // There should be no keys defined yet. - assert_equals(mediaKeySession.keyStatuses.size, 0); - - waitForEventAndRunStep('message', mediaKeySession, processMessage, test); - return mediaKeySession.generateRequest(initDataType, initData); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Verify MediaKeySession.keyStatuses.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-not-callable-after-createsession.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-not-callable-after-createsession.html deleted file mode 100644 index 9b92c6905..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-not-callable-after-createsession.html +++ /dev/null @@ -1,67 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test MediaKeySession not callable immediately after CreateSession().</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // After creation, the MediaKeySession object is not - // callable, and we should get a InvalidStateError. - - promise_test(function() - { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - - var arbitraryResponse = new Uint8Array([0x00, 0x11]); - return mediaKeySession.update(arbitraryResponse).then(function(result) { - assert_unreached('update() succeeded unexpectedly.'); - }).catch(function(error) { - assert_equals(error.name, 'InvalidStateError'); - }); - }); - }, 'Update() immediately after CreateSession().'); - - promise_test(function() - { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - - return mediaKeySession.close().then(function(result) { - assert_unreached('close() succeeded unexpectedly.'); - }).catch(function(error) { - assert_equals(error.name, 'InvalidStateError'); - }); - }); - }, 'Close() immediately after CreateSession().'); - - promise_test(function() - { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - - return mediaKeySession.remove().then(function(result) { - assert_unreached('remove() succeeded unexpectedly.'); - }).catch(function(error) { - assert_equals(error.name, 'InvalidStateError'); - }); - }); - }, 'Remove() immediately after CreateSession().'); - </script> - </body> -</html> - diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-onencrypted.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-onencrypted.html deleted file mode 100644 index ad408f0f3..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-onencrypted.html +++ /dev/null @@ -1,44 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>onencrypted</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo" controls></video> - <div id="log"></div> - <script> - var expectedInitData = stringToUint8Array('0123456789012345'); - - // Will get 2 identical events, one for audio, one for video. - var expectedEvents = 2; - - async_test(function(test) - { - var video = document.getElementById('testVideo'); - var content = 'webm/test-encrypted.webm'; - - var onEncrypted = function(event) - { - assert_equals(event.target, video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - assert_equals(event.initDataType, 'webm'); - assert_array_equals(new Uint8Array(event.initData), expectedInitData); - - if (--expectedEvents == 0) - test.done(); - }; - - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - video.src = content; - }, 'encrypted fired on encrypted media file.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-encrypted-and-clear-sources.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-encrypted-and-clear-sources.html deleted file mode 100644 index 495ba4188..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-encrypted-and-clear-sources.html +++ /dev/null @@ -1,130 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Multiple playbacks alternating between encrypted and clear sources.</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - async_test(function(test) - { - var video = document.getElementById('testVideo'); - var isUpdatePromiseResolved = false; - var encryptedEventCount = 0; - var playbackCount = 0; - - // Content to be played. These files must be the same format. - var encryptedContent = 'webm/test-encrypted.webm'; - var unencryptedContent = 'webm/test.webm'; - - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - - function onEncrypted(event) - { - assert_equals(event.target, video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - // The same decryption key is used by both the audio and - // the video streams so only create a session once. To - // avoid issues when comparing the expected.txt file - // (which logs the events in the order they occur), create - // the session on the second event. This also ensures we - // see both events. - if (++encryptedEventCount != 2) - return; - - assert_false(video.mediaKeys === null, "video.mediaKeys is null."); - var mediaKeySession = video.mediaKeys.createSession(); - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - mediaKeySession.generateRequest(event.initDataType, event.initData).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onMessage(event) - { - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - assert_equals(event.messageType, 'license-request'); - - var keyId = extractSingleKeyIdFromMessage(event.message); - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey))); - event.target.update(jwkSet).then(function(result) { - isUpdatePromiseResolved = true; - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onPlaying(event) - { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - video.addEventListener('timeupdate', onTimeUpdate, true); - } - - function onTimeUpdate(event) - { - if (event.target.currentTime < 0.2 || !isUpdatePromiseResolved) - return; - - video.removeEventListener('timeupdate', onTimeUpdate, true); - - if (playbackCount > 2) { - test.done(); - return; - } - - playbackCount++; - - resetSrc().then(function(){ - startPlayback(); - }); - } - - function resetSrc() { - encryptedEventCount = 0; - video.removeAttribute('src'); - video.load(); - return video.setMediaKeys(null); - } - - function startPlayback() { - // Alternate between encrypted and unencrypted files. - if (playbackCount % 2) { - // Unencrypted files don't require MediaKeys. - video.src = unencryptedContent; - video.play(); - return; - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(encryptedContent)).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - return video.setMediaKeys(mediaKeys); - }).then(function(result) { - video.src = encryptedContent; - assert_false(video.mediaKeys === null, "video.mediaKeys is null."); - video.play(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - waitForEventAndRunStep('playing', video, onPlaying, test); - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - startPlayback(); - }, 'Multiple playbacks alternating between encrypted and clear sources.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-multiple-sessions.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-multiple-sessions.html deleted file mode 100644 index 8bf94e13c..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-multiple-sessions.html +++ /dev/null @@ -1,143 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Clear Key Playback with Multiple Sessions</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - async_test(function(test) - { - var video = document.getElementById('testVideo'); - var content = 'webm/test-encrypted-different-av-keys.webm'; - var audioMediaKeySession = null; - var videoMediaKeySession = null; - var audioInitDataType = null; - var videoInitDataType = null; - var audioInitData = null; - var videoInitData = null; - var audioKeyProvided = false; - var videoKeyProvided = false; - - // The 2 streams use different key ids and different keys. - var audioKeyId = '1234567890123456'; - var audioKey = new Uint8Array([0x30, 0x30, 0x62, 0xF1, 0x68, 0x14, 0xD2, 0x7B, - 0x68, 0xEF, 0x12, 0x2A, 0xFC, 0xE4, 0xAE, 0x0A]); - var videoKeyId = '0123456789012345'; - var videoKey = new Uint8Array([0x7A, 0x7A, 0x62, 0xF1, 0x68, 0x14, 0xD2, 0x7B, - 0x68, 0xEF, 0x12, 0x2A, 0xFC, 0xE4, 0xAE, 0x0A]); - - function onEncrypted(event) - { - var keyId = String.fromCharCode.apply(null, new Uint8Array(event.initData)); - - // To avoid issues when comparing the expected.txt file - // (which logs the events in the order they occur), save - // the initData and make the calls to generateRequest() - // only after both "onencrypted" events are received. - // This prevents a "message" event from occurring before - // both "onencrypted" events are received. - var mediaKeySession = video.mediaKeys.createSession(); - if (keyId == videoKeyId) { - assert_equals(videoMediaKeySession, null); - videoMediaKeySession = mediaKeySession; - videoInitDataType = event.initDataType; - videoInitData = event.initData; - // Return if audio "onencrypted" event not yet received. - if (audioMediaKeySession == null) - return; - } else { - assert_equals(keyId, audioKeyId); - assert_equals(audioMediaKeySession, null); - audioMediaKeySession = mediaKeySession; - audioInitDataType = event.initDataType; - audioInitData = event.initData; - // Return if video "onencrypted" event not yet received. - if (videoMediaKeySession == null) - return; - } - - // Both sessions have been created. - assert_not_equals(videoMediaKeySession, null); - assert_not_equals(audioMediaKeySession, null); - - var promises = []; - waitForEventAndRunStep('message', videoMediaKeySession, onMessage, test); - promises.push(videoMediaKeySession.generateRequest(videoInitDataType, videoInitData)); - - waitForEventAndRunStep('message', audioMediaKeySession, onMessage, test); - promises.push(audioMediaKeySession.generateRequest(audioInitDataType, audioInitData)); - - Promise.all(promises).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onMessage(event) - { - assert_equals(event.messageType, 'license-request'); - var keyId = extractSingleKeyIdFromMessage(event.message); - if (event.target == videoMediaKeySession) { - assert_equals(String.fromCharCode.apply(null, keyId), videoKeyId); - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, videoKey))); - videoMediaKeySession.update(jwkSet).then(function(result) { - videoKeyProvided = true; - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } else { - assert_equals(event.target, audioMediaKeySession); - assert_equals(String.fromCharCode.apply(null, keyId), audioKeyId); - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, audioKey))); - audioMediaKeySession.update(jwkSet).then(function(result) { - audioKeyProvided = true; - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - } - - function onPlaying(event) - { - // Video should not start playing until both keys have been - // provided. - assert_true(videoKeyProvided); - assert_true(audioKeyProvided); - - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - video.addEventListener('timeupdate', onTimeUpdate, true); - } - - function onTimeUpdate(event) - { - if (event.target.currentTime < 0.2) - return; - - test.done(); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - waitForEventAndRunStep('playing', video, onPlaying, test); - video.src = content; - return video.setMediaKeys(mediaKeys); - }).then(function(result) { - video.play(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Playback using Clear Key key system with multiple sessions.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-after-src.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-after-src.html deleted file mode 100644 index 2a8cac486..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-after-src.html +++ /dev/null @@ -1,96 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Clear Key Playback</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - async_test(function(test) - { - var video = document.getElementById('testVideo'); - var content = 'webm/test-encrypted.webm'; - var isUpdatePromiseResolved = false; - var encryptedEventCount = 0; - - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - - function onEncrypted(event) - { - assert_equals(event.target, video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - // The same decryption key is used by both the audio and - // the video streams so only create a session once. To - // avoid issues when comparing the expected.txt file - // (which logs the events in the order they occur), create - // the session on the second event. This also ensures we - // see both events. - if (++encryptedEventCount != 2) - return; - - var mediaKeySession = video.mediaKeys.createSession(); - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - mediaKeySession.generateRequest(event.initDataType, event.initData).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onMessage(event) - { - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - assert_equals(event.messageType, 'license-request'); - - var keyId = extractSingleKeyIdFromMessage(event.message); - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey))); - event.target.update(jwkSet).then(function(result) { - isUpdatePromiseResolved = true; - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onPlaying(event) - { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - video.addEventListener('timeupdate', onTimeUpdate, true); - } - - function onTimeUpdate(event) - { - if (event.target.currentTime < 0.2 || !isUpdatePromiseResolved) - return; - - test.done(); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - waitForEventAndRunStep('playing', video, onPlaying, test); - - video.src = content; - return video.setMediaKeys(mediaKeys); - }).then(function(result) { - video.play(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Playback using Clear Key key system, calling setMediaKeys() after setting src attribute.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-before-src.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-before-src.html deleted file mode 100644 index 84100570c..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-setmediakeys-before-src.html +++ /dev/null @@ -1,96 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Clear Key Playback</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - async_test(function(test) - { - var video = document.getElementById('testVideo'); - var content = 'webm/test-encrypted.webm'; - var isUpdatePromiseResolved = false; - var encryptedEventCount = 0; - - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - - function onEncrypted(event) - { - assert_equals(event.target, video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - // The same decryption key is used by both the audio and - // the video streams so only create a session once. To - // avoid issues when comparing the expected.txt file - // (which logs the events in the order they occur), create - // the session on the second event. This also ensures we - // see both events. - if (++encryptedEventCount != 2) - return; - - var mediaKeySession = video.mediaKeys.createSession(); - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - mediaKeySession.generateRequest(event.initDataType, event.initData).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onMessage(event) - { - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - assert_equals(event.messageType, 'license-request'); - - var keyId = extractSingleKeyIdFromMessage(event.message); - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey))); - event.target.update(jwkSet).then(function(result) { - isUpdatePromiseResolved = true; - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - } - - function onPlaying(event) - { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - video.addEventListener('timeupdate', onTimeUpdate, true); - } - - function onTimeUpdate(event) - { - if (event.target.currentTime < 0.2 || !isUpdatePromiseResolved) - return; - - test.done(); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - waitForEventAndRunStep('playing', video, onPlaying, test); - - return video.setMediaKeys(mediaKeys); - }).then(function(result) { - video.src = content; - video.play(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Playback using Clear Key key system, calling setMediaKeys() before setting src attribute.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-two-videos.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-two-videos.html deleted file mode 100644 index 0bdc7757b..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-playback-two-videos.html +++ /dev/null @@ -1,90 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Clear Key Play Two Videos At Same Time</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <video id="secondVideo"></video> - <div id="log"></div> - <script> - // As this code doesn't wait for the 'message' event to simplify - // the code, specify the key ID and key used by the encrypted - // content. - var keyId = stringToUint8Array('0123456789012345'); - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - var content = 'webm/test-encrypted.webm'; - - promise_test(function(test) - { - var promises = [ - play_video_as_promise(document.getElementById('testVideo'), content), - play_video_as_promise(document.getElementById('secondVideo'), content) - ]; - return Promise.all(promises); - }, 'Play two videos at the same time.'); - - function play_video_as_promise(video, content) - { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - return video.setMediaKeys(mediaKeys); - }).then(function(result) { - video.src = content; - video.play(); - return wait_for_encrypted_message(video); - }).then(function(result) { - return wait_for_timeupdate_message(video); - }); - }; - - function wait_for_encrypted_message(video) - { - var encryptedEventCount = 0; - return new Promise(function(resolve) { - video.addEventListener('encrypted', function listener(e) { - // The same decryption key is used by both the audio - // and the video streams so only create a session once. - // Create the session on the second event. This also - // ensures we see both events. - if (++encryptedEventCount != 2) - return; - video.removeEventListener('encrypted', listener); - - var mediaKeySession = video.mediaKeys.createSession(); - mediaKeySession.generateRequest(e.initDataType, e.initData).then(function(result) { - // Don't bother waiting for the 'message' event. - // Just call update() since we know the keyId - // needed. - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey))); - return mediaKeySession.update(jwkSet); - }).then(function(result) { - resolve(result); - }); - }); - }); - }; - - function wait_for_timeupdate_message(video) - { - return new Promise(function(resolve) { - video.addEventListener('timeupdate', function listener(e) { - if (e.target.currentTime < 0.2) - return; - video.removeEventListener('timeupdate', listener); - resolve(e); - }); - }); - }; - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-requestmediakeysystemaccess.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-requestmediakeysystemaccess.html deleted file mode 100644 index 456f37f57..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-requestmediakeysystemaccess.html +++ /dev/null @@ -1,322 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test navigator.requestMediaKeySystemAccess()</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - function expect_error(keySystem, configurations, expectedError, testName) { - promise_test(function(test) { - return navigator.requestMediaKeySystemAccess(keySystem, configurations).then(function(a) { - assert_unreached('Unexpected requestMediaKeySystemAccess() success.'); - }, function(e) { - assert_equals(e.name, expectedError); - }); - }, testName); - } - - function assert_subset(actual, expected, path) { - if (typeof expected == 'string') { - assert_equals(actual, expected, path); - } else { - if (expected.hasOwnProperty('length')) - assert_equals(actual.length, expected.length, path + '.length'); - for (property in expected) - assert_subset(actual[property], expected[property], path + '.' + property); - } - } - - function expect_config(keySystem, configurations, expectedConfiguration, testName) { - promise_test(function(test) { - return navigator.requestMediaKeySystemAccess(keySystem, configurations).then(function(a) { - assert_subset(a.getConfiguration(), expectedConfiguration, 'getConfiguration()'); - }); - }, testName); - } - - // Tests for keySystem. - expect_error('', [{}], 'InvalidAccessError', 'Empty keySystem'); - expect_error('com.example.unsupported', [{}], 'NotSupportedError', 'Unsupported keySystem'); - expect_error('org.w3.clearkey.', [{}], 'NotSupportedError', 'keySystem ends with "."'); - expect_error('org.w3.ClearKey', [{}], 'NotSupportedError', 'Capitalized keySystem'); - expect_error('org.w3.clearke\u028F', [{}], 'NotSupportedError', 'Non-ASCII keySystem'); - - // Parent of Clear Key not supported. - expect_error('org', [{}], 'NotSupportedError', 'Parent of Clear Key (org)'); - expect_error('org.', [{}], 'NotSupportedError', 'Parent of Clear Key (org.)'); - expect_error('org.w3', [{}], 'NotSupportedError', 'Parent of Clear Key (org.w3)'); - expect_error('org.w3.', [{}], 'NotSupportedError', 'Parent of Clear Key (org.w3.)'); - - // Child of Clear Key not supported. - expect_error('org.w3.clearkey.foo', [{}], 'NotSupportedError', 'Child of Clear Key'); - - // Prefixed Clear Key not supported. - expect_error('webkit-org.w3.clearkey', [{}], 'NotSupportedError', 'Prefixed Clear Key'); - - // Incomplete names. - expect_error('org.w3.learkey', [{}], 'NotSupportedError', 'Incomplete name org.w3.learkey'); - expect_error('org.w3.clearke', [{}], 'NotSupportedError', 'Incomplete name org.w3.clearke'); - expect_error('or.w3.clearkey', [{}], 'NotSupportedError', 'Incomplete name or.w3.clearkey'); - - // Spaces in key system name not supported. - expect_error(' org.w3.clearkey', [{}], 'NotSupportedError', 'Leading space in key system name'); - expect_error('org.w3. clearkey', [{}], 'NotSupportedError', 'Extra space in key system name'); - expect_error('org.w3.clearkey ', [{}], 'NotSupportedError', 'Trailing space in key system name'); - - // Extra dots in key systems names not supported. - expect_error('.org.w3.clearkey', [{}], 'NotSupportedError', 'Leading dot in key systems name'); - expect_error('org.w3.clearkey.', [{}], 'NotSupportedError', 'Trailing dot in key systems name'); - expect_error('org.w3..clearkey', [{}], 'NotSupportedError', 'Double dot in key systems name'); - expect_error('org.w3.clear.key', [{}], 'NotSupportedError', 'Extra dot in key systems name'); - - // Key system name is case sensitive. - expect_error('org.w3.Clearkey', [{}], 'NotSupportedError', 'Key system name is case sensitive'); - expect_error('Org.w3.clearkey', [{}], 'NotSupportedError', 'Key system name is case sensitive'); - - // Tests for trivial configurations. - expect_error('org.w3.clearkey', [], 'InvalidAccessError', 'Empty supportedConfigurations'); - expect_config('org.w3.clearkey', [{}], {}, 'Empty configuration'); - - // Various combinations of supportedConfigurations. - // TODO(jrummell): Specifying contentType without codecs is - // deprecated, so this test should fail. http://crbug.com/605661. - expect_config('org.w3.clearkey', [{ - initDataTypes: ['webm'], - audioCapabilities: [{contentType: 'audio/webm'}], - videoCapabilities: [{contentType: 'video/webm'}], - }], { - initDataTypes: ['webm'], - audioCapabilities: [{contentType: 'audio/webm'}], - videoCapabilities: [{contentType: 'video/webm'}], - }, 'Basic supported configuration'); - - // TODO(jrummell): Specifying contentType without codecs is - // deprecated, so this test should fail. http://crbug.com/605661. - expect_config('org.w3.clearkey', [{ - initDataTypes: ['fakeidt', 'webm'], - audioCapabilities: [{contentType: 'audio/fake'}, {contentType: 'audio/webm'}], - videoCapabilities: [{contentType: 'video/fake'}, {contentType: 'video/webm'}], - }], { - initDataTypes: ['webm'], - audioCapabilities: [{contentType: 'audio/webm'}], - videoCapabilities: [{contentType: 'video/webm'}], - }, 'Partially supported configuration'); - - expect_config('org.w3.clearkey', [{ - audioCapabilities: [{contentType: 'audio/webm; codecs=vorbis'}], - }], { - audioCapabilities: [{contentType: 'audio/webm; codecs=vorbis'}], - }, 'Supported audio codec'); - - expect_config('org.w3.clearkey', [{ - audioCapabilities: [{contentType: 'audio/webm; codecs="vorbis"'}], - }], { - audioCapabilities: [{contentType: 'audio/webm; codecs="vorbis"'}], - }, 'ContentType formatting must be preserved'); - - expect_error('org.w3.clearkey', [{ - audioCapabilities: [{contentType: 'audio/webm; codecs=fake'}], - }], 'NotSupportedError', 'Unsupported audio codec'); - - expect_error('org.w3.clearkey', [{ - audioCapabilities: [ - {contentType: 'audio/webm; codecs=mp4a'}, - {contentType: 'audio/webm; codecs=mp4a.40.2'} - ], - }], 'NotSupportedError', 'Mismatched audio container/codec'); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs=vp8'}], - }], { - videoCapabilities: [{contentType: 'video/webm; codecs=vp8'}], - }, 'Supported video codec'); - - expect_error('org.w3.clearkey', [{ - audioCapabilities: [{contentType: 'video/webm; codecs=vp8'}], - }], 'NotSupportedError', 'Video codec specified in audio field'); - - expect_error('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'audio/webm; codecs=vorbis'}], - }], 'NotSupportedError', 'Audio codec specified in video field'); - - expect_error('org.w3.clearkey', [{ - audioCapabilities: [{contentType: 'video/webm; codecs=fake'}], - }], 'NotSupportedError', 'Unsupported video codec'); - - expect_error('org.w3.clearkey', [{ - audioCapabilities: [ - {contentType: 'audio/webm; codecs=avc1'}, - {contentType: 'audio/webm; codecs=avc1.42e01e'} - ], - }], 'NotSupportedError', 'Mismatched video container/codec'); - - expect_config('org.w3.clearkey', [ - {initDataTypes: ['fakeidt']}, - {initDataTypes: ['webm']} - ], {initDataTypes: ['webm']}, 'Two configurations, one supported'); - - expect_config('org.w3.clearkey', [ - {initDataTypes: ['webm']}, - {} - ], {initDataTypes: ['webm']}, 'Two configurations, both supported'); - - // Audio MIME type does not support video codecs. - expect_error('org.w3.clearkey', [{ - audioCapabilities: [ - {contentType: 'audio/webm; codecs="vp8,vorbis"'}, - {contentType: 'audio/webm; codecs="vorbis, vp8"'}, - {contentType: 'audio/webm; codecs="vp8"'} - ], - }], 'NotSupportedError', 'Audio MIME type does not support video codecs.'); - - // Video MIME type does not support audio codecs. - expect_error('org.w3.clearkey', [{ - videoCapabilities: [ - {contentType: 'video/webm; codecs="vp8,vorbis"'}, - {contentType: 'video/webm; codecs="vorbis, vp8"'}, - {contentType: 'video/webm; codecs="vorbis"'} - ], - }], 'NotSupportedError', 'Video MIME type does not support audio codecs.'); - - // WebM does not support AVC1/AAC. - expect_error('org.w3.clearkey', [{ - audioCapabilities: [ - {contentType: 'audio/webm; codecs="aac"'}, - {contentType: 'audio/webm; codecs="avc1"'}, - {contentType: 'audio/webm; codecs="vp8,aac"'} - ], - }], 'NotSupportedError', 'WebM audio does not support AVC1/AAC.'); - - expect_error('org.w3.clearkey', [{ - videoCapabilities: [ - {contentType: 'video/webm; codecs="aac"'}, - {contentType: 'video/webm; codecs="avc1"'}, - {contentType: 'video/webm; codecs="vp8,aac"'} - ], - }], 'NotSupportedError', 'WebM video does not support AVC1/AAC.'); - - // Extra space is allowed in contentType. - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: ' video/webm; codecs="vp8"'}], - }], { - videoCapabilities: [{contentType: ' video/webm; codecs="vp8"'}], - }, 'Leading space in contentType'); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm ; codecs="vp8"'}], - }], { - videoCapabilities: [{contentType: 'video/webm ; codecs="vp8"'}], - }, 'Space before ; in contentType'); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs="vp8"'}], - }], { - videoCapabilities: [{contentType: 'video/webm; codecs="vp8"'}], - }, 'Extra spaces after ; in contentType'); - - // TODO(jrummell): contentType should allow white space at the - // end of the string. http://crbug.com/487392 -// expect_config('org.w3.clearkey', [{ -// videoCapabilities: [{contentType: 'video/webm; codecs="vp8" '}], -// }], { -// videoCapabilities: [{contentType: 'video/webm; codecs="vp8" '}], -// }, 'Trailing space in contentType'); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs=" vp8"'}], - }], { - videoCapabilities: [{contentType: 'video/webm; codecs=" vp8"'}], - }, 'Space at start of codecs parameter'); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs="vp8 "'}], - }], { - videoCapabilities: [{contentType: 'video/webm; codecs="vp8 "'}], - }, 'Space at end of codecs parameter'); - - // contentType is not case sensitive (except the codec names). - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'Video/webm; codecs="vp8"'}], - }], { - videoCapabilities: [{contentType: 'Video/webm; codecs="vp8"'}], - }, 'Video/webm'); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/Webm; codecs="vp8"'}], - }], { - videoCapabilities: [{contentType: 'video/Webm; codecs="vp8"'}], - }, 'video/Webm'); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; Codecs="vp8"'}], - }], { - videoCapabilities: [{contentType: 'video/webm; Codecs="vp8"'}], - }, 'Codecs='); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'VIDEO/WEBM; codecs="vp8"'}], - }], { - videoCapabilities: [{contentType: 'VIDEO/WEBM; codecs="vp8"'}], - }, 'VIDEO/WEBM'); - - expect_config('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; CODECS="vp8"'}], - }], { - videoCapabilities: [{contentType: 'video/webm; CODECS="vp8"'}], - }, 'CODECS='); - - // Unrecognized attributes are not allowed. - // TODO(jrummell): Unrecognized attributes are ignored currently. - // http://crbug.com/449690 -// expect_error('org.w3.clearkey', [{ -// videoCapabilities: [{contentType: 'video/webm; foo="bar"'}], -// }], 'NotSupportedError', 'Unrecognized foo'); -// expect_error('org.w3.clearkey', [{ -// videoCapabilities: [{contentType: 'video/webm; foo="bar"; codecs="vp8"'}], -// }], 'NotSupportedError', 'Unrecognized foo with codecs'); - - // Invalid contentTypes. - expect_error('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'fake'}], - }], 'NotSupportedError', 'contentType fake'); - - expect_error('org.w3.clearkey', [{ - audioCapabilities: [{contentType: 'audio/fake'}], - }], 'NotSupportedError', 'contentType audio/fake'); - - expect_error('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/fake'}], - }], 'NotSupportedError', 'contentType video/fake'); - - // The actual codec names are case sensitive. - expect_error('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs="Vp8"'}], - }], 'NotSupportedError', 'codecs Vp8'); - - expect_error('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs="VP8"'}], - }], 'NotSupportedError', 'codecs VP8'); - - // Extra comma is not allowed in codecs. - expect_error('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs=",vp8"'}], - }], 'NotSupportedError', 'Leading , in codecs'); - - expect_error('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs="vp8,"'}], - }], 'NotSupportedError', 'Trailing , in codecs'); - - expect_error('org.w3.clearkey', [{ - videoCapabilities: [{contentType: 'video/webm; codecs=",vp8,"'}], - }], 'NotSupportedError', 'Leading and trailing , in codecs'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-reset-src-after-setmediakeys.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-reset-src-after-setmediakeys.html deleted file mode 100644 index 15c91a001..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-reset-src-after-setmediakeys.html +++ /dev/null @@ -1,67 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Reset src after setMediaKeys()</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - async_test(function(test) - { - var mediaKeys; - var encryptedEventIndex = 0; - var video = document.getElementById('testVideo'); - assert_not_equals(video, null); - - // Content to be played. These files must be the same format. - var content = 'webm/test-encrypted.webm'; - var alternateContent = 'webm/test-encrypted-different-av-keys.webm'; - - var onEncrypted = function(event) - { - ++encryptedEventIndex; - assert_not_equals(video.mediaKeys, null); - assert_true(video.mediaKeys === mediaKeys); - - // This event is fired once for the audio stream and once - // for the video stream each time .src is set. - if (encryptedEventIndex == 2) { - // Finished first video; set src to a different video. - video.src = alternateContent; - } else if (encryptedEventIndex == 4) { - // Finished second video. - test.done(); - } - }; - - // Create a MediaKeys object and assign it to video. - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)) - .then(function(access) { - assert_equals(access.keySystem, 'org.w3.clearkey'); - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - assert_not_equals(mediaKeys, null); - return video.setMediaKeys(mediaKeys); - }).then(function(result) { - assert_not_equals(video.mediaKeys, null, 'not set initially'); - assert_true(video.mediaKeys === mediaKeys); - - // Set src to a video. - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - video.src = content; - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Reset src after setMediaKeys().'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-session-closed-event.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-session-closed-event.html deleted file mode 100644 index 577047a25..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-session-closed-event.html +++ /dev/null @@ -1,51 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test MediaKeySession closed event</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - async_test(function(test) - { - var initDataType; - var initData; - var mediaKeySession; - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.generateRequest(initDataType, initData); - }).then(function() { - // Wait for the session to be closed. - mediaKeySession.closed.then(function(result) { - assert_equals(result, undefined); - // Now that the session is closed, verify that the - // closed attribute immediately returns a fulfilled - // promise. - return mediaKeySession.closed; - }).then(function(result) { - assert_equals(result, undefined); - test.done(); - }); - - // release() should result in the closed promise being - // fulfilled. - return mediaKeySession.close(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Test MediaKeySession closed event.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-again-after-playback.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-again-after-playback.html deleted file mode 100644 index 29f53b31d..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-again-after-playback.html +++ /dev/null @@ -1,48 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>setMediaKeys() again after playback</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - promise_test(function(test) - { - var video = document.getElementById('testVideo'); - var keyId = stringToUint8Array('0123456789012345'); - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - var content = 'webm/test-encrypted.webm'; - var duration = 0.2; - - return createMediaKeys(keyId, rawKey).then(function(mediaKeys) { - return video.setMediaKeys(mediaKeys); - }).then(function() { - return playVideoAndWaitForTimeupdate(video, content, duration); - }).then(function() { - // Now create a second MediaKeys. - return createMediaKeys(keyId, rawKey); - }).then(function(mediaKeys) { - // video is currently playing, so should not be able to - // change MediaKeys now. - assert_false(video.ended); - return video.setMediaKeys(mediaKeys); - }).then(function() { - assert_unreached('Able to change MediaKeys while playing.'); - }, function(error) { - // Error expected. - assert_equals(error.name, 'InvalidStateError'); - return Promise.resolve('success'); - }); - }, 'setMediaKeys() again after playback'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-again-after-resetting-src.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-again-after-resetting-src.html deleted file mode 100644 index 8f6891b79..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-again-after-resetting-src.html +++ /dev/null @@ -1,44 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>setMediaKeys() again after resetting src</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - promise_test(function(test) - { - var video = document.getElementById('testVideo'); - var keyId = stringToUint8Array('0123456789012345'); - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - var content = 'webm/test-encrypted.webm'; - var duration = 0.2; - - return createMediaKeys(keyId, rawKey).then(function(mediaKeys) { - return video.setMediaKeys(mediaKeys); - }).then(function() { - return playVideoAndWaitForTimeupdate(video, content, duration); - }).then(function() { - // Now create a second MediaKeys and repeat. - return createMediaKeys(keyId, rawKey); - }).then(function(mediaKeys) { - // MediaKeys is use by previous video, so clear .src - // so that MediaKeys can be assigned. - video.src = ''; - return video.setMediaKeys(mediaKeys); - }).then(function() { - return playVideoAndWaitForTimeupdate(video, content, duration); - }); - }, 'setMediaKeys() again after resetting src'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-at-same-time.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-at-same-time.html deleted file mode 100644 index 01fd7b194..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-at-same-time.html +++ /dev/null @@ -1,109 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Set MediaKeys multiple times in parallel</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="video"></video> - <div id="log"></div> - <script> - // Wait for an 'encrypted' event as a promise. - function wait_for_encrypted_event(video) - { - return new Promise(function(resolve) { - video.addEventListener('encrypted', function listener(e) { - video.removeEventListener('encrypted', listener); - resolve(); - }); - }); - }; - - // Return a promise that calls setMediaKeys() and returns 1 if - // resolved, 0 if rejected. If |must_succeed| is true, then - // setMediaKeys() should not fail. - function setMediaKeys_as_count(video, mediaKeys, must_succeed) - { - return video.setMediaKeys(mediaKeys).then(function() { - return 1; - }, function() { - assert_false(must_succeed); - return 0; - }); - }; - - // Return the sum of the results from |promises|. Each promise - // must return a number. - function count_promise_results(promises) - { - var count = 0; - var result = Promise.resolve(null); - - promises.forEach(function(promise) { - result = result.then(function() { - return promise; - }).then(function(i) { - count += i; - }); - }); - - return result.then(function() { return count; }); - }; - - promise_test(function(test) - { - var video = document.getElementById('video'); - var content = 'webm/test-encrypted.webm'; - var access; - var mediaKeys1; - var mediaKeys2; - var mediaKeys3; - var mediaKeys4; - var mediaKeys5; - - // Start a video now so that it is waiting for MediaKeys - // in order to continue. - video.src = content; - video.play(); - return wait_for_encrypted_event(video).then(function() { - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)); - }).then(function(result) { - access = result; - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys1 = result; - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys2 = result; - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys3 = result; - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys4 = result; - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys5 = result; - // Create 5 calls to setMediaKeys(). The first one must - // succeed, the others are optional. - var p1 = setMediaKeys_as_count(video, mediaKeys1, true); - var p2 = setMediaKeys_as_count(video, mediaKeys2, false); - var p3 = setMediaKeys_as_count(video, mediaKeys3, false); - var p4 = setMediaKeys_as_count(video, mediaKeys4, false); - var p5 = setMediaKeys_as_count(video, mediaKeys5, false); - return count_promise_results([p1, p2, p3, p4, p5]); - }).then(function(count) { - // At least one of the setMediaKeys() calls should have - // succeeded. - assert_greater_than(count, 0); - }); - }, 'Set MediaKeys multiple times in parallel.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html deleted file mode 100644 index 31cc61079..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-multiple-times-with-different-mediakeys.html +++ /dev/null @@ -1,83 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>setMediaKeys() multiple times with different MediaKeys.</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="video"></video> - <div id="log"></div> - <script> - promise_test(function(test) - { - var video = document.getElementById('video'); - var content = 'webm/test-encrypted.webm'; - var keySystemAccess; - var mediaKeys1; - var mediaKeys2; - - assert_equals(video.mediaKeys, null); - - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { - keySystemAccess = access; - // Create a mediaKeys. - return keySystemAccess.createMediaKeys(); - }).then(function(result) { - mediaKeys1 = result; - assert_not_equals(mediaKeys1, null); - // Create a second mediaKeys. - return keySystemAccess.createMediaKeys(); - }).then(function(result) { - mediaKeys2 = result; - assert_not_equals(mediaKeys2, null); - // Set mediaKeys1 on video. - return video.setMediaKeys(mediaKeys1); - }).then(function() { - assert_true(video.mediaKeys === mediaKeys1); - // Set mediaKeys2 on video (switching MediaKeys). - return video.setMediaKeys(mediaKeys2); - }).then(function() { - assert_true(video.mediaKeys === mediaKeys2); - // Clear mediaKeys from video. - return video.setMediaKeys(null); - }).then(function() { - assert_equals(video.mediaKeys, null); - // Set mediaKeys1 on video again. - return video.setMediaKeys(mediaKeys1); - }).then(function() { - assert_true(video.mediaKeys === mediaKeys1); - // Load the media element to create the WebMediaPlayer. - video.src = content; - // Set mediaKeys2 on video (switching MediaKeys) not - // supported after WebMediaPlayer is created. - return video.setMediaKeys(mediaKeys2); - }).then(function() { - assert_unreached('Switching mediaKeys after setting src should have failed.'); - }, function(error) { - assert_true(video.mediaKeys === mediaKeys1); - assert_equals(error.name, 'InvalidStateError'); - assert_not_equals(error.message, ''); - // Return something so the promise resolves properly. - return Promise.resolve(); - }).then(function() { - // Set null mediaKeys on video (clearing MediaKeys) not - // supported after WebMediaPlayer is created. - return video.setMediaKeys(null); - }).then(function() { - assert_unreached('Clearing mediaKeys after setting src should have failed.'); - }, function(error) { - assert_true(video.mediaKeys === mediaKeys1); - assert_equals(error.name, 'InvalidStateError'); - assert_not_equals(error.message, ''); - return Promise.resolve(); - }); - }, 'setMediaKeys() multiple times with different MediaKeys.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html deleted file mode 100644 index 64ed315e0..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-multiple-times-with-the-same-mediakeys.html +++ /dev/null @@ -1,50 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>setMediaKeys() multiple times with the same MediaKeys.</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="video"></video> - <div id="log"></div> - <script> - promise_test(function(test) - { - var video = document.getElementById('video'); - var content = 'webm/test-encrypted.webm'; - var mediaKeys; - - assert_equals(video.mediaKeys, null); - - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - assert_not_equals(mediaKeys, null); - // Set mediaKeys on video should work. - return video.setMediaKeys(mediaKeys); - }).then(function() { - assert_true(video.mediaKeys === mediaKeys); - // Set mediaKeys on video again should return a resolved - // promise. - return video.setMediaKeys(mediaKeys); - }).then(function() { - assert_true(video.mediaKeys === mediaKeys); - // Load the media element to create the WebMediaPlayer. - video.src = content; - // Set mediaKeys again on video should still return a - // resolved promise. - return video.setMediaKeys(mediaKeys); - }).then(function() { - assert_true(video.mediaKeys === mediaKeys); - }); - }, 'setMediaKeys() multiple times with the same MediaKeys.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-to-multiple-video-elements.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-to-multiple-video-elements.html deleted file mode 100644 index fb8386e8c..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys-to-multiple-video-elements.html +++ /dev/null @@ -1,50 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>setMediaKeys() on multiple video elements.</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="video1"></video> - <video id="video2"></video> - <div id="log"></div> - <script> - promise_test(function(test) - { - var video1 = document.getElementById('video1'); - var video2 = document.getElementById('video2'); - var mediaKeys; - - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - // Assignment to video1 should work. - return video1.setMediaKeys(mediaKeys); - }).then(function() { - // Assignment to video2 should fail. - return video2.setMediaKeys(mediaKeys); - }).then(function() { - assert_unreached('Second setMediaKeys should have failed.'); - }, function(error) { - assert_equals(error.name, 'QuotaExceededError'); - assert_not_equals(error.message, ''); - // Return something so the promise resolves properly. - return Promise.resolve(); - }).then(function() { - // Now clear it from video1. - return video1.setMediaKeys(null); - }).then(function() { - // Should be assignable to video2. - return video2.setMediaKeys(mediaKeys); - }); - }, 'setMediaKeys() on multiple video elements.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys.html deleted file mode 100644 index 96b0fed97..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-setmediakeys.html +++ /dev/null @@ -1,59 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>setMediaKeys</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="video"></video> - <div id="log"></div> - <script> - async_test(function(test) - { - var mediaKeys; - var video = document.getElementById('video'); - assert_not_equals(video, null); - - // Test MediaKeys assignment. - assert_equals(video.mediaKeys, null); - assert_equals(typeof video.setMediaKeys, 'function'); - - // Try setting mediaKeys to null. - video.setMediaKeys(null).then(function(result) { - assert_equals(video.mediaKeys, null); - - // Try setting mediaKeys to the wrong type of object. - return video.setMediaKeys(new Date()); - }).then(function(result) { - assert_unreached('setMediaKeys did not fail when setting to Date()'); - }, function(error) { - // TypeError expected. - assert_equals(error.name, 'TypeError'); - - // Create a MediaKeys object and assign it to video. - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()); - }).then(function(access) { - assert_equals(access.keySystem, 'org.w3.clearkey'); - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - assert_not_equals(mediaKeys, null); - assert_equals(typeof mediaKeys.createSession, 'function'); - return video.setMediaKeys(mediaKeys); - }).then(function(result) { - assert_not_equals(video.mediaKeys, null); - assert_true(video.mediaKeys === mediaKeys); - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error); - }); - }, 'Setting MediaKeys on a video object.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-syntax.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-syntax.html deleted file mode 100644 index 5c4c667cb..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-syntax.html +++ /dev/null @@ -1,1017 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test EME syntax</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <script> - // Since promises catch any exception and convert it into a - // rejected Promise, there is no current way to have the W3C - // test framework report a failed test. For now, simply force - // a timeout to indicate failure. - // FIXME: Once W3C test framework handles Promises, fix this. - - // This function checks that calling |testCase.func| returns a - // rejected Promise with the error.name equal to - // |testCase.exception|. - function test_exception(testCase /*...*/) - { - var func = testCase.func; - var exception = testCase.exception; - var args = Array.prototype.slice.call(arguments, 1); - - // Currently blink throws for TypeErrors rather than returning - // a rejected promise (http://crbug.com/359386). - // FIXME: Remove try/catch once they become failed promises. - try { - return func.apply(null, args).then( - function(result) - { - assert_unreached(format_value(func)); - }, - function(error) - { - assert_equals(error.name, exception, format_value(func)); - assert_not_equals(error.message, "", format_value(func)); - } - ); - } catch (e) { - // Only allow 'TypeError' exceptions to be thrown. - // Everything else should be a failed promise. - assert_equals('TypeError', exception, format_value(func)); - assert_equals(e.name, exception, format_value(func)); - } - } - - var kRequestMediaKeySystemAccessExceptionsTestCases = [ - // Too few parameters. - { - exception: 'TypeError', - func: function() { return navigator.requestMediaKeySystemAccess(); } - }, - { - exception: 'TypeError', - func: function() { return navigator.requestMediaKeySystemAccess('org.w3.clearkey'); } - }, - // Invalid key systems. Note that JavaScript converts all these - // values into strings by calling toString(), so they fail due - // to the key system not being supported, not due to the type. - { - exception: 'NotSupportedError', - func: function() { return navigator.requestMediaKeySystemAccess(null, [{}]); } - }, - { - exception: 'NotSupportedError', - func: function() { return navigator.requestMediaKeySystemAccess(undefined, [{}]); } - }, - { - exception: 'NotSupportedError', - func: function() { return navigator.requestMediaKeySystemAccess(1, [{}]); } - }, - { - exception: 'InvalidAccessError', - func: function() { return navigator.requestMediaKeySystemAccess(new Uint8Array(0), [{}]); } - }, - { - exception: 'InvalidAccessError', - func: function() { return navigator.requestMediaKeySystemAccess('', [{}]); } - }, - { - exception: 'NotSupportedError', - func: function() { return navigator.requestMediaKeySystemAccess('unsupported', [{}]); } - }, - // Non-ASCII names. - { - exception: 'NotSupportedError', - func: function() { return navigator.requestMediaKeySystemAccess('org.w3\u263A.clearkey', [{}]); } - }, - // Empty sequence of MediaKeySystemConfiguration. - { - exception: 'InvalidAccessError', - func: function() { return navigator.requestMediaKeySystemAccess('org.w3.clearkey', []); } - }, - // Invalid sequences of MediaKeySystemConfigurations. - { - exception: 'TypeError', - func: function() { return navigator.requestMediaKeySystemAccess('org.w3.clearkey', {}); } - }, - { - exception: 'TypeError', - func: function() { return navigator.requestMediaKeySystemAccess('org.w3.clearkey', "invalid"); } - }, - { - exception: 'TypeError', - func: function() { return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}, 6]); } - }, - { - exception: 'TypeError', - func: function() { return navigator.requestMediaKeySystemAccess('org.w3.clearkey', ["invalid", "upsupported"]); } - } - ]; - - async_test(function(test) - { - var createPromises = kRequestMediaKeySystemAccessExceptionsTestCases.map(function(testCase) { - return test_exception(testCase); - }); - - Promise.all(createPromises).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'requestMediaKeySystemAccess() tests failed'); - }); - }, 'Test Navigator.requestMediaKeySystemAccess() exceptions.'); - - async_test(function(test) - { - assert_equals(typeof navigator.requestMediaKeySystemAccess, 'function'); - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { - assert_not_equals(access, null); - assert_equals(typeof access, 'object'); - assert_equals(access.keySystem, 'org.w3.clearkey'); - assert_equals(typeof access.getConfiguration, 'function'); - assert_equals(typeof access.createMediaKeys, 'function'); - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'requestMediaKeySystemAccess() tests failed'); - }); - }, 'Test Navigator.requestMediaKeySystemAccess().'); - - async_test(function(test) - { - var access; - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(result) { - access = result; - assert_equals(access.keySystem, 'org.w3.clearkey'); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - assert_not_equals(mediaKeys, null); - assert_equals(typeof mediaKeys, 'object'); - assert_equals(typeof mediaKeys.createSession, 'function'); - assert_equals(typeof mediaKeys.setServerCertificate, 'function'); - - // Test creation of a second MediaKeys. - // The extra parameter is ignored. - return access.createMediaKeys('extra'); - }).then(function(mediaKeys) { - assert_not_equals(mediaKeys, null); - assert_equals(typeof mediaKeys, 'object'); - assert_equals(typeof mediaKeys.createSession, 'function'); - assert_equals(typeof mediaKeys.setServerCertificate, 'function'); - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'create() tests failed'); - }); - }, 'Test MediaKeySystemAccess createMediaKeys().'); - - var kCreateSessionExceptionsTestCases = [ - // Tests in this set use a shortened parameter name due to - // format_value() only returning the first 60 characters as the - // result. With a longer name the first 60 characters is not - // enough to determine which test failed. - - // Invalid parameters. - { - exception: 'TypeError', - func: function(mk) { return mk.createSession(); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.createSession(''); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.createSession(null); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.createSession(undefined); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.createSession(1); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.createSession(new Uint8Array(0)); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.createSession('TEMPORARY'); } - } - ]; - - // This function checks that calling createSession() with an - // unsupported session type doesn't create a MediaKeySession object. - // Since requestMediaKeySystemAccess() is called without specifying - // persistent sessions, only temporary sessions will be allowed. - function test_unsupported_sessionType(mediaKeys) - { - var mediaKeySession = 'test'; - - try { - mediaKeySession = mediaKeys.createSession('persistent-license'); - assert_unreached('Session should not be created.'); - } catch (error) { - assert_equals(error.name, 'NotSupportedError'); - assert_not_equals(error.message, ""); - - // Since createSession() failed, |mediaKeySession| is not - // touched. - assert_equals(mediaKeySession, 'test'); - } - } - - async_test(function(test) - { - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var sessionPromises = kCreateSessionExceptionsTestCases.map(function(testCase) { - return test_exception(testCase, mediaKeys); - }); - sessionPromises = sessionPromises.concat(test_unsupported_sessionType(mediaKeys)); - - assert_not_equals(sessionPromises.length, 0); - return Promise.all(sessionPromises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'createSession() tests failed'); - }); - }, 'Test MediaKeys createSession() exceptions.'); - - var kGenerateRequestExceptionsTestCases = [ - // Tests in this set use a shortened parameter name due to - // format_value() only returning the first 60 characters as the - // result. With a longer name the first 60 characters is not - // enough to determine which test failed. Even with the - // shortened name, the error message for the last couple of - // tests is the same. - // Too few parameters. - { - exception: 'TypeError', - func: function(mk1) { return mk1.createSession().generateRequest(); } - }, - { - exception: 'TypeError', - func: function(mk2) { return mk2.createSession().generateRequest(''); } - }, - { - exception: 'TypeError', - func: function(mk3) { return mk3.createSession().generateRequest(null); } - }, - { - exception: 'TypeError', - func: function(mk4) { return mk4.createSession().generateRequest(undefined); } - }, - { - exception: 'TypeError', - func: function(mk5) { return mk5.createSession().generateRequest(1); } - }, - { - exception: 'TypeError', - func: function(mk6) { return mk6.createSession().generateRequest(new Uint8Array(0)); } - }, - { - exception: 'TypeError', - func: function(mk7, _, initData) { return mk7.createSession().generateRequest(initData); } - }, - // Invalid parameters. - { - exception: 'InvalidAccessError', - func: function(mk8, _, initData) { return mk8.createSession().generateRequest('', initData); } - }, - // Not supported initDataTypes. - { - exception: 'NotSupportedError', - func: function(mk9, _, initData) { return mk9.createSession().generateRequest(null, initData); } - }, - { - exception: 'NotSupportedError', - func: function(mk10, _, initData) { return mk10.createSession().generateRequest(undefined, initData); } - }, - { - exception: 'NotSupportedError', - func: function(mk11, _, initData) { return mk11.createSession().generateRequest(1, initData); } - }, - { - exception: 'InvalidAccessError', - func: function(mk12, _, initData) { return mk12.createSession().generateRequest(new Uint8Array(0), initData); } - }, - { - exception: 'NotSupportedError', - func: function(mk13, _, initData) { return mk13.createSession().generateRequest('unsupported', initData); } - }, - { - exception: 'NotSupportedError', - func: function(mk14, _, initData) { return mk14.createSession().generateRequest('video/webm', initData); } - }, - { - exception: 'NotSupportedError', - func: function(mk15, _, initData) { return mk15.createSession().generateRequest('video/mp4', initData); } - }, - { - exception: 'NotSupportedError', - func: function(mk16, _, initData) { return mk16.createSession().generateRequest('video/cenc', initData); } - }, - { - exception: 'NotSupportedError', - func: function(mk17, _, initData) { return mk17.createSession().generateRequest('web\u263A', initData); } - } - ]; - - var kTypeSpecificGenerateRequestExceptionsTestCases = [ - // Tests in this set use a shortened parameter name due to - // format_value() only returning the first 60 characters as the - // result. With a longer name the first 60 characters is not - // enough to determine which test failed. Even with the - // shortened name, the error message for the last couple of - // tests is the same. - - // Too few parameters. - { - exception: 'TypeError', - func: function(mk1, type) { return mk1.createSession().generateRequest(type); } - }, - // Invalid parameters. - { - exception: 'TypeError', - func: function(mk2, type) { return mk2.createSession().generateRequest(type, ''); } - }, - { - exception: 'TypeError', - func: function(mk3, type) { return mk3.createSession().generateRequest(type, null); } - }, - { - exception: 'TypeError', - func: function(mk4, type) { return mk4.createSession().generateRequest(type, undefined); } - }, - { - exception: 'TypeError', - func: function(mk5, type) { return mk5.createSession().generateRequest(type, 1); } - }, - { - exception: 'InvalidAccessError', - func: function(mk6, type) { return mk6.createSession().generateRequest(type, new Uint8Array(0)); } - } - ]; - - async_test(function(test) - { - var isWebmSupported; - var isCencSupported; - - isInitDataTypeSupported('webm').then(function(result) { - isWebmSupported = result; - return isInitDataTypeSupported('cenc'); - }).then(function(result) { - isCencSupported = result; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var initData = stringToUint8Array('init data'); - var sessionPromises = kGenerateRequestExceptionsTestCases.map(function(testCase) { - return test_exception(testCase, mediaKeys, '', initData); - }); - - // Test that WebM sessions generate the expected error, if - // supported. - if (isWebmSupported) { - var WebmSessionPromises = kTypeSpecificGenerateRequestExceptionsTestCases.map(function(testCase) { - return test_exception(testCase, mediaKeys, 'webm', getInitData('webm')); - }); - sessionPromises = sessionPromises.concat(WebmSessionPromises); - } - - // Repeat for MP4, if supported. - if (isCencSupported) { - var mp4SessionPromises = kTypeSpecificGenerateRequestExceptionsTestCases.map(function(testCase) { - return test_exception(testCase, mediaKeys, 'cenc', getInitData('cenc')); - }); - sessionPromises = sessionPromises.concat(mp4SessionPromises); - } - - assert_not_equals(sessionPromises.length, 0); - return Promise.all(sessionPromises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'generateRequest() tests failed'); - }); - }, 'Test MediaKeys generateRequest() exceptions.'); - - var kLoadExceptionsTestCases = [ - // Too few parameters. - { - exception: 'TypeError', - func: function(mk1) { return mk1.createSession('temporary').load(); } - }, - // 'temporary' sessions are never allowed, so always return - // 'InvalidAccessError'. - { - exception: 'InvalidAccessError', - func: function(mk3) { return mk3.createSession('temporary').load(''); } - }, - { - exception: 'InvalidAccessError', - func: function(mk4) { return mk4.createSession('temporary').load(1); } - }, - { - exception: 'InvalidAccessError', - func: function(mk5) { return mk5.createSession('temporary').load('!@#$%^&*()'); } - }, - { - exception: 'InvalidAccessError', - func: function(mk6) { return mk6.createSession('temporary').load('1234'); } - } - ]; - - async_test(function(test) - { - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var initData = stringToUint8Array('init data'); - var sessionPromises = kLoadExceptionsTestCases.map(function(testCase) { - return test_exception(testCase, mediaKeys); - }); - - assert_not_equals(sessionPromises.length, 0); - return Promise.all(sessionPromises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'load() tests failed'); - }); - }, 'Test MediaKeys load() exceptions.'); - - // All calls to |func| in this group are supposed to succeed. - // However, the spec notes that some things are optional for - // Clear Key. In particular, support for persistent sessions - // is optional. Since some implementations won't support some - // features, a NotSupportedError is treated as a success - // if |isNotSupportedAllowed| is true. - var kCreateSessionTestCases = [ - // Use the default sessionType. - { - func: function(mk) { return mk.createSession(); }, - isNotSupportedAllowed: false - }, - // Try variations of sessionType. - { - func: function(mk) { return mk.createSession('temporary'); }, - isNotSupportedAllowed: false - }, - { - func: function(mk) { return mk.createSession(undefined); }, - isNotSupportedAllowed: false - }, - { - // Since this is optional, some Clear Key implementations - // will succeed, others will return a "NotSupportedError". - // Both are allowed results. - func: function(mk) { return mk.createSession('persistent-license'); }, - isNotSupportedAllowed: true - }, - // Try additional parameter, which should be ignored. - { - func: function(mk) { return mk.createSession('temporary', 'extra'); }, - isNotSupportedAllowed: false - } - ]; - - // This function checks that calling |testCase.func| creates a - // MediaKeySession object with some default values. It also - // allows for an NotSupportedError to be generated and treated as a - // success, if allowed. See comment above kCreateSessionTestCases. - function test_createSession(testCase, mediaKeys) - { - var mediaKeySession; - try { - mediaKeySession = testCase.func.call(null, mediaKeys); - } catch (e) { - assert_true(testCase.isNotSupportedAllowed); - return; - } - - assert_equals(typeof mediaKeySession, 'object'); - assert_equals(typeof mediaKeySession.addEventListener, 'function'); - assert_equals(typeof mediaKeySession.sessionId, 'string'); - assert_equals(typeof mediaKeySession.expiration, 'number'); - assert_equals(typeof mediaKeySession.closed, 'object'); - assert_equals(typeof mediaKeySession.keyStatuses, 'object'); - assert_equals(typeof mediaKeySession.onkeystatuseschange, 'object'); - assert_equals(typeof mediaKeySession.onmessage, 'object'); - assert_equals(typeof mediaKeySession.generateRequest, 'function'); - assert_equals(typeof mediaKeySession.load, 'function'); - assert_equals(typeof mediaKeySession.update, 'function'); - assert_equals(typeof mediaKeySession.close, 'function'); - assert_equals(typeof mediaKeySession.remove, 'function'); - assert_equals(mediaKeySession.sessionId, ''); - assert_equals(typeof mediaKeySession.onopen, 'undefined'); - assert_equals(typeof mediaKeySession.onclose, 'undefined'); - assert_equals(typeof mediaKeySession.onerror, 'undefined'); - } - - async_test(function(test) - { - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - kCreateSessionTestCases.map(function(testCase) { - test_createSession(testCase, mediaKeys); - }); - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'createSession() tests failed'); - }); - }, 'Test MediaKeys createSession().'); - - // This function checks that calling generateRequest() works for - // various sessions. |testCase.func| creates a MediaKeySession - // object, and then generateRequest() is called on that object. It - // allows for an NotSupportedError to be generated and treated as a - // success, if allowed. See comment above kCreateSessionTestCases. - function test_generateRequest(testCase, mediaKeys, type, initData) - { - try { - var mediaKeySession = testCase.func.call(null, mediaKeys); - return mediaKeySession.generateRequest(type, initData); - } catch (e) { - assert_true(testCase.isNotSupportedAllowed); - } - } - - async_test(function(test) - { - var isWebmSupported; - var isCencSupported; - - isInitDataTypeSupported('webm').then(function(result) { - isWebmSupported = result; - return isInitDataTypeSupported('cenc'); - }).then(function(result) { - isCencSupported = result; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var sessionPromises = []; - - // Test that WebM sessions generate the expected error, if - // supported. - if (isWebmSupported) { - var WebmSessionPromises = kCreateSessionTestCases.map(function(testCase) { - return test_generateRequest(testCase, mediaKeys, 'webm', getInitData('webm')); - }); - sessionPromises = sessionPromises.concat(WebmSessionPromises); - } - - // Repeat for MP4, if supported. - if (isCencSupported) { - var mp4SessionPromises = kCreateSessionTestCases.map(function(testCase) { - return test_generateRequest(testCase, mediaKeys, 'cenc', getInitData('cenc')); - }); - sessionPromises = sessionPromises.concat(mp4SessionPromises); - } - - assert_not_equals(sessionPromises.length, 0); - return Promise.all(sessionPromises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'generateRequest() tests failed'); - }); - }, 'Test MediaKeys generateRequest().'); - - var kUpdateSessionExceptionsTestCases = [ - // Tests in this set use a shortened parameter name due to - // format_value() only returning the first 60 characters as the - // result. With a longer name (mediaKeySession) the first 60 - // characters is not enough to determine which test failed. - - // Too few parameters. - { - exception: 'TypeError', - func: function(s) { return s.update(); } - }, - // Invalid parameters. - { - exception: 'TypeError', - func: function(s) { return s.update(''); } - }, - { - exception: 'TypeError', - func: function(s) { return s.update(null); } - }, - { - exception: 'TypeError', - func: function(s) { return s.update(undefined); } - }, - { - exception: 'TypeError', - func: function(s) { return s.update(1); } - }, - { - exception: 'InvalidAccessError', - func: function(s) { return s.update(new Uint8Array(0)); } - } - ]; - - async_test(function(test) - { - var isWebmSupported; - var isCencSupported; - - isInitDataTypeSupported('webm').then(function(result) { - isWebmSupported = result; - return isInitDataTypeSupported('cenc'); - }).then(function(result) { - isCencSupported = result; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var promises = []; - - if (isWebmSupported) { - var WebmSessionPromises = kUpdateSessionExceptionsTestCases.map(function(testCase) { - var mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.generateRequest('webm', getInitData('webm')).then(function(result) { - return test_exception(testCase, mediaKeySession); - }); - }); - promises = promises.concat(WebmSessionPromises); - } - - if (isCencSupported) { - var mp4SessionPromises = kUpdateSessionExceptionsTestCases.map(function(testCase) { - var mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.generateRequest('cenc', getInitData('cenc')).then(function(result) { - return test_exception(testCase, mediaKeySession); - }); - }); - promises = promises.concat(mp4SessionPromises); - } - - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'update() tests failed'); - }); - }, 'Test MediaKeySession update() exceptions.'); - - function create_update_test(mediaKeys, type, initData) - { - var mediaKeySession = mediaKeys.createSession(); - var promise = mediaKeySession.generateRequest(type, initData).then(function(result) { - var validLicense = stringToUint8Array(createJWKSet(createJWK(stringToUint8Array('123'), stringToUint8Array('1234567890abcdef')))); - return mediaKeySession.update(validLicense); - }).then(function(result) { - // Call update() with a different license and an extra - // parameter. The extra parameter is ignored. - var validLicense = stringToUint8Array(createJWKSet(createJWK(stringToUint8Array('4567890'), stringToUint8Array('01234567890abcde')))); - return mediaKeySession.update(validLicense, 'extra'); - }); - return promise; - } - - async_test(function(test) - { - var isWebmSupported; - var isCencSupported; - - isInitDataTypeSupported('webm').then(function(result) { - isWebmSupported = result; - return isInitDataTypeSupported('cenc'); - }).then(function(result) { - isCencSupported = result; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var promises = []; - - if (isWebmSupported) { - promises.push(create_update_test(mediaKeys, 'webm', getInitData('webm'))); - } - - if (isCencSupported) { - promises.push(create_update_test(mediaKeys, 'cenc', getInitData('cenc'))); - } - - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'update() tests failed'); - }); - }, 'Test MediaKeySession update().'); - - function create_close_exception_test(mediaKeys, type, initData) - { - var mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.close().then(function(result) { - assert_unreached('close() should not succeed if session uninitialized'); - }).catch(function(error) { - assert_equals(error.name, 'InvalidStateError'); - // Return something so the promise resolves. - return Promise.resolve(); - }); - } - - async_test(function(test) - { - var isWebmSupported; - var isCencSupported; - - isInitDataTypeSupported('webm').then(function(result) { - isWebmSupported = result; - return isInitDataTypeSupported('cenc'); - }).then(function(result) { - isCencSupported = result; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var promises = []; - - if (isWebmSupported) { - promises.push(create_close_exception_test(mediaKeys, 'webm', getInitData('webm'))); - } - - if (isCencSupported) { - promises.push(create_close_exception_test(mediaKeys, 'cenc', getInitData('cenc'))); - } - - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'close() exception tests failed'); - }); - }, 'Test MediaKeySession close() exceptions.'); - - - function create_close_test(mediaKeys, type, initData) - { - var mediaKeySession = mediaKeys.createSession(); - var promise = mediaKeySession.generateRequest(type, initData).then(function(result) { - return mediaKeySession.close(); - }).then(function(result) { - // Call close() again with an extra parameter. The extra - // parameter is ignored. - return mediaKeySession.close('extra'); - }); - return promise; - } - - async_test(function(test) - { - var isWebmSupported; - var isCencSupported; - - isInitDataTypeSupported('webm').then(function(result) { - isWebmSupported = result; - return isInitDataTypeSupported('cenc'); - }).then(function(result) { - isCencSupported = result; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var promises = []; - - if (isWebmSupported) { - promises.push(create_close_test(mediaKeys, 'webm', getInitData('webm'))); - } - - if (isCencSupported) { - promises.push(create_close_test(mediaKeys, 'cenc', getInitData('cenc'))); - } - - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'close() tests failed'); - }); - }, 'Test MediaKeySession close().'); - - function create_remove_exception_test(mediaKeys, type, initData) - { - // remove() on an uninitialized session should fail. - var mediaKeySession = mediaKeys.createSession('temporary'); - return mediaKeySession.remove().then(function(result) { - assert_unreached('remove() should not succeed if session uninitialized'); - }, function(error) { - assert_equals(error.name, 'InvalidStateError'); - - // remove() on a temporary session should fail. - return mediaKeySession.generateRequest(type, initData); - }).then(function(result) { - return mediaKeySession.remove(); - }).then(function(result) { - assert_unreached('remove() should not succeed for temporary sessions'); - }, function(error) { - assert_equals(error.name, 'InvalidAccessError'); - }); - } - - async_test(function(test) - { - var isWebmSupported; - var isCencSupported; - - isInitDataTypeSupported('webm').then(function(result) { - isWebmSupported = result; - return isInitDataTypeSupported('cenc'); - }).then(function(result) { - isCencSupported = result; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var promises = []; - - if (isWebmSupported) { - promises.push(create_remove_exception_test(mediaKeys, 'webm', getInitData('webm'))); - } - - if (isCencSupported) { - promises.push(create_remove_exception_test(mediaKeys, 'cenc', getInitData('cenc'))); - } - - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'remove() exception tests failed'); - }); - }, 'Test MediaKeySession remove() exceptions.'); - - function create_remove_test(mediaKeys, type, initData) - { - // Clear Key may not support persistent-license sessions. - var mediaKeySession; - try { - mediaKeySession = mediaKeys.createSession('persistent-license'); - } catch (error) { - // Not supported, so return a resolved promise. - assert_equals(error.name, 'NotSupportedError'); - return Promise.resolve(); - } - return mediaKeySession.generateRequest(type, initData).then(function(result) { - return mediaKeySession.remove(); - }); - } - - async_test(function(test) - { - var isWebmSupported; - var isCencSupported; - - isInitDataTypeSupported('webm').then(function(result) { - isWebmSupported = result; - return isInitDataTypeSupported('cenc'); - }).then(function(result) { - isCencSupported = result; - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]); - }).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var promises = []; - - if (isWebmSupported) { - promises.push(create_remove_test(mediaKeys, 'webm', getInitData('webm'))); - } - - if (isCencSupported) { - promises.push(create_remove_test(mediaKeys, 'cenc', getInitData('cenc'))); - } - - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'remove() tests failed'); - }); - }, 'Test MediaKeySession remove().'); - - var kSetServerCertificateExceptionsTestCases = [ - // Too few parameters. - { - exception: 'TypeError', - func: function(mk) { return mk.setServerCertificate(); } - }, - // Invalid parameters. - { - exception: 'TypeError', - func: function(mk) { return mk.setServerCertificate(''); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.setServerCertificate(null); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.setServerCertificate(undefined); } - }, - { - exception: 'TypeError', - func: function(mk) { return mk.setServerCertificate(1); } - }, - // Empty array. - { - exception: 'InvalidAccessError', - func: function(mk) { return mk.setServerCertificate(new Uint8Array(0)); } - } - ]; - - async_test(function(test) - { - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var promises = kSetServerCertificateExceptionsTestCases.map(function(testCase) { - return test_exception(testCase, mediaKeys); - }); - - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function(result) { - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'setServerCertificate() exception tests failed'); - }); - }, 'Test MediaKeys setServerCertificate() exceptions.'); - - // All calls to |func| in this group are expected to resolve. - var kSetServerCertificateTestCases = [ - { - // Pass in ArrayBufferView - func: function(mk) { - var cert = new Uint8Array(200); - assert_true(ArrayBuffer.isView(cert)); - return mk.setServerCertificate(cert); - }, - expected: false, - }, - { - // Pass in ArrayBuffer - func: function(mk) { - var buffer = new ArrayBuffer(200); - assert_false(ArrayBuffer.isView(buffer)); - return mk.setServerCertificate(buffer); - }, - expected: false, - } - ]; - - async_test(function(test) - { - var expected_result; - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{}]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var promises = kSetServerCertificateTestCases.map(function(testCase) { - return testCase.func.call(null, mediaKeys); - }); - expected_result = kSetServerCertificateTestCases.map(function(testCase) { - return testCase.expected; - }); - - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function(result) { - assert_array_equals(result, expected_result); - test.done(); - }).catch(function(error) { - forceTestFailureFromPromise(test, error, 'setServerCertificate() test failed'); - }); - }, 'Test MediaKeys setServerCertificate().'); - - - // FIXME: Add syntax checks for MediaKeys.IsTypeSupported(). - // FIXME: Add syntax checks for MediaKeyError and MediaKeySession events. - // FIXME: Add HTMLMediaElement syntax checks, e.g. setMediaKeys, mediakeys, onencrypted. - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-unique-origin.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-unique-origin.html deleted file mode 100644 index ffb67679f..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-unique-origin.html +++ /dev/null @@ -1,79 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Unique origin is unable to create MediaKeys</title> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // When the sandbox attribute is present on an iframe, it will - // treat the content as being from a unique origin. So try to - // call createMediaKeys() inside an iframe and it should fail. - - function load_iframe(src, sandbox) { - return new Promise(function(resolve) { - var iframe = document.createElement('iframe'); - iframe.onload = function() { resolve(iframe); }; - iframe.sandbox = sandbox; - iframe.src = src; - document.documentElement.appendChild(iframe); - }); - } - - function wait_for_message() { - return new Promise(function(resolve) { - self.addEventListener('message', function listener(e) { - resolve(e.data); - self.removeEventListener('message', listener); - }); - }); - } - - promise_test(function(test) { - var script = 'data:text/html,' + - '<script>' + - ' window.onmessage = function(e) {' + - ' navigator.requestMediaKeySystemAccess(\'org.w3.clearkey\', [{' + - ' initDataTypes: [ \'keyids\' ],' + - ' audioCapabilities: [' + - ' { contentType: \'audio/mp4; codecs="mp4a.40.2"\' },' + - ' { contentType: \'audio/webm; codecs="opus"\' }' + - ' ]' + - ' }]).then(function(access) {' + - ' return access.createMediaKeys();' + - ' }).then(function(mediaKeys) {' + - ' window.parent.postMessage({result: \'allowed\'}, \'*\');' + - ' }, function(error) {' + - ' window.parent.postMessage({result: \'failed\'}, \'*\');' + - ' });' + - ' };' + - '<\/script>'; - - // Verify that this page can create a MediaKeys first. - navigator.requestMediaKeySystemAccess('org.w3.clearkey', [{ - initDataTypes: [ 'keyids' ], - audioCapabilities: [ - { contentType: 'audio/mp4; codecs="mp4a.40.2"' }, - { contentType: 'audio/webm; codecs="opus"' } - ] - }]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - // Success, so now create the iframe and try there. - return load_iframe(script, 'allow-scripts') - }).then(function(iframe) { - iframe.contentWindow.postMessage({}, '*'); - return wait_for_message(); - }).then(function(message) { - assert_equals(message.result, 'failed'); - }); - }, 'Unique origin is unable to create MediaKeys'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-update-disallowed-input.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-update-disallowed-input.html deleted file mode 100644 index e829a885c..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-update-disallowed-input.html +++ /dev/null @@ -1,73 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Test handling of invalid responses for update().</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <div id="log"></div> - <script> - // This test passes |response| to update() as a JSON Web Key Set. - // CDMs other than Clear Key won't expect |response| in this format. - - async_test(function(test) - { - var initDataType; - var initData; - var mediaKeySession; - - function repeat(pattern, count) { - var result = ''; - while (count > 1) { - if (count & 1) result += pattern; - count >>= 1; - pattern += pattern; - } - return result + pattern; - } - - function createReallyLongJWKSet() - { - // This is just a standard JWKSet with a lot of - // extra items added to the end. Key ID and key - // doesn't really matter. - var jwkSet = '{"keys":[{' - + '"kty":"oct",' - + '"k":"MDEyMzQ1Njc4OTAxMjM0NQ",' - + '"kid":"MDEyMzQ1Njc4OTAxMjM0NQ"' - + '}]'; - return jwkSet + repeat(',"test":"unknown"', 4000) + '}'; - } - - function processMessage(event) - { - var jwkSet = createReallyLongJWKSet(); - assert_greater_than(jwkSet.length, 65536); - var jwkSetArray = stringToUint8Array(jwkSet); - mediaKeySession.update(jwkSetArray).then(function() { - forceTestFailureFromPromise(test, 'Error: update() succeeded'); - }, function(error) { - assert_equals(error.name, 'InvalidAccessError'); - test.done(); - }); - } - - navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - waitForEventAndRunStep('message', mediaKeySession, processMessage, test); - return mediaKeySession.generateRequest(initDataType, initData); - }); - }, 'update() with response longer than 64Kb characters.'); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-utils.js b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-utils.js deleted file mode 100644 index 5fbcdf689..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-utils.js +++ /dev/null @@ -1,333 +0,0 @@ -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> - -var consoleDiv = null; - -function consoleWrite(text) -{ - if (!consoleDiv && document.body) { - consoleDiv = document.createElement('div'); - document.body.appendChild(consoleDiv); - } - var span = document.createElement('span'); - span.appendChild(document.createTextNode(text)); - span.appendChild(document.createElement('br')); - consoleDiv.appendChild(span); -} - -// Returns a promise that is fulfilled with true if |initDataType| is supported, -// or false if not. -function isInitDataTypeSupported(initDataType) -{ - return navigator.requestMediaKeySystemAccess( - "org.w3.clearkey", getSimpleConfigurationForInitDataType(initDataType)) - .then(function() { return true; }, function() { return false; }); -} - -function getInitData(initDataType) -{ - if (initDataType == 'webm') { - return new Uint8Array([ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F - ]); - } - - if (initDataType == 'cenc') { - return new Uint8Array([ - 0x00, 0x00, 0x00, 0x34, // size = 52 - 0x70, 0x73, 0x73, 0x68, // 'pssh' - 0x01, // version = 1 - 0x00, 0x00, 0x00, // flags - 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID - 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, - 0x00, 0x00, 0x00, 0x01, // key count - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, // key - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, - 0x00, 0x00, 0x00, 0x00 // datasize - ]); - } - - if (initDataType == 'keyids') { - var keyId = new Uint8Array([ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F - ]); - return stringToUint8Array(createKeyIDs(keyId)); - } - - throw 'initDataType ' + initDataType + ' not supported.'; -} - -// Returns an array of audioCapabilities that includes entries for a set of -// codecs that should cover all user agents. -function getPossibleAudioCapabilities() -{ - return [ - { contentType: 'audio/mp4; codecs="mp4a.40.2"' }, - { contentType: 'audio/webm; codecs="opus"' }, - ]; -} - -// Returns a trivial MediaKeySystemConfiguration that should be accepted, -// possibly as a subset of the specified capabilities, by all user agents. -function getSimpleConfiguration() -{ - return [ { - initDataTypes : [ 'webm', 'cenc', 'keyids' ], - audioCapabilities: getPossibleAudioCapabilities() - } ]; -} - -// Returns a MediaKeySystemConfiguration for |initDataType| that should be -// accepted, possibly as a subset of the specified capabilities, by all -// user agents. -function getSimpleConfigurationForInitDataType(initDataType) -{ - return [ { - initDataTypes: [ initDataType ], - audioCapabilities: getPossibleAudioCapabilities() - } ]; -} - -// Returns a MediaKeySystemConfiguration for |mediaFile| that specifies -// both audio and video capabilities for the specified file.. -function getConfigurationForFile(mediaFile) -{ - if (mediaFile.toLowerCase().endsWith('webm')) { - return [ { - initDataTypes: [ 'webm' ], - audioCapabilities: [ { contentType: 'audio/webm; codecs="opus"' } ], - videoCapabilities: [ { contentType: 'video/webm; codecs="vp8"' } ] - } ]; - } - - // NOTE: Supporting other mediaFormats is not currently implemented as - // Chromium only tests with WebM files. - throw 'mediaFile ' + mediaFile + ' not supported.'; -} - -function waitForEventAndRunStep(eventName, element, func, stepTest) -{ - var eventCallback = function(event) { - if (func) - func(event); - } - if (stepTest) - eventCallback = stepTest.step_func(eventCallback); - - element.addEventListener(eventName, eventCallback, true); -} - -// Copied from LayoutTests/resources/js-test.js. -// See it for details of why this is necessary. -function asyncGC(callback) -{ - GCController.collectAll(); - setTimeout(callback, 0); -} - -function createGCPromise() -{ - // Run gc() as a promise. - return new Promise( - function(resolve, reject) { - asyncGC(resolve); - }); -} - -function delayToAllowEventProcessingPromise() -{ - return new Promise( - function(resolve, reject) { - setTimeout(resolve, 0); - }); -} - -function stringToUint8Array(str) -{ - var result = new Uint8Array(str.length); - for(var i = 0; i < str.length; i++) { - result[i] = str.charCodeAt(i); - } - return result; -} - -function arrayBufferAsString(buffer) -{ - // MediaKeySession.keyStatuses iterators return an ArrayBuffer, - // so convert it into a printable string. - return String.fromCharCode.apply(null, new Uint8Array(buffer)); -} - -function dumpKeyStatuses(keyStatuses) -{ - consoleWrite("for (var entry of keyStatuses)"); - for (var entry of keyStatuses) { - consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); - } - consoleWrite("for (var keyId of keyStatuses.keys())"); - for (var keyId of keyStatuses.keys()) { - consoleWrite(arrayBufferAsString(keyId)); - } - consoleWrite("for (var status of keyStatuses.values())"); - for (var status of keyStatuses.values()) { - consoleWrite(status); - } - consoleWrite("for (var entry of keyStatuses.entries())"); - for (var entry of keyStatuses.entries()) { - consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); - } - consoleWrite("keyStatuses.forEach()"); - keyStatuses.forEach(function(status, keyId) { - consoleWrite(arrayBufferAsString(keyId) + ": " + status); - }); -} - -// Verify that |keyStatuses| contains just the keys in |keys.expected| -// and none of the keys in |keys.unexpected|. All keys should have status -// 'usable'. Example call: verifyKeyStatuses(mediaKeySession.keyStatuses, -// { expected: [key1], unexpected: [key2] }); -function verifyKeyStatuses(keyStatuses, keys) -{ - var expected = keys.expected || []; - var unexpected = keys.unexpected || []; - - // |keyStatuses| should have same size as number of |keys.expected|. - assert_equals(keyStatuses.size, expected.length); - - // All |keys.expected| should be found. - expected.map(function(key) { - assert_true(keyStatuses.has(key)); - assert_equals(keyStatuses.get(key), 'usable'); - }); - - // All |keys.unexpected| should not be found. - unexpected.map(function(key) { - assert_false(keyStatuses.has(key)); - assert_equals(keyStatuses.get(key), undefined); - }); -} - -// Encodes |data| into base64url string. There is no '=' padding, and the -// characters '-' and '_' must be used instead of '+' and '/', respectively. -function base64urlEncode(data) -{ - var result = btoa(String.fromCharCode.apply(null, data)); - return result.replace(/=+$/g, '').replace(/\+/g, "-").replace(/\//g, "_"); -} - -// Decode |encoded| using base64url decoding. -function base64urlDecode(encoded) -{ - return atob(encoded.replace(/\-/g, "+").replace(/\_/g, "/")); -} - -// For Clear Key, the License Format is a JSON Web Key (JWK) Set, which contains -// a set of cryptographic keys represented by JSON. These helper functions help -// wrap raw keys into a JWK set. -// See: -// https://w3c.github.io/encrypted-media/#clear-key-license-format -// http://tools.ietf.org/html/draft-ietf-jose-json-web-key -// -// Creates a JWK from raw key ID and key. -// |keyId| and |key| are expected to be ArrayBufferViews, not base64-encoded. -function createJWK(keyId, key) -{ - var jwk = '{"kty":"oct","alg":"A128KW","kid":"'; - jwk += base64urlEncode(keyId); - jwk += '","k":"'; - jwk += base64urlEncode(key); - jwk += '"}'; - return jwk; -} - -// Creates a JWK Set from multiple JWKs. -function createJWKSet() -{ - var jwkSet = '{"keys":['; - for (var i = 0; i < arguments.length; i++) { - if (i != 0) - jwkSet += ','; - jwkSet += arguments[i]; - } - jwkSet += ']}'; - return jwkSet; -} - -// Clear Key can also support Key IDs Initialization Data. -// ref: http://w3c.github.io/encrypted-media/keyids-format.html -// Each parameter is expected to be a key id in an Uint8Array. -function createKeyIDs() -{ - var keyIds = '{"kids":["'; - for (var i = 0; i < arguments.length; i++) { - if (i != 0) - keyIds += '","'; - keyIds += base64urlEncode(arguments[i]); - } - keyIds += '"]}'; - return keyIds; -} - -function forceTestFailureFromPromise(test, error, message) -{ - // Promises convert exceptions into rejected Promises. Since there is - // currently no way to report a failed test in the test harness, errors - // are reported using force_timeout(). - if (message) - consoleWrite(message + ': ' + error.message); - else if (error) - consoleWrite(error); - - test.force_timeout(); - test.done(); -} - -function extractSingleKeyIdFromMessage(message) -{ - var json = JSON.parse(String.fromCharCode.apply(null, new Uint8Array(message))); - // Decode the first element of 'kids'. - assert_equals(1, json.kids.length); - var decoded_key = base64urlDecode(json.kids[0]); - // Convert to an Uint8Array and return it. - return stringToUint8Array(decoded_key); -} - -// Create a MediaKeys object for Clear Key with 1 session. KeyId and key -// required for the video are already known and provided. Returns a promise -// that resolves to the MediaKeys object created. -function createMediaKeys(keyId, key) -{ - var mediaKeys; - var mediaKeySession; - var request = stringToUint8Array(createKeyIDs(keyId)); - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, key))); - - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getSimpleConfigurationForInitDataType('keyids')).then(function(access) { - return access.createMediaKeys(); - }).then(function(result) { - mediaKeys = result; - mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.generateRequest('keyids', request); - }).then(function() { - return mediaKeySession.update(jwkSet); - }).then(function() { - return Promise.resolve(mediaKeys); - }); -} - -// Play the specified |content| on |video|. Returns a promise that is resolved -// after the video plays for |duration| seconds. -function playVideoAndWaitForTimeupdate(video, content, duration) -{ - video.src = content; - video.play(); - return new Promise(function(resolve) { - video.addEventListener('timeupdate', function listener(event) { - if (event.target.currentTime < duration) - return; - video.removeEventListener('timeupdate', listener); - resolve('success'); - }); - }); -} diff --git a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-waiting-for-a-key.html b/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-waiting-for-a-key.html deleted file mode 100644 index 2af37cfb9..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/migrated_to_root_disabled/encrypted-media-waiting-for-a-key.html +++ /dev/null @@ -1,168 +0,0 @@ -<!DOCTYPE html> -<!-- Copyright © 2016 Chromium authors and World Wide Web Consortium, (Massachusetts Institute of Technology, ERCIM, Keio University, Beihang). --> -<html> - <head> - <title>Waiting for a key.</title> - <script src="encrypted-media-utils.js"></script> -<!-- - Test has been migrated to the root directory and is being disabled here. - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> ---> - </head> - <body> - <video id="testVideo"></video> - <div id="log"></div> - <script> - // For debugging timeouts, keep track of the number of the - // various events received. - var debugEncryptedEventCount = 0; - var debugWaitingForKeyEventCount = 0; - var debugTimeUpdateEventCount = 0; - var debugMessage = ''; - - promise_test(function(test) - { - var video = document.getElementById('testVideo'); - var content = 'webm/test-encrypted.webm'; - var initData; - var initDataType; - var mediaKeySession; - - test.timeout = function() - { - var message = 'timeout. message = ' + debugMessage - + ', encrypted: ' + debugEncryptedEventCount - + ', waitingforkey: ' + debugWaitingForKeyEventCount - + ', timeupdate: ' + debugTimeUpdateEventCount; - test.force_timeout(); - test.timeout_id = null; - test.set_status(2, message); - test.done(); - }; - - // As this code doesn't wait for the 'message' event to avoid - // race conditions with 'waitingforkey', specify the key ID and - // key used by the encrypted content. - var keyId = stringToUint8Array('0123456789012345'); - var rawKey = new Uint8Array([0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c]); - - return navigator.requestMediaKeySystemAccess('org.w3.clearkey', getConfigurationForFile(content)).then(function(access) { - debugMessage = 'createMediaKeys()'; - return access.createMediaKeys(); - }).then(function(mediaKeys) { - debugMessage = 'setMediaKeys()'; - return video.setMediaKeys(mediaKeys); - }).then(function() { - video.src = content; - video.play(); - debugMessage = 'wait_for_encrypted_event()'; - return wait_for_encrypted_event(video); - }).then(function(e) { - // Received the 'encrypted' event(s), so keep a copy of - // the initdata for use when creating the session later. - initData = e.initData; - initDataType = e.initDataType; - - // Wait until the video indicates that it needs a key to - // continue. - debugMessage = 'wait_for_waitingforkey_event()'; - return wait_for_waitingforkey_event(video); - }).then(function() { - // Make sure the video is NOT paused and not progressing - // before a key is provided. This requires the video - // to NOT have a clear lead. - assert_false(video.paused); - assert_equals(video.currentTime, 0); - - // Create a session. - mediaKeySession = video.mediaKeys.createSession(); - debugMessage = 'generateRequest()'; - return mediaKeySession.generateRequest(initDataType, initData); - }).then(function() { - // generateRequest() will cause a 'message' event to - // occur specifying the keyId that is needed, but we - // ignore it since we already know what keyId is needed. - // Add the key needed to decrypt. - var jwkSet = stringToUint8Array(createJWKSet(createJWK(keyId, rawKey))); - debugMessage = 'update()'; - return mediaKeySession.update(jwkSet); - }).then(function() { - // Video should start playing now that it can decrypt the - // streams, so wait until a little bit of the video has - // played. - debugMessage = 'wait_for_timeupdate_event()'; - return wait_for_timeupdate_event(video); - }); - - // Typical test duration is 6 seconds on release builds - // (12 seconds on debug). Since the test is timing out anyway, - // make the duration 5 seconds so that the timeout function - // is actually called (instead of simply aborting the test). - }, 'Waiting for a key.', { timeout: 5000 }); - - // Wait for a pair of 'encrypted' events. Promise resolved on - // second event. - function wait_for_encrypted_event(video) - { - var encryptedEventCount = 0; - return new Promise(function(resolve) { - video.addEventListener('encrypted', function listener(e) { - assert_equals(e.target, video); - assert_true(e instanceof window.MediaEncryptedEvent); - assert_equals(e.type, 'encrypted'); - - // The same decryption key is used by both the audio - // and the video streams so wait for the second event - // to ensure we see both events. - ++debugEncryptedEventCount; - if (++encryptedEventCount != 2) - return; - - video.removeEventListener('encrypted', listener); - resolve(e); - }); - }); - }; - - // Wait for a 'waitingforkey' event. Promise resolved when the - // event is received. - function wait_for_waitingforkey_event(video) - { - var waitingForKeyEventCount = 0; - return new Promise(function(resolve) { - video.addEventListener('waitingforkey', function listener(e) { - assert_equals(e.target, video); - assert_equals(e.type, 'waitingforkey'); - - ++debugWaitingForKeyEventCount; - ++waitingForKeyEventCount; - // TODO(jrummell): waitingforkey event should only - // occur once. http://crbug.com/461903 -// assert_equals(waitingForKeyEventCount, 1, 'Multiple waitingforkey events'); - - video.removeEventListener('waitingforkey', listener); - resolve(e); - }); - }); - }; - - // Wait for a 'timeupdate' event. Promise resolved if |video| has - // played for more than 0.2 seconds. - function wait_for_timeupdate_event(video) - { - return new Promise(function(resolve) { - video.addEventListener('timeupdate', function listener(e) { - assert_equals(e.target, video); - ++debugTimeUpdateEventCount; - if (video.currentTime < 0.2) - return; - video.removeEventListener('timeupdate', listener); - resolve(e); - }); - }); - }; - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/Google/webm/test-encrypted-different-av-keys.webm b/testing/web-platform/tests/encrypted-media/Google/webm/test-encrypted-different-av-keys.webm Binary files differdeleted file mode 100644 index 5a29f659b..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/webm/test-encrypted-different-av-keys.webm +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/Google/webm/test-encrypted.webm b/testing/web-platform/tests/encrypted-media/Google/webm/test-encrypted.webm Binary files differdeleted file mode 100644 index 8d44931e8..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/webm/test-encrypted.webm +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/Google/webm/test.webm b/testing/web-platform/tests/encrypted-media/Google/webm/test.webm Binary files differdeleted file mode 100644 index 6c2138d4e..000000000 --- a/testing/web-platform/tests/encrypted-media/Google/webm/test.webm +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/OWNERS b/testing/web-platform/tests/encrypted-media/OWNERS deleted file mode 100644 index 63b5fe290..000000000 --- a/testing/web-platform/tests/encrypted-media/OWNERS +++ /dev/null @@ -1 +0,0 @@ -@ddorwin diff --git a/testing/web-platform/tests/encrypted-media/README.md b/testing/web-platform/tests/encrypted-media/README.md deleted file mode 100644 index 932c9962d..000000000 --- a/testing/web-platform/tests/encrypted-media/README.md +++ /dev/null @@ -1,7 +0,0 @@ -## Preparing to run tests -The following steps may be necessary when running test from a new server/origin for the first time. -* Some implementations and/or tests may require consent. - When running on such clients, manually run a test to trigger the consent request and choose to persist the consent. -* Some of the tests, such as *-retrieve-*, use pop-ups. - It may be necessary to run these tests manually and choose to always allow pop-ups on the origin. - Related test failures may appear as: "Cannot set property 'onload' of undefined" diff --git a/testing/web-platform/tests/encrypted-media/clearkey-check-initdata-type.html b/testing/web-platform/tests/encrypted-media/clearkey-check-initdata-type.html deleted file mode 100644 index 00894338a..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-check-initdata-type.html +++ /dev/null @@ -1,32 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <!--<script src=/encrypted-media/content/content-metadata.js></script>--> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/check-initdata-type.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var config = { keysystem: 'org.w3.clearkey' } - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-events-session-closed-event.html b/testing/web-platform/tests/encrypted-media/clearkey-events-session-closed-event.html deleted file mode 100644 index ddf3ecbbb..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-events-session-closed-event.html +++ /dev/null @@ -1,40 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test MediaKeySession closed event with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/events-session-closed-event.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var keysystem = 'org.w3.clearkey', - contentItem = content['mp4-basic'], - config = { - keysystem: keysystem, - content: contentItem, - initDataType: 'keyids', - initData: getInitData(contentItem,'keyids'), - audioType: contentItem.audio.type, - videoType: contentItem.video.type - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-events.html b/testing/web-platform/tests/encrypted-media/clearkey-events.html deleted file mode 100644 index 4f3b6222b..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-events.html +++ /dev/null @@ -1,44 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Events with Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/events.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - getSupportedContent( 'org.w3.clearkey' ) - .then( function( contents ) - { - var content = contents.filter(function(content) { return content.keys; })[0], - handler = new MessageHandler( 'org.w3.clearkey', content ); - - runTest( { keysystem: 'org.w3.clearkey', - content: content, - messagehandler: handler.messagehandler, - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-generate-request-disallowed-input.html b/testing/web-platform/tests/encrypted-media/clearkey-generate-request-disallowed-input.html deleted file mode 100644 index af6e76c2b..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-generate-request-disallowed-input.html +++ /dev/null @@ -1,32 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Test handling of invalid initData for generateRequest()</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/generate-request-disallowed-input.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var config = { keysystem: 'org.w3.clearkey' - }; - - runTest(config); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-invalid-license.html b/testing/web-platform/tests/encrypted-media/clearkey-invalid-license.html deleted file mode 100644 index 09ff934a0..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-invalid-license.html +++ /dev/null @@ -1,31 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Test handling of invalid Clear Key license</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/invalid-license.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var config = { - keysystem: 'org.w3.clearkey' - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html b/testing/web-platform/tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html deleted file mode 100644 index 3474f9d51..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-keystatuses-multiple-sessions.html +++ /dev/null @@ -1,51 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/keystatuses-multiple-sessions.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - getSupportedContent( 'org.w3.clearkey' ) - .then( function( contents ) { - - // Select a content item with multiple keys - var contentitem = contents.filter( function( item ) { return item.keys && item.keys.length > 1; } )[ 0 ], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ); - - var config = { keysystem: 'org.w3.clearkey', - content: contentitem, - messagehandler: handler.messagehandler, - initDataType: 'keyids', - initData: getMultikeyInitDatas(contentitem,'keyids') - }; - - runTest(config); - - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-keystatuses.html b/testing/web-platform/tests/encrypted-media/clearkey-keystatuses.html deleted file mode 100644 index 6edec35cd..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-keystatuses.html +++ /dev/null @@ -1,50 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/keystatuses.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - getSupportedContent( 'org.w3.clearkey' ) - .then( function( contents ) { - - // Select a content item with multiple keys - var contentitem = contents.filter( function( item ) { return item.keys && item.keys.length > 1; } )[ 0 ]; - var handler = new MessageHandler( 'org.w3.clearkey', contentitem ); - var config = { keysystem: 'org.w3.clearkey', - content: contentitem, - messagehandler: handler.messagehandler, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids') - }; - - runTest(config); - - } ); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html deleted file mode 100644 index 547f01b36..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-destroy-persistent-license.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-license, playback, destroy license with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-destroy-persistent-license.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids') - }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html deleted file mode 100644 index 99aba6386..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license-events.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, persistent-license session with Clear Key, mp4, event sequence</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-persistent-license-events.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids') - }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license.html deleted file mode 100644 index 352a2a7b0..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-license.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, persistent-license session with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-persistent-license.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids') - }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html deleted file mode 100644 index 795cf5b60..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record-events.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, persistent-usage-record session with Clear Key, mp4, event sequence</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-persistent-usage-record-events.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids') - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html deleted file mode 100644 index a2eb397d6..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-persistent-usage-record.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, persistent-usage-record session with Clear Key, mp4, event sequence</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-persistent-usage-record.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids') - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html deleted file mode 100644 index 85510b24b..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-destroy-persistent-license.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-license, playback, retrieve, playback and destroy with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-retrieve-persistent-license.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - windowscript: 'resources/clearkey-retrieve-destroy-persistent-license.html', - testcase: 'playback, retrieve, playback and destroy' }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html deleted file mode 100644 index 7d8fe57ff..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-license.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-license playback, retrieve and playback with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-retrieve-persistent-license.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - windowscript: 'resources/clearkey-retrieve-persistent-license.html', - testcase: 'playback, retrieve and playback' }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html deleted file mode 100644 index c612b8cd9..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-retrieve-persistent-usage-record.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-usage-record, playback and retrieve record in new window, Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - windowscript: 'resources/retrieve-persistent-usage-record.html' }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted.html deleted file mode 100644 index 9eca41cc0..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-clear-encrypted.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, clear then encrypted</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-clear-encrypted'], - handler = new MessageHandler('org.w3.clearkey', contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem, 'keyids'), - duration: 4, - testcase: 'single key, clear then encrypted content' }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources.html deleted file mode 100644 index 04ffe0ccd..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear-sources.html +++ /dev/null @@ -1,58 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, alternate Encrypted and Clear playbacks, Temporary, mp4, Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-encrypted-clear-sources.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var encryptedcontentitem = content['mp4-basic'], - clearcontentitem = content['mp4-clear'], - handler = new MessageHandler('org.w3.clearkey', encryptedcontentitem), - configEncrypted = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: encryptedcontentitem.audio.path, - videoPath: encryptedcontentitem.video.path, - audioType: encryptedcontentitem.audio.type, - videoType: encryptedcontentitem.video.type, - initDataType: 'keyids', - initData: getInitData(encryptedcontentitem, 'keyids'), - }, - configClear = { audioPath: clearcontentitem.audio.path, - videoPath: clearcontentitem.video.path, - audioType: clearcontentitem.audio.type, - videoType: clearcontentitem.video.type, - }; - - runTest(configEncrypted,configClear); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear.html deleted file mode 100644 index 1e1902463..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-encrypted-clear.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, encrypted then clear</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-encrypted-clear'], - handler = new MessageHandler('org.w3.clearkey', contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem, 'keyids'), - duration: 4, - testcase: 'single key, encrypted then clear content' }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-events.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-events.html deleted file mode 100644 index c4d4ea37d..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-events.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful playback, Temporary session with Clear Key, mp4, validating events</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-events.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids') - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState.html deleted file mode 100644 index 66313e727..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential-readyState.html +++ /dev/null @@ -1,55 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, multiple keys in sequence, check readyState</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-multikey-sequential.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-multikey-sequential'], - handler = new MessageHandler('org.w3.clearkey', contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getMultikeyInitDatas(contentitem, 'keyids'), - duration: 5, - checkReadyState: true - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html deleted file mode 100644 index 64b00cd29..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey-sequential.html +++ /dev/null @@ -1,54 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, multiple keys in sequence</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-multikey-sequential.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-multikey-sequential'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getMultikeyInitDatas(contentitem,'keyids'), - duration: 5 - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html deleted file mode 100644 index 29d1a2eed..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multikey.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, multiple keys for audio/video</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-av-multikey'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - testcase: 'multikey audio/video' }; - - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multisession.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multisession.html deleted file mode 100644 index 8f32120f1..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-multisession.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, multiple keys in sequence</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-multisession.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-multikey'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getMultikeyInitDatas(contentitem,'keyids'), - testcase: 'multikey video' }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html deleted file mode 100644 index bade71626..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-src.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-setMediaKeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - testcase: SETMEDIAKEYS_AFTER_SRC }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html deleted file mode 100644 index 1085ce4e7..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-after-update.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-setMediaKeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - testcase: SETMEDIAKEYS_AFTER_UPDATE }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html deleted file mode 100644 index 7f362f442..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-immediately.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-setMediaKeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - testcase: SETMEDIAKEYS_IMMEDIATELY }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html deleted file mode 100644 index a49bc28d3..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-setMediaKeys-onencrypted.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-setMediaKeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - testcase: SETMEDIAKEYS_ONENCRYPTED }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html deleted file mode 100644 index 95de680e4..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-two-videos.html +++ /dev/null @@ -1,55 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, two videos</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-two-videos.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement1" width="200px"></video> - <video id="videoelement2" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: [ document.getElementById( 'videoelement1' ), - document.getElementById( 'videoelement2' ) ], - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html deleted file mode 100644 index 94d35daa5..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary-waitingforkey.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, play, wait for key, continue play</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-waitingforkey.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getMultikeyInitDatas(contentitem,'keyids') - }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary.html deleted file mode 100644 index 909f2af64..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-playback-temporary.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler( 'org.w3.clearkey', contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids'), - testcase: 'single key' }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess.html deleted file mode 100644 index f8402c99a..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-requestmediakeysystemaccess.html +++ /dev/null @@ -1,40 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: requestMediaKeySystemAccess tests, Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/requestmediakeysystemaccess.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var contentitem = content['mp4-basic'], - config = { keysystem: 'org.w3.clearkey', - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids' - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-reset-src-after-setmediakeys.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-reset-src-after-setmediakeys.html deleted file mode 100644 index 61da9d867..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-reset-src-after-setmediakeys.html +++ /dev/null @@ -1,47 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Reset MediaSource after setMediaKeys for Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/reset-src-after-setmediakeys.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentItem = content['mp4-av-multikey'], - config = { - video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - content: contentItem, - initDataType: 'keyids', - initData: getInitData(contentItem,'keyids'), - audioType: contentItem.audio.type, - videoType: contentItem.video.type, - audioPath: contentItem.audio.path, - videoPath: contentItem.video.path, - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback.html deleted file mode 100644 index 697cf207c..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-playback.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys again after playback with Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-again-after-playback.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler('org.w3.clearkey', contentitem); - getSupportedContent('org.w3.clearkey').then( function(contents) { - runTest( { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - content: contentitem, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem, 'keyids') - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src.html deleted file mode 100644 index d695445ef..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-again-after-resetting-src.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys again after resetting src attribute on video element with Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-again-after-resetting-src.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - handler = new MessageHandler('org.w3.clearkey', contentitem ); - getSupportedContent( 'org.w3.clearkey' ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - messagehandler: handler.messagehandler, - content: contentitem, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: 'keyids', - initData: getInitData(contentitem,'keyids') - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-at-same-time.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-at-same-time.html deleted file mode 100644 index 91e6b9ec3..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-at-same-time.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys multiple at same time with Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-at-same-time.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - getSupportedContent( 'org.w3.clearkey' ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - content: contents[ 0 ] - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-different-mediakeys.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-different-mediakeys.html deleted file mode 100644 index 064d7ed05..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-different-mediakeys.html +++ /dev/null @@ -1,49 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys multiple times with different mediakeys with Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-multiple-times-with-different-mediakeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic']; - getSupportedContent( 'org.w3.clearkey' ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - content: contentitem, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html deleted file mode 100644 index 9e383afc3..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html +++ /dev/null @@ -1,49 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys multiple times with the same mediakeys with Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-multiple-times-with-the-same-mediakeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic']; - getSupportedContent( 'org.w3.clearkey' ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - content: contentitem, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-to-multiple-video-elements.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-to-multiple-video-elements.html deleted file mode 100644 index cf73b8085..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys-to-multiple-video-elements.html +++ /dev/null @@ -1,47 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys to multiple video elements with Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-to-multiple-video-elements.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video1'> - <video id="videoelement1" width="200px"></video> - </div> - <div id='video2'> - <video id="videoelement2" width="200px"></video> - </div> - - <script> - getSupportedContent( 'org.w3.clearkey' ).then( function( contents ) { - runTest( { video1: document.getElementById('videoelement1'), - video2: document.getElementById('videoelement2'), - keysystem: 'org.w3.clearkey', - content: contents[ 0 ] - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys.html deleted file mode 100644 index 2865052c6..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-setmediakeys.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys with Clear Key</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - getSupportedContent( 'org.w3.clearkey' ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - content: contents[ 0 ] - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeys.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeys.html deleted file mode 100644 index 6b4a08a91..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeys.html +++ /dev/null @@ -1,42 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test MediaKeys attribute, setServerCertificate and setServerCertificate exception syntax for Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/syntax-mediakeys.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - <script> - var contentItem = content['mp4-basic'], - config = { - keysystem: 'org.w3.clearkey', - content: contentItem, - initDataType: 'keyids', - initData: getInitData(contentItem, 'keyids'), - audioType: contentItem.audio.type, - videoType: contentItem.video.type - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeysession.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeysession.html deleted file mode 100644 index 2748c31a5..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeysession.html +++ /dev/null @@ -1,42 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test MediaKeySession attribute and function syntax for Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/syntax-mediakeysession.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - <script> - var contentItem = content['mp4-basic'], - config = { - keysystem: 'org.w3.clearkey', - content: contentItem, - initDataType: 'keyids', - initData: getInitData(contentItem, 'keyids'), - audioType: contentItem.audio.type, - videoType: contentItem.video.type - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeysystemaccess.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeysystemaccess.html deleted file mode 100644 index 22e72ccc8..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-syntax-mediakeysystemaccess.html +++ /dev/null @@ -1,42 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test navigator.requestmediakeysystemaccess exception and MediaKeySystemAccess attribute syntax for Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/syntax-mediakeysystemaccess.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - <script> - var contentItem = content['mp4-basic'], - config = { - keysystem: 'org.w3.clearkey', - content: contentItem, - initDataType: 'keyids', - initData: getInitData(contentItem, 'keyids'), - audioType: contentItem.audio.type, - videoType: contentItem.video.type - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-unique-origin.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-unique-origin.html deleted file mode 100644 index 2871862dd..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-unique-origin.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Unique origin with Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/unique-origin.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentItem = content['mp4-av-multikey'], - config = { - video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - initDataType: contentItem.initDataType, - audioType: contentItem.audio.type, - videoType: contentItem.video.type, - audioPath: contentItem.audio.path, - videoPath: contentItem.video.path - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-update-disallowed-input.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-update-disallowed-input.html deleted file mode 100644 index e5061a765..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-update-disallowed-input.html +++ /dev/null @@ -1,28 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test handling of invalid responses for update() for Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src="/resources/testharness.js"></script> - <script src="/resources/testharnessreport.js"></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/update-disallowed-input.js></script> - - </head> - <body> - <div id="log"></div> - <script> - var config = { - keysystem: 'org.w3.clearkey', - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-mp4-waiting-for-a-key.html b/testing/web-platform/tests/encrypted-media/clearkey-mp4-waiting-for-a-key.html deleted file mode 100644 index 2876a54a4..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-mp4-waiting-for-a-key.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Waiting for a key for Clear Key, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/waiting-for-a-key.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentItem = content['mp4-basic'], - handler = new MessageHandler('org.w3.clearkey', contentItem), - config = { - video: document.getElementById('videoelement'), - keysystem: 'org.w3.clearkey', - content: contentItem, - messageHandler: handler.messagehandler, - initDataType: 'keyids', - initData: getInitData(contentItem, 'keyids'), - audioType: contentItem.audio.type, - videoType: contentItem.video.type, - audioPath: contentItem.audio.path, - videoPath: contentItem.video.path, - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-not-callable-after-createsession.html b/testing/web-platform/tests/encrypted-media/clearkey-not-callable-after-createsession.html deleted file mode 100644 index 29dc21492..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-not-callable-after-createsession.html +++ /dev/null @@ -1,35 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Test MediaKeySession not callable immediately after CreateSession().</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Message handler for Clear Key --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/not-callable-after-createsession.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var config = { keysystem: 'org.w3.clearkey' - }; - - runTest(config); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/clearkey-update-non-ascii-input.html b/testing/web-platform/tests/encrypted-media/clearkey-update-non-ascii-input.html deleted file mode 100644 index cc1347291..000000000 --- a/testing/web-platform/tests/encrypted-media/clearkey-update-non-ascii-input.html +++ /dev/null @@ -1,36 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Test Clear Key handling of non-ASCII responses for update()</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/clearkey-update-non-ascii-input.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var contentItem = content['mp4-basic'], - config = { - keysystem: 'org.w3.clearkey', - content: contentItem, - initDataType: "keyids" - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 b/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 Binary files differdeleted file mode 100644 index 526998d6a..000000000 --- a/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4 Binary files differdeleted file mode 100644 index 4daf4d563..000000000 --- a/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4 Binary files differdeleted file mode 100644 index 77e869f80..000000000 --- a/testing/web-platform/tests/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/content-metadata.js b/testing/web-platform/tests/encrypted-media/content/content-metadata.js deleted file mode 100644 index 8ba5bcf06..000000000 --- a/testing/web-platform/tests/encrypted-media/content/content-metadata.js +++ /dev/null @@ -1,297 +0,0 @@ -content = addMemberListToObject( { - - 'mp4-clear' : { initDataType: 'cenc', - audio : { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' }, - video : { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_clear_dashinit.mp4' } - }, - - 'mp4-basic' : { assetId: 'mp4-basic', - initDataType: 'cenc', - audio : { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' }, - video : { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4' }, - keys : [ { kid: [ 0xad, 0x13, 0xf9, 0xea, 0x2b, 0xe6, 0x98, 0xb8, 0x75, 0xf5, 0x04, 0xa8, 0xe3, 0xcc, 0xea, 0x64 ], - key: [ 0xbe, 0x7d, 0xf8, 0xa3, 0x66, 0x7a, 0x6a, 0x8f, 0xd5, 0x64, 0xd0, 0xed, 0x81, 0x33, 0x9a, 0x95 ], - initDataType: 'cenc', - initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQrRP56ivmmLh19QSo48zqZBoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADYAdgBrAFQAcgBlAFkAcgB1AEoAaAAxADkAUQBTAG8ANAA4AHoAcQBaAEEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AagBZAEYATgBmADAAeQBmADQAaQBzAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' } ] - }, - - 'mp4-clear-encrypted' : { - assetId: 'mp4-basic', - initDataType: 'cenc', - audio : { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' }, - video : { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_clear_enc_dashinit.mp4' }, - keys : [ { kid: [ 0xad, 0x13, 0xf9, 0xea, 0x2b, 0xe6, 0x98, 0xb8, 0x75, 0xf5, 0x04, 0xa8, 0xe3, 0xcc, 0xea, 0x64 ], - key: [ 0xbe, 0x7d, 0xf8, 0xa3, 0x66, 0x7a, 0x6a, 0x8f, 0xd5, 0x64, 0xd0, 0xed, 0x81, 0x33, 0x9a, 0x95 ], - initDataType: 'cenc', - initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQrRP56ivmmLh19QSo48zqZBoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADYAdgBrAFQAcgBlAFkAcgB1AEoAaAAxADkAUQBTAG8ANAA4AHoAcQBaAEEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AagBZAEYATgBmADAAeQBmADQAaQBzAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' } ] - }, - - 'mp4-encrypted-clear' : { - assetId: 'mp4-basic', - initDataType: 'cenc', - audio : { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' }, - video : { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_enc_clear_dashinit.mp4' }, - keys : [ { kid: [ 0xad, 0x13, 0xf9, 0xea, 0x2b, 0xe6, 0x98, 0xb8, 0x75, 0xf5, 0x04, 0xa8, 0xe3, 0xcc, 0xea, 0x64 ], - key: [ 0xbe, 0x7d, 0xf8, 0xa3, 0x66, 0x7a, 0x6a, 0x8f, 0xd5, 0x64, 0xd0, 0xed, 0x81, 0x33, 0x9a, 0x95 ], - initDataType: 'cenc', - initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQrRP56ivmmLh19QSo48zqZBoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADYAdgBrAFQAcgBlAFkAcgB1AEoAaAAxADkAUQBTAG8ANAA4AHoAcQBaAEEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AagBZAEYATgBmADAAeQBmADQAaQBzAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' } ] - }, - - - 'mp4-av-multikey' : { - assetId: 'mp4-basic', - initDataType: 'cenc', - associatedInitData: true, // indicates that initData for one key causes other keys to be returned as well - audio: { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_enc_dashinit.mp4' }, - video : { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4' }, - keys : [ { kid: [ 0xad, 0x13, 0xf9, 0xea, 0x2b, 0xe6, 0x98, 0xb8, 0x75, 0xf5, 0x04, 0xa8, 0xe3, 0xcc, 0xea, 0x64 ], - key: [ 0xbe, 0x7d, 0xf8, 0xa3, 0x66, 0x7a, 0x6a, 0x8f, 0xd5, 0x64, 0xd0, 0xed, 0x81, 0x33, 0x9a, 0x95 ], - initDataType: 'cenc', - initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQrRP56ivmmLh19QSo48zqZBoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADYAdgBrAFQAcgBlAFkAcgB1AEoAaAAxADkAUQBTAG8ANAA4AHoAcQBaAEEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AagBZAEYATgBmADAAeQBmADQAaQBzAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' }, - { kid: [ 0x55, 0x8e, 0xe5, 0x41, 0xb9, 0x0a, 0xb2, 0xf3, 0x95, 0x0d, 0x00, 0xad, 0xe3, 0x76, 0x0d, 0x45 ], - key: [ 0x91, 0x03, 0x92, 0x63, 0x01, 0x6d, 0xa6, 0x35, 0x77, 0x0d, 0x57, 0xdb, 0x92, 0xf9, 0x8b, 0xd0 ], - initDataType : 'cenc', - initData: 'AAAAcXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAFEIARIQVY7lQbkKsvOVDQCt43YNRRoIY2FzdGxhYnMiKGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRjMmx1WjJ4bEluMD0yB2RlZmF1bHQAAAMacHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAAC+voCAAABAAEA8AI8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+AFEAZQBXAE8AVgBRAHEANQA4ADcASwBWAEQAUQBDAHQANAAzAFkATgBSAFEAPQA9ADwALwBLAEkARAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AWQBpAE8ALwAxADYATABzADkANgBFAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwADoALwAvAHAAbABhAHkAcgBlAGEAZAB5AC4AZABpAHIAZQBjAHQAdABhAHAAcwAuAG4AZQB0AC8AcAByAC8AcwB2AGMALwByAGkAZwBoAHQAcwBtAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA/AFAAbABhAHkAUgBpAGcAaAB0AD0AMQAmAGEAbQBwADsAVQBzAGUAUwBpAG0AcABsAGUATgBvAG4AUABlAHIAcwBpAHMAdABlAG4AdABMAGkAYwBlAG4AcwBlAD0AMQA8AC8ATABBAF8AVQBSAEwAPgA8AC8ARABBAFQAQQA+ADwALwBXAFIATQBIAEUAQQBEAEUAUgA+AA==' } ] - }, - - 'mp4-multikey' : { assetId: 'mp4-multikey', - initDataType: 'cenc', - audio: { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_2keys_2sess.mp4' }, - video: { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4' }, - keys: [ { kid: [ 0x13, 0xa7, 0x53, 0x06, 0xd1, 0x18, 0x91, 0x7b, 0x47, 0xa6, 0xc1, 0x83, 0x64, 0x42, 0x51, 0x6f ], - key: [ 0x8a, 0xaa, 0xd8, 0xc4, 0xdb, 0xde, 0xac, 0xcd, 0xad, 0x26, 0x76, 0xa1, 0xed, 0x38, 0x95, 0x2e ], - variantId: 'key1', - initDataType: 'cenc', - initData: 'AAAAjXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAG0IARIQE6dTBtEYkXtHpsGDZEJRbxoIY2FzdGxhYnMiRGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRNbk5sYzNOcGIyNGlMQ0oyWVhKcFlXNTBTV1FpT2lKclpYa3hJbjA9MgdkZWZhdWx0AAADwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA6KiAwAAAQABAJgDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBCAGwATwBuAEUAeABqAFIAZQA1AEYASABwAHMARwBEAFoARQBKAFIAYgB3AD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAC4AcwB0AGEAZwBpAG4AZwAuAGQAcgBtAHQAbwBkAGEAeQAuAGMAbwBtAC8AbABpAGMAZQBuAHMAZQAtAHAAcgBvAHgAeQAtAGgAZQBhAGQAZQByAGEAdQB0AGgALwBkAHIAbQB0AG8AZABhAHkALwBSAGkAZwBoAHQAcwBNAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA8AC8ATABBAF8AVQBSAEwAPgA8AEwAVQBJAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAFUASQBfAFUAUgBMAD4APABDAEgARQBDAEsAUwBVAE0APgBJAEQAUgB0AFAAZwBVAEkALwBiAEkAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=' }, - { kid: [ 0xee, 0x73, 0x56, 0x4e, 0xc8, 0xa8, 0x90, 0xf0, 0x78, 0xef, 0x68, 0x71, 0xfa, 0x4b, 0xe1, 0x8b ], - key: [ 0xe4, 0x4f, 0xe1, 0x45, 0x7c, 0x5e, 0xbc, 0xd8, 0x3e, 0xad, 0xdc, 0xd6, 0x2c, 0xaf, 0x55, 0x18 ], - variantId: 'key2', - initDataType: 'cenc', - initData: 'AAAAjXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAG0IARIQ7nNWTsiokPB472hx+kvhixoIY2FzdGxhYnMiRGV5SmhjM05sZEVsa0lqb2laVzFsTFhSbGMzUXRNbk5sYzNOcGIyNGlMQ0oyWVhKcFlXNTBTV1FpT2lKclpYa3lJbjA9MgdkZWZhdWx0AAADwnBzc2gAAAAAmgTweZhAQoarkuZb4IhflQAAA6KiAwAAAQABAJgDPABXAFIATQBIAEUAQQBEAEUAUgAgAHgAbQBsAG4AcwA9ACIAaAB0AHQAcAA6AC8ALwBzAGMAaABlAG0AYQBzAC4AbQBpAGMAcgBvAHMAbwBmAHQALgBjAG8AbQAvAEQAUgBNAC8AMgAwADAANwAvADAAMwAvAFAAbABhAHkAUgBlAGEAZAB5AEgAZQBhAGQAZQByACIAIAB2AGUAcgBzAGkAbwBuAD0AIgA0AC4AMAAuADAALgAwACIAPgA8AEQAQQBUAEEAPgA8AFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBFAFkATABFAE4APgAxADYAPAAvAEsARQBZAEwARQBOAD4APABBAEwARwBJAEQAPgBBAEUAUwBDAFQAUgA8AC8AQQBMAEcASQBEAD4APAAvAFAAUgBPAFQARQBDAFQASQBOAEYATwA+ADwASwBJAEQAPgBUAGwAWgB6ADcAcQBqAEkAOABKAEIANAA3ADIAaAB4ACsAawB2AGgAaQB3AD0APQA8AC8ASwBJAEQAPgA8AEwAQQBfAFUAUgBMAD4AaAB0AHQAcABzADoALwAvAGwAaQBjAC4AcwB0AGEAZwBpAG4AZwAuAGQAcgBtAHQAbwBkAGEAeQAuAGMAbwBtAC8AbABpAGMAZQBuAHMAZQAtAHAAcgBvAHgAeQAtAGgAZQBhAGQAZQByAGEAdQB0AGgALwBkAHIAbQB0AG8AZABhAHkALwBSAGkAZwBoAHQAcwBNAGEAbgBhAGcAZQByAC4AYQBzAG0AeAA8AC8ATABBAF8AVQBSAEwAPgA8AEwAVQBJAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAFUASQBfAFUAUgBMAD4APABDAEgARQBDAEsAUwBVAE0APgB4AEQASwBBAFkAMAB2AFoAaABVAFUAPQA8AC8AQwBIAEUAQwBLAFMAVQBNAD4APAAvAEQAQQBUAEEAPgA8AC8AVwBSAE0ASABFAEEARABFAFIAPgA=' } ] }, - - 'mp4-basic-key1' : { assetId: 'mp4-multikey-sequential', - variantId: 'key1', - initDataType: 'cenc', - audio: { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' }, - video: { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4' }, - keys: [ { kid: [0x8a, 0x0d, 0x85, 0x45, 0x21, 0x05, 0xd4, 0x15, 0x35, 0x8f, 0xea, 0x8f, 0x68, 0xe6, 0xc1, 0x91], - key: [0x76, 0x6f, 0xab, 0xc1, 0x68, 0x3f, 0xf8, 0xef, 0x4e, 0x76, 0x00, 0x24, 0xc5, 0x23, 0x8f, 0x10], - initDataType: 'cenc', - initData: 'AAAAlXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHUIARIQig2FRSEF1BU1j+qPaObBkRoIY2FzdGxhYnMiTGV5SmhjM05sZEVsa0lqb2liWEEwTFcxMWJIUnBhMlY1TFhObGNYVmxiblJwWVd3aUxDSjJZWEpwWVc1MFNXUWlPaUpyWlhreEluMD0yB2RlZmF1bHQAAANYcHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAADODgDAAABAAEALgM8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+AFIAWQBVAE4AaQBnAFUAaABGAGQAUQAxAGoAKwBxAFAAYQBPAGIAQgBrAFEAPQA9ADwALwBLAEkARAA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwATABVAEkAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAGwAYQB5AHIAZQBhAGQAeQAtAHUAaQAuAGUAeABhAG0AcABsAGUALgBjAG8AbQA8AC8ATABVAEkAXwBVAFIATAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AcQBOAEkAZQBiAFQAWABzAG8AcgBnAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A' } ] - }, - 'mp4-basic-key2' : { assetId: 'mp4-multikey-sequential', - variantId: 'key2', - initDataType: 'cenc', - audio: { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' }, - video: { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_multikey_key2_dashinit.mp4' }, - keys: [ { kid: [0xfb, 0xb4, 0xb7, 0xf3, 0x4a, 0xbd, 0x31, 0x87, 0x34, 0x4b, 0xce, 0xc4, 0x5f, 0x96, 0x68, 0x88], - key: [0x26, 0x52, 0xc3, 0x1d, 0xf7, 0x92, 0xd1, 0x7b, 0x08, 0xa6, 0xfa, 0xd3, 0x7c, 0xb6, 0x25, 0x60], - initDataType: 'cenc', - initData: 'AAAAlXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHUIARIQ+7S380q9MYc0S87EX5ZoiBoIY2FzdGxhYnMiTGV5SmhjM05sZEVsa0lqb2liWEEwTFcxMWJIUnBhMlY1TFhObGNYVmxiblJwWVd3aUxDSjJZWEpwWVc1MFNXUWlPaUpyWlhreUluMD0yB2RlZmF1bHQAAANYcHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAADODgDAAABAAEALgM8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADgANwBlADAAKwA3ADEASwBoAHoARQAwAFMAOAA3AEUAWAA1AFoAbwBpAEEAPQA9ADwALwBLAEkARAA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwATABVAEkAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAGwAYQB5AHIAZQBhAGQAeQAtAHUAaQAuAGUAeABhAG0AcABsAGUALgBjAG8AbQA8AC8ATABVAEkAXwBVAFIATAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4ARgB0AGkASQBoADYAUwBKAG0AcABZAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A' } ] }, - - 'mp4-multikey-sequential' : { assetId: 'mp4-multikey-sequential', - initDataType: 'cenc', - audio: { type: 'audio/mp4;codecs="mp4a.40.2"', - path: '/encrypted-media/content/audio_aac-lc_128k_dashinit.mp4' }, - video: { type: 'video/mp4;codecs="avc1.4d401e"', - path: '/encrypted-media/content/video_512x288_h264-360k_multikey_dashinit.mp4' }, - keys: [ { kid: [0x8a, 0x0d, 0x85, 0x45, 0x21, 0x05, 0xd4, 0x15, 0x35, 0x8f, 0xea, 0x8f, 0x68, 0xe6, 0xc1, 0x91], - key: [0x76, 0x6f, 0xab, 0xc1, 0x68, 0x3f, 0xf8, 0xef, 0x4e, 0x76, 0x00, 0x24, 0xc5, 0x23, 0x8f, 0x10], - variantId: 'key1', - initDataType: 'cenc', - initData: 'AAAAlXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHUIARIQig2FRSEF1BU1j+qPaObBkRoIY2FzdGxhYnMiTGV5SmhjM05sZEVsa0lqb2liWEEwTFcxMWJIUnBhMlY1TFhObGNYVmxiblJwWVd3aUxDSjJZWEpwWVc1MFNXUWlPaUpyWlhreEluMD0yB2RlZmF1bHQAAANYcHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAADODgDAAABAAEALgM8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+AFIAWQBVAE4AaQBnAFUAaABGAGQAUQAxAGoAKwBxAFAAYQBPAGIAQgBrAFEAPQA9ADwALwBLAEkARAA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwATABVAEkAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAGwAYQB5AHIAZQBhAGQAeQAtAHUAaQAuAGUAeABhAG0AcABsAGUALgBjAG8AbQA8AC8ATABVAEkAXwBVAFIATAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4AcQBOAEkAZQBiAFQAWABzAG8AcgBnAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A' }, - { kid: [0xfb, 0xb4, 0xb7, 0xf3, 0x4a, 0xbd, 0x31, 0x87, 0x34, 0x4b, 0xce, 0xc4, 0x5f, 0x96, 0x68, 0x88], - key: [0x26, 0x52, 0xc3, 0x1d, 0xf7, 0x92, 0xd1, 0x7b, 0x08, 0xa6, 0xfa, 0xd3, 0x7c, 0xb6, 0x25, 0x60], - variantId: 'key2', - initDataType: 'cenc', - initData: 'AAAAlXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAHUIARIQ+7S380q9MYc0S87EX5ZoiBoIY2FzdGxhYnMiTGV5SmhjM05sZEVsa0lqb2liWEEwTFcxMWJIUnBhMlY1TFhObGNYVmxiblJwWVd3aUxDSjJZWEpwWVc1MFNXUWlPaUpyWlhreUluMD0yB2RlZmF1bHQAAANYcHNzaAAAAACaBPB5mEBChquS5lvgiF+VAAADODgDAAABAAEALgM8AFcAUgBNAEgARQBBAEQARQBSACAAeABtAGwAbgBzAD0AIgBoAHQAdABwADoALwAvAHMAYwBoAGUAbQBhAHMALgBtAGkAYwByAG8AcwBvAGYAdAAuAGMAbwBtAC8ARABSAE0ALwAyADAAMAA3AC8AMAAzAC8AUABsAGEAeQBSAGUAYQBkAHkASABlAGEAZABlAHIAIgAgAHYAZQByAHMAaQBvAG4APQAiADQALgAwAC4AMAAuADAAIgA+ADwARABBAFQAQQA+ADwAUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEUAWQBMAEUATgA+ADEANgA8AC8ASwBFAFkATABFAE4APgA8AEEATABHAEkARAA+AEEARQBTAEMAVABSADwALwBBAEwARwBJAEQAPgA8AC8AUABSAE8AVABFAEMAVABJAE4ARgBPAD4APABLAEkARAA+ADgANwBlADAAKwA3ADEASwBoAHoARQAwAFMAOAA3AEUAWAA1AFoAbwBpAEEAPQA9ADwALwBLAEkARAA+ADwATABBAF8AVQBSAEwAPgBoAHQAdABwAHMAOgAvAC8AbABpAGMALgBzAHQAYQBnAGkAbgBnAC4AZAByAG0AdABvAGQAYQB5AC4AYwBvAG0ALwBsAGkAYwBlAG4AcwBlAC0AcAByAG8AeAB5AC0AaABlAGEAZABlAHIAYQB1AHQAaAAvAGQAcgBtAHQAbwBkAGEAeQAvAFIAaQBnAGgAdABzAE0AYQBuAGEAZwBlAHIALgBhAHMAbQB4ADwALwBMAEEAXwBVAFIATAA+ADwATABVAEkAXwBVAFIATAA+AGgAdAB0AHAAcwA6AC8ALwBwAGwAYQB5AHIAZQBhAGQAeQAtAHUAaQAuAGUAeABhAG0AcABsAGUALgBjAG8AbQA8AC8ATABVAEkAXwBVAFIATAA+ADwAQwBIAEUAQwBLAFMAVQBNAD4ARgB0AGkASQBoADYAUwBKAG0AcABZAD0APAAvAEMASABFAEMASwBTAFUATQA+ADwALwBEAEEAVABBAD4APAAvAFcAUgBNAEgARQBBAEQARQBSAD4A' } ] }, - - 'webm' : { audio : { type: 'audio/webm; codecs="opus"' }, - video : { type: 'video/webm; codecs="vp8"', - path: '/encrypted-media/content/test-encrypted.webm' }, - keys : [ { kid: [48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53], - key: [0xeb, 0xdd, 0x62, 0xf1, 0x68, 0x14, 0xd2, 0x7b, - 0x68, 0xef, 0x12, 0x2a, 0xfc, 0xe4, 0xae, 0x3c ] } ] - }, - 'webm-multikey' : - { audio : { type: 'audio/webm; codecs="opus"' }, - video : { type: 'video/webm; codecs="vp8"', - path: '/encrypted-media/content/test-encrypted-different-av-keys.webm' }, - keys : [ { kid: [48,49,50,51,52,53,54,55,56,57,48,49,50,51,52,53], - key: [ 0x7A, 0x7A, 0x62, 0xF1, 0x68, 0x14, 0xD2, 0x7B, - 0x68, 0xEF, 0x12, 0x2A, 0xFC, 0xE4, 0xAE, 0x0A ] }, - { kid: [49,50,51,52,53,54,55,56,57,48,49,50,51,52,53,54], - key: [ 0x30, 0x30, 0x62, 0xF1, 0x68, 0x14, 0xD2, 0x7B, - 0x68, 0xEF, 0x12, 0x2A, 0xFC, 0xE4, 0xAE, 0x0A ] } ] - }, -} ); - -function addMemberListToObject( o ) -{ - var items = [ ]; - for( var item in o ) - { - if ( !o.hasOwnProperty( item ) ) continue; - - o[item].name = item; - items.push( o[item] ); - } - - o._items = items; - - return o; -} - -function getInitData( contentitem, initDataType ) -{ - if (initDataType == 'webm') { - return new Uint8Array( contentitem.keys[ 0 ].kid ); // WebM initData supports only a single key - } - - if (initDataType == 'cenc') { - - var size = 36 + contentitem.keys.length * 16, - kids = contentitem.keys.map( function( k ) { return k.kid; } ); - - return new Uint8Array(Array.prototype.concat.call( [ - 0x00, 0x00, size / 256, size % 256, // size - 0x70, 0x73, 0x73, 0x68, // 'pssh' - 0x01, // version = 1 - 0x00, 0x00, 0x00, // flags - 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID - 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, - 0x00, 0x00, 0x00, kids.length ], // key count ] - Array.prototype.concat.apply( [], kids ), - [ 0x00, 0x00, 0x00, 0x00 ]// datasize - )); - } - if (initDataType == 'keyids') { - - return toUtf8( { kids: contentitem.keys.map( function( k ) { return base64urlEncode( new Uint8Array( k.kid ) ); } ) } ); - } - throw 'initDataType ' + initDataType + ' not supported.'; -} - -function getSingleKeyInitData( kid, initDataType ) -{ - if (initDataType == 'webm') { - return new Uint8Array( kid ); - } - - if (initDataType == 'cenc') { - - var size = 52; - - return new Uint8Array(Array.prototype.concat.call( [ - 0x00, 0x00, size / 256, size % 256, // size - 0x70, 0x73, 0x73, 0x68, // 'pssh' - 0x01, // version = 1 - 0x00, 0x00, 0x00, // flags - 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID - 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, - 0x00, 0x00, 0x00, 0x01 ], // key count ] - kid, - [ 0x00, 0x00, 0x00, 0x00 ]// datasize - )); - } - if (initDataType == 'keyids') { - - return toUtf8( { kids: [ base64urlEncode( new Uint8Array( kid ) ) ] } ); - } - throw 'initDataType ' + initDataType + ' not supported.'; -} - -function getMultikeyInitDatas( contentitem, initDataType ) -{ - return contentitem.keys.map( function( k ) { return getSingleKeyInitData( k.kid, initDataType ); } ); -} - -function getProprietaryInitDatas( contentitem ) -{ - var keysWithInitData = contentitem.keys.filter( function( k ) { return k.initData; } ); - return { initDataType: contentitem.initDataType, - initDatas : keysWithInitData.map( function( k ) { return k.initData; } ), - variantIds: keysWithInitData.map( function( k ) { return k.variantId; } ) - }; -} - -// Returns a promise that resolves to the following object -// { supported: boolean, // whether the content is supported at all -// content: <the content item>, // the content item description -// initDataTypes: <list of initDataTypes> -// } -// -// Note: we test initData types one at a time since some versions of Edge don't support testing several at once -// -function isContentSupportedForInitDataTypes( keysystem, initDataTypes, contentitem ) -{ - return Promise.all( initDataTypes.map( function( initDataType ) { - var configuration = { initDataTypes : [ initDataType ], - audioCapabilities: [ { contentType: contentitem.audio.type } ], - videoCapabilities: [ { contentType: contentitem.video.type } ] - }; - return navigator.requestMediaKeySystemAccess( keysystem, [ configuration ] ).then( function( access ) { - return { supported: true, initDataType: access.getConfiguration().initDataTypes[ 0 ] }; - }, function() { - return { supported: false }; - } ); - } ) ).then( function( results ) { - - var initDataTypes = results.filter( function( result ) { return result.supported; } ) - .map( function( result ) { return result.initDataType; } ); - - return initDataTypes.length > 0 ? - { content: contentitem, supported: true, initDataTypes: initDataTypes } - : { content: contentitem, supported: false }; - } ); -} - -// Returns a promise that resolves to { content:, supported:, initDataTypes: } object -function isContentSupported( keysystem, contentitem ) -{ - return isContentSupportedForInitDataTypes( keysystem, [ 'cenc', 'webm', 'keyids' ], contentitem ); -} - -// Returns a Promise resolving to an array of supported content for the key system -function getSupportedContent( keysystem ) -{ - return Promise.all( content._items.map( isContentSupported.bind( null, keysystem ) ) ). - then( function( results ) - { - return results.filter( function( r ) { return r.supported; } ).map( function( r ) { return r.content; } ); - } ); -} - -// Returns a Promise resolving to an array of { content:, initDataType: } pairs for the key system -function getSupportedContentAndInitDataTypes( keysystem ) -{ - return Promise.all( content._items.map( isContentSupported.bind( null, keysystem ) ) ). - then( function( results ) - { - return results.filter( function( r ) { return r.supported; } ); - } ); -} - -// gets a configuration object for provided piece of content -function getSimpleConfigurationForContent( contentitem ) -{ - return { initDataTypes: [ 'keyids', 'webm', 'cenc' ], - audioCapabilities: [ { contentType: contentitem.audio.type } ], - videoCapabilities: [ { contentType: contentitem.video.type } ] }; -} diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_clear_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_clear_dashinit.mp4 Binary files differdeleted file mode 100644 index 33ac63f6b..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_clear_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_clear_enc_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_clear_enc_dashinit.mp4 Binary files differdeleted file mode 100644 index dca23449a..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_clear_enc_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_dashinit.mp4 Binary files differdeleted file mode 100644 index 53a461e8a..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 Binary files differdeleted file mode 100644 index f59284cfe..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_2keys_2sess.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_clear_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_clear_dashinit.mp4 Binary files differdeleted file mode 100644 index d837ac650..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_clear_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4 Binary files differdeleted file mode 100644 index 156a799a9..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_enc_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_dashinit.mp4 Binary files differdeleted file mode 100644 index 659a61cdc..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4 deleted file mode 100644 index e69de29bb..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_key1_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_key2_dashinit.mp4 b/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_key2_dashinit.mp4 Binary files differdeleted file mode 100644 index 0b9b457a6..000000000 --- a/testing/web-platform/tests/encrypted-media/content/video_512x288_h264-360k_multikey_key2_dashinit.mp4 +++ /dev/null diff --git a/testing/web-platform/tests/encrypted-media/drm-check-initdata-type.html b/testing/web-platform/tests/encrypted-media/drm-check-initdata-type.html deleted file mode 100644 index 6b3324027..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-check-initdata-type.html +++ /dev/null @@ -1,32 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <!--<script src=/encrypted-media/content/content-metadata.js></script>--> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/check-initdata-type.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var config = { keysystem: getSupportedKeySystem() } - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-events-session-closed-event.html b/testing/web-platform/tests/encrypted-media/drm-events-session-closed-event.html deleted file mode 100644 index 425d17646..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-events-session-closed-event.html +++ /dev/null @@ -1,39 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test MediaKeySession closed event with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/events-session-closed-event.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var keysystem = getSupportedKeySystem(), - contentItem = content['mp4-basic'], - config = { - keysystem: keysystem, - content: contentItem, - initDataType: contentItem.initDataType, - audioType: contentItem.audio.type, - videoType: contentItem.video.type - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-events.html b/testing/web-platform/tests/encrypted-media/drm-events.html deleted file mode 100644 index 880376d60..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-events.html +++ /dev/null @@ -1,71 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Events with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/events.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var keysystem = getSupportedKeySystem(); - - getSupportedContentAndInitDataTypes( keysystem ) - .then( function( supported ) - { - // This test requires initData for supported content. - // We prefer explciit initData configured for the content, but - // otherwise we will generate initData for a supported initDataType - // FIXME: Move me to a utility function - var content, - initDataType, - initData; - - var contentWithExplicitInitData = supported.filter( function( s ) { return s.content.keys && s.content.initDataType; } ); - if ( contentWithExplicitInitData.length > 0 ) - { - content = contentWithExplicitInitData[ 0 ].content; - initDataType = content.keys[ 0 ].initDataType; - initData = base64DecodeToUnit8Array( content.keys[ 0 ].initData ); - } - else - { - content = supported[ 0 ].content; - initDataType = supported[ 0 ].initDataTypes[ 0 ]; - initData = getInitData( content, initDataType ); - } - - var handler = new MessageHandler( keysystem, content ); - - runTest( { keysystem: keysystem, - content: content, - messagehandler: handler.messagehandler, - initDataType: initDataType, - initData: initData - } ); - } ); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-expiration.html b/testing/web-platform/tests/encrypted-media/drm-expiration.html deleted file mode 100644 index 6dec51147..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-expiration.html +++ /dev/null @@ -1,67 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Expiration with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/expiration.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var keysystem = getSupportedKeySystem(); - - getSupportedContentAndInitDataTypes( keysystem ).then( function( supported ) { - // This test requires initData for supported content. - // We prefer explicit initData configured for the content, but - // otherwise we will generate initData for a supported initDataType - // FIXME: Move me to a utility function - var content, - initDataType, - initData; - - var contentWithExplicitInitData = supported.filter( function( s ) { return s.content.initDataType && s.content.keys; } ); - if ( contentWithExplicitInitData.length > 0 ) { - content = contentWithExplicitInitData[ 0 ].content; - initDataType = content.keys[ 0 ].initDataType; - initData = base64DecodeToUnit8Array( content.keys[ 0 ].initData ); - } else { - content = supported[ 0 ].content; - initDataType = supported[ 0 ].initDataTypes[ 0 ]; - initData = getInitData( content, initDataType ); - } - - var handler = new MessageHandler( keysystem, content ); - - runTest( { keysystem: keysystem, - content: content, - messagehandler: handler.messagehandler, - initDataType: initDataType, - initData: initData, - expiration: Date.now().valueOf() + 120000 // Two minutes from now - } ); - } ); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-generate-request-disallowed-input.html b/testing/web-platform/tests/encrypted-media/drm-generate-request-disallowed-input.html deleted file mode 100644 index 70c46edc7..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-generate-request-disallowed-input.html +++ /dev/null @@ -1,32 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Test handling of invalid initData for generateRequest()</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/generate-request-disallowed-input.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var config = { keysystem: getSupportedKeySystem() - }; - - runTest(config); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-invalid-license.html b/testing/web-platform/tests/encrypted-media/drm-invalid-license.html deleted file mode 100644 index 9584f499c..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-invalid-license.html +++ /dev/null @@ -1,32 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Test handling of invalid DRM license</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/invalid-license.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var keysystem = getSupportedKeySystem(), - config = { - keysystem: keysystem - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-keystatuses-multiple-sessions.html b/testing/web-platform/tests/encrypted-media/drm-keystatuses-multiple-sessions.html deleted file mode 100644 index 8ef745c4f..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-keystatuses-multiple-sessions.html +++ /dev/null @@ -1,55 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, multiple keys for audio/video</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM server --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/keystatuses-multiple-sessions.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(); - getSupportedContent( keysystem ) - .then( function( contents ) { - - // Select a content item with multiple keys and initData - var contentitem = contents.filter( function( item ) { return item.keys && item.keys.length > 1 && item.initDataType && !item.associatedInitData; } )[ 0 ], - handler = new MessageHandler( keysystem, contentitem ), - config = { keysystem: keysystem, - content: contentitem, - messagehandler: handler.messagehandler, - initDataType: contentitem.initDataType, - initData: getProprietaryInitDatas(contentitem).initDatas.map( base64DecodeToUnit8Array ) - }; - - runTest(config); - - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-keystatuses.html b/testing/web-platform/tests/encrypted-media/drm-keystatuses.html deleted file mode 100644 index de7ff395d..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-keystatuses.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/keystatuses.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var keysystem = getSupportedKeySystem(); - getSupportedContent( keysystem ).then( function( contents ) { - // Select a content item with multiple keys and initData that retrieves all keys - var contentitem = contents.filter( function( item ) { - return item.keys && item.keys.length > 1 && item.initDataType && item.associatedInitData; - } )[ 0 ]; - - var handler = new MessageHandler( keysystem, contentitem ); - var config = { keysystem: keysystem, - content: contentitem, - messagehandler: handler.messagehandler, - initDataType: contentitem.initDataType, - initData: base64DecodeToUnit8Array( getProprietaryInitDatas(contentitem).initDatas[ 0 ] ) - }; - - runTest(config); - - } ); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-onencrypted.html b/testing/web-platform/tests/encrypted-media/drm-mp4-onencrypted.html deleted file mode 100644 index 9e4aff330..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-onencrypted.html +++ /dev/null @@ -1,47 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Encrypted fired on encrypted media file with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/onencrypted.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentItem = content['mp4-av-multikey'], - config = { - video: document.getElementById('videoelement'), - content: contentItem, - audioType: contentItem.audio.type, - videoType: contentItem.video.type, - audioPath: contentItem.audio.path, - videoPath: contentItem.video.path, - initDataType: contentItem.initDataType, - keys: contentItem.keys - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html deleted file mode 100644 index 59350fb15..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-destroy-persistent-license.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, destroy the license</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-destroy-persistent-license.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem, 'persistent-license' ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType - }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-license-events.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-license-events.html deleted file mode 100644 index 3df5fffd2..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-license-events.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, event sequence</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-persistent-license-events.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem, 'persistent-license' ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-license.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-license.html deleted file mode 100644 index 066e0040f..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-license.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-persistent-license.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem, 'persistent-license' ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType - }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html deleted file mode 100644 index b0c82621a..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-usage-record-events.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, persistent-usage-record session with DRM, mp4, event sequence</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-persistent-usage-record-events.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem, 'persistent-usage-record' ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - servercertificate: handler.servercertificate - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-usage-record.html deleted file mode 100644 index 1a9f8fb6f..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-persistent-usage-record.html +++ /dev/null @@ -1,54 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful Playback, persistent-usage-record session with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-persistent-usage-record.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem, 'persistent-usage-record' ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - servercertificate: handler.servercertificate - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html deleted file mode 100644 index 3a1646174..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-destroy-persistent-license.html +++ /dev/null @@ -1,54 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, retrieve license, playback and destroy the license</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-retrieve-persistent-license.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem, 'persistent-license' ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - windowscript: 'resources/drm-retrieve-destroy-persistent-license.html', - testcase: 'playback, retrieve, playback and destroy' }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html deleted file mode 100644 index 416093c14..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-persistent-license.html +++ /dev/null @@ -1,54 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful Playback, persistent-license session with DRM, mp4, retrieve the license, playback</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-retrieve-persistent-license.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem, 'persistent-license' ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - windowscript: 'resources/drm-retrieve-persistent-license.html', - testcase: 'playback, retrieve, playback' }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html deleted file mode 100644 index da5048f29..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-retrieve-persistent-usage-record.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-usage-record, playback and retrieve record in new window, DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM server --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem, 'persistent-usage-record' ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - servercertificate: handler.servercertificate, - windowscript: 'resources/drm-retrieve-persistent-usage-record.html' }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html deleted file mode 100644 index a8621ba25..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-clear-encrypted.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, clear then encrypted</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-clear-encrypted'], - handler = new MessageHandler(keysystem, contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - testcase: 'single key, clear then encrypted content', - duration: 4 }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear-sources.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear-sources.html deleted file mode 100644 index 74bd77053..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear-sources.html +++ /dev/null @@ -1,58 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, alternate Encrypted and Clear playbacks, Temporary, mp4, DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-encrypted-clear-sources.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - encryptedcontentitem = content['mp4-basic'], - clearcontentitem = content['mp4-clear'], - handler = new MessageHandler(keysystem, encryptedcontentitem), - configEncrypted = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: encryptedcontentitem.audio.path, - videoPath: encryptedcontentitem.video.path, - audioType: encryptedcontentitem.audio.type, - videoType: encryptedcontentitem.video.type, - initDataType: encryptedcontentitem.initDataType - }, - configClear = { audioPath: clearcontentitem.audio.path, - videoPath: clearcontentitem.video.path, - audioType: clearcontentitem.audio.type, - videoType: clearcontentitem.video.type, - }; - - runTest(configEncrypted,configClear); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html deleted file mode 100644 index ed5ff2363..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-encrypted-clear.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, encrypted then clear</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-encrypted-clear'], - handler = new MessageHandler(keysystem, contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - testcase: 'single key, clear then encrypted content', - duration: 4 }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-events.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-events.html deleted file mode 100644 index 9846eeeec..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-events.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful playback, temporary session with DRM, mp4, validating events</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-events.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-expired.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-expired.html deleted file mode 100644 index 1a649d869..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-expired.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, expired license</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-expired.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler(keysystem, contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential-readyState.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential-readyState.html deleted file mode 100644 index 42d563a5d..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential-readyState.html +++ /dev/null @@ -1,58 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, multiple keys in sequence, check readyState</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-multikey-sequential.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-multikey-sequential'], - handler = new MessageHandler(keysystem, contentitem), - initdatas = getProprietaryInitDatas(contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - initData: initdatas.initDatas.map(base64DecodeToUnit8Array), - variantIds: initdatas.variantIds, - duration: 5, - checkReadyState: true - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html deleted file mode 100644 index 0b23721b6..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey-sequential.html +++ /dev/null @@ -1,57 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, multiple keys in sequence</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-multikey-sequential.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-multikey-sequential'], - handler = new MessageHandler( keysystem, contentitem ), - initdatas = getProprietaryInitDatas(contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - initData: initdatas.initDatas.map(base64DecodeToUnit8Array), - variantIds: initdatas.variantIds, - duration: 5 - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey.html deleted file mode 100644 index b29139ed2..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multikey.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful playback, temporary session with DRM, mp4, multiple keys</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-av-multikey'], - handler = new MessageHandler( keysystem, contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - testcase: 'multikey audio/video' - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multisession.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multisession.html deleted file mode 100644 index 391ebf907..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-multisession.html +++ /dev/null @@ -1,55 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-multisession.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-multikey'], - handler = new MessageHandler( keysystem, contentitem ), - proprietaryInitDatas = getProprietaryInitDatas(contentitem), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - initData: proprietaryInitDatas.initDatas.map( base64DecodeToUnit8Array ), - variantIds: proprietaryInitDatas.variantIds, - testcase: 'multikey video' }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html deleted file mode 100644 index 20dda66ad..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-src.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-setMediaKeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - testcase: SETMEDIAKEYS_AFTER_SRC }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html deleted file mode 100644 index 4f81da08d..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-after-update.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-setMediaKeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - testcase: SETMEDIAKEYS_AFTER_UPDATE }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html deleted file mode 100644 index c97c571b6..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-immediately.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-setMediaKeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - testcase: SETMEDIAKEYS_IMMEDIATELY }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html deleted file mode 100644 index c16809b85..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-setMediaKeys-onencrypted.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-setMediaKeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - testcase: SETMEDIAKEYS_ONENCRYPTED }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html deleted file mode 100644 index 1aafba40f..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-two-videos.html +++ /dev/null @@ -1,54 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4, two videos</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM server --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-two-videos.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement1" width="200px"></video> - <video id="videoelement2" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem ), - config = { video: [ document.getElementById( 'videoelement1' ), - document.getElementById( 'videoelement2' ) ], - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html deleted file mode 100644 index bf970db67..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary-waitingforkey.html +++ /dev/null @@ -1,53 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Verify MediaKeySession.keyStatuses with multiple sessions, DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary-waitingforkey.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentitem = content['mp4-basic'], - keysystem = getSupportedKeySystem(), - handler = new MessageHandler( keysystem, contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - initData: getProprietaryInitDatas(contentitem).initDatas.map( base64DecodeToUnit8Array ), - }; - - runTest(config); - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary.html b/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary.html deleted file mode 100644 index 592f2a8a1..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-playback-temporary.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Successful Playback, Temporary session with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/playback-temporary.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler( keysystem, contentitem ), - config = { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: contentitem.initDataType, - testcase: 'single key' }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html b/testing/web-platform/tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html deleted file mode 100644 index 2656f8feb..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-requestmediakeysystemaccess.html +++ /dev/null @@ -1,41 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <meta name="timeout" content="long"> - <title>Encrypted Media Extensions: requestMediaKeySystemAccess tests, DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/requestmediakeysystemaccess.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var contentitem = content['mp4-basic'], - keySystem = getSupportedKeySystem(), - config = { keysystem: keySystem, - audioType: contentitem.audio.type, - videoType: contentitem.video.type, - initDataType: getSupportedInitDataTypes( keySystem )[ 0 ] - }; - - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-reset-src-after-setmediakeys.html b/testing/web-platform/tests/encrypted-media/drm-mp4-reset-src-after-setmediakeys.html deleted file mode 100644 index b91211df4..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-reset-src-after-setmediakeys.html +++ /dev/null @@ -1,46 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Reset MediaSource after setMediaKeys for DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/reset-src-after-setmediakeys.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentItem = content['mp4-av-multikey'], - keysystem = getSupportedKeySystem(), - config = { - video: document.getElementById('videoelement'), - keysystem: keysystem, - content: contentItem, - initDataType: contentItem.initDataType, - audioType: contentItem.audio.type, - videoType: contentItem.video.type, - audioPath: contentItem.audio.path, - videoPath: contentItem.video.path, - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html b/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html deleted file mode 100644 index d215036fa..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-again-after-playback.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys again after playback with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-again-after-playback.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler(keysystem, contentitem ); - getSupportedContent( keysystem ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - content: contentitem, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html b/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html deleted file mode 100644 index d1723b5ce..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-again-after-resetting-src.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys again after resetting src attribute on video element with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-again-after-resetting-src.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic'], - handler = new MessageHandler(keysystem, contentitem ); - getSupportedContent( keysystem ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: keysystem, - messagehandler: handler.messagehandler, - content: contentitem, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html b/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html deleted file mode 100644 index 581d22f4a..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-at-same-time.html +++ /dev/null @@ -1,44 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys multiple at same time with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-at-same-time.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(); - getSupportedContent( keysystem ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: keysystem, - content: contents[ 0 ] - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html b/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html deleted file mode 100644 index 7d3fe0963..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-different-mediakeys.html +++ /dev/null @@ -1,50 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys multiple times with different mediakeys with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-multiple-times-with-different-mediakeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic']; - getSupportedContent( keysystem ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: keysystem, - content: contentitem, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html b/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html deleted file mode 100644 index efc6d1978..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-multiple-times-with-the-same-mediakeys.html +++ /dev/null @@ -1,50 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys multiple times with the same mediakeys with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-multiple-times-with-the-same-mediakeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(), - contentitem = content['mp4-basic']; - getSupportedContent( keysystem ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: keysystem, - content: contentitem, - audioPath: contentitem.audio.path, - videoPath: contentitem.video.path, - audioType: contentitem.audio.type, - videoType: contentitem.video.type - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html b/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html deleted file mode 100644 index bd78cb930..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys-to-multiple-video-elements.html +++ /dev/null @@ -1,48 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys to multiple video elements with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys-to-multiple-video-elements.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video1'> - <video id="videoelement1" width="200px"></video> - </div> - <div id='video2'> - <video id="videoelement2" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(); - getSupportedContent( keysystem ).then( function( contents ) { - runTest( { video1: document.getElementById('videoelement1'), - video2: document.getElementById('videoelement2'), - keysystem: keysystem, - content: contents[ 0 ] - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys.html b/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys.html deleted file mode 100644 index 1a74a6236..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-setmediakeys.html +++ /dev/null @@ -1,44 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: setMediaKeys with DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/setmediakeys.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var keysystem = getSupportedKeySystem(); - getSupportedContent( keysystem ).then( function( contents ) { - runTest( { video: document.getElementById('videoelement'), - keysystem: keysystem, - content: contents[ 0 ] - } ); - } ); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeys.html b/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeys.html deleted file mode 100644 index f6d039261..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeys.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test MediaKeys attribute, setServerCertificate and setServerCertificate exception syntax for DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/syntax-mediakeys.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - <script> - var keysystem = getSupportedKeySystem(); - var contentItem = content['mp4-basic'], - config = { - keysystem: keysystem, - content: contentItem, - initData: stringToUint8Array(atob(contentItem.keys[0].initData)), - initDataType: contentItem.initDataType, - audioType: contentItem.audio.type, - videoType: contentItem.video.type - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeysession.html b/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeysession.html deleted file mode 100644 index 0c737df9e..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeysession.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test MediaKeySession attribute and function syntax for DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/syntax-mediakeysession.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - <script> - var keysystem = getSupportedKeySystem(); - var contentItem = content['mp4-basic'], - config = { - keysystem: keysystem, - content: contentItem, - initData: stringToUint8Array(atob(contentItem.keys[0].initData)), - initDataType: contentItem.initDataType, - audioType: contentItem.audio.type, - videoType: contentItem.video.type - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeysystemaccess.html b/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeysystemaccess.html deleted file mode 100644 index d54e19437..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-syntax-mediakeysystemaccess.html +++ /dev/null @@ -1,43 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Test navigator.requestmediakeysystemaccess exception and MediaKeySystemAccess attribute syntax for DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/syntax-mediakeysystemaccess.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - <script> - var keysystem = getSupportedKeySystem(); - var contentItem = content['mp4-basic'], - config = { - keysystem: keysystem, - content: contentItem, - initData: stringToUint8Array(atob(contentItem.keys[0].initData)), - initDataType: contentItem.initDataType, - audioType: contentItem.audio.type, - videoType: contentItem.video.type - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-unique-origin.html b/testing/web-platform/tests/encrypted-media/drm-mp4-unique-origin.html deleted file mode 100644 index a344ae5c0..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-unique-origin.html +++ /dev/null @@ -1,44 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Unique origin with DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/unique-origin.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentItem = content['mp4-av-multikey'], - keysystem = getSupportedKeySystem(), - config = { - video: document.getElementById('videoelement'), - keysystem: keysystem, - initDataType: contentItem.initDataType, - audioType: contentItem.audio.type, - videoType: contentItem.video.type, - audioPath: contentItem.audio.path, - videoPath: contentItem.video.path - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-mp4-waiting-for-a-key.html b/testing/web-platform/tests/encrypted-media/drm-mp4-waiting-for-a-key.html deleted file mode 100644 index 508afcacb..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-mp4-waiting-for-a-key.html +++ /dev/null @@ -1,52 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions - Waiting for a key for DRM, mp4</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/waiting-for-a-key.js></script> - - </head> - <body> - <div id='log'></div> - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - var contentItem = content['mp4-basic'], - keysystem = getSupportedKeySystem(), - handler = new MessageHandler( keysystem, contentItem ), - config = { - video: document.getElementById('videoelement'), - keysystem: keysystem, - content: contentItem, - messageHandler: handler.messagehandler, - initDataType: contentItem.initDataType, - audioType: contentItem.audio.type, - videoType: contentItem.video.type, - audioPath: contentItem.audio.path, - videoPath: contentItem.video.path, - }; - runTest(config); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-not-callable-after-createsession.html b/testing/web-platform/tests/encrypted-media/drm-not-callable-after-createsession.html deleted file mode 100644 index 22d9a1359..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-not-callable-after-createsession.html +++ /dev/null @@ -1,35 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Test MediaKeySession not callable immediately after CreateSession(), DRM.</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - - <!-- Message handler for DRM server --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/not-callable-after-createsession.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var config = { keysystem: getSupportedKeySystem() - }; - - runTest(config); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/drm-temporary-license-type.html b/testing/web-platform/tests/encrypted-media/drm-temporary-license-type.html deleted file mode 100644 index a4b54dac3..000000000 --- a/testing/web-platform/tests/encrypted-media/drm-temporary-license-type.html +++ /dev/null @@ -1,71 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Test that persistent license cannot be ingested into temporary session</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Web Platform Test Harness scripts --> - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Content metadata --> - <script src=/encrypted-media/content/content-metadata.js></script> - - <!-- Message handler for DRM servers --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - <!-- The script for this specific test --> - <script src=/encrypted-media/scripts/temporary-license-type.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - var keysystem = getSupportedKeySystem(); - - getSupportedContentAndInitDataTypes( keysystem ) - .then( function( supported ) - { - // This test requires initData for supported content. - // We prefer explicit initData configured for the content, but - // otherwise we will generate initData for a supported initDataType - // FIXME: Move me to a utility function - var content, - initDataType, - initData; - - var contentWithExplicitInitData = supported.filter( function( s ) { return s.content.keys && s.content.initDataType; } ); - if ( contentWithExplicitInitData.length > 0 ) - { - content = contentWithExplicitInitData[ 0 ].content; - initDataType = content.keys[ 0 ].initDataType; - initData = base64DecodeToUnit8Array( content.keys[ 0 ].initData ); - } - else - { - content = supported[ 0 ].content; - initDataType = supported[ 0 ].initDataTypes[ 0 ]; - initData = getInitData( content, initDataType ); - } - - var handler = new MessageHandler( keysystem, content, 'persistent-license' ); - - runTest( { keysystem: keysystem, - content: content, - messagehandler: handler.messagehandler, - initDataType: initDataType, - initData: initData - } ); - } ); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/idlharness.html b/testing/web-platform/tests/encrypted-media/idlharness.html deleted file mode 100644 index e65ad5e30..000000000 --- a/testing/web-platform/tests/encrypted-media/idlharness.html +++ /dev/null @@ -1,51 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extentions IDL test</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <script src=/resources/testharness.js></script> - <script src=/resources/testharnessreport.js></script> - <script src=/resources/WebIDLParser.js></script> - <script src=/resources/idlharness.js></script> - <script src=/encrypted-media/util/fetch.js></script> - </head> - <body> - <h1 class="instructions">Description</h1> - <p class="instructions"> - This test verifies that implementations of the Encrypted Media Extensions API match its WebIDL definition. - </p> - - <div id='log'></div> - - <script> - setup(function() { - - fetch( 'EncryptedMediaExtensions.idl') - .then( function( response ) { - if ( !response.ok ) throw new Error( 'IDL fetch failed' ); - return response.text(); - } ) - .then( function( idls ) { - - var idl_array = new IdlArray(); - idl_array.add_untested_idls("[PrimaryGlobal] interface Window {};"); - idl_array.add_untested_idls("interface Navigator {};"); - idl_array.add_untested_idls("interface ArrayBuffer {};"); - idl_array.add_untested_idls("interface HTMLMediaElement {};"); - idl_array.add_untested_idls("interface Event {};"); - idl_array.add_untested_idls("interface EventTarget {};"); - - idl_array.add_idls(idls); - - idl_array.test(); - - done(); - - } ); - - }, {explicit_done: true}); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/polyfill/cast-polyfill.js b/testing/web-platform/tests/encrypted-media/polyfill/cast-polyfill.js deleted file mode 100644 index 576e0ad04..000000000 --- a/testing/web-platform/tests/encrypted-media/polyfill/cast-polyfill.js +++ /dev/null @@ -1,80 +0,0 @@ -(function() { - - if ( /CrKey\/[0-9]+\.[0-9a-z]+\.[0-9a-z]+/i.exec( navigator.userAgent ) ) { - - var castscript = document.createElement('script'); - castscript.type = 'text/javascript'; - castscript.src = 'https://www.gstatic.com/cast/sdk/libs/receiver/2.0.0/cast_receiver.js' - document.head.appendChild( castscript ); - - var _requestMediaKeySystemAccess = navigator.requestMediaKeySystemAccess.bind( navigator ), - _setMediaKeys = HTMLMediaElement.prototype.setMediaKeys, - _load = MediaKeySession.prototype.load; - - MediaKeySession.prototype.load = function load() - { - return _load.call( this ).then( function( success ) - { - return success ? this.remove() : false; - }.bind( this ) ); - }; - - function MediaKeys( mediaKeys ) - { - this._mediaKeys = mediaKeys; - } - - MediaKeys.prototype.setServerCertificate = function setServerCertificate( certificate ) - { - return this._mediaKeys.setServerCertificate( certificate ); - }; - - MediaKeys.prototype.createSession = function createSession( sessionType ) { - - if ( sessionType === 'persistent-usage-record' ) - { - return cast.receiver.eme.KeySession.createSession( this._mediaKeys, 'persistent-release-message' ); - } - - return this._mediaKeys.createSession( sessionType ); - }; - - function MediaKeySystemAccess( access ) - { - this._access = mediaKeySystemAccess; - } - - Object.defineProperty( MediaKeySystemAccess.prototype, 'keySystem', { get: function() { return this._access.keySystem; } } ); - - MediaKeySystemAccess.prototype.getConfiguration = function getConfiguration() { return this._access.getConfiguration(); }; - - MediaKeySystemAccess.prototype.createMediaKeys = function createMediaKeys() { - - return this._access.createMediaKey().then( function( mediaKeys ) { return new MediaKeys( mediaKeys ); } ); - - }; - - HTMLMediaElement.prototype.setMediaKeys = function setMediaKeys( mediaKeys ) - { - if ( mediaKeys instanceof MediaKeys ) - { - return _setMediaKeys.call( this, mediaKeys._mediaKeys ); - } - else - { - return _setMediaKeys.call( this, mediaKeys ); - } - }; - - navigator.requestMediaKeySystemAccess = function requestMediaKeySystemAccess( keysystem, supportedConfigurations ) { - - if ( keysystem !== 'com.chromecast.playready' ) - { - return _requestMediaKeySystemAccess( keysystem, supportedConfigurations ); - } - - return _requestMediaKeySystemAccess( keysystem, supportedConfigurations ) - .then( function( access ) { return new MediaKeySystemAccess( access ); } ); - }; - } -})();
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/polyfill/chrome-polyfill.js b/testing/web-platform/tests/encrypted-media/polyfill/chrome-polyfill.js deleted file mode 100644 index 2f11497cc..000000000 --- a/testing/web-platform/tests/encrypted-media/polyfill/chrome-polyfill.js +++ /dev/null @@ -1,37 +0,0 @@ -(function(){ - if( navigator.userAgent.toLowerCase().indexOf('edge') === -1 - && navigator.userAgent.toLowerCase().indexOf('chrome') > -1){ - - if ( ( /chrome\/([0-9]*)\./.exec( navigator.userAgent.toLowerCase() )[1] | 0 ) < 54 ) { - - // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=622956 - // Chrome does not fire the empty keystatuschange event when a session is closed - var _mediaKeySessionClose = MediaKeySession.prototype.close; - var _mediaKeySessionKeyStatusesGetter = Object.getOwnPropertyDescriptor( MediaKeySession.prototype, 'keyStatuses' ).get; - var _emptyMediaKeyStatusMap = { size: 0, - has: function() { return false; }, - get: function() { return undefined; }, - entries:function() { return []; }, // this may not be correct, I think it should be some iterator thing - keys: function() { return []; }, - values: function() { return []; }, - forEach:function() { return; } }; - - MediaKeySession.prototype.close = function close() - { - this.__closed = true; - - setTimeout( function() { - this.dispatchEvent( new Event( 'keystatuseschange' ) ); - }.bind( this ), 0 ); - - return _mediaKeySessionClose.call( this ); - }; - - Object.defineProperty( MediaKeySession.prototype, 'keyStatuses', { get: function() { - - return this.__closed ? _emptyMediaKeyStatusMap : _mediaKeySessionKeyStatusesGetter.call( this ); - - } } ); - } - } -}()); diff --git a/testing/web-platform/tests/encrypted-media/polyfill/clearkey-polyfill.js b/testing/web-platform/tests/encrypted-media/polyfill/clearkey-polyfill.js deleted file mode 100644 index 057ea3e03..000000000 --- a/testing/web-platform/tests/encrypted-media/polyfill/clearkey-polyfill.js +++ /dev/null @@ -1,510 +0,0 @@ -(function(){ - - // Save platform functions that will be modified - var _requestMediaKeySystemAccess = navigator.requestMediaKeySystemAccess.bind( navigator ), - _setMediaKeys = HTMLMediaElement.prototype.setMediaKeys; - - // Allow us to modify the target of Events - Object.defineProperties( Event.prototype, { - target: { get: function() { return this._target || this.currentTarget; }, - set: function( newtarget ) { this._target = newtarget; } } - } ); - - var EventTarget = function(){ - this.listeners = {}; - }; - - EventTarget.prototype.listeners = null; - - EventTarget.prototype.addEventListener = function(type, callback){ - if(!(type in this.listeners)) { - this.listeners[type] = []; - } - this.listeners[type].push(callback); - }; - - EventTarget.prototype.removeEventListener = function(type, callback){ - if(!(type in this.listeners)) { - return; - } - var stack = this.listeners[type]; - for(var i = 0, l = stack.length; i < l; i++){ - if(stack[i] === callback){ - stack.splice(i, 1); - return this.removeEventListener(type, callback); - } - } - }; - - EventTarget.prototype.dispatchEvent = function(event){ - if(!(event.type in this.listeners)) { - return; - } - var stack = this.listeners[event.type]; - event.target = this; - for(var i = 0, l = stack.length; i < l; i++) { - stack[i].call(this, event); - } - }; - - function MediaKeySystemAccessProxy( keysystem, access, configuration ) - { - this._keysystem = keysystem; - this._access = access; - this._configuration = configuration; - } - - Object.defineProperties( MediaKeySystemAccessProxy.prototype, { - keysystem: { get: function() { return this._keysystem; } } - }); - - MediaKeySystemAccessProxy.prototype.getConfiguration = function getConfiguration() - { - return this._configuration; - }; - - MediaKeySystemAccessProxy.prototype.createMediaKeys = function createMediaKeys() - { - return new Promise( function( resolve, reject ) { - - this._access.createMediaKeys() - .then( function( mediaKeys ) { resolve( new MediaKeysProxy( mediaKeys ) ); }) - .catch( function( error ) { reject( error ); } ); - - }.bind( this ) ); - }; - - function MediaKeysProxy( mediaKeys ) - { - this._mediaKeys = mediaKeys; - this._sessions = [ ]; - this._videoelement = undefined; - this._onTimeUpdateListener = MediaKeysProxy.prototype._onTimeUpdate.bind( this ); - } - - MediaKeysProxy.prototype._setVideoElement = function _setVideoElement( videoElement ) - { - if ( videoElement !== this._videoelement ) - { - if ( this._videoelement ) - { - this._videoelement.removeEventListener( 'timeupdate', this._onTimeUpdateListener ); - } - - this._videoelement = videoElement; - - if ( this._videoelement ) - { - this._videoelement.addEventListener( 'timeupdate', this._onTimeUpdateListener ); - } - } - }; - - MediaKeysProxy.prototype._onTimeUpdate = function( event ) - { - this._sessions.forEach( function( session ) { - - if ( session._sessionType === 'persistent-usage-record' ) - { - session._onTimeUpdate( event ); - } - - } ); - }; - - MediaKeysProxy.prototype._removeSession = function _removeSession( session ) - { - var index = this._sessions.indexOf( session ); - if ( index !== -1 ) this._sessions.splice( index, 1 ); - }; - - MediaKeysProxy.prototype.createSession = function createSession( sessionType ) - { - if ( !sessionType || sessionType === 'temporary' ) return this._mediaKeys.createSession(); - - var session = new MediaKeySessionProxy( this, sessionType ); - this._sessions.push( session ); - - return session; - }; - - MediaKeysProxy.prototype.setServerCertificate = function setServerCertificate( certificate ) - { - return this._mediaKeys.setServerCertificate( certificate ); - }; - - function MediaKeySessionProxy( mediaKeysProxy, sessionType ) - { - EventTarget.call( this ); - - this._mediaKeysProxy = mediaKeysProxy - this._sessionType = sessionType; - this._sessionId = ""; - - // MediaKeySessionProxy states - // 'created' - After initial creation - // 'loading' - Persistent license session waiting for key message to load stored keys - // 'active' - Normal active state - proxy all key messages - // 'removing' - Release message generated, waiting for ack - // 'closed' - Session closed - this._state = 'created'; - - this._closed = new Promise( function( resolve ) { this._resolveClosed = resolve; }.bind( this ) ); - } - - MediaKeySessionProxy.prototype = Object.create( EventTarget.prototype ); - - Object.defineProperties( MediaKeySessionProxy.prototype, { - - sessionId: { get: function() { return this._sessionId; } }, - expiration: { get: function() { return NaN; } }, - closed: { get: function() { return this._closed; } }, - keyStatuses:{ get: function() { return this._session.keyStatuses; } }, // TODO this will fail if examined too early - _kids: { get: function() { return this._keys.map( function( key ) { return key.kid; } ); } }, - }); - - MediaKeySessionProxy.prototype._createSession = function _createSession() - { - this._session = this._mediaKeysProxy._mediaKeys.createSession(); - - this._session.addEventListener( 'message', MediaKeySessionProxy.prototype._onMessage.bind( this ) ); - this._session.addEventListener( 'keystatuseschange', MediaKeySessionProxy.prototype._onKeyStatusesChange.bind( this ) ); - }; - - MediaKeySessionProxy.prototype._onMessage = function _onMessage( event ) - { - switch( this._state ) - { - case 'loading': - this._session.update( toUtf8( { keys: this._keys } ) ) - .then( function() { - this._state = 'active'; - this._loaded( true ); - }.bind(this)).catch( this._loadfailed ); - - break; - - case 'active': - this.dispatchEvent( event ); - break; - - default: - // Swallow the event - break; - } - }; - - MediaKeySessionProxy.prototype._onKeyStatusesChange = function _onKeyStatusesChange( event ) - { - switch( this._state ) - { - case 'active' : - case 'removing' : - this.dispatchEvent( event ); - break; - - default: - // Swallow the event - break; - } - }; - - MediaKeySessionProxy.prototype._onTimeUpdate = function _onTimeUpdate( event ) - { - if ( !this._firstTime ) this._firstTime = Date.now(); - this._latestTime = Date.now(); - this._store(); - }; - - MediaKeySessionProxy.prototype._queueMessage = function _queueMessage( messageType, message ) - { - setTimeout( function() { - - var messageAsArray = toUtf8( message ).buffer; - - this.dispatchEvent( new MediaKeyMessageEvent( 'message', { messageType: messageType, message: messageAsArray } ) ); - - }.bind( this ) ); - }; - - function _storageKey( sessionId ) - { - return sessionId; - } - - MediaKeySessionProxy.prototype._store = function _store() - { - var data; - - if ( this._sessionType === 'persistent-usage-record' ) - { - data = { kids: this._kids }; - if ( this._firstTime ) data.firstTime = this._firstTime; - if ( this._latestTime ) data.latestTime = this._latestTime; - } - else - { - data = { keys: this._keys }; - } - - window.localStorage.setItem( _storageKey( this._sessionId ), JSON.stringify( data ) ); - }; - - MediaKeySessionProxy.prototype._load = function _load( sessionId ) - { - var store = window.localStorage.getItem( _storageKey( sessionId ) ); - if ( store === null ) return false; - - var data; - try { data = JSON.parse( store ) } catch( error ) { - return false; - } - - if ( data.kids ) - { - this._sessionType = 'persistent-usage-record'; - this._keys = data.kids.map( function( kid ) { return { kid: kid }; } ); - if ( data.firstTime ) this._firstTime = data.firstTime; - if ( data.latestTime ) this._latestTime = data.latestTime; - } - else - { - this._sessionType = 'persistent-license'; - this._keys = data.keys; - } - - return true; - }; - - MediaKeySessionProxy.prototype._clear = function _clear() - { - window.localStorage.removeItem( _storageKey( this._sessionId ) ); - }; - - MediaKeySessionProxy.prototype.generateRequest = function generateRequest( initDataType, initData ) - { - if ( this._state !== 'created' ) return Promise.reject( new InvalidStateError() ); - - this._createSession(); - - this._state = 'active'; - - return this._session.generateRequest( initDataType, initData ) - .then( function() { - this._sessionId = Math.random().toString(36).slice(2); - }.bind( this ) ); - }; - - MediaKeySessionProxy.prototype.load = function load( sessionId ) - { - if ( this._state !== 'created' ) return Promise.reject( new InvalidStateError() ); - - return new Promise( function( resolve, reject ) { - - try - { - if ( !this._load( sessionId ) ) - { - resolve( false ); - - return; - } - - this._sessionId = sessionId; - - if ( this._sessionType === 'persistent-usage-record' ) - { - var msg = { kids: this._kids }; - if ( this._firstTime ) msg.firstTime = this._firstTime; - if ( this._latestTime ) msg.latestTime = this._latestTime; - - this._queueMessage( 'license-release', msg ); - - this._state = 'removing'; - - resolve( true ); - } - else - { - this._createSession(); - - this._state = 'loading'; - this._loaded = resolve; - this._loadfailed = reject; - - var initData = { kids: this._kids }; - - this._session.generateRequest( 'keyids', toUtf8( initData ) ); - } - } - catch( error ) - { - reject( error ); - } - }.bind( this ) ); - }; - - MediaKeySessionProxy.prototype.update = function update( response ) - { - return new Promise( function( resolve, reject ) { - - switch( this._state ) { - - case 'active' : - - var message = fromUtf8( response ); - - // JSON Web Key Set - this._keys = message.keys; - - this._store(); - - resolve( this._session.update( response ) ); - - break; - - case 'removing' : - - this._state = 'closed'; - - this._clear(); - - this._mediaKeysProxy._removeSession( this ); - - this._resolveClosed(); - - delete this._session; - - resolve(); - - break; - - default: - reject( new InvalidStateError() ); - } - - }.bind( this ) ); - }; - - MediaKeySessionProxy.prototype.close = function close() - { - if ( this._state === 'closed' ) return Promise.resolve(); - - this._state = 'closed'; - - this._mediaKeysProxy._removeSession( this ); - - this._resolveClosed(); - - var session = this._session; - if ( !session ) return Promise.resolve(); - - this._session = undefined; - - return session.close(); - }; - - MediaKeySessionProxy.prototype.remove = function remove() - { - if ( this._state !== 'active' || !this._session ) return Promise.reject( new DOMException('InvalidStateError('+this._state+')') ); - - this._state = 'removing'; - - this._mediaKeysProxy._removeSession( this ); - - return this._session.close() - .then( function() { - - var msg = { kids: this._kids }; - - if ( this._sessionType === 'persistent-usage-record' ) - { - if ( this._firstTime ) msg.firstTime = this._firstTime; - if ( this._latestTime ) msg.latestTime = this._latestTime; - } - - this._queueMessage( 'license-release', msg ); - - }.bind( this ) ) - }; - - HTMLMediaElement.prototype.setMediaKeys = function setMediaKeys( mediaKeys ) - { - if ( mediaKeys instanceof MediaKeysProxy ) - { - mediaKeys._setVideoElement( this ); - return _setMediaKeys.call( this, mediaKeys._mediaKeys ); - } - else - { - return _setMediaKeys.call( this, mediaKeys ); - } - }; - - navigator.requestMediaKeySystemAccess = function( keysystem, configurations ) - { - // First, see if this is supported by the platform - return new Promise( function( resolve, reject ) { - - _requestMediaKeySystemAccess( keysystem, configurations ) - .then( function( access ) { resolve( access ); } ) - .catch( function( error ) { - - if ( error instanceof TypeError ) reject( error ); - - if ( keysystem !== 'org.w3.clearkey' ) reject( error ); - - if ( !configurations.some( is_persistent_configuration ) ) reject( error ); - - // Shallow copy the configurations, swapping out the labels and omitting the sessiontypes - var configurations_copy = configurations.map( function( config, index ) { - - var config_copy = copy_configuration( config ); - config_copy.label = index.toString(); - return config_copy; - - } ); - - // And try again with these configurations - _requestMediaKeySystemAccess( keysystem, configurations_copy ) - .then( function( access ) { - - // Create the supported configuration based on the original request - var configuration = access.getConfiguration(), - original_configuration = configurations[ configuration.label ]; - - // If the original configuration did not need persistent session types, then we're done - if ( !is_persistent_configuration( original_configuration ) ) resolve( access ); - - // Create the configuration that we will return - var returned_configuration = copy_configuration( configuration ); - - if ( original_configuration.label ) - returned_configuration.label = original_configuration; - else - delete returned_configuration.label; - - returned_configuration.sessionTypes = original_configuration.sessionTypes; - - resolve( new MediaKeySystemAccessProxy( keysystem, access, returned_configuration ) ); - } ) - .catch( function( error ) { reject( error ); } ); - } ); - } ); - }; - - function is_persistent_configuration( configuration ) - { - return configuration.sessionTypes && - ( configuration.sessionTypes.indexOf( 'persistent-usage-record' ) !== -1 - || configuration.sessionTypes.indexOf( 'persistent-license' ) !== -1 ); - } - - function copy_configuration( src ) - { - var dst = {}; - [ 'label', 'initDataTypes', 'audioCapabilities', 'videoCapabilities', 'distinctiveIdenfifier', 'persistentState' ] - .forEach( function( item ) { if ( src[item] ) dst[item] = src[item]; } ); - return dst; - } -}()); diff --git a/testing/web-platform/tests/encrypted-media/polyfill/edge-keystatuses.js b/testing/web-platform/tests/encrypted-media/polyfill/edge-keystatuses.js deleted file mode 100644 index 886144459..000000000 --- a/testing/web-platform/tests/encrypted-media/polyfill/edge-keystatuses.js +++ /dev/null @@ -1,144 +0,0 @@ -(function() { - - // This polyfill fixes the following problems with Edge browser - // (1) Various maplike methods for keystatuses are not supported or suported incorrectly - // (2) Key Ids exposed in keystatuses are incorrect (byte swaps) - if ( navigator.userAgent.toLowerCase().indexOf('edge') > -1 ) { - /////////////////////////////////////////////////////////////////////////////////////////////// - // The following function is the core of this JS patch. The rest of this file is infrastructure - // required to enable this function - /////////////////////////////////////////////////////////////////////////////////////////////// - function _proxyKeyStatusesChange( event ) { - this._keyStatuses.clear(); - var keyStatuses = []; - this._session.keyStatuses.forEach( function( keyId, status ) { - var newKeyId = new Uint8Array( keyId ); - - function swap( arr, a, b ) { var t = arr[a]; arr[a] = arr[b]; arr[b] = t; } - swap( newKeyId, 0, 3 ); - swap( newKeyId, 1, 2 ); - swap( newKeyId, 4, 5 ); - swap( newKeyId, 6, 7 ); - - keyStatuses.push( { key: newKeyId, status: status, ord: arrayBufferAsString( newKeyId ) } ); - }); - - function lexicographical( a, b ) { return a < b ? -1 : a === b ? 0 : +1; } - function lexicographicalkey( a, b ) { return lexicographical( a.ord, b.ord ); } - - keyStatuses.sort( lexicographicalkey ).forEach( function( obj ) { - this._keyStatuses._set( obj.key, obj.status ); - }.bind( this ) ); - - this.dispatchEvent( event ); - }; - /////////////////////////////////////////////////////////////////////////////////////////////// - - // Override MediaKeys.createSession - var _mediaKeysCreateSession = MediaKeys.prototype.createSession; - MediaKeys.prototype.createSession = function ( sessionType ) { - return new MediaKeySession( _mediaKeysCreateSession.call( this, sessionType ) ); - }; - - // MediaKeySession proxy - function MediaKeySession( session ) { - EventTarget.call( this ); - this._session = session; - this._keyStatuses = new MediaKeyStatusMap(); - this._session.addEventListener("keystatuseschange",this._onKeyStatusesChange.bind(this)); - this._session.addEventListener("message",this.dispatchEvent.bind(this)); - } - - MediaKeySession.prototype = Object.create( EventTarget.prototype ); - - Object.defineProperties( MediaKeySession.prototype, { - sessionId: { get: function() { return this._session.sessionId; } }, - expiration: { get: function() { return this._session.expiration; } }, - closed: { get: function() { return this._session.closed; } }, - keyStatuses:{ get: function() { return this._keyStatuses; } } - }); - - [ "generateRequest", "load", "update", "remove", "close" ].forEach( function( fnname ) { - MediaKeySession.prototype[ fnname ] = function() { - return window.MediaKeySession.prototype[ fnname ].apply( this._session, arguments ); - } - } ); - - MediaKeySession.prototype._onKeyStatusesChange = _proxyKeyStatusesChange; - - // MediaKeyStatusMap proxy - // - // We need a proxy class to replace the broken MediaKeyStatusMap one. We cannot use a - // regular Map directly because we need get and has methods to compare by value not - // as references. - function MediaKeyStatusMap() { this._map = new Map(); } - - Object.defineProperties( MediaKeyStatusMap.prototype, { - size: { get: function() { return this._map.size; } }, - forEach: { get: function() { return function( f ) { return this._map.forEach( f ); } } }, - entries: { get: function() { return function() { return this._map.entries(); } } }, - values: { get: function() { return function() { return this._map.values(); } } }, - keys: { get: function() { return function() { return this._map.keys(); } } }, - clear: { get: function() { return function() { return this._map.clear(); } } } } ); - - MediaKeyStatusMap.prototype[ Symbol.iterator ] = function() { return this._map[ Symbol.iterator ]() }; - - MediaKeyStatusMap.prototype.has = function has( keyId ) { - for ( var k of this._map.keys() ) { if ( arrayBufferEqual( k, keyId ) ) return true; } - return false; - }; - - MediaKeyStatusMap.prototype.get = function get( keyId ) { - for ( var k of this._map.entries() ) { if ( arrayBufferEqual( k[ 0 ], keyId ) ) return k[ 1 ]; } - }; - - MediaKeyStatusMap.prototype._set = function _set( keyId, status ) { - this._map.set( new Uint8Array( keyId ), status ); - }; - - function arrayBufferEqual(buf1, buf2) - { - if (buf1.byteLength !== buf2.byteLength) return false; - var a1 = Array.from( new Int8Array(buf1) ), a2 = Array.from( new Int8Array(buf2) ); - return a1.every( function( x, i ) { return x === a2[i]; } ); - } - - // EventTarget - function EventTarget(){ - this.listeners = {}; - }; - - EventTarget.prototype.listeners = null; - - EventTarget.prototype.addEventListener = function(type, callback){ - if(!(type in this.listeners)) { - this.listeners[type] = []; - } - this.listeners[type].push(callback); - }; - - EventTarget.prototype.removeEventListener = function(type, callback){ - if(!(type in this.listeners)) { - return; - } - var stack = this.listeners[type]; - for(var i = 0, l = stack.length; i < l; i++){ - if(stack[i] === callback){ - stack.splice(i, 1); - return this.removeEventListener(type, callback); - } - } - }; - - EventTarget.prototype.dispatchEvent = function(event){ - if(!(event.type in this.listeners)) { - return; - } - var stack = this.listeners[event.type]; - event.target = this; - for(var i = 0, l = stack.length; i < l; i++) { - stack[i].call(this, event); - } - }; - } -})(); diff --git a/testing/web-platform/tests/encrypted-media/polyfill/edge-persistent-usage-record.js b/testing/web-platform/tests/encrypted-media/polyfill/edge-persistent-usage-record.js deleted file mode 100644 index 7f86f0c05..000000000 --- a/testing/web-platform/tests/encrypted-media/polyfill/edge-persistent-usage-record.js +++ /dev/null @@ -1,193 +0,0 @@ -(function() { - - // This polyfill fixes the following problems with Edge browser - // (1) To retrieve a persisted usage record, you must use session type 'persistent-release-message' instead of 'persistent-usage-record' - // (2) To retrieve a persisted usage record, you must call remove() after calling load() - // (3) On providing a license release acknowledgement, the session does not automatically close as is should - // (4) Retrieval of the usage record at the end of an active session is not supported - - if ( navigator.userAgent.toLowerCase().indexOf('edge') > -1 ) { - - var _mediaKeySystemAccessCreateMediaKeys = MediaKeySystemAccess.prototype.createMediaKeys; - _mediaKeysCreateSession = MediaKeys.prototype.createSession; - - // MediaKeySession proxy - function MediaKeySession( mediaKeys, session ) - { - EventTarget.call( this ); - - this._mediaKeys = mediaKeys; - this._session = session; - this._sessionId = undefined; - this._removing = false; - - session.addEventListener( 'message', this.dispatchEvent.bind( this ) ); - session.addEventListener( 'keystatuseschange', this.dispatchEvent.bind( this ) ); - session.closed.then( function() { if ( !this._removing ) this._resolveClosed(); }.bind ( this ) ); - - this._closed = new Promise( function( resolve ) { this._resolveClosed = resolve; }.bind( this ) ); - } - - MediaKeySession.prototype = Object.create( EventTarget.prototype ); - - Object.defineProperties( MediaKeySession.prototype, { - sessionId: { get: function() { return this._sessionId ? this._sessionId : this._session.sessionId; } }, - expiration: { get: function() { return this._session.expiration; } }, - closed: { get: function() { return this._closed; } }, - keyStatuses:{ get: function() { return this._session.keyStatuses; } } - }); - - // load() - // - // Use a surrogate 'persistent-release-message' session to obtain the release message - // - MediaKeySession.prototype.load = function load( sessionId ) - { - if ( this.sessionId ) return Promise.reject( new DOMException('InvalidAccessError') ); - - this._surrogate = this._mediaKeys.createSession( 'persistent-release-message' ); - this._surrogate.addEventListener( 'message', this.dispatchEvent.bind( this ) ); - - return this._surrogate.load( sessionId ).then( function( success ) { - if (!success) return false; - - this._sessionId = sessionId; - this._removing = true; - this._session.close(); - - return this._surrogate.remove().then( function() { return true; } ); - }.bind( this ) ); - }; - - // remove() - // - // On an existing session, use a surrogate 'persistent-release-message' session to obtain the release message - // - MediaKeySession.prototype.remove = function remove() - { - if ( this._sessionId !== undefined ) return Promise.reject( new DOMException('InvalidAccessError') ); - if ( this.sessionId === undefined ) return Promise.reject( new DOMException('InvalidAccessError') ); - - this._surrogate = this._mediaKeys.createSession( 'persistent-release-message' ); - this._surrogate.addEventListener( 'message', this.dispatchEvent.bind( this ) ); - this._removing = true; - this._sessionId = this._session.sessionId; - - var self = this; - - return Promise.all( [ self._session.close(), self._session.closed ] ).then( function() { - return self._surrogate.load( self._sessionId ); - }).then( function( success ) { - if ( !success ) { - throw new DOMException('InvalidAccessError'); - } - - return self._surrogate.remove(); - }).then( function() { return true; } ); - } - - // update() - // - // For a normal session, pass through, otherwise update the surrogate and close the proxy - MediaKeySession.prototype.update = function update( message ) - { - if ( !this._removing ) return this._session.update( message ); - - return this._surrogate.update( message ).then( function() { - this._sessionId = undefined; - this._resolveClosed(); - }.bind( this ) ); - }; - - // close() - pass through - // - MediaKeySession.prototype.close = function close() - { - if ( !this._removing ) return this._session.close(); - this._resolveClosed(); - return Promise.resolve(); - }; - - // generateRequest() - pass through - // - MediaKeySession.prototype.generateRequest = function generateRequest( initDataType, initData ) - { - if ( this.sessionId ) Promise.reject( new DOMException('InvalidAccessError') ); - return this._session.generateRequest( initDataType, initData ); - }; - - // Wrap PlayReady persistent-usage-record sessions in our Proxy - MediaKeys.prototype.createSession = function createSession( sessionType ) { - - var session = _mediaKeysCreateSession.call( this, sessionType ); - if ( this._keySystem !== 'com.microsoft.playready' || sessionType !== 'persistent-usage-record' ) - { - return session; - } - - return new MediaKeySession( this, session ); - - }; - - // - // Annotation polyfills - annotate not otherwise available data - // - - // Annotate MediaKeys with the keysystem - MediaKeySystemAccess.prototype.createMediaKeys = function createMediaKeys() - { - return _mediaKeySystemAccessCreateMediaKeys.call( this ).then( function( mediaKeys ) { - mediaKeys._keySystem = this.keySystem; - return mediaKeys; - }.bind( this ) ); - }; - - // - // Utilities - // - - // Allow us to modify the target of Events - Object.defineProperties( Event.prototype, { - target: { get: function() { return this._target || this.currentTarget; }, - set: function( newtarget ) { this._target = newtarget; } } - } ); - - // Make an EventTarget base class - function EventTarget(){ - this.listeners = {}; - }; - - EventTarget.prototype.listeners = null; - - EventTarget.prototype.addEventListener = function(type, callback){ - if(!(type in this.listeners)) { - this.listeners[type] = []; - } - this.listeners[type].push(callback); - }; - - EventTarget.prototype.removeEventListener = function(type, callback){ - if(!(type in this.listeners)) { - return; - } - var stack = this.listeners[type]; - for(var i = 0, l = stack.length; i < l; i++){ - if(stack[i] === callback){ - stack.splice(i, 1); - return this.removeEventListener(type, callback); - } - } - }; - - EventTarget.prototype.dispatchEvent = function(event){ - if(!(event.type in this.listeners)) { - return; - } - var stack = this.listeners[event.type]; - event.target = this; - for(var i = 0, l = stack.length; i < l; i++) { - stack[i].call(this, event); - } - }; - } -})(); diff --git a/testing/web-platform/tests/encrypted-media/polyfill/firefox-polyfill.js b/testing/web-platform/tests/encrypted-media/polyfill/firefox-polyfill.js deleted file mode 100644 index ce241af36..000000000 --- a/testing/web-platform/tests/encrypted-media/polyfill/firefox-polyfill.js +++ /dev/null @@ -1,23 +0,0 @@ -(function(){ - if(navigator.userAgent.toLowerCase().indexOf('firefox') > -1){ - - // Work around https://bugzilla.mozilla.org/show_bug.cgi?id=1282142 - // Firefox does not correctly reject the Clear Key session types it does not support - var _requestMediaKeySystemAccess = navigator.requestMediaKeySystemAccess.bind( navigator ); - - navigator.requestMediaKeySystemAccess = function( keysystem, configurations ) - { - if ( keysystem !== 'org.w3.clearkey' ) return _requestMediaKeySystemAccess( keysystem, configurations ); - - var supported_configurations = configurations.filter( function( c ) { - - return !c.sessionTypes || ( c.sessionTypes.length === 1 && c.sessionTypes[ 0 ] === 'temporary' ); - - } ); - - if ( supported_configurations.length === 0 ) return Promise.reject( new DOMException( 'None of the requested configurations were supported.' ) ); - - return _requestMediaKeySystemAccess( keysystem, supported_configurations ); - } - } -}());
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/polyfill/make-polyfill-tests.py b/testing/web-platform/tests/encrypted-media/polyfill/make-polyfill-tests.py deleted file mode 100644 index b4248569a..000000000 --- a/testing/web-platform/tests/encrypted-media/polyfill/make-polyfill-tests.py +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/python -import os, re, os.path, glob - -head = re.compile( r"^(\s*</head>)", re.MULTILINE ) -runtest = re.compile( r"runTest\(\s*(\S.*?)\s*\)", re.DOTALL ) - -scripts = ''' - <!-- Polyfill files (NOTE: These are added by auto-generation script) --> - <script src=/encrypted-media/polyfill/chrome-polyfill.js></script> - <script src=/encrypted-media/polyfill/firefox-polyfill.js></script> - <script src=/encrypted-media/polyfill/edge-persistent-usage-record.js></script> - <script src=/encrypted-media/polyfill/edge-keystatuses.js></script> - <script src=/encrypted-media/polyfill/clearkey-polyfill.js></script>''' - -def process_file( infile, outfile ) : - with open( outfile, "w" ) as output : - with open( infile, "r" ) as input : - output.write( runtest.sub( r"runTest( \1, 'polyfill: ' )", head.sub( scripts + r"\1", input.read() ) ) ) - -if __name__ == '__main__' : - if (not os.getcwd().endswith('polyfill')) : - print "Please run from polyfill directory" - exit( 1 ) - - for infile in glob.glob( "../*.html" ) : - process_file( infile, os.path.basename( infile ) ) - - for infile in glob.glob( "../resources/*.html" ) : - process_file( infile, os.path.join( "resources", os.path.basename( infile ) ) )
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-destroy-persistent-license.html b/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-destroy-persistent-license.html deleted file mode 100644 index b1bec547e..000000000 --- a/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-destroy-persistent-license.html +++ /dev/null @@ -1,106 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-license, retrieve and destroy, ClearKey</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - // Wait for a message from the main window with details of our task - window.addEventListener( 'message', function( event ) { - - var config = event.data.config, - configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-license' ] }, - assertions = [ ]; - - var _mediaKeys, - _mediaKeySession; - - config.video = document.getElementById('videoelement'); - config.messagehandler = (new MessageHandler( 'org.w3.clearkey')).messagehandler; - - function onComplete() { - window.opener.postMessage(assertions, '*'); - } - - function onFailure(error) { - assertions.push( { actual: false, expected: true, message: error.toString() } ); - onComplete(); - } - - function onMessage( messageevent ) - { - assertions.push( { expected: true, actual: messageevent instanceof window.MediaKeyMessageEvent, message: "event is of correct class" } ); - assertions.push( { expected: 'message', actual: messageevent.type, message: "event type is message" } ); - assertions.push( { expected: 'license-release', actual: messageevent.messageType, message: "message type is license-release" } ); - - config.messagehandler( messageevent.messageType, messageevent.message ) - .then( function( response ) { - messageevent.target.update( response ).catch(onFailure); - }); - } - - function onTimeupdate(event) { - if ( config.video.currentTime > ( config.duration || 1 ) ) { - config.video.pause(); - config.video.removeAttribute('src'); - config.video.load(); - _mediaKeySession.remove(); - } - } - - function onClosed() { - // Try and reload and check this fails - var mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); - mediaKeySession.load( event.data.sessionId ).then( function( success ) { - assertions.push( { expected: false, actual: success, message: "Load of removed session should fail" } ); - onComplete(); - }).catch(onFailure); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ] ) - .then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return config.video.setMediaKeys(mediaKeys); - }).then(function() { - config.video.addEventListener('timeupdate', onTimeupdate, true); - _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); - _mediaKeySession.addEventListener( 'message', onMessage ); - _mediaKeySession.closed.then(onClosed); - return _mediaKeySession.load( event.data.sessionId ); - }).then(function( success ) { - assertions.push( { actual: success, expected: true, message: "Expect load session to succeed" } ); - if ( !success ) throw new DOMException(); - return testmediasource(config); - }).then(function(source) { - config.video.src = URL.createObjectURL(source); - config.video.play(); - }) - .catch(onFailure); - } ); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html b/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html deleted file mode 100644 index 78ca4e1bb..000000000 --- a/testing/web-platform/tests/encrypted-media/resources/clearkey-retrieve-persistent-license.html +++ /dev/null @@ -1,74 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-license, retrieve and playback, ClearKey</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - // Wait for a message from the main window with details of our task - window.addEventListener( 'message', function( event ) { - - var config = event.data.config, - configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-license' ] }, - assertions = [ ]; - - var _mediaKeySession; - - config.video = document.getElementById('videoelement'); - - function onComplete() { - window.opener.postMessage(assertions, '*'); - } - - function onFailure(error) { - assertions.push( { actual: false, expected: true, message: error.toString() } ); - onComplete(); - } - - function onTimeupdate(event) { - if ( config.video.currentTime > ( config.duration || 1 ) ) { - config.video.pause(); - _mediaKeySession.close() - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ] ) - .then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - config.video.setMediaKeys(mediaKeys); - config.video.addEventListener('timeupdate', onTimeupdate, true); - _mediaKeySession = mediaKeys.createSession( 'persistent-license' ); - _mediaKeySession.closed.then(onComplete); - return _mediaKeySession.load(event.data.sessionId); - }).then(function( success ) { - if ( !success ) throw new DOMException( 'Could not load session' ); - return testmediasource(config); - }).then(function(source) { - config.video.src = URL.createObjectURL(source); - config.video.play(); - }) - .catch(onFailure); - } ); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-destroy-persistent-license.html b/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-destroy-persistent-license.html deleted file mode 100644 index 21a05e879..000000000 --- a/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-destroy-persistent-license.html +++ /dev/null @@ -1,107 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-license, retrieve and destroy, drm</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - - <!-- Message handler for DRM keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - // Wait for a message from the main window with details of our task - window.addEventListener( 'message', function( event ) { - - var config = event.data.config, - configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-license' ] }, - assertions = [ ]; - - var _mediaKeys, - _mediaKeySession; - - config.video = document.getElementById('videoelement'); - config.messagehandler = (new MessageHandler( config.keysystem, undefined, 'persistent-license' ) ).messagehandler; - -function onComplete() { - window.opener.postMessage(assertions, '*'); - } - - function onFailure(error) { - assertions.push( { actual: false, expected: true, message: error.toString() } ); - onComplete(); - } - - function onMessage( messageevent ) - { - assertions.push( { expected: true, actual: messageevent instanceof window.MediaKeyMessageEvent, message: "event is of correct class" } ); - assertions.push( { expected: 'message', actual: messageevent.type, message: "event type is message" } ); - assertions.push( { expected: 'license-release', actual: messageevent.messageType, message: "message type is license-release" } ); - - config.messagehandler( messageevent.messageType, messageevent.message ) - .then( function( response ) { - messageevent.target.update( response ).catch(onFailure); - }); - } - - function onTimeupdate(event) { - if ( config.video.currentTime > ( config.duration || 1 ) ) { - config.video.pause(); - config.video.removeAttribute('src'); - config.video.load(); - _mediaKeySession.remove(); - } - } - - function onClosed() { - // Try and reload and check this fails - var mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); - mediaKeySession.load( event.data.sessionId ).then( function( success ) { - assertions.push( { expected: false, actual: success, message: "Load of removed session should fail" } ); - onComplete(); - }).catch(onFailure); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ] ) - .then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return config.video.setMediaKeys(mediaKeys); - }).then(function() { - config.video.addEventListener('timeupdate', onTimeupdate, true); - _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); - _mediaKeySession.addEventListener( 'message', onMessage ); - _mediaKeySession.closed.then(onClosed); - return _mediaKeySession.load( event.data.sessionId ); - }).then(function( success ) { - assertions.push( { actual: success, expected: true, message: "Expect load session to succeed" } ); - if ( !success ) throw new DOMException(); - return testmediasource(config); - }).then(function(source) { - config.video.src = URL.createObjectURL(source); - config.video.play(); - }) - .catch(onFailure); - } ); - - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-persistent-license.html b/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-persistent-license.html deleted file mode 100644 index 6f3ed80ff..000000000 --- a/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-persistent-license.html +++ /dev/null @@ -1,72 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: persistent-license, retrieve and playback, DRM</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/utf8.js></script> - <script src=/encrypted-media/util/testmediasource.js></script> - </head> - <body> - <div id='log'></div> - - <div id='video'> - <video id="videoelement" width="200px"></video> - </div> - - <script> - // Wait for a message from the main window with details of our task - window.addEventListener( 'message', function( event ) { - - var config = event.data.config, - configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-license' ] }, - assertions = [ ]; - - var _mediaKeySession; - config.video = document.getElementById('videoelement'); - - function onComplete() { - window.opener.postMessage(assertions, '*'); - } - - function onFailure(error) { - assertions.push( { actual: false, expected: true, message: error.toString() } ); - onComplete(); - } - - function onTimeupdate(event) { - if ( config.video.currentTime > ( config.duration || 1 ) ) { - config.video.pause(); - _mediaKeySession.close() - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ] ) - .then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - config.video.setMediaKeys(mediaKeys); - config.video.addEventListener('timeupdate', onTimeupdate, true); - _mediaKeySession = mediaKeys.createSession( 'persistent-license' ); - _mediaKeySession.closed.then(onComplete); - return _mediaKeySession.load(event.data.sessionId); - }).then(function( success ) { - if ( !success ) throw new DOMException( 'Could not load session' ); - return testmediasource(config); - }).then(function(source) { - config.video.src = URL.createObjectURL(source); - config.video.play(); - }) - .catch(onFailure); - } ); - - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-persistent-usage-record.html deleted file mode 100644 index 935f77748..000000000 --- a/testing/web-platform/tests/encrypted-media/resources/drm-retrieve-persistent-usage-record.html +++ /dev/null @@ -1,71 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Retrieve stored persistent-usage-record</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/drm-messagehandler.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - window.addEventListener( 'message', function( event ) { - - var config = event.data.config, - configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-usage-record' ] }, - assertions = [ ], - _mediaKeys, - _mediaKeySession; - - config.messagehandler = (new MessageHandler( config.keysystem, undefined, 'persistent-usage-record' ) ).messagehandler; - - function onFailure(error) { - assertions.push( { actual: false, expected: true, message: error } ); - window.opener.postMessage(assertions, '*'); - } - - function onMessage( event ) - { - assertions.push( { expected: true, actual: event instanceof window.MediaKeyMessageEvent, message: "event is of correct class" } ); - assertions.push( { expected: 'message', actual: event.type, message: "event type is message" } ); - assertions.push( { expected: 'license-release', actual: event.messageType, message: "message type is license-release" } ); - - config.messagehandler( event.messageType, event.message ).then( function( response ) { - event.target.update( response ).catch( onFailure ); - }); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ] ).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; - }).then( function( success ) { - _mediaKeySession = _mediaKeys.createSession( 'persistent-usage-record' ); - _mediaKeySession.addEventListener( 'message', onMessage ); - _mediaKeySession.closed.then( function() { - window.opener.postMessage(assertions, '*'); - }); - return _mediaKeySession.load( event.data.sessionId ); - }).then(function( success ) { - if ( !success ) { - assertions.push( { actual: success, expected: true, message: "Error loading session" } ); - window.opener.postMessage(assertions, '*'); - } - }).catch( onFailure ); - }); - </script> - </body> -</html> diff --git a/testing/web-platform/tests/encrypted-media/resources/retrieve-persistent-usage-record.html b/testing/web-platform/tests/encrypted-media/resources/retrieve-persistent-usage-record.html deleted file mode 100644 index 339e3c3ae..000000000 --- a/testing/web-platform/tests/encrypted-media/resources/retrieve-persistent-usage-record.html +++ /dev/null @@ -1,93 +0,0 @@ -<!doctype html> -<html> - <head> - <meta charset=utf-8> - <title>Encrypted Media Extensions: Retrieve stored persistent-usage-record</title> - <link rel="help" href="https://w3c.github.io/encrypted-media/"> - - <!-- Helper scripts for Encrypted Media Extensions tests --> - <script src=/encrypted-media/util/utils.js></script> - <script src=/encrypted-media/util/fetch.js></script> - <script src=/encrypted-media/util/utf8.js></script> - - <!-- Message handler for Clear Key keysystem --> - <script src=/encrypted-media/util/clearkey-messagehandler.js></script> - - </head> - <body> - <div id='log'></div> - - <script> - - window.addEventListener( 'message', function( event ) { - - var config = event.data.config, - configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-usage-record' ] }, - assertions = [ ]; - - config.messagehandler = (new MessageHandler('org.w3.keysystem')).messagehandler; - - function onMessage( event ) - { - assertions.push( { expected: true, actual: event instanceof window.MediaKeyMessageEvent, message: "event is of correct class" } ); - assertions.push( { expected: 'message', actual: event.type, message: "event type is message" } ); - assertions.push( { expected: 'license-release', actual: event.messageType, message: "message type is license-release" } ); - - var release = fromUtf8( event.message ); - - consoleWrite( JSON.stringify( release ) ); - - assertions.push( { expected: 1, actual: release.kids.length, message: "release message contains a single key" } ); - assertions.push( { expected: true, actual: ( typeof release.firstTime === 'number' ), message: "firstTime is a number" } ); - assertions.push( { expected: true, actual: ( typeof release.latestTime === 'number' ), message: "latestTime is a number" } ); - - var duration = release.latestTime - release.firstTime; - assertions.push( { expected: true, actual: ( duration >= 2000 ), message: "duration >= 2s" } ); - assertions.push( { expected: true, actual: ( duration < 4000 ), message: "duration < 4s" } ); - - config.messagehandler( event.messageType, event.message ) - .then( function( response ) { - - event.target.update( response ).catch(function(error) { - - assertions.push( { actual: false, expected: true, message: error } ); - - window.opener.postMessage(assertions, '*'); - }); - }); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ] ).then(function(access) { - - return access.createMediaKeys(); - - }).then(function(mediaKeys) { - - var mediaKeySession = mediaKeys.createSession( 'persistent-usage-record' ); - - mediaKeySession.addEventListener( 'message', onMessage ); - mediaKeySession.closed.then( function() { - - window.opener.postMessage(assertions, '*'); - - }); - - return mediaKeySession.load( event.data.sessionId ); - - }).catch(function(error) { - - assertions.push( { actual: false, expected: true, message: error.toString() } ); - - window.opener.postMessage(assertions, '*'); - - }); - - - } ); - - </script> - </body> -</html>
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/check-initdata-type.js b/testing/web-platform/tests/encrypted-media/scripts/check-initdata-type.js deleted file mode 100644 index 5c7cb6e4b..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/check-initdata-type.js +++ /dev/null @@ -1,35 +0,0 @@ - function runTest( config, qualifier ) - { - function checkInitDataType(initDataType) - { - return isInitDataTypeSupported(initDataType).then(function(result) { - // If |initDataType| is not supported, simply succeed. - if (!result) - return Promise.resolve('Not supported'); - - return navigator.requestMediaKeySystemAccess( config.keysystem, getSimpleConfigurationForInitDataType(initDataType)) - .then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - var initData = getInitData(initDataType); - return mediaKeySession.generateRequest(initDataType, initData); - }); - }); - } - - promise_test(function() - { - return checkInitDataType('webm'); - }, testnamePrefix( qualifier, config.keysystem ) + ' support for "webm".'); - - promise_test(function() - { - return checkInitDataType('cenc'); - }, testnamePrefix( qualifier, config.keysystem ) + ' support for "cenc".'); - - promise_test(function() - { - return checkInitDataType('keyids'); - }, testnamePrefix( qualifier, config.keysystem ) + ' support for "keyids".'); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/clearkey-update-non-ascii-input.js b/testing/web-platform/tests/encrypted-media/scripts/clearkey-update-non-ascii-input.js deleted file mode 100644 index b34c493fd..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/clearkey-update-non-ascii-input.js +++ /dev/null @@ -1,48 +0,0 @@ -// This test is only applicable to clearkey -function runTest(config, qualifier) -{ - var testname = testnamePrefix(qualifier, config.keysystem) + ' test handling of non-ASCII responses for update()'; - - var configuration = getSimpleConfigurationForContent(config.content); - - if (config.initDataType) { - configuration.initDataTypes = [config.initDataType]; - } - - promise_test(function (test) { - var initDataType; - var initData; - var mediaKeySession; - var messageEventFired = false; - - return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function (access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(config.content, initDataType); - return access.createMediaKeys(); - }).then(function (mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - var eventWatcher = new EventWatcher(test, mediaKeySession, ['message']); - var promise = eventWatcher.wait_for('message'); - mediaKeySession.generateRequest(initDataType, initData); - return promise; - }).then(function (messageEvent) { - // |jwkSet| contains a non-ASCII character \uDC00. - var jwkSet = '{"keys":[{' - + '"kty":"oct",' - + '"k":"MDEyMzQ1Njc4OTAxMjM0NQ",' - + '"kid":"MDEyMzQ1Njc4O\uDC00TAxMjM0NQ"' - + '}]}'; - messageEventFired = true; - return messageEvent.target.update(stringToUint8Array(jwkSet)); - }).then(function () { - assert_unreached('Error: update() should fail because the processed message has non-ASCII character.'); - }).catch(function (error) { - if(messageEventFired){ - assert_equals(error.name, 'TypeError'); - } - else { - assert_unreached('Error: ' + error.name); - } - }); - }, testname); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/events-session-closed-event.js b/testing/web-platform/tests/encrypted-media/scripts/events-session-closed-event.js deleted file mode 100644 index 44f683eac..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/events-session-closed-event.js +++ /dev/null @@ -1,52 +0,0 @@ -function runTest(config, qualifier) -{ - var testname = testnamePrefix(qualifier, config.keysystem) + ' test MediaKeySession closed event.'; - - var configuration = { - initDataTypes: [config.initDataType], - audioCapabilities: [{ - contentType: config.audioType - }], - videoCapabilities: [{ - contentType: config.videoType - }], - sessionTypes: ['temporary'] - }; - - promise_test(function (test) { - var initDataType; - var initData; - var mediaKeySession; - - return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function (access) { - initDataType = access.getConfiguration().initDataTypes[0]; - return access.createMediaKeys(); - }).then(function (mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - if(config.initData) { - initData = config.initData; - } else { - initData = stringToUint8Array(atob(config.content.keys[0].initData)); - } - return mediaKeySession.generateRequest(initDataType, initData); - }).then(function() { - // close() should result in the closed promise being - // fulfilled. - return mediaKeySession.close(); - }).then(function (result) { - assert_equals(result, undefined); - // Wait for the session to be closed. - return mediaKeySession.closed; - }).then(function (result) { - assert_equals(result, undefined); - // Now that the session is closed, verify that the - // closed attribute immediately returns a fulfilled - // promise. - return mediaKeySession.closed; - }).then(function (result) { - assert_equals(result, undefined); - }).catch(function(error) { - assert_unreached('Error: ' + error.name); - }); - }, testname); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/events.js b/testing/web-platform/tests/encrypted-media/scripts/events.js deleted file mode 100644 index 85c86ae78..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/events.js +++ /dev/null @@ -1,59 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) + ', basic events'; - - var configuration = getSimpleConfigurationForContent(config.content); - - if (config.initDataType && config.initData) { - configuration.initDataTypes = [config.initDataType]; - } - - async_test(function(test) - { - var initDataType; - var initData; - var mediaKeySession; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function processMessage(event) - { - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.target, mediaKeySession); - assert_equals(event.type, 'message'); - assert_in_array(event.messageType,['license-request', 'individualization-request']); - - config.messagehandler( event.messageType, event.message ).then(function(response) { - waitForEventAndRunStep('keystatuseschange', mediaKeySession, test.step_func(processKeyStatusesChange), test); - return mediaKeySession.update( response ); - }).catch(onFailure); - } - - function processKeyStatusesChange(event) - { - assert_true(event instanceof Event); - assert_equals(event.target, mediaKeySession); - assert_equals(event.type, 'keystatuseschange'); - test.done(); - } - - navigator.requestMediaKeySystemAccess(config.keysystem,[configuration]).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - - if (config.initDataType && config.initData) { - initData = config.initData; - } else { - initData = getInitData(config.content, initDataType); - } - - return access.createMediaKeys(); - }).then(test.step_func(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - waitForEventAndRunStep('message', mediaKeySession, test.step_func(processMessage), test); - return mediaKeySession.generateRequest(initDataType, initData); - })).catch(onFailure); - }, testname ); - -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/expiration.js b/testing/web-platform/tests/encrypted-media/scripts/expiration.js deleted file mode 100644 index 96b7fbfee..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/expiration.js +++ /dev/null @@ -1,43 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) + ', expiration'; - - var configuration = getSimpleConfigurationForContent(config.content); - if (config.initDataType && config.initData) { - configuration.initDataTypes = [config.initDataType]; - } - - async_test(function(test) { - - var _mediaKeys, - _mediaKeySession; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array(event.messageType, [ 'license-request', 'individualization-request' ] ); - - config.messagehandler(event.messageType, event.message, {expiration: config.expiration}).then(function(response) { - return event.target.update(response); - }).then(test.step_func(function() { - assert_approx_equals(event.target.expiration, config.expiration, 4000, "expiration attribute should equal provided expiration time"); - test.done(); - })).catch(onFailure); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - _mediaKeySession = _mediaKeys.createSession( 'temporary' ); - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - return _mediaKeySession.generateRequest(config.initDataType, config.initData); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/generate-request-disallowed-input.js b/testing/web-platform/tests/encrypted-media/scripts/generate-request-disallowed-input.js deleted file mode 100644 index 19e0c3555..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/generate-request-disallowed-input.js +++ /dev/null @@ -1,73 +0,0 @@ -function runTest(config,qualifier) { - var tests = [ ], initData, keyId; - function push_test(keysystem, initDataType, initData, testname) { - tests.push({ keysystem: keysystem, initDataType: initDataType, initData: initData, testname: testname }); - } - - initData = new Uint8Array(70000); - push_test(config.keysystem, 'webm', initData, testnamePrefix( qualifier, config.keysystem ) + ', temporary, webm, initData longer than 64Kb characters'); - - initData = new Uint8Array(70000); - push_test(config.keysystem, 'cenc', initData, testnamePrefix( qualifier, config.keysystem ) + ', temporary, cenc, initData longer than 64Kb characters'); - - initData = new Uint8Array(70000); - push_test(config.keysystem, 'keyids', initData, testnamePrefix( qualifier, config.keysystem ) + ', temporary, keyids, initData longer than 64Kb characters'); - - // Invalid 'pssh' box as the size specified is larger than what - // is provided. - initData = new Uint8Array([ - 0x00, 0x00, 0xff, 0xff, // size = huge - 0x70, 0x73, 0x73, 0x68, // 'pssh' - 0x00, // version = 0 - 0x00, 0x00, 0x00, // flags - 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID - 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, - 0x00, 0x00, 0x00, 0x00 // datasize - ]); - push_test(config.keysystem, 'cenc', initData, testnamePrefix( qualifier, config.keysystem ) + ', temporary, cenc, invalid initdata (invalid pssh)'); - - // Invalid data as type = 'psss'. - initData = new Uint8Array([ - 0x00, 0x00, 0x00, 0x00, // size = 0 - 0x70, 0x73, 0x73, 0x73, // 'psss' - 0x00, // version = 0 - 0x00, 0x00, 0x00, // flags - 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID - 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, - 0x00, 0x00, 0x00, 0x00 // datasize - ]); - push_test(config.keysystem, 'cenc', initData, testnamePrefix( qualifier, config.keysystem ) + ', temporary, cenc, invalid initdata (not pssh)'); - - // Valid key ID size must be at least 1 character for keyids. - keyId = new Uint8Array(0); - initData = stringToUint8Array(createKeyIDs(keyId)); - push_test(config.keysystem, 'keyids', initData, testnamePrefix( qualifier, config.keysystem ) + ', temporary, keyids, invalid initdata (too short key ID)'); - - // Valid key ID size must be less than 512 characters for keyids. - keyId = new Uint8Array(600); - initData = stringToUint8Array(createKeyIDs(keyId)); - push_test(config.keysystem, 'keyids', initData, testnamePrefix( qualifier, config.keysystem ) + ', temporary, keyids, invalid initdata (too long key ID)'); - - Promise.all( tests.map(function(testspec) { - return isInitDataTypeSupported(testspec.keysystem,testspec.initDataType); - })).then(function(results) { - tests.filter(function(testspec, i) { return results[i]; } ).forEach(function(testspec) { - promise_test(function(test) { - // Create a "temporary" session for |keysystem| and call generateRequest() - // with the provided initData. generateRequest() should fail with an - // InvalidAccessError. Returns a promise that is resolved - // if the error occurred and rejected otherwise. - return navigator.requestMediaKeySystemAccess(testspec.keysystem, getSimpleConfigurationForInitDataType(testspec.initDataType)).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession("temporary"); - return mediaKeySession.generateRequest(testspec.initDataType, testspec.initData); - }).then(test.step_func(function() { - assert_unreached('generateRequest() succeeded unexpectedly'); - }), test.step_func(function(error) { - assert_equals(error.name, 'TypeError'); - })); - },testspec.testname); - }); - }); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/invalid-license.js b/testing/web-platform/tests/encrypted-media/scripts/invalid-license.js deleted file mode 100644 index 992eef5dc..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/invalid-license.js +++ /dev/null @@ -1,33 +0,0 @@ -function runTest(config) -{ - promise_test(function (test) { - var initDataType; - var initData; - var keySystem = config.keysystem; - var invalidLicense = new Uint8Array([0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77]); - var messageEventFired = false; - - return navigator.requestMediaKeySystemAccess(keySystem, getSimpleConfiguration()).then(function (access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function (mediaKeys) { - var keySession = mediaKeys.createSession(); - var eventWatcher = new EventWatcher(test, keySession, ['message']); - var promise = eventWatcher.wait_for('message'); - keySession.generateRequest(initDataType, initData); - return promise; - }).then(function (messageEvent) { - messageEventFired = true; - return messageEvent.target.update(invalidLicense); - }).then(function () { - assert_unreached('Error: update() should fail because of an invalid license.'); - }).catch(function (error) { - if(messageEventFired) { - assert_equals(error.name, 'TypeError'); - } else { - assert_unreached('Error: ' + error.name); - } - }); - }, 'Update with invalid Clear Key license'); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/keystatuses-multiple-sessions.js b/testing/web-platform/tests/encrypted-media/scripts/keystatuses-multiple-sessions.js deleted file mode 100644 index e9bf10e88..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/keystatuses-multiple-sessions.js +++ /dev/null @@ -1,103 +0,0 @@ -function runTest(config,qualifier) -{ - var testname = testnamePrefix(qualifier, config.keysystem) + ', temporary, keystatuses, multiple sessions'; - - var configuration = getSimpleConfigurationForContent(config.content); - - if (config.initDataType && config.initData) configuration.initDataTypes = [config.initDataType]; - - async_test(function(test) - { - var mediaKeySession1; - var mediaKeySession2; - - // Even though key ids are uint8, using printable values so that - // they can be verified easily. - var key1 = new Uint8Array(config.content.keys[0].kid), - key2 = new Uint8Array(config.content.keys[1].kid), - variant1 = config.content.keys[0].variantId, - variant2 = config.content.keys[1].variantId; - - function onFailure(error) { - forceTestFailureFromPromise(test,error); - } - - function processMessage1(event) - { - // This should only be called for session1. - assert_equals(event.target, mediaKeySession1); - - // No keys added yet. - verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [], unexpected: [key1, key2]}); - - // Add key1 to session1. - config.messagehandler(event.messageType, event.message, {variantId:variant1}).then(function(response) { - return event.target.update(response); - }).catch(onFailure); - - } - - function processKeyStatusesChange1(event) - { - // This should only be called for session1. - assert_equals(event.target, mediaKeySession1); - - // Check that keyStatuses contains the expected key1 only. - verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [key1], unexpected: [key2]}); - - // Now trigger a message event on session2. - mediaKeySession2.generateRequest(config.initDataType, config.initData[1]).catch(onFailure); - } - - function processMessage2(event) - { - // This should only be called for session2. - assert_equals(event.target, mediaKeySession2); - - // session2 has no keys added yet. - verifyKeyStatuses(mediaKeySession2.keyStatuses, {expected: [], unexpected: [key1, key2]}); - - // session1 should still have 1 key. - verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [key1], unexpected: [key2]}); - - // Add key2 to session2. - config.messagehandler(event.messageType, event.message, {variantId:variant2}).then(function(response) { - return event.target.update(response); - }).catch(onFailure); - } - - function processKeyStatusesChange2(event) - { - // This should only be called for session2. - assert_equals(event.target, mediaKeySession2); - - // Check that keyStatuses contains the expected key2 only. - verifyKeyStatuses(mediaKeySession2.keyStatuses, {expected: [key2], unexpected: [key1]}); - - // session1 should still have 1 key. - verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [key1], unexpected: [key2]}); - - test.done(); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession1 = mediaKeys.createSession(); - mediaKeySession2 = mediaKeys.createSession(); - - // There should be no keys defined on either session. - verifyKeyStatuses(mediaKeySession1.keyStatuses, {expected: [], unexpected: [key1, key2]}); - verifyKeyStatuses(mediaKeySession2.keyStatuses, {expected: [], unexpected: [key1, key2]}); - - // Bind all the event handlers now. - waitForEventAndRunStep('message', mediaKeySession1, processMessage1, test); - waitForEventAndRunStep('message', mediaKeySession2, processMessage2, test); - waitForEventAndRunStep('keystatuseschange', mediaKeySession1, processKeyStatusesChange1, test); - waitForEventAndRunStep('keystatuseschange', mediaKeySession2, processKeyStatusesChange2, test); - - // Generate a request on session1. - return mediaKeySession1.generateRequest(config.initDataType, config.initData[0]); - }).catch(onFailure); - }, testname ); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/keystatuses.js b/testing/web-platform/tests/encrypted-media/scripts/keystatuses.js deleted file mode 100644 index 8d33dd421..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/keystatuses.js +++ /dev/null @@ -1,165 +0,0 @@ -function runTest(config,qualifier) -{ - var testname = testnamePrefix(qualifier, config.keysystem) + ', temporary, keystatuses'; - - var configuration = getSimpleConfigurationForContent(config.content); - - if (config.initDataType && config.initData) { - configuration.initDataTypes = [config.initDataType]; - } - - async_test(function(test) - { - var mediaKeySession; - var initDataType; - var initData; - var closed = false; - - // Even though key ids are uint8, using printable values so that - // they can be verified easily. - var key1 = new Uint8Array(config.content.keys[0].kid), - key2 = new Uint8Array(config.content.keys[1].kid), - key1String = arrayBufferAsString(key1), - key2String = arrayBufferAsString(key2); - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function processMessage(event) - { - // No keys added yet. - assert_equals(mediaKeySession.keyStatuses.size, 0); - - waitForEventAndRunStep('keystatuseschange', mediaKeySession, processKeyStatusesChange, test); - - // Add keys to session - config.messagehandler(event.messageType, event.message).then(function(response) { - return event.target.update(response); - }).catch(onFailure); - } - - function checkKeyStatusFor2Keys() - { - // Two keys added, so both should show up in |keyStatuses|. - assert_equals(mediaKeySession.keyStatuses.size, 2); - - // Check |keyStatuses| for 2 entries. - var result = []; - for (let item of mediaKeySession.keyStatuses) { - result.push({ key: arrayBufferAsString(item[0]), value: item[1] }); - } - function lexicographical( a, b ) { return a < b ? -1 : a === b ? 0 : +1; } - function lexicographicalkey( a, b ) { return lexicographical( a.key, b.key ); } - var expected1 = [{ key: key1String, value: 'usable'}, { key: key2String, value: 'usable'}].sort( lexicographicalkey ); - var expected2 = [{ key: key1String, value: 'status-pending'}, { key: key2String, value: 'status-pending'}].sort( lexicographicalkey ); - assert_in_array( JSON.stringify(result), - [ JSON.stringify(expected1),JSON.stringify(expected2) ], - "keystatuses should have the two expected keys with keystatus 'usable' or 'status-pending'"); - - // |keyStatuses| must contain both keys. - result = []; - for (var key of mediaKeySession.keyStatuses.keys()) { - result.push(arrayBufferAsString(key)); - } - assert_array_equals(result, - [key1String, key2String].sort( lexicographical ), - "keyStatuses.keys() should return an iterable over the two expected keys"); - - // Both values in |mediaKeySession| should be 'usable' or 'status-pending'. - result = []; - for (var value of mediaKeySession.keyStatuses.values()) { - result.push(value); - } - - assert_equals( result.length, 2, "keyStatuses.values() should have two elements" ); - assert_equals( result[0], result[1], "the values in keyStatuses.values() should be equal" ); - assert_in_array( result[0], [ 'usable', 'status-pending' ] ); - - // Check |keyStatuses.entries()|. - result = []; - for (var entry of mediaKeySession.keyStatuses.entries()) { - result.push({ key: arrayBufferAsString(entry[0]), value: entry[1] }); - } - assert_in_array(JSON.stringify(result), - [ JSON.stringify(expected1), JSON.stringify(expected2) ], - "keyStatuses.entries() should return an iterable over the two expected keys, with keystatus 'usable' or 'status-pending'"); - - // forEach() should return both entries. - result = []; - mediaKeySession.keyStatuses.forEach(function(status, keyId) { - result.push({ key: arrayBufferAsString(keyId), value: status }); - }); - assert_in_array(JSON.stringify(result), - [ JSON.stringify(expected1), JSON.stringify(expected2) ], - "keyStatuses.forEach() should iterate over the two expected keys, with keystatus 'usable' or 'status-pending'"); - - // has() and get() should return the expected values. - assert_true(mediaKeySession.keyStatuses.has(key1), "keyStatuses should have key1"); - assert_true(mediaKeySession.keyStatuses.has(key2), "keyStatuses should have key2"); - assert_in_array(mediaKeySession.keyStatuses.get(key1), [ 'usable', 'status-pending' ], "key1 should have status 'usable' or 'status-pending'"); - assert_in_array(mediaKeySession.keyStatuses.get(key2), [ 'usable', 'status-pending' ], "key2 should have status 'usable' or 'status-pending'"); - - // Try some invalid keyIds. - var invalid1 = key1.subarray(0, key1.length - 1); - assert_false(mediaKeySession.keyStatuses.has(invalid1), "keystatuses should not have invalid key (1)"); - assert_equals(mediaKeySession.keyStatuses.get(invalid1), undefined, "keystatus value for invalid key should be undefined (1)"); - - var invalid2 = key1.subarray(1); - assert_false(mediaKeySession.keyStatuses.has(invalid2), "keystatuses should not have invalid key (2)"); - assert_equals(mediaKeySession.keyStatuses.get(invalid2), undefined, "keystatus value for invalid key should be undefined (2)"); - - var invalid3 = new Uint8Array(key1); - invalid3[0] += 1; - assert_false(mediaKeySession.keyStatuses.has(invalid3), "keystatuses should not have invalid key (3)"); - assert_equals(mediaKeySession.keyStatuses.get(invalid3), undefined, "keystatus value for invalid key should be undefined (3)"); - - var invalid4 = new Uint8Array(key1); - invalid4[invalid4.length - 1] -= 1; - assert_false(mediaKeySession.keyStatuses.has(invalid4), "keystatuses should not have invalid key (4)"); - assert_equals(mediaKeySession.keyStatuses.get(invalid4), undefined, "keystatus value for invalid key should be undefined (4)"); - - var invalid5 = new Uint8Array(key1.length + 1); - invalid5.set(key1, 1); // First element will be 0. - assert_false(mediaKeySession.keyStatuses.has(invalid5), "keystatuses should not have invalid key (5)"); - assert_equals(mediaKeySession.keyStatuses.get(invalid5), undefined, "keystatus value for invalid key should be undefined (5)"); - - var invalid6 = new Uint8Array(key1.length + 1); - invalid6.set(key1, 0); // Last element will be 0. - assert_false(mediaKeySession.keyStatuses.has(invalid6), "keystatuses should not have invalid key (6)"); - assert_equals(mediaKeySession.keyStatuses.get(invalid6), undefined, "keystatus value for invalid key should be undefined (6)"); - } - - function processKeyStatusesChange(event) - { - if (!closed) - { - // The first keystatuseschange (caused by update()) - // should include both keys. - checkKeyStatusFor2Keys(); - - mediaKeySession.close().catch(onFailure); - closed = true; - } - else - { - // The second keystatuseschange (caused by close()) - // should not have any keys. - assert_equals(mediaKeySession.keyStatuses.size, 0); - test.done(); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(test.step_func(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - - // There should be no keys defined yet. - //verifyKeyStatuses(mediaKeySession.keyStatuses, { expected: [], unexpected: [key1, key2] }); - - waitForEventAndRunStep('message', mediaKeySession, processMessage, test); - return mediaKeySession.generateRequest(config.initDataType, config.initData); - })).catch(onFailure); - }, testname ); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/not-callable-after-createsession.js b/testing/web-platform/tests/encrypted-media/scripts/not-callable-after-createsession.js deleted file mode 100644 index 2642c71e0..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/not-callable-after-createsession.js +++ /dev/null @@ -1,50 +0,0 @@ - function runTest(config,qualifier) { - // After creation, the MediaKeySession object is not - // callable, and we should get a InvalidStateError. - - promise_test(function() - { - return navigator.requestMediaKeySystemAccess(config.keysystem, getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - - var arbitraryResponse = new Uint8Array([0x00, 0x11]); - return mediaKeySession.update(arbitraryResponse).then(function(result) { - assert_unreached('update() succeeded unexpectedly.'); - }).catch(function(error) { - assert_equals(error.name, 'InvalidStateError'); - }); - }); - }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, update() immediately after createSession()'); - - promise_test(function() - { - return navigator.requestMediaKeySystemAccess(config.keysystem, getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - - return mediaKeySession.close().then(function(result) { - assert_unreached('close() succeeded unexpectedly.'); - }).catch(function(error) { - assert_equals(error.name, 'InvalidStateError'); - }); - }); - }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, close() immediately after createSession()'); - - promise_test(function() - { - return navigator.requestMediaKeySystemAccess(config.keysystem, getSimpleConfiguration()).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - - return mediaKeySession.remove().then(function(result) { - assert_unreached('remove() succeeded unexpectedly.'); - }).catch(function(error) { - assert_equals(error.name, 'InvalidStateError'); - }); - }); - }, testnamePrefix( qualifier, config.keysystem ) + ', temporary, remove() immediately after createSession()'); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/onencrypted.js b/testing/web-platform/tests/encrypted-media/scripts/onencrypted.js deleted file mode 100644 index 7c969a9e5..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/onencrypted.js +++ /dev/null @@ -1,47 +0,0 @@ -function runTest(config) { - var expectedInitData = []; - expectedInitData.push(stringToUint8Array(atob(config.keys[0].initData))); - expectedInitData.push(stringToUint8Array(atob(config.keys[1].initData))); - - // Will get 2 identical events, one for audio, one for video. - var expectedEvents = 2; - var currentData; - - async_test(function (test) { - var video = config.video, - mediaSource, - onEncrypted = function (event) { - currentData = new Uint8Array(event.initData); - assert_equals(event.target, config.video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - assert_equals(event.initDataType, 'cenc'); - // At this point we do not know if the event is related to audio or video. So check for both expected init data - assert_true(checkInitData(currentData, expectedInitData[0]) || checkInitData(currentData, expectedInitData[1])); - - if (--expectedEvents === 0) { - test.done(); - } - }; - - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - return testmediasource(config).then(test.step_func(function (source) { - mediaSource = source; - config.video.src = URL.createObjectURL(mediaSource); - video.play(); - })); - }, 'encrypted fired on encrypted media file.' - ); -} - -function checkInitData(data, expectedData) { - if (data.length !== expectedData.length) { - return false; - } - for (var i = 0; i < data.length; i++) { - if (data[i] !== expectedData[i]) { - return false; - } - } - return true; -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-destroy-persistent-license.js b/testing/web-platform/tests/encrypted-media/scripts/playback-destroy-persistent-license.js deleted file mode 100644 index 2726d8639..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-destroy-persistent-license.js +++ /dev/null @@ -1,93 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix( qualifier, config.keysystem ) - + ', persistent-license, ' - + /video\/([^;]*)/.exec( config.videoType )[ 1 ] - + ', playback, destroy and acknowledge'; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-license' ] }; - - async_test( function(test) { - - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource, - _sessionId, - _startedReleaseSequence = false; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - config.messagehandler(event.messageType, event.message).then(function(response) { - return _mediaKeySession.update(response); - }).catch(onFailure); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ).then( test.step_func(function() { - assert_not_equals( _mediaKeySession.sessionId, undefined, "SessionId should be defined" ); - _sessionId = _mediaKeySession.sessionId; - })).catch(onFailure); - } - - function onTimeupdate(event) { - if (_video.currentTime > ( config.duration || 1 ) && !_startedReleaseSequence) { - _video.removeEventListener('timeupdate', onTimeupdate); - _video.pause(); - _video.removeAttribute('src'); - _video.load(); - - _startedReleaseSequence = true; - _mediaKeySession.closed.then(onClosed); - _mediaKeySession.remove().catch(onFailure); - } - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - function onClosed() { - // Try and reload and check this fails - var mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); - mediaKeySession.load(_sessionId).then( test.step_func(function(success) { - assert_false( success, "Load of removed session shouold fail" ); - test.done(); - })).catch(onFailure); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - _mediaKeySession = _mediaKeys.createSession('persistent-license'); - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license-events.js b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license-events.js deleted file mode 100644 index e2c0988ba..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license-events.js +++ /dev/null @@ -1,128 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', persistent-license, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback, check events'; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-license' ] }; - - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource, - _receivedTimeupdateEvent = false, - _startedReleaseSequence = false, - _events = [ ]; - - function recordEventFunc( eventType ) { - return function() { _events.push( eventType ); }; - } - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals( event.target, _mediaKeySession ); - assert_true( event instanceof window.MediaKeyMessageEvent ); - assert_equals( event.type, 'message'); - - if (!_startedReleaseSequence) { - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - } else { - assert_equals(event.messageType, 'license-release'); - } - - if (event.messageType !== 'individualization-request') { - _events.push(event.messageType); - } - - config.messagehandler(event.messageType, event.message ).then(function(response) { - _events.push(event.messageType + '-response'); - return _mediaKeySession.update(response); - }).then(test.step_func(function() { - _events.push('updated'); - if (event.messageType === 'license-release') { - assert_array_equals(_events, - [ - 'generaterequest', - 'license-request', - 'license-request-response', - 'updated', - 'keystatuseschange', - 'playing', - 'remove', - 'keystatuseschange', - 'license-release', - 'license-release-response', - 'closed-promise', - 'updated' - ], - "Expected events sequence" ); - test.done(); - } - })).catch(onFailure); - } - - function onKeyStatusesChange(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.Event); - assert_equals(event.type, 'keystatuseschange'); - _events.push('keystatuseschange'); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ).then(recordEventFunc('generaterequest') - ).catch(onFailure); - } - - function onTimeupdate(event) { - if ( _video.currentTime > ( config.duration || 1 ) && !_receivedTimeupdateEvent ) { - _receivedTimeupdateEvent = true; - _video.pause(); - _video.removeAttribute('src'); - _video.load(); - - _startedReleaseSequence = true; - _mediaKeySession.remove().then(recordEventFunc('remove')).catch(onFailure); - } - } - - function onPlaying(event) { - _events.push( 'playing' ); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); - waitForEventAndRunStep('keystatuseschange', _mediaKeySession, onKeyStatusesChange, test); - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.closed.then( recordEventFunc( 'closed-promise' ) ); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license.js b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license.js deleted file mode 100644 index a1361d88b..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-license.js +++ /dev/null @@ -1,75 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', persistent-license, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + 'playback'; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-license' ] }; - - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals( event.target, _mediaKeySession ); - assert_true( event instanceof window.MediaKeyMessageEvent ); - assert_equals( event.type, 'message'); - - assert_in_array( event.messageType, [ 'license-request', 'individualization-request' ] ); - - config.messagehandler(event.messageType, event.message).then( function( response ) { - return _mediaKeySession.update(response) - }).catch(onFailure); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ).catch(onFailure); - } - - function onTimeupdate(event) { - if (_video.currentTime > (config.duration || 1)) { - _video.pause(); - test.done(); - } - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - _mediaKeySession = _mediaKeys.createSession( 'persistent-license' ); - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record-events.js b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record-events.js deleted file mode 100644 index 84e595ecf..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record-events.js +++ /dev/null @@ -1,113 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', persistent-usage-record, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback, check events'; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-usage-record' ] }; - - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _sessionId, - _timeupdateEvent = false, - _events = [ ]; - - function recordEventFunc(eventType) { - return function() { _events.push(eventType); }; - } - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals( event.target, _mediaKeySession ); - assert_true( event instanceof window.MediaKeyMessageEvent ); - assert_equals( event.type, 'message'); - - if ( event.messageType !== 'individualization-request' ) { - _events.push( event.messageType ); - } - - config.messagehandler(event.messageType, event.message).then(function(response) { - _events.push(event.messageType + '-response'); - return _mediaKeySession.update(response); - }).then(test.step_func(function() { - _events.push('update-done'); - if (event.messageType === 'license-release') { - consoleWrite(_events); - assert_array_equals(_events, - [ 'encrypted', - 'generaterequest-done', - 'license-request', - 'license-request-response', - 'update-done', - 'keystatuseschange', - 'playing', - 'remove-done', - 'keystatuseschange', - 'license-release', - 'license-release-response', - 'closed-promise', - 'update-done' - ], - "Expected events sequence" ); - test.done(); - } - - if ( event.messageType === 'license-request' ) { - _video.setMediaKeys(_mediaKeys); - } - })).catch(onFailure); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - _events.push(event.type); - _mediaKeySession.generateRequest( config.initDataType || event.initDataType, - config.initData || event.initData ).then( function() { - _events.push( 'generaterequest-done' ); - _sessionId = _mediaKeySession.sessionId; - }).catch(onFailure); - } - - function onTimeupdate(event) { - if (_video.currentTime > (config.duration || 1) && !_timeupdateEvent) { - _timeupdateEvent = true; - _video.pause(); - _mediaKeySession.remove().then(recordEventFunc('remove-done')).catch(onFailure); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, recordEventFunc('playing'), test); - - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - - _mediaKeySession = _mediaKeys.createSession( 'persistent-usage-record' ); - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - waitForEventAndRunStep('keystatuseschange', _mediaKeySession, recordEventFunc('keystatuseschange'), test); - _mediaKeySession.closed.then(recordEventFunc('closed-promise')); - return config.servercertificate ? _mediaKeys.setServerCertificate(config.servercertificate) : true; - }).then(function( success ) { - return testmediasource(config); - }).then(function(source) { - _video.src = URL.createObjectURL(source); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record.js b/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record.js deleted file mode 100644 index 966a0ae19..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-persistent-usage-record.js +++ /dev/null @@ -1,102 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', persistent-usage-record, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + 'playback'; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-usage-record' ] }; - - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource, - _releaseSequence = false; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - // event instance verification failing on CastTV - // assert_true( event instanceof window.MediaKeyMessageEvent ); - assert_equals(event.type, 'message'); - - if (!_releaseSequence) - { - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - } - else - { - assert_equals(event.messageType, 'license-release'); - } - - config.messagehandler(event.messageType, event.message).then(function(response) { - return _mediaKeySession.update(response); - }).then(function() { - if(event.messageType === 'license-request') { - return _video.setMediaKeys(_mediaKeys); - } else if(event.messageType === 'license-release') { - test.done(); - } - }).catch(onFailure); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ) - .catch(onFailure); - } - - function onClosed(event) { - _video.src = ""; - _video.setMediaKeys( null ); - } - - function onTimeupdate(event) { - if (_video.currentTime > ( config.duration || 1) && !_releaseSequence) { - _video.removeEventListener('timeupdate', onTimeupdate ); - _video.pause(); - _releaseSequence = true; - - _mediaKeySession.closed.then(test.step_func(onClosed)); - _mediaKeySession.remove().catch(onFailure); - - _video.removeEventListener('timeupdate', onTimeupdate); - } - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [ configuration ]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - _mediaKeySession = _mediaKeys.createSession('persistent-usage-record'); - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - return config.servercertificate ? _mediaKeys.setServerCertificate(config.servercertificate) : true; - }).then(function(success) { - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-license.js b/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-license.js deleted file mode 100644 index fd58d24f2..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-license.js +++ /dev/null @@ -1,106 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', persistent-license, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', ' + config.testcase; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-license' ] }; - - - async_test( function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource, - _sessionId; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ).then( function() { - _sessionId = _mediaKeySession.sessionId; - }).catch(onFailure); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - - config.messagehandler(event.messageType, event.message).then(function(response) { - return _mediaKeySession.update(response); - }).catch(onFailure); - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - function onTimeupdate(event) { - if (_video.currentTime > (config.duration || 1)) { - _video.removeEventListener('timeupdate', onTimeupdate); - _video.pause(); - _video.removeAttribute('src'); - _video.load() - - _mediaKeySession.closed.then(test.step_func(onClosed)); - _mediaKeySession.close(); - } - } - - function onClosed() { - // Open a new window in which we will attempt to play with the persisted license - var win = window.open(config.windowscript); - - // Lisen for an event from the new window containing its test assertions - window.addEventListener('message', test.step_func(function(messageEvent) { - messageEvent.data.forEach(test.step_func(function(assertion) { - assert_equals(assertion.actual, assertion.expected, assertion.message); - })); - - win.close(); - test.done(); - })); - - // Delete things which can't be cloned and posted over to the new window - delete config.video; - delete config.messagehandler; - - // Post the config and session id to the new window when it is ready - win.onload = function() { - win.postMessage({config: config, sessionId: _sessionId}, '*'); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - _video.setMediaKeys( mediaKeys ); - _mediaKeySession = _mediaKeys.createSession('persistent-license'); - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js b/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js deleted file mode 100644 index 657e02610..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-retrieve-persistent-usage-record.js +++ /dev/null @@ -1,108 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', persistent-usage-record, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback, retrieve in new window'; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'persistent-usage-record' ] }; - - - async_test( function( test ) { - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource, - _sessionId, - _isClosing = false; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest( config.initDataType || event.initDataType, - config.initData || event.initData ).then( function() { - _sessionId = _mediaKeySession.sessionId; - }).catch(onFailure); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array( event.messageType,['license-request', 'individualization-request']); - - config.messagehandler( event.messageType, event.message ).then(function(response) { - return _mediaKeySession.update(response); - }).then(function() { - _video.setMediaKeys(_mediaKeys); - }).catch(onFailure); - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - function onTimeupdate(event) { - if (!_isClosing && _video.currentTime > (config.duration || 1)) { - _isClosing = true; - _video.removeEventListener('timeupdate', onTimeupdate); - _video.pause(); - _mediaKeySession.closed.then( test.step_func(onClosed)); - _mediaKeySession.close(); - } - } - - function onClosed(event) { - _video.src = ""; - _video.setMediaKeys( null ); - - var win = window.open(config.windowscript); - window.addEventListener('message', test.step_func(function(event) { - event.data.forEach(test.step_func(function(assertion) { - assert_equals(assertion.actual, assertion.expected, assertion.message); - })); - - win.close(); - test.done(); - })); - - delete config.video; - delete config.messagehandler; - - win.onload = function() { - win.postMessage({ config: config, sessionId: _sessionId }, '*'); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(mediaKeys); - }).then(function(){ - _mediaKeySession = _mediaKeys.createSession( 'persistent-usage-record' ); - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - return config.servercertificate ? _mediaKeys.setServerCertificate(config.servercertificate) : true; - }).then(function(success) { - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-encrypted-clear-sources.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-encrypted-clear-sources.js deleted file mode 100644 index 66781add3..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-encrypted-clear-sources.js +++ /dev/null @@ -1,107 +0,0 @@ -function runTest(configEncrypted,configClear,qualifier) { - - var testname = testnamePrefix(qualifier, configEncrypted.keysystem) - + ', temporary, ' - + /video\/([^;]*)/.exec(configEncrypted.videoType)[1] - + ', playback, encrypted and clear sources'; - - var configuration = { initDataTypes: [ configEncrypted.initDataType ], - audioCapabilities: [ { contentType: configEncrypted.audioType } ], - videoCapabilities: [ { contentType: configEncrypted.videoType } ], - sessionTypes: [ 'temporary' ] }; - - async_test(function(test) { - var playbackCount = 0, - _video = configEncrypted.video, - _mediaKeys, - _mediaKeySession, - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - - configEncrypted.messagehandler(event.messageType, event.message).then(function(response) { - return _mediaKeySession.update( response ); - }).catch(onFailure); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest(configEncrypted.initData ? configEncrypted.initDataType : event.initDataType, - configEncrypted.initData || event.initData).then(function(){ - return _video.setMediaKeys(_mediaKeys); - }).catch(onFailure); - } - - function onPlaying(event) - { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeUpdate, true); - } - - function onTimeUpdate(event) { - if (_video.currentTime < (configEncrypted.duration || 0.5)) { - return; - } - - _video.removeEventListener('timeupdate', onTimeUpdate, true); - - resetSrc().then(function(){ - if (playbackCount >= 2) { - test.done(); - } else { - playbackCount++; - startPlayback(); - } - }).catch(onFailure); - } - - function resetSrc() { - _video.pause(); - _video.removeAttribute('src'); - _video.load(); - return _video.setMediaKeys(null); - } - - function startPlayback() { - // Alternate between encrypted and unencrypted files. - if (playbackCount % 2) { - // Unencrypted files don't require MediaKeys - testmediasource( configClear ).then(function( source ) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - } else { - navigator.requestMediaKeySystemAccess(configEncrypted.keysystem, [ configuration ]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - _mediaKeySession = _mediaKeys.createSession( 'temporary' ); - }).then(function() { - return testmediasource(configEncrypted); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - } - } - - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', video, onPlaying, test); - startPlayback(); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-events.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-events.js deleted file mode 100644 index dd05ba76c..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-events.js +++ /dev/null @@ -1,134 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback, check events'; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'temporary' ] }; - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource, - _timeupdateEvent = false, - _events = [ ]; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array( event.messageType, ['license-request', 'individualization-request']); - - if (event.messageType !== 'individualization-request') { - _events.push(event.messageType); - } - - config.messagehandler(event.messageType, event.message).then(function(response) { - _events.push('license-response'); - waitForEventAndRunStep('keystatuseschange', _mediaKeySession, onKeyStatusesChange, test); - return _mediaKeySession.update( response ); - }).then(function() { - _events.push('updated'); - }).catch(onFailure); - } - - function onKeyStatusesChange(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.Event); - assert_equals(event.type, 'keystatuseschange'); - var hasKeys = false, pendingKeys = false; - _mediaKeySession.keyStatuses.forEach(function(value, keyid) { - assert_in_array(value, ['status-pending', 'usable']); - hasKeys = true; - pendingKeys = pendingKeys || (value === 'status-pending'); - }); - - if (!hasKeys) { - _events.push('emptykeyslist'); - } else if (!pendingKeys ) { - _events.push('allkeysusable'); - _video.setMediaKeys(_mediaKeys).catch(onFailure); - } else { - assert_unreached('unexpected ' + event.type + ' event'); - } - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest(config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ).then(function() { - _events.push('generaterequest'); - }).catch(onFailure); - } - - function onClosed(event) { - _events.push('closed-promise'); - setTimeout(test.step_func(function() { - assert_array_equals(_events, - [ - 'generaterequest', - 'license-request', - 'license-response', - 'updated', - 'allkeysusable', - 'playing', - 'closed', - 'closed-promise', - 'emptykeyslist' - ], - "Expected events sequence"); - test.done(); - } ), 0); - } - - function onTimeupdate(event) { - if (_video.currentTime > (config.duration || 1) && !_timeupdateEvent) { - _timeupdateEvent = true; - _video.pause(); - - _mediaKeySession.closed.then(test.step_func(onClosed)); - _mediaKeySession.close().then(function() { - _events.push('closed'); - }).catch(onFailure); - } - } - - function onPlaying(event) { - _events.push('playing'); - - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - _mediaKeySession = _mediaKeys.createSession('temporary'); - - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - }).then(function() { - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-expired.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-expired.js deleted file mode 100644 index 76fedbb7d..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-expired.js +++ /dev/null @@ -1,84 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', expired license'; - - var configuration = { initDataTypes: [config.initDataType], - audioCapabilities: [{contentType: config.audioType}], - videoCapabilities: [{contentType: config.videoType}], - sessionTypes: ['temporary'] }; - - async_test(function(test) { - - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - // Only create the session for the first encrypted event - if (_mediaKeySession !== undefined) return; - - var initDataType = config.initData ? config.initDataType : event.initDataType; - var initData = config.initData || event.initData; - - _mediaKeySession = _mediaKeys.createSession('temporary'); - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest(initDataType, initData).catch(onFailure); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - - var expiration = Date.now().valueOf(); - config.messagehandler(event.messageType, event.message, expiration).then(function(response) { - return event.target.update(response); - }).then(test.step_func(function(){ - assert_approx_equals(event.target.expiration, expiration, 2000, "expiration attribute should equal provided expiration time"); - test.step_timeout(function() { - _video.play(); - test.step_timeout(function() { test.done(); }, 2000); - }, 5000); - })).catch(onFailure); - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', test.step_func(onTimeupdate), true); - } - - function onTimeupdate(event) { - _video.pause(); - assert_unreached("Playback should not start with expired license"); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function(){ - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js deleted file mode 100644 index 8ff98cb05..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-multisession.js +++ /dev/null @@ -1,91 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback with multiple keys and sessions, ' - + config.testcase; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'temporary' ] }; - - async_test(function(test) { - - var _video = config.video, - _mediaKeys, - _mediaKeySessions = []; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - consoleWrite("message " + event.messageType); - assert_any(assert_equals, event.target, _mediaKeySessions); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - - config.messagehandler(event.messageType, event.message, {variantId: event.target._variantId}).then(function(response) { - return event.target.update(response); - }).catch(onFailure); - } - - function onWaitingForKey(event) { - consoleWrite("waitingforkey"); - } - - function onPlaying(event) { - consoleWrite("playing"); - waitForEventAndRunStep('pause', _video, onStopped, test); - waitForEventAndRunStep('waiting', _video, onStopped, test); - waitForEventAndRunStep('stalled', _video, onStopped, test); - } - - function onStopped(event) { - consoleWrite( event.type ); - if (_mediaKeySessions.length < config.initData.length) { - var mediaKeySession = _mediaKeys.createSession('temporary'); - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - mediaKeySession._variantId = config.variantIds ? config.variantIds[_mediaKeySessions.length] : undefined; - mediaKeySession.generateRequest(config.initDataType, config.initData[_mediaKeySessions.length]).catch(onFailure); - _mediaKeySessions.push(mediaKeySession); - } - } - - function onTimeupdate(event) { - if ( _video.currentTime > (config.duration || 1)) { - _video.removeEventListener('timeupdate', onTimeupdate); - _video.pause(); - test.done(); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function(){ - waitForEventAndRunStep('waitingforkey', _video, onWaitingForKey, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - - var mediaKeySession = _mediaKeys.createSession('temporary'); - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - _mediaKeySessions.push(mediaKeySession); - mediaKeySession._variantId = config.variantIds ? config.variantIds[0] : undefined; - return mediaKeySession.generateRequest(config.initDataType, config.initData[0]); - }).then(function() { - return testmediasource(config); - }).then(function(source) { - _video.src = URL.createObjectURL(source); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-sequential.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-sequential.js deleted file mode 100644 index 597e8f9b0..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multikey-sequential.js +++ /dev/null @@ -1,122 +0,0 @@ -function runTest(config,qualifier) { - - // config.initData contains a list of keys. We expect those to be needed in order and get - // one waitingforkey event for each one. - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', successful playback, temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', multiple keys, sequential' - + (config.checkReadyState ? ', readyState' : ''); - - var configuration = { initDataTypes: [config.initDataType], - audioCapabilities: [{contentType: config.audioType}], - videoCapabilities: [{contentType: config.videoType}], - sessionTypes: ['temporary'] }; - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySessions = [], - _mediaSource, - _waitingForKey = false, - _playingCount = 0, - _canplayCount = 0, - _timeupdateWhileWaitingCount = 0; - - function startNewSession() { - assert_less_than(_mediaKeySessions.length, config.initData.length); - var mediaKeySession = _mediaKeys.createSession('temporary'); - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - _mediaKeySessions.push(mediaKeySession); - mediaKeySession.variantId = config.variantIds ? config.variantIds[_mediaKeySessions.length - 1] : undefined; - mediaKeySession.generateRequest(config.initDataType, config.initData[_mediaKeySessions.length - 1]).catch(onFailure); - } - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - var firstMessage = !_video.src; - config.messagehandler(event.messageType, event.message, {variantId: event.target.variantId}).then(function(response) { - return event.target.update(response); - }).then(function(){ - if (firstMessage) { - _video.src = URL.createObjectURL(_mediaSource); - return _mediaSource.done; - } else if (event.target.keyStatuses.size > 0){ - _waitingForKey = false; - return Promise.resolve(); - } - }).then(function(){ - if (firstMessage) { - _video.play(); - } - }).catch(onFailure); - } - - function onWaitingForKey(event) { - _waitingForKey = true; - if (config.checkReadyState) { - // This test does not start playing until the first license has been provided, - // so this event should occur when transitioning between keys. - // Thus, the frame at the current playback position is available and readyState - // should be HAVE_CURRENT_DATA. - assert_equals(_video.readyState, _video.HAVE_CURRENT_DATA, "Video readyState should be HAVE_CURRENT_DATA on watingforkey event"); - } - startNewSession(); - } - - function onPlaying(event) { - _playingCount++; - assert_equals(_mediaKeySessions.length, _playingCount, "Should get one 'playing' event per key / session added"); - assert_less_than_equal(_playingCount, 2, "Should not get more than two 'playing' events."); - } - - function onCanPlay(event) { - _canplayCount++; - assert_equals(_mediaKeySessions.length, _canplayCount, "Should get one 'canplay' event per key / session added"); - assert_less_than_equal(_canplayCount, 2, "Should not get more than two 'canplay' events."); - } - - function onTimeupdate(event) { - // We should not receive 'timeupdate' events due to playing while waiting for a key, except - // when we first start waiting for key we should change the readyState to HAVE_CURRENT_DATA - // which will trigger the "If the previous ready state was HAVE_FUTURE_DATA or more, and - // the new ready state is HAVE_CURRENT_DATA or less" case of the readyState change - // algorithm which requires a "timeupdate" event be fired. - if (_waitingForKey) { - assert_equals(++_timeupdateWhileWaitingCount, 1, "Should only receive one timeupdate while waiting for key"); - assert_equals(_video.readyState, _video.HAVE_CURRENT_DATA, "Video readyState should be HAVE_CURRENT_DATA while wating for key"); - } - - if (_video.currentTime > config.duration) { - assert_equals(_mediaKeySessions.length, config.initData.length, "It should require all keys to reach end of content"); - assert_equals(_timeupdateWhileWaitingCount, 1, "Should have only received exactly one timeupdate while waiting for key"); - _video.pause(); - test.done(); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function(){ - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', test.step_func(onTimeupdate), true); - - waitForEventAndRunStep('waitingforkey', _video, onWaitingForKey, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - waitForEventAndRunStep('canplay', _video, onCanPlay, test); - - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - startNewSession(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multisession.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multisession.js deleted file mode 100644 index 3e9027aea..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-multisession.js +++ /dev/null @@ -1,74 +0,0 @@ -function runTest(config,qualifier) { - - // This test assumes one session is required for each provided initData - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback with multiple sessions, ' - + config.testcase; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'temporary' ] }; - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySessions = [], - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_any(assert_equals, event.target, _mediaKeySessions); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - - config.messagehandler(event.messageType, event.message, {variantId: event.target._variantId}).then(function(response) { - return event.target.update(response); - }).catch(onFailure); - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - function onTimeupdate(event) { - if (_video.currentTime > (config.duration || 1)) { - _video.removeEventListener('timeupdate', onTimeupdate); - _video.pause(); - test.done(); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - waitForEventAndRunStep('playing', _video, onPlaying, test); - - config.initData.forEach(function(initData,i) { - var mediaKeySession = _mediaKeys.createSession( 'temporary' ); - mediaKeySession._variantId = config.variantIds ? config.variantIds[i] : undefined; - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - _mediaKeySessions.push(mediaKeySession); - mediaKeySession.generateRequest(config.initDataType, initData).catch(onFailure); - } ); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-setMediaKeys.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-setMediaKeys.js deleted file mode 100644 index c3da83c1a..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-setMediaKeys.js +++ /dev/null @@ -1,103 +0,0 @@ -SETMEDIAKEYS_IMMEDIATELY = 0; -SETMEDIAKEYS_AFTER_SRC = 1; -SETMEDIAKEYS_ONENCRYPTED = 2; -SETMEDIAKEYS_AFTER_UPDATE = 3; - -function runTest(config,qualifier) { - - var testcase = (config.testcase === SETMEDIAKEYS_IMMEDIATELY) ? 'setMediaKeys first' - : (config.testcase === SETMEDIAKEYS_AFTER_SRC) ? 'setMediaKeys after setting video.src' - : (config.testcase === SETMEDIAKEYS_ONENCRYPTED) ? 'setMediaKeys in encrypted event' - : (config.testcase === SETMEDIAKEYS_AFTER_UPDATE) ? 'setMediaKeys after updating session' - : 'unknown'; - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback, ' + testcase; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'temporary' ] }; - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array( event.messageType, ['license-request', 'individualization-request']); - - config.messagehandler(event.messageType, event.message).then(function(response) { - return _mediaKeySession.update( response ); - }).then(function() { - if (config.testcase === SETMEDIAKEYS_AFTER_UPDATE) { - return _video.setMediaKeys(_mediaKeys); - } - }).catch(onFailure); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - var promise = ( config.testcase === SETMEDIAKEYS_ONENCRYPTED ) - ? _video.setMediaKeys(_mediaKeys) - : Promise.resolve(); - - promise.then( function() { - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - return _mediaKeySession.generateRequest(config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ); - }).catch(onFailure); - } - - function onTimeupdate(event) { - if (_video.currentTime > (config.duration || 1)) { - _video.pause(); - test.done(); - } - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(test.step_func(function(mediaKeys) { - _mediaKeys = mediaKeys; - if ( config.testcase === SETMEDIAKEYS_IMMEDIATELY ) { - return _video.setMediaKeys( _mediaKeys ); - } - })).then(function(){ - _mediaKeySession = _mediaKeys.createSession( 'temporary' ); - - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - - return testmediasource(config); - }).then(test.step_func(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - - if (config.testcase === SETMEDIAKEYS_AFTER_SRC) { - return _video.setMediaKeys(_mediaKeys); - } - })).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-two-videos.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-two-videos.js deleted file mode 100644 index 7d63cd604..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-two-videos.js +++ /dev/null @@ -1,81 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback two videos'; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'temporary' ] }; - - promise_test(function(test) - { - var promises = config.video.map(function(video) { return play_video_as_promise(test,video); }); - return Promise.all(promises); - - }, testname); - - function play_video_as_promise(test, _video) { - var _mediaKeys, - _mediaKeySession, - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array( event.messageType, ['license-request', 'individualization-request']); - - config.messagehandler(event.messageType, event.message).then(function(response) { - return _mediaKeySession.update(response); - }).catch(onFailure); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - - _mediaKeySession.generateRequest(config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData).catch(onFailure); - } - - function wait_for_timeupdate_message(video) - { - return new Promise(function(resolve) { - video.addEventListener('timeupdate', function listener(event) { - if (event.target.currentTime > (config.duration || 1)) - { - video.removeEventListener('timeupdate', listener); - resolve(event); - } - }); - }); - }; - - return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - _mediaKeySession = _mediaKeys.createSession('temporary'); - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - return wait_for_timeupdate_message(_video); - }).catch(onFailure); - } -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-waitingforkey.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-waitingforkey.js deleted file mode 100644 index 8fc67bff1..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary-waitingforkey.js +++ /dev/null @@ -1,69 +0,0 @@ -function runTest(config,qualifier) { - - // config.initData contains a list of keys. We expect those to be needed in order and get - // one waitingforkey event for each one. - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', successful playback, temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', waitingforkey event, ' - + config.initData.length + ' key' + (config.initData.length > 1 ? 's' : ''); - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'temporary' ] }; - - async_test(function(test) { - var _video = config.video, - _mediaKeys, - _mediaKeySessions = [], - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - config.messagehandler( event.messageType, event.message ).then( function( response ) { - return event.target.update( response ); - }).catch(onFailure); - } - - function onWaitingForKey(event) { - // Expect one waitingforkey event for each initData we were given - assert_less_than(_mediaKeySessions.length, config.initData.length); - var mediaKeySession = _mediaKeys.createSession( 'temporary' ); - waitForEventAndRunStep('message', mediaKeySession, onMessage, test); - _mediaKeySessions.push(mediaKeySession); - mediaKeySession.generateRequest(config.initDataType, config.initData[_mediaKeySessions.length - 1]).catch(onFailure); - } - - function onTimeupdate(event) { - if (_video.currentTime > (config.duration || 1)) { - assert_equals(_mediaKeySessions.length, config.initData.length); - _video.removeEventListener('timeupdate', onTimeupdate); - _video.pause(); - test.done(); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function(){ - waitForEventAndRunStep('waitingforkey', _video, onWaitingForKey, test); - - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary.js b/testing/web-platform/tests/encrypted-media/scripts/playback-temporary.js deleted file mode 100644 index 53dd3e65d..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/playback-temporary.js +++ /dev/null @@ -1,80 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) - + ', temporary, ' - + /video\/([^;]*)/.exec(config.videoType)[1] - + ', playback, ' + config.testcase; - - var configuration = { initDataTypes: [ config.initDataType ], - audioCapabilities: [ { contentType: config.audioType } ], - videoCapabilities: [ { contentType: config.videoType } ], - sessionTypes: [ 'temporary' ] }; - - async_test(function(test) { - - var _video = config.video, - _mediaKeys, - _mediaKeySession, - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onEncrypted(event) { - assert_equals(event.target, _video); - assert_true(event instanceof window.MediaEncryptedEvent); - assert_equals(event.type, 'encrypted'); - - // Only create the session for the firs encrypted event - if (_mediaKeySession !== undefined) return; - - var initDataType = config.initData ? config.initDataType : event.initDataType; - var initData = config.initData || event.initData; - - _mediaKeySession = _mediaKeys.createSession('temporary'); - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest( initDataType, initData ).catch(onFailure); - } - - function onMessage(event) { - assert_equals(event.target, _mediaKeySession); - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.type, 'message'); - - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - - config.messagehandler(event.messageType, event.message).then(function(response) { - return event.target.update(response); - }).catch(onFailure); - } - - function onPlaying(event) { - // Not using waitForEventAndRunStep() to avoid too many - // EVENT(onTimeUpdate) logs. - _video.addEventListener('timeupdate', onTimeupdate, true); - } - - function onTimeupdate(event) { - if ( _video.currentTime > (config.duration || 1)) { - _video.pause(); - test.done(); - } - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(mediaKeys) { - _mediaKeys = mediaKeys; - return _video.setMediaKeys(_mediaKeys); - }).then(function(){ - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - waitForEventAndRunStep('playing', _video, onPlaying, test); - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - _video.src = URL.createObjectURL(_mediaSource); - _video.play(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js b/testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js deleted file mode 100644 index 98be50bb8..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/requestmediakeysystemaccess.js +++ /dev/null @@ -1,320 +0,0 @@ -function runTest(config, qualifier) { - - var prefix = testnamePrefix(qualifier, config.keysystem) + ', requestMediaKeySystemAccess: '; - - function expect_error(keySystem, configurations, expectedError, testname) { - - var audioCapabilities = configurations.length ? configurations[0].audioCapabilities : undefined, - videoCapabilities = configurations.length ? configurations[0].videoCapabilities : undefined, - audiocontenttypes = audioCapabilities ? audioCapabilities.map( function(ac) { return "'" + ac.contentType + "'"; } ).join(',') : '', - videocontenttypes = videoCapabilities ? videoCapabilities.map( function(ac) { return "'" + ac.contentType + "'"; } ).join(',') : '', - modifiedtestname = testname.replace( '%ks', keySystem ).replace( '%audiocontenttype', audiocontenttypes ).replace( '%videocontenttype', videocontenttypes ); - - promise_test(function(test) { - return navigator.requestMediaKeySystemAccess(keySystem, configurations).then(function(a) { - assert_unreached('Unexpected requestMediaKeySystemAccess() success.'); - }, function(e) { - assert_equals(e.name, expectedError); - }); - }, prefix + modifiedtestname + ' should result in ' + expectedError ); - } - - function assert_subset(actual, expected, path) { - if (typeof expected == 'string') { - assert_equals(actual, expected, path); - } else { - if (expected.hasOwnProperty('length')) { - assert_equals(actual.length, expected.length, path + '.length'); - } - for (property in expected) { - assert_subset(actual[property], expected[property], path + '.' + property); - } - } - } - - function expect_config(keySystem, configurations, expectedConfiguration, testname) { - promise_test(function(test) { - return navigator.requestMediaKeySystemAccess(keySystem, configurations).then(function(a) { - assert_subset(a.getConfiguration(), expectedConfiguration, testname + ': '); - }); - }, testname); - } - - // Tests for Key System. - expect_error('', [{}], 'InvalidAccessError', 'Empty Key System (%ks)'); - expect_error('com.example.unsupported', [{}], 'NotSupportedError', 'Unsupported Key System (%ks)'); - expect_error(config.keysystem + '.', [{}], 'NotSupportedError', 'Key System ending in "." (%ks)'); - expect_error(config.keysystem.toUpperCase(), [{}], 'NotSupportedError', 'Capitalized Key System (%ks)'); - expect_error(config.keysystem + '\u028F', [{}], 'NotSupportedError', 'Non-ASCII Key System (%ks)'); - - // Parent of Clear Key not supported. - expect_error(config.keysystem.match(/^(.*?)\./)[1], [{}], 'NotSupportedError', 'Root domain of Key System alone (%ks)'); - expect_error(config.keysystem.match(/^(.*?)\./)[0], [{}], 'NotSupportedError', 'Root domain of Key System, with dot (%ks)'); - expect_error(config.keysystem.match(/^(.*?\..*?)\./)[1], [{}], 'NotSupportedError', 'Domain of Key System along (%ks)'); - expect_error(config.keysystem.match(/^(.*?\..*?)\./)[0], [{}], 'NotSupportedError', 'Domain of Key System, with dot (%ks)'); - - // Child of Clear Key not supported. - expect_error(config.keysystem+'.foo', [{}], 'NotSupportedError', 'Child of Key System'); - - // Prefixed Clear Key not supported. - expect_error('webkit-'+config.keysystem, [{}], 'NotSupportedError', 'Prefixed Key System'); - - // Incomplete names. - expect_error(config.keysystem.substr(0,7)+config.keysystem.substr(8), [{}], 'NotSupportedError', 'Incomplete Key System name (%ks)'); - expect_error(config.keysystem.substr(0,config.keysystem.length-1), [{}], 'NotSupportedError', 'Incomplete Key System name (%ks)'); - - // Spaces in key system name not supported. - expect_error(' '+config.keysystem, [{}], 'NotSupportedError', 'Leading space in Key System name (%ks)'); - expect_error(config.keysystem.substr(0,6) + ' ' + config.keysystem.substr(6), [{}], 'NotSupportedError', 'Extra space in Key System name (%ks)'); - expect_error(config.keysystem + ' ', [{}], 'NotSupportedError', 'Trailing space in Key System name (%ks)'); - - // Extra dots in key systems names not supported. - expect_error('.' + config.keysystem, [{}], 'NotSupportedError', 'Leading dot in Key System name (%ks)'); - expect_error(config.keysystem.substr(0,6) + '.' + config.keysystem.substr(6), [{}], 'NotSupportedError', 'Trailing dot in Key System name (%ks)'); - expect_error(config.keysystem + '.', [{}], 'NotSupportedError', 'Trailing dot in Key System name (%ks)'); - - // Key system name is case sensitive. - if (config.keysystem !== config.keysystem.toUpperCase()) { - expect_error(config.keysystem.toUpperCase(), [{}], 'NotSupportedError', 'Key System name is case sensitive (%ks)'); - } - - if (config.keysystem !== config.keysystem.toLowerCase()) { - expect_error(config.keysystem.toLowerCase(), [{}], 'NotSupportedError', 'Key System name is case sensitive (%ks)'); - } - - // Tests for trivial configurations. - expect_error(config.keysystem, [], 'InvalidAccessError', 'Empty supportedConfigurations'); - expect_config(config.keysystem, [{}], {}, 'Empty configuration'); - - // Various combinations of supportedConfigurations. - expect_config(config.keysystem, [{ - initDataTypes: [config.initDataType], - audioCapabilities: [{contentType: config.audioType}], - videoCapabilities: [{contentType: config.videoType}], - }], { - initDataTypes: [config.initDataType], - audioCapabilities: [{contentType: config.audioType}], - videoCapabilities: [{contentType: config.videoType}], - }, 'Basic supported configuration'); - - expect_config(config.keysystem, [{ - initDataTypes: ['fakeidt', config.initDataType], - audioCapabilities: [{contentType: 'audio/fake'}, {contentType: config.audioType}], - videoCapabilities: [{contentType: 'video/fake'}, {contentType: config.videoType}], - }], { - initDataTypes: [config.initDataType], - audioCapabilities: [{contentType: config.audioType}], - videoCapabilities: [{contentType: config.videoType}], - }, 'Partially supported configuration'); - - expect_config(config.keysystem, [{ - audioCapabilities: [{contentType: config.audioType}], - }], { - audioCapabilities: [{contentType: config.audioType}], - }, 'Supported audio codec'); - - expect_config(config.keysystem, [{ - audioCapabilities: [{contentType: config.audioType.replace(/^(.*?);(.*)/, "$1; $2")}], - }], { - audioCapabilities: [{contentType: config.audioType.replace(/^(.*?);(.*)/, "$1; $2")}], - }, 'ContentType formatting must be preserved'); - - expect_error(config.keysystem, [{ - audioCapabilities: [{contentType: 'audio/webm; codecs=fake'}], - }], 'NotSupportedError', 'Unsupported audio codec (%audiocontenttype)'); - - expect_error(config.keysystem, [{ - audioCapabilities: [{contentType: 'video/webm; codecs=fake'}], - }], 'NotSupportedError', 'Unsupported video codec (%videocontenttype)'); - - expect_error(config.keysystem, [{ - audioCapabilities: [ - {contentType: 'audio/webm; codecs=mp4a'}, - {contentType: 'audio/webm; codecs=mp4a.40.2'} - ], - }], 'NotSupportedError', 'Mismatched audio container/codec (%audiocontenttype)'); - - expect_error(config.keysystem, [{ - audioCapabilities: [{contentType: config.videoType}], - }], 'NotSupportedError', 'Video codec specified in audio field (%audiocontenttype)'); - - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: config.audioType}], - }], 'NotSupportedError', 'Audio codec specified in video field (%videocontenttype)'); - - expect_error(config.keysystem, [{ - audioCapabilities: [ - {contentType: 'audio/webm; codecs=avc1'}, - {contentType: 'audio/webm; codecs=avc1.42e01e'} - ], - }], 'NotSupportedError', 'Mismatched audio container/codec (%audiocontenttype)'); - - expect_error(config.keysystem, [{ - audioCapabilities: [ - {contentType: 'audio/mp4; codecs=vorbis'} - ], - }], 'NotSupportedError', 'Mismatched audio container/codec (%audiocontenttype)'); - - expect_config(config.keysystem, [ - {initDataTypes: ['fakeidt']}, - {initDataTypes: [config.initDataType]} - ], {initDataTypes: [config.initDataType]}, 'Two configurations, one supported'); - - expect_config(config.keysystem, [ - {initDataTypes: [config.initDataType]}, - {} - ], {initDataTypes: [config.initDataType]}, 'Two configurations, both supported'); - - // Audio MIME type does not support video codecs. - expect_error(config.keysystem, [{ - audioCapabilities: [ - {contentType: 'audio/webm; codecs="vp8,vorbis"'}, - {contentType: 'audio/webm; codecs="vorbis, vp8"'}, - {contentType: 'audio/webm; codecs="vp8"'} - ], - }], 'NotSupportedError', 'Audio MIME type does not support video codecs (webm) (%audiocontenttype)'); - - expect_error(config.keysystem, [{ - audioCapabilities: [ - {contentType: 'audio/mp4; codecs="avc1"'}, - {contentType: 'audio/mp4; codecs="avc1.4d401e"'}, - ], - }], 'NotSupportedError', 'Audio MIME type does not support video codecs (mp4) (%audiocontenttype)'); - - // Video MIME type does not support audio codecs. - expect_error(config.keysystem, [{ - videoCapabilities: [ - {contentType: 'video/webm; codecs="vp8,vorbis"'}, - {contentType: 'video/webm; codecs="vorbis, vp8"'}, - {contentType: 'video/webm; codecs="vorbis"'} - ], - }], 'NotSupportedError', 'Video MIME type does not support audio codecs (webm) (%videocontenttype)'); - - expect_error(config.keysystem, [{ - videoCapabilities: [ - {contentType: 'video/mp4; codecs="mp4a"'}, - {contentType: 'video/mp4; codecs="mp4a.40.2"'} - ], - }], 'NotSupportedError', 'Video MIME type does not support audio codecs (mp4) (%videocontenttype)'); - - // WebM does not support AVC1/AAC. - expect_error(config.keysystem, [{ - audioCapabilities: [ - {contentType: 'audio/webm; codecs="aac"'}, - {contentType: 'audio/webm; codecs="avc1"'}, - {contentType: 'audio/webm; codecs="vp8,aac"'} - ], - }], 'NotSupportedError', 'WebM audio does not support AVC1/AAC (%audiocontenttype)'); - - expect_error(config.keysystem, [{ - videoCapabilities: [ - {contentType: 'video/webm; codecs="aac"'}, - {contentType: 'video/webm; codecs="avc1"'}, - {contentType: 'video/webm; codecs="vp8,aac"'} - ], - }], 'NotSupportedError', 'WebM video does not support AVC1/AAC (%videocontenttype)'); - - // Extra space is allowed in contentType. - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: ' ' + config.videoType}], - }], { - videoCapabilities: [{contentType: ' ' + config.videoType}], - }, 'Leading space in contentType'); - - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: config.videoType.replace( /^(.*?);(.*)/, "$1 ;$2")}], - }], { - videoCapabilities: [{contentType: config.videoType.replace( /^(.*?);(.*)/, "$1 ;$2")}], - }, 'Space before ; in contentType'); - - - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: config.videoType + ' '}], - }], { - videoCapabilities: [{contentType: config.videoType + ' '}], - }, 'Trailing space in contentType'); - - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: config.videoType.replace( /^(.*?codecs=\")(.*)/, "$1 $2")}], - }], { - videoCapabilities: [{contentType: config.videoType.replace( /^(.*?codecs=\")(.*)/, "$1 $2")}], - }, 'Space at start of codecs parameter'); - - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: config.videoType.replace( /^(.*?codecs=\".*)\"/, "$1 \"")}], - }], { - videoCapabilities: [{contentType: config.videoType.replace( /^(.*?codecs=\".*)\"/, "$1 \"")}], - }, 'Space at end of codecs parameter'); - - // contentType is not case sensitive (except the codec names). - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: 'V' + config.videoType.substr(1)}], - }], { - videoCapabilities: [{contentType: 'V' + config.videoType.substr(1)}], - }, 'Video/' ); - - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: config.videoType.replace( /^(.*?)c(odecs.*)/, "$1C$2")}], - }], { - videoCapabilities: [{contentType: config.videoType.replace( /^(.*?)c(odecs.*)/, "$1C$2")}], - }, 'Codecs='); - - var t = config.videoType.match(/(.*?)(;.*)/); - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: t[1].toUpperCase() + t[2]}], - }], { - videoCapabilities: [{contentType: t[1].toUpperCase() + t[2]}], - }, 'Upper case MIME type'); - - t = config.videoType.match(/(.*?)codecs(.*)/); - expect_config(config.keysystem, [{ - videoCapabilities: [{contentType: t[1] + 'CODECS' + t[2]}], - }], { - videoCapabilities: [{contentType: t[1] + 'CODECS' + t[2]}], - }, 'CODECS='); - - // Unrecognized attributes are not allowed. - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: 'video/webm; foo="bar"'}], - }], 'NotSupportedError', 'Unrecognized foo with webm (%videocontenttype)'); - - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: 'video/mp4; foo="bar"'}], - }], 'NotSupportedError', 'Unrecognized foo with mp4 (%videocontenttype)'); - - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: config.videoType + '; foo="bar"'}], - }], 'NotSupportedError', 'Unrecognized foo with codecs (%videocontenttype)'); - - // Invalid contentTypes. - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: 'fake'}], - }], 'NotSupportedError', 'contentType: %videocontenttype'); - - expect_error(config.keysystem, [{ - audioCapabilities: [{contentType: 'audio/fake'}], - }], 'NotSupportedError', 'contentType: %audiocontenttype'); - - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: 'video/fake'}], - }], 'NotSupportedError', 'contentType: %videocontenttype'); - - // The actual codec names are case sensitive. - t = config.videoType.match( /(.*?codecs=\")(.*?\")(.*)/ ); - if (t[2] !== t[2].toUpperCase()) { - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: t[1] + t[2].toUpperCase() + t[3] }], - }], 'NotSupportedError', 'contentType: %videocontenttype'); - } - - if (t[2] !== t[2].toLowerCase()) { - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: t[1] + t[2].toLowerCase() + t[3] }], - }], 'NotSupportedError', 'contentType: %videocontenttype'); - } - - // Extra comma is not allowed in codecs. - expect_error(config.keysystem, [{ - videoCapabilities: [{contentType: t[1] + ',' + t[2] + t[3] }], - }], 'NotSupportedError', 'contentType: %videocontenttype'); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/reset-src-after-setmediakeys.js b/testing/web-platform/tests/encrypted-media/scripts/reset-src-after-setmediakeys.js deleted file mode 100644 index acddd8dd5..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/reset-src-after-setmediakeys.js +++ /dev/null @@ -1,61 +0,0 @@ -function runTest(config) -{ - async_test(function(test) { - var mediaKeys; - var mediaSource; - var encryptedEventIndex = 0; - var video = config.video; - var keysystem = config.keysystem; - var configuration = { - initDataTypes: [config.initDataType], - audioCapabilities: [{ - contentType: config.audioType - }], - videoCapabilities: [{ - contentType: config.videoType - }], - sessionTypes: ['temporary'] - }; - - assert_not_equals(video, null); - - var onEncrypted = function(event) { - ++encryptedEventIndex; - assert_equals(video.mediaKeys, mediaKeys); - - // This event is fired once for the audio stream and once - // for the video stream each time .src is set. - if (encryptedEventIndex === 2) { - // Finished first video; Create new media source and wait for two more encrypted events - return testmediasource(config).then(function (source) { - video.src = URL.createObjectURL(source); - }).catch(function (error) { - forceTestFailureFromPromise(test, error) - }); - } else if (encryptedEventIndex === 4) { - // Finished second video. - test.done(); - } - }; - - // Create a MediaKeys object and assign it to video. - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]).then(test.step_func(function (access) { - assert_equals(access.keySystem, keysystem); - return access.createMediaKeys(); - })).then(test.step_func(function (result) { - mediaKeys = result; - assert_not_equals(mediaKeys, null); - return video.setMediaKeys(mediaKeys); - })).then(test.step_func(function () { - assert_equals(video.mediaKeys, mediaKeys); - return testmediasource(config); - })).then(function (source) { - waitForEventAndRunStep('encrypted', video, onEncrypted, test); - mediaSource = source; - video.src = URL.createObjectURL(mediaSource); - }).catch(function (error) { - forceTestFailureFromPromise(test, error); - }); - - }, 'Reset src after setMediaKeys().'); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-again-after-playback.js b/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-again-after-playback.js deleted file mode 100644 index 772bfcaa8..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-again-after-playback.js +++ /dev/null @@ -1,79 +0,0 @@ -function runTest(config, qualifier) { - var testname = testnamePrefix(qualifier, config.keysystem) - + ', setmediakeys again after playback'; - - var configuration = getSimpleConfigurationForContent(config.content); - - if (config.initDataType && config.initData) { - configuration.initDataTypes = [config.initDataType]; - } - - async_test(function(test) { - var _video = config.video, - _access, - _mediaKeys, - _mediaKeySession, - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - config.messagehandler(event.messageType, event.message).then( function(response) { - _mediaKeySession.update(response).catch(onFailure).then(function() { - _video.play(); - }); - }); - } - - function onEncrypted(event) { - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ) - .catch(onFailure); - } - - function playVideo() - { - return new Promise(function(resolve) { - _mediaKeySession = _mediaKeys.createSession('temporary'); - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - _video.src = URL.createObjectURL(_mediaSource); - resolve('success'); - }); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - _access = access; - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys = result; - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; - }).then(function( success ) { - return testmediasource(config); - }).then(function(source) { - _mediaSource = source; - return playVideo(); - }).then(function(results) { - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys = result; - return waitForEvent('playing', _video); - }).then(test.step_func(function(result) { - assert_false(_video.ended); - return _video.setMediaKeys(_mediaKeys); - })).then(function() { - // Able to change MediaKeys while playing. - // This is not required to fail. - _video.src=''; - test.done(); - }, test.step_func(function(error) { - assert_in_array(error.name, ['InvalidStateError','NotSupportedError']); - _video.src=''; - test.done(); - })).catch(onFailure); - }, testname); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-again-after-resetting-src.js b/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-again-after-resetting-src.js deleted file mode 100644 index a87060098..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-again-after-resetting-src.js +++ /dev/null @@ -1,79 +0,0 @@ -function runTest(config, qualifier) { - var testname = testnamePrefix(qualifier, config.keysystem) - + ', setmediakeys again after resetting src'; - - var configuration = getSimpleConfigurationForContent(config.content); - - if (config.initDataType && config.initData) { - configuration.initDataTypes = [config.initDataType]; - } - - async_test(function(test) { - var _video = config.video, - _access, - _mediaKeys, - _mediaKeySession, - _mediaSource; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function onMessage(event) { - config.messagehandler(event.messageType, event.message).then(function(response) { - _mediaKeySession.update(response).catch(onFailure).then(function() { - _video.play(); - }); - }); - } - - function onEncrypted(event) { - waitForEventAndRunStep('message', _mediaKeySession, onMessage, test); - _mediaKeySession.generateRequest( config.initData ? config.initDataType : event.initDataType, - config.initData || event.initData ) - .catch(onFailure); - } - - function playVideoAndWaitForTimeupdate() - { - return new Promise(function(resolve) { - testmediasource(config).then(function(source) { - _mediaKeySession = _mediaKeys.createSession('temporary'); - _video.src = URL.createObjectURL(source); - }); - _video.addEventListener('timeupdate', function listener(event) { - if (event.target.currentTime < (config.duration || 1)) - return; - _video.removeEventListener('timeupdate', listener); - resolve('success'); - }); - }); - } - - waitForEventAndRunStep('encrypted', _video, onEncrypted, test); - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - _access = access; - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys = result; - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; - }).then(function( success ) { - return playVideoAndWaitForTimeupdate(); - }).then(function(results) { - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys = result; - _video.src = ''; - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - return config.servercertificate ? _mediaKeys.setServerCertificate( config.servercertificate ) : true; - }).then(function( success ) { - return playVideoAndWaitForTimeupdate(); - }).then(function() { - _video.src = ''; - test.done(); - }).catch(onFailure); - }, testname); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-at-same-time.js b/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-at-same-time.js deleted file mode 100644 index 6d67d95b1..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-at-same-time.js +++ /dev/null @@ -1,59 +0,0 @@ -function runTest(config, qualifier) { - var testname = testnamePrefix(qualifier, config.keysystem) - + ', setmediakeys at same time'; - - var configuration = getSimpleConfigurationForContent(config.content); - - async_test(function(test) { - var _video = config.video, - _access, - _mediaKeys1, - _mediaKeys2, - _mediaKeys3, - _mediaKeys4, - _mediaKeys5; - - // Test MediaKeys assignment. - assert_equals(_video.mediaKeys, null); - assert_equals(typeof _video.setMediaKeys, 'function'); - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function setMediaKeys(mediaKeys) { - return _video.setMediaKeys(mediaKeys) - .then(function() {return 1}, function() {return 0}) - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - _access = access; - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys1 = result; - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys2 = result; - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys3 = result; - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys4 = result; - return _access.createMediaKeys(); - }).then(function(result) { - _mediaKeys5 = result; - return Promise.all([ - setMediaKeys(_mediaKeys1), - setMediaKeys(_mediaKeys2), - setMediaKeys(_mediaKeys3), - setMediaKeys(_mediaKeys4), - setMediaKeys(_mediaKeys5) - ]); - }).then(function(results) { - var sum = results.reduce((a, b) => a + b, 0); - assert_in_array(sum,[1,5]); - test.done(); - }).catch(onFailure); - }, testname); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-multiple-times-with-different-mediakeys.js b/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-multiple-times-with-different-mediakeys.js deleted file mode 100644 index 6f0bd93f2..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-multiple-times-with-different-mediakeys.js +++ /dev/null @@ -1,86 +0,0 @@ -function runTest(config, qualifier) { - var testname = testnamePrefix( qualifier, config.keysystem ) - + ', setmediakeys multiple times with different mediakeys'; - - var configuration = getSimpleConfigurationForContent( config.content ); - - async_test (function (test) { - var _video = config.video, - _access, - _mediaKeys1, - _mediaKeys2, - fail; - - // Test MediaKeys assignment. - assert_equals(_video.mediaKeys, null); - assert_equals(typeof _video.setMediaKeys, 'function'); - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - _access = access; - return _access.createMediaKeys(); - }).then(test.step_func(function(result) { - _mediaKeys1 = result; - assert_not_equals(_mediaKeys1, null); - // Create a second mediaKeys. - return _access.createMediaKeys(); - })).then(test.step_func(function(result) { - _mediaKeys2 = result; - assert_not_equals(_mediaKeys2, null); - // Set _mediaKeys1 on video. - return _video.setMediaKeys(_mediaKeys1); - })).then(test.step_func(function() { - assert_equals(_video.mediaKeys, _mediaKeys1); - // Set _mediaKeys2 on video (switching MediaKeys). - return _video.setMediaKeys(_mediaKeys2); - })).then(test.step_func(function() { - assert_equals(_video.mediaKeys, _mediaKeys2); - // Clear mediaKeys from video. - return _video.setMediaKeys(null); - })).then(test.step_func(function() { - assert_equals(_video.mediaKeys, null); - // Set _mediaKeys1 on video again. - return _video.setMediaKeys(_mediaKeys1); - })).then(test.step_func(function() { - assert_equals(_video.mediaKeys, _mediaKeys1); - return testmediasource(config); - })).then(function(source) { - // Set src attribute on Video Element - _video.src = URL.createObjectURL(source); - // Set mediaKeys2 on video element (switching MediaKeys) need not - // fail after src attribute is set. - return _video.setMediaKeys(_mediaKeys2); - })).then(test.step_func(function() { - // Switching setMediaKeys after setting src attribute on video element - // is not required to fail. - assert_equals(_video2.mediaKeys, _mediaKeys2); - fail = false; - return Promise.resolve(); - }, test.step_func(function(error) { - fail = true; - assert_equals(_video.mediaKeys, _mediaKeys1); - assert_in_array(error.name, ['InvalidStateError','NotSupportedError']); - assert_not_equals(error.message, ''); - // Return something so the promise resolves properly. - return Promise.resolve(); - })).then(function() { - // Set null mediaKeys on video (clearing MediaKeys) not - // supported after src attribute is set. - return _video.setMediaKeys(null); - }).then(test.step_func(function() { - assert_unreached('Clearing mediaKeys after setting src should have failed.'); - }), test.step_func(function(error) { - if(fail) { - assert_equals(_video.mediaKeys, _mediaKeys1); - } else { - assert_equals(_video.mediaKeys, _mediaKeys2); - } - assert_is_array(error.name, ['InvalidStateError','ReferenceError']); - assert_not_equals(error.message, ''); - test.done(); - })).catch(onFailure); - }, testname); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-multiple-times-with-the-same-mediakeys.js b/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-multiple-times-with-the-same-mediakeys.js deleted file mode 100644 index f6af8267f..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-multiple-times-with-the-same-mediakeys.js +++ /dev/null @@ -1,46 +0,0 @@ -function runTest(config, qualifier) { - var testname = testnamePrefix( qualifier, config.keysystem ) - + ', setmediakeys multiple times with the same mediakeys'; - - var configuration = getSimpleConfigurationForContent( config.content ); - - if ( config.initDataType && config.initData ) { - configuration.initDataTypes = [ config.initDataType ]; - } - - async_test (function (test) { - var _video = config.video, - _mediaKeys; - - // Test MediaKeys assignment. - assert_equals(_video.mediaKeys, null); - assert_equals(typeof _video.setMediaKeys, 'function'); - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - return access.createMediaKeys(); - }).then(function(result) { - _mediaKeys = result; - // Set mediaKeys for first time on video should work. - return _video.setMediaKeys(_mediaKeys); - }).then(function(result) { - assert_equals(_video.mediaKeys, _mediaKeys); - // Set mediaKeys on video again should return a resolved promise. - return _video.setMediaKeys(_mediaKeys); - }).then(function (result) { - assert_equals(_video.mediaKeys, _mediaKeys); - return testmediasource(config); - }).then(function(source) { - // Set src attribute on Video Element - _video.src = URL.createObjectURL(source); - // Set mediaKeys again on video should still return a resolved promise. - return _video.setMediaKeys(_mediaKeys); - }).then(function() { - assert_equals(_video.mediaKeys, _mediaKeys); - test.done(); - }).catch(onFailure); - }, testname); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-to-multiple-video-elements.js b/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-to-multiple-video-elements.js deleted file mode 100644 index d98f33f0c..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys-to-multiple-video-elements.js +++ /dev/null @@ -1,54 +0,0 @@ -function runTest(config, qualifier) { - var testname = testnamePrefix(qualifier, config.keysystem) - + ', setMediaKeys to multiple video elements'; - - var configuration = getSimpleConfigurationForContent(config.content); - - if ( config.initDataType && config.initData ) { - configuration.initDataTypes = [ config.initDataType ]; - } - - async_test (function (test) { - var _video1 = config.video1, - _video2 = config.video2, - _mediaKeys; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - assert_equals(access.keySystem, config.keysystem) - return access.createMediaKeys(); - }).then(function(result) { - _mediaKeys = result; - assert_not_equals(_mediaKeys, null); - assert_equals(typeof _mediaKeys.createSession, 'function'); - return _video1.setMediaKeys(_mediaKeys); - }).then(function(result) { - assert_not_equals(_video1.mediaKeys, null); - assert_true(_video1.mediaKeys === _mediaKeys); - // The specification allows this to fail, but it is not required to fail. - return _video2.setMediaKeys(_mediaKeys); - }).then(function(result) { - // Second setMediaKeys is not required to fail. - assert_true(_video2.mediaKeys === _mediaKeys); - return Promise.resolve(); - }, function(error) { - assert_equals(error.name, 'QuotaExceededError'); - assert_not_equals(error.message, ''); - // Return something so the promise resolves properly. - return Promise.resolve(); - }).then(function() { - // Now clear it from video1. - return _video1.setMediaKeys(null); - }).then(function() { - // Should be assignable to video2. - return _video2.setMediaKeys(_mediaKeys); - }).then(function(result) { - assert_not_equals(_video2.mediaKeys, null); - assert_true(_video2.mediaKeys === _mediaKeys); - test.done(); - }).catch(onFailure); - }, testname); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys.js b/testing/web-platform/tests/encrypted-media/scripts/setmediakeys.js deleted file mode 100644 index 34b124e31..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/setmediakeys.js +++ /dev/null @@ -1,49 +0,0 @@ -function runTest(config, qualifier) { - var testname = testnamePrefix( qualifier, config.keysystem ) - + ', setMediaKeys'; - - var configuration = getSimpleConfigurationForContent( config.content ); - - if ( config.initDataType && config.initData ) { - configuration.initDataTypes = [ config.initDataType ]; - } - - async_test (function (test) { - var _video = config.video, - _mediaKeys; - - // Test MediaKeys assignment. - assert_equals(_video.mediaKeys, null); - assert_equals(typeof _video.setMediaKeys, 'function'); - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - // Try setting mediaKeys to null. - _video.setMediaKeys(null).then(function(result) { - assert_equals(_video.mediaKeys, null); - - // setMediaKeys should fail when setting to the wrong type of object - Date. - return _video.setMediaKeys(new Date()); - }).then(function (result) { - assert_unreached('setMediaKeys should fail when setting to wrong kind of object (Date)'); - }, function(error) { - // The error should be TypeError. - assert_equals(error.name, 'setMediaKeys should return a TypeError when setting to wrong kind of object (Date)'); - return navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]); - }).then(function(access) { - assert_equals(access.keySystem, config.keysystem) - return access.createMediaKeys(); - }).then(function(result) { - _mediaKeys = result; - assert_not_equals(_mediaKeys, null); - assert_equals(typeof _mediaKeys.createSession, 'function'); - return _video.setMediaKeys(_mediaKeys); - }).then(function(result) { - assert_not_equals(_video.mediaKeys, null); - assert_equals(_video.mediaKeys, _mediaKeys); - test.done(); - }).catch(onFailure); - }, testname); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js b/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js deleted file mode 100644 index 4ec6551e8..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeys.js +++ /dev/null @@ -1,184 +0,0 @@ -function runTest(config) { - var keysystem = config.keysystem; - var testname = testnamePrefix(null, config.keysystem); - var initDataType = config.initDataType; - var configuration = { - initDataTypes: [config.initDataType], - audioCapabilities: [{contentType: config.audioType}], - videoCapabilities: [{contentType: config.videoType}], - sessionTypes: ['temporary'] - }; - - function createMediaKeysAttributeTest() { - return new Promise(function (resolve, reject) { - var access; - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_equals(typeof navigator.requestMediaKeySystemAccess, 'function'); - assert_true(isTypeSupported, "initDataType should be supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (result) { - access = result; - assert_equals(access.keySystem, keysystem); - return access.createMediaKeys(); - }).then(function (mediaKeys) { - assert_not_equals(mediaKeys, null); - assert_equals(typeof mediaKeys, 'object'); - assert_equals(typeof mediaKeys.createSession, 'function'); - assert_equals(typeof mediaKeys.setServerCertificate, 'function'); - - // Test creation of a second MediaKeys. - // The extra parameter is ignored. - return access.createMediaKeys('extra'); - }).then(function (mediaKeys) { - assert_not_equals(mediaKeys, null); - assert_equals(typeof mediaKeys, 'object'); - assert_equals(typeof mediaKeys.createSession, 'function'); - assert_equals(typeof mediaKeys.setServerCertificate, 'function'); - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - - promise_test(function() { - return createMediaKeysAttributeTest(); - }, testname + ' test MediaKeys attribute syntax'); - - var kSetServerCertificateExceptionsTestCases = [ - // Too few parameters. - { - exception: 'TypeError', - func: function (mk) { - return mk.setServerCertificate(); - } - }, - // Invalid parameters. - { - exception: 'TypeError', - func: function (mk) { - return mk.setServerCertificate(''); - } - }, - { - exception: 'TypeError', - func: function (mk) { - return mk.setServerCertificate(null); - } - }, - { - exception: 'TypeError', - func: function (mk) { - return mk.setServerCertificate(undefined); - } - }, - { - exception: 'TypeError', - func: function (mk) { - return mk.setServerCertificate(1); - } - }, - // Empty array. - { - exception: 'TypeError', - func: function (mk) { - return mk.setServerCertificate(new Uint8Array(0)); - } - } - ]; - - - function setServerCertificateTestExceptions() { - return new Promise(function(resolve, reject) { - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_equals(typeof navigator.requestMediaKeySystemAccess, 'function'); - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - var promises = kSetServerCertificateExceptionsTestCases.map(function (testCase) { - return test_exception(testCase, mediaKeys); - }); - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function () { - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - promise_test(function() { - return setServerCertificateTestExceptions(); - }, testname + ' test MediaKeys setServerCertificate() exceptions.'); - - // All calls to |func| in this group resolve. setServerCertificate with these cert may either resolve with true - // for clearkey or throw a DOMException. - var kSetServerCertificateTestCases = [ - { - // Pass in ArrayBufferView - func: function (mk) { - var cert = new Uint8Array(200); - assert_true(ArrayBuffer.isView(cert)); - - return new Promise(function (resolve, reject) { - mk.setServerCertificate(cert).then(function (value) { - resolve(value); - }).catch(function (error) { - if (Object.prototype.toString.call(error) === "[object DOMException]") { - resolve(false); - } - }); - }) - }, - expected: false - }, - { - // Pass in ArrayBuffer. - func: function (mk) { - var cert = new ArrayBuffer(200); - assert_false(ArrayBuffer.isView(cert)); - return new Promise(function (resolve) { - mk.setServerCertificate(cert).then(function (resolveValue) { - resolve(resolveValue); - }).catch(function (error) { - if (Object.prototype.toString.call(error) === "[object DOMException]") { - resolve(false); - } - }); - }) - }, - expected: false - } - ]; - function setServerCertificateTest(){ - return new Promise(function(resolve, reject){ - var expected_result; - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_equals(typeof navigator.requestMediaKeySystemAccess, 'function'); - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - var promises = kSetServerCertificateTestCases.map(function (testCase) { - return testCase.func.call(null, mediaKeys); - }); - expected_result = kSetServerCertificateTestCases.map(function (testCase) { - return testCase.expected; - }); - assert_not_equals(promises.length, 0); - return Promise.all(promises); - }).then(function (result) { - assert_array_equals(result, expected_result); - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - promise_test(function() { - return setServerCertificateTest(); - }, testname + ' test MediaKeys setServerCertificate() syntax with non-empty certificate.'); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysession.js b/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysession.js deleted file mode 100644 index 3663a7b93..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysession.js +++ /dev/null @@ -1,445 +0,0 @@ -function runTest(config) { - var keysystem = config.keysystem; - var testname = testnamePrefix(null, config.keysystem); - var initDataType = config.initDataType; - var initData = config.initData; - var configuration = { - initDataTypes: [config.initDataType], - audioCapabilities: [{contentType: config.audioType}], - videoCapabilities: [{contentType: config.videoType}], - sessionTypes: ['temporary'] - }; - - var kTypeSpecificGenerateRequestExceptionsTestCases = [ - // Tests in this set use a shortened parameter name due to - // format_value() only returning the first 60 characters as the - // result. With a longer name the first 60 characters is not - // enough to determine which test failed. Even with the - // shortened name, the error message for the last couple of - // tests is the same. - - // Too few parameters. - { - exception: 'TypeError', - func: function (mk1, type) { - return mk1.createSession().generateRequest(type); - } - }, - // Invalid parameters. - { - exception: 'TypeError', - func: function (mk2, type) { - return mk2.createSession().generateRequest(type, ''); - } - }, - { - exception: 'TypeError', - func: function (mk3, type) { - return mk3.createSession().generateRequest(type, null); - } - }, - { - exception: 'TypeError', - func: function (mk4, type) { - return mk4.createSession().generateRequest(type, undefined); - } - }, - { - exception: 'TypeError', - func: function (mk5, type) { - return mk5.createSession().generateRequest(type, 1); - } - }, - // (new Uint8Array(0)) returns empty array. So 'TypeError' should - // be returned. - { - exception: 'TypeError', - func: function (mk6, type) { - return mk6.createSession().generateRequest(type, new Uint8Array(0)); - } - } - ]; - function generateRequestTestExceptions(){ - return new Promise(function(resolve, reject){ - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - var mp4SessionPromises = kTypeSpecificGenerateRequestExceptionsTestCases.map(function (testCase) { - return test_exception(testCase, mediaKeys, initDataType, initData); - }); - assert_not_equals(mp4SessionPromises.length, 0); - return Promise.all(mp4SessionPromises); - }).then(function (result) { - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - promise_test(function() { - return generateRequestTestExceptions(); - }, testname + ' test MediaKeySession generateRequest() exceptions.'); - - var kLoadExceptionsTestCases = [ - // Too few parameters. - { - exception: 'TypeError', - func: function (mk1) { - return mk1.createSession('temporary').load(); - } - }, - { - exception: 'TypeError', - func: function (mk3) { - return mk3.createSession('temporary').load(''); - } - }, - { - exception: 'TypeError', - func: function (mk4) { - return mk4.createSession('temporary').load(1); - } - }, - { - exception: 'TypeError', - func: function (mk5) { - return mk5.createSession('temporary').load('!@#$%^&*()'); - } - }, - { - exception: 'TypeError', - func: function (mk6) { - return mk6.createSession('temporary').load('1234'); - } - } - ]; - function loadTestExceptions(){ - return new Promise(function(resolve, reject){ - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - var sessionPromises = kLoadExceptionsTestCases.map(function (testCase) { - return test_exception(testCase, mediaKeys); - }); - assert_not_equals(sessionPromises.length, 0); - return Promise.all(sessionPromises); - }).then(function () { - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - promise_test(function() { - return loadTestExceptions(); - }, testname + ' test MediaKeySession load() exceptions.'); - - // All calls to |func| in this group are supposed to succeed. - // However, the spec notes that some things are optional for - // Clear Key. In particular, support for persistent sessions - // is optional. Since some implementations won't support some - // features, a NotSupportedError is treated as a success - // if |isNotSupportedAllowed| is true. - var kCreateSessionTestCases = [ - // Use the default sessionType. - { - func: function(mk) { return mk.createSession(); }, - isNotSupportedAllowed: false - }, - // Try variations of sessionType. - { - func: function(mk) { return mk.createSession('temporary'); }, - isNotSupportedAllowed: false - }, - { - func: function(mk) { return mk.createSession(undefined); }, - isNotSupportedAllowed: false - }, - { - // Since this is optional, some Clear Key implementations - // will succeed, others will return a "NotSupportedError". - // Both are allowed results. - func: function(mk) { return mk.createSession('persistent-license'); }, - isNotSupportedAllowed: true - }, - // Try additional parameter, which should be ignored. - { - func: function(mk) { return mk.createSession('temporary', 'extra'); }, - isNotSupportedAllowed: false - } - ]; - // This function checks that calling generateRequest() works for - // various sessions. |testCase.func| creates a MediaKeySession - // object, and then generateRequest() is called on that object. It - // allows for an NotSupportedError to be generated and treated as a - // success, if allowed. See comment above kCreateSessionTestCases. - function test_generateRequest(testCase, mediaKeys, type, initData) { - var mediaKeySession; - try { - mediaKeySession = testCase.func.call(null, mediaKeys); - } catch (e) { - assert_true(testCase.isNotSupportedAllowed); - assert_equals(e.name, 'NotSupportedError'); - return Promise.resolve('not supported'); - } - return mediaKeySession.generateRequest(type, initData); - } - function generateRequestForVariousSessions(){ - return new Promise(function(resolve, reject){ - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_true(isTypeSupported, "initDataType should be supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - var mp4SessionPromises = kCreateSessionTestCases.map(function (testCase) { - return test_generateRequest(testCase, mediaKeys, initDataType, initData); - }); - assert_not_equals(mp4SessionPromises.length, 0); - return Promise.all(mp4SessionPromises); - }).then(function () { - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - promise_test(function() { - return generateRequestForVariousSessions(); - }, testname + ' test if MediaKeySession generateRequest() resolves for various sessions'); - - var kUpdateSessionExceptionsTestCases = [ - // Tests in this set use a shortened parameter name due to - // format_value() only returning the first 60 characters as the - // result. With a longer name (mediaKeySession) the first 60 - // characters is not enough to determine which test failed. - - // Too few parameters. - { - exception: 'TypeError', - func: function (s) { - return s.update(); - } - }, - // Invalid parameters. - { - exception: 'TypeError', - func: function (s) { - return s.update(''); - } - }, - { - exception: 'TypeError', - func: function (s) { - return s.update(null); - } - }, - { - exception: 'TypeError', - func: function (s) { - return s.update(undefined); - } - }, - { - exception: 'TypeError', - func: function (s) { - return s.update(1); - } - }, - // (new Uint8Array(0)) returns empty array. So 'TypeError' should - // be returned. - { - exception: 'TypeError', - func: function (s) { - return s.update(new Uint8Array(0)); - } - } - ]; - - function updateTestExceptions(){ - return new Promise(function(resolve, reject){ - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - var mp4SessionPromises = kUpdateSessionExceptionsTestCases.map(function (testCase) { - var mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.generateRequest(initDataType, initData).then(function (result) { - return test_exception(testCase, mediaKeySession); - }); - }); - assert_not_equals(mp4SessionPromises.length, 0); - return Promise.all(mp4SessionPromises); - }).then(function () { - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - promise_test(function() { - return updateTestExceptions(); - }, testname + ' test MediaKeySession update() exceptions.'); - - function create_close_exception_test(mediaKeys) { - var mediaKeySession = mediaKeys.createSession(); - return mediaKeySession.close().then(function (result) { - assert_unreached('close() should not succeed if session uninitialized'); - }).catch(function (error) { - assert_equals(error.name, 'InvalidStateError'); - // Return something so the promise resolves. - return Promise.resolve(); - }); - } - function closeTestExceptions(){ - return new Promise(function(resolve, reject){ - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - return create_close_exception_test(mediaKeys); - }).then(function () { - resolve(); - }).catch(function (error) { - reject(error); - }); - }); - } - promise_test(function() { - return closeTestExceptions(); - }, testname + ' test MediaKeySession close() exceptions.'); - - function create_remove_exception_test(mediaKeys, type, initData) { - // remove() on an uninitialized session should fail. - var mediaKeySession = mediaKeys.createSession('temporary'); - return mediaKeySession.remove().then(function (result) { - assert_unreached('remove() should not succeed if session uninitialized'); - }, function (error) { - assert_equals(error.name, 'InvalidStateError'); - }); - } - function removeTestException(){ - return new Promise(function(resolve, reject){ - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - return create_remove_exception_test(mediaKeys, initDataType, initData); - }).then(function () { - resolve(); - }).catch(function (error) { - reject(error); - }); - }); - } - promise_test(function() { - return removeTestException(); - }, testname + ' test MediaKeySession remove() exceptions.'); - - // All calls to |func| in this group are supposed to succeed. - // However, the spec notes that some things are optional for - // Clear Key. In particular, support for persistent sessions - // is optional. Since some implementations won't support some - // features, a NotSupportedError is treated as a success - // if |isNotSupportedAllowed| is true. - var kCreateSessionTestCases = [ - // Use the default sessionType. - { - func: function (mk) { - return mk.createSession(); - }, - isNotSupportedAllowed: false - }, - // Try variations of sessionType. - { - func: function (mk) { - return mk.createSession('temporary'); - }, - isNotSupportedAllowed: false - }, - { - func: function (mk) { - return mk.createSession(undefined); - }, - isNotSupportedAllowed: false - }, - { - // Since this is optional, some Clear Key implementations - // will succeed, others will return a "NotSupportedError". - // Both are allowed results. - func: function (mk) { - return mk.createSession('persistent-license'); - }, - isNotSupportedAllowed: true - }, - // Try additional parameter, which should be ignored. - { - func: function (mk) { - return mk.createSession('temporary', 'extra'); - }, - isNotSupportedAllowed: false - } - ]; - - // This function checks that calling |testCase.func| creates a - // MediaKeySession object with some default values. It also - // allows for an NotSupportedError to be generated and treated as a - // success, if allowed. See comment above kCreateSessionTestCases. - function test_createSession(testCase, mediaKeys) { - var mediaKeySession; - try { - mediaKeySession = testCase.func.call(null, mediaKeys); - } catch (e) { - assert_true(testCase.isNotSupportedAllowed); - return; - } - assert_equals(typeof mediaKeySession, 'object'); - assert_equals(typeof mediaKeySession.addEventListener, 'function'); - assert_equals(typeof mediaKeySession.sessionId, 'string'); - assert_equals(typeof mediaKeySession.expiration, 'number'); - assert_equals(typeof mediaKeySession.closed, 'object'); - assert_equals(typeof mediaKeySession.keyStatuses, 'object'); - assert_equals(typeof mediaKeySession.onkeystatuseschange, 'object'); - assert_equals(typeof mediaKeySession.onmessage, 'object'); - assert_equals(typeof mediaKeySession.generateRequest, 'function'); - assert_equals(typeof mediaKeySession.load, 'function'); - assert_equals(typeof mediaKeySession.update, 'function'); - assert_equals(typeof mediaKeySession.close, 'function'); - assert_equals(typeof mediaKeySession.remove, 'function'); - assert_equals(mediaKeySession.sessionId, ''); - } - function createSessionTest(){ - return new Promise(function(resolve, reject){ - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - kCreateSessionTestCases.map(function (testCase) { - test_createSession(testCase, mediaKeys); - }); - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - promise_test(function() { - return createSessionTest(); - }, testname + ' test MediaKeySession attribute syntax.'); - - -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysystemaccess.js b/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysystemaccess.js deleted file mode 100644 index 045494164..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/syntax-mediakeysystemaccess.js +++ /dev/null @@ -1,144 +0,0 @@ -function runTest(config) { - var keysystem = config.keysystem; - var testname = testnamePrefix(null, config.keysystem); - var initDataType = config.initDataType; - var configuration = { - initDataTypes: [config.initDataType], - audioCapabilities: [{contentType: config.audioType}], - videoCapabilities: [{contentType: config.videoType}], - sessionTypes: ['temporary'] - }; - - var kRequestMediaKeySystemAccessExceptionsTestCases = [ - // Too few parameters. - { - exception: 'TypeError', - func: function () { - return navigator.requestMediaKeySystemAccess(); - } - }, - { - exception: 'TypeError', - func: function () { - return navigator.requestMediaKeySystemAccess(keysystem); - } - }, - // Invalid key systems. Note that JavaScript converts all these - // values into strings by calling toString(), so they fail due - // to the key system not being supported, not due to the type. - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(null, [{}]); - } - }, - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(undefined, [{}]); - } - }, - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(1, [{}]); - } - }, - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(new Uint8Array(0), [{}]); - } - }, - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess('', [{}]); - } - }, - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess('unsupported', [{}]); - } - }, - // Non-ASCII names. - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(keysystem + '\u263A', [{}]); - } - }, - // Empty sequence of MediaKeySystemConfiguration. - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(keysystem, []); - } - }, - // Invalid sequences of MediaKeySystemConfigurations. - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(keysystem, {}); - } - }, - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(keysystem, "invalid"); - } - }, - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(keysystem, [{}, 6]); - } - }, - { - exception: 'NotSupportedError', - func: function () { - return navigator.requestMediaKeySystemAccess(keysystem, ["invalid", "upsupported"]); - } - } - ]; - - function requestMediaKeySystemAccessTestExceptions(){ - return new Promise(function(resolve, reject){ - var createPromises = kRequestMediaKeySystemAccessExceptionsTestCases.map(function (testCase) { - return test_exception(testCase); - }); - Promise.all(createPromises).then(function (result) { - resolve(); - }).catch(function (error) { - reject(error); - }); - }) - } - promise_test(function() { - return requestMediaKeySystemAccessTestExceptions(); - }, testname + ' test requestMediaKeySystemAccess() exceptions.'); - - function requestMediaKeySystemAccessTestAttributes(){ - return new Promise(function(resolve, reject){ - isInitDataTypeSupported(keysystem, initDataType).then(function (isTypeSupported) { - assert_equals(typeof navigator.requestMediaKeySystemAccess, 'function'); - assert_true(isTypeSupported, "initDataType not supported"); - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]); - }).then(function (access) { - assert_not_equals(access, null); - assert_equals(typeof access, 'object'); - assert_equals(access.keySystem, keysystem); - assert_equals(typeof access.getConfiguration, 'function'); - assert_equals(typeof access.createMediaKeys, 'function'); - resolve(); - }).catch(function(error){ - reject(error); - }) - }) - } - promise_test(function() { - return requestMediaKeySystemAccessTestAttributes(); - }, testname + ' test MediaKeySystemAccess attribute syntax.'); - -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/temporary-license-type.js b/testing/web-platform/tests/encrypted-media/scripts/temporary-license-type.js deleted file mode 100644 index cb0b0e67f..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/temporary-license-type.js +++ /dev/null @@ -1,61 +0,0 @@ -function runTest(config,qualifier) { - - var testname = testnamePrefix(qualifier, config.keysystem) + ', cannot load persistent license into temporary session'; - - var configuration = getSimpleConfigurationForContent(config.content); - - if (config.initDataType && config.initData) { - configuration.initDataTypes = [config.initDataType]; - } - - async_test(function(test) - { - var initDataType; - var initData; - var mediaKeySession; - - function onFailure(error) { - forceTestFailureFromPromise(test, error); - } - - function processMessage(event) - { - assert_true(event instanceof window.MediaKeyMessageEvent); - assert_equals(event.target, mediaKeySession); - assert_equals(event.type, 'message'); - assert_in_array(event.messageType, ['license-request', 'individualization-request']); - - config.messagehandler(event.messageType, event.message).then( function(response) { - mediaKeySession.update(response).then( test.step_func( function() { - if ( event.messageType !== 'license-request' ) { - return; - } - assert_unreached( "Update with incorrect license type should fail" ) - } ) ).catch( test.step_func( function( error ) { - if ( event.messageType !== 'license-request' ) { - forceTestFailureFromPromise(test, error); - return; - } - - assert_equals(error.name, 'TypeError' ); - test.done(); - } ) ); - }).catch(onFailure); - } - - navigator.requestMediaKeySystemAccess(config.keysystem, [configuration]).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - if (config.initDataType && config.initData) { - initData = config.initData; - } else { - initData = getInitData(config.content, initDataType); - } - return access.createMediaKeys(); - }).then(test.step_func(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession('temporary'); - waitForEventAndRunStep('message', mediaKeySession, test.step_func(processMessage), test); - return mediaKeySession.generateRequest(initDataType, initData); - })).catch(onFailure); - }, testname ); - -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/unique-origin.js b/testing/web-platform/tests/encrypted-media/scripts/unique-origin.js deleted file mode 100644 index 523eb84a6..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/unique-origin.js +++ /dev/null @@ -1,64 +0,0 @@ -function runTest(config) { - // When the sandbox attribute is present on an iframe, it will - // treat the content as being from a unique origin. So try to - // call createMediaKeys() inside an iframe and it should fail. - - function load_iframe(src, sandbox) { - return new Promise(function (resolve) { - var iframe = document.createElement('iframe'); - iframe.onload = function () { - resolve(iframe); - }; - iframe.sandbox = sandbox; - iframe.src = src; - document.documentElement.appendChild(iframe); - }); - } - - function wait_for_message() { - return new Promise(function (resolve) { - self.addEventListener('message', function listener(e) { - resolve(e.data); - self.removeEventListener('message', listener); - }); - }); - } - - promise_test(function (test) { - var script = 'data:text/html,' + - '<script>' + - ' window.onmessage = function(e) {' + - ' navigator.requestMediaKeySystemAccess("' + config.keysystem + '", [{' + - ' initDataTypes: [\"' + config.initDataType + '\"],' + - ' audioCapabilities: [' + - ' { contentType:\'' + config.audioType + '\'},' + - ' ]' + - ' }]).then(function(access) {' + - ' return access.createMediaKeys();' + - ' }).then(function(mediaKeys) {' + - ' window.parent.postMessage({result: \'allowed\'}, \'*\');' + - ' }, function(error) {' + - ' window.parent.postMessage({result: \'failed\'}, \'*\');' + - ' });' + - ' };' + - '<\/script>'; - - // Verify that this page can create a MediaKeys first. - navigator.requestMediaKeySystemAccess(config.keysystem, [{ - initDataTypes: [config.initDataType], - audioCapabilities: [ - {contentType: config.audioType}, - ] - }]).then(function (access) { - return access.createMediaKeys(); - }).then(function (mediaKeys) { - // Success, so now create the iframe and try there. - return load_iframe(script, 'allow-scripts') - }).then(function (iframe) { - iframe.contentWindow.postMessage({}, '*'); - return wait_for_message(); - }).then(function (message) { - assert_equals(message.result, 'failed'); - }); - }, 'Unique origin is unable to create MediaKeys'); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/update-disallowed-input.js b/testing/web-platform/tests/encrypted-media/scripts/update-disallowed-input.js deleted file mode 100644 index b5adaf7f1..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/update-disallowed-input.js +++ /dev/null @@ -1,45 +0,0 @@ -function runTest(config) -{ - // This test passes |response| to update() as a JSON Web Key Set. - // CDMs other than Clear Key won't expect |response| in this format. - promise_test(function(test) { - var initDataType; - var initData; - var keySystem = config.keysystem; - var mediaKeySession; - - function createReallyLongJWKSet() - { - // This is just a standard JWKSet with a lot of - // extra items added to the end. Key ID and key - // doesn't really matter. - var jwkSet = '{"keys":[{' - + '"kty":"oct",' - + '"k":"MDEyMzQ1Njc4OTAxMjM0NQ",' - + '"kid":"MDEyMzQ1Njc4OTAxMjM0NQ"' - + '}]'; - return jwkSet + ',"test":"unknown"'.repeat(4000) + '}'; - } - - return navigator.requestMediaKeySystemAccess(keySystem, getSimpleConfiguration()).then(function(access) { - initDataType = access.getConfiguration().initDataTypes[0]; - initData = getInitData(initDataType); - return access.createMediaKeys(); - }).then(function(mediaKeys) { - mediaKeySession = mediaKeys.createSession(); - var eventWatcher = new EventWatcher(test, mediaKeySession, ['message']); - var promise = eventWatcher.wait_for('message'); - mediaKeySession.generateRequest(initDataType, initData); - return promise; - }).then(function () { - var jwkSet = createReallyLongJWKSet(); - assert_greater_than(jwkSet.length, 65536); - var jwkSetArray = stringToUint8Array(jwkSet); - return mediaKeySession.update(jwkSetArray); - }).then(function () { - assert_unreached('update() with a response longer than 64Kb succeed'); - }).catch(function (error) { - assert_equals(error.name, 'TypeError'); - }); - }, 'update() with invalid response (longer than 64Kb characters) should fail.'); -} diff --git a/testing/web-platform/tests/encrypted-media/scripts/waiting-for-a-key.js b/testing/web-platform/tests/encrypted-media/scripts/waiting-for-a-key.js deleted file mode 100644 index fee70e24a..000000000 --- a/testing/web-platform/tests/encrypted-media/scripts/waiting-for-a-key.js +++ /dev/null @@ -1,166 +0,0 @@ -function runTest(config) -{ - // For debugging timeouts, keep track of the number of the - // various events received. - var debugEncryptedEventFired = false; - var debugWaitingForKeyEventFired = false; - var debugTimeUpdateEventCount = 0; - var debugMessage = ''; - - // Set global option explicit_timeout to true and control - // the timeout in the promise test below. - setup({ - explicit_timeout: true - }); - - promise_test(function (test) { - var video = config.video; - var keysystem = config.keysystem; - var configuration = { - initDataTypes: [config.initDataType], - audioCapabilities: [{ - contentType: config.audioType - }], - videoCapabilities: [{ - contentType: config.videoType - }], - sessionTypes: ['temporary'] - }; - var initData; - var initDataType; - var mediaKeySession; - // As this code doesn't wait for the 'message' event for clearkey to avoid - // race conditions with 'waitingforkey', specify the key ID and - // key used by the encrypted content. - var keyId = new Uint8Array(config.content.keys[0].kid); - var rawKey = new Uint8Array(config.content.keys[0].key); - // Use the message handler for non clearkey drm - var handler = config.messageHandler || null; - - // Override timeout() to use custom message instead of default - // message "Test timed out" - test.timeout = function () { - var message = 'timeout. message = ' + debugMessage - + ', encrypted: ' + debugEncryptedEventFired - + ', waitingforkey: ' + debugWaitingForKeyEventFired - + ', timeupdate count: ' + debugTimeUpdateEventCount; - - this.timeout_id = null; - this.set_status(this.TIMEOUT, message); - this.phase = this.phases.HAS_RESULT; - this.done(); - }; - - return navigator.requestMediaKeySystemAccess(keysystem, [configuration]).then(function (access) { - debugMessage = 'createMediaKeys()'; - return access.createMediaKeys(); - }).then(function (mediaKeys) { - debugMessage = 'setMediaKeys()'; - return video.setMediaKeys(mediaKeys); - }).then(function () { - return testmediasource(config); - }).then(function (source) { - debugMessage = 'wait_for_encrypted_event()'; - mediaSource = source; - video.src = URL.createObjectURL(mediaSource); - video.play(); - return wait_for_encrypted_event(video); - }).then(function (e) { - // Received the 'encrypted' event(s), so keep a copy of - // the initdata for use when creating the session later. - initDataType = config.initData ? config.initDataType : e.initDataType; - initData = config.initData || e.initData; - // Wait until the video indicates that it needs a key to - // continue. - debugMessage = 'wait_for_waitingforkey_event()'; - return wait_for_waitingforkey_event(video); - }).then(function () { - // Make sure the video is NOT paused and not progressing - // before a key is provided. This requires the video - // to NOT have a clear lead. - assert_false(video.paused); - assert_less_than(video.currentTime, 0.2); - // Create a session. - mediaKeySession = video.mediaKeys.createSession('temporary'); - debugMessage = 'generateRequest()'; - return mediaKeySession.generateRequest(initDataType, initData); - }).then(function () { - // generateRequest() will cause a 'message' event to - // occur specifying the keyId that is needed - // Add the key needed to decrypt. - return wait_for_message_event(mediaKeySession, handler); - }).then(function () { - // Video should start playing now that it can decrypt the - // streams, so wait until a little bit of the video has - // played. - debugMessage = 'wait_for_timeupdate_event()'; - return wait_for_timeupdate_event(video); - }).catch(function (error) { - assert_unreached('Error: ' + error.name); - }); - - // Typical test duration is 6 seconds on release builds - // (12 seconds on debug). - }, 'Waiting for a key.', {timeout: 20000}); - - // Wait for an 'encrypted' event - function wait_for_encrypted_event(video) - { - return new Promise(function (resolve) { - video.addEventListener('encrypted', function listener(e) { - assert_equals(e.target, video); - assert_true(e instanceof window.MediaEncryptedEvent); - assert_equals(e.type, 'encrypted'); - debugEncryptedEventFired = true; - video.removeEventListener('encrypted', listener); - resolve(e); - }); - }); - }; - - // Wait for a 'waitingforkey' event. Promise resolved when the - // event is received. - function wait_for_waitingforkey_event(video) - { - return new Promise(function (resolve) { - video.addEventListener('waitingforkey', function listener(e) { - assert_equals(e.target, video); - assert_equals(e.type, 'waitingforkey'); - debugWaitingForKeyEventFired = true; - video.removeEventListener('waitingforkey', listener); - resolve(e); - }); - }); - }; - - // Wait for a 'timeupdate' event. Promise resolved if |video| has - // played for more than 0.2 seconds. - function wait_for_timeupdate_event(video) - { - return new Promise(function (resolve) { - video.addEventListener('timeupdate', function listener(e) { - assert_equals(e.target, video); - ++debugTimeUpdateEventCount; - if (video.currentTime < 0.2) - return; - video.removeEventListener('timeupdate', listener); - resolve(e); - }); - }); - }; - - // We need to wait for the message even if for non clearkey DRMs. - function wait_for_message_event(mediaKeySession, handler) - { - return new Promise(function (resolve, reject) { - mediaKeySession.addEventListener('message', function listener(e) { - assert_equals(e.target, mediaKeySession); - assert_equals(e.type, 'message'); - video.removeEventListener('message', listener); - return handler(e.messageType, e.message).then(function (response) { - return e.target.update(response) - }).then(resolve, reject); - }); - }); - } -} diff --git a/testing/web-platform/tests/encrypted-media/util/clearkey-messagehandler.js b/testing/web-platform/tests/encrypted-media/util/clearkey-messagehandler.js deleted file mode 100644 index c91a57f6d..000000000 --- a/testing/web-platform/tests/encrypted-media/util/clearkey-messagehandler.js +++ /dev/null @@ -1,64 +0,0 @@ -// Expect utf8decoder and utf8decoder to be TextEncoder('utf-8') and TextDecoder('utf-8') respectively - -function MessageHandler( keysystem, content ) { - this._keysystem = keysystem; - this._content = content; - this.messagehandler = MessageHandler.prototype.messagehandler.bind( this ); - this.servercertificate = undefined; -} - -MessageHandler.prototype.messagehandler = function messagehandler( messageType, message ) -{ - if ( messageType === 'license-request' ) - { - var request = fromUtf8( message ); - - var keys = request.kids.map( function( kid ) { - - var key; - for( var i=0; i < this._content.keys.length; ++i ) - { - if ( base64urlEncode( this._content.keys[ i ].kid ) === kid ) - { - key = base64urlEncode( this._content.keys[ i ].key ); - break; - } - } - - return { kty: 'oct', kid: kid, k: key }; - - }.bind( this ) ); - - return Promise.resolve( toUtf8( { keys: keys } ) ); - } - else if ( messageType === 'license-release' ) - { - var release = fromUtf8( message ); - - // TODO: Check the license release message here - - return Promise.resolve( toUtf8( { kids: release.kids } ) ); - } - - throw new TypeError( 'Unsupported message type for ClearKey' ); -}; - -MessageHandler.prototype.createJWKSet = function createJWKSet(keyId, key) { - var jwkSet = '{"keys":['; - for (var i = 0; i < arguments.length; i++) { - if (i != 0) - jwkSet += ','; - jwkSet += arguments[i]; - } - jwkSet += ']}'; - return jwkSet; -}; - -MessageHandler.prototype.createJWK = function createJWK(keyId, key) { - var jwk = '{"kty":"oct","alg":"A128KW","kid":"'; - jwk += base64urlEncode(keyId); - jwk += '","k":"'; - jwk += base64urlEncode(key); - jwk += '"}'; - return jwk; -};
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/util/drm-messagehandler.js b/testing/web-platform/tests/encrypted-media/util/drm-messagehandler.js deleted file mode 100644 index 256c069e5..000000000 --- a/testing/web-platform/tests/encrypted-media/util/drm-messagehandler.js +++ /dev/null @@ -1,262 +0,0 @@ -(function(){ -// Expect utf8decoder and utf8decoder to be TextEncoder('utf-8') and TextDecoder('utf-8') respectively -// -// drmconfig format: -// { <keysystem> : { "serverURL" : <the url for the server>, -// "httpRequestHeaders" : <map of HTTP request headers>, -// "servertype" : "microsoft" | "drmtoday", // affects how request parameters are formed -// "certificate" : <base64 encoded server certificate> } } -// - -drmtodaysecret = Uint8Array.from( [144, 34, 109, 76, 134, 7, 97, 107, 98, 251, 140, 28, 98, 79, 153, 222, 231, 245, 154, 226, 193, 1, 213, 207, 152, 204, 144, 15, 13, 2, 37, 236] ); - -drmconfig = { - "com.widevine.alpha": [ { - "serverURL": "https://lic.staging.drmtoday.com/license-proxy-widevine/cenc/", - "servertype" : "drmtoday", - "merchant" : "w3c-eme-test", - "secret" : drmtodaysecret - } ], - "com.microsoft.playready": [ { - "serverURL": "http://playready-testserver.azurewebsites.net/rightsmanager.asmx", - "servertype": "microsoft", - "sessionTypes" : [ "persistent-usage-record" ], - "certificate" : "Q0hBSQAAAAEAAAUEAAAAAAAAAAJDRVJUAAAAAQAAAfQAAAFkAAEAAQAAAFjt9G6KdSncCkrjbTQPN+/2AAAAAAAAAAAAAAAJIPbrW9dj0qydQFIomYFHOwbhGZVGP2ZsPwcvjh+NFkP/////AAAAAAAAAAAAAAAAAAAAAAABAAoAAABYxw6TjIuUUmvdCcl00t4RBAAAADpodHRwOi8vcGxheXJlYWR5LmRpcmVjdHRhcHMubmV0L3ByL3N2Yy9yaWdodHNtYW5hZ2VyLmFzbXgAAAAAAQAFAAAADAAAAAAAAQAGAAAAXAAAAAEAAQIAAAAAADBRmRRpqV4cfRLcWz9WoXIGZ5qzD9xxJe0CSI2mXJQdPHEFZltrTkZtdmurwVaEI2etJY0OesCeOCzCqmEtTkcAAAABAAAAAgAAAAcAAAA8AAAAAAAAAAVEVEFQAAAAAAAAABVNZXRlcmluZyBDZXJ0aWZpY2F0ZQAAAAAAAAABAAAAAAABAAgAAACQAAEAQGHic/IPbmLCKXxc/MH20X/RtjhXH4jfowBWsQE1QWgUUBPFId7HH65YuQJ5fxbQJCT6Hw0iHqKzaTkefrhIpOoAAAIAW+uRUsdaChtq/AMUI4qPlK2Bi4bwOyjJcSQWz16LAFfwibn5yHVDEgNA4cQ9lt3kS4drx7pCC+FR/YLlHBAV7ENFUlQAAAABAAAC/AAAAmwAAQABAAAAWMk5Z0ovo2X0b2C9K5PbFX8AAAAAAAAAAAAAAARTYd1EkpFovPAZUjOj2doDLnHiRSfYc89Fs7gosBfar/////8AAAAAAAAAAAAAAAAAAAAAAAEABQAAAAwAAAAAAAEABgAAAGAAAAABAAECAAAAAABb65FSx1oKG2r8AxQjio+UrYGLhvA7KMlxJBbPXosAV/CJufnIdUMSA0DhxD2W3eRLh2vHukIL4VH9guUcEBXsAAAAAgAAAAEAAAAMAAAABwAAAZgAAAAAAAAAgE1pY3Jvc29mdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFBsYXlSZWFkeSBTTDAgTWV0ZXJpbmcgUm9vdCBDQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDEuMC4wLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACAAAAJAAAQBArAKJsEIDWNG5ulOgLvSUb8I2zZ0c5lZGYvpIO56Z0UNk/uC4Mq3jwXQUUN6m/48V5J/vuLDhWu740aRQc1dDDAAAAgCGTWHP8iVuQixWizwoABz7PhUnZYWEugUht5sYKNk23h2Cao/D5uf6epDVyilG8fZKLvufXc/+fkNOtEKT+sWr" - }, - { - "serverURL": "http://playready.directtaps.net/pr/svc/rightsmanager.asmx", - "servertype": "microsoft", - "sessionTypes" : [ "persistent-usage-record" ], - "certificate" : "Q0hBSQAAAAEAAAUEAAAAAAAAAAJDRVJUAAAAAQAAAfQAAAFkAAEAAQAAAFjt9G6KdSncCkrjbTQPN+/2AAAAAAAAAAAAAAAJIPbrW9dj0qydQFIomYFHOwbhGZVGP2ZsPwcvjh+NFkP/////AAAAAAAAAAAAAAAAAAAAAAABAAoAAABYxw6TjIuUUmvdCcl00t4RBAAAADpodHRwOi8vcGxheXJlYWR5LmRpcmVjdHRhcHMubmV0L3ByL3N2Yy9yaWdodHNtYW5hZ2VyLmFzbXgAAAAAAQAFAAAADAAAAAAAAQAGAAAAXAAAAAEAAQIAAAAAADBRmRRpqV4cfRLcWz9WoXIGZ5qzD9xxJe0CSI2mXJQdPHEFZltrTkZtdmurwVaEI2etJY0OesCeOCzCqmEtTkcAAAABAAAAAgAAAAcAAAA8AAAAAAAAAAVEVEFQAAAAAAAAABVNZXRlcmluZyBDZXJ0aWZpY2F0ZQAAAAAAAAABAAAAAAABAAgAAACQAAEAQGHic/IPbmLCKXxc/MH20X/RtjhXH4jfowBWsQE1QWgUUBPFId7HH65YuQJ5fxbQJCT6Hw0iHqKzaTkefrhIpOoAAAIAW+uRUsdaChtq/AMUI4qPlK2Bi4bwOyjJcSQWz16LAFfwibn5yHVDEgNA4cQ9lt3kS4drx7pCC+FR/YLlHBAV7ENFUlQAAAABAAAC/AAAAmwAAQABAAAAWMk5Z0ovo2X0b2C9K5PbFX8AAAAAAAAAAAAAAARTYd1EkpFovPAZUjOj2doDLnHiRSfYc89Fs7gosBfar/////8AAAAAAAAAAAAAAAAAAAAAAAEABQAAAAwAAAAAAAEABgAAAGAAAAABAAECAAAAAABb65FSx1oKG2r8AxQjio+UrYGLhvA7KMlxJBbPXosAV/CJufnIdUMSA0DhxD2W3eRLh2vHukIL4VH9guUcEBXsAAAAAgAAAAEAAAAMAAAABwAAAZgAAAAAAAAAgE1pY3Jvc29mdAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgFBsYXlSZWFkeSBTTDAgTWV0ZXJpbmcgUm9vdCBDQQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgDEuMC4wLjEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEACAAAAJAAAQBArAKJsEIDWNG5ulOgLvSUb8I2zZ0c5lZGYvpIO56Z0UNk/uC4Mq3jwXQUUN6m/48V5J/vuLDhWu740aRQc1dDDAAAAgCGTWHP8iVuQixWizwoABz7PhUnZYWEugUht5sYKNk23h2Cao/D5uf6epDVyilG8fZKLvufXc/+fkNOtEKT+sWr" - }, - { - "serverURL": "https://lic.staging.drmtoday.com/license-proxy-headerauth/drmtoday/RightsManager.asmx", - "servertype" : "drmtoday", - "sessionTypes" : [ "temporary", "persistent-usage-record", "persistent-license" ], - "merchant" : "w3c-eme-test", - "secret" : drmtodaysecret - } ] -}; - - -var keySystemWrappers = { - // Key System wrappers map messages and pass to a handler, then map the response and return to caller - // - // function wrapper(handler, messageType, message, params) - // - // where: - // Promise<response> handler(messageType, message, responseType, headers, params); - // - - 'com.widevine.alpha': function(handler, messageType, message, params) { - return handler.call(this, messageType, new Uint8Array(message), 'json', null, params).then(function(response){ - return base64DecodeToUnit8Array(response.license); - }); - }, - - 'com.microsoft.playready': function(handler, messageType, message, params) { - var msg, xmlDoc; - var licenseRequest = null; - var headers = {}; - var parser = new DOMParser(); - var dataview = new Uint16Array(message); - - msg = String.fromCharCode.apply(null, dataview); - xmlDoc = parser.parseFromString(msg, 'application/xml'); - - if (xmlDoc.getElementsByTagName('Challenge')[0]) { - var challenge = xmlDoc.getElementsByTagName('Challenge')[0].childNodes[0].nodeValue; - if (challenge) { - licenseRequest = atob(challenge); - } - } - - var headerNameList = xmlDoc.getElementsByTagName('name'); - var headerValueList = xmlDoc.getElementsByTagName('value'); - for (var i = 0; i < headerNameList.length; i++) { - headers[headerNameList[i].childNodes[0].nodeValue] = headerValueList[i].childNodes[0].nodeValue; - } - // some versions of the PlayReady CDM return 'Content' instead of 'Content-Type', - // but the license server expects 'Content-Type', so we fix it up here. - if (headers.hasOwnProperty('Content')) { - headers['Content-Type'] = headers.Content; - delete headers.Content; - } - - return handler.call(this, messageType, licenseRequest, 'arraybuffer', headers, params).catch(function(response){ - return response.text().then( function( error ) { throw error; } ); - }); - } -}; - -const requestConstructors = { - // Server request construction functions - // - // Promise<request> constructRequest(config, sessionType, content, messageType, message, params) - // - // request = { url: ..., headers: ..., body: ... } - // - // content = { assetId: ..., variantId: ..., key: ... } - // params = { expiration: ... } - - 'drmtoday': function(config, sessionType, content, messageType, message, headers, params) { - var optData = JSON.stringify({merchant: config.merchant, userId:"12345", sessionId:""}); - var crt = {}; - if (messageType === 'license-request') { - crt = {assetId: content.assetId, - outputProtection: {digital : false, analogue: false, enforce: false}, - storeLicense: (sessionType === 'persistent-license')}; - - if (!params || params.expiration === undefined) { - crt.profile = {purchase: {}}; - } else { - crt.profile = {rental: {absoluteExpiration: (new Date(params.expiration)).toISOString(), - playDuration: 3600000 } }; - } - - if (content.variantId !== undefined) { - crt.variantId = content.variantId; - } - } - - return JWT.encode("HS256", {optData: optData, crt: JSON.stringify([crt])}, config.secret).then(function(jwt){ - headers = headers || {}; - headers['x-dt-auth-token'] = jwt; - return {url: config.serverURL, headers: headers, body: message}; - }); - }, - - 'microsoft': function(config, sessionType, content, messageType, message, headers, params) { - var url = config.serverURL; - if (messageType === 'license-request') { - url += "?"; - if (sessionType === 'temporary' || sessionType === 'persistent-usage-record') { - url += "UseSimpleNonPersistentLicense=1&"; - } - if (sessionType === 'persistent-usage-record') { - url += "SecureStop=1&"; - } - url += "PlayEnablers=B621D91F-EDCC-4035-8D4B-DC71760D43E9&"; // disable output protection - url += "ContentKey=" + btoa(String.fromCharCode.apply(null, content.key)); - return url; - } - - // TODO: Include expiration time in URL - return Promise.resolve({url: url, headers: headers, body: message}); - } -}; - -MessageHandler = function(keysystem, content, sessionType) { - sessionType = sessionType || "temporary"; - - this._keysystem = keysystem; - this._content = content; - this._sessionType = sessionType; - try { - this._drmconfig = drmconfig[this._keysystem].filter(function(drmconfig) { - return drmconfig.sessionTypes === undefined || (drmconfig.sessionTypes.indexOf(sessionType) !== -1); - })[0]; - this._requestConstructor = requestConstructors[this._drmconfig.servertype]; - - this.messagehandler = keySystemWrappers[keysystem].bind(this, MessageHandler.prototype.messagehandler); - - if (this._drmconfig && this._drmconfig.certificate) { - this.servercertificate = stringToUint8Array(atob(this._drmconfig.certificate)); - } - } catch(e) { - return null; - } -} - -MessageHandler.prototype.messagehandler = function messagehandler(messageType, message, responseType, headers, params) { - - var variantId = params ? params.variantId : undefined; - var key; - if( variantId ) { - var keys = this._content.keys.filter(function(k){return k.variantId === variantId;}); - if (keys[0]) key = keys[0].key; - } - if (!key) { - key = this._content.keys[0].key; - } - - var content = {assetId: this._content.assetId, - variantId: variantId, - key: key}; - - return this._requestConstructor(this._drmconfig, this._sessionType, content, messageType, message, headers, params).then(function(request){ - return fetch(request.url, { - method: 'POST', - headers: request.headers, - body: request.body }); - }).then(function(fetchresponse){ - if(fetchresponse.status !== 200) { - throw fetchresponse; - } - - if(responseType === 'json') { - return fetchresponse.json(); - } else if(responseType === 'arraybuffer') { - return fetchresponse.arrayBuffer(); - } - }); -} - -})(); - -(function() { - - var subtlecrypto = window.crypto.subtle; - - // Encoding / decoding utilities - function b64pad(b64) { return b64+"==".substr(0,(b64.length%4)?(4-b64.length%4):0); } - function str2b64url(str) { return btoa(str).replace(/=+$/g, '').replace(/\+/g, "-").replace(/\//g, "_"); } - function b64url2str(b64) { return atob(b64pad(b64.replace(/\-/g, "+").replace(/\_/g, "/"))); } - function str2ab(str) { return Uint8Array.from( str.split(''), function(s){return s.charCodeAt(0)} ); } - function ab2str(ab) { return String.fromCharCode.apply(null, new Uint8Array(ab)); } - - function jwt2webcrypto(alg) { - if (alg === "HS256") return {name: "HMAC", hash: "SHA-256", length: 256}; - else if (alg === "HS384") return { name: "HMAC", hash: "SHA-384", length: 384}; - else if (alg === "HS512") return { name: "HMAC", hash: "SHA-512", length: 512}; - else throw new Error("Unrecognized JWT algorithm: " + alg); - } - - JWT = { - encode: function encode(alg, claims, secret) { - var algorithm = jwt2webcrypto(alg); - if (secret.byteLength !== algorithm.length / 8) throw new Error("Unexpected secret length: " + secret.byteLength); - - if (!claims.iat) claims.iat = (Date.now() / 1000) | 0; - if (!claims.jti) { - var nonce = new Uint8Array(16); - window.crypto.getRandomValues(nonce); - claims.jti = str2b64url( ab2str(nonce) ); - } - - var header = {typ: "JWT", alg: alg}; - var plaintext = str2b64url(JSON.stringify(header)) + '.' + str2b64url(JSON.stringify(claims)); - return subtlecrypto.importKey("raw", secret, algorithm, false, [ "sign" ]).then( function(key) { - return subtlecrypto.sign(algorithm, key, str2ab(plaintext)); - }).then(function(hmac){ - return plaintext + '.' + str2b64url(ab2str(hmac)); - }); - }, - - decode: function decode(jwt, secret) { - var jwtparts = jwt.split('.'); - var header = JSON.parse( b64url2str(jwtparts[0])); - var claims = JSON.parse( b64url2str(jwtparts[1])); - var hmac = str2ab(b64url2str(jwtparts[2])); - var algorithm = jwt2webcrypto(header.alg); - if (secret.byteLength !== algorithm.length / 8) throw new Error("Unexpected secret length: " + secret.byteLength); - - return subtlecrypto.importKey("raw", secret, algorithm, false, ["sign", "verify"]).then(function(key) { - return subtlecrypto.verify(algorithm, key, hmac, str2ab(jwtparts[0] + '.' + jwtparts[1])); - }).then(function(success){ - if (!success) throw new Error("Invalid signature"); - return claims; - }); - } - }; -})(); diff --git a/testing/web-platform/tests/encrypted-media/util/fetch.js b/testing/web-platform/tests/encrypted-media/util/fetch.js deleted file mode 100644 index d14d00bdb..000000000 --- a/testing/web-platform/tests/encrypted-media/util/fetch.js +++ /dev/null @@ -1,456 +0,0 @@ -// https://github.com/github/fetch -// -// Copyright (c) 2014-2016 GitHub, Inc. -// -// Permission is hereby granted, free of charge, to any person obtaining -// a copy of this software and associated documentation files (the -// "Software"), to deal in the Software without restriction, including -// without limitation the rights to use, copy, modify, merge, publish, -// distribute, sublicense, and/or sell copies of the Software, and to -// permit persons to whom the Software is furnished to do so, subject to -// the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -(function(self) { - 'use strict'; - - if (self.fetch) { - return - } - - var support = { - searchParams: 'URLSearchParams' in self, - iterable: 'Symbol' in self && 'iterator' in Symbol, - blob: 'FileReader' in self && 'Blob' in self && (function() { - try { - new Blob() - return true - } catch(e) { - return false - } - })(), - formData: 'FormData' in self, - arrayBuffer: 'ArrayBuffer' in self - } - - function normalizeName(name) { - if (typeof name !== 'string') { - name = String(name) - } - if (/[^a-z0-9\-#$%&'*+.\^_`|~]/i.test(name)) { - throw new TypeError('Invalid character in header field name') - } - return name.toLowerCase() - } - - function normalizeValue(value) { - if (typeof value !== 'string') { - value = String(value) - } - return value - } - - // Build a destructive iterator for the value list - function iteratorFor(items) { - var iterator = { - next: function() { - var value = items.shift() - return {done: value === undefined, value: value} - } - } - - if (support.iterable) { - iterator[Symbol.iterator] = function() { - return iterator - } - } - - return iterator - } - - function Headers(headers) { - this.map = {} - - if (headers instanceof Headers) { - headers.forEach(function(value, name) { - this.append(name, value) - }, this) - - } else if (headers) { - Object.getOwnPropertyNames(headers).forEach(function(name) { - this.append(name, headers[name]) - }, this) - } - } - - Headers.prototype.append = function(name, value) { - name = normalizeName(name) - value = normalizeValue(value) - var list = this.map[name] - if (!list) { - list = [] - this.map[name] = list - } - list.push(value) - } - - Headers.prototype['delete'] = function(name) { - delete this.map[normalizeName(name)] - } - - Headers.prototype.get = function(name) { - var values = this.map[normalizeName(name)] - return values ? values[0] : null - } - - Headers.prototype.getAll = function(name) { - return this.map[normalizeName(name)] || [] - } - - Headers.prototype.has = function(name) { - return this.map.hasOwnProperty(normalizeName(name)) - } - - Headers.prototype.set = function(name, value) { - this.map[normalizeName(name)] = [normalizeValue(value)] - } - - Headers.prototype.forEach = function(callback, thisArg) { - Object.getOwnPropertyNames(this.map).forEach(function(name) { - this.map[name].forEach(function(value) { - callback.call(thisArg, value, name, this) - }, this) - }, this) - } - - Headers.prototype.keys = function() { - var items = [] - this.forEach(function(value, name) { items.push(name) }) - return iteratorFor(items) - } - - Headers.prototype.values = function() { - var items = [] - this.forEach(function(value) { items.push(value) }) - return iteratorFor(items) - } - - Headers.prototype.entries = function() { - var items = [] - this.forEach(function(value, name) { items.push([name, value]) }) - return iteratorFor(items) - } - - if (support.iterable) { - Headers.prototype[Symbol.iterator] = Headers.prototype.entries - } - - function consumed(body) { - if (body.bodyUsed) { - return Promise.reject(new TypeError('Already read')) - } - body.bodyUsed = true - } - - function fileReaderReady(reader) { - return new Promise(function(resolve, reject) { - reader.onload = function() { - resolve(reader.result) - } - reader.onerror = function() { - reject(reader.error) - } - }) - } - - function readBlobAsArrayBuffer(blob) { - var reader = new FileReader() - reader.readAsArrayBuffer(blob) - return fileReaderReady(reader) - } - - function readBlobAsText(blob) { - var reader = new FileReader() - reader.readAsText(blob) - return fileReaderReady(reader) - } - - function Body() { - this.bodyUsed = false - - this._initBody = function(body) { - this._bodyInit = body - if (typeof body === 'string') { - this._bodyText = body - } else if (support.blob && Blob.prototype.isPrototypeOf(body)) { - this._bodyBlob = body - } else if (support.formData && FormData.prototype.isPrototypeOf(body)) { - this._bodyFormData = body - } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { - this._bodyText = body.toString() - } else if (!body) { - this._bodyText = '' - } else if (support.arrayBuffer && ArrayBuffer.prototype.isPrototypeOf(body)) { - // Only support ArrayBuffers for POST method. - // Receiving ArrayBuffers happens via Blobs, instead. - } else { - throw new Error('unsupported BodyInit type') - } - - if (!this.headers.get('content-type')) { - if (typeof body === 'string') { - this.headers.set('content-type', 'text/plain;charset=UTF-8') - } else if (this._bodyBlob && this._bodyBlob.type) { - this.headers.set('content-type', this._bodyBlob.type) - } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) { - this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8') - } - } - } - - if (support.blob) { - this.blob = function() { - var rejected = consumed(this) - if (rejected) { - return rejected - } - - if (this._bodyBlob) { - return Promise.resolve(this._bodyBlob) - } else if (this._bodyFormData) { - throw new Error('could not read FormData body as blob') - } else { - return Promise.resolve(new Blob([this._bodyText])) - } - } - - this.arrayBuffer = function() { - return this.blob().then(readBlobAsArrayBuffer) - } - - this.text = function() { - var rejected = consumed(this) - if (rejected) { - return rejected - } - - if (this._bodyBlob) { - return readBlobAsText(this._bodyBlob) - } else if (this._bodyFormData) { - throw new Error('could not read FormData body as text') - } else { - return Promise.resolve(this._bodyText) - } - } - } else { - this.text = function() { - var rejected = consumed(this) - return rejected ? rejected : Promise.resolve(this._bodyText) - } - } - - if (support.formData) { - this.formData = function() { - return this.text().then(decode) - } - } - - this.json = function() { - return this.text().then(JSON.parse) - } - - return this - } - - // HTTP methods whose capitalization should be normalized - var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'] - - function normalizeMethod(method) { - var upcased = method.toUpperCase() - return (methods.indexOf(upcased) > -1) ? upcased : method - } - - function Request(input, options) { - options = options || {} - var body = options.body - if (Request.prototype.isPrototypeOf(input)) { - if (input.bodyUsed) { - throw new TypeError('Already read') - } - this.url = input.url - this.credentials = input.credentials - if (!options.headers) { - this.headers = new Headers(input.headers) - } - this.method = input.method - this.mode = input.mode - if (!body) { - body = input._bodyInit - input.bodyUsed = true - } - } else { - this.url = input - } - - this.credentials = options.credentials || this.credentials || 'omit' - if (options.headers || !this.headers) { - this.headers = new Headers(options.headers) - } - this.method = normalizeMethod(options.method || this.method || 'GET') - this.mode = options.mode || this.mode || null - this.referrer = null - - if ((this.method === 'GET' || this.method === 'HEAD') && body) { - throw new TypeError('Body not allowed for GET or HEAD requests') - } - this._initBody(body) - } - - Request.prototype.clone = function() { - return new Request(this) - } - - function decode(body) { - var form = new FormData() - body.trim().split('&').forEach(function(bytes) { - if (bytes) { - var split = bytes.split('=') - var name = split.shift().replace(/\+/g, ' ') - var value = split.join('=').replace(/\+/g, ' ') - form.append(decodeURIComponent(name), decodeURIComponent(value)) - } - }) - return form - } - - function headers(xhr) { - var head = new Headers() - var pairs = (xhr.getAllResponseHeaders() || '').trim().split('\n') - pairs.forEach(function(header) { - var split = header.trim().split(':') - var key = split.shift().trim() - var value = split.join(':').trim() - head.append(key, value) - }) - return head - } - - Body.call(Request.prototype) - - function Response(bodyInit, options) { - if (!options) { - options = {} - } - - this.type = 'default' - this.status = options.status - this.ok = this.status >= 200 && this.status < 300 - this.statusText = options.statusText - this.headers = options.headers instanceof Headers ? options.headers : new Headers(options.headers) - this.url = options.url || '' - this._initBody(bodyInit) - } - - Body.call(Response.prototype) - - Response.prototype.clone = function() { - return new Response(this._bodyInit, { - status: this.status, - statusText: this.statusText, - headers: new Headers(this.headers), - url: this.url - }) - } - - Response.error = function() { - var response = new Response(null, {status: 0, statusText: ''}) - response.type = 'error' - return response - } - - var redirectStatuses = [301, 302, 303, 307, 308] - - Response.redirect = function(url, status) { - if (redirectStatuses.indexOf(status) === -1) { - throw new RangeError('Invalid status code') - } - - return new Response(null, {status: status, headers: {location: url}}) - } - - self.Headers = Headers - self.Request = Request - self.Response = Response - - self.fetch = function(input, init) { - return new Promise(function(resolve, reject) { - var request - if (Request.prototype.isPrototypeOf(input) && !init) { - request = input - } else { - request = new Request(input, init) - } - - var xhr = new XMLHttpRequest() - - function responseURL() { - if ('responseURL' in xhr) { - return xhr.responseURL - } - - // Avoid security warnings on getResponseHeader when not allowed by CORS - if (/^X-Request-URL:/m.test(xhr.getAllResponseHeaders())) { - return xhr.getResponseHeader('X-Request-URL') - } - - return - } - - xhr.onload = function() { - var options = { - status: xhr.status, - statusText: xhr.statusText, - headers: headers(xhr), - url: responseURL() - } - var body = 'response' in xhr ? xhr.response : xhr.responseText - resolve(new Response(body, options)) - } - - xhr.onerror = function() { - reject(new TypeError('Network request failed')) - } - - xhr.ontimeout = function() { - reject(new TypeError('Network request failed')) - } - - xhr.open(request.method, request.url, true) - - if (request.credentials === 'include') { - xhr.withCredentials = true - } - - if ('responseType' in xhr && support.blob) { - xhr.responseType = 'blob' - } - - request.headers.forEach(function(value, name) { - xhr.setRequestHeader(name, value) - }) - - xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit) - }) - } - self.fetch.polyfill = true -})(typeof self !== 'undefined' ? self : this);
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/util/testmediasource.js b/testing/web-platform/tests/encrypted-media/util/testmediasource.js deleted file mode 100644 index 62c2d577d..000000000 --- a/testing/web-platform/tests/encrypted-media/util/testmediasource.js +++ /dev/null @@ -1,43 +0,0 @@ -function testmediasource(config) { - - return new Promise(function(resolve, reject) { - // Fetch the media resources - var fetches = [config.audioPath, config.videoPath].map(function(path) { - return fetch(path).then(function(response) { - if (!response.ok) throw new Error('Resource fetch failed'); - return response.arrayBuffer(); - }); - }); - - Promise.all(fetches).then(function(resources) { - config.audioMedia = resources[0]; - config.videoMedia = resources[1]; - - // Create media source - var source = new MediaSource(); - - // Create and fill source buffers when the media source is opened - source.addEventListener('sourceopen', onSourceOpen); - - function onSourceOpen(event) { - var audioSourceBuffer = source.addSourceBuffer(config.audioType), - videoSourceBuffer = source.addSourceBuffer(config.videoType); - - audioSourceBuffer.appendBuffer(config.audioMedia); - videoSourceBuffer.appendBuffer(config.videoMedia); - - function endOfStream() { - if (audioSourceBuffer.updating || videoSourceBuffer.updating) { - setTimeout(endOfStream, 250); - } else { - source.endOfStream(); - } - } - - endOfStream(); - } - - resolve(source); - }); - }); -}
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/util/utf8.js b/testing/web-platform/tests/encrypted-media/util/utf8.js deleted file mode 100644 index 5b1176013..000000000 --- a/testing/web-platform/tests/encrypted-media/util/utf8.js +++ /dev/null @@ -1,22 +0,0 @@ -if ( typeof TextEncoder !== "undefined" && typeof TextDecoder !== "undefined" ) -{ - utf8encoder = new TextEncoder('utf-8'); - utf8decoder = new TextDecoder('utf-8'); -} -else -{ - utf8encoder = { encode: function( text ) - { - var result = new Uint8Array(text.length); - for(var i = 0; i < text.length; i++) { result[i] = text.charCodeAt(i); } - return result; - } }; - - utf8decoder = { decode: function( buffer ) - { - return String.fromCharCode.apply(null, new Uint8Array(buffer)); - } }; -} - -toUtf8 = function( o ) { return utf8encoder.encode( JSON.stringify( o ) ); } -fromUtf8 = function( t ) { return JSON.parse( utf8decoder.decode( t ) ); }
\ No newline at end of file diff --git a/testing/web-platform/tests/encrypted-media/util/utils.js b/testing/web-platform/tests/encrypted-media/util/utils.js deleted file mode 100644 index 98ac8c44a..000000000 --- a/testing/web-platform/tests/encrypted-media/util/utils.js +++ /dev/null @@ -1,271 +0,0 @@ -function testnamePrefix( qualifier, keysystem ) { - return ( qualifier || '' ) + ( keysystem === 'org.w3.clearkey' ? keysystem : 'drm' ); -} - -function getInitData(initDataType) { - - // FIXME: This is messed up, because here we are hard coding the key ids for the different content - // that we use for clearkey testing: webm and mp4. For keyids we return the mp4 one - // - // The content used with the DRM today servers has a different key id altogether - - if (initDataType == 'webm') { - return new Uint8Array([ - 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, - 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F - ]); - } - - if (initDataType == 'cenc') { - return new Uint8Array([ - 0x00, 0x00, 0x00, 0x34, // size - 0x70, 0x73, 0x73, 0x68, // 'pssh' - 0x01, // version = 1 - 0x00, 0x00, 0x00, // flags - 0x10, 0x77, 0xEF, 0xEC, 0xC0, 0xB2, 0x4D, 0x02, // Common SystemID - 0xAC, 0xE3, 0x3C, 0x1E, 0x52, 0xE2, 0xFB, 0x4B, - 0x00, 0x00, 0x00, 0x01, // key count - 0x00, 0x00, 0x00, 0x00, 0x03, 0xd2, 0xfc, 0x41, // key id - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00 // datasize - ]); - } - if (initDataType == 'keyids') { - var keyId = new Uint8Array([ - 0x00, 0x00, 0x00, 0x00, 0x03, 0xd2, 0xfc, 0x41, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - ]); - return stringToUint8Array(createKeyIDs(keyId)); - } - throw 'initDataType ' + initDataType + ' not supported.'; -} - -function stringToUint8Array(str) -{ - var result = new Uint8Array(str.length); - for(var i = 0; i < str.length; i++) { - result[i] = str.charCodeAt(i); - } - return result; -} -// Encodes |data| into base64url string. There is no '=' padding, and the -// characters '-' and '_' must be used instead of '+' and '/', respectively. -function base64urlEncode(data) { - var result = btoa(String.fromCharCode.apply(null, data)); - return result.replace(/=+$/g, '').replace(/\+/g, "-").replace(/\//g, "_"); -} -// Decode |encoded| using base64url decoding. -function base64urlDecode(encoded) { - return atob(encoded.replace(/\-/g, "+").replace(/\_/g, "/")); -} -// Decode |encoded| using base64 to a Uint8Array -function base64DecodeToUnit8Array(encoded) { - return new Uint8Array( atob( encoded ).split('').map( function(c){return c.charCodeAt(0);} ) ); -} -// Clear Key can also support Key IDs Initialization Data. -// ref: http://w3c.github.io/encrypted-media/keyids-format.html -// Each parameter is expected to be a key id in an Uint8Array. -function createKeyIDs() { - var keyIds = '{"kids":["'; - for (var i = 0; i < arguments.length; i++) { - if (i != 0) keyIds += '","'; - keyIds += base64urlEncode(arguments[i]); - } - keyIds += '"]}'; - return keyIds; -} - -function getSupportedKeySystem() { - var userAgent = navigator.userAgent.toLowerCase(); - var keysystem = undefined; - if (userAgent.indexOf('edge') > -1 ) { - keysystem = 'com.microsoft.playready'; - } else if ( userAgent.indexOf('chrome') > -1 || userAgent.indexOf('firefox') > -1 ) { - keysystem = 'com.widevine.alpha'; - } - return keysystem; -} - -function waitForEventAndRunStep(eventName, element, func, stepTest) -{ - var eventCallback = function(event) { - if (func) - func(event); - } - - element.addEventListener(eventName, stepTest.step_func(eventCallback), true); -} - -function waitForEvent(eventName, element) { - return new Promise(function(resolve) { - element.addEventListener(eventName, resolve, true); - }) -} - -var consoleDiv = null; - -function consoleWrite(text) -{ - if (!consoleDiv && document.body) { - consoleDiv = document.createElement('div'); - document.body.appendChild(consoleDiv); - } - var span = document.createElement('span'); - span.appendChild(document.createTextNode(text)); - span.appendChild(document.createElement('br')); - consoleDiv.appendChild(span); -} - -function forceTestFailureFromPromise(test, error, message) -{ - // Promises convert exceptions into rejected Promises. Since there is - // currently no way to report a failed test in the test harness, errors - // are reported using force_timeout(). - if (message) - consoleWrite(message + ': ' + error.message); - else if (error) - consoleWrite(error); - - test.force_timeout(); - test.done(); -} - -// Returns an array of audioCapabilities that includes entries for a set of -// codecs that should cover all user agents. -function getPossibleAudioCapabilities() -{ - return [ - { contentType: 'audio/mp4; codecs="mp4a.40.2"' }, - { contentType: 'audio/webm; codecs="opus"' }, - ]; -} - -// Returns a trivial MediaKeySystemConfiguration that should be accepted, -// possibly as a subset of the specified capabilities, by all user agents. -function getSimpleConfiguration() -{ - return [ { - initDataTypes : [ 'webm', 'cenc', 'keyids' ], - audioCapabilities: getPossibleAudioCapabilities() - } ]; -} - -// Returns a MediaKeySystemConfiguration for |initDataType| that should be -// accepted, possibly as a subset of the specified capabilities, by all -// user agents. -function getSimpleConfigurationForInitDataType(initDataType) -{ - return [ { - initDataTypes: [ initDataType ], - audioCapabilities: getPossibleAudioCapabilities() - } ]; -} - -// Returns a promise that is fulfilled with true if |initDataType| is supported, -// by keysystem or false if not. -function isInitDataTypeSupported(keysystem,initDataType) -{ - return navigator.requestMediaKeySystemAccess( - keysystem, getSimpleConfigurationForInitDataType(initDataType)) - .then(function() { return true; }, function() { return false; }); -} - -function getSupportedInitDataTypes( keysystem ) -{ - return [ 'cenc', 'keyids', 'webm' ].filter( isInitDataTypeSupported.bind( null, keysystem ) ); -} - -function arrayBufferAsString(buffer) -{ - var array = []; - Array.prototype.push.apply( array, new Uint8Array( buffer ) ); - return '0x' + array.map( function( x ) { return x < 16 ? '0'+x.toString(16) : x.toString(16); } ).join(''); -} - -function dumpKeyStatuses(keyStatuses) -{ - var userAgent = navigator.userAgent.toLowerCase(); - if (userAgent.indexOf('edge') === -1) { - consoleWrite("for (var entry of keyStatuses)"); - for (var entry of keyStatuses) { - consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); - } - consoleWrite("for (var keyId of keyStatuses.keys())"); - for (var keyId of keyStatuses.keys()) { - consoleWrite(arrayBufferAsString(keyId)); - } - consoleWrite("for (var status of keyStatuses.values())"); - for (var status of keyStatuses.values()) { - consoleWrite(status); - } - consoleWrite("for (var entry of keyStatuses.entries())"); - for (var entry of keyStatuses.entries()) { - consoleWrite(arrayBufferAsString(entry[0]) + ": " + entry[1]); - } - consoleWrite("keyStatuses.forEach()"); - keyStatuses.forEach(function(status, keyId) { - consoleWrite(arrayBufferAsString(keyId) + ": " + status); - }); - } else { - consoleWrite("keyStatuses.forEach()"); - keyStatuses.forEach(function(keyId, status) { - consoleWrite(arrayBufferAsString(keyId) + ": " + status); - }); - } -} - -// Verify that |keyStatuses| contains just the keys in |keys.expected| -// and none of the keys in |keys.unexpected|. All keys should have status -// 'usable'. Example call: verifyKeyStatuses(mediaKeySession.keyStatuses, -// { expected: [key1], unexpected: [key2] }); -function verifyKeyStatuses(keyStatuses, keys) -{ - var expected = keys.expected || []; - var unexpected = keys.unexpected || []; - - // |keyStatuses| should have same size as number of |keys.expected|. - assert_equals(keyStatuses.size, expected.length, "keystatuses should have expected size"); - - // All |keys.expected| should be found. - expected.map(function(key) { - assert_true(keyStatuses.has(key), "keystatuses should have the expected keys"); - assert_equals(keyStatuses.get(key), 'usable', "keystatus value should be 'usable'"); - }); - - // All |keys.unexpected| should not be found. - unexpected.map(function(key) { - assert_false(keyStatuses.has(key), "keystatuses should not have unexpected keys"); - assert_equals(keyStatuses.get(key), undefined, "keystatus for unexpected key should be undefined"); - }); -} - -// This function checks that calling |testCase.func| returns a -// rejected Promise with the error.name equal to -// |testCase.exception|. -function test_exception(testCase /*...*/) { - var func = testCase.func; - var exception = testCase.exception; - var args = Array.prototype.slice.call(arguments, 1); - - // Currently blink throws for TypeErrors rather than returning - // a rejected promise (http://crbug.com/359386). - // FIXME: Remove try/catch once they become failed promises. - try { - return func.apply(null, args).then( - function (result) { - assert_unreached(format_value(func)); - }, - function (error) { - assert_equals(error.name, exception, format_value(func)); - assert_not_equals(error.message, "", format_value(func)); - } - ); - } catch (e) { - // Only allow 'TypeError' exceptions to be thrown. - // Everything else should be a failed promise. - assert_equals('TypeError', exception, format_value(func)); - assert_equals(e.name, exception, format_value(func)); - } -} - - |