mirror of
https://github.com/Feodor2/Mypal68.git
synced 2025-06-19 15:25:50 -04:00
104 lines
3.1 KiB
JavaScript
104 lines
3.1 KiB
JavaScript
var testData = [
|
|
{ desc: "No path", action: "http://example.com/", param: "q" },
|
|
{
|
|
desc: "With path",
|
|
action: "http://example.com/new-path-here/",
|
|
param: "q",
|
|
},
|
|
{ desc: "No action", action: "", param: "q" },
|
|
{
|
|
desc: "With Query String",
|
|
action: "http://example.com/search?oe=utf-8",
|
|
param: "q",
|
|
},
|
|
];
|
|
|
|
add_task(async function() {
|
|
const TEST_URL =
|
|
"http://example.org/browser/browser/base/content/test/general/dummy_page.html";
|
|
let tab = await BrowserTestUtils.openNewForegroundTab(gBrowser, TEST_URL);
|
|
|
|
let count = 0;
|
|
for (let method of ["GET", "POST"]) {
|
|
for (let { desc, action, param } of testData) {
|
|
info(`Running ${method} keyword test '${desc}'`);
|
|
let id = `keyword-form-${count++}`;
|
|
let contextMenu = document.getElementById("contentAreaContextMenu");
|
|
let contextMenuPromise = BrowserTestUtils.waitForEvent(
|
|
contextMenu,
|
|
"popupshown"
|
|
).then(() => gContextMenuContentData.target);
|
|
|
|
await ContentTask.spawn(
|
|
tab.linkedBrowser,
|
|
{ action, param, method, id },
|
|
async function(args) {
|
|
let doc = content.document;
|
|
let form = doc.createElement("form");
|
|
form.id = args.id;
|
|
form.method = args.method;
|
|
form.action = args.action;
|
|
let element = doc.createElement("input");
|
|
element.setAttribute("type", "text");
|
|
element.setAttribute("name", args.param);
|
|
form.appendChild(element);
|
|
doc.body.appendChild(form);
|
|
}
|
|
);
|
|
|
|
await BrowserTestUtils.synthesizeMouseAtCenter(
|
|
`#${id} > input`,
|
|
{ type: "contextmenu", button: 2 },
|
|
tab.linkedBrowser
|
|
);
|
|
let target = await contextMenuPromise;
|
|
|
|
await new Promise(resolve => {
|
|
let url = action || tab.linkedBrowser.currentURI.spec;
|
|
let mm = tab.linkedBrowser.messageManager;
|
|
let onMessage = message => {
|
|
mm.removeMessageListener(
|
|
"ContextMenu:SearchFieldBookmarkData:Result",
|
|
onMessage
|
|
);
|
|
if (method == "GET") {
|
|
ok(
|
|
message.data.spec.endsWith(`${param}=%s`),
|
|
`Check expected url for field named ${param} and action ${action}`
|
|
);
|
|
} else {
|
|
is(
|
|
message.data.spec,
|
|
url,
|
|
`Check expected url for field named ${param} and action ${action}`
|
|
);
|
|
is(
|
|
message.data.postData,
|
|
`${param}%3D%25s`,
|
|
`Check expected POST data for field named ${param} and action ${action}`
|
|
);
|
|
}
|
|
resolve();
|
|
};
|
|
mm.addMessageListener(
|
|
"ContextMenu:SearchFieldBookmarkData:Result",
|
|
onMessage
|
|
);
|
|
|
|
mm.sendAsyncMessage("ContextMenu:SearchFieldBookmarkData", null, {
|
|
target,
|
|
});
|
|
});
|
|
|
|
let popupHiddenPromise = BrowserTestUtils.waitForEvent(
|
|
contextMenu,
|
|
"popuphidden"
|
|
);
|
|
contextMenu.hidePopup();
|
|
await popupHiddenPromise;
|
|
}
|
|
}
|
|
|
|
BrowserTestUtils.removeTab(tab);
|
|
});
|