diff options
Diffstat (limited to 'toolkit/content/tests/chrome/bug304188_window.xul')
-rw-r--r-- | toolkit/content/tests/chrome/bug304188_window.xul | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/toolkit/content/tests/chrome/bug304188_window.xul b/toolkit/content/tests/chrome/bug304188_window.xul new file mode 100644 index 0000000000..931fd5c735 --- /dev/null +++ b/toolkit/content/tests/chrome/bug304188_window.xul @@ -0,0 +1,94 @@ +<?xml version="1.0"?> + +<!-- This Source Code Form is subject to the terms of the Mozilla Public + - License, v. 2.0. If a copy of the MPL was not distributed with this + - file, You can obtain one at http://mozilla.org/MPL/2.0/. --> + +<?xml-stylesheet href="chrome://global/skin" type="text/css"?> +<?xml-stylesheet + href="chrome://mochikit/content/tests/SimpleTest/test.css" + type="text/css"?> + +<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" + width="600" + height="600" + onload="onLoad();" + title="FindbarTest for bug 304188 - +find-menu appears in editor element which has had makeEditable() called but designMode not set"> + + <script type="application/javascript"><![CDATA[ + const {interfaces: Ci, classes: Cc, results: Cr, utils: Cu} = Components; + Cu.import("resource://gre/modules/Task.jsm"); + Cu.import("resource://testing-common/ContentTask.jsm"); + ContentTask.setTestScope(window.opener.wrappedJSObject); + + var gFindBar = null; + var gBrowser; + + var imports = ["SimpleTest", "ok", "info"]; + for (var name of imports) { + window[name] = window.opener.wrappedJSObject[name]; + } + + function onLoad() { + Task.spawn(function* () { + gFindBar = document.getElementById("FindToolbar"); + for (let browserId of ["content", "content-remote"]) { + yield startTestWithBrowser(browserId); + } + }).then(() => { + window.close(); + SimpleTest.finish(); + }); + } + + function* startTestWithBrowser(browserId) { + info("Starting test with browser '" + browserId + "'"); + gBrowser = document.getElementById(browserId); + gFindBar.browser = gBrowser; + let promise = ContentTask.spawn(gBrowser, null, function* () { + return new Promise(resolve => { + addEventListener("DOMContentLoaded", function listener() { + removeEventListener("DOMContentLoaded", listener); + resolve(); + }); + }); + }); + gBrowser.loadURI("data:text/html;charset=utf-8,some%20random%20text"); + yield promise; + yield onDocumentLoaded(); + } + + function* onDocumentLoaded() { + yield ContentTask.spawn(gBrowser, null, function* () { + var edsession = content.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIEditingSession); + edsession.makeWindowEditable(content, "html", false, true, false); + content.focus(); + }); + + yield enterStringIntoEditor("'"); + yield enterStringIntoEditor("/"); + + ok(gFindBar.hidden, + "Findfield should have stayed hidden after entering editor test"); + } + + function* enterStringIntoEditor(aString) { + for (let i = 0; i < aString.length; i++) { + yield ContentTask.spawn(gBrowser, { charCode: aString.charCodeAt(i) }, function* (args) { + let event = content.document.createEvent("KeyboardEvent"); + event.initKeyEvent("keypress", true, true, null, false, false, + false, false, 0, args.charCode); + content.document.body.dispatchEvent(event); + }); + } + } + ]]></script> + + <browser id="content" flex="1" src="about:blank" type="content-primary"/> + <browser id="content-remote" remote="true" flex="1" src="about:blank" type="content-primary"/> + <findbar id="FindToolbar" browserid="content"/> +</window> |