diff options
Diffstat (limited to 'browser/base/content/test/popupNotifications/browser_popupNotification_checkbox.js')
-rw-r--r-- | browser/base/content/test/popupNotifications/browser_popupNotification_checkbox.js | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/browser/base/content/test/popupNotifications/browser_popupNotification_checkbox.js b/browser/base/content/test/popupNotifications/browser_popupNotification_checkbox.js deleted file mode 100644 index bcc51fcd7..000000000 --- a/browser/base/content/test/popupNotifications/browser_popupNotification_checkbox.js +++ /dev/null @@ -1,211 +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/. */ - -function test() { - waitForExplicitFinish(); - - ok(PopupNotifications, "PopupNotifications object exists"); - ok(PopupNotifications.panel, "PopupNotifications panel exists"); - - setup(); - goNext(); -} - -function checkCheckbox(checkbox, label, checked=false, hidden=false) { - is(checkbox.label, label, "Checkbox should have the correct label"); - is(checkbox.hidden, hidden, "Checkbox should be shown"); - is(checkbox.checked, checked, "Checkbox should be checked by default"); -} - -function checkMainAction(notification, disabled=false) { - let mainAction = notification.button; - let warningLabel = document.getAnonymousElementByAttribute(notification, "class", "popup-notification-warning"); - is(warningLabel.hidden, !disabled, "Warning label should be shown"); - is(mainAction.disabled, disabled, "MainAction should be disabled"); -} - -function promiseElementVisible(element) { - // HTMLElement.offsetParent is null when the element is not visisble - // (or if the element has |position: fixed|). See: - // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetParent - return BrowserTestUtils.waitForCondition(() => element.offsetParent !== null, - "Waiting for element to be visible"); -} - -var gNotification; - -var tests = [ - // Test that passing the checkbox field shows the checkbox. - { id: "show_checkbox", - run: function () { - this.notifyObj = new BasicNotification(this.id); - this.notifyObj.options.checkbox = { - label: "This is a checkbox", - }; - gNotification = showNotification(this.notifyObj); - }, - onShown: function (popup) { - checkPopup(popup, this.notifyObj); - let notification = popup.childNodes[0]; - checkCheckbox(notification.checkbox, "This is a checkbox"); - triggerMainCommand(popup); - }, - onHidden: function () { } - }, - - // Test checkbox being checked by default - { id: "checkbox_checked", - run: function () { - this.notifyObj = new BasicNotification(this.id); - this.notifyObj.options.checkbox = { - label: "Check this", - checked: true, - }; - gNotification = showNotification(this.notifyObj); - }, - onShown: function (popup) { - checkPopup(popup, this.notifyObj); - let notification = popup.childNodes[0]; - checkCheckbox(notification.checkbox, "Check this", true); - triggerMainCommand(popup); - }, - onHidden: function () { } - }, - - // Test checkbox passing the checkbox state on mainAction - { id: "checkbox_passCheckboxChecked_mainAction", - run: function () { - this.notifyObj = new BasicNotification(this.id); - this.notifyObj.mainAction.callback = ({checkboxChecked}) => this.mainActionChecked = checkboxChecked; - this.notifyObj.options.checkbox = { - label: "This is a checkbox", - }; - gNotification = showNotification(this.notifyObj); - }, - onShown: function* (popup) { - checkPopup(popup, this.notifyObj); - let notification = popup.childNodes[0]; - let checkbox = notification.checkbox; - checkCheckbox(checkbox, "This is a checkbox"); - yield promiseElementVisible(checkbox); - EventUtils.synthesizeMouseAtCenter(checkbox, {}); - checkCheckbox(checkbox, "This is a checkbox", true); - triggerMainCommand(popup); - }, - onHidden: function () { - is(this.mainActionChecked, true, "mainAction callback is passed the correct checkbox value"); - } - }, - - // Test checkbox passing the checkbox state on secondaryAction - { id: "checkbox_passCheckboxChecked_secondaryAction", - run: function () { - this.notifyObj = new BasicNotification(this.id); - this.notifyObj.secondaryActions = [{ - label: "Test Secondary", - accessKey: "T", - callback: ({checkboxChecked}) => this.secondaryActionChecked = checkboxChecked, - }]; - this.notifyObj.options.checkbox = { - label: "This is a checkbox", - }; - gNotification = showNotification(this.notifyObj); - }, - onShown: function* (popup) { - checkPopup(popup, this.notifyObj); - let notification = popup.childNodes[0]; - let checkbox = notification.checkbox; - checkCheckbox(checkbox, "This is a checkbox"); - yield promiseElementVisible(checkbox); - EventUtils.synthesizeMouseAtCenter(checkbox, {}); - checkCheckbox(checkbox, "This is a checkbox", true); - triggerSecondaryCommand(popup, 0); - }, - onHidden: function () { - is(this.secondaryActionChecked, true, "secondaryAction callback is passed the correct checkbox value"); - } - }, - - // Test checkbox preserving its state through re-opening the doorhanger - { id: "checkbox_reopen", - run: function () { - this.notifyObj = new BasicNotification(this.id); - this.notifyObj.options.checkbox = { - label: "This is a checkbox", - checkedState: { - disableMainAction: true, - warningLabel: "Testing disable", - }, - }; - gNotification = showNotification(this.notifyObj); - }, - onShown: function* (popup) { - checkPopup(popup, this.notifyObj); - let notification = popup.childNodes[0]; - let checkbox = notification.checkbox; - checkCheckbox(checkbox, "This is a checkbox"); - yield promiseElementVisible(checkbox); - EventUtils.synthesizeMouseAtCenter(checkbox, {}); - dismissNotification(popup); - }, - onHidden: function* (popup) { - let icon = document.getElementById("default-notification-icon"); - let shown = waitForNotificationPanel(); - EventUtils.synthesizeMouseAtCenter(icon, {}); - yield shown; - let notification = popup.childNodes[0]; - let checkbox = notification.checkbox; - checkCheckbox(checkbox, "This is a checkbox", true); - checkMainAction(notification, true); - gNotification.remove(); - } - }, -]; - -// Test checkbox disabling the main action in different combinations -["checkedState", "uncheckedState"].forEach(function (state) { - [true, false].forEach(function (checked) { - tests.push( - { id: `checkbox_disableMainAction_${state}_${checked ? 'checked' : 'unchecked'}`, - run: function () { - this.notifyObj = new BasicNotification(this.id); - this.notifyObj.options.checkbox = { - label: "This is a checkbox", - checked: checked, - [state]: { - disableMainAction: true, - warningLabel: "Testing disable", - }, - }; - gNotification = showNotification(this.notifyObj); - }, - onShown: function* (popup) { - checkPopup(popup, this.notifyObj); - let notification = popup.childNodes[0]; - let checkbox = notification.checkbox; - let disabled = (state === "checkedState" && checked) || - (state === "uncheckedState" && !checked); - - checkCheckbox(checkbox, "This is a checkbox", checked); - checkMainAction(notification, disabled); - yield promiseElementVisible(checkbox); - EventUtils.synthesizeMouseAtCenter(checkbox, {}); - checkCheckbox(checkbox, "This is a checkbox", !checked); - checkMainAction(notification, !disabled); - EventUtils.synthesizeMouseAtCenter(checkbox, {}); - checkCheckbox(checkbox, "This is a checkbox", checked); - checkMainAction(notification, disabled); - - // Unblock the main command if it's currently disabled. - if (disabled) { - EventUtils.synthesizeMouseAtCenter(checkbox, {}); - } - triggerMainCommand(popup); - }, - onHidden: function () { } - } - ); - }); -}); - |