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

Side by Side Diff: chrome/browser/chromeos/extensions/file_manager/private_api_mount.cc

Issue 550863003: Rename fileBrowserPrivate to fileManagerPrivate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/extensions/file_manager/private_api_mount.h" 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_mount.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/files/file_util.h" 9 #include "base/files/file_util.h"
10 #include "base/format_macros.h" 10 #include "base/format_macros.h"
11 #include "chrome/browser/chromeos/drive/file_system_interface.h" 11 #include "chrome/browser/chromeos/drive/file_system_interface.h"
12 #include "chrome/browser/chromeos/drive/file_system_util.h" 12 #include "chrome/browser/chromeos/drive/file_system_util.h"
13 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" 13 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h"
14 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" 14 #include "chrome/browser/chromeos/file_manager/fileapi_util.h"
15 #include "chrome/browser/chromeos/file_manager/volume_manager.h" 15 #include "chrome/browser/chromeos/file_manager/volume_manager.h"
16 #include "chrome/browser/drive/event_logger.h" 16 #include "chrome/browser/drive/event_logger.h"
17 #include "chrome/browser/profiles/profile.h" 17 #include "chrome/browser/profiles/profile.h"
18 #include "chrome/common/extensions/api/file_browser_private.h" 18 #include "chrome/common/extensions/api/file_manager_private.h"
19 #include "chromeos/disks/disk_mount_manager.h" 19 #include "chromeos/disks/disk_mount_manager.h"
20 #include "content/public/browser/browser_thread.h" 20 #include "content/public/browser/browser_thread.h"
21 #include "google_apis/drive/task_util.h" 21 #include "google_apis/drive/task_util.h"
22 #include "ui/shell_dialogs/selected_file_info.h" 22 #include "ui/shell_dialogs/selected_file_info.h"
23 23
24 using chromeos::disks::DiskMountManager; 24 using chromeos::disks::DiskMountManager;
25 using content::BrowserThread; 25 using content::BrowserThread;
26 namespace file_browser_private = extensions::api::file_browser_private; 26 namespace file_manager_private = extensions::api::file_manager_private;
27 27
28 namespace extensions { 28 namespace extensions {
29 29
30 namespace { 30 namespace {
31 31
32 // Does chmod o+r for the given path to ensure the file is readable from avfs. 32 // Does chmod o+r for the given path to ensure the file is readable from avfs.
33 void EnsureReadableFilePermissionOnBlockingPool( 33 void EnsureReadableFilePermissionOnBlockingPool(
34 const base::FilePath& path, 34 const base::FilePath& path,
35 const base::Callback<void(drive::FileError, const base::FilePath&)>& 35 const base::Callback<void(drive::FileError, const base::FilePath&)>&
36 callback) { 36 callback) {
37 int mode = 0; 37 int mode = 0;
38 if (!base::GetPosixFilePermissions(path, &mode) || 38 if (!base::GetPosixFilePermissions(path, &mode) ||
39 !base::SetPosixFilePermissions(path, mode | S_IROTH)) { 39 !base::SetPosixFilePermissions(path, mode | S_IROTH)) {
40 callback.Run(drive::FILE_ERROR_ACCESS_DENIED, base::FilePath()); 40 callback.Run(drive::FILE_ERROR_ACCESS_DENIED, base::FilePath());
41 return; 41 return;
42 } 42 }
43 callback.Run(drive::FILE_ERROR_OK, path); 43 callback.Run(drive::FILE_ERROR_OK, path);
44 } 44 }
45 45
46 } // namespace 46 } // namespace
47 47
48 bool FileBrowserPrivateAddMountFunction::RunAsync() { 48 bool FileManagerPrivateAddMountFunction::RunAsync() {
49 using file_browser_private::AddMount::Params; 49 using file_manager_private::AddMount::Params;
50 const scoped_ptr<Params> params(Params::Create(*args_)); 50 const scoped_ptr<Params> params(Params::Create(*args_));
51 EXTENSION_FUNCTION_VALIDATE(params); 51 EXTENSION_FUNCTION_VALIDATE(params);
52 52
53 drive::EventLogger* logger = file_manager::util::GetLogger(GetProfile()); 53 drive::EventLogger* logger = file_manager::util::GetLogger(GetProfile());
54 if (logger) { 54 if (logger) {
55 logger->Log(logging::LOG_INFO, 55 logger->Log(logging::LOG_INFO,
56 "%s[%d] called. (source: '%s')", 56 "%s[%d] called. (source: '%s')",
57 name().c_str(), 57 name().c_str(),
58 request_id(), 58 request_id(),
59 params->source.empty() ? "(none)" : params->source.c_str()); 59 params->source.empty() ? "(none)" : params->source.c_str());
60 } 60 }
61 set_log_on_completion(true); 61 set_log_on_completion(true);
62 62
63 const base::FilePath path = file_manager::util::GetLocalPathFromURL( 63 const base::FilePath path = file_manager::util::GetLocalPathFromURL(
64 render_view_host(), GetProfile(), GURL(params->source)); 64 render_view_host(), GetProfile(), GURL(params->source));
65 65
66 if (path.empty()) 66 if (path.empty())
67 return false; 67 return false;
68 68
69 // Check if the source path is under Drive cache directory. 69 // Check if the source path is under Drive cache directory.
70 if (drive::util::IsUnderDriveMountPoint(path)) { 70 if (drive::util::IsUnderDriveMountPoint(path)) {
71 drive::FileSystemInterface* file_system = 71 drive::FileSystemInterface* file_system =
72 drive::util::GetFileSystemByProfile(GetProfile()); 72 drive::util::GetFileSystemByProfile(GetProfile());
73 if (!file_system) 73 if (!file_system)
74 return false; 74 return false;
75 75
76 file_system->MarkCacheFileAsMounted( 76 file_system->MarkCacheFileAsMounted(
77 drive::util::ExtractDrivePath(path), 77 drive::util::ExtractDrivePath(path),
78 base::Bind( 78 base::Bind(
79 &FileBrowserPrivateAddMountFunction::RunAfterMarkCacheFileAsMounted, 79 &FileManagerPrivateAddMountFunction::RunAfterMarkCacheFileAsMounted,
80 this, path.BaseName())); 80 this, path.BaseName()));
81 } else { 81 } else {
82 file_manager::VolumeManager* volume_manager = 82 file_manager::VolumeManager* volume_manager =
83 file_manager::VolumeManager::Get(GetProfile()); 83 file_manager::VolumeManager::Get(GetProfile());
84 DCHECK(volume_manager); 84 DCHECK(volume_manager);
85 85
86 bool is_under_downloads = false; 86 bool is_under_downloads = false;
87 const std::vector<file_manager::VolumeInfo> volumes = 87 const std::vector<file_manager::VolumeInfo> volumes =
88 volume_manager->GetVolumeInfoList(); 88 volume_manager->GetVolumeInfoList();
89 for (size_t i = 0; i < volumes.size(); ++i) { 89 for (size_t i = 0; i < volumes.size(); ++i) {
90 if (volumes[i].type == file_manager::VOLUME_TYPE_DOWNLOADS_DIRECTORY && 90 if (volumes[i].type == file_manager::VOLUME_TYPE_DOWNLOADS_DIRECTORY &&
91 volumes[i].mount_path.IsParent(path)) { 91 volumes[i].mount_path.IsParent(path)) {
92 is_under_downloads = true; 92 is_under_downloads = true;
93 break; 93 break;
94 } 94 }
95 } 95 }
96 96
97 if (is_under_downloads) { 97 if (is_under_downloads) {
98 // For files under downloads, change the file permission and make it 98 // For files under downloads, change the file permission and make it
99 // readable from avfs/fuse if needed. 99 // readable from avfs/fuse if needed.
100 BrowserThread::PostBlockingPoolTask( 100 BrowserThread::PostBlockingPoolTask(
101 FROM_HERE, 101 FROM_HERE,
102 base::Bind(&EnsureReadableFilePermissionOnBlockingPool, 102 base::Bind(&EnsureReadableFilePermissionOnBlockingPool,
103 path, 103 path,
104 google_apis::CreateRelayCallback( 104 google_apis::CreateRelayCallback(
105 base::Bind(&FileBrowserPrivateAddMountFunction:: 105 base::Bind(&FileManagerPrivateAddMountFunction::
106 RunAfterMarkCacheFileAsMounted, 106 RunAfterMarkCacheFileAsMounted,
107 this, 107 this,
108 path.BaseName())))); 108 path.BaseName()))));
109 } else { 109 } else {
110 RunAfterMarkCacheFileAsMounted( 110 RunAfterMarkCacheFileAsMounted(
111 path.BaseName(), drive::FILE_ERROR_OK, path); 111 path.BaseName(), drive::FILE_ERROR_OK, path);
112 } 112 }
113 } 113 }
114 return true; 114 return true;
115 } 115 }
116 116
117 void FileBrowserPrivateAddMountFunction::RunAfterMarkCacheFileAsMounted( 117 void FileManagerPrivateAddMountFunction::RunAfterMarkCacheFileAsMounted(
118 const base::FilePath& display_name, 118 const base::FilePath& display_name,
119 drive::FileError error, 119 drive::FileError error,
120 const base::FilePath& file_path) { 120 const base::FilePath& file_path) {
121 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 121 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
122 122
123 if (error != drive::FILE_ERROR_OK) { 123 if (error != drive::FILE_ERROR_OK) {
124 SendResponse(false); 124 SendResponse(false);
125 return; 125 return;
126 } 126 }
127 127
128 // Pass back the actual source path of the mount point. 128 // Pass back the actual source path of the mount point.
129 SetResult(new base::StringValue(file_path.AsUTF8Unsafe())); 129 SetResult(new base::StringValue(file_path.AsUTF8Unsafe()));
130 SendResponse(true); 130 SendResponse(true);
131 131
132 // MountPath() takes a std::string. 132 // MountPath() takes a std::string.
133 DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance(); 133 DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance();
134 disk_mount_manager->MountPath( 134 disk_mount_manager->MountPath(
135 file_path.AsUTF8Unsafe(), 135 file_path.AsUTF8Unsafe(),
136 base::FilePath(display_name.Extension()).AsUTF8Unsafe(), 136 base::FilePath(display_name.Extension()).AsUTF8Unsafe(),
137 display_name.AsUTF8Unsafe(), 137 display_name.AsUTF8Unsafe(),
138 chromeos::MOUNT_TYPE_ARCHIVE); 138 chromeos::MOUNT_TYPE_ARCHIVE);
139 } 139 }
140 140
141 bool FileBrowserPrivateRemoveMountFunction::RunAsync() { 141 bool FileManagerPrivateRemoveMountFunction::RunAsync() {
142 using file_browser_private::RemoveMount::Params; 142 using file_manager_private::RemoveMount::Params;
143 const scoped_ptr<Params> params(Params::Create(*args_)); 143 const scoped_ptr<Params> params(Params::Create(*args_));
144 EXTENSION_FUNCTION_VALIDATE(params); 144 EXTENSION_FUNCTION_VALIDATE(params);
145 145
146 drive::EventLogger* logger = file_manager::util::GetLogger(GetProfile()); 146 drive::EventLogger* logger = file_manager::util::GetLogger(GetProfile());
147 if (logger) { 147 if (logger) {
148 logger->Log(logging::LOG_INFO, 148 logger->Log(logging::LOG_INFO,
149 "%s[%d] called. (volume_id: '%s')", 149 "%s[%d] called. (volume_id: '%s')",
150 name().c_str(), 150 name().c_str(),
151 request_id(), 151 request_id(),
152 params->volume_id.c_str()); 152 params->volume_id.c_str());
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
187 } 187 }
188 default: 188 default:
189 // Requested unmounting a device which is not unmountable. 189 // Requested unmounting a device which is not unmountable.
190 return false; 190 return false;
191 } 191 }
192 192
193 SendResponse(true); 193 SendResponse(true);
194 return true; 194 return true;
195 } 195 }
196 196
197 bool FileBrowserPrivateGetVolumeMetadataListFunction::RunAsync() { 197 bool FileManagerPrivateGetVolumeMetadataListFunction::RunAsync() {
198 if (args_->GetSize()) 198 if (args_->GetSize())
199 return false; 199 return false;
200 200
201 const std::vector<file_manager::VolumeInfo>& volume_info_list = 201 const std::vector<file_manager::VolumeInfo>& volume_info_list =
202 file_manager::VolumeManager::Get(GetProfile())->GetVolumeInfoList(); 202 file_manager::VolumeManager::Get(GetProfile())->GetVolumeInfoList();
203 203
204 std::string log_string; 204 std::string log_string;
205 std::vector<linked_ptr<file_browser_private::VolumeMetadata> > result; 205 std::vector<linked_ptr<file_manager_private::VolumeMetadata> > result;
206 for (size_t i = 0; i < volume_info_list.size(); ++i) { 206 for (size_t i = 0; i < volume_info_list.size(); ++i) {
207 linked_ptr<file_browser_private::VolumeMetadata> volume_metadata( 207 linked_ptr<file_manager_private::VolumeMetadata> volume_metadata(
208 new file_browser_private::VolumeMetadata); 208 new file_manager_private::VolumeMetadata);
209 file_manager::util::VolumeInfoToVolumeMetadata( 209 file_manager::util::VolumeInfoToVolumeMetadata(
210 GetProfile(), volume_info_list[i], volume_metadata.get()); 210 GetProfile(), volume_info_list[i], volume_metadata.get());
211 result.push_back(volume_metadata); 211 result.push_back(volume_metadata);
212 if (!log_string.empty()) 212 if (!log_string.empty())
213 log_string += ", "; 213 log_string += ", ";
214 log_string += volume_info_list[i].mount_path.AsUTF8Unsafe(); 214 log_string += volume_info_list[i].mount_path.AsUTF8Unsafe();
215 } 215 }
216 216
217 drive::EventLogger* logger = file_manager::util::GetLogger(GetProfile()); 217 drive::EventLogger* logger = file_manager::util::GetLogger(GetProfile());
218 if (logger) { 218 if (logger) {
219 logger->Log(logging::LOG_INFO, 219 logger->Log(logging::LOG_INFO,
220 "%s[%d] succeeded. (results: '[%s]', %" PRIuS " mount points)", 220 "%s[%d] succeeded. (results: '[%s]', %" PRIuS " mount points)",
221 name().c_str(), request_id(), log_string.c_str(), 221 name().c_str(), request_id(), log_string.c_str(),
222 result.size()); 222 result.size());
223 } 223 }
224 224
225 results_ = 225 results_ =
226 file_browser_private::GetVolumeMetadataList::Results::Create(result); 226 file_manager_private::GetVolumeMetadataList::Results::Create(result);
227 SendResponse(true); 227 SendResponse(true);
228 return true; 228 return true;
229 } 229 }
230 230
231 } // namespace extensions 231 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698