<!doctype html>
<html>
  <head>
    <meta charset=utf-8>
    <title>Encrypted Media Extensions - Test MediaKeySession attribute and function syntax 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/fetch.js></script>

    <!-- Content metadata -->
    <script src=/encrypted-media/content/content-metadata.js></script>

    <!-- The script for this specific test -->
    <script src=/encrypted-media/scripts/syntax-mediakeysession.js></script>

  </head>
  <body>
    <div id='log'></div>
    <div id='video'>
      <video id="videoelement" width="200px"></video>
    </div>
    <script>
        var keysystem = getSupportedKeySystem();
        var contentItem = content['mp4-basic'],
            config = {
                keysystem: keysystem,
                content: contentItem,
                initData: stringToUint8Array(atob(contentItem.keys[0].initData)),
                initDataType: contentItem.initDataType,
                audioType: contentItem.audio.type,
                videoType: contentItem.video.type
            };
        runTest(config);
    </script>
  </body>
</html>
