summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_refreshBlocker.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_refreshBlocker.js')
-rw-r--r--browser/base/content/test/general/browser_refreshBlocker.js135
1 files changed, 0 insertions, 135 deletions
diff --git a/browser/base/content/test/general/browser_refreshBlocker.js b/browser/base/content/test/general/browser_refreshBlocker.js
deleted file mode 100644
index ee274f2c2..000000000
--- a/browser/base/content/test/general/browser_refreshBlocker.js
+++ /dev/null
@@ -1,135 +0,0 @@
-"use strict";
-
-const META_PAGE = "http://example.org/browser/browser/base/content/test/general/refresh_meta.sjs"
-const HEADER_PAGE = "http://example.org/browser/browser/base/content/test/general/refresh_header.sjs"
-const TARGET_PAGE = "http://example.org/browser/browser/base/content/test/general/dummy_page.html";
-const PREF = "accessibility.blockautorefresh";
-
-/**
- * Goes into the content, and simulates a meta-refresh header at a very
- * low level, and checks to see if it was blocked. This will always cancel
- * the refresh, regardless of whether or not the refresh was blocked.
- *
- * @param browser (<xul:browser>)
- * The browser to test for refreshing.
- * @param expectRefresh (bool)
- * Whether or not we expect the refresh attempt to succeed.
- * @returns Promise
- */
-function* attemptFakeRefresh(browser, expectRefresh) {
- yield ContentTask.spawn(browser, expectRefresh, function*(contentExpectRefresh) {
- let URI = docShell.QueryInterface(Ci.nsIWebNavigation).currentURI;
- let refresher = docShell.QueryInterface(Ci.nsIRefreshURI);
- refresher.refreshURI(URI, 0, false, true);
-
- Assert.equal(refresher.refreshPending, contentExpectRefresh,
- "Got the right refreshPending state");
-
- if (refresher.refreshPending) {
- // Cancel the pending refresh
- refresher.cancelRefreshURITimers();
- }
-
- // The RefreshBlocker will wait until onLocationChange has
- // been fired before it will show any notifications (see bug
- // 1246291), so we cause this to occur manually here.
- content.location = URI.spec + "#foo";
- });
-}
-
-/**
- * Tests that we can enable the blocking pref and block a refresh
- * from occurring while showing a notification bar. Also tests that
- * when we disable the pref, that refreshes can go through again.
- */
-add_task(function* test_can_enable_and_block() {
- yield BrowserTestUtils.withNewTab({
- gBrowser,
- url: TARGET_PAGE,
- }, function*(browser) {
- // By default, we should be able to reload the page.
- yield attemptFakeRefresh(browser, true);
-
- yield pushPrefs(["accessibility.blockautorefresh", true]);
-
- let notificationPromise =
- BrowserTestUtils.waitForNotificationBar(gBrowser, browser,
- "refresh-blocked");
-
- yield attemptFakeRefresh(browser, false);
-
- yield notificationPromise;
-
- yield pushPrefs(["accessibility.blockautorefresh", false]);
-
- // Page reloads should go through again.
- yield attemptFakeRefresh(browser, true);
- });
-});
-
-/**
- * Attempts a "real" refresh by opening a tab, and then sending it to
- * an SJS page that will attempt to cause a refresh. This will also pass
- * a delay amount to the SJS page. The refresh should be blocked, and
- * the notification should be shown. Once shown, the "Allow" button will
- * be clicked, and the refresh will go through. Finally, the helper will
- * close the tab and resolve the Promise.
- *
- * @param refreshPage (string)
- * The SJS page to use. Use META_PAGE for the <meta> tag refresh
- * case. Use HEADER_PAGE for the HTTP header case.
- * @param delay (int)
- * The amount, in ms, for the page to wait before attempting the
- * refresh.
- *
- * @returns Promise
- */
-function* testRealRefresh(refreshPage, delay) {
- yield BrowserTestUtils.withNewTab({
- gBrowser,
- url: "about:blank",
- }, function*(browser) {
- yield pushPrefs(["accessibility.blockautorefresh", true]);
-
- browser.loadURI(refreshPage + "?p=" + TARGET_PAGE + "&d=" + delay);
- yield BrowserTestUtils.browserLoaded(browser);
-
- // Once browserLoaded resolves, all nsIWebProgressListener callbacks
- // should have fired, so the notification should be visible.
- let notificationBox = gBrowser.getNotificationBox(browser);
- let notification = notificationBox.currentNotification;
-
- ok(notification, "Notification should be visible");
- is(notification.value, "refresh-blocked",
- "Should be showing the right notification");
-
- // Then click the button to allow the refresh.
- let buttons = notification.querySelectorAll(".notification-button");
- is(buttons.length, 1, "Should have one button.");
-
- // Prepare a Promise that should resolve when the refresh goes through
- let refreshPromise = BrowserTestUtils.browserLoaded(browser);
- buttons[0].click();
-
- yield refreshPromise;
- });
-}
-
-/**
- * Tests the meta-tag case for both short and longer delay times.
- */
-add_task(function* test_can_allow_refresh() {
- yield testRealRefresh(META_PAGE, 0);
- yield testRealRefresh(META_PAGE, 100);
- yield testRealRefresh(META_PAGE, 500);
-});
-
-/**
- * Tests that when a HTTP header case for both short and longer
- * delay times.
- */
-add_task(function* test_can_block_refresh_from_header() {
- yield testRealRefresh(HEADER_PAGE, 0);
- yield testRealRefresh(HEADER_PAGE, 100);
- yield testRealRefresh(HEADER_PAGE, 500);
-});