diff options
Diffstat (limited to 'toolkit/modules/tests/xpcshell/test_PrivacyLevel.js')
-rw-r--r-- | toolkit/modules/tests/xpcshell/test_PrivacyLevel.js | 112 |
1 files changed, 112 insertions, 0 deletions
diff --git a/toolkit/modules/tests/xpcshell/test_PrivacyLevel.js b/toolkit/modules/tests/xpcshell/test_PrivacyLevel.js new file mode 100644 index 0000000000..b392e4a8ae --- /dev/null +++ b/toolkit/modules/tests/xpcshell/test_PrivacyLevel.js @@ -0,0 +1,112 @@ +/* Any copyright is dedicated to the Public Domain. +http://creativecommons.org/publicdomain/zero/1.0/ */ + +"use strict"; + +const kPref = "browser.sessionstore.privacy_level"; + +// Collect data from all sites (http and https). +const PRIVACY_NONE = 0; +// Collect data from unencrypted sites (http), only. +const PRIVACY_ENCRYPTED = 1; +// Collect no data. +const PRIVACY_FULL = 2; + +const { PrivacyLevel } = ChromeUtils.importESModule( + "resource://gre/modules/sessionstore/PrivacyLevel.sys.mjs" +); + +const { PrivacyFilter } = ChromeUtils.importESModule( + "resource://gre/modules/sessionstore/PrivacyFilter.sys.mjs" +); + +const kFormInsecureData = { + url: "http://example.com/", + other: "hello", +}; + +const kFormSecureData = { + url: "https://example.com/", + other: "secure hello", +}; + +add_task(async function test_PrivacyLevelAndFilter() { + Services.prefs.setIntPref(kPref, PRIVACY_NONE); + Assert.ok( + PrivacyLevel.check( + "http://example.com/", + "Can save http page with no privacy" + ) + ); + Assert.ok( + PrivacyLevel.check("https://example.com/"), + "Can save https page with no privacy" + ); + + Assert.deepEqual( + PrivacyFilter.filterFormData(kFormInsecureData), + kFormInsecureData, + "Filtered data matches for insecure data with no privacy." + ); + + Assert.deepEqual( + PrivacyFilter.filterFormData(kFormSecureData), + kFormSecureData, + "Filtered data matches for secure data with no privacy." + ); + + // Specialcase: empty object. + Assert.equal( + PrivacyFilter.filterFormData({}), + null, + "Filtering an empty object returns null." + ); + + Services.prefs.setIntPref(kPref, PRIVACY_ENCRYPTED); + Assert.ok( + PrivacyLevel.check( + "http://example.com/", + "Can save http page with encrypted privacy" + ) + ); + Assert.ok( + !PrivacyLevel.check("https://example.com/"), + "Can't save https page with encrypted privacy" + ); + + Assert.deepEqual( + PrivacyFilter.filterFormData(kFormInsecureData), + kFormInsecureData, + "Filtered data matches for insecure data with encrypted privacy." + ); + + Assert.deepEqual( + PrivacyFilter.filterFormData(kFormSecureData), + null, + "Filtered data matches for secure data with encrypted privacy." + ); + + Services.prefs.setIntPref(kPref, PRIVACY_FULL); + Assert.ok( + !PrivacyLevel.check( + "http://example.com/", + "Can't save http page with full privacy" + ) + ); + Assert.ok( + !PrivacyLevel.check("https://example.com/"), + "Can't save https page with full privacy" + ); + + Assert.deepEqual( + PrivacyFilter.filterFormData(kFormInsecureData), + null, + "No filtered data for insecure data with full privacy." + ); + + Assert.deepEqual( + PrivacyFilter.filterFormData(kFormSecureData), + null, + "No filtered data for secure data with full privacy." + ); +}); |