forked from mirrors/gecko-dev
		
	Also fixes browsingData.settings() does not work if "Time range to clear" is set to "Everything". MozReview-Commit-ID: 5GtwYF6xCSj --HG-- extra : rebase_source : adbb4d9142a2b8086a6e03bc23d84b7e3921aea6
		
			
				
	
	
		
			117 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
	
		
			3.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/* -*- Mode: indent-tabs-mode: nil; js-indent-level: 2 -*- */
 | 
						|
/* vim: set sts=2 sw=2 et tw=80: */
 | 
						|
"use strict";
 | 
						|
 | 
						|
XPCOMUtils.defineLazyModuleGetter(this, "Preferences",
 | 
						|
                                  "resource://gre/modules/Preferences.jsm");
 | 
						|
XPCOMUtils.defineLazyModuleGetter(this, "Sanitizer",
 | 
						|
                                  "resource:///modules/Sanitizer.jsm");
 | 
						|
 | 
						|
const PREF_DOMAIN = "privacy.cpd.";
 | 
						|
const SETTINGS_LIST = ["cache", "cookies", "history", "formData", "downloads"].sort();
 | 
						|
 | 
						|
add_task(function* testSettingsProperties() {
 | 
						|
  function background() {
 | 
						|
    browser.test.onMessage.addListener(msg => {
 | 
						|
      browser.browsingData.settings().then(settings => {
 | 
						|
        browser.test.sendMessage("settings", settings);
 | 
						|
      });
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  let extension = ExtensionTestUtils.loadExtension({
 | 
						|
    background,
 | 
						|
    manifest: {
 | 
						|
      permissions: ["browsingData"],
 | 
						|
    },
 | 
						|
  });
 | 
						|
 | 
						|
  yield extension.startup();
 | 
						|
 | 
						|
  extension.sendMessage("settings");
 | 
						|
  let settings = yield extension.awaitMessage("settings");
 | 
						|
 | 
						|
  // Verify that we get the keys back we expect.
 | 
						|
  deepEqual(Object.keys(settings.dataToRemove).sort(), SETTINGS_LIST,
 | 
						|
    "dataToRemove contains expected properties.");
 | 
						|
  deepEqual(Object.keys(settings.dataRemovalPermitted).sort(), SETTINGS_LIST,
 | 
						|
    "dataToRemove contains expected properties.");
 | 
						|
 | 
						|
  let dataTypeSet = settings.dataToRemove;
 | 
						|
  for (let key of Object.keys(dataTypeSet)) {
 | 
						|
    equal(Preferences.get(`${PREF_DOMAIN}${key.toLowerCase()}`), dataTypeSet[key],
 | 
						|
      `${key} property of dataToRemove matches the expected pref.`);
 | 
						|
  }
 | 
						|
 | 
						|
  dataTypeSet = settings.dataRemovalPermitted;
 | 
						|
  for (let key of Object.keys(dataTypeSet)) {
 | 
						|
    equal(true, dataTypeSet[key], `${key} property of dataRemovalPermitted is true.`);
 | 
						|
  }
 | 
						|
 | 
						|
  // Explicitly set a pref to both true and false and then check.
 | 
						|
  const SINGLE_OPTION = "cache";
 | 
						|
  const SINGLE_PREF = "privacy.cpd.cache";
 | 
						|
 | 
						|
  do_register_cleanup(() => {
 | 
						|
    Preferences.reset(SINGLE_PREF);
 | 
						|
  });
 | 
						|
 | 
						|
  Preferences.set(SINGLE_PREF, true);
 | 
						|
 | 
						|
  extension.sendMessage("settings");
 | 
						|
  settings = yield extension.awaitMessage("settings");
 | 
						|
  equal(settings.dataToRemove[SINGLE_OPTION], true, "Preference that was set to true returns true.");
 | 
						|
 | 
						|
  Preferences.set(SINGLE_PREF, false);
 | 
						|
 | 
						|
  extension.sendMessage("settings");
 | 
						|
  settings = yield extension.awaitMessage("settings");
 | 
						|
  equal(settings.dataToRemove[SINGLE_OPTION], false, "Preference that was set to false returns false.");
 | 
						|
 | 
						|
  yield extension.unload();
 | 
						|
});
 | 
						|
 | 
						|
add_task(function* testSettingsSince() {
 | 
						|
  const TIMESPAN_PREF = "privacy.sanitize.timeSpan";
 | 
						|
  const TEST_DATA = {
 | 
						|
    TIMESPAN_5MIN: Date.now() - 5 * 60 * 1000,
 | 
						|
    TIMESPAN_HOUR: Date.now() - 60 * 60 * 1000,
 | 
						|
    TIMESPAN_2HOURS: Date.now() - 2 * 60 * 60 * 1000,
 | 
						|
    TIMESPAN_EVERYTHING: 0,
 | 
						|
  };
 | 
						|
 | 
						|
  function background() {
 | 
						|
    browser.test.onMessage.addListener(msg => {
 | 
						|
      browser.browsingData.settings().then(settings => {
 | 
						|
        browser.test.sendMessage("settings", settings);
 | 
						|
      });
 | 
						|
    });
 | 
						|
  }
 | 
						|
 | 
						|
  let extension = ExtensionTestUtils.loadExtension({
 | 
						|
    background,
 | 
						|
    manifest: {
 | 
						|
      permissions: ["browsingData"],
 | 
						|
    },
 | 
						|
  });
 | 
						|
 | 
						|
  yield extension.startup();
 | 
						|
 | 
						|
  do_register_cleanup(() => {
 | 
						|
    Preferences.reset(TIMESPAN_PREF);
 | 
						|
  });
 | 
						|
 | 
						|
  for (let timespan in TEST_DATA) {
 | 
						|
    Preferences.set(TIMESPAN_PREF, Sanitizer[timespan]);
 | 
						|
 | 
						|
    extension.sendMessage("settings");
 | 
						|
    let settings = yield extension.awaitMessage("settings");
 | 
						|
 | 
						|
    // Because it is based on the current timestamp, we cannot know the exact
 | 
						|
    // value to expect for since, so allow a 10s variance.
 | 
						|
    ok(Math.abs(settings.options.since - TEST_DATA[timespan]) < 10000,
 | 
						|
       "settings.options contains the expected since value.");
 | 
						|
  }
 | 
						|
 | 
						|
  yield extension.unload();
 | 
						|
});
 |