| <html> |
| <script> |
| // A simple script object with a member function that takes |
| // an NPObject as an argument |
| FactoryFunction = function() { |
| var TestObject = function() { |
| }; |
| |
| TestObject.prototype.createObject = function(plugin) { |
| var new_object = plugin.testCloneObject(); |
| return new_object; |
| }; |
| |
| var s = new TestObject(); |
| return s; |
| }; |
| |
| function new_script_object() { |
| return FactoryFunction(); |
| } |
| |
| function runTest() |
| { |
| if (window.testRunner) |
| testRunner.dumpAsText(); |
| |
| var plugin = document.getElementById("testPlugin"); |
| var returned_object = plugin.testScriptObjectInvoke("new_script_object", "createObject"); |
| |
| // Make sure the cloned object outlives the plugin. |
| /* FIXME(joshia): Enable this and fix the NPObject cleanup so that |
| it works in single process mode. |
| plugin.parentNode.removeChild(plugin); |
| try { |
| returned_object.property; |
| } catch (e) { |
| if (e instanceof ReferenceError) |
| document.getElementById("result").innerHTML = "SUCCESS"; |
| } |
| */ |
| |
| document.getElementById("result").innerHTML = "SUCCESS"; |
| } |
| </script> |
| |
| <body onload="runTest();"> |
| <pre> |
| Test proper tracking of script NPObjects |
| |
| Test 1: Ensure that script NPObjects are properly tracked (i.e. added to |
| the live objects map in V8). |
| |
| Test 2: Test tracking of derived NPObjects by invoking a method on a |
| script object and passing it an internally created NPObject. |
| |
| <div id="result">FAILURE</div> |
| <embed id="testPlugin" type="application/x-webkit-test-netscape" width="200" height="200"></embed> |
| </body> |
| </html> |