]> git.saurik.com Git - apple/javascriptcore.git/blob - API/JSContextRefPrivate.h
JavaScriptCore-7600.1.4.16.1.tar.gz
[apple/javascriptcore.git] / API / JSContextRefPrivate.h
1 /*
2 * Copyright (C) 2009 Apple 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 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 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 JSContextRefPrivate_h
27 #define JSContextRefPrivate_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 Gets a Backtrace for the existing context
44 @param ctx The JSContext whose backtrace you want to get
45 @result A string containing the backtrace
46 */
47 JS_EXPORT JSStringRef JSContextCreateBacktrace(JSContextRef ctx, unsigned maxStackSize) CF_AVAILABLE(10_6, 7_0);
48
49
50 /*!
51 @typedef JSShouldTerminateCallback
52 @abstract The callback invoked when script execution has exceeded the allowed
53 time limit previously specified via JSContextGroupSetExecutionTimeLimit.
54 @param ctx The execution context to use.
55 @param context User specified context data previously passed to
56 JSContextGroupSetExecutionTimeLimit.
57 @discussion If you named your function Callback, you would declare it like this:
58
59 bool Callback(JSContextRef ctx, void* context);
60
61 If you return true, the timed out script will terminate.
62 If you return false, the script will run for another period of the allowed
63 time limit specified via JSContextGroupSetExecutionTimeLimit.
64
65 Within this callback function, you may call JSContextGroupSetExecutionTimeLimit
66 to set a new time limit, or JSContextGroupClearExecutionTimeLimit to cancel the
67 timeout.
68 */
69 typedef bool
70 (*JSShouldTerminateCallback) (JSContextRef ctx, void* context);
71
72 /*!
73 @function
74 @abstract Sets the script execution time limit.
75 @param group The JavaScript context group that this time limit applies to.
76 @param limit The time limit of allowed script execution time in seconds.
77 @param callback The callback function that will be invoked when the time limit
78 has been reached. This will give you a chance to decide if you want to
79 terminate the script or not. If you pass a NULL callback, the script will be
80 terminated unconditionally when the time limit has been reached.
81 @param context User data that you can provide to be passed back to you
82 in your callback.
83
84 In order to guarantee that the execution time limit will take effect, you will
85 need to call JSContextGroupSetExecutionTimeLimit before you start executing
86 any scripts.
87 */
88 JS_EXPORT void JSContextGroupSetExecutionTimeLimit(JSContextGroupRef, double limit, JSShouldTerminateCallback, void* context) CF_AVAILABLE(10_6, 7_0);
89
90 /*!
91 @function
92 @abstract Clears the script execution time limit.
93 @param group The JavaScript context group that the time limit is cleared on.
94 */
95 JS_EXPORT void JSContextGroupClearExecutionTimeLimit(JSContextGroupRef) CF_AVAILABLE(10_6, 7_0);
96
97 /*!
98 @function
99 @abstract Gets a whether or not remote inspection is enabled on the context.
100 @param ctx The JSGlobalContext whose setting you want to get.
101 @result The value of the setting, true if remote inspection is enabled, otherwise false.
102 @discussion Remote inspection is true by default.
103 */
104 JS_EXPORT bool JSGlobalContextGetRemoteInspectionEnabled(JSGlobalContextRef ctx) CF_AVAILABLE(10_10, 8_0);
105
106 /*!
107 @function
108 @abstract Sets the remote inspection setting for a context.
109 @param ctx The JSGlobalContext that you want to change.
110 @param enabled The new remote inspection enabled setting for the context.
111 */
112 JS_EXPORT void JSGlobalContextSetRemoteInspectionEnabled(JSGlobalContextRef ctx, bool enabled) CF_AVAILABLE(10_10, 8_0);
113
114 /*!
115 @function
116 @abstract Gets the include native call stack when reporting exceptions setting for a context.
117 @param ctx The JSGlobalContext whose setting you want to get.
118 @result The value of the setting, true if remote inspection is enabled, otherwise false.
119 @discussion This setting is true by default.
120 */
121 JS_EXPORT bool JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions(JSGlobalContextRef ctx) CF_AVAILABLE(10_10, 8_0);
122
123 /*!
124 @function
125 @abstract Sets the include native call stack when reporting exceptions setting for a context.
126 @param ctx The JSGlobalContext that you want to change.
127 @param includeNativeCallStack The new value of the setting for the context.
128 */
129 JS_EXPORT void JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions(JSGlobalContextRef ctx, bool includesNativeCallStack) CF_AVAILABLE(10_10, 8_0);
130
131 #ifdef __cplusplus
132 }
133 #endif
134
135 #endif /* JSContextRefPrivate_h */