<!doctype html>
<html>
  <head>
    <meta charset=utf-8>
    <title>Encrypted Media Extensions: Successful Playback, Temporary session with Clear Key, mp4, clear then encrypted using segmented media</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 Clear Key keysystem -->
    <script src=/encrypted-media/util/clearkey-messagehandler.js></script>

    <!-- The script for this specific test -->
    <script src=/encrypted-media/scripts/playback-temporary-encrypted-clear-segmented-sources.js></script>

  </head>
  <body>
    <div id='log'></div>

    <div id='video'>
      <video id="videoelement" width="200px"></video>
    </div>

    <script>
        var encryptedcontentitem = content['mp4-basic'],
            clearcontentitem = content['mp4-clear'],
            handler = new MessageHandler('org.w3.clearkey', encryptedcontentitem),
            configEncrypted = { video:              document.getElementById('videoelement'),
                                keysystem:          'org.w3.clearkey',
                                messagehandler:     handler.messagehandler,
                                audioPath:          encryptedcontentitem.audio.path,
                                videoPath:          encryptedcontentitem.video.path,
                                audioType:          encryptedcontentitem.audio.type,
                                videoType:          encryptedcontentitem.video.type,
                                duration:           4,
                                initDataType:       'keyids',
                                initData:           getInitData(encryptedcontentitem, 'keyids'),
                            },
            configClear = { audioPath:          clearcontentitem.audio.path,
                            videoPath:          clearcontentitem.video.path,
                            audioType:          clearcontentitem.audio.type,
                            videoType:          clearcontentitem.video.type,
                            duration:           4,
                            };

        runTest(configEncrypted,configClear);
    </script>
  </body>
</html>
