Bug 1395202 - Part 1: Create nsICacheEntry::CacheEntryId. r=michal, f=junior,mayhemer

This commit is contained in:
Ho-Pang Hsu 2017-10-10 04:09:00 -04:00
Родитель 9a5a3a7722
Коммит f56a0fb03f
5 изменённых файлов: 33 добавлений и 2 удалений

Просмотреть файл

@ -191,6 +191,13 @@ NS_IMPL_ISUPPORTS(CacheEntry,
nsIRunnable, nsIRunnable,
CacheFileListener) CacheFileListener)
/* static */
uint64_t CacheEntry::GetNextId()
{
static Atomic<uint64_t, Relaxed> id(0);
return ++id;
}
CacheEntry::CacheEntry(const nsACString& aStorageID, CacheEntry::CacheEntry(const nsACString& aStorageID,
const nsACString& aURI, const nsACString& aURI,
const nsACString& aEnhanceID, const nsACString& aEnhanceID,
@ -217,6 +224,7 @@ CacheEntry::CacheEntry(const nsACString& aStorageID,
, mWriter(nullptr) , mWriter(nullptr)
, mPredictedDataSize(0) , mPredictedDataSize(0)
, mUseCount(0) , mUseCount(0)
, mCacheEntryId(GetNextId())
{ {
LOG(("CacheEntry::CacheEntry [this=%p]", this)); LOG(("CacheEntry::CacheEntry [this=%p]", this));
@ -1048,6 +1056,12 @@ NS_IMETHODIMP CacheEntry::GetKey(nsACString & aKey)
return NS_OK; return NS_OK;
} }
NS_IMETHODIMP CacheEntry::GetCacheEntryId(uint64_t *aCacheEntryId)
{
*aCacheEntryId = mCacheEntryId;
return NS_OK;
}
NS_IMETHODIMP CacheEntry::GetFetchCount(int32_t *aFetchCount) NS_IMETHODIMP CacheEntry::GetFetchCount(int32_t *aFetchCount)
{ {
NS_ENSURE_SUCCESS(mFileStatus, NS_ERROR_NOT_AVAILABLE); NS_ENSURE_SUCCESS(mFileStatus, NS_ERROR_NOT_AVAILABLE);

Просмотреть файл

@ -54,6 +54,8 @@ public:
NS_DECL_NSICACHEENTRY NS_DECL_NSICACHEENTRY
NS_DECL_NSIRUNNABLE NS_DECL_NSIRUNNABLE
static uint64_t GetNextId();
CacheEntry(const nsACString& aStorageID, const nsACString& aURI, const nsACString& aEnhanceID, CacheEntry(const nsACString& aStorageID, const nsACString& aURI, const nsACString& aEnhanceID,
bool aUseDisk, bool aSkipSizeCheck, bool aPin); bool aUseDisk, bool aSkipSizeCheck, bool aPin);
@ -383,6 +385,8 @@ private:
int64_t mPredictedDataSize; int64_t mPredictedDataSize;
mozilla::TimeStamp mLoadStart; mozilla::TimeStamp mLoadStart;
uint32_t mUseCount; uint32_t mUseCount;
const uint64_t mCacheEntryId;
}; };

Просмотреть файл

@ -346,13 +346,13 @@ _OldGetDiskConsumption::VisitEntry(const char * deviceID,
// _OldCacheEntryWrapper // _OldCacheEntryWrapper
_OldCacheEntryWrapper::_OldCacheEntryWrapper(nsICacheEntryDescriptor* desc) _OldCacheEntryWrapper::_OldCacheEntryWrapper(nsICacheEntryDescriptor* desc)
: mOldDesc(desc), mOldInfo(desc) : mOldDesc(desc), mOldInfo(desc), mCacheEntryId(CacheEntry::GetNextId())
{ {
LOG(("Creating _OldCacheEntryWrapper %p for descriptor %p", this, desc)); LOG(("Creating _OldCacheEntryWrapper %p for descriptor %p", this, desc));
} }
_OldCacheEntryWrapper::_OldCacheEntryWrapper(nsICacheEntryInfo* info) _OldCacheEntryWrapper::_OldCacheEntryWrapper(nsICacheEntryInfo* info)
: mOldDesc(nullptr), mOldInfo(info) : mOldDesc(nullptr), mOldInfo(info), mCacheEntryId(CacheEntry::GetNextId())
{ {
LOG(("Creating _OldCacheEntryWrapper %p for info %p", this, info)); LOG(("Creating _OldCacheEntryWrapper %p for info %p", this, info));
} }

Просмотреть файл

@ -115,6 +115,11 @@ public:
{ {
return mOldInfo->GetKey(aKey); return mOldInfo->GetKey(aKey);
} }
NS_IMETHOD GetCacheEntryId(uint64_t *aCacheEntryId) override
{
*aCacheEntryId = mCacheEntryId;
return NS_OK;
}
NS_IMETHOD GetFetchCount(int32_t *aFetchCount) override NS_IMETHOD GetFetchCount(int32_t *aFetchCount) override
{ {
return mOldInfo->GetFetchCount(aFetchCount); return mOldInfo->GetFetchCount(aFetchCount);
@ -176,6 +181,8 @@ private:
_OldCacheEntryWrapper() = delete; _OldCacheEntryWrapper() = delete;
nsICacheEntryDescriptor* mOldDesc; // ref holded in mOldInfo nsICacheEntryDescriptor* mOldDesc; // ref holded in mOldInfo
nsCOMPtr<nsICacheEntryInfo> mOldInfo; nsCOMPtr<nsICacheEntryInfo> mOldInfo;
const uint64_t mCacheEntryId;
}; };

Просмотреть файл

@ -27,6 +27,12 @@ interface nsICacheEntry : nsISupports
*/ */
readonly attribute ACString key; readonly attribute ACString key;
/**
* The unique ID for every nsICacheEntry instance, which can be used to check
* whether two pieces of information are from the same nsICacheEntry instance.
*/
readonly attribute uint64_t cacheEntryId;
/** /**
* Whether the entry is memory/only or persisted to disk. * Whether the entry is memory/only or persisted to disk.
* Note: private browsing entries are reported as persistent for consistency * Note: private browsing entries are reported as persistent for consistency