forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			131 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			131 lines
		
	
	
	
		
			3.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* Any copyright is dedicated to the Public Domain.
 | 
						|
 * http://creativecommons.org/publicdomain/zero/1.0/ */
 | 
						|
 | 
						|
// Test the privacy segmentation pref and preferences UI.
 | 
						|
 | 
						|
"use strict";
 | 
						|
 | 
						|
const PREF = "browser.dataFeatureRecommendations.enabled";
 | 
						|
const PREF_VISIBILITY = "browser.privacySegmentation.preferences.show";
 | 
						|
 | 
						|
add_task(async function test_preferences_section() {
 | 
						|
  if (!AppConstants.MOZ_DATA_REPORTING) {
 | 
						|
    ok(true, "Skipping test because data reporting is disabled");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
 | 
						|
 | 
						|
  let doc = gBrowser.selectedBrowser.contentDocument;
 | 
						|
  let section = doc.getElementById("privacySegmentationSection");
 | 
						|
  let sectionHeader = section.querySelector("h2");
 | 
						|
  let sectionDescription = section.querySelector("label");
 | 
						|
  let radioGroup = section.querySelector(
 | 
						|
    "#privacyDataFeatureRecommendationRadioGroup"
 | 
						|
  );
 | 
						|
  let radioEnabled = radioGroup.querySelector(
 | 
						|
    "#privacyDataFeatureRecommendationEnabled"
 | 
						|
  );
 | 
						|
  let radioDisabled = radioGroup.querySelector(
 | 
						|
    "#privacyDataFeatureRecommendationDisabled"
 | 
						|
  );
 | 
						|
 | 
						|
  for (let show of [false, true]) {
 | 
						|
    Services.prefs.setBoolPref(PREF_VISIBILITY, show);
 | 
						|
    let showStr = show ? "visible" : "hidden";
 | 
						|
 | 
						|
    is(
 | 
						|
      BrowserTestUtils.is_visible(section),
 | 
						|
      show,
 | 
						|
      `Privacy Segmentation section should be ${showStr}.`
 | 
						|
    );
 | 
						|
    is(
 | 
						|
      BrowserTestUtils.is_visible(sectionHeader),
 | 
						|
      show,
 | 
						|
      `Privacy Segmentation section header should be ${showStr}.`
 | 
						|
    );
 | 
						|
    is(
 | 
						|
      BrowserTestUtils.is_visible(sectionDescription),
 | 
						|
      show,
 | 
						|
      `Privacy Segmentation section description should be ${showStr}.`
 | 
						|
    );
 | 
						|
    is(
 | 
						|
      BrowserTestUtils.is_visible(radioGroup),
 | 
						|
      show,
 | 
						|
      `Privacy Segmentation radio group should be ${showStr}.`
 | 
						|
    );
 | 
						|
 | 
						|
    // The section is visible, test radio buttons.
 | 
						|
    if (show) {
 | 
						|
      Services.prefs.setBoolPref(PREF, false);
 | 
						|
 | 
						|
      is(
 | 
						|
        radioGroup.value,
 | 
						|
        "false",
 | 
						|
        "Radio group should reflect initial pref state of false."
 | 
						|
      );
 | 
						|
 | 
						|
      info("Selecting radio on.");
 | 
						|
      radioEnabled.click();
 | 
						|
      is(
 | 
						|
        Services.prefs.getBoolPref(PREF),
 | 
						|
        true,
 | 
						|
        "Privacy Segmentation should be enabled."
 | 
						|
      );
 | 
						|
 | 
						|
      info("Selecting radio off.");
 | 
						|
      radioDisabled.click();
 | 
						|
      is(
 | 
						|
        Services.prefs.getBoolPref(PREF),
 | 
						|
        false,
 | 
						|
        "Privacy Segmentation should be disabled."
 | 
						|
      );
 | 
						|
 | 
						|
      info("Updating pref externally");
 | 
						|
      is(
 | 
						|
        radioGroup.value,
 | 
						|
        "false",
 | 
						|
        "Radio group should reflect initial pref state of false."
 | 
						|
      );
 | 
						|
      Services.prefs.setBoolPref(PREF, true);
 | 
						|
      await BrowserTestUtils.waitForMutationCondition(
 | 
						|
        radioGroup,
 | 
						|
        { attributeFilter: ["value"] },
 | 
						|
        () => radioGroup.value == "true"
 | 
						|
      );
 | 
						|
      is(
 | 
						|
        radioGroup.value,
 | 
						|
        "true",
 | 
						|
        "Updating Privacy Segmentation pref also updates radio group."
 | 
						|
      );
 | 
						|
    }
 | 
						|
  }
 | 
						|
 | 
						|
  BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | 
						|
  Services.prefs.clearUserPref(PREF_VISIBILITY);
 | 
						|
  Services.prefs.clearUserPref(PREF);
 | 
						|
});
 | 
						|
 | 
						|
add_task(async function test_preferences_section_data_reporting_disabled() {
 | 
						|
  if (AppConstants.MOZ_DATA_REPORTING) {
 | 
						|
    ok(true, "Skipping test because data reporting is enabled");
 | 
						|
    return;
 | 
						|
  }
 | 
						|
 | 
						|
  for (let show of [false, true]) {
 | 
						|
    Services.prefs.setBoolPref(PREF_VISIBILITY, show);
 | 
						|
    await openPreferencesViaOpenPreferencesAPI("privacy", { leaveOpen: true });
 | 
						|
 | 
						|
    let doc = gBrowser.selectedBrowser.contentDocument;
 | 
						|
    let section = doc.getElementById("privacySegmentationSection");
 | 
						|
    is(
 | 
						|
      !!section,
 | 
						|
      show,
 | 
						|
      "Section should only exist when privacy segmentation section is enabled."
 | 
						|
    );
 | 
						|
 | 
						|
    BrowserTestUtils.removeTab(gBrowser.selectedTab);
 | 
						|
  }
 | 
						|
 | 
						|
  Services.prefs.clearUserPref(PREF_VISIBILITY);
 | 
						|
});
 |