OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/file_manager/path_util.h" | 5 #include "chrome/browser/chromeos/file_manager/path_util.h" |
6 | 6 |
7 #include "base/files/file_path.h" | 7 #include "base/files/file_path.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
| 10 #include "base/sys_info.h" |
10 #include "chrome/browser/chromeos/drive/file_system_util.h" | 11 #include "chrome/browser/chromeos/drive/file_system_util.h" |
| 12 #include "chrome/browser/profiles/profile.h" |
11 | 13 |
12 namespace file_manager { | 14 namespace file_manager { |
13 namespace util { | 15 namespace util { |
14 | 16 |
15 const char kDownloadsFolderName[] = "Downloads"; | 17 const char kDownloadsFolderName[] = "Downloads"; |
16 const base::FilePath::CharType kOldDownloadsFolderPath[] = | 18 const base::FilePath::CharType kOldDownloadsFolderPath[] = |
17 FILE_PATH_LITERAL("/home/chronos/user/Downloads"); | 19 FILE_PATH_LITERAL("/home/chronos/user/Downloads"); |
18 | 20 |
19 base::FilePath GetDownloadsFolderForProfile(Profile* profile) { | 21 base::FilePath GetDownloadsFolderForProfile(Profile* profile) { |
20 // TODO(kinaba) crbug/309556: "Downloads" directory should be per-profile. | 22 if (!base::SysInfo::IsRunningOnChromeOS()) { |
21 // | 23 // On the developer run on Linux desktop build, user $HOME/Downloads |
22 // For this to be per-profile, a unique directory path from profile->GetPath() | 24 // for ease for accessing local files for debugging. |
23 // should be used rather than the HOME directory. We'll switch to the new path | 25 base::FilePath path; |
24 // once we have upgraded all code locations assuming the old path. | 26 CHECK(PathService::Get(base::DIR_HOME, &path)); |
25 base::FilePath path; | 27 return path.AppendASCII(kDownloadsFolderName); |
26 CHECK(PathService::Get(base::DIR_HOME, &path)); | 28 } |
27 return path.AppendASCII(kDownloadsFolderName); | 29 |
| 30 return profile->GetPath().AppendASCII(kDownloadsFolderName); |
28 } | 31 } |
29 | 32 |
30 bool MigratePathFromOldFormat(Profile* profile, | 33 bool MigratePathFromOldFormat(Profile* profile, |
31 const base::FilePath& old_path, | 34 const base::FilePath& old_path, |
32 base::FilePath* new_path) { | 35 base::FilePath* new_path) { |
33 // /special/drive/xxx => /special/drive/root/xxx | 36 // /special/drive/xxx => /special/drive/root/xxx |
34 if (drive::util::NeedsNamespaceMigration(old_path)) { | 37 if (drive::util::NeedsNamespaceMigration(old_path)) { |
35 *new_path = drive::util::ConvertToMyDriveNamespace(old_path); | 38 *new_path = drive::util::ConvertToMyDriveNamespace(old_path); |
36 return true; | 39 return true; |
37 } | 40 } |
38 | 41 |
39 // /home/chronos/user/Downloads/xxx => /home/chronos/u-hash/Downloads/xxx | 42 // /home/chronos/user/Downloads/xxx => /home/chronos/u-hash/Downloads/xxx |
40 const base::FilePath old_base(kOldDownloadsFolderPath); | 43 const base::FilePath old_base(kOldDownloadsFolderPath); |
41 base::FilePath relative; | 44 base::FilePath relative; |
42 if (old_path == old_base || | 45 if (old_path == old_base || |
43 old_base.AppendRelativePath(old_path, &relative)) { | 46 old_base.AppendRelativePath(old_path, &relative)) { |
44 const base::FilePath new_base = GetDownloadsFolderForProfile(profile); | 47 const base::FilePath new_base = GetDownloadsFolderForProfile(profile); |
45 *new_path = new_base.Append(relative); | 48 *new_path = new_base.Append(relative); |
46 return old_path != *new_path; | 49 return old_path != *new_path; |
47 } | 50 } |
48 | 51 |
49 return false; | 52 return false; |
50 } | 53 } |
51 | 54 |
52 | 55 |
53 } // namespace util | 56 } // namespace util |
54 } // namespace file_manager | 57 } // namespace file_manager |
OLD | NEW |