Bug 570192 - Make sure that XUL textbox's constructor does not fail if we don't have a frame available; r,a=gavin
authorEhsan Akhgari <ehsan@mozilla.com>
Fri, 04 Jun 2010 14:58:02 -0400
changeset 51901 01cbf9182f77e2b5e470743441c47c6c14bdb938
parent 51900 886665dec3cb627b8e8c3bd1efafdab32eb573be
child 51902 b73bb8fcce79b39da8ec7f1b3315828817885ea0
push idunknown
push userunknown
push dateunknown
reviewersgavin
bugs570192
milestone2.0b6pre
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 570192 - Make sure that XUL textbox's constructor does not fail if we don't have a frame available; r,a=gavin
toolkit/content/tests/chrome/Makefile.in
toolkit/content/tests/chrome/test_bug570192.xul
toolkit/content/widgets/textbox.xml
--- a/toolkit/content/tests/chrome/Makefile.in
+++ b/toolkit/content/tests/chrome/Makefile.in
@@ -64,16 +64,17 @@ include $(topsrcdir)/config/rules.mk
 		bug429723_window.xul \
 		test_bug429723.xul \
 		test_bug437844.xul \
 		bug451286_window.xul \
 		test_bug451286.xul \
 		bug451540_window.xul \
 		test_bug451540.xul \
 		test_bug471776.xul \
+		test_bug570192.xul \
 		test_popup_preventdefault_chrome.xul \
 		window_popup_preventdefault_chrome.xul \
 		test_largemenu.xul \
 		window_largemenu.xul \
 		test_popup_anchor.xul \
 		window_popup_anchor.xul \
 		frame_popup_anchor.xul \
 		test_preferences.xul \
new file mode 100644
--- /dev/null
+++ b/toolkit/content/tests/chrome/test_bug570192.xul
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
+<?xml-stylesheet 
+  href="chrome://mochikit/content/tests/SimpleTest/test.css"
+  type="text/css"?>
+<!--
+https://bugzilla.mozilla.org/show_bug.cgi?id=570192
+-->
+<window title="Mozilla Bug 558406"
+  xmlns:html="http://www.w3.org/1999/xhtml"
+  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
+
+  <title>Test for Bug 570192</title>
+  <script type="application/javascript" 
+          src="chrome://mochikit/content/MochiKit/packed.js"></script>
+  <script type="application/javascript" 
+          src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js"></script>
+  <script type="application/javascript"
+          src="chrome://mochikit/content/tests/SimpleTest/WindowSnapshot.js"></script>
+  <script type="application/javascript"
+          src="RegisterUnregisterChrome.js"></script>
+
+  <body  xmlns="http://www.w3.org/1999/xhtml">
+    <a target="_blank" 
+       href="https://bugzilla.mozilla.org/show_bug.cgi?id=570192">
+      Mozilla Bug 570192
+    </a>
+
+    <p id="display">
+    </p>
+    <div id="content" style="display: none">
+    </div>
+    <pre id="test">
+    </pre>
+  </body>
+
+  <script type="application/javascript">
+    <![CDATA[
+
+    addLoadEvent(function() {
+      try {
+        var content = document.getElementById("content");
+        content.innerHTML = '<textbox newlines="pasteintact" ' +
+          'xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"/>';
+        var textbox = content.firstChild;
+        ok(textbox, "created the textbox");
+        ok(!textbox.editor, "do we have an editor?");
+      } catch (e) {
+        ok(false, "Got an exception: " + e);
+      }
+      SimpleTest.finish();
+    });
+    SimpleTest.waitForExplicitFinish();
+
+   ]]>
+  </script>
+</window>
--- a/toolkit/content/widgets/textbox.xml
+++ b/toolkit/content/widgets/textbox.xml
@@ -127,17 +127,17 @@
         <body>
           this.inputField.setSelectionRange( aSelectionStart, aSelectionEnd );
         </body>
       </method>
 
       <method name="_setNewlineHandling">
         <body><![CDATA[
           var str = this.getAttribute("newlines");
-          if (str) {
+          if (str && this.editor) {
             const nsIPlaintextEditor = Components.interfaces.nsIPlaintextEditor;
             for (var x in nsIPlaintextEditor) {
               if (/^eNewlines/.test(x)) {
                 if (str == RegExp.rightContext.toLowerCase()) {
                   this.editor.QueryInterface(nsIPlaintextEditor)
                       .newlineHandling = nsIPlaintextEditor[x];
                   break;
                 }