Index: third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/update-disallowed-input.js |
diff --git a/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/update-disallowed-input.js b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/update-disallowed-input.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..b5adaf7f125c10c57d1bde2a19f9536270425f55 |
--- /dev/null |
+++ b/third_party/WebKit/LayoutTests/imported/wpt/encrypted-media/scripts/update-disallowed-input.js |
@@ -0,0 +1,45 @@ |
+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.'); |
+} |