244
244
NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result);
245
245
std::string result_variant_jniid = std::string();
246
createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid);
248
createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid);
251
result_variant_jniid = "0";
248
254
IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &response);
249
255
response += " JavaScriptEval ";
477
483
* This is a static function, called in another thread. Since certain data
478
484
* can only be requested from the main thread in Mozilla, this function
479
485
* does whatever it can seperately, and then makes an internal request that
480
* causes _sendMember to do the rest of the work.
486
* causes _getMember to do the rest of the work.
482
488
* @param message_parts The request message
490
496
JavaRequestProcessor java_request = JavaRequestProcessor();
491
497
JavaResultData* java_result;
492
498
NPVariant* parent_ptr;
499
NPVariant* member_ptr;
495
502
std::string member_id = std::string();
496
std::string jsObjectClassID = std::string();
497
std::string jsObjectConstructorID = std::string();
498
503
std::string response = std::string();
504
std::string result_id = std::string();
500
506
NPIdentifier member_identifier;
552
558
PLUGIN_DEBUG("Member PTR after internal request: %s\n", thread_data.result.c_str());
554
java_result = java_request.findClass(0, "netscape.javascript.JSObject");
556
// the result we want is in result_string (assuming there was no error)
557
if (java_result->error_occurred)
559
printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg->c_str());
563
jsObjectClassID.append(*(java_result->return_string));
565
args = std::vector<std::string>();
566
std::string longArg = "J";
567
args.push_back(longArg);
569
java_result = java_request.getMethodID(jsObjectClassID,
570
browser_functions.getstringidentifier("<init>"),
573
// the result we want is in result_string (assuming there was no error)
574
if (java_result->error_occurred)
576
printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg->c_str());
580
jsObjectConstructorID.append(*(java_result->return_string));
582
// We have the method id. Now create a new object.
585
args.push_back(thread_data.result);
586
java_result = java_request.newObjectWithConstructor("",
588
jsObjectConstructorID,
591
// the result we want is in result_string (assuming there was no error)
592
if (java_result->error_occurred)
594
printf("Unable to process getMember request. Error occurred: %s\n", java_result->error_msg->c_str());
560
member_ptr = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result);
562
createJavaObjectFromVariant(instance, *member_ptr, &result_id);
599
564
IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &response);
600
if (*(message_parts->at(2)) == "GetSlot")
565
if (*(message_parts->at(4)) == "GetSlot")
567
response.append(" JavaScriptGetSlot ");
602
569
response.append(" JavaScriptGetMember ");
604
response.append(" JavaScriptGetSlot ");
606
response.append(java_result->return_string->c_str());
571
response.append(result_id.c_str());
607
572
plugin_to_java_bus->post(response.c_str());