<!doctype html>
<html>
  <head>
    <meta charset=utf-8>
    <title>Encrypted Media Extentions IDL test</title>
    <link rel="help" href="https://w3c.github.io/encrypted-media/">

    <script src=/resources/testharness.js></script>
    <script src=/resources/testharnessreport.js></script>
    <script src=/resources/WebIDLParser.js></script>
    <script src=/resources/idlharness.js></script>
    <script src=/encrypted-media/util/fetch.js></script>
  </head>
  <body>
    <h1 class="instructions">Description</h1>
    <p class="instructions">
      This test verifies that implementations of the Encrypted Media Extensions API match its WebIDL definition.
    </p>

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

    <script>
        setup(function() {

            fetch( '/interfaces/encrypted-media.idl' )
            .then( function( response ) {
                if ( !response.ok ) throw new Error( 'IDL fetch failed' );
                return response.text();
            } )
            .then( function( idls ) {

                var idl_array = new IdlArray();
                idl_array.add_untested_idls("interface Navigator {};");
                idl_array.add_untested_idls("interface HTMLMediaElement {};");
                idl_array.add_untested_idls("interface Event {};");
                idl_array.add_untested_idls("interface EventTarget {};");

                idl_array.add_idls(idls);

                idl_array.test();

                done();

            } );

        }, {explicit_done: true});
    </script>
  </body>
</html>
