diff options
Diffstat (limited to 'editor/libeditor/tests/test_bug468353.html')
-rw-r--r-- | editor/libeditor/tests/test_bug468353.html | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/editor/libeditor/tests/test_bug468353.html b/editor/libeditor/tests/test_bug468353.html new file mode 100644 index 0000000000..179c41cdc7 --- /dev/null +++ b/editor/libeditor/tests/test_bug468353.html @@ -0,0 +1,117 @@ +<!DOCTYPE HTML> +<html> +<!-- +https://bugzilla.mozilla.org/show_bug.cgi?id=468353 +--> +<head> + <title>Test for Bug 468353</title> + <script type="text/javascript" src="/tests/SimpleTest/SimpleTest.js"></script> + <link rel="stylesheet" type="text/css" href="/tests/SimpleTest/test.css" /> +</head> +<body> +<a target="_blank" href="https://bugzilla.mozilla.org/show_bug.cgi?id=468353">Mozilla Bug 468353</a> +<p id="display"></p> +<div id="content"> + <iframe></iframe> +</div> +<pre id="test"> +<script class="testbody" type="text/javascript"> + +var styleSheets = null; + +function checkStylesheets() { + // Evidently RemoveStyleSheet is the only method in nsIEditorStyleSheets + // that would throw. RemoveOverrideStyleSheet returns NS_OK even if the + // sheet is not there + var removed = 0; + try + { + styleSheets.removeStyleSheet("resource://gre/res/designmode.css"); + removed++; + } + catch (ex) { } + + try { + styleSheets.removeStyleSheet("resource://gre/res/contenteditable.css"); + removed++; + } + catch (ex) { } + + is(removed, 0, "Should have thrown if stylesheet was not there"); +} + +function runTest() { + const Ci = SpecialPowers.Ci; + + /** Found while fixing bug 440614 **/ + var editframe = window.frames[0]; + var editdoc = editframe.document; + var editor = null; + editdoc.write(''); + editdoc.close(); + + editdoc.designMode='on'; + + // Hold the reference to the editor + editor = SpecialPowers.wrap(editframe) + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIEditingSession) + .getEditorForWindow(editframe); + + styleSheets = editor.QueryInterface(Ci.nsIEditorStyleSheets); + + editdoc.designMode='off'; + + checkStylesheets(); + + // Let go + editor = null; + styleSheets = null; + + editdoc.body.contentEditable = true; + + // Hold the reference to the editor + editor = SpecialPowers.wrap(editframe) + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIEditingSession) + .getEditorForWindow(editframe); + + styleSheets = editor.QueryInterface(Ci.nsIEditorStyleSheets); + + editdoc.body.contentEditable = false; + + checkStylesheets(); + + editdoc.designMode = "on"; + editdoc.body.contentEditable = true; + editdoc.designMode = "off"; + + // Hold the reference to the editor + editor = SpecialPowers.wrap(editframe) + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIEditingSession) + .getEditorForWindow(editframe); + + styleSheets = editor.QueryInterface(Ci.nsIEditorStyleSheets); + + editdoc.body.contentEditable = false; + + checkStylesheets(); + + SimpleTest.finish(); +} + +//XXX I don't know if this is necessary, but we're dealing with iframes... +SimpleTest.waitForExplicitFinish(); +addLoadEvent(runTest); + +</script> +</pre> +</body> +</html> |