Bug 470455 - test_database_sync_embed_visits.js leaks, r=sdwilsh
[wine-gecko.git] / browser / components / search / test / browser_426329.js
blob3b2dec95f0993a06d93f733f9759b2eb90cde6ca
1 function test() {
2   waitForExplicitFinish();
4   var searchBar = BrowserSearch.searchBar;
5   var searchButton = document.getAnonymousElementByAttribute(searchBar,
6                      "anonid", "search-go-button");
7   ok(searchButton, "got search-go-button");
9   searchBar.value = "test";
10   var preSelectedBrowser, preTabNo;
12   function init() {
13     preSelectedBrowser = gBrowser.selectedBrowser;
14     preTabNo = gBrowser.mTabs.length;
15     searchBar.focus();
16   }
18   testReturn();
20   function testReturn() {
21     init();
22     EventUtils.synthesizeKey("VK_RETURN", {});
23     doOnloadOnce(function(event) {
25       is(gBrowser.mTabs.length, preTabNo, "Return key did not open new tab");
26       is(event.originalTarget, preSelectedBrowser.contentDocument,
27          "Return key loaded results in current tab");
29       testAltReturn();
30     });
31   }
33   function testAltReturn() {
34     init();
35     EventUtils.synthesizeKey("VK_RETURN", { altKey: true });
36     doOnloadOnce(function(event) {
38       is(gBrowser.mTabs.length, preTabNo + 1, "Alt+Return key added new tab");
39       isnot(event.originalTarget, preSelectedBrowser.contentDocument,
40             "Alt+Return key loaded results in new tab");
41       is(event.originalTarget, gBrowser.selectedBrowser.contentDocument,
42          "Alt+Return key loaded results in foreground tab");
44       //Shift key has no effect for now, so skip it
45       //testShiftAltReturn();
46       testLeftClick();
47     });
48   }
50   function testShiftAltReturn() {
51     init();
52     EventUtils.synthesizeKey("VK_RETURN", { shiftKey: true, altKey: true });
53     doOnloadOnce(function(event) {
55       is(gBrowser.mTabs.length, preTabNo + 1, "Shift+Alt+Return key added new tab");
56       isnot(event.originalTarget, preSelectedBrowser.contentDocument,
57             "Shift+Alt+Return key loaded results in new tab");
58       isnot(event.originalTarget, gBrowser.selectedBrowser.contentDocument,
59             "Shift+Alt+Return key loaded results in background tab");
61       testLeftClick();
62     });
63   }
65   function testLeftClick() {
66     init();
67     simulateClick({ button: 0 }, searchButton);
68     doOnloadOnce(function(event) {
70       is(gBrowser.mTabs.length, preTabNo, "LeftClick did not open new tab");
71       is(event.originalTarget, preSelectedBrowser.contentDocument,
72          "LeftClick loaded results in current tab");
74       testMiddleClick();
75     });
76   }
78   function testMiddleClick() {
79     init();
80     simulateClick({ button: 1 }, searchButton);
81     doOnloadOnce(function(event) {
83       is(gBrowser.mTabs.length, preTabNo + 1, "MiddleClick added new tab");
84       isnot(event.originalTarget, preSelectedBrowser.contentDocument,
85             "MiddleClick loaded results in new tab");
86       is(event.originalTarget, gBrowser.selectedBrowser.contentDocument,
87          "MiddleClick loaded results in foreground tab");
89       testShiftMiddleClick();
90     });
91   }
93   function testShiftMiddleClick() {
94     init();
95     simulateClick({ button: 1, shiftKey: true }, searchButton);
96     doOnloadOnce(function(event) {
98       is(gBrowser.mTabs.length, preTabNo + 1, "Shift+MiddleClick added new tab");
99       isnot(event.originalTarget, preSelectedBrowser.contentDocument,
100             "Shift+MiddleClick loaded results in new tab");
101       isnot(event.originalTarget, gBrowser.selectedBrowser.contentDocument,
102             "Shift+MiddleClick loaded results in background tab");
104       testRightClick();
105     });
106   }
108   function testRightClick() {
109     init();
110     gBrowser.selectedBrowser.contentWindow.location.href = "about:blank";
111     simulateClick({ button: 2 }, searchButton);
112     setTimeout(function() {
114       is(gBrowser.mTabs.length, preTabNo, "RightClick did not open new tab");
115       is(gBrowser.currentURI.spec, "about:blank", "RightClick did nothing");
117       finalize();
118     }, 5000);
119   }
121   function finalize() {
122     searchBar.value = "";
123     while (gBrowser.mTabs.length != 1) {
124       gBrowser.removeTab(gBrowser.mTabs[0]);
125     }
126     gBrowser.selectedBrowser.contentWindow.location.href = "about:blank";
127     finish();
128   }
130   function doOnloadOnce(callback) {
131     gBrowser.addEventListener("DOMContentLoaded", function(event) {
132       gBrowser.removeEventListener("DOMContentLoaded", arguments.callee, true);
133       callback(event);
134     }, true);
135   }
137   function simulateClick(aEvent, aTarget) {
138     var event = document.createEvent("MouseEvent");
139     var ctrlKeyArg  = aEvent.ctrlKey  || false;
140     var altKeyArg   = aEvent.altKey   || false;
141     var shiftKeyArg = aEvent.shiftKey || false;
142     var metaKeyArg  = aEvent.metaKey  || false;
143     var buttonArg   = aEvent.button   || 0;
144     event.initMouseEvent("click", true, true, window,
145                           0, 0, 0, 0, 0,
146                           ctrlKeyArg, altKeyArg, shiftKeyArg, metaKeyArg,
147                           buttonArg, null); 
148     aTarget.dispatchEvent(event);
149   }