var popup; function OpenWindow() { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); log({},">>> OpenWindow"); popup = window.open("","Test"); var output = ""; output+=""; output+="
" output+=""; output+="
" output+=""; output+=""; 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) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 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) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 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) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); try { var select1 = document.getElementById('Select1'); select1.focus(); is(document.activeElement, select1, "select element should be focused"); var wu = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor) .getInterface(Components.interfaces.nsIDOMWindowUtils); 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) { netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); var prefs = Components.classes["@mozilla.org/preferences-service;1"] .getService(Components.interfaces.nsIPrefBranch); var origPrefValue = prefs.getIntPref("browser.link.open_newwindow"); var select1 = document.getElementById('Select1'); select1.blur(); result = ""; log({},"Test with browser.link.open_newwindow = "+prefValue); try { prefs.setIntPref("browser.link.open_newwindow", prefValue); doTest1(expectedEventLog,focusAfterCloseId); } finally { prefs.setIntPref("browser.link.open_newwindow", origPrefValue); } }