Set MessageEvent.source to the newly created port for shared workers' connect events
[WebKit-https.git] / Source / WebCore / dom / MessageEvent.idl
1 /*
2  * Copyright (C) 2007 Henry Mason <hmason@mac.com>
3  * Copyright (C) 2011 Google Inc. All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
15  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
18  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
25  *
26  */
27
28 [
29     GlobalContext=DOMWindow&WorkerGlobalScope,
30     JSNoStaticTables,
31     ConstructorTemplate=Event
32 ] interface MessageEvent : Event {
33     [InitializedByEventConstructor] readonly attribute DOMString origin;
34     [InitializedByEventConstructor] readonly attribute DOMString lastEventId;
35     [InitializedByEventConstructor] readonly attribute EventTarget source; // May be a DOMWindow or a MessagePort.
36 #if defined(LANGUAGE_JAVASCRIPT) && LANGUAGE_JAVASCRIPT
37     [InitializedByEventConstructor, CachedAttribute, CustomGetter] readonly attribute any data;
38     [InitializedByEventConstructor] readonly attribute MessagePort[] ports;
39
40     [Custom] void initMessageEvent([Default=Undefined] optional DOMString typeArg, 
41                                    [Default=Undefined] optional boolean canBubbleArg, 
42                                    [Default=Undefined] optional boolean cancelableArg, 
43                                    [Default=Undefined] optional any dataArg, 
44                                    [Default=Undefined] optional DOMString originArg, 
45                                    [Default=Undefined] optional DOMString lastEventIdArg, 
46                                    [Default=Undefined] optional DOMWindow sourceArg, 
47                                    [Default=Undefined] optional Array messagePorts);
48
49     [Custom] void webkitInitMessageEvent([Default=Undefined] optional DOMString typeArg,
50                                          [Default=Undefined] optional boolean canBubbleArg,
51                                          [Default=Undefined] optional boolean cancelableArg,
52                                          [Default=Undefined] optional any dataArg,
53                                          [Default=Undefined] optional DOMString originArg,
54                                          [Default=Undefined] optional DOMString lastEventIdArg,
55                                          [Default=Undefined] optional DOMWindow sourceArg,
56                                          [Default=Undefined] optional Array transferables);
57 #else
58     // Code generator for ObjC bindings does not support custom bindings, thus there is no good way to
59     // return a variant value. As workaround, expose the data attribute as SerializedScriptValue.
60     readonly attribute SerializedScriptValue data;
61
62     // There's no good way to expose an array via the ObjC bindings, so for now just expose a single port.
63     readonly attribute MessagePort messagePort;
64
65     void initMessageEvent([Default=Undefined] optional DOMString typeArg, 
66                           [Default=Undefined] optional boolean canBubbleArg, 
67                           [Default=Undefined] optional boolean cancelableArg, 
68                           [Default=Undefined] optional SerializedScriptValue dataArg, 
69                           [Default=Undefined] optional DOMString originArg, 
70                           [Default=Undefined] optional DOMString lastEventIdArg, 
71                           [Default=Undefined] optional DOMWindow sourceArg, 
72                           [Default=Undefined] optional MessagePort messagePort);
73 #endif
74
75 };
76