bug299673.js (3507B)
1 var popup; 2 3 function OpenWindow() { 4 log({}, ">>> OpenWindow"); 5 popup = window.open("", "Test"); 6 7 var output = "<html>"; 8 9 output += "<body>"; 10 output += "<form>"; 11 output += 12 "<input id='popupText1' type='text' onfocus='opener.log(event)' onblur='opener.log(event)'>"; 13 output += "</form>"; 14 output += "</body>"; 15 output += "</html>"; 16 17 popup.document.open(); 18 popup.document.write(output); 19 popup.document.close(); 20 21 popup.document.onclick = function (event) { 22 log(event, "popup-doc"); 23 }; 24 popup.document.onfocus = function (event) { 25 log(event, "popup-doc"); 26 }; 27 popup.document.onblur = function (event) { 28 log(event, "popup-doc"); 29 }; 30 popup.document.onchange = function (event) { 31 log(event, "popup-doc"); 32 }; 33 34 var e = popup.document.getElementById("popupText1"); 35 popup.focus(); 36 e.focus(); 37 is( 38 popup.document.activeElement, 39 e, 40 "input element in popup should be focused" 41 ); 42 log({}, "<<< OpenWindow"); 43 } 44 45 var result; 46 47 function log(event, message) { 48 if (event && event.eventPhase == 3) { 49 return; 50 } 51 e = event.currentTarget || event.target || event.srcElement; 52 var id = e ? (e.id ? e.id : e.name ? e.name : e.value ? e.value : "") : ""; 53 if (id) { 54 id = "(" + id + ")"; 55 } 56 result += 57 (e ? (e.tagName ? e.tagName : "") : " ") + 58 id + 59 ": " + 60 (event.type ? event.type : "") + 61 " " + 62 (message ? message : "") + 63 "\n"; 64 } 65 66 document.onclick = function (event) { 67 log(event, "top-doc"); 68 }; 69 document.onfocus = function (event) { 70 log(event, "top-doc"); 71 }; 72 document.onblur = function (event) { 73 log(event, "top-doc"); 74 }; 75 document.onchange = function (event) { 76 log(event, "top-doc"); 77 }; 78 79 function doTest1_rest2(expectedEventLog, focusAfterCloseId) { 80 try { 81 is( 82 document.activeElement, 83 document.getElementById(focusAfterCloseId), 84 "wrong element is focused after popup was closed" 85 ); 86 is(result, expectedEventLog, "unexpected events"); 87 SimpleTest.finish(); 88 } catch (e) { 89 if (popup) { 90 popup.close(); 91 } 92 throw e; 93 } 94 } 95 function doTest1_rest1(expectedEventLog, focusAfterCloseId) { 96 try { 97 synthesizeKey("V", {}, popup); 98 synthesizeKey("A", {}, popup); 99 synthesizeKey("L", {}, popup); 100 is( 101 popup.document.getElementById("popupText1").value, 102 "VAL", 103 "input element in popup did not accept input" 104 ); 105 106 var p = popup; 107 popup = null; 108 p.close(); 109 110 SimpleTest.waitForFocus(function () { 111 doTest1_rest2(expectedEventLog, focusAfterCloseId); 112 }, window); 113 } catch (e) { 114 if (popup) { 115 popup.close(); 116 } 117 throw e; 118 } 119 } 120 121 function doTest1(expectedEventLog, focusAfterCloseId) { 122 try { 123 var select1 = document.getElementById("Select1"); 124 select1.focus(); 125 is(document.activeElement, select1, "select element should be focused"); 126 synthesizeKey("KEY_ArrowDown"); 127 synthesizeKey("KEY_Tab"); 128 SimpleTest.waitForFocus(function () { 129 doTest1_rest1(expectedEventLog, focusAfterCloseId); 130 }, popup); 131 } catch (e) { 132 if (popup) { 133 popup.close(); 134 } 135 throw e; 136 } 137 } 138 139 function setPrefAndDoTest(expectedEventLog, focusAfterCloseId, prefValue) { 140 var select1 = document.getElementById("Select1"); 141 select1.blur(); 142 result = ""; 143 log({}, "Test with browser.link.open_newwindow = " + prefValue); 144 SpecialPowers.pushPrefEnv( 145 { set: [["browser.link.open_newwindow", prefValue]] }, 146 function () { 147 doTest1(expectedEventLog, focusAfterCloseId); 148 } 149 ); 150 }