Home | History | Annotate | Download | only in API
      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 */
    133