Back to index

lightning-sunbird  0.9+nobinonly
Public Member Functions | Protected Attributes
nsCLiveconnect Class Reference

nsCLiveconnect implements nsILiveconnect interface for navigator. More...

#include <nsCLiveconnect.h>

Inheritance diagram for nsCLiveconnect:
Inheritance graph
[legend]
Collaboration diagram for nsCLiveconnect:
Collaboration graph
[legend]

List of all members.

Public Member Functions

NS_DECL_AGGREGATED NS_IMETHOD GetMember (JNIEnv *jEnv, lcjsobject obj, const jchar *name, jsize length, void *principalsArray[], int numPrincipals, nsISupports *securitySupports, jobject *pjobj)
 get member of a Native JSObject for a given name.
NS_IMETHOD GetSlot (JNIEnv *jEnv, lcjsobject obj, jint slot, void *principalsArray[], int numPrincipals, nsISupports *securitySupports, jobject *pjobj)
 get member of a Native JSObject for a given index.
NS_IMETHOD SetMember (JNIEnv *jEnv, lcjsobject obj, const jchar *name, jsize length, jobject jobj, void *principalsArray[], int numPrincipals, nsISupports *securitySupports)
 set member of a Native JSObject for a given name.
NS_IMETHOD SetSlot (JNIEnv *jEnv, lcjsobject obj, jint slot, jobject jobj, void *principalsArray[], int numPrincipals, nsISupports *securitySupports)
 set member of a Native JSObject for a given index.
NS_IMETHOD RemoveMember (JNIEnv *jEnv, lcjsobject obj, const jchar *name, jsize length, void *principalsArray[], int numPrincipals, nsISupports *securitySupports)
 remove member of a Native JSObject for a given name.
NS_IMETHOD Call (JNIEnv *jEnv, lcjsobject obj, const jchar *name, jsize length, jobjectArray jobjArr, void *principalsArray[], int numPrincipals, nsISupports *securitySupports, jobject *pjobj)
 call a method of Native JSObject.
NS_IMETHOD Eval (JNIEnv *jEnv, lcjsobject obj, const jchar *script, jsize length, void *principalsArray[], int numPrincipals, nsISupports *securitySupports, jobject *pjobj)
 Evaluate a script with a Native JS Object representing scope.
NS_IMETHOD GetWindow (JNIEnv *jEnv, void *pJavaObject, void *principalsArray[], int numPrincipals, nsISupports *securitySupports, lcjsobject *pobj)
 Get the window object for a plugin instance.
NS_IMETHOD FinalizeJSObject (JNIEnv *jEnv, lcjsobject obj)
 Get the window object for a plugin instance.
NS_IMETHOD ToString (JNIEnv *jEnv, lcjsobject obj, jstring *pjstring)
 Get the window object for a plugin instance.
 nsCLiveconnect (nsISupports *aOuter)
virtual ~nsCLiveconnect (void)

Protected Attributes

voidmJavaClient

Detailed Description

nsCLiveconnect implements nsILiveconnect interface for navigator.

This is used by a JVM to implement netscape.javascript.JSObject functionality.

Definition at line 59 of file nsCLiveconnect.h.


Constructor & Destructor Documentation

nsCLiveconnect::nsCLiveconnect ( nsISupports *  aOuter)

Definition at line 774 of file nsCLiveconnect.cpp.

    :   mJavaClient(NULL)
{
    NS_INIT_AGGREGATED(aOuter);
#ifdef PRESERVE_JSOBJECT_IDENTITY
    jsj_init_js_obj_reflections_table();
#endif
}

Here is the call graph for this function:

Definition at line 783 of file nsCLiveconnect.cpp.

{
}

Member Function Documentation

NS_METHOD nsCLiveconnect::Call ( JNIEnv jEnv,
lcjsobject  obj,
const jchar name,
jsize  length,
jobjectArray  java_args,
void principalsArray[],
int  numPrincipals,
nsISupports *  securitySupports,
jobject pjobj 
) [virtual]

call a method of Native JSObject.

Parameters:
obj- A Native JS Object.
name- Name of a method.
jobjArr- Array of jobjects representing parameters of method being caled.
pjobj- return value.
jEnv- JNIEnv on which the call is being made.
obj- A Native JS Object.
name- Name of a method.
jobjArr- Array of jobjects representing parameters of method being caled.
pjobj- return value.

Implements nsILiveconnect.

Definition at line 492 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    int                i              = 0;
    int                argc           = 0;
    int                arg_num        = 0;
    jsval             *argv           = 0;
    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = (JSObjectHandle*)obj;
    JSObject          *js_obj         = handle->js_obj;
    JSContext         *cx             = NULL;
    jsval              js_val;
    jsval              function_val   = 0;
    int                dummy_cost     = 0;
    JSBool             dummy_bool     = PR_FALSE;
    JSErrorReporter    saved_state    = NULL;
    jobject            result         = NULL;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
    if (!jsj_env)
        return NS_ERROR_FAILURE;

    result = NULL;
    AutoPushJSContext autopush(securitySupports, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        goto done;
    
    if (!name) {
        JS_ReportError(cx, "illegal null JavaScript function name");
        goto done;
    }

    /* Allocate space for JS arguments */
    argc = java_args ? jEnv->GetArrayLength(java_args) : 0;
    if (argc) {
        argv = (jsval*)JS_malloc(cx, argc * sizeof(jsval));
        if (!argv)
            goto done;
    } else {
        argv = 0;
    }

    /* Convert arguments from Java to JS values */
    for (arg_num = 0; arg_num < argc; arg_num++) {
        jobject arg = jEnv->GetObjectArrayElement(java_args, arg_num);
        JSBool ret = jsj_ConvertJavaObjectToJSValue(cx, jEnv, arg, &argv[arg_num]);
              
        jEnv->DeleteLocalRef(arg);
        if (!ret)
            goto cleanup_argv;
        JS_AddRoot(cx, &argv[arg_num]);
    }

    if (!JS_GetUCProperty(cx, js_obj, name, length, &function_val))
        goto cleanup_argv;

    if (!JS_CallFunctionValue(cx, js_obj, function_val, argc, argv, &js_val))
        goto cleanup_argv;

    jsj_ConvertJSValueToJavaObject(cx, jEnv, js_val, jsj_get_jlObject_descriptor(cx, jEnv),
                                   &dummy_cost, &result, &dummy_bool);

cleanup_argv:
    if (argv) {
        for (i = 0; i < arg_num; i++)
            JS_RemoveRoot(cx, &argv[i]);
        JS_free(cx, argv);
    }

done:
    if (!jsj_exit_js(cx, jsj_env, saved_state))
        return NS_ERROR_FAILURE;
    
    *pjobj = result;

    return NS_OK;
}

Here is the call graph for this function:

NS_METHOD nsCLiveconnect::Eval ( JNIEnv jEnv,
lcjsobject  obj,
const jchar script,
jsize  length,
void principalsArray[],
int  numPrincipals,
nsISupports *  securitySupports,
jobject pjobj 
) [virtual]

Evaluate a script with a Native JS Object representing scope.

Parameters:
obj- A Native JS Object.
pNSIPrincipaArray- Array of principals to be used to compare privileges.
numPrincipals- Number of principals being passed.
script- Script to be executed.
pjobj- return value.

Implements nsILiveconnect.

Definition at line 576 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = (JSObjectHandle*)obj;
    JSObject          *js_obj         = handle->js_obj;
    JSContext         *cx             = NULL;
    jsval              js_val;
    int                dummy_cost     = 0;
    JSBool             dummy_bool     = PR_FALSE;
    JSErrorReporter    saved_state    = NULL;
    jobject            result         = NULL;
       const char             *codebase       = NULL;
    JSPrincipals      *principals     = NULL;
    JSBool             eval_succeeded = PR_FALSE;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
    if (!jsj_env)
       return NS_ERROR_FAILURE;

    result = NULL;
    AutoPushJSContext autopush(securitySupports, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        goto done;
    
    if (!script) {
        JS_ReportError(cx, "illegal null string eval argument");
        goto done;
    }

    /* Set up security stuff */
    if (JSJ_callbacks && JSJ_callbacks->get_JSPrincipals_from_java_caller)
        principals = JSJ_callbacks->get_JSPrincipals_from_java_caller(jEnv, cx, principalsArray, numPrincipals, securitySupports);
    codebase = principals ? principals->codebase : NULL;

    /* Have the JS engine evaluate the unicode string */
    eval_succeeded = JS_EvaluateUCScriptForPrincipals(cx, js_obj, principals,
                                                      script, length,
                                                      codebase, 0, &js_val);

    if (!eval_succeeded)
        goto done;

    /* Convert result to a subclass of java.lang.Object */
    jsj_ConvertJSValueToJavaObject(cx, jEnv, js_val, jsj_get_jlObject_descriptor(cx, jEnv),
                                   &dummy_cost, &result, &dummy_bool);

done:
    if (principals)
        JSPRINCIPALS_DROP(cx, principals);
    if (!jsj_exit_js(cx, jsj_env, saved_state))
       return NS_ERROR_FAILURE;
    
    *pjobj = result;
    return NS_OK;
}

Here is the call graph for this function:

Get the window object for a plugin instance.

Parameters:
jEnv- JNIEnv on which the call is being made.
obj- A Native JS Object.

Implements nsILiveconnect.

Definition at line 716 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    JSObjectHandle    *handle         = (JSObjectHandle *)obj;
    
    if (!handle)
        return NS_ERROR_NULL_POINTER;
    JS_RemoveRootRT(handle->rt, &handle->js_obj);
    free(handle);
    return NS_OK;
}

Here is the call graph for this function:

NS_METHOD nsCLiveconnect::GetMember ( JNIEnv jEnv,
lcjsobject  obj,
const jchar name,
jsize  length,
void principalsArray[],
int  numPrincipals,
nsISupports *  securitySupports,
jobject pjobj 
) [virtual]

get member of a Native JSObject for a given name.

Parameters:
obj- A Native JS Object.
name- Name of a member.
pjobj- return parameter as a java object representing the member. If it is a basic data type it is converted to a corresponding java type. If it is a NJSObject, then it is wrapped up as java wrapper netscape.javascript.JSObject.
jEnv- JNIEnv on which the call is being made.
obj- A Native JS Object.
name- Name of a member.
pjobj- return parameter as a java object representing the member. If it is a basic data type it is converted to a corresponding java type. If it is a NJSObject, then it is wrapped up as java wrapper netscape.javascript.JSObject.

Implements nsILiveconnect.

Definition at line 244 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = (JSObjectHandle*)obj;
    JSObject          *js_obj         = handle->js_obj;
    JSContext         *cx             = NULL;
    jobject            member         = NULL;
    jsval              js_val;
    int                dummy_cost     = 0;
    JSBool             dummy_bool     = PR_FALSE;
    JSErrorReporter    saved_state    = NULL;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
    if (!jsj_env)
        return NS_ERROR_FAILURE;

    AutoPushJSContext autopush(securitySupports, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        goto done;

    if (!name) {
        JS_ReportError(cx, "illegal null member name");
        member = NULL;
        goto done;
    }
    
    if (!JS_GetUCProperty(cx, js_obj, name, length, &js_val))
        goto done;

    jsj_ConvertJSValueToJavaObject(cx, jEnv, js_val, jsj_get_jlObject_descriptor(cx, jEnv),
                                   &dummy_cost, &member, &dummy_bool);

done:
    if (!jsj_exit_js(cx, jsj_env, saved_state))
        return NS_ERROR_FAILURE;
    
    *pjobj = member;

    return NS_OK;
}

Here is the call graph for this function:

NS_METHOD nsCLiveconnect::GetSlot ( JNIEnv jEnv,
lcjsobject  obj,
jint  slot,
void principalsArray[],
int  numPrincipals,
nsISupports *  securitySupports,
jobject pjobj 
) [virtual]

get member of a Native JSObject for a given index.

Parameters:
obj- A Native JS Object.
index- Index of a member.
pjobj- return parameter as a java object representing the member.
jEnv- JNIEnv on which the call is being made.
obj- A Native JS Object.
index- Index of a member.
pjobj- return parameter as a java object representing the member.

Implements nsILiveconnect.

Definition at line 302 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = (JSObjectHandle*)obj;
    JSObject          *js_obj         = handle->js_obj;
    JSContext         *cx             = NULL;
    jobject            member         = NULL;
    jsval              js_val;
    int                dummy_cost     = 0;
    JSBool             dummy_bool     = PR_FALSE;
    JSErrorReporter    saved_state    = NULL;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
    if (!jsj_env)
       return NS_ERROR_FAILURE;

    AutoPushJSContext autopush(securitySupports, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        goto done;
    
    // =-= sudu: check to see if slot can be passed in as is.
    //           Should it be converted to a jsint?
    if (!JS_GetElement(cx, js_obj, slot, &js_val))
        goto done;
    if (!jsj_ConvertJSValueToJavaObject(cx, jEnv, js_val, jsj_get_jlObject_descriptor(cx, jEnv),
                                        &dummy_cost, &member, &dummy_bool))
        goto done;

done:
    if (!jsj_exit_js(cx, jsj_env, saved_state))
       return NS_ERROR_FAILURE;
    
    *pjobj = member;
    return NS_OK;
}

Here is the call graph for this function:

NS_METHOD nsCLiveconnect::GetWindow ( JNIEnv jEnv,
void pJavaObject,
void principalsArray[],
int  numPrincipals,
nsISupports *  securitySupports,
lcjsobject pobj 
) [virtual]

Get the window object for a plugin instance.

Parameters:
pJavaObject- Either a jobject or a pointer to a plugin instance representing the java object.
pjobj- return value. This is a native js object representing the window object of a frame in which a applet/bean resides.
jEnv- JNIEnv on which the call is being made.
pJavaObject- Either a jobject or a pointer to a plugin instance representing the java object.
pjobj- return value. This is a native js object representing the window object of a frame in which a applet/bean resides.

Implements nsILiveconnect.

Definition at line 650 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || JSJ_callbacks == NULL)
    {
       return NS_ERROR_FAILURE;
    }

    // associate this Java client with this LiveConnect connection.
    mJavaClient = pJavaObject;

    char              *err_msg        = NULL;
    JSContext         *cx             = NULL;
    JSObject          *js_obj         = NULL;
    JSErrorReporter    saved_state    = NULL;
    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = NULL;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
    if (!jsj_env)
       return NS_ERROR_FAILURE;

    err_msg = NULL;
    AutoPushJSContext autopush(securitySupports, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        goto done;
    
    js_obj = JSJ_callbacks->map_java_object_to_js_object(jEnv, mJavaClient, &err_msg);
    if (!js_obj) {
        if (err_msg) {
            JS_ReportError(cx, err_msg);
            free(err_msg);
        }
        goto done;
    }
#ifdef PRESERVE_JSOBJECT_IDENTITY
    *pobj = (jint)js_obj;
#else
       /* FIXME:  to handle PRESERVE_JSOBJECT_IDENTITY case, this needs to
    just return a raw JSObject reference. FIXME !!! */
    /* Create a tiny stub object to act as the GC root that points to the
       JSObject from its netscape.javascript.JSObject counterpart. */
    handle = (JSObjectHandle*)JS_malloc(cx, sizeof(JSObjectHandle));
    if (handle != NULL)
    {
      handle->js_obj = js_obj;
      handle->rt = JS_GetRuntime(cx);
    }
    *pobj = (lcjsobject)handle;
    /* FIXME:  what if the window is explicitly disposed of, how do we
       notify Java? */
#endif
done:
    if (!jsj_exit_js(cx, jsj_env, saved_state))
       return NS_ERROR_FAILURE;

    return NS_OK;
}

Here is the call graph for this function:

NS_METHOD nsCLiveconnect::RemoveMember ( JNIEnv jEnv,
lcjsobject  obj,
const jchar name,
jsize  length,
void principalsArray[],
int  numPrincipals,
nsISupports *  securitySupports 
) [virtual]

remove member of a Native JSObject for a given name.

Parameters:
obj- A Native JS Object.
name- Name of a member.
jEnv- JNIEnv on which the call is being made.
obj- A Native JS Object.
name- Name of a member.

Implements nsILiveconnect.

Definition at line 446 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = (JSObjectHandle*)obj;
    JSObject          *js_obj         = handle->js_obj;
    JSContext         *cx             = NULL;
    jsval              js_val;
    JSErrorReporter    saved_state    = NULL;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
    if (!jsj_env)
        return NS_ERROR_FAILURE;

    AutoPushJSContext autopush(securitySupports, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        goto done;
    
    if (!name) {
        JS_ReportError(cx, "illegal null member name");
        goto done;
    }

    JS_DeleteUCProperty2(cx, js_obj, name, length, &js_val);

done:
    jsj_exit_js(cx, jsj_env, saved_state);
    return NS_OK;
}

Here is the call graph for this function:

NS_METHOD nsCLiveconnect::SetMember ( JNIEnv jEnv,
lcjsobject  obj,
const jchar name,
jsize  length,
jobject  java_obj,
void principalsArray[],
int  numPrincipals,
nsISupports *  securitySupports 
) [virtual]

set member of a Native JSObject for a given name.

Parameters:
obj- A Native JS Object.
name- Name of a member.
jobj- Value to set. If this is a basic data type, it is converted using standard JNI calls but if it is a wrapper to a JSObject then a internal mapping is consulted to convert to a NJSObject.
jEnv- JNIEnv on which the call is being made.
obj- A Native JS Object.
name- Name of a member.
jobj- Value to set. If this is a basic data type, it is converted using standard JNI calls but if it is a wrapper to a JSObject then a internal mapping is consulted to convert to a NJSObject.

Implements nsILiveconnect.

Definition at line 355 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = (JSObjectHandle*)obj;
    JSObject          *js_obj         = handle->js_obj;
    JSContext         *cx             = NULL;
    jsval              js_val;
    JSErrorReporter    saved_state    = NULL;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
    if (!jsj_env)
        return NS_ERROR_FAILURE;

    AutoPushJSContext autopush(securitySupports, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        goto done;
    
    if (!name) {
        JS_ReportError(cx, "illegal null member name");
        goto done;
    }

    if (!jsj_ConvertJavaObjectToJSValue(cx, jEnv, java_obj, &js_val))
        goto done;

    JS_SetUCProperty(cx, js_obj, name, length, &js_val);

done:
    jsj_exit_js(cx, jsj_env, saved_state);
   return NS_OK;
}

Here is the call graph for this function:

NS_METHOD nsCLiveconnect::SetSlot ( JNIEnv jEnv,
lcjsobject  obj,
jint  slot,
jobject  java_obj,
void principalsArray[],
int  numPrincipals,
nsISupports *  securitySupports 
) [virtual]

set member of a Native JSObject for a given index.

Parameters:
obj- A Native JS Object.
index- Index of a member.
jobj- Value to set. If this is a basic data type, it is converted using standard JNI calls but if it is a wrapper to a JSObject then a internal mapping is consulted to convert to a NJSObject.
jEnv- JNIEnv on which the call is being made.
obj- A Native JS Object.
index- Index of a member.
jobj- Value to set. If this is a basic data type, it is converted using standard JNI calls but if it is a wrapper to a JSObject then a internal mapping is consulted to convert to a NJSObject.

Implements nsILiveconnect.

Definition at line 405 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = (JSObjectHandle*)obj;
    JSObject          *js_obj         = handle->js_obj;
    JSContext         *cx             = NULL;
    jsval              js_val;
    JSErrorReporter    saved_state    = NULL;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, principalsArray, numPrincipals, securitySupports);
    if (!jsj_env)
        return NS_ERROR_FAILURE;

    AutoPushJSContext autopush(securitySupports, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        goto done;
    
    if (!jsj_ConvertJavaObjectToJSValue(cx, jEnv, java_obj, &js_val))
        goto done;
    JS_SetElement(cx, js_obj, slot, &js_val);

done:
    jsj_exit_js(cx, jsj_env, saved_state);
    return NS_OK;
}

Here is the call graph for this function:

NS_METHOD nsCLiveconnect::ToString ( JNIEnv jEnv,
lcjsobject  obj,
jstring pjstring 
) [virtual]

Get the window object for a plugin instance.

Parameters:
jEnv- JNIEnv on which the call is being made.
obj- A Native JS Object.
jstring- Return value as a jstring representing a JS object.

Implements nsILiveconnect.

Definition at line 734 of file nsCLiveconnect.cpp.

{
    if(jEnv == NULL || obj == 0)
    {
       return NS_ERROR_FAILURE;
    }

    JSJavaThreadState *jsj_env        = NULL;
    JSObjectHandle    *handle         = (JSObjectHandle*)obj;
    JSObject          *js_obj         = handle->js_obj;
    JSContext         *cx             = NULL;
    JSErrorReporter    saved_state    = NULL;
    jstring            result         = NULL;
    JSString          *jsstr          = NULL;

    jsj_env = jsj_enter_js(jEnv, mJavaClient, NULL, &cx, NULL, &saved_state, NULL, 0, NULL );
    if (!jsj_env)
       return NS_ERROR_FAILURE;

    result = NULL;
    AutoPushJSContext autopush(nsnull, cx);
    if (NS_FAILED(autopush.ResultOfPush()))
        return NS_ERROR_FAILURE;

    jsstr = JS_ValueToString(cx, OBJECT_TO_JSVAL(js_obj));
    if (jsstr)
        result = jsj_ConvertJSStringToJavaString(cx, jEnv, jsstr);
    if (!result)
        result = jEnv->NewStringUTF("*JavaObject*");

    if (!jsj_exit_js(cx, jsj_env, saved_state))
        return NS_ERROR_FAILURE;
    *pjstring = result;     
    return NS_OK;
}

Here is the call graph for this function:


Member Data Documentation

Definition at line 194 of file nsCLiveconnect.h.


The documentation for this class was generated from the following files: