<!DOCTYPE html>
<!--
  Copyright 2022 The Cobalt Authors. All Rights Reserved.

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<html>

<head>
  <title>Cobalt WebCryptoAPI Worker Test</title>
  <script src='black_box_js_test_utils.js'></script>
</head>

<body>
  <script>
    const tests = [
      'crypto_defined',
      'subtle_encrypt_decrypt',
      'subtle_importKey_verify_sign',
      'getRandomValues',
    ];
    let pending = tests.length;
    const worker = new Worker('web_crypto_api_test.js');
    worker.onmessage = event => {
      assertEqual('pass', event.data);
      pending--;
      if (pending === 0) {
        onEndTest();
      }
    };
    tests.map(test => worker.postMessage(test));
    setupFinished();
    window.setTimeout(notReached, 3000);
  </script>
</body>
</html>
