|
1 /* |
|
2 * Copyright (C) 2006 Apple Computer, Inc. All rights reserved. |
|
3 * |
|
4 * Redistribution and use in source and binary forms, with or without |
|
5 * modification, are permitted provided that the following conditions |
|
6 * are met: |
|
7 * 1. Redistributions of source code must retain the above copyright |
|
8 * notice, this list of conditions and the following disclaimer. |
|
9 * 2. Redistributions in binary form must reproduce the above copyright |
|
10 * notice, this list of conditions and the following disclaimer in the |
|
11 * documentation and/or other materials provided with the distribution. |
|
12 * |
|
13 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
|
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
|
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
|
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
|
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
24 */ |
|
25 |
|
26 #ifndef JSContextRef_h |
|
27 #define JSContextRef_h |
|
28 |
|
29 #include <JavaScriptCore/JSObjectRef.h> |
|
30 #include <JavaScriptCore/JSValueRef.h> |
|
31 #include <JavaScriptCore/WebKitAvailability.h> |
|
32 |
|
33 #ifndef __cplusplus |
|
34 #include <stdbool.h> |
|
35 #endif |
|
36 |
|
37 #ifdef __cplusplus |
|
38 extern "C" { |
|
39 #endif |
|
40 |
|
41 /*! |
|
42 @function |
|
43 @abstract Creates a JavaScript context group. |
|
44 @discussion A JSContextGroup associates JavaScript contexts with one another. |
|
45 Contexts in the same group may share and exchange JavaScript objects. Sharing and/or exchanging |
|
46 JavaScript objects between contexts in different groups will produce undefined behavior. |
|
47 When objects from the same context group are used in multiple threads, explicit |
|
48 synchronization is required. |
|
49 @result The created JSContextGroup. |
|
50 */ |
|
51 JS_EXPORT JSContextGroupRef JSContextGroupCreate() AVAILABLE_IN_WEBKIT_VERSION_4_0; |
|
52 |
|
53 /*! |
|
54 @function |
|
55 @abstract Retains a JavaScript context group. |
|
56 @param group The JSContextGroup to retain. |
|
57 @result A JSContextGroup that is the same as group. |
|
58 */ |
|
59 JS_EXPORT JSContextGroupRef JSContextGroupRetain(JSContextGroupRef group) AVAILABLE_IN_WEBKIT_VERSION_4_0; |
|
60 |
|
61 /*! |
|
62 @function |
|
63 @abstract Releases a JavaScript context group. |
|
64 @param group The JSContextGroup to release. |
|
65 */ |
|
66 JS_EXPORT void JSContextGroupRelease(JSContextGroupRef group) AVAILABLE_IN_WEBKIT_VERSION_4_0; |
|
67 |
|
68 /*! |
|
69 @function |
|
70 @abstract Creates a global JavaScript execution context. |
|
71 @discussion JSGlobalContextCreate allocates a global object and populates it with all the |
|
72 built-in JavaScript objects, such as Object, Function, String, and Array. |
|
73 |
|
74 In WebKit version 4.0 and later, the context is created in a unique context group. |
|
75 Therefore, scripts may execute in it concurrently with scripts executing in other contexts. |
|
76 However, you may not use values created in the context in other contexts. |
|
77 @param globalObjectClass The class to use when creating the global object. Pass |
|
78 NULL to use the default object class. |
|
79 @result A JSGlobalContext with a global object of class globalObjectClass. |
|
80 */ |
|
81 JS_EXPORT JSGlobalContextRef JSGlobalContextCreate(JSClassRef globalObjectClass) AVAILABLE_WEBKIT_VERSION_3_0_AND_LATER; |
|
82 |
|
83 /*! |
|
84 @function |
|
85 @abstract Creates a global JavaScript execution context in the context group provided. |
|
86 @discussion JSGlobalContextCreateInGroup allocates a global object and populates it with |
|
87 all the built-in JavaScript objects, such as Object, Function, String, and Array. |
|
88 @param globalObjectClass The class to use when creating the global object. Pass |
|
89 NULL to use the default object class. |
|
90 @param group The context group to use. The created global context retains the group. |
|
91 Pass NULL to create a unique group for the context. |
|
92 @result A JSGlobalContext with a global object of class globalObjectClass and a context |
|
93 group equal to group. |
|
94 */ |
|
95 JS_EXPORT JSGlobalContextRef JSGlobalContextCreateInGroup(JSContextGroupRef group, JSClassRef globalObjectClass) AVAILABLE_IN_WEBKIT_VERSION_4_0; |
|
96 |
|
97 /*! |
|
98 @function |
|
99 @abstract Retains a global JavaScript execution context. |
|
100 @param ctx The JSGlobalContext to retain. |
|
101 @result A JSGlobalContext that is the same as ctx. |
|
102 */ |
|
103 JS_EXPORT JSGlobalContextRef JSGlobalContextRetain(JSGlobalContextRef ctx); |
|
104 |
|
105 /*! |
|
106 @function |
|
107 @abstract Releases a global JavaScript execution context. |
|
108 @param ctx The JSGlobalContext to release. |
|
109 */ |
|
110 JS_EXPORT void JSGlobalContextRelease(JSGlobalContextRef ctx); |
|
111 |
|
112 /*! |
|
113 @function |
|
114 @abstract Gets the global object of a JavaScript execution context. |
|
115 @param ctx The JSContext whose global object you want to get. |
|
116 @result ctx's global object. |
|
117 */ |
|
118 JS_EXPORT JSObjectRef JSContextGetGlobalObject(JSContextRef ctx); |
|
119 |
|
120 /*! |
|
121 @function |
|
122 @abstract Gets the context group to which a JavaScript execution context belongs. |
|
123 @param ctx The JSContext whose group you want to get. |
|
124 @result ctx's group. |
|
125 */ |
|
126 JS_EXPORT JSContextGroupRef JSContextGetGroup(JSContextRef ctx) AVAILABLE_IN_WEBKIT_VERSION_4_0; |
|
127 |
|
128 #ifdef __cplusplus |
|
129 } |
|
130 #endif |
|
131 |
|
132 #endif /* JSContextRef_h */ |