/* -*- Mode: IDL; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" interface nsISimpleEnumerator; interface nsIFile; interface nsIToolkitProfile; interface nsIProfileLock; [scriptable, uuid(1947899b-f369-48fa-89da-f7c37bb1e6bc)] interface nsIToolkitProfileService : nsISupports { attribute boolean startWithLastProfile; readonly attribute nsISimpleEnumerator /*nsIToolkitProfile*/ profiles; /** * The currently selected profile (the one used or about to be used by the * browser). */ attribute nsIToolkitProfile selectedProfile; /** * The default profile (the one used or about to be used by the * browser if no other profile is specified at runtime). This is the profile * marked with Default=1 in profiles.ini and is usually the same as * selectedProfile, except on Developer Edition. * * Developer Edition uses a profile named "dev-edition-default" as the * default profile (which it creates if it doesn't exist), unless a special * empty file named "ignore-dev-edition-profile" is present next to * profiles.ini. In that case Developer Edition behaves the same as any * other build of Firefox. */ attribute nsIToolkitProfile defaultProfile; /** * Get a profile by name. This is mainly for use by the -P * commandline flag. * * @param aName The profile name to find. */ nsIToolkitProfile getProfileByName(in AUTF8String aName); /** * Lock an arbitrary path as a profile. If the path does not exist, it * will be created and the defaults copied from the application directory. */ nsIProfileLock lockProfilePath(in nsIFile aDirectory, in nsIFile aTempDirectory); /** * Create a new profile. * * The profile temporary directory will be chosen based on where the * profile directory is located. * * @param aRootDir * The profile directory. May be null, in which case a suitable * default will be chosen based on the profile name. * @param aName * The profile name. */ nsIToolkitProfile createProfile(in nsIFile aRootDir, in AUTF8String aName); /** * Returns the number of profiles. * @return the number of profiles. */ readonly attribute unsigned long profileCount; /** * Flush the profiles list file. */ void flush(); }; %{C++ #define NS_PROFILESERVICE_CONTRACTID "@mozilla.org/toolkit/profile-service;1" %}