summaryrefslogtreecommitdiffstats
path: root/dom/events/test/bug299673.js
diff options
context:
space:
mode:
Diffstat (limited to 'dom/events/test/bug299673.js')
-rw-r--r--dom/events/test/bug299673.js150
1 files changed, 150 insertions, 0 deletions
diff --git a/dom/events/test/bug299673.js b/dom/events/test/bug299673.js
new file mode 100644
index 0000000000..07e33bd137
--- /dev/null
+++ b/dom/events/test/bug299673.js
@@ -0,0 +1,150 @@
+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("KEY_ArrowDown");
+ synthesizeKey("KEY_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);
+ }
+ );
+}