forked from mirrors/gecko-dev
		
	The shims that this rule tests for no longer exist. MozReview-Commit-ID: DMgP7Hczavc --HG-- extra : rebase_source : 765ddd5c62c9449c07ed050e44d86a3bd5c0ae64 extra : amend_source : 627a7694ac07182200f876901ded7a34721cd228
		
			
				
	
	
		
			179 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			179 lines
		
	
	
	
		
			4.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
ChromeUtils.import("resource://gre/modules/Services.jsm", this);
 | 
						|
 | 
						|
const OPT_OUT_PREF = "app.shield.optoutstudies.enabled";
 | 
						|
const FHR_PREF = "datareporting.healthreport.uploadEnabled";
 | 
						|
 | 
						|
function withPrivacyPrefs(testFunc) {
 | 
						|
  return async (...args) => (
 | 
						|
    BrowserTestUtils.withNewTab("about:preferences#privacy", async browser => (
 | 
						|
      testFunc(...args, browser)
 | 
						|
    ))
 | 
						|
  );
 | 
						|
}
 | 
						|
 | 
						|
decorate_task(
 | 
						|
  withPrefEnv({
 | 
						|
    set: [[OPT_OUT_PREF, true]],
 | 
						|
  }),
 | 
						|
  withPrivacyPrefs,
 | 
						|
  async function testCheckedOnLoad(browser) {
 | 
						|
    const checkbox = browser.contentDocument.getElementById("optOutStudiesEnabled");
 | 
						|
    ok(checkbox.checked, "Opt-out checkbox is checked on load when the pref is true");
 | 
						|
  }
 | 
						|
);
 | 
						|
 | 
						|
decorate_task(
 | 
						|
  withPrefEnv({
 | 
						|
    set: [[OPT_OUT_PREF, false]],
 | 
						|
  }),
 | 
						|
  withPrivacyPrefs,
 | 
						|
  async function testUncheckedOnLoad(browser) {
 | 
						|
    const checkbox = browser.contentDocument.getElementById("optOutStudiesEnabled");
 | 
						|
    ok(!checkbox.checked, "Opt-out checkbox is unchecked on load when the pref is false");
 | 
						|
  }
 | 
						|
);
 | 
						|
 | 
						|
decorate_task(
 | 
						|
  withPrefEnv({
 | 
						|
    set: [[FHR_PREF, true]],
 | 
						|
  }),
 | 
						|
  withPrivacyPrefs,
 | 
						|
  async function testEnabledOnLoad(browser) {
 | 
						|
    const checkbox = browser.contentDocument.getElementById("optOutStudiesEnabled");
 | 
						|
    ok(!checkbox.disabled, "Opt-out checkbox is enabled on load when the FHR pref is true");
 | 
						|
  }
 | 
						|
);
 | 
						|
 | 
						|
decorate_task(
 | 
						|
  withPrefEnv({
 | 
						|
    set: [[FHR_PREF, false]],
 | 
						|
  }),
 | 
						|
  withPrivacyPrefs,
 | 
						|
  async function testDisabledOnLoad(browser) {
 | 
						|
    const checkbox = browser.contentDocument.getElementById("optOutStudiesEnabled");
 | 
						|
    ok(checkbox.disabled, "Opt-out checkbox is disabled on load when the FHR pref is false");
 | 
						|
  }
 | 
						|
);
 | 
						|
 | 
						|
decorate_task(
 | 
						|
  withPrefEnv({
 | 
						|
    set: [
 | 
						|
      [FHR_PREF, true],
 | 
						|
      [OPT_OUT_PREF, true],
 | 
						|
    ],
 | 
						|
  }),
 | 
						|
  withPrivacyPrefs,
 | 
						|
  async function testCheckboxes(browser) {
 | 
						|
    const optOutCheckbox = browser.contentDocument.getElementById("optOutStudiesEnabled");
 | 
						|
    const fhrCheckbox = browser.contentDocument.getElementById("submitHealthReportBox");
 | 
						|
 | 
						|
    optOutCheckbox.click();
 | 
						|
    ok(
 | 
						|
      !Services.prefs.getBoolPref(OPT_OUT_PREF),
 | 
						|
      "Unchecking the opt-out checkbox sets the pref to false."
 | 
						|
    );
 | 
						|
    optOutCheckbox.click();
 | 
						|
    ok(
 | 
						|
      Services.prefs.getBoolPref(OPT_OUT_PREF),
 | 
						|
      "Checking the opt-out checkbox sets the pref to true."
 | 
						|
    );
 | 
						|
 | 
						|
    fhrCheckbox.click();
 | 
						|
    ok(
 | 
						|
      !Services.prefs.getBoolPref(OPT_OUT_PREF),
 | 
						|
      "Unchecking the FHR checkbox sets the opt-out pref to false."
 | 
						|
    );
 | 
						|
    ok(
 | 
						|
      optOutCheckbox.disabled,
 | 
						|
      "Unchecking the FHR checkbox disables the opt-out checkbox."
 | 
						|
    );
 | 
						|
    ok(
 | 
						|
      !optOutCheckbox.checked,
 | 
						|
      "Unchecking the FHR checkbox unchecks the opt-out checkbox."
 | 
						|
    );
 | 
						|
 | 
						|
    fhrCheckbox.click();
 | 
						|
    ok(
 | 
						|
      Services.prefs.getBoolPref(OPT_OUT_PREF),
 | 
						|
      "Checking the FHR checkbox sets the opt-out pref to true."
 | 
						|
    );
 | 
						|
    ok(
 | 
						|
      !optOutCheckbox.disabled,
 | 
						|
      "Checking the FHR checkbox enables the opt-out checkbox."
 | 
						|
    );
 | 
						|
    ok(
 | 
						|
      optOutCheckbox.checked,
 | 
						|
      "Checking the FHR checkbox checks the opt-out checkbox."
 | 
						|
    );
 | 
						|
  }
 | 
						|
);
 | 
						|
 | 
						|
decorate_task(
 | 
						|
  withPrefEnv({
 | 
						|
    set: [
 | 
						|
      [FHR_PREF, true],
 | 
						|
      [OPT_OUT_PREF, true],
 | 
						|
    ],
 | 
						|
  }),
 | 
						|
  withPrivacyPrefs,
 | 
						|
  async function testPrefWatchers(browser) {
 | 
						|
    const optOutCheckbox = browser.contentDocument.getElementById("optOutStudiesEnabled");
 | 
						|
 | 
						|
    Services.prefs.setBoolPref(OPT_OUT_PREF, false);
 | 
						|
    ok(
 | 
						|
      !optOutCheckbox.checked,
 | 
						|
      "Disabling the opt-out pref unchecks the opt-out checkbox."
 | 
						|
    );
 | 
						|
    Services.prefs.setBoolPref(OPT_OUT_PREF, true);
 | 
						|
    ok(
 | 
						|
      optOutCheckbox.checked,
 | 
						|
      "Enabling the opt-out pref checks the opt-out checkbox."
 | 
						|
    );
 | 
						|
 | 
						|
    Services.prefs.setBoolPref(FHR_PREF, false);
 | 
						|
    ok(
 | 
						|
      !Services.prefs.getBoolPref(OPT_OUT_PREF),
 | 
						|
      "Disabling the FHR pref sets the opt-out pref to false."
 | 
						|
    );
 | 
						|
    ok(
 | 
						|
      optOutCheckbox.disabled,
 | 
						|
      "Disabling the FHR pref disables the opt-out checkbox."
 | 
						|
    );
 | 
						|
    ok(
 | 
						|
      !optOutCheckbox.checked,
 | 
						|
      "Disabling the FHR pref unchecks the opt-out checkbox."
 | 
						|
    );
 | 
						|
 | 
						|
    Services.prefs.setBoolPref(FHR_PREF, true);
 | 
						|
    ok(
 | 
						|
      Services.prefs.getBoolPref(OPT_OUT_PREF),
 | 
						|
      "Enabling the FHR pref sets the opt-out pref to true."
 | 
						|
    );
 | 
						|
    ok(
 | 
						|
      !optOutCheckbox.disabled,
 | 
						|
      "Enabling the FHR pref enables the opt-out checkbox."
 | 
						|
    );
 | 
						|
    ok(
 | 
						|
      optOutCheckbox.checked,
 | 
						|
      "Enabling the FHR pref checks the opt-out checkbox."
 | 
						|
    );
 | 
						|
  }
 | 
						|
);
 | 
						|
 | 
						|
decorate_task(
 | 
						|
  withPrivacyPrefs,
 | 
						|
  async function testViewStudiesLink(browser) {
 | 
						|
    browser.contentDocument.getElementById("viewShieldStudies").click();
 | 
						|
    await BrowserTestUtils.waitForLocationChange(gBrowser);
 | 
						|
 | 
						|
    is(
 | 
						|
      gBrowser.currentURI.spec,
 | 
						|
      "about:studies",
 | 
						|
      "Clicking the view studies link opens about:studies in a new tab."
 | 
						|
    );
 | 
						|
 | 
						|
    gBrowser.removeCurrentTab();
 | 
						|
  }
 | 
						|
);
 |