Index: chrome/browser/chromeos/file_manager/open_with_browser.cc |
diff --git a/chrome/browser/chromeos/file_manager/open_with_browser.cc b/chrome/browser/chromeos/file_manager/open_with_browser.cc |
index 429883c198b362e8151ae305c2ffa1f6cd5350e2..fc08819e60ba89cd1747d743263b087e4c147c3d 100644 |
--- a/chrome/browser/chromeos/file_manager/open_with_browser.cc |
+++ b/chrome/browser/chromeos/file_manager/open_with_browser.cc |
@@ -12,6 +12,7 @@ |
#include "chrome/browser/browser_process.h" |
#include "chrome/browser/chromeos/drive/file_system_util.h" |
#include "chrome/browser/chromeos/fileapi/external_file_url_util.h" |
+#include "chrome/browser/chromeos/filemanager/filesystem_api_util.h" |
#include "chrome/browser/drive/drive_api_util.h" |
#include "chrome/browser/plugins/plugin_prefs.h" |
#include "chrome/browser/profiles/profile_manager.h" |
@@ -129,29 +130,35 @@ GURL ReadUrlFromGDocOnBlockingPool(const base::FilePath& file_path) { |
} // namespace |
-bool OpenFileWithBrowser(Profile* profile, const base::FilePath& file_path) { |
+bool OpenFileWithBrowser(Profile* profile, |
+ const storage::FileSystemURL& file_system_url) { |
DCHECK_CURRENTLY_ON(BrowserThread::UI); |
DCHECK(profile); |
+ const base::FilePath file_path = file_system_url.path(); |
+ |
// For things supported natively by the browser, we should open it |
// in a tab. |
if (IsViewableInBrowser(file_path) || |
ShouldBeOpenedWithPlugin(profile, file_path.Extension())) { |
- GURL page_url = net::FilePathToFileURL(file_path); |
- // Override drive resource to point to internal handler instead of file URL. |
- if (drive::util::IsUnderDriveMountPoint(file_path)) { |
- page_url = chromeos::FilePathToExternalFileURL( |
- drive::util::ExtractDrivePath(file_path)); |
- } |
+ // Use external file URL if it is provided for the file system. |
+ GURL page_url = chromeos::FileSystemURLToExternalFileURL(file_system_url); |
+ if (page_url.is_empty()) |
+ page_url = net::FilePathToFileURL(file_path); |
+ |
OpenNewTab(profile, page_url); |
return true; |
} |
if (drive::util::HasHostedDocumentExtension(file_path)) { |
- if (drive::util::IsUnderDriveMountPoint(file_path)) { |
- // The file is on Google Docs. Open with drive URL. |
- GURL url = chromeos::FilePathToExternalFileURL( |
- drive::util::ExtractDrivePath(file_path)); |
+ if (file_manager::util::IsUnderNonNativeLocalPath(profile, file_path)) { |
+ // The file is on a non-native volume. Use external file URL. If the file |
+ // is on the drive volume, ExternalFileURLRequestJob redirects the URL to |
+ // drive's web interface. Otherwise (e.g. MTP, FSP), the file is mrely |
mtomasz
2014/09/25 09:53:11
typo: mrely -> ?
hirono
2014/09/25 11:01:53
Done.
|
+ // downloaded in a browser tab. |
+ const GURL url = |
+ chromeos::FileSystemURLToExternalFileURL(file_system_url); |
+ DCHECK(!url.is_empty()); |
OpenNewTab(profile, url); |
} else { |
// The file is local (downloaded from an attachment or otherwise copied). |