--- a/dom/plugins/test/mochitest/Makefile.in
+++ b/dom/plugins/test/mochitest/Makefile.in
@@ -62,16 +62,17 @@ MOCHITEST_FILES = \
test_bug539565-1.html \
test_bug539565-2.html \
test_bug771202.html \
file_bug771202.html \
test_bug777098.html \
test_bug751809.html \
test_bug813906.html \
test_bug784131.html \
+ test_bug854082.html \
test_enumerate.html \
test_npruntime_construct.html \
307-xo-redirect.sjs \
test_redirect_handling.html \
test_zero_opacity.html \
test_NPPVpluginWantsAllNetworkStreams.html \
test_npruntime_npnsetexception.html \
test_NPNVdocumentOrigin.html \
new file mode 100644
--- /dev/null
+++ b/dom/plugins/test/mochitest/test_bug854082.html
@@ -0,0 +1,39 @@
+<!doctype html>
+<html>
+<head>
+ <title>Test for Bug 854082</title>
+ <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+ <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+
+ <meta http-equiv="content-type" content="text/html; charset=utf-8">
+ <base href="chrome://browser/content/">
+</head>
+<body>
+<script type="application/javascript">
+ // Tests that destroying the plugin's frame inside NPP_New does not cause a
+ // crash
+
+ SimpleTest.waitForExplicitFinish();
+
+ // Create an object that will spawn asynchronously
+ var o = document.createElement("object");
+ o.type = "application/x-test";
+
+ // The test plugin sets pluginFoundElement on its element inside NPP_New,
+ // abuse this to run arbitrary script.
+ var setterCalled;
+ o.__defineSetter__("pluginFoundElement", function() {
+ o.style.display = "none";
+ // Access clientTop to force layout flush
+ o.clientTop;
+ setterCalled = true;
+ });
+ document.body.appendChild(o);
+
+ SimpleTest.executeSoon(function() {
+ ok(setterCalled, "Setter called and did not crash");
+ SimpleTest.finish();
+ });
+</script>
+</body>
+</html>