gecko/browser/components/search/test/browser_contextmenu.js
Matthew Noorenberghe e7b9ec98ac Bug 724116 - Add additional URL types to implement channel parameter for Google search plugin. r=gavin
Based on Gavin's patch for bug 596439.

--HG--
rename : browser/components/search/test/testEngine.xml => browser/components/search/test/testEngine_mozsearch.xml
extra : rebase_source : c2d88610668c305a7a1710fb69a99a44d8f23bb7
2011-03-18 14:56:46 -07:00

98 lines
3.2 KiB
JavaScript

/* Any copyright is dedicated to the Public Domain.
* * http://creativecommons.org/publicdomain/zero/1.0/ */
/*
* Test searching for the selected text using the context menu
*/
function test() {
waitForExplicitFinish();
const ss = Services.search;
const ENGINE_NAME = "Foo";
var contextMenu;
function observer(aSub, aTopic, aData) {
switch (aData) {
case "engine-added":
var engine = ss.getEngineByName(ENGINE_NAME);
ok(engine, "Engine was added.");
//XXX Bug 493051
//ss.currentEngine = engine;
break;
case "engine-current":
ok(ss.currentEngine.name == ENGINE_NAME, "currentEngine set");
startTest();
break;
case "engine-removed":
Services.obs.removeObserver(observer, "browser-search-engine-modified");
finish();
break;
}
}
Services.obs.addObserver(observer, "browser-search-engine-modified", false);
ss.addEngine("http://mochi.test:8888/browser/browser/components/search/test/testEngine_mozsearch.xml",
Ci.nsISearchEngine.DATA_XML, "data:image/x-icon,%00",
false);
function startTest() {
contextMenu = document.getElementById("contentAreaContextMenu");
ok(contextMenu, "Got context menu XUL");
doOnloadOnce(testContextMenu);
var tab = gBrowser.addTab("data:text/plain,test%20search");
gBrowser.selectedTab = tab;
}
function testContextMenu() {
function rightClickOnDocument(){
var clickTarget = content.document.body;
var eventDetails = { type: "contextmenu", button: 2 };
EventUtils.synthesizeMouseAtCenter(clickTarget, eventDetails, content);
SimpleTest.executeSoon(checkContextMenu);
}
// check the search menu item and then perform a search
function checkContextMenu() {
var searchItem = contextMenu.getElementsByAttribute("id", "context-searchselect")[0];
ok(searchItem, "Got search context menu item");
is(searchItem.label, 'Search ' + ENGINE_NAME + ' for "test search"', "Check context menu label");
is(searchItem.disabled, false, "Check that search context menu item is enabled");
searchItem.click();
}
function checkSearchURL(event){
is(event.originalTarget.URL,
"http://mochi.test:8888/browser/browser/components/search/test/?test=test+search&ie=utf-8&client=app&channel=contextsearch",
"Checking context menu search URL");
finalize();
}
doOnloadOnce(checkSearchURL);
// select the text on the page
var selectAllItem = contextMenu.getElementsByAttribute("id", "context-selectall")[0];
ok(selectAllItem, "Got select all context menu item");
selectAllItem.click();
// wait for the selection to take effect
SimpleTest.executeSoon(rightClickOnDocument);
}
function finalize() {
while (gBrowser.tabs.length != 1) {
gBrowser.removeTab(gBrowser.tabs[0]);
}
content.location.href = "about:blank";
var engine = ss.getEngineByName(ENGINE_NAME);
ss.removeEngine(engine);
}
function doOnloadOnce(callback) {
gBrowser.addEventListener("DOMContentLoaded", function handleLoad(event) {
gBrowser.removeEventListener("DOMContentLoaded", handleLoad, true);
callback(event);
}, true);
}
}