зеркало из https://github.com/mozilla/gecko-dev.git
Bug 727370 - Recover correctly from a Reset during an update. r=dcamp
This commit is contained in:
Родитель
44872d00c9
Коммит
abb9245bcc
|
@ -149,6 +149,28 @@ Classifier::SetupPathNames()
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
Classifier::CreateStoreDirectory()
|
||||
{
|
||||
// Ensure the safebrowsing directory exists.
|
||||
bool storeExists;
|
||||
nsresult rv = mStoreDirectory->Exists(&storeExists);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (!storeExists) {
|
||||
rv = mStoreDirectory->Create(nsIFile::DIRECTORY_TYPE, 0755);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else {
|
||||
bool storeIsDir;
|
||||
rv = mStoreDirectory->IsDirectory(&storeIsDir);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!storeIsDir)
|
||||
return NS_ERROR_FILE_DESTINATION_NOT_DIR;
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
Classifier::Open(nsIFile& aCacheDirectory)
|
||||
{
|
||||
|
@ -169,22 +191,10 @@ Classifier::Open(nsIFile& aCacheDirectory)
|
|||
rv = RecoverBackups();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Ensure the safebrowsing directory exists.
|
||||
bool storeExists;
|
||||
rv = mStoreDirectory->Exists(&storeExists);
|
||||
// Make sure the main store directory exists.
|
||||
rv = CreateStoreDirectory();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (!storeExists) {
|
||||
rv = mStoreDirectory->Create(nsIFile::DIRECTORY_TYPE, 0755);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else {
|
||||
bool storeIsDir;
|
||||
rv = mStoreDirectory->IsDirectory(&storeIsDir);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!storeIsDir)
|
||||
return NS_ERROR_FILE_DESTINATION_NOT_DIR;
|
||||
}
|
||||
|
||||
mCryptoHash = do_CreateInstance(NS_CRYPTO_HASH_CONTRACTID, &rv);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
|
@ -219,6 +229,8 @@ Classifier::Reset()
|
|||
mBackupDirectory->Remove(true);
|
||||
mToDeleteDirectory->Remove(true);
|
||||
|
||||
CreateStoreDirectory();
|
||||
|
||||
mTableFreshness.Clear();
|
||||
RegenActiveTables();
|
||||
}
|
||||
|
|
|
@ -71,6 +71,7 @@ public:
|
|||
PrefixArray* aNoiseEntries);
|
||||
private:
|
||||
void DropStores();
|
||||
nsresult CreateStoreDirectory();
|
||||
nsresult SetupPathNames();
|
||||
nsresult RecoverBackups();
|
||||
nsresult CleanToDelete();
|
||||
|
|
|
@ -454,7 +454,7 @@ function run_test()
|
|||
testValidForwardMAC,
|
||||
testInvalidForwardMAC,
|
||||
testNoForwardMAC,
|
||||
testRekey,
|
||||
testRekey
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче