Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test gets skipped with pattern: os == 'android'
- Manifest: toolkit/profile/test/xpcshell/xpcshell.toml
/* Any copyright is dedicated to the Public Domain.
/*
* Tests that the boolean ShowSelector attribute can be set in profiles.ini
* by setting the corresponding `showProfileSelector` attribute on a toolkit
* profile object. Also tests that StoreID must be nonempty to set
* ShowSelector, and deleting StoreID also deletes ShowSelector.
*/
add_task(
{
skip_if: () => !AppConstants.MOZ_SELECTABLE_PROFILES,
},
async () => {
let hash = xreDirProvider.getInstallHash();
let defaultProfile = makeRandomProfileDir("default");
let profilesIni = {
profiles: [
{
name: "default",
path: defaultProfile.leafName,
default: true,
},
],
installs: {
[hash]: {
default: defaultProfile.leafName,
},
},
};
writeProfilesIni(profilesIni);
let service = getProfileService();
// Before testing, verify the service is consistent with the input.
checkProfileService(profilesIni);
// Test that an error is thrown if we try to set ShowSelector when there is
// no StoreID.
let { profile } = selectStartupProfile();
Assert.throws(
() => (profile.showProfileSelector = true),
e => e.result == Cr.NS_ERROR_FAILURE,
"Cannot set ShowSelector if StoreID is missing"
);
// Now, set a StoreID and test that we can set ShowSelector.
profile.storeID = "12345678";
profile.showProfileSelector = true;
service.flush();
// Expected value of the database.
profilesIni.profiles[0].storeID = "12345678";
profilesIni.profiles[0].showSelector = "1";
// Check expected against actual database state.
checkProfileService(profilesIni);
// Next, flip the value to false, and verify again.
profile.showProfileSelector = false;
service.flush();
profilesIni.profiles[0].showSelector = "0";
checkProfileService(profilesIni);
// Finally, verify that clearing storeID also clears ShowSelector.
profile.showProfileSelector = true;
profile.storeID = null;
service.flush();
delete profilesIni.profiles[0].storeID;
delete profilesIni.profiles[0].showSelector;
checkProfileService(profilesIni);
}
);