Index: chrome/browser/chromeos/file_manager/path_util.cc |
diff --git a/chrome/browser/chromeos/file_manager/path_util.cc b/chrome/browser/chromeos/file_manager/path_util.cc |
index 91ef187378e27625063176e6e618fea55178f699..f043fdf564bb18148120bbadd6307ea930ad2173 100644 |
--- a/chrome/browser/chromeos/file_manager/path_util.cc |
+++ b/chrome/browser/chromeos/file_manager/path_util.cc |
@@ -11,6 +11,7 @@ |
#include "chrome/browser/chromeos/drive/file_system_util.h" |
#include "chrome/browser/chromeos/login/user.h" |
#include "chrome/browser/chromeos/login/user_manager.h" |
+#include "chrome/browser/chromeos/profiles/profile_helper.h" |
#include "chrome/browser/download/download_prefs.h" |
#include "chrome/browser/profiles/profile.h" |
#include "net/base/escape.h" |
@@ -25,8 +26,6 @@ const base::FilePath::CharType kOldDownloadsFolderPath[] = |
FILE_PATH_LITERAL("/home/chronos/user/Downloads"); |
const base::FilePath::CharType kOldDriveFolderPath[] = |
FILE_PATH_LITERAL("/special/drive"); |
-const base::FilePath::CharType kNoHashDriveFolderPath[] = |
- FILE_PATH_LITERAL("/special/drive-"); |
} // namespace |
@@ -60,19 +59,32 @@ bool MigratePathFromOldFormat(Profile* profile, |
const base::FilePath downloads = GetDownloadsFolderForProfile(profile); |
const base::FilePath drive = drive::util::GetDriveMountPointPath(profile); |
- const base::FilePath bases[][2] = { |
- {base::FilePath(kOldDownloadsFolderPath), downloads}, |
- {DownloadPrefs::GetDefaultDownloadDirectory(), downloads}, |
- {base::FilePath(kOldDriveFolderPath), drive}, |
- // TODO(kinaba): http://crbug.com/341284 Remove after M34 branching. |
- // For a short period we incorrectly set "/special/drive-" as the Drive path |
- // that needs to be fixed. |
- {base::FilePath(kNoHashDriveFolderPath), drive}, |
- }; |
- |
- for (size_t i = 0; i < arraysize(bases); ++i) { |
- const base::FilePath& old_base = bases[i][0]; |
- const base::FilePath& new_base = bases[i][1]; |
+ |
+ std::vector<std::pair<base::FilePath, base::FilePath> > bases; |
+ bases.push_back(std::make_pair(base::FilePath(kOldDownloadsFolderPath), |
+ downloads)); |
+ bases.push_back(std::make_pair(DownloadPrefs::GetDefaultDownloadDirectory(), |
+ downloads)); |
+ bases.push_back(std::make_pair(base::FilePath(kOldDriveFolderPath), drive)); |
+ |
+ // Trying migrating u-<hash>/Downloads to the current download path. This is |
+ // no-op when multi-profile is enabled. This is necessary for (1) back |
+ // migration when multi-profile flag is enabled and then disabled, or (2) in |
+ // some edge cases (crbug.com/356322) that u-<hash> path is temporarily used. |
+ if (chromeos::UserManager::IsInitialized()) { |
+ const chromeos::User* user = |
hirono
2014/03/28 02:05:35
nit: const chromeos::User* const user
kinaba
2014/03/28 02:11:06
Done.
|
+ chromeos::UserManager::Get()->GetUserByProfile(profile); |
+ if (user) { |
+ base::FilePath hashed_downloads = |
hirono
2014/03/28 02:05:35
nit: const base::FilePath
kinaba
2014/03/28 02:11:06
Done.
|
+ chromeos::ProfileHelper::GetProfilePathByUserIdHash( |
+ user->username_hash()).AppendASCII(kDownloadsFolderName); |
+ bases.push_back(std::make_pair(hashed_downloads, downloads)); |
+ } |
+ } |
+ |
+ for (size_t i = 0; i < bases.size(); ++i) { |
+ const base::FilePath& old_base = bases[i].first; |
+ const base::FilePath& new_base = bases[i].second; |
base::FilePath relative; |
if (old_path == old_base || |
old_base.AppendRelativePath(old_path, &relative)) { |