~ubuntu-branches/ubuntu/natty/icedtea-web/natty-security

« back to all changes in this revision

Viewing changes to plugin/icedteanp/IcedTeaPluginRequestProcessor.cc

  • Committer: Bazaar Package Importer
  • Author(s): Matthias Klose
  • Date: 2011-02-24 12:57:25 UTC
  • mto: (18.1.1 experimental) (19.1.1 natty-security)
  • mto: This revision was merged to the branch mainline in revision 15.
  • Revision ID: james.westby@ubuntu.com-20110224125725-8zq5v35r6o27w8ku
Tags: upstream-1.1~20110320
ImportĀ upstreamĀ versionĀ 1.1~20110320

Show diffs side-by-side

added added

removed removed

Lines of Context:
66
66
 
67
67
    pthread_mutex_init(&message_queue_mutex, NULL);
68
68
    pthread_mutex_init(&syn_write_mutex, NULL);
69
 
    pthread_mutex_init(&tc_mutex, NULL);
70
69
 
71
70
    pthread_cond_init(&cond_message_available, NULL);
72
71
}
86
85
 
87
86
    pthread_mutex_destroy(&message_queue_mutex);
88
87
    pthread_mutex_destroy(&syn_write_mutex);
89
 
    pthread_mutex_destroy(&tc_mutex);
90
88
 
91
89
    pthread_cond_destroy(&cond_message_available);
92
90
}
223
221
    window_ptr = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(message_parts->at(5));
224
222
    instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(window_ptr);
225
223
 
 
224
    // If instance is invalid, do not proceed further
 
225
    if (!instance)
 
226
        return;
 
227
 
226
228
    java_result = request_processor.getString(*(message_parts->at(6)));
227
229
    CHECK_JAVA_RESULT(java_result);
228
230
    script.append(*(java_result->return_string));
282
284
    std::string response = std::string();
283
285
    JavaRequestProcessor java_request = JavaRequestProcessor();
284
286
    JavaResultData* java_result;
 
287
    NPVariant* result_variant;
 
288
    std::string result_variant_jniid = std::string();
 
289
    NPVariant* args_array;
 
290
    AsyncCallThreadData thread_data = AsyncCallThreadData();
285
291
 
286
292
    reference = atoi(message_parts->at(3)->c_str());
287
293
 
292
298
    // instance
293
299
    instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(window_ptr);
294
300
 
 
301
    // If instance is invalid, do not proceed further
 
302
    if (!instance)
 
303
        goto cleanup;
 
304
 
295
305
    // function name
296
306
    java_result = java_request.getString(*(message_parts->at(6)));
297
307
    CHECK_JAVA_RESULT(java_result);
316
326
    }
317
327
 
318
328
    arg_count = args.size();
319
 
    NPVariant *args_array = (NPVariant*) malloc(sizeof(NPVariant)*args.size());
 
329
    args_array = (NPVariant*) malloc(sizeof(NPVariant)*args.size());
320
330
    for (int i=0; i < args.size(); i++)
321
331
        args_array[i] = args[i];
322
332
 
323
 
    AsyncCallThreadData thread_data = AsyncCallThreadData();
324
333
    thread_data.result_ready = false;
325
334
    thread_data.parameters = std::vector<void*>();
326
335
    thread_data.result = std::string();
346
355
    }
347
356
#endif
348
357
 
349
 
    NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result);
350
 
    std::string result_variant_jniid = std::string();
 
358
    result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result);
351
359
 
352
360
    if (result_variant)
353
361
    {
392
400
    thread_data.result = std::string();
393
401
 
394
402
    NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(variant);
 
403
 
 
404
    // If instance is invalid, do not proceed further
 
405
    if (!instance)
 
406
        return;
 
407
 
395
408
    thread_data.parameters.push_back(instance);
396
409
    thread_data.parameters.push_back(variant);
397
410
 
415
428
    response += thread_data.result;
416
429
 
417
430
    plugin_to_java_bus->post(response.c_str());
418
 
 
419
 
    cleanup:
420
 
 
421
 
    pthread_mutex_lock(&tc_mutex);
422
 
    thread_count--;
423
 
    pthread_mutex_unlock(&tc_mutex);
424
431
}
425
432
 
426
433
/**
463
470
 
464
471
    instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(member);
465
472
 
 
473
    // If instance is invalid, do not proceed further
 
474
    if (!instance)
 
475
        return;
 
476
 
466
477
    if (*(message_parts->at(4)) == "SetSlot")
467
478
    {
468
479
        property_identifier = browser_functions.getintidentifier(atoi(message_parts->at(6)->c_str()));
508
519
    IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &response);
509
520
    response.append(" JavaScriptSetMember ");
510
521
    plugin_to_java_bus->post(response.c_str());
511
 
 
512
 
    cleanup:
513
 
 
514
 
    // property_name, type and value are deleted by _setMember
515
 
    pthread_mutex_lock(&tc_mutex);
516
 
    thread_count--;
517
 
    pthread_mutex_unlock(&tc_mutex);
518
522
}
519
523
 
520
524
/**
584
588
    thread_data.result = std::string();
585
589
 
586
590
    NPP instance = IcedTeaPluginUtilities::getInstanceFromMemberPtr(parent_ptr);
 
591
 
 
592
    // If instance is invalid, do not proceed further
 
593
    if (!instance)
 
594
        return;
 
595
 
587
596
    thread_data.parameters.push_back(instance);
588
597
    thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*parent_ptr));
589
598
    thread_data.parameters.push_back(&member_identifier);
660
669
    }
661
670
    response.append(java_result->return_string->c_str());
662
671
    plugin_to_java_bus->post(response.c_str());
663
 
 
664
 
 
665
 
    // Now be a good citizen and help keep the heap free of garbage
666
 
    cleanup:
667
 
 
668
 
    pthread_mutex_lock(&tc_mutex);
669
 
    thread_count--;
670
 
    pthread_mutex_unlock(&tc_mutex);
671
672
}
672
673
 
673
674
/**