forked from mirrors/gecko-dev
		
	
		
			
				
	
	
		
			105 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
"use strict";
 | 
						|
 | 
						|
const OPT_OUT_PREF = "app.shield.optoutstudies.enabled";
 | 
						|
 | 
						|
function withPrivacyPrefs() {
 | 
						|
  return function(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: [[OPT_OUT_PREF, true]],
 | 
						|
  }),
 | 
						|
  withPrivacyPrefs(),
 | 
						|
  async function testCheckboxes({ browser }) {
 | 
						|
    const optOutCheckbox = browser.contentDocument.getElementById(
 | 
						|
      "optOutStudiesEnabled"
 | 
						|
    );
 | 
						|
 | 
						|
    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."
 | 
						|
    );
 | 
						|
  }
 | 
						|
);
 | 
						|
 | 
						|
decorate_task(
 | 
						|
  withPrefEnv({
 | 
						|
    set: [[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."
 | 
						|
    );
 | 
						|
  }
 | 
						|
);
 | 
						|
 | 
						|
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();
 | 
						|
});
 |