forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			57 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			57 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/. */
 | 
						|
 | 
						|
function test() {
 | 
						|
  waitForExplicitFinish();
 | 
						|
 | 
						|
  ok(PopupNotifications, "PopupNotifications object exists");
 | 
						|
  ok(PopupNotifications.panel, "PopupNotifications panel exists");
 | 
						|
 | 
						|
  setup();
 | 
						|
}
 | 
						|
 | 
						|
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 TestUtils.waitForCondition(
 | 
						|
    () => element.offsetParent !== null,
 | 
						|
    "Waiting for element to be visible"
 | 
						|
  );
 | 
						|
}
 | 
						|
 | 
						|
var gNotification;
 | 
						|
 | 
						|
var tests = [
 | 
						|
  // Test that passing selection required prevents the button from clicking
 | 
						|
  {
 | 
						|
    id: "require_selection_check",
 | 
						|
    run() {
 | 
						|
      this.notifyObj = new BasicNotification(this.id);
 | 
						|
      this.notifyObj.options.checkbox = {
 | 
						|
        label: "This is a checkbox",
 | 
						|
      };
 | 
						|
      gNotification = showNotification(this.notifyObj);
 | 
						|
    },
 | 
						|
    async onShown(popup) {
 | 
						|
      checkPopup(popup, this.notifyObj);
 | 
						|
      let notification = popup.children[0];
 | 
						|
      notification.setAttribute("invalidselection", true);
 | 
						|
      await promiseElementVisible(notification.checkbox);
 | 
						|
      EventUtils.synthesizeMouseAtCenter(notification.checkbox, {});
 | 
						|
      ok(
 | 
						|
        notification.button.disabled,
 | 
						|
        "should be disabled when invalidselection"
 | 
						|
      );
 | 
						|
      notification.removeAttribute("invalidselection");
 | 
						|
      EventUtils.synthesizeMouseAtCenter(notification.checkbox, {});
 | 
						|
      ok(
 | 
						|
        !notification.button.disabled,
 | 
						|
        "should not be disabled when invalidselection is not present"
 | 
						|
      );
 | 
						|
      triggerMainCommand(popup);
 | 
						|
    },
 | 
						|
    onHidden() {},
 | 
						|
  },
 | 
						|
];
 |