<!DOCTYPE html>
<html>
<title>Service Workers: InstallPhaseEvent</title>
    <head>
        <link rel="help" href="https://w3c.github.io/ServiceWorker/#install-phase-event">
        <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 InstallPhaseEvent : Event {
  Promise<any> waitUntil(Promise<any> f);
};
</script>

<!--
Service Workers have two [Lifecycle events][1], `[install][2]` and
`[activate][3]`. Service Workers use the `[InstallPhaseEvent][4]` interface for
`[activate][3]` event and the `[InstallEvent][5]` interface, which inherits
from the `[InstallPhaseEvent][4]` interface, for `[install][2]` event.

[1]: #lifecycle-events
[2]: #install-event
[3]: #activate-event
[4]: #install-phase-event-interface
[5]: #install-event-interface
-->


    <script type=text/plain id="untested_idls">
        interface Event {};
    </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({
            InstallPhaseEvent: ["throw new Error ('No object defined for the InstallPhaseEvent interface')"]
        });
        idl_array.test();
    </script>

    </body>
</html>

