Bug 765780 part 1. Stop disallowing script and plug-ins in designMode documents. r=ehsan
authorBoris Zbarsky <bzbarsky@mit.edu>
Mon, 08 Apr 2013 17:04:19 -0400
changeset 134823 fc80e729a417fbfb1957ea6ed979232dccf6ac7f
parent 134822 ad371c559524ab9edbcb78660b932b9652d162c6
child 134824 fbc229932c909586b082f6edb6c59ca812d7f84f
push idunknown
push userunknown
push dateunknown
reviewersehsan
bugs765780
milestone23.0a1
Bug 765780 part 1. Stop disallowing script and plug-ins in designMode documents. r=ehsan
content/html/document/src/nsHTMLDocument.cpp
content/html/document/test/Makefile.in
content/html/document/test/test_bug765780.html
--- a/content/html/document/src/nsHTMLDocument.cpp
+++ b/content/html/document/src/nsHTMLDocument.cpp
@@ -2956,30 +2956,23 @@ nsHTMLDocument::EditingStateChanged()
       NS_ENSURE_SUCCESS(rv, rv);
 
       rv = LoadChromeSheetSync(uri, true, getter_AddRefs(sheet));
       NS_ENSURE_TRUE(sheet, rv);
 
       result = agentSheets.AppendObject(sheet);
       NS_ENSURE_TRUE(result, NS_ERROR_OUT_OF_MEMORY);
 
-      // Disable scripting and plugins.
-      rv = editSession->DisableJSAndPlugins(window);
-      NS_ENSURE_SUCCESS(rv, rv);
-
       updateState = true;
       spellRecheckAll = oldState == eContentEditable;
     }
     else if (oldState == eDesignMode) {
       // designMode is being turned off (contentEditable is still on).
       RemoveFromAgentSheets(agentSheets, NS_LITERAL_STRING("resource://gre/res/designmode.css"));
 
-      rv = editSession->RestoreJSAndPlugins(window);
-      NS_ENSURE_SUCCESS(rv, rv);
-
       updateState = true;
     }
 
     rv = presShell->SetAgentStyleSheets(agentSheets);
     NS_ENSURE_SUCCESS(rv, rv);
 
     presShell->ReconstructStyleData();
   }
--- a/content/html/document/test/Makefile.in
+++ b/content/html/document/test/Makefile.in
@@ -69,16 +69,17 @@ MOCHITEST_FILES = 	test_bug1682.html \
 		bug499092.html \
 		test_bug512367.html \
 		test_bug571981.html \
 		test_bug677495.html \
 		test_bug677495-1.html \
 		test_bug741266.html \
 		test_non-ascii-cookie.html \
 		test_non-ascii-cookie.html^headers^ \
+		test_bug765780.html \
 		$(NULL)
 
 MOCHITEST_BROWSER_FILES = \
 		browser_bug592641.js \
 		bug592641_img.jpg \
 		$(NULL)
 
 include $(topsrcdir)/config/rules.mk
new file mode 100644
--- /dev/null
+++ b/content/html/document/test/test_bug765780.html
@@ -0,0 +1,46 @@
+<!DOCTYPE HTML>
+<html>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=765780
+-->
+<head>
+  <meta charset="utf-8">
+  <title>Test for Bug 765780</title>
+  <script type="application/javascript" src="/tests/SimpleTest/SimpleTest.js"></script>
+  <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css"/>
+  <script type="application/javascript">
+    /** Test for Bug 765780 **/
+    SimpleTest.waitForExplicitFinish();
+    window.onload = function() {
+      var f = $("f");
+      var doc = f.contentDocument;
+      doc.designMode = "on";
+      var s = doc.createElement("script");
+      s.textContent = "parent.called = true;";
+
+      window.called = false;
+      doc.body.appendChild(s);
+      ok(called, "Script in designMode iframe should have run");
+
+      doc = doc.querySelector("iframe").contentDocument;
+      var s = doc.createElement("script");
+      s.textContent = "parent.parent.called = true;";
+
+      window.called = false;
+      doc.body.appendChild(s);
+      ok(called, "Script in designMode iframe's child should have run");
+
+      SimpleTest.finish();
+    }
+  </script>
+</head>
+<body>
+<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=765780">Mozilla Bug 765780</a>
+<!-- Important: iframe needs to not be display: none -->
+<p id="display"><iframe id="f" src="data:text/html,<iframe></iframe>"></iframe> </p>
+<div id="content" style="display: none">
+</div>
+<pre id="test">
+</pre>
+</body>
+</html>