forked from mirrors/gecko-dev
		
	Now that I finally wrote a test, I also noticed that we were trying to write the checkbox permission value when the dialog gets aborted (ie removed because the page disappears due to another page loading or the tab/window being closed), which then threw an exception because the event target is the window rather than the dialog element, and dialog.querySelector in maybeSetAllowTabSwitchPermission fails. Differential Revision: https://phabricator.services.mozilla.com/D114023
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
   http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
add_task(async function test_check_file_prompt() {
 | 
						|
  let initialTab = gBrowser.selectedTab;
 | 
						|
  await BrowserTestUtils.withNewTab("about:blank", async browser => {
 | 
						|
    await BrowserTestUtils.switchTab(gBrowser, initialTab);
 | 
						|
 | 
						|
    let testHelper = async function(uri, expectedValue) {
 | 
						|
      BrowserTestUtils.loadURI(browser, uri);
 | 
						|
      await BrowserTestUtils.browserLoaded(browser, false, uri);
 | 
						|
      let dialogFinishedShowing = TestUtils.topicObserved(
 | 
						|
        "common-dialog-loaded"
 | 
						|
      );
 | 
						|
      await SpecialPowers.spawn(browser, [], () => {
 | 
						|
        content.setTimeout(() => {
 | 
						|
          content.alert("Hello");
 | 
						|
        }, 0);
 | 
						|
      });
 | 
						|
 | 
						|
      let [dialogWin] = await dialogFinishedShowing;
 | 
						|
      let checkbox = dialogWin.document.getElementById("checkbox");
 | 
						|
      info("Got: " + checkbox.label);
 | 
						|
      ok(
 | 
						|
        checkbox.label.includes(expectedValue),
 | 
						|
        `Checkbox label should mention domain (${expectedValue}).`
 | 
						|
      );
 | 
						|
 | 
						|
      dialogWin.document.querySelector("dialog").acceptDialog();
 | 
						|
    };
 | 
						|
 | 
						|
    await testHelper("https://example.com/1", "example.com");
 | 
						|
    await testHelper("about:robots", "about:");
 | 
						|
    let file = Services.io.newFileURI(Services.dirsvc.get("Desk", Ci.nsIFile))
 | 
						|
      .spec;
 | 
						|
    await testHelper(file, "file://");
 | 
						|
  });
 | 
						|
});
 |