| Index: chrome/browser/profiles/file_path_verifier_win.cc
|
| diff --git a/chrome/browser/profiles/file_path_verifier_win.cc b/chrome/browser/profiles/file_path_verifier_win.cc
|
| index 44d34a435bd3da2e652174c078940e8640151a0e..8ffe9ebb416b21c0ceb20f91802ba8381df78912 100644
|
| --- a/chrome/browser/profiles/file_path_verifier_win.cc
|
| +++ b/chrome/browser/profiles/file_path_verifier_win.cc
|
| @@ -9,6 +9,7 @@
|
| #include "base/file_util.h"
|
| #include "base/files/file_path.h"
|
| #include "base/metrics/histogram.h"
|
| +#include "chrome_elf/create_file/chrome_create_file.h"
|
|
|
| namespace {
|
|
|
| @@ -20,6 +21,9 @@ enum FileVerificationResult {
|
| FILE_VERIFICATION_FAILED_UNKNOWN,
|
| FILE_VERIFICATION_FAILED_SAMEBASE,
|
| FILE_VERIFICATION_FAILED_SAMEDIR,
|
| + FILE_VERIFICATION_SUCCESS_REDIRECT,
|
| + FILE_VERIFICATION_FAILED_SAMEBASE_REDIRECT,
|
| + FILE_VERIFICATION_FAILED_SAMEDIR_REDIRECT,
|
| NUM_FILE_VERIFICATION_RESULTS
|
| };
|
|
|
| @@ -28,6 +32,7 @@ FileVerificationResult VerifyFileAtPath(const base::FilePath& file) {
|
| FileVerificationResult file_verification_result =
|
| FILE_VERIFICATION_FAILED_UNKNOWN;
|
| base::FilePath normalized_path;
|
| + int redirect_count_before = ::GetRedirectCount();
|
| if (!base::NormalizeFilePath(file, &normalized_path)) {
|
| if (::GetLastError() == ERROR_FILE_NOT_FOUND)
|
| file_verification_result = FILE_VERIFICATION_FILE_NOT_FOUND;
|
| @@ -36,15 +41,24 @@ FileVerificationResult VerifyFileAtPath(const base::FilePath& file) {
|
| } else {
|
| internal::PathComparisonReason path_comparison_reason =
|
| internal::ComparePathsIgnoreCase(file, normalized_path);
|
| + // GetRedirectCount() tracks the number of CreateFile() calls that were
|
| + // redirected. If it has increased then the CreateFile() call made by
|
| + // base::NormalizeFilePath() was redirected.
|
| + bool was_redirected = ::GetRedirectCount() > redirect_count_before;
|
| switch (path_comparison_reason) {
|
| case internal::PATH_COMPARISON_EQUAL:
|
| - file_verification_result = FILE_VERIFICATION_SUCCESS;
|
| + file_verification_result = was_redirected ?
|
| + FILE_VERIFICATION_SUCCESS_REDIRECT : FILE_VERIFICATION_SUCCESS;
|
| break;
|
| case internal::PATH_COMPARISON_FAILED_SAMEBASE:
|
| - file_verification_result = FILE_VERIFICATION_FAILED_SAMEBASE;
|
| + file_verification_result = was_redirected ?
|
| + FILE_VERIFICATION_FAILED_SAMEBASE_REDIRECT :
|
| + FILE_VERIFICATION_FAILED_SAMEBASE;
|
| break;
|
| case internal::PATH_COMPARISON_FAILED_SAMEDIR:
|
| - file_verification_result = FILE_VERIFICATION_FAILED_SAMEDIR;
|
| + file_verification_result = was_redirected ?
|
| + FILE_VERIFICATION_FAILED_SAMEDIR_REDIRECT :
|
| + FILE_VERIFICATION_FAILED_SAMEDIR;
|
| break;
|
| }
|
| }
|
|
|