Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(390)

Unified Diff: chrome/browser/extensions/api/file_system/file_system_api.cc

Issue 13023002: Change chrome.filesystem to handle the Chrome OS Drive file entries directly. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: COmment. Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/api/file_system/file_system_api.cc
diff --git a/chrome/browser/extensions/api/file_system/file_system_api.cc b/chrome/browser/extensions/api/file_system/file_system_api.cc
index 0fc50c1e5b8f4660ed2921be88f095ed9e8b3426..18d84e29df97d33a97ea4c97a3d74425c82f9984 100644
--- a/chrome/browser/extensions/api/file_system/file_system_api.cc
+++ b/chrome/browser/extensions/api/file_system/file_system_api.cc
@@ -28,6 +28,8 @@
#include "net/base/mime_util.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/shell_dialogs/select_file_dialog.h"
+#include "ui/shell_dialogs/selected_file_info.h"
+#include "webkit/fileapi/external_mount_points.h"
#include "webkit/fileapi/file_system_types.h"
#include "webkit/fileapi/file_system_util.h"
#include "webkit/fileapi/isolated_context.h"
@@ -389,10 +391,13 @@ class FileSystemChooseEntryFunction::FilePicker
if (g_skip_picker_for_test) {
if (g_path_to_be_picked_for_test) {
+ ui::SelectedFileInfo selected_path(*g_path_to_be_picked_for_test,
+ base::FilePath());
content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
base::Bind(
- &FileSystemChooseEntryFunction::FilePicker::FileSelected,
- base::Unretained(this), *g_path_to_be_picked_for_test, 1,
+ &FileSystemChooseEntryFunction::FilePicker::
+ FileSelectedWithExtraInfo,
+ base::Unretained(this), selected_path, 1,
static_cast<void*>(NULL)));
} else {
content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE,
@@ -418,7 +423,22 @@ class FileSystemChooseEntryFunction::FilePicker
virtual void FileSelected(const base::FilePath& path,
int index,
void* params) OVERRIDE {
- function_->FileSelected(path, entry_type_);
+ // The version taking ui::SelectedFileInfo should be used.
+ NOTREACHED();
+ }
+
+ virtual void FileSelectedWithExtraInfo(const ui::SelectedFileInfo& file,
+ int index,
+ void* params) OVERRIDE {
+ // Normally, file.local_path is used because it is a native path to the
+ // local read-only cached file in the case of remote file system like
+ // Chrome OS's Google Drive integration. Here, however, |file.file_path| is
+ // necessary because we need to create a FileEntry denoting the remote file,
+ // not its cache. On other platforms than Chrome OS, they are the same.
+ //
+ // TODO(kinaba): remove this, once after the file picker implements proper
+ // switch of the path treatment depending on the |support_drive| flag.
+ function_->FileSelected(file.file_path, entry_type_);
delete this;
}
@@ -478,6 +498,16 @@ void FileSystemChooseEntryFunction::StopSkippingPickerForTest() {
g_skip_picker_for_test = false;
}
+// static
+void FileSystemChooseEntryFunction::RegisterTempExternalFileSystemForTest(
+ const std::string& name, const base::FilePath& path) {
+ // For testing on Chrome OS, where to deal with remote and local paths
+ // smoothly, all accessed paths need to be registered in the list of
+ // external mount points.
+ fileapi::ExternalMountPoints::GetSystemInstance()->RegisterFileSystem(
+ name, fileapi::kFileSystemTypeNativeLocal, path);
+}
+
void FileSystemChooseEntryFunction::FileSelected(const base::FilePath& path,
EntryType entry_type) {
if (entry_type == WRITABLE) {
@@ -593,6 +623,9 @@ bool FileSystemChooseEntryFunction::RunImpl() {
return false;
}
+ if (entry_type != WRITABLE)
+ file_type_info.support_drive = true;
+
return ShowPicker(suggested_name, file_type_info, picker_type, entry_type);
}

Powered by Google App Engine
This is Rietveld 408576698