b=406849, SetCacheAsFile(true) on memory-cached loads is broken, patch from bz, r+sr=bisei, a=schrep

This commit is contained in:
vladimir@pobox.com 2007-12-07 14:07:03 -08:00
Родитель 1d116df124
Коммит 12078dfe43
1 изменённых файлов: 11 добавлений и 1 удалений

12
netwerk/cache/src/nsCacheEntryDescriptor.cpp поставляемый
Просмотреть файл

@ -322,7 +322,8 @@ nsCacheEntryDescriptor::GetStoragePolicy(nsCacheStoragePolicy *result)
nsCacheServiceAutoLock lock;
if (!mCacheEntry) return NS_ERROR_NOT_AVAILABLE;
return mCacheEntry->StoragePolicy();
*result = mCacheEntry->StoragePolicy();
return NS_OK;
}
@ -337,6 +338,15 @@ nsCacheEntryDescriptor::SetStoragePolicy(nsCacheStoragePolicy policy)
storageEnabled = nsCacheService::IsStorageEnabledForPolicy_Locked(policy);
if (!storageEnabled) return NS_ERROR_FAILURE;
// Don't change the storage policy of entries we can't write
if (!(mAccessGranted & ACCESS_WRITE))
return NS_ERROR_NOT_AVAILABLE;
// Don't allow a cache entry to move from memory-only to anything else
if (mCacheEntry->StoragePolicy() == nsICache::STORE_IN_MEMORY &&
policy != nsICache::STORE_IN_MEMORY)
return NS_ERROR_NOT_AVAILABLE;
mCacheEntry->SetStoragePolicy(policy);
mCacheEntry->MarkEntryDirty();
return NS_OK;