diff options
Diffstat (limited to 'dom/events/test/bug299673.js')
-rw-r--r-- | dom/events/test/bug299673.js | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/dom/events/test/bug299673.js b/dom/events/test/bug299673.js new file mode 100644 index 000000000..f426ffda3 --- /dev/null +++ b/dom/events/test/bug299673.js @@ -0,0 +1,105 @@ +var popup; + +function OpenWindow() +{ +log({},">>> OpenWindow"); + popup = window.open("","Test"); + + var output = "<html>"; + + output+="<body>"; + output+="<form>" + output+="<input id='popupText1' type='text' onfocus='opener.log(event)' onblur='opener.log(event)'>"; + output+="</form>" + output+="</body>"; + output+="</html>"; + + popup.document.open(); + popup.document.write(output); + popup.document.close(); + + popup.document.onclick=function (event) { log(event,"popup-doc") }; + popup.document.onfocus=function (event) { log(event,"popup-doc") }; + popup.document.onblur=function (event) { log(event,"popup-doc") }; + popup.document.onchange=function (event) { log(event,"popup-doc") }; + + var e = popup.document.getElementById('popupText1'); + popup.focus(); + e.focus(); + is(popup.document.activeElement, e, "input element in popup should be focused"); +log({},"<<< OpenWindow"); +} + +var result; + +function log(event,message) { + if (event&&event.eventPhase==3) return; + e = event.currentTarget||event.target||event.srcElement; + var id = e?(e.id?e.id:e.name?e.name:e.value?e.value:''):''; + if (id) id = '(' + id + ')'; + result += + (e?(e.tagName?e.tagName:''):' ')+id+': '+ + (event.type?event.type:'')+' '+ + (message?message:'') + '\n'; +} + +document.onclick=function (event) { log(event,"top-doc") }; +document.onfocus=function (event) { log(event,"top-doc") }; +document.onblur=function (event) { log(event,"top-doc") }; +document.onchange=function (event) { log(event,"top-doc") }; + +function doTest1_rest2(expectedEventLog,focusAfterCloseId) { + try { + is(document.activeElement, document.getElementById(focusAfterCloseId), "wrong element is focused after popup was closed"); + is(result, expectedEventLog, "unexpected events"); + SimpleTest.finish(); + } catch(e) { + if (popup) + popup.close(); + throw e; + } +} +function doTest1_rest1(expectedEventLog,focusAfterCloseId) { + try { + synthesizeKey("V", {}, popup); + synthesizeKey("A", {}, popup); + synthesizeKey("L", {}, popup); + is(popup.document.getElementById('popupText1').value, "VAL", "input element in popup did not accept input"); + + var p = popup; + popup = null; + p.close(); + + SimpleTest.waitForFocus(function () { doTest1_rest2(expectedEventLog,focusAfterCloseId); }, window); + } catch(e) { + if (popup) + popup.close(); + throw e; + } +} + +function doTest1(expectedEventLog,focusAfterCloseId) { + try { + var select1 = document.getElementById('Select1'); + select1.focus(); + is(document.activeElement, select1, "select element should be focused"); + synthesizeKey("VK_DOWN",{}); + synthesizeKey("VK_TAB", {}); + SimpleTest.waitForFocus(function () { doTest1_rest1(expectedEventLog,focusAfterCloseId); }, popup); + + } catch(e) { + if (popup) + popup.close(); + throw e; + } +} + +function setPrefAndDoTest(expectedEventLog,focusAfterCloseId,prefValue) { + var select1 = document.getElementById('Select1'); + select1.blur(); + result = ""; + log({},"Test with browser.link.open_newwindow = "+prefValue); + SpecialPowers.pushPrefEnv({"set": [['browser.link.open_newwindow', prefValue]]}, function() { + doTest1(expectedEventLog,focusAfterCloseId); + }); +} |