diff options
author | Matt A. Tobin <email@mattatobin.com> | 2018-02-03 06:00:38 -0500 |
---|---|---|
committer | Matt A. Tobin <email@mattatobin.com> | 2018-02-03 06:00:38 -0500 |
commit | 8148615da179fdd60f19018e13b4e94b95609cc6 (patch) | |
tree | 771fccdd99fa3adf35fdd2c81d8197b415a89b91 /browser/base/content/test/general/browser_datachoices_notification.js | |
parent | 494802c1be7888025b95260d23db187467d2b9dd (diff) | |
download | UXP-8148615da179fdd60f19018e13b4e94b95609cc6.tar UXP-8148615da179fdd60f19018e13b4e94b95609cc6.tar.gz UXP-8148615da179fdd60f19018e13b4e94b95609cc6.tar.lz UXP-8148615da179fdd60f19018e13b4e94b95609cc6.tar.xz UXP-8148615da179fdd60f19018e13b4e94b95609cc6.zip |
Remove browser tests - Part 1: The Tests (except for experiments)
Diffstat (limited to 'browser/base/content/test/general/browser_datachoices_notification.js')
-rw-r--r-- | browser/base/content/test/general/browser_datachoices_notification.js | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/browser/base/content/test/general/browser_datachoices_notification.js b/browser/base/content/test/general/browser_datachoices_notification.js deleted file mode 100644 index 360728b4c..000000000 --- a/browser/base/content/test/general/browser_datachoices_notification.js +++ /dev/null @@ -1,221 +0,0 @@ -/* 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"; - -// Pass an empty scope object to the import to prevent "leaked window property" -// errors in tests. -var Preferences = Cu.import("resource://gre/modules/Preferences.jsm", {}).Preferences; -var TelemetryReportingPolicy = - Cu.import("resource://gre/modules/TelemetryReportingPolicy.jsm", {}).TelemetryReportingPolicy; - -const PREF_BRANCH = "datareporting.policy."; -const PREF_BYPASS_NOTIFICATION = PREF_BRANCH + "dataSubmissionPolicyBypassNotification"; -const PREF_CURRENT_POLICY_VERSION = PREF_BRANCH + "currentPolicyVersion"; -const PREF_ACCEPTED_POLICY_VERSION = PREF_BRANCH + "dataSubmissionPolicyAcceptedVersion"; -const PREF_ACCEPTED_POLICY_DATE = PREF_BRANCH + "dataSubmissionPolicyNotifiedTime"; - -const TEST_POLICY_VERSION = 37; - -function fakeShowPolicyTimeout(set, clear) { - let reportingPolicy = - Cu.import("resource://gre/modules/TelemetryReportingPolicy.jsm", {}).Policy; - reportingPolicy.setShowInfobarTimeout = set; - reportingPolicy.clearShowInfobarTimeout = clear; -} - -function sendSessionRestoredNotification() { - let reportingPolicyImpl = - Cu.import("resource://gre/modules/TelemetryReportingPolicy.jsm", {}).TelemetryReportingPolicyImpl; - reportingPolicyImpl.observe(null, "sessionstore-windows-restored", null); -} - -/** - * Wait for a tick. - */ -function promiseNextTick() { - return new Promise(resolve => executeSoon(resolve)); -} - -/** - * Wait for a notification to be shown in a notification box. - * @param {Object} aNotificationBox The notification box. - * @return {Promise} Resolved when the notification is displayed. - */ -function promiseWaitForAlertActive(aNotificationBox) { - let deferred = PromiseUtils.defer(); - aNotificationBox.addEventListener("AlertActive", function onActive() { - aNotificationBox.removeEventListener("AlertActive", onActive, true); - deferred.resolve(); - }); - return deferred.promise; -} - -/** - * Wait for a notification to be closed. - * @param {Object} aNotification The notification. - * @return {Promise} Resolved when the notification is closed. - */ -function promiseWaitForNotificationClose(aNotification) { - let deferred = PromiseUtils.defer(); - waitForNotificationClose(aNotification, deferred.resolve); - return deferred.promise; -} - -function triggerInfoBar(expectedTimeoutMs) { - let showInfobarCallback = null; - let timeoutMs = null; - fakeShowPolicyTimeout((callback, timeout) => { - showInfobarCallback = callback; - timeoutMs = timeout; - }, () => {}); - sendSessionRestoredNotification(); - Assert.ok(!!showInfobarCallback, "Must have a timer callback."); - if (expectedTimeoutMs !== undefined) { - Assert.equal(timeoutMs, expectedTimeoutMs, "Timeout should match"); - } - showInfobarCallback(); -} - -var checkInfobarButton = Task.async(function* (aNotification) { - // Check that the button on the data choices infobar does the right thing. - let buttons = aNotification.getElementsByTagName("button"); - Assert.equal(buttons.length, 1, "There is 1 button in the data reporting notification."); - let button = buttons[0]; - - // Add an observer to ensure the "advanced" pane opened (but don't bother - // closing it - we close the entire window when done.) - let paneLoadedPromise = promiseTopicObserved("advanced-pane-loaded"); - - // Click on the button. - button.click(); - - // Wait for the preferences panel to open. - yield paneLoadedPromise; - yield promiseNextTick(); -}); - -add_task(function* setup() { - const bypassNotification = Preferences.get(PREF_BYPASS_NOTIFICATION, true); - const currentPolicyVersion = Preferences.get(PREF_CURRENT_POLICY_VERSION, 1); - - // Register a cleanup function to reset our preferences. - registerCleanupFunction(() => { - Preferences.set(PREF_BYPASS_NOTIFICATION, bypassNotification); - Preferences.set(PREF_CURRENT_POLICY_VERSION, currentPolicyVersion); - - return closeAllNotifications(); - }); - - // Don't skip the infobar visualisation. - Preferences.set(PREF_BYPASS_NOTIFICATION, false); - // Set the current policy version. - Preferences.set(PREF_CURRENT_POLICY_VERSION, TEST_POLICY_VERSION); -}); - -function clearAcceptedPolicy() { - // Reset the accepted policy. - Preferences.reset(PREF_ACCEPTED_POLICY_VERSION); - Preferences.reset(PREF_ACCEPTED_POLICY_DATE); -} - -add_task(function* test_single_window() { - clearAcceptedPolicy(); - - // Close all the notifications, then try to trigger the data choices infobar. - yield closeAllNotifications(); - - let notificationBox = document.getElementById("global-notificationbox"); - - // Make sure that we have a coherent initial state. - Assert.equal(Preferences.get(PREF_ACCEPTED_POLICY_VERSION, 0), 0, - "No version should be set on init."); - Assert.equal(Preferences.get(PREF_ACCEPTED_POLICY_DATE, 0), 0, - "No date should be set on init."); - Assert.ok(!TelemetryReportingPolicy.testIsUserNotified(), - "User not notified about datareporting policy."); - - let alertShownPromise = promiseWaitForAlertActive(notificationBox); - Assert.ok(!TelemetryReportingPolicy.canUpload(), - "User should not be allowed to upload."); - - // Wait for the infobar to be displayed. - triggerInfoBar(10 * 1000); - yield alertShownPromise; - - Assert.equal(notificationBox.allNotifications.length, 1, "Notification Displayed."); - Assert.ok(TelemetryReportingPolicy.canUpload(), "User should be allowed to upload now."); - - yield promiseNextTick(); - let promiseClosed = promiseWaitForNotificationClose(notificationBox.currentNotification); - yield checkInfobarButton(notificationBox.currentNotification); - yield promiseClosed; - - Assert.equal(notificationBox.allNotifications.length, 0, "No notifications remain."); - - // Check that we are still clear to upload and that the policy data is saved. - Assert.ok(TelemetryReportingPolicy.canUpload()); - Assert.equal(TelemetryReportingPolicy.testIsUserNotified(), true, - "User notified about datareporting policy."); - Assert.equal(Preferences.get(PREF_ACCEPTED_POLICY_VERSION, 0), TEST_POLICY_VERSION, - "Version pref set."); - Assert.greater(parseInt(Preferences.get(PREF_ACCEPTED_POLICY_DATE, null), 10), -1, - "Date pref set."); -}); - -add_task(function* test_multiple_windows() { - clearAcceptedPolicy(); - - // Close all the notifications, then try to trigger the data choices infobar. - yield closeAllNotifications(); - - // Ensure we see the notification on all windows and that action on one window - // results in dismiss on every window. - let otherWindow = yield BrowserTestUtils.openNewBrowserWindow(); - - // Get the notification box for both windows. - let notificationBoxes = [ - document.getElementById("global-notificationbox"), - otherWindow.document.getElementById("global-notificationbox") - ]; - - Assert.ok(notificationBoxes[1], "2nd window has a global notification box."); - - // Make sure that we have a coherent initial state. - Assert.equal(Preferences.get(PREF_ACCEPTED_POLICY_VERSION, 0), 0, "No version should be set on init."); - Assert.equal(Preferences.get(PREF_ACCEPTED_POLICY_DATE, 0), 0, "No date should be set on init."); - Assert.ok(!TelemetryReportingPolicy.testIsUserNotified(), "User not notified about datareporting policy."); - - let showAlertPromises = [ - promiseWaitForAlertActive(notificationBoxes[0]), - promiseWaitForAlertActive(notificationBoxes[1]) - ]; - - Assert.ok(!TelemetryReportingPolicy.canUpload(), - "User should not be allowed to upload."); - - // Wait for the infobars. - triggerInfoBar(10 * 1000); - yield Promise.all(showAlertPromises); - - // Both notification were displayed. Close one and check that both gets closed. - let closeAlertPromises = [ - promiseWaitForNotificationClose(notificationBoxes[0].currentNotification), - promiseWaitForNotificationClose(notificationBoxes[1].currentNotification) - ]; - notificationBoxes[0].currentNotification.close(); - yield Promise.all(closeAlertPromises); - - // Close the second window we opened. - yield BrowserTestUtils.closeWindow(otherWindow); - - // Check that we are clear to upload and that the policy data us saved. - Assert.ok(TelemetryReportingPolicy.canUpload(), "User should be allowed to upload now."); - Assert.equal(TelemetryReportingPolicy.testIsUserNotified(), true, - "User notified about datareporting policy."); - Assert.equal(Preferences.get(PREF_ACCEPTED_POLICY_VERSION, 0), TEST_POLICY_VERSION, - "Version pref set."); - Assert.greater(parseInt(Preferences.get(PREF_ACCEPTED_POLICY_DATE, null), 10), -1, - "Date pref set."); -}); |