<!doctype html>
<html>
  <head>
    <meta charset=utf-8>
    <meta name="timeout" content="long">
    <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>
