forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
   http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
/**
 | 
						|
 * Check that if we loop prompts from a closed tab, they don't
 | 
						|
 * start showing up as window prompts.
 | 
						|
 */
 | 
						|
add_task(async function test_closed_tab_doesnt_show_prompt() {
 | 
						|
  let newWin = await BrowserTestUtils.openNewBrowserWindow();
 | 
						|
 | 
						|
  // Get a promise for the initial, in-tab prompt:
 | 
						|
  let promptPromise = BrowserTestUtils.promiseAlertDialogOpen();
 | 
						|
  await ContentTask.spawn(newWin.gBrowser.selectedBrowser, [], function() {
 | 
						|
    // Don't want to block, so use setTimeout with 0 timeout:
 | 
						|
    content.setTimeout(
 | 
						|
      () =>
 | 
						|
        content.eval(
 | 
						|
          'let i = 0; while (!prompt("Prompts a lot!") && i++ < 10);'
 | 
						|
        ),
 | 
						|
      0
 | 
						|
    );
 | 
						|
  });
 | 
						|
  // wait for the first prompt to have appeared:
 | 
						|
  await promptPromise;
 | 
						|
 | 
						|
  // Now close the containing tab, and check for windowed prompts appearing.
 | 
						|
  let opened = false;
 | 
						|
  let obs = () => {
 | 
						|
    opened = true;
 | 
						|
  };
 | 
						|
  Services.obs.addObserver(obs, "domwindowopened");
 | 
						|
  registerCleanupFunction(() =>
 | 
						|
    Services.obs.removeObserver(obs, "domwindowopened")
 | 
						|
  );
 | 
						|
  await BrowserTestUtils.closeWindow(newWin);
 | 
						|
 | 
						|
  ok(!opened, "Should not have opened a prompt when closing the main window.");
 | 
						|
});
 |