зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 6f6886c89554 (bug 1481819) for failing at url-classifier/tests/mochitest/test_classified_annotations.html
This commit is contained in:
Родитель
2183140f78
Коммит
f4cb8a59ba
|
@ -794,12 +794,16 @@ Classifier::ApplyUpdatesBackground(TableUpdateArray& aUpdates,
|
|||
|
||||
nsresult rv;
|
||||
|
||||
// Check point 1: Copying files takes time so we check |mUpdateInterrupted|
|
||||
// inside CopyInUseDirForUpdate().
|
||||
// Check point 1: Copying file takes time so we check here.
|
||||
if (mUpdateInterrupted) {
|
||||
LOG(("Update is interrupted. Don't copy files."));
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
rv = CopyInUseDirForUpdate(); // i.e. mUpdatingDirectory will be setup.
|
||||
if (NS_FAILED(rv)) {
|
||||
LOG(("Failed to copy in-use directory for update."));
|
||||
return (rv == NS_ERROR_ABORT) ? NS_OK : rv;
|
||||
return rv;
|
||||
}
|
||||
|
||||
LOG(("Applying %zu table updates.", aUpdates.Length()));
|
||||
|
@ -1092,64 +1096,6 @@ Classifier::DumpFailedUpdate()
|
|||
|
||||
#endif // MOZ_SAFEBROWSING_DUMP_FAILED_UPDATES
|
||||
|
||||
/**
|
||||
* This function copies the files one by one to the destination folder.
|
||||
* Before copying a file, it checks |mUpdateInterrupted| and returns
|
||||
* NS_ERROR_ABORT if the flag is set.
|
||||
*/
|
||||
nsresult
|
||||
Classifier::CopyDirectoryInterruptible(nsCOMPtr<nsIFile>& aDestDir, nsCOMPtr<nsIFile>& aSourceDir)
|
||||
{
|
||||
nsCOMPtr<nsIDirectoryEnumerator> entries;
|
||||
nsresult rv = aSourceDir->GetDirectoryEntries(getter_AddRefs(entries));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
MOZ_ASSERT(entries);
|
||||
|
||||
nsCOMPtr<nsIFile> source;
|
||||
while (NS_SUCCEEDED(rv = entries->GetNextFile(getter_AddRefs(source))) &&
|
||||
source) {
|
||||
if (mUpdateInterrupted) {
|
||||
LOG(("Update is interrupted. Aborting the directory copy"));
|
||||
return NS_ERROR_ABORT;
|
||||
}
|
||||
|
||||
bool isDirectory;
|
||||
rv = source->IsDirectory(&isDirectory);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (isDirectory) {
|
||||
// If it is a directory, recursively copy the files inside the directory.
|
||||
nsAutoCString leaf;
|
||||
source->GetNativeLeafName(leaf);
|
||||
MOZ_ASSERT(!leaf.IsEmpty());
|
||||
|
||||
nsCOMPtr<nsIFile> dest;
|
||||
aDestDir->Clone(getter_AddRefs(dest));
|
||||
dest->AppendNative(leaf);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = CopyDirectoryInterruptible(dest, source);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
} else {
|
||||
rv = source->CopyToNative(aDestDir, EmptyCString());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
}
|
||||
|
||||
// If the destination directory doesn't exist in the end, it means that the
|
||||
// source directory is empty, we should copy the directory here.
|
||||
bool exist;
|
||||
rv = aDestDir->Exists(&exist);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
if (!exist) {
|
||||
rv = aSourceDir->CopyToNative(aDestDir, EmptyCString());
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsresult
|
||||
Classifier::CopyInUseDirForUpdate()
|
||||
{
|
||||
|
@ -1158,15 +1104,17 @@ Classifier::CopyInUseDirForUpdate()
|
|||
// We copy everything from in-use directory to a temporary directory
|
||||
// for updating.
|
||||
|
||||
nsCString updatingDirName;
|
||||
nsresult rv = mUpdatingDirectory->GetNativeLeafName(updatingDirName);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// Remove the destination directory first (just in case) the do the copy.
|
||||
mUpdatingDirectory->Remove(true);
|
||||
if (!mRootStoreDirectoryForUpdate) {
|
||||
LOG(("mRootStoreDirectoryForUpdate is null."));
|
||||
return NS_ERROR_NULL_POINTER;
|
||||
}
|
||||
|
||||
nsresult rv = CopyDirectoryInterruptible(mUpdatingDirectory,
|
||||
mRootStoreDirectoryForUpdate);
|
||||
rv = mRootStoreDirectoryForUpdate->CopyToNative(nullptr, updatingDirName);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
|
|
|
@ -134,7 +134,6 @@ private:
|
|||
nsresult RecoverBackups();
|
||||
nsresult CleanToDelete();
|
||||
nsresult CopyInUseDirForUpdate();
|
||||
nsresult CopyDirectoryInterruptible(nsCOMPtr<nsIFile>& aDestDir, nsCOMPtr<nsIFile>& aSourceDir);
|
||||
nsresult RegenActiveTables();
|
||||
|
||||
void MergeNewLookupCaches(); // Merge mNewLookupCaches into mLookupCaches.
|
||||
|
|
Загрузка…
Ссылка в новой задаче