summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_bug595507.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_bug595507.js')
-rw-r--r--browser/base/content/test/general/browser_bug595507.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_bug595507.js b/browser/base/content/test/general/browser_bug595507.js
new file mode 100644
index 000000000..54ae42346
--- /dev/null
+++ b/browser/base/content/test/general/browser_bug595507.js
@@ -0,0 +1,36 @@
+/**
+ * Make sure that the form validation error message shows even if the form is in an iframe.
+ */
+add_task(function* () {
+ let uri = "<iframe src=\"data:text/html,<iframe name='t'></iframe><form target='t' action='data:text/html,'><input required id='i'><input id='s' type='submit'></form>\"</iframe>";
+
+ var gInvalidFormPopup = document.getElementById('invalid-form-popup');
+ ok(gInvalidFormPopup,
+ "The browser should have a popup to show when a form is invalid");
+
+ let tab = gBrowser.addTab();
+ let browser = gBrowser.getBrowserForTab(tab);
+ gBrowser.selectedTab = tab;
+
+ yield promiseTabLoadEvent(tab, "data:text/html," + escape(uri));
+
+ let popupShownPromise = promiseWaitForEvent(gInvalidFormPopup, "popupshown");
+
+ yield ContentTask.spawn(browser, {}, function* () {
+ content.document.getElementsByTagName('iframe')[0]
+ .contentDocument.getElementById('s').click();
+ });
+ yield popupShownPromise;
+
+ yield ContentTask.spawn(browser, {}, function* () {
+ let childdoc = content.document.getElementsByTagName('iframe')[0].contentDocument;
+ Assert.equal(childdoc.activeElement, childdoc.getElementById("i"),
+ "First invalid element should be focused");
+ });
+
+ ok(gInvalidFormPopup.state == 'showing' || gInvalidFormPopup.state == 'open',
+ "The invalid form popup should be shown");
+
+ gBrowser.removeCurrentTab();
+});
+