mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-05 15:28:39 +09:00
Mypal portable mode
This commit is contained in:
parent
32c50fd018
commit
633ef1c426
24 changed files with 299 additions and 25 deletions
|
|
@ -112,7 +112,7 @@ public:
|
|||
private:
|
||||
friend class nsToolkitProfile;
|
||||
friend class nsToolkitProfileFactory;
|
||||
friend nsresult NS_NewToolkitProfileService(nsIToolkitProfileService**);
|
||||
friend nsresult NS_NewToolkitProfileService(nsIToolkitProfileService**,uint32_t);
|
||||
|
||||
nsToolkitProfileService() :
|
||||
mDirty(false),
|
||||
|
|
@ -126,7 +126,7 @@ private:
|
|||
gService = nullptr;
|
||||
}
|
||||
|
||||
nsresult Init();
|
||||
nsresult Init(uint32_t portable);
|
||||
|
||||
nsresult CreateTimesInternal(nsIFile *profileDir);
|
||||
|
||||
|
|
@ -382,16 +382,30 @@ NS_IMPL_ISUPPORTS(nsToolkitProfileService,
|
|||
nsIToolkitProfileService)
|
||||
|
||||
nsresult
|
||||
nsToolkitProfileService::Init()
|
||||
nsToolkitProfileService::Init(uint32_t portable)
|
||||
{
|
||||
|
||||
NS_ASSERTION(gDirServiceProvider, "No dirserviceprovider!");
|
||||
nsresult rv;
|
||||
|
||||
rv = gDirServiceProvider->GetUserAppDataDirectory(getter_AddRefs(mAppData));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if(portable>0){
|
||||
nsCOMPtr<nsIFile> appFile;
|
||||
bool per = false;
|
||||
rv = gDirServiceProvider->GetFile(XRE_EXECUTABLE_FILE, &per, getter_AddRefs(appFile));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = appFile->GetParent(getter_AddRefs(mAppData));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
rv = appFile->GetParent(getter_AddRefs(mTempData));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = gDirServiceProvider->GetUserLocalDataDirectory(getter_AddRefs(mTempData));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
else{
|
||||
rv = gDirServiceProvider->GetUserAppDataDirectory(getter_AddRefs(mAppData));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = gDirServiceProvider->GetUserLocalDataDirectory(getter_AddRefs(mTempData));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
rv = mAppData->Clone(getter_AddRefs(mListFile));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
|
@ -969,6 +983,13 @@ nsToolkitProfileService::Flush()
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsToolkitProfileService::Portable(uint32_t *aResult)
|
||||
{
|
||||
return gDirServiceProvider->Portable(aResult);
|
||||
}
|
||||
|
||||
NS_IMPL_ISUPPORTS(nsToolkitProfileFactory, nsIFactory)
|
||||
|
||||
NS_IMETHODIMP
|
||||
|
|
@ -981,7 +1002,7 @@ nsToolkitProfileFactory::CreateInstance(nsISupports* aOuter, const nsID& aIID,
|
|||
nsCOMPtr<nsIToolkitProfileService> profileService =
|
||||
nsToolkitProfileService::gService;
|
||||
if (!profileService) {
|
||||
nsresult rv = NS_NewToolkitProfileService(getter_AddRefs(profileService));
|
||||
nsresult rv = NS_NewToolkitProfileService(getter_AddRefs(profileService),0);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
}
|
||||
|
|
@ -1006,12 +1027,12 @@ NS_NewToolkitProfileFactory(nsIFactory* *aResult)
|
|||
}
|
||||
|
||||
nsresult
|
||||
NS_NewToolkitProfileService(nsIToolkitProfileService* *aResult)
|
||||
NS_NewToolkitProfileService(nsIToolkitProfileService* *aResult,uint32_t portable)
|
||||
{
|
||||
nsToolkitProfileService* profileService = new nsToolkitProfileService();
|
||||
if (!profileService)
|
||||
return NS_ERROR_OUT_OF_MEMORY;
|
||||
nsresult rv = profileService->Init();
|
||||
nsresult rv = profileService->Init(portable);
|
||||
if (NS_FAILED(rv)) {
|
||||
NS_ERROR("nsToolkitProfileService::Init failed!");
|
||||
delete profileService;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue