<!DOCTYPE html>
<html>
<title>Service Workers: Client</title>
    <head>
        <link rel="help" href="https://w3c.github.io/ServiceWorker/#client">
        <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">
[Constructor()] // no-op constructor
interface Client {
  readonly attribute unsigned long id;
  void postMessage(any message, DOMString targetOrigin,
                   optional sequence<Transferable> transfer);
};
</script>

<!--
The `Client` interface represents the window or the worker (defined as client)
that is [controlled][1] by the Service Worker. This object provides a no-op
constructor. Callers should note that only `Client` objects created by the user
agent (see [`this.clients.getServiced()`][2]) will provide meaningful
functionality.

The `id` of a `Client` identifies the specific client object from the list of
client objects serviced by the Service Worker. The `postMessage(message,
targetOrigin, transfer)` method of a `[Client][3]`, when called, causes a
`[MessageEvent][4]` to be dispatched at the client object.



[1]: #document-control
[2]: #get-serviced-method
[3]: #client-interface
[4]: http://goo.gl/4SLWiH
-->


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

    </body>
</html>

