1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
/* 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);
}
);
|