34 |
exception statement from your version. */ |
exception statement from your version. */ |
35 |
|
|
36 |
|
|
|
#include <cassert> |
|
37 |
#include <glib.h> |
#include <glib.h> |
38 |
|
|
39 |
#include <nsplugindefs.h> |
#include <nsplugindefs.h> |
45 |
#include "GCJPluginInstance.h" |
#include "GCJPluginInstance.h" |
46 |
#include "pluginDebug.h" |
#include "pluginDebug.h" |
47 |
|
|
48 |
NS_IMPL_ISUPPORTS1 (GCJPluginInstance, nsIJVMPluginInstance) |
NS_IMPL_ISUPPORTS2 (GCJPluginInstance, nsIPluginInstance, nsIJVMPluginInstance) |
|
|
|
|
static NS_DEFINE_IID (kIJVMPluginTagInfoIID, NS_IJVMPLUGINTAGINFO_IID); |
|
|
static NS_DEFINE_IID (kIPluginTagInfo2IID, NS_IPLUGINTAGINFO2_IID); |
|
49 |
|
|
50 |
GCJPluginInstance::GCJPluginInstance (GCJPluginFactory* factory, JNIEnv* jniEnv) |
GCJPluginInstance::GCJPluginInstance (GCJPluginFactory* factory, JNIEnv* jniEnv) |
51 |
: m_peer (NULL) |
: m_peer (NULL) |
64 |
PLUGIN_DEBUG ("GCJPluginInstance::Initialize\n"); |
PLUGIN_DEBUG ("GCJPluginInstance::Initialize\n"); |
65 |
|
|
66 |
m_peer = peer; |
m_peer = peer; |
67 |
m_peer->AddRef (); |
NS_ADDREF(m_peer); |
68 |
|
|
69 |
nsresult result; |
nsresult result; |
70 |
nsIJVMPluginTagInfo* pluginTagInfo; |
nsIJVMPluginTagInfo* pluginTagInfo; |
71 |
nsIPluginTagInfo2* pluginTagInfo2; |
nsIPluginTagInfo2* pluginTagInfo2; |
72 |
|
|
73 |
result = peer->QueryInterface (kIJVMPluginTagInfoIID, |
result = CallQueryInterface(peer, &pluginTagInfo); |
74 |
(void**) &pluginTagInfo); |
result = CallQueryInterface(peer, &pluginTagInfo2); |
75 |
result = peer->QueryInterface (kIPluginTagInfo2IID, (void**) &pluginTagInfo2); |
|
|
|
|
76 |
if (NS_SUCCEEDED (result)) |
if (NS_SUCCEEDED (result)) |
77 |
{ |
{ |
78 |
// Extract tag data from web browser. |
// Extract tag data from web browser. |
95 |
PLUGIN_DEBUG ("GCJPluginInstance::GetPeer\n"); |
PLUGIN_DEBUG ("GCJPluginInstance::GetPeer\n"); |
96 |
|
|
97 |
(*result) = m_peer; |
(*result) = m_peer; |
98 |
|
NS_ADDREF(m_peer); |
99 |
return NS_OK; |
return NS_OK; |
100 |
} |
} |
101 |
|
|
137 |
width = window->width; |
width = window->width; |
138 |
height = window->height; |
height = window->height; |
139 |
xid = (int)(window->window); |
xid = (int)(window->window); |
140 |
|
int output_to_gcjappletviewer_fd = 0; |
141 |
|
int input_from_gcjappletviewer_fd = 0; |
142 |
|
|
143 |
// FIXME: select only initialized arguments |
gchar *command_line [3] = { "gcjappletviewer", "--plugin", NULL }; |
|
gchar *cmd_line = g_strdup_printf ("appletviewer" |
|
|
"--code=%s " |
|
|
"--archive=%s " |
|
|
"--width=%d " |
|
|
"--height=%d " |
|
|
"--xid=%d ", |
|
|
code, |
|
|
archive, |
|
|
width, |
|
|
height, |
|
|
xid); |
|
144 |
|
|
145 |
printf ("Running: %s\n", cmd_line); |
printf ("Running: %s\n", command_line); |
146 |
GError *err; |
GError *err = NULL; |
147 |
|
|
148 |
// FIXME: open input and output pipes |
// FIXME: open input and output pipes |
149 |
if (!g_spawn_command_line_async (cmd_line, &err)) |
if (!g_spawn_async_with_pipes (NULL, |
150 |
|
command_line, |
151 |
|
NULL, |
152 |
|
G_SPAWN_SEARCH_PATH, |
153 |
|
NULL, |
154 |
|
NULL, |
155 |
|
NULL, |
156 |
|
&output_to_gcjappletviewer_fd, |
157 |
|
&input_from_gcjappletviewer_fd, |
158 |
|
NULL, |
159 |
|
&err)) |
160 |
|
{ |
161 |
fprintf (stderr, "SetWindow error: %s\n", err->message); |
fprintf (stderr, "SetWindow error: %s\n", err->message); |
162 |
|
return NPERR_GENERIC_ERROR; |
163 |
|
} |
164 |
|
|
165 |
|
GIOChannel* output_to_appletviewer = g_io_channel_unix_new (output_to_gcjappletviewer_fd); |
166 |
|
GIOChannel* input_from_appletviewer = g_io_channel_unix_new (input_from_gcjappletviewer_fd); |
167 |
|
|
168 |
|
g_printerr ("Spawned gcjappletviewer successfully.\n"); |
169 |
|
|
170 |
return NS_OK; |
return NS_OK; |
171 |
} |
} |