forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			169 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			169 lines
		
	
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /* Any copyright is dedicated to the Public Domain.
 | |
|  * http://creativecommons.org/publicdomain/zero/1.0/ */
 | |
| 
 | |
| Services.prefs.setBoolPref("browser.preferences.instantApply", true);
 | |
| 
 | |
| registerCleanupFunction(function() {
 | |
|   Services.prefs.clearUserPref("browser.preferences.instantApply");
 | |
| });
 | |
| 
 | |
| // Test opening to the differerent panes and subcategories in Preferences
 | |
| add_task(async function() {
 | |
|   let prefs = await openPreferencesViaOpenPreferencesAPI("panePrivacy");
 | |
|   is(prefs.selectedPane, "panePrivacy", "Privacy pane was selected");
 | |
|   prefs = await openPreferencesViaHash("privacy");
 | |
|   is(
 | |
|     prefs.selectedPane,
 | |
|     "panePrivacy",
 | |
|     "Privacy pane is selected when hash is 'privacy'"
 | |
|   );
 | |
|   prefs = await openPreferencesViaOpenPreferencesAPI("nonexistant-category");
 | |
|   is(
 | |
|     prefs.selectedPane,
 | |
|     "paneGeneral",
 | |
|     "General pane is selected by default when a nonexistant-category is requested"
 | |
|   );
 | |
|   prefs = await openPreferencesViaHash("nonexistant-category");
 | |
|   is(
 | |
|     prefs.selectedPane,
 | |
|     "paneGeneral",
 | |
|     "General pane is selected when hash is a nonexistant-category"
 | |
|   );
 | |
|   prefs = await openPreferencesViaHash();
 | |
|   is(prefs.selectedPane, "paneGeneral", "General pane is selected by default");
 | |
|   prefs = await openPreferencesViaOpenPreferencesAPI("privacy-reports", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
|   is(prefs.selectedPane, "panePrivacy", "Privacy pane is selected by default");
 | |
|   let doc = gBrowser.contentDocument;
 | |
|   is(
 | |
|     doc.location.hash,
 | |
|     "#privacy",
 | |
|     "The subcategory should be removed from the URI"
 | |
|   );
 | |
|   await TestUtils.waitForCondition(
 | |
|     () => doc.querySelector(".spotlight"),
 | |
|     "Wait for the reports section is spotlighted."
 | |
|   );
 | |
|   is(
 | |
|     doc.querySelector(".spotlight").getAttribute("data-subcategory"),
 | |
|     "reports",
 | |
|     "The reports section is spotlighted."
 | |
|   );
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
| });
 | |
| 
 | |
| // Test opening Preferences with subcategory on an existing Preferences tab. See bug 1358475.
 | |
| add_task(async function() {
 | |
|   let prefs = await openPreferencesViaOpenPreferencesAPI("general", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
|   is(prefs.selectedPane, "paneGeneral", "General pane is selected by default");
 | |
|   let doc = gBrowser.contentDocument;
 | |
|   is(
 | |
|     doc.location.hash,
 | |
|     "#general",
 | |
|     "The subcategory should be removed from the URI"
 | |
|   );
 | |
|   // The reasons that here just call the `openPreferences` API without the helping function are
 | |
|   //   - already opened one about:preferences tab up there and
 | |
|   //   - the goal is to test on the existing tab and
 | |
|   //   - using `openPreferencesViaOpenPreferencesAPI` would introduce more handling of additional about:blank and unneccessary event
 | |
|   openPreferences("privacy-reports");
 | |
|   let selectedPane = gBrowser.contentWindow.history.state;
 | |
|   is(selectedPane, "panePrivacy", "Privacy pane should be selected");
 | |
|   is(
 | |
|     doc.location.hash,
 | |
|     "#privacy",
 | |
|     "The subcategory should be removed from the URI"
 | |
|   );
 | |
|   await TestUtils.waitForCondition(
 | |
|     () => doc.querySelector(".spotlight"),
 | |
|     "Wait for the reports section is spotlighted."
 | |
|   );
 | |
|   is(
 | |
|     doc.querySelector(".spotlight").getAttribute("data-subcategory"),
 | |
|     "reports",
 | |
|     "The reports section is spotlighted."
 | |
|   );
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
| });
 | |
| 
 | |
| // Test opening to a subcategory displays the correct values for preferences
 | |
| add_task(async function() {
 | |
|   // Skip if crash reporting isn't enabled since the checkbox will be missing.
 | |
|   if (!AppConstants.MOZ_CRASHREPORTER) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [["browser.crashReports.unsubmittedCheck.autoSubmit2", true]],
 | |
|   });
 | |
|   await openPreferencesViaOpenPreferencesAPI("privacy-reports", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
| 
 | |
|   let doc = gBrowser.contentDocument;
 | |
|   ok(
 | |
|     doc.querySelector("#automaticallySubmitCrashesBox").checked,
 | |
|     "Checkbox for automatically submitting crashes should be checked when the pref is true and only Reports are requested"
 | |
|   );
 | |
| 
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
|   await SpecialPowers.popPrefEnv();
 | |
| });
 | |
| 
 | |
| add_task(async function() {
 | |
|   // Skip if crash reporting isn't enabled since the checkbox will be missing.
 | |
|   if (!AppConstants.MOZ_CRASHREPORTER) {
 | |
|     return;
 | |
|   }
 | |
| 
 | |
|   await SpecialPowers.pushPrefEnv({
 | |
|     set: [["browser.crashReports.unsubmittedCheck.autoSubmit2", false]],
 | |
|   });
 | |
|   await openPreferencesViaOpenPreferencesAPI("privacy-reports", {
 | |
|     leaveOpen: true,
 | |
|   });
 | |
| 
 | |
|   let doc = gBrowser.contentDocument;
 | |
|   ok(
 | |
|     !doc.querySelector("#automaticallySubmitCrashesBox").checked,
 | |
|     "Checkbox for automatically submitting crashes should not be checked when the pref is false only Reports are requested"
 | |
|   );
 | |
| 
 | |
|   BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | |
|   await SpecialPowers.popPrefEnv();
 | |
| });
 | |
| 
 | |
| function openPreferencesViaHash(aPane) {
 | |
|   return new Promise(resolve => {
 | |
|     let finalPrefPaneLoaded = TestUtils.topicObserved(
 | |
|       "sync-pane-loaded",
 | |
|       () => true
 | |
|     );
 | |
|     gBrowser.selectedTab = BrowserTestUtils.addTab(
 | |
|       gBrowser,
 | |
|       "about:preferences" + (aPane ? "#" + aPane : "")
 | |
|     );
 | |
|     let newTabBrowser = gBrowser.selectedBrowser;
 | |
| 
 | |
|     newTabBrowser.addEventListener(
 | |
|       "Initialized",
 | |
|       function() {
 | |
|         newTabBrowser.contentWindow.addEventListener(
 | |
|           "load",
 | |
|           async function() {
 | |
|             let win = gBrowser.contentWindow;
 | |
|             let selectedPane = win.history.state;
 | |
|             await finalPrefPaneLoaded;
 | |
|             gBrowser.removeCurrentTab();
 | |
|             resolve({ selectedPane });
 | |
|           },
 | |
|           { once: true }
 | |
|         );
 | |
|       },
 | |
|       { capture: true, once: true }
 | |
|     );
 | |
|   });
 | |
| }
 | 
