Source code
Revision control
Copy as Markdown
Other Tools
Test Info:
/* Any copyright is dedicated to the Public Domain.
"use strict";
// If we think profiles have been created but there is no current profile in the database but there
// are other profiles we should create the current profile entry.
add_task(async function test_recover_database() {
startProfileService();
const SelectableProfileService = getSelectableProfileService();
const ProfilesDatastoreService = getProfilesDatastoreService();
await ProfilesDatastoreService.init();
let db = await ProfilesDatastoreService.getConnection();
let rootDir = getProfileService().currentProfile.rootDir.clone();
rootDir.leafName = "other";
let otherPath = getRelativeProfilePath(rootDir);
// Inject some other profile into the database
await db.execute(
`INSERT INTO Profiles VALUES (NULL, :path, :name, :avatar, :themeId, :themeFg, :themeBg);`,
{
path: otherPath,
name: "Fake Profile",
avatar: "book",
themeId: "default",
themeFg: "",
themeBg: "",
}
);
let toolkitProfile = getProfileService().currentProfile;
toolkitProfile.storeID = await ProfilesDatastoreService.storeID;
Services.prefs.setBoolPref("browser.profiles.enabled", true);
Services.prefs.setBoolPref("browser.profiles.created", true);
await SelectableProfileService.init();
Assert.ok(SelectableProfileService.isEnabled, "Service should be enabled");
Assert.ok(
Services.prefs.getBoolPref("browser.profiles.created", false),
"Should have kept the profile created state."
);
Assert.equal(
toolkitProfile.storeID,
await ProfilesDatastoreService.storeID,
"Should not have cleared the store ID"
);
Assert.ok(
SelectableProfileService.currentProfile,
"Should have created the current profile"
);
let profiles = await SelectableProfileService.getAllProfiles();
Assert.equal(profiles.length, 2, "Should be two profiles in the database");
let newProfile = await SelectableProfileService.createNewProfile(false);
Assert.ok(newProfile, "Should have created a new profile");
profiles = await SelectableProfileService.getAllProfiles();
Assert.equal(profiles.length, 3, "Should be three profiles in the database");
});