Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
ChromeUtils.defineESModuleGetters(lazy, {
ClientID: "resource://gre/modules/ClientID.sys.mjs",
});
const DAU_GROUPID_PREF_NAME = "datareporting.dau.cachedUsageProfileGroupID";
const middleUUID = "4ff7abd7-5a64-4ef3-b88b-e5cd35b37807";
const worstUUID = "96199cc4-828d-4018-82d3-6b8101ffddce";
const bestUUID = "08f1975a-5128-4888-be29-0bab2c84cd62";
add_setup(async () => {
startProfileService();
const SelectableProfileService = getSelectableProfileService();
const ProfilesDatastoreService = getProfilesDatastoreService();
SelectableProfileService.constructor.permanentSharedPrefs.splice(
0,
SelectableProfileService.constructor.permanentSharedPrefs.length,
DAU_GROUPID_PREF_NAME
);
lazy.ClientID.setUsageProfileGroupID(middleUUID);
await ProfilesDatastoreService.init();
await SelectableProfileService.init();
await SelectableProfileService.maybeSetupDataStore();
});
add_task(async function test_groupIDConvergence() {
const SelectableProfileService = getSelectableProfileService();
let dbUUID = await SelectableProfileService.getDBPref(DAU_GROUPID_PREF_NAME);
Assert.equal(
dbUUID,
middleUUID,
`${DAU_GROUPID_PREF_NAME} should be ${middleUUID}`
);
Assert.equal(
Services.prefs.getStringPref(DAU_GROUPID_PREF_NAME, ""),
middleUUID,
`${DAU_GROUPID_PREF_NAME} should be ${middleUUID}`
);
// Set the DAU_GROUPID_PREF_NAME to a worse value in the db and then load the
// prefs from the db. The pref should not be updated.
let dbChangedPromise = lazy.TestUtils.topicObserved("pds-datastore-changed");
await SelectableProfileService.setDBPref(DAU_GROUPID_PREF_NAME, worstUUID);
await dbChangedPromise;
await SelectableProfileService.loadSharedPrefsFromDatabase();
dbUUID = await SelectableProfileService.getDBPref(DAU_GROUPID_PREF_NAME);
Assert.equal(
dbUUID,
worstUUID,
`${DAU_GROUPID_PREF_NAME} should be ${worstUUID}`
);
Assert.equal(
Services.prefs.getStringPref(DAU_GROUPID_PREF_NAME, ""),
middleUUID,
`${DAU_GROUPID_PREF_NAME} should still be ${middleUUID}`
);
// Now init the SelectableProfileService and confirm that we set the
// DAU_GROUPID_PREF_NAME to our pref value in the db.
await SelectableProfileService.uninit();
await SelectableProfileService.init();
dbUUID = await SelectableProfileService.getDBPref(DAU_GROUPID_PREF_NAME);
Assert.equal(
dbUUID,
middleUUID,
`${DAU_GROUPID_PREF_NAME} should now be ${middleUUID}`
);
Assert.equal(
Services.prefs.getStringPref(DAU_GROUPID_PREF_NAME, ""),
middleUUID,
`${DAU_GROUPID_PREF_NAME} should still be ${middleUUID}`
);
// Set the DAU_GROUPID_PREF_NAME to a better value in the db and then load
// the prefs from the db. The pref should be updated to the better value.
dbChangedPromise = lazy.TestUtils.topicObserved("pds-datastore-changed");
await SelectableProfileService.setDBPref(DAU_GROUPID_PREF_NAME, bestUUID);
await dbChangedPromise;
await SelectableProfileService.loadSharedPrefsFromDatabase();
dbUUID = await SelectableProfileService.getDBPref(DAU_GROUPID_PREF_NAME);
Assert.equal(
dbUUID,
bestUUID,
`${DAU_GROUPID_PREF_NAME} should now be ${bestUUID}`
);
Assert.equal(
Services.prefs.getStringPref(DAU_GROUPID_PREF_NAME, ""),
bestUUID,
`${DAU_GROUPID_PREF_NAME} should now be ${bestUUID}`
);
});