[Web IDL] Add support for USVString type
[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 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 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     Exposed=(Window,Worker),
30     ConstructorTemplate=Event,
31 ] interface MessageEvent : Event {
32     [InitializedByEventConstructor] readonly attribute USVString origin;
33     [InitializedByEventConstructor] readonly attribute DOMString lastEventId;
34     [InitializedByEventConstructor] readonly attribute EventTarget source; // May be a DOMWindow or a MessagePort.
35
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(optional DOMString typeArg,
41                                    optional boolean canBubbleArg,
42                                    optional boolean cancelableArg,
43                                    optional any dataArg,
44                                    optional USVString originArg,
45                                    optional DOMString lastEventIdArg,
46                                    optional DOMWindow sourceArg,
47                                    optional Array messagePorts);
48
49     [Custom] void webkitInitMessageEvent(optional DOMString typeArg,
50                                          optional boolean canBubbleArg,
51                                          optional boolean cancelableArg,
52                                          optional any dataArg,
53                                          optional USVString originArg,
54                                          optional DOMString lastEventIdArg,
55                                          optional DOMWindow sourceArg,
56                                          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(optional DOMString typeArg,
66                           optional boolean canBubbleArg,
67                           optional boolean cancelableArg,
68                           optional SerializedScriptValue? dataArg,
69                           optional DOMString originArg,
70                           optional DOMString lastEventIdArg,
71                           optional DOMWindow? sourceArg,
72                           optional MessagePort? messagePort);
73 #endif
74
75 };
76