<!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>
