forked from mirrors/gecko-dev
MozReview-Commit-ID: 3lrRbZVtgii --HG-- rename : browser/base/content/test/general/print_postdata.sjs => browser/base/content/test/urlbar/print_postdata.sjs extra : rebase_source : 9bae5a403c648e58134afb70de05834566b22ef2
119 lines
5 KiB
JavaScript
119 lines
5 KiB
JavaScript
function* promise_first_result(inputText) {
|
|
yield promiseAutocompleteResultPopup(inputText);
|
|
|
|
let firstResult = gURLBar.popup.richlistbox.firstChild;
|
|
return firstResult;
|
|
}
|
|
|
|
const TEST_URL = "http://mochi.test:8888/browser/browser/base/content/test/urlbar/print_postdata.sjs";
|
|
|
|
add_task(function* setup() {
|
|
yield PlacesUtils.keywords.insert({ keyword: "get",
|
|
url: TEST_URL + "?q=%s" });
|
|
yield PlacesUtils.keywords.insert({ keyword: "post",
|
|
url: TEST_URL,
|
|
postData: "q=%s" });
|
|
registerCleanupFunction(function* () {
|
|
yield PlacesUtils.keywords.remove("get");
|
|
yield PlacesUtils.keywords.remove("post");
|
|
while (gBrowser.tabs.length > 1) {
|
|
yield BrowserTestUtils.removeTab(gBrowser.selectedTab);
|
|
}
|
|
});
|
|
});
|
|
|
|
add_task(function* get_keyword() {
|
|
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:mozilla");
|
|
|
|
let result = yield promise_first_result("get something");
|
|
isnot(result, null, "Expect a keyword result");
|
|
|
|
let types = new Set(result.getAttribute("type").split(/\s+/));
|
|
Assert.ok(types.has("keyword"));
|
|
is(result.getAttribute("actiontype"), "keyword", "Expect correct `actiontype` attribute");
|
|
is(result.getAttribute("title"), "mochi.test:8888", "Expect correct title");
|
|
|
|
// We need to make a real URI out of this to ensure it's normalised for
|
|
// comparison.
|
|
let uri = NetUtil.newURI(result.getAttribute("url"));
|
|
is(uri.spec, PlacesUtils.mozActionURI("keyword",
|
|
{ url: TEST_URL + "?q=something",
|
|
input: "get something"}),
|
|
"Expect correct url");
|
|
|
|
let titleHbox = result._titleText.parentNode.parentNode;
|
|
ok(titleHbox.classList.contains("ac-title"), "Title hbox element sanity check");
|
|
is_element_visible(titleHbox, "Title element should be visible");
|
|
is(result._titleText.textContent, "mochi.test:8888: something",
|
|
"Node should contain the name of the bookmark and query");
|
|
|
|
let urlHbox = result._urlText.parentNode.parentNode;
|
|
ok(urlHbox.classList.contains("ac-url"), "URL hbox element sanity check");
|
|
is_element_hidden(urlHbox, "URL element should be hidden");
|
|
|
|
let actionHbox = result._actionText.parentNode.parentNode;
|
|
ok(actionHbox.classList.contains("ac-action"), "Action hbox element sanity check");
|
|
is_element_visible(actionHbox, "Action element should be visible");
|
|
is(result._actionText.textContent, "", "Action text should be empty");
|
|
|
|
// Click on the result
|
|
info("Normal click on result");
|
|
let tabPromise = BrowserTestUtils.browserLoaded(tab.linkedBrowser);
|
|
EventUtils.synthesizeMouseAtCenter(result, {});
|
|
yield tabPromise;
|
|
is(tab.linkedBrowser.currentURI.spec, TEST_URL + "?q=something",
|
|
"Tab should have loaded from clicking on result");
|
|
|
|
// Middle-click on the result
|
|
info("Middle-click on result");
|
|
result = yield promise_first_result("get somethingmore");
|
|
isnot(result, null, "Expect a keyword result");
|
|
// We need to make a real URI out of this to ensure it's normalised for
|
|
// comparison.
|
|
uri = NetUtil.newURI(result.getAttribute("url"));
|
|
is(uri.spec, PlacesUtils.mozActionURI("keyword",
|
|
{ url: TEST_URL + "?q=somethingmore",
|
|
input: "get somethingmore" }),
|
|
"Expect correct url");
|
|
|
|
tabPromise = BrowserTestUtils.waitForEvent(gBrowser.tabContainer, "TabOpen");
|
|
EventUtils.synthesizeMouseAtCenter(result, {button: 1});
|
|
let tabOpenEvent = yield tabPromise;
|
|
let newTab = tabOpenEvent.target;
|
|
yield BrowserTestUtils.browserLoaded(newTab.linkedBrowser);
|
|
is(newTab.linkedBrowser.currentURI.spec,
|
|
TEST_URL + "?q=somethingmore",
|
|
"Tab should have loaded from middle-clicking on result");
|
|
});
|
|
|
|
|
|
add_task(function* post_keyword() {
|
|
let tab = yield BrowserTestUtils.openNewForegroundTab(gBrowser, "about:mozilla");
|
|
|
|
let result = yield promise_first_result("post something");
|
|
isnot(result, null, "Expect a keyword result");
|
|
|
|
let types = new Set(result.getAttribute("type").split(/\s+/));
|
|
Assert.ok(types.has("keyword"));
|
|
is(result.getAttribute("actiontype"), "keyword", "Expect correct `actiontype` attribute");
|
|
is(result.getAttribute("title"), "mochi.test:8888", "Expect correct title");
|
|
|
|
is(result.getAttribute("url"),
|
|
PlacesUtils.mozActionURI("keyword", { url: TEST_URL,
|
|
input: "post something",
|
|
"postData": "q=something" }),
|
|
"Expect correct url");
|
|
|
|
// Click on the result
|
|
info("Normal click on result");
|
|
let tabPromise = BrowserTestUtils.browserLoaded(tab.linkedBrowser);
|
|
EventUtils.synthesizeMouseAtCenter(result, {});
|
|
yield tabPromise;
|
|
is(tab.linkedBrowser.currentURI.spec, TEST_URL,
|
|
"Tab should have loaded from clicking on result");
|
|
|
|
let postData = yield ContentTask.spawn(tab.linkedBrowser, null, function* () {
|
|
return content.document.body.textContent;
|
|
});
|
|
is(postData, "q=something", "post data was submitted correctly");
|
|
});
|