mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-10-09 16:55:15 +00:00
83 lines
3.2 KiB
JavaScript
83 lines
3.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
var testData = [
|
|
/* baseURI, field name, expected */
|
|
[ 'http://example.com/', 'q', 'http://example.com/?q=%s' ],
|
|
[ 'http://example.com/new-path-here/', 'q', 'http://example.com/new-path-here/?q=%s' ],
|
|
[ '', 'q', 'http://example.org/browser/browser/base/content/test/general/dummy_page.html?q=%s' ],
|
|
// Tests for proper behaviour when called on a form whose action contains a question mark.
|
|
[ 'http://example.com/search?oe=utf-8', 'q', 'http://example.com/search?oe=utf-8&q=%s' ],
|
|
];
|
|
|
|
var mm = gBrowser.selectedBrowser.messageManager;
|
|
|
|
add_task(function*() {
|
|
yield BrowserTestUtils.withNewTab({
|
|
gBrowser,
|
|
url: "http://example.org/browser/browser/base/content/test/general/dummy_page.html",
|
|
}, function* (browser) {
|
|
yield ContentTask.spawn(browser, null, function* () {
|
|
let doc = content.document;
|
|
let base = doc.createElement("base");
|
|
doc.head.appendChild(base);
|
|
});
|
|
|
|
for (let [baseURI, fieldName, expected] of testData) {
|
|
let popupShownPromise = BrowserTestUtils.waitForEvent(document.getElementById("contentAreaContextMenu"),
|
|
"popupshown");
|
|
|
|
yield ContentTask.spawn(browser, { baseURI, fieldName }, function* (args) {
|
|
let doc = content.document;
|
|
|
|
let base = doc.querySelector('head > base');
|
|
base.href = args.baseURI;
|
|
|
|
let form = doc.createElement("form");
|
|
form.id = "keyword-form";
|
|
let element = doc.createElement("input");
|
|
element.setAttribute("type", "text");
|
|
element.setAttribute("name", args.fieldName);
|
|
form.appendChild(element);
|
|
doc.body.appendChild(form);
|
|
|
|
/* Open context menu so chrome can access the element */
|
|
const domWindowUtils =
|
|
content.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
|
|
.getInterface(Components.interfaces.nsIDOMWindowUtils);
|
|
let rect = element.getBoundingClientRect();
|
|
let left = rect.left + rect.width / 2;
|
|
let top = rect.top + rect.height / 2;
|
|
domWindowUtils.sendMouseEvent("contextmenu", left, top, 2,
|
|
1, 0, false, 0, 0, true);
|
|
});
|
|
|
|
yield popupShownPromise;
|
|
|
|
let target = gContextMenuContentData.popupNode;
|
|
|
|
let urlCheck = new Promise((resolve, reject) => {
|
|
let onMessage = (message) => {
|
|
mm.removeMessageListener("ContextMenu:SearchFieldBookmarkData:Result", onMessage);
|
|
|
|
is(message.data.spec, expected,
|
|
`Bookmark spec for search field named ${fieldName} and baseURI ${baseURI} incorrect`);
|
|
resolve();
|
|
};
|
|
mm.addMessageListener("ContextMenu:SearchFieldBookmarkData:Result", onMessage);
|
|
|
|
mm.sendAsyncMessage("ContextMenu:SearchFieldBookmarkData", null, { target });
|
|
});
|
|
|
|
yield urlCheck;
|
|
|
|
document.getElementById("contentAreaContextMenu").hidePopup();
|
|
|
|
yield ContentTask.spawn(browser, null, function* () {
|
|
let doc = content.document;
|
|
doc.body.removeChild(doc.getElementById("keyword-form"));
|
|
});
|
|
}
|
|
});
|
|
});
|