Bug 1034912, part 1 - Add fixes for B2G-specific uses of ~DeviceStorageFile. r=mccr8

This commit is contained in:
Dave Hylands 2014-07-31 10:05:59 -07:00
parent 2300c8c15a
commit aeb223bef4
2 changed files with 13 additions and 12 deletions

View File

@ -4365,15 +4365,15 @@ nsDOMDeviceStorage::Observe(nsISupports *aSubject,
return NS_OK;
}
DeviceStorageFile dsf(mStorageType, mStorageName);
nsRefPtr<DeviceStorageFile> dsf(new DeviceStorageFile(mStorageType, mStorageName));
nsString status, storageStatus;
// Get Status (one of "available, unavailable, shared")
dsf.GetStatus(status);
dsf->GetStatus(status);
DispatchStatusChangeEvent(status);
// Get real volume status (defined in dom/system/gonk/nsIVolume.idl)
dsf.GetStorageStatus(storageStatus);
dsf->GetStorageStatus(storageStatus);
DispatchStorageStatusChangeEvent(storageStatus);
return NS_OK;
}

View File

@ -344,20 +344,21 @@ static nsresult GetDownloadDirectory(nsIFile **_directory,
nsDOMDeviceStorage::GetDefaultStorageName(NS_LITERAL_STRING("sdcard"),
storageName);
DeviceStorageFile dsf(NS_LITERAL_STRING("sdcard"),
storageName,
NS_LITERAL_STRING("downloads"));
NS_ENSURE_TRUE(dsf.mFile, NS_ERROR_FILE_ACCESS_DENIED);
nsRefPtr<DeviceStorageFile> dsf(
new DeviceStorageFile(NS_LITERAL_STRING("sdcard"),
storageName,
NS_LITERAL_STRING("downloads")));
NS_ENSURE_TRUE(dsf->mFile, NS_ERROR_FILE_ACCESS_DENIED);
// If we're not checking for availability we're done.
if (aSkipChecks) {
dsf.mFile.forget(_directory);
dsf->mFile.forget(_directory);
return NS_OK;
}
// Check device storage status before continuing.
nsString storageStatus;
dsf.GetStatus(storageStatus);
dsf->GetStatus(storageStatus);
// If we get an "unavailable" status, it means the sd card is not present.
// We'll also catch internal errors by looking for an empty string and assume
@ -374,13 +375,13 @@ static nsresult GetDownloadDirectory(nsIFile **_directory,
}
bool alreadyThere;
nsresult rv = dsf.mFile->Exists(&alreadyThere);
nsresult rv = dsf->mFile->Exists(&alreadyThere);
NS_ENSURE_SUCCESS(rv, rv);
if (!alreadyThere) {
rv = dsf.mFile->Create(nsIFile::DIRECTORY_TYPE, 0770);
rv = dsf->mFile->Create(nsIFile::DIRECTORY_TYPE, 0770);
NS_ENSURE_SUCCESS(rv, rv);
}
dir = dsf.mFile;
dir = dsf->mFile;
#elif defined(ANDROID)
// On mobile devices, we are avoiding exposing users to the file
// system, and don't save downloads to temp directories