mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-08 08:48:39 +09:00
import FIREFOX_52_6_0esr_RELEASE from mozilla-esr52 hg repo
This commit is contained in:
commit
dcd9973243
150858 changed files with 23884658 additions and 0 deletions
|
|
@ -0,0 +1,244 @@
|
|||
/*
|
||||
* Any copyright is dedicated to the Public Domain.
|
||||
* http://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
var cps = new ContentPrefInstance(null);
|
||||
|
||||
function run_test() {
|
||||
testCacheWorks("test1.example.com", "test-pref1");
|
||||
testHasCachedPrefFunction("test2.example.com", "test-pref2");
|
||||
testSetCaches("test3.example.com", "test-pref3");
|
||||
testGetCaches("test4.example.com", "test-pref4");
|
||||
testRemovePrefs("test5.example.com", "test-pref5");
|
||||
testTypeConversions("test6.example.com", "test-pref6");
|
||||
testNonExistingPrefCachesAsUndefined("test7.example.com", "test-pref7");
|
||||
testCacheEviction("test8.example.com", "test-pref8");
|
||||
}
|
||||
|
||||
function testCacheWorks(uri, prefName) {
|
||||
const CACHED_VALUE = 3;
|
||||
const NEW_VALUE = 5;
|
||||
|
||||
cps.setPref(uri, prefName, CACHED_VALUE);
|
||||
do_check_eq(cps.getPref(uri, prefName), CACHED_VALUE);
|
||||
|
||||
// Now change the value directly through the DB and check
|
||||
// that the cached value is different
|
||||
|
||||
let groupId = selectValue("SELECT id FROM groups WHERE name = :param1", "id", uri);
|
||||
let settingId = selectValue("SELECT id FROM settings WHERE name = :param1", "id", prefName);
|
||||
let prefId = selectValue("SELECT id FROM prefs WHERE groupID = :param1 AND settingID = :param2",
|
||||
"id", groupId, settingId);
|
||||
|
||||
let stmt = cps.DBConnection.createStatement("UPDATE prefs SET value = :value WHERE id = :id");
|
||||
stmt.params.value = NEW_VALUE;
|
||||
stmt.params.id = prefId;
|
||||
stmt.execute();
|
||||
|
||||
let dbValue = selectValue("SELECT value FROM prefs WHERE id = :param1", "value", prefId);
|
||||
let cacheValue = cps.getPref(uri, prefName);
|
||||
|
||||
do_check_eq(dbValue, NEW_VALUE);
|
||||
do_check_eq(cacheValue, CACHED_VALUE);
|
||||
do_check_neq(cacheValue, dbValue);
|
||||
|
||||
do_test_pending();
|
||||
cps.getPref(uri, prefName, function (value) {
|
||||
do_check_eq(dbValue, NEW_VALUE);
|
||||
do_check_eq(value, CACHED_VALUE);
|
||||
do_check_neq(value, dbValue);
|
||||
do_test_finished();
|
||||
});
|
||||
}
|
||||
|
||||
function testHasCachedPrefFunction(uri, prefName) {
|
||||
const STARTING_VALUE = 3;
|
||||
const NEW_VALUE = 5;
|
||||
|
||||
do_check_false(isCached(uri, prefName));
|
||||
|
||||
cps.setPref(uri, prefName, STARTING_VALUE);
|
||||
|
||||
let groupId = selectValue("SELECT id FROM groups WHERE name = :param1", "id", uri);
|
||||
let settingId = selectValue("SELECT id FROM settings WHERE name = :param1", "id", prefName);
|
||||
let prefId = selectValue("SELECT id FROM prefs WHERE groupID = :param1 AND settingID = :param2",
|
||||
"id", groupId, settingId);
|
||||
|
||||
do_check_neq(prefId, undefined);
|
||||
|
||||
let originalValue = selectValue("SELECT value FROM prefs WHERE id = :param1", "value", prefId);
|
||||
do_check_eq(originalValue, STARTING_VALUE);
|
||||
|
||||
let stmt = cps.DBConnection.createStatement("UPDATE prefs SET value = :value WHERE id = :id");
|
||||
stmt.params.value = NEW_VALUE;
|
||||
stmt.params.id = prefId;
|
||||
stmt.execute();
|
||||
|
||||
let newValue = selectValue("SELECT value FROM prefs WHERE id = :param1", "value", prefId);
|
||||
do_check_eq(newValue, NEW_VALUE);
|
||||
|
||||
let cachedValue = cps.getPref(uri, prefName);
|
||||
do_check_eq(cachedValue, STARTING_VALUE);
|
||||
do_check_true(isCached(uri, prefName));
|
||||
}
|
||||
|
||||
function testSetCaches(uri, prefName) {
|
||||
cps.setPref(uri, prefName, 0);
|
||||
do_check_true(isCached(uri, prefName));
|
||||
}
|
||||
|
||||
function testRemovePrefs(uri, prefName) {
|
||||
|
||||
/* removePref */
|
||||
cps.setPref("www1." + uri, prefName, 1);
|
||||
|
||||
do_check_eq(cps.getPref("www1." + uri, prefName), 1);
|
||||
|
||||
cps.removePref("www1." + uri, prefName);
|
||||
|
||||
do_check_false(isCached("www1." + uri, prefName));
|
||||
do_check_false(cps.hasPref("www1." + uri, prefName));
|
||||
do_check_neq(cps.getPref("www1." + uri, prefName), 1);
|
||||
|
||||
/* removeGroupedPrefs */
|
||||
cps.setPref("www2." + uri, prefName, 2);
|
||||
cps.setPref("www3." + uri, prefName, 3);
|
||||
|
||||
do_check_eq(cps.getPref("www2." + uri, prefName), 2);
|
||||
do_check_eq(cps.getPref("www3." + uri, prefName), 3);
|
||||
|
||||
cps.removeGroupedPrefs();
|
||||
|
||||
do_check_false(isCached("www2." + uri, prefName));
|
||||
do_check_false(isCached("www3." + uri, prefName));
|
||||
do_check_false(cps.hasPref("www2." + uri, prefName));
|
||||
do_check_false(cps.hasPref("www3." + uri, prefName));
|
||||
do_check_neq(cps.getPref("www2." + uri, prefName), 2);
|
||||
do_check_neq(cps.getPref("www3." + uri, prefName), 3);
|
||||
|
||||
/* removePrefsByName */
|
||||
cps.setPref("www4." + uri, prefName, 4);
|
||||
cps.setPref("www5." + uri, prefName, 5);
|
||||
|
||||
do_check_eq(cps.getPref("www4." + uri, prefName), 4);
|
||||
do_check_eq(cps.getPref("www5." + uri, prefName), 5);
|
||||
|
||||
cps.removePrefsByName(prefName);
|
||||
|
||||
do_check_false(isCached("www4." + uri, prefName));
|
||||
do_check_false(isCached("www5." + uri, prefName));
|
||||
do_check_false(cps.hasPref("www4." + uri, prefName));
|
||||
do_check_false(cps.hasPref("www5." + uri, prefName));
|
||||
do_check_neq(cps.getPref("www4." + uri, prefName), 4);
|
||||
do_check_neq(cps.getPref("www5." + uri, prefName), 5);
|
||||
}
|
||||
|
||||
function testGetCaches(uri, prefName) {
|
||||
const VALUE = 4;
|
||||
|
||||
let insertGroup = cps.DBConnection.createStatement("INSERT INTO groups (name) VALUES (:name)");
|
||||
insertGroup.params.name = uri;
|
||||
insertGroup.execute();
|
||||
let groupId = cps.DBConnection.lastInsertRowID;
|
||||
|
||||
let insertSetting = cps.DBConnection.createStatement("INSERT INTO settings (name) VALUES (:name)");
|
||||
insertSetting.params.name = prefName;
|
||||
insertSetting.execute();
|
||||
let settingId = cps.DBConnection.lastInsertRowID;
|
||||
|
||||
let insertPref = cps.DBConnection.createStatement(`
|
||||
INSERT INTO prefs (groupID, settingID, value)
|
||||
VALUES (:groupId, :settingId, :value)
|
||||
`);
|
||||
insertPref.params.groupId = groupId;
|
||||
insertPref.params.settingId = settingId;
|
||||
insertPref.params.value = VALUE;
|
||||
insertPref.execute();
|
||||
let prefId = cps.DBConnection.lastInsertRowID;
|
||||
|
||||
let dbValue = selectValue("SELECT value FROM prefs WHERE id = :param1", "value", prefId);
|
||||
|
||||
// First access from service should hit the DB
|
||||
let svcValue = cps.getPref(uri, prefName);
|
||||
|
||||
// Second time should get the value from cache
|
||||
let cacheValue = cps.getPref(uri, prefName);
|
||||
|
||||
do_check_eq(VALUE, dbValue);
|
||||
do_check_eq(VALUE, svcValue);
|
||||
do_check_eq(VALUE, cacheValue);
|
||||
|
||||
do_check_true(isCached(uri, prefName));
|
||||
}
|
||||
|
||||
function testTypeConversions(uri, prefName) {
|
||||
let value;
|
||||
|
||||
cps.setPref(uri, prefName, true);
|
||||
value = cps.getPref(uri, prefName);
|
||||
do_check_true(value === 1);
|
||||
|
||||
cps.setPref(uri, prefName, false);
|
||||
value = cps.getPref(uri, prefName);
|
||||
do_check_true(value === 0);
|
||||
|
||||
cps.setPref(uri, prefName, null);
|
||||
value = cps.getPref(uri, prefName);
|
||||
do_check_true(value === null);
|
||||
|
||||
cps.setPref(uri, prefName, undefined);
|
||||
value = cps.getPref(uri, prefName);
|
||||
do_check_true(value === null);
|
||||
}
|
||||
|
||||
function testNonExistingPrefCachesAsUndefined(uri, prefName) {
|
||||
|
||||
do_check_false(isCached(uri, prefName));
|
||||
|
||||
// Cache the pref
|
||||
let value = cps.getPref(uri, prefName);
|
||||
do_check_true(value === undefined);
|
||||
|
||||
do_check_true(isCached(uri, prefName));
|
||||
|
||||
// Cached pref
|
||||
value = cps.getPref(uri, prefName);
|
||||
do_check_true(value === undefined);
|
||||
}
|
||||
|
||||
function testCacheEviction(uri, prefName) {
|
||||
|
||||
cps.setPref(uri, prefName, 5);
|
||||
do_check_eq(cps.getPref(uri, prefName), 5);
|
||||
do_check_true(isCached(uri, prefName));
|
||||
|
||||
// try to evict value from cache by adding various other entries
|
||||
const ENTRIES_TO_ADD = 200;
|
||||
for (let i = 0; i < ENTRIES_TO_ADD; i++) {
|
||||
let uriToAdd = "www" + i + uri;
|
||||
cps.setPref(uriToAdd, prefName, 0);
|
||||
}
|
||||
|
||||
do_check_false(isCached(uri, prefName));
|
||||
|
||||
}
|
||||
|
||||
function selectValue(stmt, columnName, param1, param2) {
|
||||
stmt = cps.DBConnection.createStatement(stmt);
|
||||
if (param1)
|
||||
stmt.params.param1 = param1;
|
||||
|
||||
if (param2)
|
||||
stmt.params.param2 = param2;
|
||||
|
||||
stmt.executeStep();
|
||||
let val = stmt.row[columnName];
|
||||
stmt.reset();
|
||||
stmt.finalize();
|
||||
return val;
|
||||
}
|
||||
|
||||
function isCached(uri, prefName) {
|
||||
return cps.hasCachedPref(uri, prefName);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue