gecko-dev/dom/tests/browser/browser_bug1008941_dismissGeolocationHanger.js

60 lines
1.8 KiB
JavaScript

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/
"use strict";
const TEST_URI = "http://example.com/" +
"browser/dom/tests/browser/position.html";
add_task(function testDismissHanger() {
info("Check that location is not shared when dismissing the geolocation hanger");
let promisePanelShown = waitForPanelShow();
gBrowser.selectedTab = gBrowser.addTab(TEST_URI);
yield waitForPageLoad(gBrowser.selectedTab);
info("Page was loaded");
yield promisePanelShown;
info("Panel is shown");
// click outside the Geolocation hanger to dismiss it
window.document.getElementById("nav-bar").click();
info("Clicked outside the Geolocation panel to dismiss it");
let result = gBrowser.getBrowserForTab(gBrowser.selectedTab)
.contentDocument.body.innerHTML;
ok(result.includes("location..."), "Location is not shared");
});
add_task(function asyncCleanup() {
// close the tab
gBrowser.removeTab(gBrowser.selectedTab);
info("Cleanup: Closed the tab");
});
function waitForPageLoad(aTab) {
return new Promise(resolve => {
function onTabLoad(event) {
aTab.linkedBrowser.removeEventListener("load", onTabLoad, true);
info("Load tab event received");
resolve();
};
aTab.linkedBrowser.addEventListener("load", onTabLoad, true, true);
});
}
function waitForPanelShow(aPanel) {
return new Promise(resolve => {
function onPopupShown(event) {
PopupNotifications.panel.removeEventListener("popupshown", onPopupShown, true);
info("Popup shown event received");
resolve();
}
PopupNotifications.panel.addEventListener("popupshown", onPopupShown, true, true);
});
}