<!DOCTYPE html>
<html>
<title>Service Workers: InstallEvent</title>
    <head>
        <link rel="help" href="https://w3c.github.io/ServiceWorker/#install-event-section">
        <script src="/resources/testharness.js"></script>
        <script src="/resources/testharnessreport.js"></script>

        <script src=/resources/WebIDLParser.js></script>
        <script src=/resources/idlharness.js></script>

    </head>
    <body>

<script type=text/plain id="idl_0">
interface InstallEvent : InstallPhaseEvent {
  readonly attribute ServiceWorker? activeWorker;
  void replace();
};
</script>

<!--
Service Workers use the `[InstallEvent][1]` interface for `[install][2]` event.

[1]: #install-event-interface
[2]: #install-event
-->


    <script type=text/plain id="untested_idls">
        interface ServiceWorker {};
        interface InstallPhaseEvent {};
    </script>

    <script>
        var idl_array = new IdlArray();
        idl_array.add_untested_idls(document.getElementById("untested_idls").textContent);
        idl_array.add_idls(document.getElementById("idl_0").textContent);
        idl_array.add_objects({
            InstallEvent: ["throw new Error ('No object defined for the InstallEvent interface')"]
        });
        idl_array.test();
    </script>

    </body>
</html>

