diff options
Diffstat (limited to 'browser/base/content/test/general/browser_refreshBlocker.js')
-rw-r--r-- | browser/base/content/test/general/browser_refreshBlocker.js | 135 |
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); -}); |