<!DOCTYPE html>
<html>
<title>Service Workers: InstallEvent</title>
    <head>
        <link rel="help" href="https://slightlyoff.github.io/ServiceWorker/spec/service_worker/#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();
};
</pre>

<!--
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 {};
    </pre>

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

