/* 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."
);
});