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) JSC_API_AVAILABLE(macos(10.6), ios(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 group, double limit, JSShouldTerminateCallback callback, void* context) JSC_API_AVAILABLE(macos(10.6), ios(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 group) JSC_API_AVAILABLE(macos(10.6), ios(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) JSC_API_AVAILABLE(macos(10.10), ios(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) JSC_API_AVAILABLE(macos(10.10), ios(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) JSC_API_AVAILABLE(macos(10.10), ios(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 includesNativeCallStack The new value of the setting for the context. 128 */ 129 JS_EXPORT void JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions(JSGlobalContextRef ctx, bool includesNativeCallStack) JSC_API_AVAILABLE(macos(10.10), ios(8.0)); 130 131 /*! 132 @function 133 @abstract Sets the unhandled promise rejection callback for a context. 134 @discussion Similar to window.addEventListener('unhandledrejection'), but for contexts not associated with a web view. 135 @param ctx The JSGlobalContext to set the callback on. 136 @param function The callback function to set, which receives the promise and rejection reason as arguments. 137 @param exception A pointer to a JSValueRef in which to store an exception, if any. Pass NULL if you do not care to store an exception. 138 */ 139 JS_EXPORT void JSGlobalContextSetUnhandledRejectionCallback(JSGlobalContextRef ctx, JSObjectRef function, JSValueRef* exception) JSC_API_AVAILABLE(macos(10.15.4), ios(13.4)); 140 141 #ifdef __cplusplus 142 } 143 #endif 144 145 #endif /* JSContextRefPrivate_h */