зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1234012 - Do not try to copy files from the non-existing default profile. r=bsmedberg
When creating the profile for the first time, we're trying to copy files that just don't exist, so we just skip that. No code in mozilla-central or comm-central was using the optional argument to pass a custom default profile either, so that goes away as well.
This commit is contained in:
Родитель
469d638e14
Коммит
6c9d3ffe68
|
@ -10,7 +10,7 @@ interface nsIFile;
|
||||||
interface nsIToolkitProfile;
|
interface nsIToolkitProfile;
|
||||||
interface nsIProfileLock;
|
interface nsIProfileLock;
|
||||||
|
|
||||||
[scriptable, uuid(b81c33a6-1ce8-4695-856b-02b7f15cc114)]
|
[scriptable, uuid(1947899b-f369-48fa-89da-f7c37bb1e6bc)]
|
||||||
interface nsIToolkitProfileService : nsISupports
|
interface nsIToolkitProfileService : nsISupports
|
||||||
{
|
{
|
||||||
attribute boolean startWithLastProfile;
|
attribute boolean startWithLastProfile;
|
||||||
|
@ -79,23 +79,17 @@ interface nsIToolkitProfileService : nsISupports
|
||||||
*
|
*
|
||||||
* @note Either aProfileName or aAppName must be non-empty
|
* @note Either aProfileName or aAppName must be non-empty
|
||||||
*
|
*
|
||||||
* The contents of aProfileDefaultsDir will be copied to the
|
|
||||||
* new profile directory.
|
|
||||||
*
|
|
||||||
* @param aProfileName
|
* @param aProfileName
|
||||||
* The name of the profile
|
* The name of the profile
|
||||||
* @param aAppName
|
* @param aAppName
|
||||||
* The name of the application
|
* The name of the application
|
||||||
* @param aVendorName
|
* @param aVendorName
|
||||||
* The name of the vendor
|
* The name of the vendor
|
||||||
* @param aProfileDefaultsDir
|
|
||||||
* The location where the profile defaults are.
|
|
||||||
* @return The created profile.
|
* @return The created profile.
|
||||||
*/
|
*/
|
||||||
nsIToolkitProfile createDefaultProfileForApp(in AUTF8String aProfileName,
|
nsIToolkitProfile createDefaultProfileForApp(in AUTF8String aProfileName,
|
||||||
in AUTF8String aAppName,
|
in AUTF8String aAppName,
|
||||||
in AUTF8String aVendorName,
|
in AUTF8String aVendorName);
|
||||||
[optional] in nsIFile aProfileDefaultsDir);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the number of profiles.
|
* Returns the number of profiles.
|
||||||
|
|
|
@ -135,7 +135,6 @@ private:
|
||||||
const nsACString* aProfileName,
|
const nsACString* aProfileName,
|
||||||
const nsACString* aAppName,
|
const nsACString* aAppName,
|
||||||
const nsACString* aVendorName,
|
const nsACString* aVendorName,
|
||||||
/*in*/ nsIFile** aProfileDefaultsDir,
|
|
||||||
bool aForExternalApp,
|
bool aForExternalApp,
|
||||||
nsIToolkitProfile** aResult);
|
nsIToolkitProfile** aResult);
|
||||||
|
|
||||||
|
@ -709,7 +708,6 @@ NS_IMETHODIMP
|
||||||
nsToolkitProfileService::CreateDefaultProfileForApp(const nsACString& aProfileName,
|
nsToolkitProfileService::CreateDefaultProfileForApp(const nsACString& aProfileName,
|
||||||
const nsACString& aAppName,
|
const nsACString& aAppName,
|
||||||
const nsACString& aVendorName,
|
const nsACString& aVendorName,
|
||||||
nsIFile* aProfileDefaultsDir,
|
|
||||||
nsIToolkitProfile** aResult)
|
nsIToolkitProfile** aResult)
|
||||||
{
|
{
|
||||||
NS_ENSURE_STATE(!aProfileName.IsEmpty() || !aAppName.IsEmpty());
|
NS_ENSURE_STATE(!aProfileName.IsEmpty() || !aAppName.IsEmpty());
|
||||||
|
@ -731,11 +729,10 @@ nsToolkitProfileService::CreateDefaultProfileForApp(const nsACString& aProfileNa
|
||||||
profilesini->Exists(&exists);
|
profilesini->Exists(&exists);
|
||||||
NS_ENSURE_FALSE(exists, NS_ERROR_ALREADY_INITIALIZED);
|
NS_ENSURE_FALSE(exists, NS_ERROR_ALREADY_INITIALIZED);
|
||||||
|
|
||||||
nsIFile* profileDefaultsDir = aProfileDefaultsDir;
|
|
||||||
rv = CreateProfileInternal(nullptr,
|
rv = CreateProfileInternal(nullptr,
|
||||||
NS_LITERAL_CSTRING("default"),
|
NS_LITERAL_CSTRING("default"),
|
||||||
&aProfileName, &aAppName, &aVendorName,
|
&aProfileName, &aAppName, &aVendorName,
|
||||||
&profileDefaultsDir, true, aResult);
|
true, aResult);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
NS_ENSURE_STATE(*aResult);
|
NS_ENSURE_STATE(*aResult);
|
||||||
|
|
||||||
|
@ -778,7 +775,7 @@ nsToolkitProfileService::CreateProfile(nsIFile* aRootDir,
|
||||||
nsIToolkitProfile** aResult)
|
nsIToolkitProfile** aResult)
|
||||||
{
|
{
|
||||||
return CreateProfileInternal(aRootDir, aName,
|
return CreateProfileInternal(aRootDir, aName,
|
||||||
nullptr, nullptr, nullptr, nullptr, false, aResult);
|
nullptr, nullptr, nullptr, false, aResult);
|
||||||
}
|
}
|
||||||
|
|
||||||
nsresult
|
nsresult
|
||||||
|
@ -787,7 +784,6 @@ nsToolkitProfileService::CreateProfileInternal(nsIFile* aRootDir,
|
||||||
const nsACString* aProfileName,
|
const nsACString* aProfileName,
|
||||||
const nsACString* aAppName,
|
const nsACString* aAppName,
|
||||||
const nsACString* aVendorName,
|
const nsACString* aVendorName,
|
||||||
nsIFile** aProfileDefaultsDir,
|
|
||||||
bool aForExternalApp,
|
bool aForExternalApp,
|
||||||
nsIToolkitProfile** aResult)
|
nsIToolkitProfile** aResult)
|
||||||
{
|
{
|
||||||
|
@ -849,7 +845,6 @@ nsToolkitProfileService::CreateProfileInternal(nsIFile* aRootDir,
|
||||||
return NS_ERROR_FILE_NOT_DIRECTORY;
|
return NS_ERROR_FILE_NOT_DIRECTORY;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
nsCOMPtr<nsIFile> profileDefaultsDir;
|
|
||||||
nsCOMPtr<nsIFile> profileDirParent;
|
nsCOMPtr<nsIFile> profileDirParent;
|
||||||
nsAutoString profileDirName;
|
nsAutoString profileDirName;
|
||||||
|
|
||||||
|
@ -859,22 +854,9 @@ nsToolkitProfileService::CreateProfileInternal(nsIFile* aRootDir,
|
||||||
rv = rootDir->GetLeafName(profileDirName);
|
rv = rootDir->GetLeafName(profileDirName);
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
|
|
||||||
if (aProfileDefaultsDir) {
|
// let's ensure that the profile directory exists.
|
||||||
profileDefaultsDir = *aProfileDefaultsDir;
|
rv = rootDir->Create(nsIFile::DIRECTORY_TYPE, 0700);
|
||||||
} else {
|
NS_ENSURE_SUCCESS(rv, rv);
|
||||||
bool dummy;
|
|
||||||
rv = gDirServiceProvider->GetFile(NS_APP_PROFILE_DEFAULTS_50_DIR, &dummy,
|
|
||||||
getter_AddRefs(profileDefaultsDir));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NS_SUCCEEDED(rv) && profileDefaultsDir)
|
|
||||||
rv = profileDefaultsDir->CopyTo(profileDirParent,
|
|
||||||
profileDirName);
|
|
||||||
if (NS_FAILED(rv) || !profileDefaultsDir) {
|
|
||||||
// if copying failed, lets just ensure that the profile directory exists.
|
|
||||||
rv = rootDir->Create(nsIFile::DIRECTORY_TYPE, 0700);
|
|
||||||
NS_ENSURE_SUCCESS(rv, rv);
|
|
||||||
}
|
|
||||||
rv = rootDir->SetPermissions(0700);
|
rv = rootDir->SetPermissions(0700);
|
||||||
#ifndef ANDROID
|
#ifndef ANDROID
|
||||||
// If the profile is on the sdcard, this will fail but its non-fatal
|
// If the profile is on the sdcard, this will fail but its non-fatal
|
||||||
|
|
Загрузка…
Ссылка в новой задаче