diff options
Diffstat (limited to 'dom/plugins/test/mochitest/test_propertyAndMethod.html')
-rw-r--r-- | dom/plugins/test/mochitest/test_propertyAndMethod.html | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/dom/plugins/test/mochitest/test_propertyAndMethod.html b/dom/plugins/test/mochitest/test_propertyAndMethod.html new file mode 100644 index 000000000..6e638e419 --- /dev/null +++ b/dom/plugins/test/mochitest/test_propertyAndMethod.html @@ -0,0 +1,51 @@ +<html> + <head> + <title>NPObject with property and method with the same name</title> + + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <script type="text/javascript" src="plugin-utils.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/> + </head> + + <body onload="run()"> + + <script class="testbody" type="application/javascript"> + if (typeof Object.getPrototypeOf !== "function") { + if (typeof "test".__proto__ === "object") { + Object.getPrototypeOf = function(object) { + return object.__proto__; + }; + } else { + Object.getPrototypeOf = function(object) { + // May break if the constructor has been tampered with + return object.constructor.prototype; + }; + } + } + + SimpleTest.waitForExplicitFinish(); + setTestPluginEnabledState(SpecialPowers.Ci.nsIPluginTag.STATE_ENABLED); + + function run() { + var plugin = document.getElementById("plugin"); + var pluginProto = Object.getPrototypeOf(plugin); + + delete pluginProto.propertyAndMethod; + ok(isNaN(plugin.propertyAndMethod + 0), "Shouldn't be set yet!"); + + plugin.propertyAndMethod = 5; + is(+plugin.propertyAndMethod, 5, "Should be set to 5!"); + + delete pluginProto.propertyAndMethod; + ok(isNaN(plugin.propertyAndMethod + 0), "Shouldn't be set any more!"); + + var res = plugin.propertyAndMethod(); + is(res, 5, "Method invocation should return 5!"); + + SimpleTest.finish(); + } + </script> + + <embed id="plugin" type="application/x-test" wmode="window"></embed> + </body> +</html> |