mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-02-04 13:07:52 +00:00
Bug 1290481 - P9: Implement a function to get overall padding size for an origin from cache.sqlite. r=bkelly
MozReview-Commit-ID: KlVsaGhpABk --HG-- extra : rebase_source : a6956325cfdf6f11a4bcf66d41b8d4706ae4e1e7
This commit is contained in:
parent
8eb68da410
commit
67d7727ec0
31
dom/cache/DBSchema.cpp
vendored
31
dom/cache/DBSchema.cpp
vendored
@ -698,6 +698,37 @@ FindOrphanedCacheIds(mozIStorageConnection* aConn,
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
FindOverallPaddingSize(mozIStorageConnection* aConn,
|
||||
int64_t* aOverallPaddingSizeOut)
|
||||
{
|
||||
MOZ_DIAGNOSTIC_ASSERT(aConn);
|
||||
MOZ_DIAGNOSTIC_ASSERT(aOverallPaddingSizeOut);
|
||||
|
||||
nsCOMPtr<mozIStorageStatement> state;
|
||||
nsresult rv = aConn->CreateStatement(NS_LITERAL_CSTRING(
|
||||
"SELECT response_padding_size FROM entries "
|
||||
"WHERE response_padding_size IS NOT NULL;"
|
||||
), getter_AddRefs(state));
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
int64_t overallPaddingSize = 0;
|
||||
bool hasMoreData = false;
|
||||
while (NS_SUCCEEDED(state->ExecuteStep(&hasMoreData)) && hasMoreData) {
|
||||
int64_t padding_size = 0;
|
||||
rv = state->GetInt64(0, &padding_size);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
MOZ_DIAGNOSTIC_ASSERT(padding_size >= 0);
|
||||
MOZ_DIAGNOSTIC_ASSERT(INT64_MAX - padding_size >= overallPaddingSize);
|
||||
overallPaddingSize += padding_size;
|
||||
}
|
||||
|
||||
*aOverallPaddingSizeOut = overallPaddingSize;
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
GetKnownBodyIds(mozIStorageConnection* aConn, nsTArray<nsID>& aBodyIdListOut)
|
||||
{
|
||||
|
4
dom/cache/DBSchema.h
vendored
4
dom/cache/DBSchema.h
vendored
@ -54,6 +54,10 @@ nsresult
|
||||
FindOrphanedCacheIds(mozIStorageConnection* aConn,
|
||||
nsTArray<CacheId>& aOrphanedListOut);
|
||||
|
||||
nsresult
|
||||
FindOverallPaddingSize(mozIStorageConnection* aConn,
|
||||
int64_t* aOverallPaddingSizeOut);
|
||||
|
||||
nsresult
|
||||
GetKnownBodyIds(mozIStorageConnection* aConn, nsTArray<nsID>& aBodyIdListOut);
|
||||
|
||||
|
21
dom/cache/FileUtils.cpp
vendored
21
dom/cache/FileUtils.cpp
vendored
@ -809,7 +809,10 @@ LockedMaybeUpdateDirectoryPaddingFile(nsIFile* aBaseDir,
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
}
|
||||
|
||||
// XXXtt: will have a function to retore from db.
|
||||
// We don't need to add the aIncreaseSize or aDecreaseSize here, because
|
||||
// it's already encompassed within the database.
|
||||
rv = db::FindOverallPaddingSize(aConn, ¤tPaddingSize);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
} else {
|
||||
if (aIncreaseSize > 0) {
|
||||
MOZ_DIAGNOSTIC_ASSERT(INT64_MAX - currentPaddingSize >= aIncreaseSize);
|
||||
@ -820,6 +823,14 @@ LockedMaybeUpdateDirectoryPaddingFile(nsIFile* aBaseDir,
|
||||
MOZ_DIAGNOSTIC_ASSERT(currentPaddingSize >= aDecreaseSize);
|
||||
currentPaddingSize -= aDecreaseSize;
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
int64_t paddingSizeFromDB = 0;
|
||||
rv = db::FindOverallPaddingSize(aConn, &paddingSizeFromDB);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
MOZ_DIAGNOSTIC_ASSERT(paddingSizeFromDB == currentPaddingSize);
|
||||
#endif // DEBUG
|
||||
}
|
||||
|
||||
MOZ_DIAGNOSTIC_ASSERT(currentPaddingSize >= 0);
|
||||
@ -882,7 +893,13 @@ LockedDirectoryPaddingRestore(nsIFile* aBaseDir, mozIStorageConnection* aConn)
|
||||
rv = LockedDirectoryPaddingDeleteFile(aBaseDir, DirPaddingFile::FILE);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
// XXXtt: will have a function to retore from db.
|
||||
int64_t paddingSize = 0;
|
||||
rv = db::FindOverallPaddingSize(aConn, &paddingSize);
|
||||
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
|
||||
|
||||
MOZ_DIAGNOSTIC_ASSERT(paddingSize >= 0);
|
||||
|
||||
LockedDirectoryPaddingWrite(aBaseDir, DirPaddingFile::FILE, paddingSize);
|
||||
|
||||
return rv;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user