| Index: chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
|
| diff --git a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
|
| index 92175a9af9718e8ed6fbd2096b8a501821b3a37a..6cf68258fe76779880b26f701055bba77b4a0533 100644
|
| --- a/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
|
| +++ b/chrome/browser/chromeos/extensions/file_manager/private_api_file_system.cc
|
| @@ -240,121 +240,6 @@ void GetFileMetadataRespondOnUIThread(
|
|
|
| } // namespace
|
|
|
| -void FileManagerPrivateRequestFileSystemFunction::DidFail(
|
| - base::File::Error error_code) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| -
|
| - SetError(base::StringPrintf("File error %d", static_cast<int>(error_code)));
|
| - SendResponse(false);
|
| -}
|
| -
|
| -bool FileManagerPrivateRequestFileSystemFunction::
|
| - SetupFileSystemAccessPermissions(
|
| - scoped_refptr<storage::FileSystemContext> file_system_context,
|
| - int child_id,
|
| - Profile* profile,
|
| - scoped_refptr<const extensions::Extension> extension,
|
| - const base::FilePath& mount_path,
|
| - const base::FilePath& virtual_path) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| -
|
| - if (!extension.get())
|
| - return false;
|
| -
|
| - storage::ExternalFileSystemBackend* const backend =
|
| - file_system_context->external_backend();
|
| - if (!backend)
|
| - return false;
|
| -
|
| - backend->GrantFileAccessToExtension(extension_->id(), virtual_path);
|
| -
|
| - // Grant R/W file permissions to the renderer hosting component
|
| - // extension to the mount path of the volume.
|
| - ChildProcessSecurityPolicy::GetInstance()->GrantCreateReadWriteFile(
|
| - child_id, mount_path);
|
| -
|
| - return true;
|
| -}
|
| -
|
| -bool FileManagerPrivateRequestFileSystemFunction::RunAsync() {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| - using extensions::api::file_manager_private::RequestFileSystem::Params;
|
| - const scoped_ptr<Params> params(Params::Create(*args_));
|
| - EXTENSION_FUNCTION_VALIDATE(params);
|
| -
|
| - if (!dispatcher() || !render_view_host() || !render_view_host()->GetProcess())
|
| - return false;
|
| -
|
| - set_log_on_completion(true);
|
| -
|
| - using file_manager::VolumeManager;
|
| - using file_manager::VolumeInfo;
|
| - VolumeManager* const volume_manager = VolumeManager::Get(GetProfile());
|
| - if (!volume_manager)
|
| - return false;
|
| -
|
| - VolumeInfo volume_info;
|
| - if (!volume_manager->FindVolumeInfoById(params->volume_id, &volume_info)) {
|
| - DidFail(base::File::FILE_ERROR_NOT_FOUND);
|
| - return false;
|
| - }
|
| -
|
| - scoped_refptr<storage::FileSystemContext> file_system_context =
|
| - file_manager::util::GetFileSystemContextForRenderViewHost(
|
| - GetProfile(), render_view_host());
|
| -
|
| - FileDefinition file_definition;
|
| - if (!file_manager::util::ConvertAbsoluteFilePathToRelativeFileSystemPath(
|
| - GetProfile(),
|
| - extension_id(),
|
| - volume_info.mount_path,
|
| - &file_definition.virtual_path)) {
|
| - DidFail(base::File::FILE_ERROR_INVALID_OPERATION);
|
| - return false;
|
| - }
|
| - file_definition.is_directory = true;
|
| -
|
| - // Set up file permission access.
|
| - const int child_id = render_view_host()->GetProcess()->GetID();
|
| - if (!SetupFileSystemAccessPermissions(
|
| - file_system_context, child_id, GetProfile(), extension(),
|
| - volume_info.mount_path, file_definition.virtual_path)) {
|
| - DidFail(base::File::FILE_ERROR_SECURITY);
|
| - return false;
|
| - }
|
| -
|
| - file_manager::util::ConvertFileDefinitionToEntryDefinition(
|
| - GetProfile(),
|
| - extension_id(),
|
| - file_definition,
|
| - base::Bind(
|
| - &FileManagerPrivateRequestFileSystemFunction::OnEntryDefinition,
|
| - this));
|
| - return true;
|
| -}
|
| -
|
| -void FileManagerPrivateRequestFileSystemFunction::OnEntryDefinition(
|
| - const EntryDefinition& entry_definition) {
|
| - DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
|
| -
|
| - if (entry_definition.error != base::File::FILE_OK) {
|
| - DidFail(entry_definition.error);
|
| - return;
|
| - }
|
| -
|
| - if (!entry_definition.is_directory) {
|
| - DidFail(base::File::FILE_ERROR_NOT_A_DIRECTORY);
|
| - return;
|
| - }
|
| -
|
| - base::DictionaryValue* dict = new base::DictionaryValue();
|
| - SetResult(dict);
|
| - dict->SetString("name", entry_definition.file_system_name);
|
| - dict->SetString("root_url", entry_definition.file_system_root_url);
|
| - dict->SetInteger("error", drive::FILE_ERROR_OK);
|
| - SendResponse(true);
|
| -}
|
| -
|
| ExtensionFunction::ResponseAction
|
| FileManagerPrivateEnableExternalFileSchemeFunction::Run() {
|
| ChildProcessSecurityPolicy::GetInstance()->GrantScheme(
|
| @@ -798,20 +683,18 @@ bool FileManagerPrivateInternalResolveIsolatedEntriesFunction::RunAsync() {
|
|
|
| file_manager::util::FileDefinitionList file_definition_list;
|
| for (size_t i = 0; i < params->urls.size(); ++i) {
|
| - FileSystemURL fileSystemUrl =
|
| + const FileSystemURL file_system_url =
|
| file_system_context->CrackURL(GURL(params->urls[i]));
|
| - DCHECK(external_backend->CanHandleType(fileSystemUrl.type()));
|
| -
|
| + DCHECK(external_backend->CanHandleType(file_system_url.type()));
|
| FileDefinition file_definition;
|
| const bool result =
|
| file_manager::util::ConvertAbsoluteFilePathToRelativeFileSystemPath(
|
| - GetProfile(),
|
| - extension_->id(),
|
| - fileSystemUrl.path(),
|
| + GetProfile(), extension_->id(), file_system_url.path(),
|
| &file_definition.virtual_path);
|
| if (!result)
|
| continue;
|
| - // The API only supports isolated files.
|
| + // The API only supports isolated files. It still works for directories,
|
| + // as the value is ignored for existing entries.
|
| file_definition.is_directory = false;
|
| file_definition_list.push_back(file_definition);
|
| }
|
|
|