source: trunk/icedtea-web/plugin/icedteanp/IcedTeaNPPlugin.h@ 357

Last change on this file since 357 was 357, checked in by dmik, 13 years ago

icedtea-web: Port plugin to OS/2.

File size: 4.7 KB
Line 
1/* IcedTeaNPPlugin.h
2
3 Copyright (C) 2009, 2010 Red Hat
4
5This file is part of IcedTea.
6
7IcedTea is free software; you can redistribute it and/or modify
8it under the terms of the GNU General Public License as published by
9the Free Software Foundation; either version 2, or (at your option)
10any later version.
11
12IcedTea is distributed in the hope that it will be useful, but
13WITHOUT ANY WARRANTY; without even the implied warranty of
14MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15General Public License for more details.
16
17You should have received a copy of the GNU General Public License
18along with IcedTea; see the file COPYING. If not, write to the
19Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
2002110-1301 USA.
21
22Linking this library statically or dynamically with other modules is
23making a combined work based on this library. Thus, the terms and
24conditions of the GNU General Public License cover the whole
25combination.
26
27As a special exception, the copyright holders of this library give you
28permission to link this library with independent modules to produce an
29executable, regardless of the license terms of these independent
30modules, and to copy and distribute the resulting executable under
31terms of your choice, provided that you also meet, for each linked
32independent module, the terms and conditions of the license of that
33module. An independent module is a module which is not derived from
34or based on this library. If you modify this library, you may extend
35this exception to your version of the library, but you are not
36obligated to do so. If you do not wish to do so, delete this
37exception statement from your version. */
38
39#ifndef __ICEDTEANPPLUGIN_H__
40#define __ICEDTEANPPLUGIN_H__
41
42#if MOZILLA_VERSION_COLLAPSED < 1090100
43#include <nsThreadUtils.h>
44#else
45#include <npapi.h>
46#include <npruntime.h>
47#include <npfunctions.h>
48#endif
49
50// GLib includes.
51#include <glib.h>
52#include <glib/gstdio.h>
53
54#ifndef __OS2__
55// GTK includes.
56#include <gtk/gtk.h>
57#endif
58
59#include "IcedTeaPluginUtils.h"
60#include "IcedTeaPluginRequestProcessor.h"
61
62// ITNPPluginData stores all the data associated with a single plugin
63// instance. A separate plugin instance is created for each <APPLET>
64// tag. For now, each plugin instance spawns its own applet viewer
65// process but this may need to change if we find pages containing
66// multiple applets that expect to be running in the same VM.
67struct ITNPPluginData
68{
69 // A unique identifier for this plugin window.
70 gchar* instance_id;
71 // The applet tag sent to Java side
72 gchar* applet_tag;
73 // Mutex to protect appletviewer_alive.
74 GMutex* appletviewer_mutex;
75 // Back-pointer to the plugin instance to which this data belongs.
76 // This should not be freed but instead simply set to NULL.
77 NPP owner;
78 // The address of the plugin window. This should not be freed but
79 // instead simply set to NULL.
80 gpointer window_handle;
81 // The last plugin window width sent to us by the browser.
82 guint32 window_width;
83 // The last plugin window height sent to us by the browser.
84 guint32 window_height;
85 // The source location for this instance
86 gchar* source;
87 // If this is an actual applet instance, or a dummy instance for static calls
88 bool is_applet_instance;
89};
90
91// Queue processing threads
92static pthread_t plugin_request_processor_thread1;
93static pthread_t plugin_request_processor_thread2;
94static pthread_t plugin_request_processor_thread3;
95
96// Condition on which the queue processor waits
97extern pthread_cond_t cond_message_available;
98
99// ID of plug-in thread
100extern pthread_t itnp_plugin_thread_id;
101
102/* Mutex around plugin async call queue ops */
103extern pthread_mutex_t pluginAsyncCallMutex;
104
105// debug switch
106extern int plugin_debug;
107
108// Browser function table.
109extern NPNetscapeFuncs browser_functions;
110
111// messages to the java side
112extern MessageBus* plugin_to_java_bus;
113
114// messages from the java side
115extern MessageBus* java_to_plugin_bus;
116
117// internal messages (e.g ones that need processing in main thread)
118//extern MessageBus* internal_bus;
119
120// subscribes to plugin_to_java_bus and sends messages over the link
121extern JavaMessageSender java_request_processor;
122
123// processes requests made to the plugin
124extern PluginRequestProcessor plugin_request_processor;
125
126/* Given an instance pointer, return its id */
127void get_instance_from_id(int id, NPP& instance);
128
129/* Given an instance id, return its pointer */
130int get_id_from_instance(NPP instance);
131
132/* Sends a message to the appletviewer */
133void plugin_send_message_to_appletviewer(gchar const* message);
134
135/* Returns an appropriate (package/object) scriptable npobject */
136NPObject* get_scriptable_object(NPP instance);
137
138/* Creates a new scriptable plugin object and returns it */
139NPObject* allocate_scriptable_object(NPP npp, NPClass *aClass);
140
141#endif /* __ICEDTEANPPLUGIN_H__ */
Note: See TracBrowser for help on using the repository browser.