forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			103 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			4.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| const CHECK_DEFAULT_INITIAL = Services.prefs.getBoolPref("browser.shell.checkDefaultBrowser");
 | |
| 
 | |
| add_task(async function clicking_make_default_checks_alwaysCheck_checkbox() {
 | |
|   await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:preferences");
 | |
| 
 | |
|   await test_with_mock_shellservice({isDefault: false}, async function() {
 | |
|     let setDefaultPane = content.document.getElementById("setDefaultPane");
 | |
|     Assert.equal(setDefaultPane.selectedIndex, "0",
 | |
|       "The 'make default' pane should be visible when not default");
 | |
|     let alwaysCheck = content.document.getElementById("alwaysCheckDefault");
 | |
|     Assert.ok(!alwaysCheck.checked, "Always Check is unchecked by default");
 | |
|     Assert.ok(!Services.prefs.getBoolPref("browser.shell.checkDefaultBrowser"),
 | |
|       "alwaysCheck pref should be false by default in test runs");
 | |
| 
 | |
|     let setDefaultButton = content.document.getElementById("setDefaultButton");
 | |
|     setDefaultButton.click();
 | |
|     content.window.gMainPane.updateSetDefaultBrowser();
 | |
| 
 | |
|     await ContentTaskUtils.waitForCondition(() => alwaysCheck.checked,
 | |
|       "'Always Check' checkbox should get checked after clicking the 'Set Default' button");
 | |
| 
 | |
|     Assert.ok(alwaysCheck.checked,
 | |
|       "Clicking 'Make Default' checks the 'Always Check' checkbox");
 | |
|     Assert.ok(Services.prefs.getBoolPref("browser.shell.checkDefaultBrowser"),
 | |
|       "Checking the checkbox should set the pref to true");
 | |
|     Assert.ok(alwaysCheck.disabled,
 | |
|       "'Always Check' checkbox is locked with default browser and alwaysCheck=true");
 | |
|     Assert.equal(setDefaultPane.selectedIndex, "1",
 | |
|       "The 'make default' pane should not be visible when default");
 | |
|     Assert.ok(Services.prefs.getBoolPref("browser.shell.checkDefaultBrowser"),
 | |
|       "checkDefaultBrowser pref is now enabled");
 | |
|   });
 | |
| 
 | |
|   gBrowser.removeCurrentTab();
 | |
|   Services.prefs.clearUserPref("browser.shell.checkDefaultBrowser");
 | |
| });
 | |
| 
 | |
| add_task(async function clicking_make_default_checks_alwaysCheck_checkbox() {
 | |
|   Services.prefs.lockPref("browser.shell.checkDefaultBrowser");
 | |
|   await BrowserTestUtils.openNewForegroundTab(gBrowser, "about:preferences");
 | |
| 
 | |
|   await test_with_mock_shellservice({isDefault: false}, async function() {
 | |
|     let setDefaultPane = content.document.getElementById("setDefaultPane");
 | |
|     Assert.equal(setDefaultPane.selectedIndex, "0",
 | |
|       "The 'make default' pane should be visible when not default");
 | |
|     let alwaysCheck = content.document.getElementById("alwaysCheckDefault");
 | |
|     Assert.ok(alwaysCheck.disabled, "Always Check is disabled when locked");
 | |
|     Assert.ok(alwaysCheck.checked,
 | |
|       "Always Check is checked because defaultPref is true and pref is locked");
 | |
|     Assert.ok(Services.prefs.getBoolPref("browser.shell.checkDefaultBrowser"),
 | |
|       "alwaysCheck pref should ship with 'true' by default");
 | |
| 
 | |
|     let setDefaultButton = content.document.getElementById("setDefaultButton");
 | |
|     setDefaultButton.click();
 | |
|     content.window.gMainPane.updateSetDefaultBrowser();
 | |
| 
 | |
|     await ContentTaskUtils.waitForCondition(() => setDefaultPane.selectedIndex == "1",
 | |
|       "Browser is now default");
 | |
| 
 | |
|     Assert.ok(alwaysCheck.checked,
 | |
|       "'Always Check' is still checked because it's locked");
 | |
|     Assert.ok(alwaysCheck.disabled,
 | |
|       "'Always Check is disabled because it's locked");
 | |
|     Assert.ok(Services.prefs.getBoolPref("browser.shell.checkDefaultBrowser"),
 | |
|       "The pref is locked and so doesn't get changed");
 | |
|   });
 | |
| 
 | |
|   Services.prefs.unlockPref("browser.shell.checkDefaultBrowser");
 | |
|   gBrowser.removeCurrentTab();
 | |
| });
 | |
| 
 | |
| registerCleanupFunction(function() {
 | |
|   Services.prefs.unlockPref("browser.shell.checkDefaultBrowser");
 | |
|   Services.prefs.setBoolPref("browser.shell.checkDefaultBrowser", CHECK_DEFAULT_INITIAL);
 | |
| });
 | |
| 
 | |
| async function test_with_mock_shellservice(options, testFn) {
 | |
|   await ContentTask.spawn(gBrowser.selectedBrowser, options, async function(contentOptions) {
 | |
|     let doc = content.document;
 | |
|     let win = doc.defaultView;
 | |
|     win.oldShellService = win.getShellService();
 | |
|     let mockShellService = {
 | |
|       _isDefault: false,
 | |
|       isDefaultBrowser() {
 | |
|         return this._isDefault;
 | |
|       },
 | |
|       setDefaultBrowser() {
 | |
|         this._isDefault = true;
 | |
|       },
 | |
|     };
 | |
|     win.getShellService = function() {
 | |
|       return mockShellService;
 | |
|     };
 | |
|     mockShellService._isDefault = contentOptions.isDefault;
 | |
|     win.gMainPane.updateSetDefaultBrowser();
 | |
|   });
 | |
| 
 | |
|   await ContentTask.spawn(gBrowser.selectedBrowser, null, testFn);
 | |
| 
 | |
|   Services.prefs.setBoolPref("browser.shell.checkDefaultBrowser", CHECK_DEFAULT_INITIAL);
 | |
| }
 | 
