OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/open_util.h" | 5 #include "chrome/browser/chromeos/file_manager/open_util.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/files/file_path.h" | 8 #include "base/files/file_path.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/strings/utf_string_conversions.h" | 10 #include "base/strings/utf_string_conversions.h" |
11 #include "chrome/browser/chromeos/drive/file_system_util.h" | 11 #include "chrome/browser/chromeos/drive/file_system_util.h" |
12 #include "chrome/browser/chromeos/file_manager/app_id.h" | 12 #include "chrome/browser/chromeos/file_manager/app_id.h" |
13 #include "chrome/browser/chromeos/file_manager/file_browser_handlers.h" | 13 #include "chrome/browser/chromeos/file_manager/file_browser_handlers.h" |
14 #include "chrome/browser/chromeos/file_manager/file_tasks.h" | 14 #include "chrome/browser/chromeos/file_manager/file_tasks.h" |
15 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" | 15 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" |
16 #include "chrome/browser/chromeos/file_manager/mime_util.h" | 16 #include "chrome/browser/chromeos/file_manager/mime_util.h" |
| 17 #include "chrome/browser/chromeos/file_manager/path_util.h" |
17 #include "chrome/browser/chromeos/file_manager/url_util.h" | 18 #include "chrome/browser/chromeos/file_manager/url_util.h" |
18 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" | 19 #include "chrome/browser/extensions/api/file_handlers/app_file_handler_util.h" |
19 #include "chrome/browser/extensions/extension_service.h" | 20 #include "chrome/browser/extensions/extension_service.h" |
20 #include "chrome/browser/profiles/profile.h" | 21 #include "chrome/browser/profiles/profile.h" |
21 #include "chrome/browser/ui/browser.h" | 22 #include "chrome/browser/ui/browser.h" |
22 #include "chrome/browser/ui/browser_finder.h" | 23 #include "chrome/browser/ui/browser_finder.h" |
23 #include "chrome/browser/ui/browser_tabstrip.h" | 24 #include "chrome/browser/ui/browser_tabstrip.h" |
24 #include "chrome/browser/ui/browser_window.h" | 25 #include "chrome/browser/ui/browser_window.h" |
25 #include "chrome/browser/ui/extensions/application_launch.h" | 26 #include "chrome/browser/ui/extensions/application_launch.h" |
26 #include "chrome/browser/ui/simple_message_box.h" | 27 #include "chrome/browser/ui/simple_message_box.h" |
(...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
200 | 201 |
201 } // namespace | 202 } // namespace |
202 | 203 |
203 void OpenRemovableDrive(Profile* profile, const base::FilePath& file_path) { | 204 void OpenRemovableDrive(Profile* profile, const base::FilePath& file_path) { |
204 OpenFileManagerWithInternalActionId(profile, file_path, "auto-open"); | 205 OpenFileManagerWithInternalActionId(profile, file_path, "auto-open"); |
205 } | 206 } |
206 | 207 |
207 void OpenItem(Profile* profile, const base::FilePath& file_path) { | 208 void OpenItem(Profile* profile, const base::FilePath& file_path) { |
208 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 209 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
209 | 210 |
| 211 // The path may have been stored in preferences in old versions. |
| 212 // We need migration here. |
| 213 // TODO(kinaba): crbug.com/313539 remove it in the future. |
| 214 base::FilePath path; |
| 215 if (!util::MigratePathFromOldFormat(profile, file_path, &path)) |
| 216 path = file_path; |
| 217 |
210 GURL url; | 218 GURL url; |
211 if (!ConvertAbsoluteFilePathToFileSystemUrl( | 219 if (!ConvertAbsoluteFilePathToFileSystemUrl( |
212 profile, file_path, kFileManagerAppId, &url) || | 220 profile, path, kFileManagerAppId, &url) || |
213 !GrantFileSystemAccessToFileBrowser(profile)) { | 221 !GrantFileSystemAccessToFileBrowser(profile)) { |
214 ShowWarningMessageBox(profile, file_path); | 222 ShowWarningMessageBox(profile, path); |
215 return; | 223 return; |
216 } | 224 } |
217 | 225 |
218 scoped_refptr<fileapi::FileSystemContext> file_system_context = | 226 scoped_refptr<fileapi::FileSystemContext> file_system_context = |
219 GetFileSystemContextForExtensionId( | 227 GetFileSystemContextForExtensionId( |
220 profile, kFileManagerAppId); | 228 profile, kFileManagerAppId); |
221 | 229 |
222 CheckIfDirectoryExists(file_system_context, url, | 230 CheckIfDirectoryExists(file_system_context, url, |
223 base::Bind(&ContinueOpenItem, profile, file_path)); | 231 base::Bind(&ContinueOpenItem, profile, path)); |
224 } | 232 } |
225 | 233 |
226 void ShowItemInFolder(Profile* profile, const base::FilePath& file_path) { | 234 void ShowItemInFolder(Profile* profile, const base::FilePath& file_path) { |
| 235 // The path may have been stored in preferences in old versions. |
| 236 // We need migration here. |
| 237 // TODO(kinaba): crbug.com/313539 remove it in the future. |
| 238 base::FilePath path; |
| 239 if (!util::MigratePathFromOldFormat(profile, file_path, &path)) |
| 240 path = file_path; |
| 241 |
227 // This action changes the selection so we do not reuse existing tabs. | 242 // This action changes the selection so we do not reuse existing tabs. |
228 OpenFileManagerWithInternalActionId(profile, file_path, "select"); | 243 OpenFileManagerWithInternalActionId(profile, path, "select"); |
229 } | 244 } |
230 | 245 |
231 } // namespace util | 246 } // namespace util |
232 } // namespace file_manager | 247 } // namespace file_manager |
OLD | NEW |