~ubuntu-branches/ubuntu/precise/icedtea-web/precise

« back to all changes in this revision

Viewing changes to debian/patches/PR820.patch

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2012-03-03 12:35:35 UTC
  • mfrom: (1.1.18)
  • Revision ID: package-import@ubuntu.com-20120303123535-k0jedudh4q66tqkq
Tags: 1.2~pre3-1ubuntu1
Regenerate the control file.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
diff -r 360bd0a75304 plugin/icedteanp/IcedTeaJavaRequestProcessor.cc
2
 
--- a/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc   Mon Jan 09 18:45:31 2012 -0500
3
 
+++ b/plugin/icedteanp/IcedTeaJavaRequestProcessor.cc   Fri Feb 17 18:24:39 2012 -0500
4
 
@@ -921,6 +921,7 @@
5
 
         {
6
 
             PLUGIN_DEBUG("NPObject is not a Java object\n");
7
 
             NPIdentifier length_id = browser_functions.getstringidentifier("length");
8
 
+            bool isJSObjectArray = false;
9
 
 
10
 
             // FIXME: We currently only handle <= 2 dim arrays. Do we really need more though?
11
 
 
12
 
@@ -936,7 +937,7 @@
13
 
                 std::string length_str = std::string();
14
 
                 IcedTeaPluginUtilities::itoa(NPVARIANT_TO_INT32(length), &length_str);
15
 
 
16
 
-                if (NPVARIANT_TO_INT32(length) > 0)
17
 
+                if (NPVARIANT_TO_INT32(length) >= 0)
18
 
                 {
19
 
                     NPIdentifier id_0 = browser_functions.getintidentifier(0);
20
 
                     NPVariant first_element = NPVariant();
21
 
@@ -956,8 +957,14 @@
22
 
                     {
23
 
                         getArrayTypeForJava(instance, first_element, &java_array_type);
24
 
                     }
25
 
-                } else
26
 
-                    java_array_type.append("jsobject");
27
 
+                }
28
 
+
29
 
+                // For JSObject arrays, we create a regular object (accessible via JSObject.getSlot())
30
 
+                if (NPVARIANT_TO_INT32(length) < 0 || !java_array_type.compare("jsobject"))
31
 
+                {
32
 
+                    isJSObjectArray = true;
33
 
+                    goto createRegularObject;
34
 
+                }
35
 
 
36
 
                 java_result = java_request.newArray(java_array_type, length_str);
37
 
 
38
 
@@ -995,7 +1002,10 @@
39
 
 
40
 
                 // Got here => no errors above. We're good to return!
41
 
                 return;
42
 
-            } else // Else it is not an array
43
 
+            }
44
 
+
45
 
+            createRegularObject:
46
 
+            if (!IcedTeaPluginUtilities::isObjectJSArray(instance, obj) || isJSObjectArray) // Else it is not an array
47
 
             {
48
 
 
49
 
                 NPVariant* variant_copy = new NPVariant();
50
 
diff -r 360bd0a75304 plugin/icedteanp/IcedTeaPluginRequestProcessor.cc
51
 
--- a/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Mon Jan 09 18:45:31 2012 -0500
52
 
+++ b/plugin/icedteanp/IcedTeaPluginRequestProcessor.cc Fri Feb 17 18:24:39 2012 -0500
53
 
@@ -123,6 +123,12 @@
54
 
             // returns immediately, so we do it in the same thread.
55
 
             this->sendWindow(message_parts);
56
 
             return true;
57
 
+        } else if (!command->find("Finalize"))
58
 
+        {
59
 
+            // Object can be finalized from the main thread only. And this
60
 
+               // call returns immediately, so we do it in the same thread.
61
 
+            this->finalize(message_parts);
62
 
+            return true;
63
 
         } else if (!command->find("GetMember") ||
64
 
                    !command->find("SetMember") ||
65
 
                    !command->find("ToString") ||
66
 
@@ -130,7 +136,6 @@
67
 
                    !command->find("GetSlot") ||
68
 
                    !command->find("SetSlot") ||
69
 
                    !command->find("Eval") ||
70
 
-                   !command->find("Finalize") ||
71
 
                    !command->find("LoadURL"))
72
 
         {
73
 
 
74
 
@@ -241,19 +246,9 @@
75
 
 
76
 
     IcedTeaPluginUtilities::callAndWaitForResult(instance, &_eval, &thread_data);
77
 
 
78
 
-    NPVariant* result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result);
79
 
-    std::string result_variant_jniid = std::string();
80
 
-    if (result_variant)
81
 
-    {
82
 
-        createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid);
83
 
-    } else
84
 
-    {
85
 
-        result_variant_jniid = "0";
86
 
-    }
87
 
-
88
 
     IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &response);
89
 
     response += " JavaScriptEval ";
90
 
-    response += result_variant_jniid;
91
 
+    response += thread_data.result;
92
 
 
93
 
     plugin_to_java_bus->post(response.c_str());
94
 
 }
95
 
@@ -336,19 +331,9 @@
96
 
 
97
 
     IcedTeaPluginUtilities::callAndWaitForResult(instance, &_call, &thread_data);
98
 
 
99
 
-    result_variant = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result);
100
 
-
101
 
-    if (result_variant)
102
 
-    {
103
 
-        createJavaObjectFromVariant(instance, *result_variant, &result_variant_jniid);
104
 
-    } else
105
 
-    {
106
 
-        result_variant_jniid = "0";
107
 
-    }
108
 
-
109
 
     IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &response);
110
 
     response += " JavaScriptCall ";
111
 
-    response += result_variant_jniid;
112
 
+    response += thread_data.result;
113
 
 
114
 
     plugin_to_java_bus->post(response.c_str());
115
 
 
116
 
@@ -415,7 +400,8 @@
117
 
 
118
 
     NPP instance;
119
 
     NPVariant* member;
120
 
-    NPIdentifier property_identifier;
121
 
+    std::string property_id = std::string();
122
 
+    bool int_identifier;
123
 
 
124
 
     JavaRequestProcessor java_request = JavaRequestProcessor();
125
 
     JavaResultData* java_result;
126
 
@@ -445,7 +431,8 @@
127
 
 
128
 
     if (*(message_parts->at(4)) == "SetSlot")
129
 
     {
130
 
-        property_identifier = browser_functions.getintidentifier(atoi(message_parts->at(6)->c_str()));
131
 
+       property_id.append(*(message_parts->at(6)));
132
 
+       int_identifier = true;
133
 
     } else
134
 
     {
135
 
         java_result = java_request.getString(propertyNameID);
136
 
@@ -457,7 +444,8 @@
137
 
             //goto cleanup;
138
 
         }
139
 
 
140
 
-        property_identifier = browser_functions.getstringidentifier(java_result->return_string->c_str());
141
 
+        property_id.append(*(java_result->return_string));
142
 
+       int_identifier = false;
143
 
     }
144
 
 
145
 
     AsyncCallThreadData thread_data = AsyncCallThreadData();
146
 
@@ -467,8 +455,9 @@
147
 
 
148
 
     thread_data.parameters.push_back(instance);
149
 
     thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*member));
150
 
-    thread_data.parameters.push_back(&property_identifier);
151
 
+    thread_data.parameters.push_back(&property_id);
152
 
     thread_data.parameters.push_back(&value);
153
 
+    thread_data.parameters.push_back(&int_identifier);
154
 
 
155
 
     IcedTeaPluginUtilities::callAndWaitForResult(instance, &_setMember, &thread_data);
156
 
 
157
 
@@ -508,6 +497,7 @@
158
 
     int method_id;
159
 
     int instance_id;
160
 
     int reference;
161
 
+    bool int_identifier;
162
 
 
163
 
     // debug printout of parent thread data
164
 
     IcedTeaPluginUtilities::printStringPtrVector("PluginRequestProcessor::getMember:", message_parts);
165
 
@@ -522,7 +512,7 @@
166
 
     /** Request data from Java if necessary **/
167
 
     if (*(message_parts->at(4)) == "GetSlot")
168
 
     {
169
 
-        member_identifier = browser_functions.getintidentifier(atoi(member_id.c_str()));
170
 
+       int_identifier=true;
171
 
     } else
172
 
     {
173
 
         // make a new request for getString, to get the name of the identifier
174
 
@@ -535,7 +525,8 @@
175
 
             //goto cleanup;
176
 
         }
177
 
 
178
 
-        member_identifier = browser_functions.getstringidentifier(java_result->return_string->c_str());
179
 
+        member_id.assign(*(java_result->return_string));
180
 
+       int_identifier=false;
181
 
     }
182
 
 
183
 
     AsyncCallThreadData thread_data = AsyncCallThreadData();
184
 
@@ -551,16 +542,11 @@
185
 
 
186
 
     thread_data.parameters.push_back(instance);
187
 
     thread_data.parameters.push_back(NPVARIANT_TO_OBJECT(*parent_ptr));
188
 
-    thread_data.parameters.push_back(&member_identifier);
189
 
+    thread_data.parameters.push_back(&member_id);
190
 
+    thread_data.parameters.push_back(&int_identifier);
191
 
 
192
 
     IcedTeaPluginUtilities::callAndWaitForResult(instance, &_getMember, &thread_data);
193
 
 
194
 
-    PLUGIN_DEBUG("Member PTR after internal request: %s\n", thread_data.result.c_str());
195
 
-
196
 
-    member_ptr = (NPVariant*) IcedTeaPluginUtilities::stringToJSID(thread_data.result);
197
 
-
198
 
-    createJavaObjectFromVariant(instance, *member_ptr, &result_id);
199
 
-
200
 
     IcedTeaPluginUtilities::constructMessagePrefix(0, reference, &response);
201
 
     if (*(message_parts->at(4)) == "GetSlot")
202
 
     {
203
 
@@ -568,7 +554,7 @@
204
 
     } else {
205
 
         response.append(" JavaScriptGetMember ");
206
 
     }
207
 
-    response.append(result_id.c_str());
208
 
+    response.append(thread_data.result);
209
 
     plugin_to_java_bus->post(response.c_str());
210
 
 }
211
 
 
212
 
@@ -768,19 +754,26 @@
213
 
     NPP instance;
214
 
     NPVariant value_variant = NPVariant();
215
 
     NPObject* member;
216
 
-    NPIdentifier* property;
217
 
+    NPIdentifier property_identifier;
218
 
+
219
 
 
220
 
     std::vector<void*> parameters = ((AsyncCallThreadData*) data)->parameters;
221
 
     instance = (NPP) parameters.at(0);
222
 
     member = (NPObject*) parameters.at(1);
223
 
-    property = (NPIdentifier*) parameters.at(2);
224
 
+    std::string*  property_id = (std::string*) parameters.at(2);
225
 
     value = (std::string*) parameters.at(3);
226
 
+    bool* int_identifier = (bool*) parameters.at(4);
227
 
 
228
 
-    PLUGIN_DEBUG("Setting %s on instance %p, object %p to value %s\n", browser_functions.utf8fromidentifier(*property), instance, member, value->c_str());
229
 
+    if(*int_identifier==true)
230
 
+       property_identifier = browser_functions.getintidentifier(atoi(property_id->c_str()));
231
 
+    else
232
 
+       property_identifier = browser_functions.getstringidentifier(property_id->c_str());
233
 
+
234
 
+    PLUGIN_DEBUG("Setting %s on instance %p, object %p to value %s\n", browser_functions.utf8fromidentifier(property_identifier), instance, member, value->c_str());
235
 
 
236
 
     IcedTeaPluginUtilities::javaResultToNPVariant(instance, value, &value_variant);
237
 
 
238
 
-    ((AsyncCallThreadData*) data)->call_successful = browser_functions.setproperty(instance, member, *property, &value_variant);
239
 
+    ((AsyncCallThreadData*) data)->call_successful = browser_functions.setproperty(instance, member, property_identifier, &value_variant);
240
 
 
241
 
     ((AsyncCallThreadData*) data)->result_ready = true;
242
 
 }
243
 
@@ -797,23 +790,32 @@
244
 
 
245
 
     instance = (NPP) parameters.at(0);
246
 
     parent_ptr = (NPObject*) parameters.at(1);
247
 
-    NPIdentifier* member_identifier = (NPIdentifier*) parameters.at(2);
248
 
+    std::string*  member_id = (std::string*) parameters.at(2);
249
 
+    NPIdentifier member_identifier;
250
 
+
251
 
+    bool* int_identifier = (bool*) parameters.at(3);
252
 
+
253
 
+    if(*int_identifier==true)
254
 
+       member_identifier = browser_functions.getintidentifier(atoi(member_id->c_str()));
255
 
+    else
256
 
+       member_identifier = browser_functions.getstringidentifier(member_id->c_str());
257
 
 
258
 
     // Get the NPVariant corresponding to this member
259
 
-    PLUGIN_DEBUG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier, browser_functions.utf8fromidentifier(*member_identifier));
260
 
+    PLUGIN_DEBUG("Looking for %p %p %p (%s)\n", instance, parent_ptr, member_identifier, browser_functions.utf8fromidentifier(member_identifier));
261
 
 
262
 
-    if (!browser_functions.hasproperty(instance, parent_ptr, *member_identifier))
263
 
+    if (!browser_functions.hasproperty(instance, parent_ptr, member_identifier))
264
 
     {
265
 
-        printf("%s not found!\n", browser_functions.utf8fromidentifier(*member_identifier));
266
 
+        printf("%s not found!\n", browser_functions.utf8fromidentifier(member_identifier));
267
 
     }
268
 
-    ((AsyncCallThreadData*) data)->call_successful = browser_functions.getproperty(instance, parent_ptr, *member_identifier, member_ptr);
269
 
+    ((AsyncCallThreadData*) data)->call_successful = browser_functions.getproperty(instance, parent_ptr, member_identifier, member_ptr);
270
 
 
271
 
     IcedTeaPluginUtilities::printNPVariant(*member_ptr);
272
 
 
273
 
     if (((AsyncCallThreadData*) data)->call_successful)
274
 
     {
275
 
-        IcedTeaPluginUtilities::JSIDToString(member_ptr, &member_ptr_str);
276
 
+        createJavaObjectFromVariant(instance, *member_ptr, &member_ptr_str);
277
 
         ((AsyncCallThreadData*) data)->result.append(member_ptr_str);
278
 
+
279
 
     }
280
 
     ((AsyncCallThreadData*) data)->result_ready = true;
281
 
 
282
 
@@ -831,8 +833,8 @@
283
 
     std::string* script_str;
284
 
     NPIdentifier script_identifier;
285
 
     NPString script = NPString();
286
 
-    NPVariant* eval_result = new NPVariant();
287
 
-    std::string eval_result_ptr_str = std::string();
288
 
+    NPVariant* eval_variant = new NPVariant();
289
 
+    std::string eval_variant_str = std::string();
290
 
 
291
 
     PLUGIN_DEBUG("_eval called\n");
292
 
 
293
 
@@ -854,13 +856,19 @@
294
 
     PLUGIN_DEBUG("Evaluating: %s\n", script.UTF8Characters);
295
 
 #endif
296
 
 
297
 
-    ((AsyncCallThreadData*) data)->call_successful = browser_functions.evaluate(instance, window_ptr, &script, eval_result);
298
 
-    IcedTeaPluginUtilities::printNPVariant(*eval_result);
299
 
+    ((AsyncCallThreadData*) data)->call_successful = browser_functions.evaluate(instance, window_ptr, &script, eval_variant);
300
 
+    IcedTeaPluginUtilities::printNPVariant(*eval_variant);
301
 
 
302
 
     if (((AsyncCallThreadData*) data)->call_successful)
303
 
     {
304
 
-        IcedTeaPluginUtilities::JSIDToString(eval_result, &eval_result_ptr_str);
305
 
-        ((AsyncCallThreadData*) data)->result.append(eval_result_ptr_str);
306
 
+        if (eval_variant)
307
 
+        {
308
 
+            createJavaObjectFromVariant(instance, *eval_variant, &eval_variant_str);
309
 
+        } else
310
 
+        {
311
 
+            eval_variant_str = "0";
312
 
+        }
313
 
+        ((AsyncCallThreadData*) data)->result.append(eval_variant_str);
314
 
     }
315
 
     ((AsyncCallThreadData*) data)->result_ready = true;
316
 
 
317
 
@@ -904,7 +912,15 @@
318
 
 
319
 
     if (((AsyncCallThreadData*) data)->call_successful)
320
 
     {
321
 
-        IcedTeaPluginUtilities::JSIDToString(call_result, &call_result_ptr_str);
322
 
+
323
 
+        if (call_result)
324
 
+        {
325
 
+            createJavaObjectFromVariant(instance, *call_result, &call_result_ptr_str);
326
 
+        } else
327
 
+        {
328
 
+               call_result_ptr_str = "0";
329
 
+        }
330
 
+
331
 
         ((AsyncCallThreadData*) data)->result.append(call_result_ptr_str);
332
 
     }
333