2 * Copyright (C) 2009 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
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.
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.
26 #ifndef JSContextRefPrivate_h
27 #define JSContextRefPrivate_h
29 #include <JavaScriptCore/JSObjectRef.h>
30 #include <JavaScriptCore/JSValueRef.h>
31 #include <JavaScriptCore/WebKitAvailability.h>
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
47 JS_EXPORT JSStringRef
JSContextCreateBacktrace(JSContextRef ctx
, unsigned maxStackSize
) CF_AVAILABLE(10_6
, 7_0
);
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:
59 bool Callback(JSContextRef ctx, void* context);
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.
65 Within this callback function, you may call JSContextGroupSetExecutionTimeLimit
66 to set a new time limit, or JSContextGroupClearExecutionTimeLimit to cancel the
70 (*JSShouldTerminateCallback
) (JSContextRef ctx
, void* context
);
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
84 In order to guarantee that the execution time limit will take effect, you will
85 need to call JSContextGroupSetExecutionTimeLimit before you start executing
88 JS_EXPORT
void JSContextGroupSetExecutionTimeLimit(JSContextGroupRef
, double limit
, JSShouldTerminateCallback
, void* context
) CF_AVAILABLE(10_6
, 7_0
);
92 @abstract Clears the script execution time limit.
93 @param group The JavaScript context group that the time limit is cleared on.
95 JS_EXPORT
void JSContextGroupClearExecutionTimeLimit(JSContextGroupRef
) CF_AVAILABLE(10_6
, 7_0
);
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.
104 JS_EXPORT
bool JSGlobalContextGetRemoteInspectionEnabled(JSGlobalContextRef ctx
) CF_AVAILABLE(10_10
, 8_0
);
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.
112 JS_EXPORT
void JSGlobalContextSetRemoteInspectionEnabled(JSGlobalContextRef ctx
, bool enabled
) CF_AVAILABLE(10_10
, 8_0
);
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.
121 JS_EXPORT
bool JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions(JSGlobalContextRef ctx
) CF_AVAILABLE(10_10
, 8_0
);
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.
129 JS_EXPORT
void JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions(JSGlobalContextRef ctx
, bool includesNativeCallStack
) CF_AVAILABLE(10_10
, 8_0
);
135 #endif /* JSContextRefPrivate_h */