Index: chrome/browser/extensions/extension_file_browser_private_api.cc |
diff --git a/chrome/browser/extensions/extension_file_browser_private_api.cc b/chrome/browser/extensions/extension_file_browser_private_api.cc |
index 05f1988551e27a183eaef0c672bc8de938627b15..373142916f4b6d3b231f2bf69c45f3c26de5954e 100644 |
--- a/chrome/browser/extensions/extension_file_browser_private_api.cc |
+++ b/chrome/browser/extensions/extension_file_browser_private_api.cc |
@@ -50,12 +50,10 @@ |
#include "webkit/fileapi/file_system_types.h" |
#include "webkit/fileapi/file_system_util.h" |
-#ifdef OS_CHROMEOS |
-#include "chrome/browser/chromeos/cros/cros_library.h" |
-#endif |
- |
using content::BrowserThread; |
+namespace { |
+ |
hashimoto
2011/11/16 04:28:15
Introduced anonymous namespace to make locally use
satorux1
2011/11/16 06:46:06
+1
|
// Error messages. |
const char kFileError[] = "File error %d"; |
const char kInvalidFileUrl[] = "Invalid file URL"; |
@@ -267,12 +265,13 @@ void UpdateFileHandlerUsageStats(Profile* profile, const std::string& task_id) { |
#ifdef OS_CHROMEOS |
base::DictionaryValue* MountPointToValue(Profile* profile, |
- const chromeos::MountLibrary::MountPointInfo& mount_point_info) { |
+ const chromeos::disks::DiskMountManager::MountPointInfo& mount_point_info) { |
base::DictionaryValue *mount_info = new base::DictionaryValue(); |
mount_info->SetString("mountType", |
- chromeos::MountLibrary::MountTypeToString(mount_point_info.mount_type)); |
+ chromeos::disks::DiskMountManager::MountTypeToString( |
+ mount_point_info.mount_type)); |
if (mount_point_info.mount_type == chromeos::MOUNT_TYPE_ARCHIVE) { |
GURL source_url; |
@@ -296,15 +295,16 @@ base::DictionaryValue* MountPointToValue(Profile* profile, |
} |
mount_info->SetString("mountCondition", |
- chromeos::MountLibrary::MountConditionToString( |
+ chromeos::disks::DiskMountManager::MountConditionToString( |
mount_point_info.mount_condition)); |
return mount_info; |
} |
#endif |
+} // namespace |
-class LocalFileSystemCallbackDispatcher |
+class RequestLocalFileSystemFunction::LocalFileSystemCallbackDispatcher |
hashimoto
2011/11/16 04:28:15
LocalFileSystemCallbackDispatcher and ExecuteTasks
satorux1
2011/11/16 06:46:06
+1
|
: public fileapi::FileSystemCallbackDispatcher { |
public: |
explicit LocalFileSystemCallbackDispatcher( |
@@ -622,7 +622,7 @@ bool GetFileTasksFileBrowserFunction::RunImpl() { |
return true; |
} |
-class ExecuteTasksFileSystemCallbackDispatcher |
+class ExecuteTasksFileBrowserFunction::ExecuteTasksFileSystemCallbackDispatcher |
: public fileapi::FileSystemCallbackDispatcher { |
public: |
explicit ExecuteTasksFileSystemCallbackDispatcher( |
@@ -992,12 +992,23 @@ int32 FileBrowserFunction::GetTabId() const { |
return ExtensionTabUtil::GetTabId(tab_contents); |
} |
+void FileBrowserFunction::GetLocalPaths(const UrlList& file_urls, |
+ GetLocalPathsCallback callback) { |
satorux1
2011/11/16 06:46:06
This function does something a bit tricky. Would b
hashimoto
2011/11/16 07:45:32
Done.
|
+ BrowserThread::PostTask( |
+ BrowserThread::FILE, FROM_HERE, |
+ base::Bind( |
+ &SelectFileFunction::GetLocalPathsOnFileThread, |
+ this, |
satorux1
2011/11/16 06:46:06
Did you mean FileBrowserFunction::GetLocalPathsOnF
hashimoto
2011/11/16 07:45:32
Thank you for finding this mistake, fixed.
BTW, t
satorux1
2011/11/16 18:01:09
Heh, interesting. Learned something new...
|
+ file_urls, callback)); |
+} |
+ |
// GetFileSystemRootPathOnFileThread can only be called from the file thread, |
// so here we are. This function takes a vector of virtual paths, converts |
// them to local paths and calls GetLocalPathsResponseOnUIThread with the |
// result vector, on the UI thread. |
-void FileBrowserFunction::GetLocalPathsOnFileThread(const UrlList& file_urls, |
- void* context) { |
+void FileBrowserFunction::GetLocalPathsOnFileThread( |
+ const UrlList& file_urls, |
+ GetLocalPathsCallback callback) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
FilePathList selected_files; |
@@ -1036,12 +1047,8 @@ void FileBrowserFunction::GetLocalPathsOnFileThread(const UrlList& file_urls, |
} |
#endif |
- BrowserThread::PostTask( |
- BrowserThread::UI, FROM_HERE, |
- base::Bind( |
- &FileBrowserFunction::GetLocalPathsResponseOnUIThread, |
- this, |
- selected_files, context)); |
+ BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, |
+ base::Bind(callback, selected_files)); |
} |
bool SelectFileFunction::RunImpl() { |
@@ -1053,20 +1060,16 @@ bool SelectFileFunction::RunImpl() { |
UrlList file_paths; |
file_paths.push_back(GURL(file_url)); |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind( |
- &SelectFileFunction::GetLocalPathsOnFileThread, |
- this, |
- file_paths, reinterpret_cast<void*>(NULL))); |
- |
+ GetLocalPaths(file_paths, |
+ base::Bind( |
+ &SelectFileFunction::GetLocalPathsResponseOnUIThread, |
+ this)); |
return true; |
} |
void SelectFileFunction::GetLocalPathsResponseOnUIThread( |
- const FilePathList& files, void* context) { |
+ const FilePathList& files) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(!context); |
if (files.size() != 1) { |
SendResponse(false); |
return; |
@@ -1106,30 +1109,24 @@ bool ViewFilesFunction::RunImpl() { |
file_urls.push_back(GURL(virtual_path)); |
} |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind( |
- &ViewFilesFunction::GetLocalPathsOnFileThread, |
- this, |
- file_urls, |
- reinterpret_cast<void*>(new std::string(internal_task_id)))); |
- |
+ GetLocalPaths(file_urls, |
+ base::Bind(&ViewFilesFunction::GetLocalPathsResponseOnUIThread, |
+ this, |
+ internal_task_id)); |
return true; |
} |
void ViewFilesFunction::GetLocalPathsResponseOnUIThread( |
- const FilePathList& files, void* context) { |
+ const std::string& internal_task_id, |
+ const FilePathList& files) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(context); |
- scoped_ptr<std::string> internal_task_id( |
- reinterpret_cast<std::string*>(context)); |
for (FilePathList::const_iterator iter = files.begin(); |
iter != files.end(); |
++iter) { |
FileManagerUtil::ViewItem(*iter, |
- *(internal_task_id.get()) == kEnqueueTaskId || |
- // Start the first one, enqueue others. |
- iter != files.begin()); |
+ internal_task_id == kEnqueueTaskId || |
+ // Start the first one, enqueue others. |
+ iter != files.begin()); |
} |
SendResponse(true); |
} |
@@ -1158,20 +1155,16 @@ bool SelectFilesFunction::RunImpl() { |
file_urls.push_back(GURL(virtual_path)); |
} |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind( |
- &SelectFilesFunction::GetLocalPathsOnFileThread, |
- this, |
- file_urls, reinterpret_cast<void*>(NULL))); |
- |
+ GetLocalPaths(file_urls, |
+ base::Bind( |
+ &SelectFilesFunction::GetLocalPathsResponseOnUIThread, |
+ this)); |
return true; |
} |
void SelectFilesFunction::GetLocalPathsResponseOnUIThread( |
- const FilePathList& files, void* context) { |
+ const FilePathList& files) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(!context); |
int32 tab_id = GetTabId(); |
FileManagerDialog::OnMultiFilesSelected(tab_id, files); |
SendResponse(true); |
@@ -1191,6 +1184,7 @@ AddMountFunction::~AddMountFunction() { |
} |
bool AddMountFunction::RunImpl() { |
+ // The third argument is simply ignored. |
if (args_->GetSize() != 2 && args_->GetSize() != 3) { |
error_ = "Invalid argument count"; |
return false; |
@@ -1210,42 +1204,19 @@ bool AddMountFunction::RunImpl() { |
file_paths.push_back(GURL(file_url)); |
#if defined(OS_CHROMEOS) |
- chromeos::MountPathOptions options; |
- if (args_->GetSize() == 3) { |
- DictionaryValue *dict; |
- if (!args_->GetDictionary(2, &dict)) { |
- NOTREACHED(); |
- } |
- |
- for (base::DictionaryValue::key_iterator it = dict->begin_keys(); |
- it != dict->end_keys(); |
- ++it) { |
- std::string value; |
- if (!dict->GetString(*it, &value)) { |
- NOTREACHED(); |
- } |
- |
- options.push_back(chromeos::MountPathOptions::value_type((*it).c_str(), |
- value.c_str())); |
- } |
- } |
- |
- MountParamaters* params = new MountParamaters(mount_type_str, options); |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind( |
- &AddMountFunction::GetLocalPathsOnFileThread, |
- this, |
- file_paths, reinterpret_cast<void*>(params))); |
+ GetLocalPaths(file_paths, |
+ base::Bind(&AddMountFunction::GetLocalPathsResponseOnUIThread, |
+ this, |
+ mount_type_str)); |
#endif // OS_CHROMEOS |
return true; |
} |
void AddMountFunction::GetLocalPathsResponseOnUIThread( |
- const FilePathList& files, void* context) { |
+ const std::string& mount_type_str, |
+ const FilePathList& files) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(context); |
if (!files.size()) { |
SendResponse(false); |
@@ -1253,24 +1224,20 @@ void AddMountFunction::GetLocalPathsResponseOnUIThread( |
} |
#ifdef OS_CHROMEOS |
- scoped_ptr<MountParamaters> params( |
- reinterpret_cast<MountParamaters*>(context)); |
- const std::string& mount_type_str = params->mount_type; |
- const chromeos::MountPathOptions& options = params->mount_options; |
FilePath::StringType source_file = files[0].value(); |
- chromeos::MountLibrary *mount_lib = |
- chromeos::CrosLibrary::Get()->GetMountLibrary(); |
+ chromeos::disks::DiskMountManager* disk_mount_manager = |
+ chromeos::disks::DiskMountManager::GetInstance(); |
chromeos::MountType mount_type = |
- mount_lib->MountTypeFromString(mount_type_str); |
+ disk_mount_manager->MountTypeFromString(mount_type_str); |
if (mount_type == chromeos::MOUNT_TYPE_INVALID) { |
error_ = "Invalid mount type"; |
SendResponse(false); |
return; |
} |
- mount_lib->MountPath(source_file.data(), mount_type, options); |
+ disk_mount_manager->MountPath(source_file.data(), mount_type); |
#endif |
SendResponse(true); |
@@ -1294,27 +1261,24 @@ bool RemoveMountFunction::RunImpl() { |
UrlList file_paths; |
file_paths.push_back(GURL(mount_path)); |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind( |
- &RemoveMountFunction::GetLocalPathsOnFileThread, |
- this, |
- file_paths, reinterpret_cast<void*>(NULL))); |
+ GetLocalPaths(file_paths, |
+ base::Bind( |
+ &RemoveMountFunction::GetLocalPathsResponseOnUIThread, |
+ this)); |
return true; |
} |
void RemoveMountFunction::GetLocalPathsResponseOnUIThread( |
- const FilePathList& files, void* context) { |
+ const FilePathList& files) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(!context); |
if (files.size() != 1) { |
SendResponse(false); |
return; |
} |
#ifdef OS_CHROMEOS |
- chromeos::CrosLibrary::Get()->GetMountLibrary()->UnmountPath( |
- files[0].value().c_str()); |
+ chromeos::disks::DiskMountManager::GetInstance()->UnmountPath( |
+ files[0].value()); |
#endif |
SendResponse(true); |
@@ -1334,12 +1298,12 @@ bool GetMountPointsFunction::RunImpl() { |
result_.reset(mounts); |
#ifdef OS_CHROMEOS |
- chromeos::MountLibrary *mount_lib = |
- chromeos::CrosLibrary::Get()->GetMountLibrary(); |
- chromeos::MountLibrary::MountPointMap mount_points = |
- mount_lib->mount_points(); |
+ chromeos::disks::DiskMountManager* disk_mount_manager = |
+ chromeos::disks::DiskMountManager::GetInstance(); |
+ chromeos::disks::DiskMountManager::MountPointMap mount_points = |
+ disk_mount_manager->mount_points(); |
- for (chromeos::MountLibrary::MountPointMap::const_iterator it = |
+ for (chromeos::disks::DiskMountManager::MountPointMap::const_iterator it = |
mount_points.begin(); |
it != mount_points.end(); |
++it) { |
@@ -1369,17 +1333,15 @@ bool GetSizeStatsFunction::RunImpl() { |
UrlList mount_paths; |
mount_paths.push_back(GURL(mount_url)); |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind( |
- &GetSizeStatsFunction::GetLocalPathsOnFileThread, |
- this, |
- mount_paths, reinterpret_cast<void*>(NULL))); |
+ GetLocalPaths(mount_paths, |
+ base::Bind( |
+ &GetSizeStatsFunction::GetLocalPathsResponseOnUIThread, |
+ this)); |
return true; |
} |
void GetSizeStatsFunction::GetLocalPathsResponseOnUIThread( |
- const FilePathList& files, void* context) { |
+ const FilePathList& files) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
if (files.size() != 1) { |
@@ -1392,18 +1354,18 @@ void GetSizeStatsFunction::GetLocalPathsResponseOnUIThread( |
base::Bind( |
&GetSizeStatsFunction::CallGetSizeStatsOnFileThread, |
this, |
- files[0].value().c_str())); |
+ files[0].value())); |
} |
void GetSizeStatsFunction::CallGetSizeStatsOnFileThread( |
- const char* mount_path) { |
+ const std::string& mount_path) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); |
size_t total_size_kb = 0; |
size_t remaining_size_kb = 0; |
#ifdef OS_CHROMEOS |
- chromeos::CrosLibrary::Get()->GetMountLibrary()->GetSizeStatsOnFileThread( |
- mount_path, &total_size_kb, &remaining_size_kb); |
+ chromeos::disks::DiskMountManager::GetInstance()-> |
+ GetSizeStatsOnFileThread(mount_path, &total_size_kb, &remaining_size_kb); |
#endif |
BrowserThread::PostTask( |
@@ -1415,7 +1377,9 @@ void GetSizeStatsFunction::CallGetSizeStatsOnFileThread( |
} |
void GetSizeStatsFunction::GetSizeStatsCallbackOnUIThread( |
- const char* mount_path, size_t total_size_kb, size_t remaining_size_kb) { |
+ const std::string& mount_path, |
+ size_t total_size_kb, |
+ size_t remaining_size_kb) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
base::DictionaryValue* sizes = new base::DictionaryValue(); |
@@ -1447,17 +1411,15 @@ bool FormatDeviceFunction::RunImpl() { |
UrlList file_paths; |
file_paths.push_back(GURL(volume_file_url)); |
- BrowserThread::PostTask( |
- BrowserThread::FILE, FROM_HERE, |
- base::Bind( |
- &FormatDeviceFunction::GetLocalPathsOnFileThread, |
- this, |
- file_paths, reinterpret_cast<void*>(NULL))); |
+ GetLocalPaths(file_paths, |
+ base::Bind( |
+ &FormatDeviceFunction::GetLocalPathsResponseOnUIThread, |
+ this)); |
return true; |
} |
void FormatDeviceFunction::GetLocalPathsResponseOnUIThread( |
- const FilePathList& files, void* context) { |
+ const FilePathList& files) { |
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
if (files.size() != 1) { |
@@ -1466,8 +1428,8 @@ void FormatDeviceFunction::GetLocalPathsResponseOnUIThread( |
} |
#ifdef OS_CHROMEOS |
- chromeos::CrosLibrary::Get()->GetMountLibrary()->FormatMountedDevice( |
- files[0].value().c_str()); |
+ chromeos::disks::DiskMountManager::GetInstance()->FormatMountedDevice( |
+ files[0].value()); |
#endif |
SendResponse(true); |
@@ -1491,14 +1453,14 @@ bool GetVolumeMetadataFunction::RunImpl() { |
} |
#ifdef OS_CHROMEOS |
- chromeos::MountLibrary* mount_lib = |
- chromeos::CrosLibrary::Get()->GetMountLibrary(); |
- chromeos::MountLibrary::DiskMap::const_iterator volume_it = |
- mount_lib->disks().find(volume_device_path); |
+ chromeos::disks::DiskMountManager* disk_mount_manager = |
+ chromeos::disks::DiskMountManager::GetInstance(); |
+ chromeos::disks::DiskMountManager::DiskMap::const_iterator volume_it = |
+ disk_mount_manager->disks().find(volume_device_path); |
- if (volume_it != mount_lib->disks().end() && |
+ if (volume_it != disk_mount_manager->disks().end() && |
!volume_it->second->is_hidden()) { |
- chromeos::MountLibrary::Disk* volume = volume_it->second; |
+ chromeos::disks::DiskMountManager::Disk* volume = volume_it->second; |
DictionaryValue* volume_info = new DictionaryValue(); |
result_.reset(volume_info); |
// Localising mount path. |
@@ -1517,7 +1479,7 @@ bool GetVolumeMetadataFunction::RunImpl() { |
volume_info->SetString("driveLabel", volume->drive_label()); |
volume_info->SetString("deviceType", |
DeviceTypeToString(volume->device_type())); |
- volume_info->SetInteger("totalSize", volume->total_size()); |
+ volume_info->SetInteger("totalSize", volume->total_size_in_bytes()); |
volume_info->SetBoolean("isParent", volume->is_parent()); |
volume_info->SetBoolean("isReadOnly", volume->is_read_only()); |
volume_info->SetBoolean("hasMedia", volume->has_media()); |