JSContextRefPrivate.h 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  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. #ifndef JSContextRefPrivate_h
  26. #define JSContextRefPrivate_h
  27. #include <JavaScriptCore/JSObjectRef.h>
  28. #include <JavaScriptCore/JSValueRef.h>
  29. #include <JavaScriptCore/WebKitAvailability.h>
  30. #ifndef __cplusplus
  31. #include <stdbool.h>
  32. #endif
  33. #ifdef __cplusplus
  34. extern "C" {
  35. #endif
  36. /*!
  37. @function
  38. @abstract Gets a Backtrace for the existing context
  39. @param ctx The JSContext whose backtrace you want to get
  40. @result A string containing the backtrace
  41. */
  42. JS_EXPORT JSStringRef JSContextCreateBacktrace(JSContextRef ctx, unsigned maxStackSize) JSC_API_AVAILABLE(macosx(10.6), ios(7.0));
  43. /*!
  44. @typedef JSShouldTerminateCallback
  45. @abstract The callback invoked when script execution has exceeded the allowed
  46. time limit previously specified via JSContextGroupSetExecutionTimeLimit.
  47. @param ctx The execution context to use.
  48. @param context User specified context data previously passed to
  49. JSContextGroupSetExecutionTimeLimit.
  50. @discussion If you named your function Callback, you would declare it like this:
  51. bool Callback(JSContextRef ctx, void* context);
  52. If you return true, the timed out script will terminate.
  53. If you return false, the script will run for another period of the allowed
  54. time limit specified via JSContextGroupSetExecutionTimeLimit.
  55. Within this callback function, you may call JSContextGroupSetExecutionTimeLimit
  56. to set a new time limit, or JSContextGroupClearExecutionTimeLimit to cancel the
  57. timeout.
  58. */
  59. typedef bool
  60. (*JSShouldTerminateCallback) (JSContextRef ctx, void* context);
  61. /*!
  62. @function
  63. @abstract Sets the script execution time limit.
  64. @param group The JavaScript context group that this time limit applies to.
  65. @param limit The time limit of allowed script execution time in seconds.
  66. @param callback The callback function that will be invoked when the time limit
  67. has been reached. This will give you a chance to decide if you want to
  68. terminate the script or not. If you pass a NULL callback, the script will be
  69. terminated unconditionally when the time limit has been reached.
  70. @param context User data that you can provide to be passed back to you
  71. in your callback.
  72. In order to guarantee that the execution time limit will take effect, you will
  73. need to call JSContextGroupSetExecutionTimeLimit before you start executing
  74. any scripts.
  75. */
  76. JS_EXPORT void JSContextGroupSetExecutionTimeLimit(JSContextGroupRef group, double limit, JSShouldTerminateCallback callback, void* context) JSC_API_AVAILABLE(macosx(10.6), ios(7.0));
  77. /*!
  78. @function
  79. @abstract Clears the script execution time limit.
  80. @param group The JavaScript context group that the time limit is cleared on.
  81. */
  82. JS_EXPORT void JSContextGroupClearExecutionTimeLimit(JSContextGroupRef group) JSC_API_AVAILABLE(macosx(10.6), ios(7.0));
  83. /*!
  84. @function
  85. @abstract Gets a whether or not remote inspection is enabled on the context.
  86. @param ctx The JSGlobalContext whose setting you want to get.
  87. @result The value of the setting, true if remote inspection is enabled, otherwise false.
  88. @discussion Remote inspection is true by default.
  89. */
  90. JS_EXPORT bool JSGlobalContextGetRemoteInspectionEnabled(JSGlobalContextRef ctx) JSC_API_AVAILABLE(macosx(10.10), ios(8.0));
  91. /*!
  92. @function
  93. @abstract Sets the remote inspection setting for a context.
  94. @param ctx The JSGlobalContext that you want to change.
  95. @param enabled The new remote inspection enabled setting for the context.
  96. */
  97. JS_EXPORT void JSGlobalContextSetRemoteInspectionEnabled(JSGlobalContextRef ctx, bool enabled) JSC_API_AVAILABLE(macosx(10.10), ios(8.0));
  98. /*!
  99. @function
  100. @abstract Gets the include native call stack when reporting exceptions setting for a context.
  101. @param ctx The JSGlobalContext whose setting you want to get.
  102. @result The value of the setting, true if remote inspection is enabled, otherwise false.
  103. @discussion This setting is true by default.
  104. */
  105. JS_EXPORT bool JSGlobalContextGetIncludesNativeCallStackWhenReportingExceptions(JSGlobalContextRef ctx) JSC_API_AVAILABLE(macosx(10.10), ios(8.0));
  106. /*!
  107. @function
  108. @abstract Sets the include native call stack when reporting exceptions setting for a context.
  109. @param ctx The JSGlobalContext that you want to change.
  110. @param includesNativeCallStack The new value of the setting for the context.
  111. */
  112. JS_EXPORT void JSGlobalContextSetIncludesNativeCallStackWhenReportingExceptions(JSGlobalContextRef ctx, bool includesNativeCallStack) JSC_API_AVAILABLE(macosx(10.10), ios(8.0));
  113. #ifdef __cplusplus
  114. }
  115. #endif
  116. #endif /* JSContextRefPrivate_h */