text: 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) + '}';
          }
  
          var p = 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);
          });
  
          return promise_rejects_js(test, TypeError, p);
      }, 'update() with invalid response (longer than 64Kb characters) should fail.');
  }
  