72 lines
2.2 KiB
JavaScript
72 lines
2.2 KiB
JavaScript
/* Any copyright is dedicated to the Public Domain.
|
|
http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
|
|
/*
|
|
* 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);
|
|
}
|
|
);
|