diff options
Diffstat (limited to 'browser/base/content/test/general/browser_bug595507.js')
-rw-r--r-- | browser/base/content/test/general/browser_bug595507.js | 36 |
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(); +}); + |