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

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

Issue 538873002: [fsp] Wire FSP to chrome.fileBrowserPrivate.getEntryProperties(). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments. 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
« no previous file with comments | « no previous file | chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_drive.h" 5 #include "chrome/browser/chromeos/extensions/file_manager/private_api_drive.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "chrome/browser/browser_process.h" 8 #include "chrome/browser/browser_process.h"
9 #include "chrome/browser/chromeos/drive/drive_integration_service.h" 9 #include "chrome/browser/chromeos/drive/drive_integration_service.h"
10 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h" 10 #include "chrome/browser/chromeos/extensions/file_manager/private_api_util.h"
11 #include "chrome/browser/chromeos/file_manager/file_tasks.h" 11 #include "chrome/browser/chromeos/file_manager/file_tasks.h"
12 #include "chrome/browser/chromeos/file_manager/fileapi_util.h" 12 #include "chrome/browser/chromeos/file_manager/fileapi_util.h"
13 #include "chrome/browser/chromeos/file_manager/url_util.h" 13 #include "chrome/browser/chromeos/file_manager/url_util.h"
14 #include "chrome/browser/chromeos/file_system_provider/mount_path_util.h"
15 #include "chrome/browser/chromeos/file_system_provider/provided_file_system_inte rface.h"
14 #include "chrome/browser/chromeos/fileapi/file_system_backend.h" 16 #include "chrome/browser/chromeos/fileapi/file_system_backend.h"
15 #include "chrome/browser/chromeos/profiles/profile_helper.h" 17 #include "chrome/browser/chromeos/profiles/profile_helper.h"
16 #include "chrome/browser/drive/drive_app_registry.h" 18 #include "chrome/browser/drive/drive_app_registry.h"
17 #include "chrome/browser/drive/event_logger.h" 19 #include "chrome/browser/drive/event_logger.h"
18 #include "chrome/browser/profiles/profile.h" 20 #include "chrome/browser/profiles/profile.h"
19 #include "chrome/browser/profiles/profile_manager.h" 21 #include "chrome/browser/profiles/profile_manager.h"
20 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" 22 #include "chrome/browser/signin/profile_oauth2_token_service_factory.h"
21 #include "chrome/browser/signin/signin_manager_factory.h" 23 #include "chrome/browser/signin/signin_manager_factory.h"
22 #include "chromeos/chromeos_switches.h" 24 #include "chromeos/chromeos_switches.h"
23 #include "components/signin/core/browser/profile_oauth2_token_service.h" 25 #include "components/signin/core/browser/profile_oauth2_token_service.h"
24 #include "components/signin/core/browser/signin_manager.h" 26 #include "components/signin/core/browser/signin_manager.h"
25 #include "content/public/browser/browser_thread.h" 27 #include "content/public/browser/browser_thread.h"
26 #include "google_apis/drive/auth_service.h" 28 #include "google_apis/drive/auth_service.h"
27 #include "webkit/common/fileapi/file_system_info.h" 29 #include "webkit/common/fileapi/file_system_info.h"
28 #include "webkit/common/fileapi/file_system_util.h" 30 #include "webkit/common/fileapi/file_system_util.h"
29 31
30 using content::BrowserThread; 32 using content::BrowserThread;
31 33
34 using chromeos::file_system_provider::EntryMetadata;
35 using chromeos::file_system_provider::ProvidedFileSystemInterface;
36 using chromeos::file_system_provider::util::FileSystemURLParser;
37 using extensions::api::file_browser_private::EntryProperties;
32 using file_manager::util::EntryDefinition; 38 using file_manager::util::EntryDefinition;
33 using file_manager::util::EntryDefinitionCallback; 39 using file_manager::util::EntryDefinitionCallback;
34 using file_manager::util::EntryDefinitionList; 40 using file_manager::util::EntryDefinitionList;
35 using file_manager::util::EntryDefinitionListCallback; 41 using file_manager::util::EntryDefinitionListCallback;
36 using file_manager::util::FileDefinition; 42 using file_manager::util::FileDefinition;
37 using file_manager::util::FileDefinitionList; 43 using file_manager::util::FileDefinitionList;
38 using extensions::api::file_browser_private::EntryProperties;
39 44
40 namespace extensions { 45 namespace extensions {
41 namespace { 46 namespace {
42 47
43 // List of connection types of drive. 48 // List of connection types of drive.
44 // Keep this in sync with the DriveConnectionType in common/js/util.js. 49 // Keep this in sync with the DriveConnectionType in common/js/util.js.
45 const char kDriveConnectionTypeOffline[] = "offline"; 50 const char kDriveConnectionTypeOffline[] = "offline";
46 const char kDriveConnectionTypeMetered[] = "metered"; 51 const char kDriveConnectionTypeMetered[] = "metered";
47 const char kDriveConnectionTypeOnline[] = "online"; 52 const char kDriveConnectionTypeOnline[] = "online";
48 53
49 // List of reasons of kDriveConnectionType*. 54 // List of reasons of kDriveConnectionType*.
50 // Keep this in sync with the DriveConnectionReason in common/js/util.js. 55 // Keep this in sync with the DriveConnectionReason in common/js/util.js.
51 const char kDriveConnectionReasonNotReady[] = "not_ready"; 56 const char kDriveConnectionReasonNotReady[] = "not_ready";
52 const char kDriveConnectionReasonNoNetwork[] = "no_network"; 57 const char kDriveConnectionReasonNoNetwork[] = "no_network";
53 const char kDriveConnectionReasonNoService[] = "no_service"; 58 const char kDriveConnectionReasonNoService[] = "no_service";
54 59
55 // Copies properties from |entry_proto| to |properties|. |shared_with_me| is 60 // Copies properties from |entry_proto| to |properties|. |shared_with_me| is
56 // given from the running profile. 61 // given from the running profile.
57 void FillEntryPropertiesValue(const drive::ResourceEntry& entry_proto, 62 void FillEntryPropertiesValueForDrive(const drive::ResourceEntry& entry_proto,
58 bool shared_with_me, 63 bool shared_with_me,
59 EntryProperties* properties) { 64 EntryProperties* properties) {
60 properties->shared_with_me.reset(new bool(shared_with_me)); 65 properties->shared_with_me.reset(new bool(shared_with_me));
61 properties->shared.reset(new bool(entry_proto.shared())); 66 properties->shared.reset(new bool(entry_proto.shared()));
62 67
63 const drive::PlatformFileInfoProto& file_info = entry_proto.file_info(); 68 const drive::PlatformFileInfoProto& file_info = entry_proto.file_info();
64 properties->file_size.reset(new double(file_info.size())); 69 properties->file_size.reset(new double(file_info.size()));
65 properties->last_modified_time.reset(new double( 70 properties->last_modified_time.reset(new double(
66 base::Time::FromInternalValue(file_info.last_modified()).ToJsTime())); 71 base::Time::FromInternalValue(file_info.last_modified()).ToJsTime()));
67 72
68 if (!entry_proto.has_file_specific_info()) 73 if (!entry_proto.has_file_specific_info())
69 return; 74 return;
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
147 152
148 class SingleEntryPropertiesGetterForDrive { 153 class SingleEntryPropertiesGetterForDrive {
149 public: 154 public:
150 typedef base::Callback<void(scoped_ptr<EntryProperties> properties, 155 typedef base::Callback<void(scoped_ptr<EntryProperties> properties,
151 base::File::Error error)> ResultCallback; 156 base::File::Error error)> ResultCallback;
152 157
153 // Creates an instance and starts the process. 158 // Creates an instance and starts the process.
154 static void Start(const base::FilePath local_path, 159 static void Start(const base::FilePath local_path,
155 Profile* const profile, 160 Profile* const profile,
156 const ResultCallback& callback) { 161 const ResultCallback& callback) {
162 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
163
157 SingleEntryPropertiesGetterForDrive* instance = 164 SingleEntryPropertiesGetterForDrive* instance =
158 new SingleEntryPropertiesGetterForDrive(local_path, profile, callback); 165 new SingleEntryPropertiesGetterForDrive(local_path, profile, callback);
159 instance->StartProcess(); 166 instance->StartProcess();
160 167
161 // The instance will be destroyed by itself. 168 // The instance will be destroyed by itself.
162 } 169 }
163 170
164 virtual ~SingleEntryPropertiesGetterForDrive() {} 171 virtual ~SingleEntryPropertiesGetterForDrive() {}
165 172
166 private: 173 private:
167 // Given parameters.
168 const ResultCallback callback_;
169 const base::FilePath local_path_;
170 Profile* const running_profile_;
171
172 // Values used in the process.
173 scoped_ptr<EntryProperties> properties_;
174 Profile* file_owner_profile_;
175 base::FilePath file_path_;
176 scoped_ptr<drive::ResourceEntry> owner_resource_entry_;
177
178 base::WeakPtrFactory<SingleEntryPropertiesGetterForDrive> weak_ptr_factory_;
179
180 SingleEntryPropertiesGetterForDrive(const base::FilePath local_path, 174 SingleEntryPropertiesGetterForDrive(const base::FilePath local_path,
181 Profile* const profile, 175 Profile* const profile,
182 const ResultCallback& callback) 176 const ResultCallback& callback)
183 : callback_(callback), 177 : callback_(callback),
184 local_path_(local_path), 178 local_path_(local_path),
185 running_profile_(profile), 179 running_profile_(profile),
186 properties_(new EntryProperties), 180 properties_(new EntryProperties),
187 file_owner_profile_(NULL), 181 file_owner_profile_(NULL),
188 weak_ptr_factory_(this) { 182 weak_ptr_factory_(this) {
189 DCHECK(!callback_.is_null()); 183 DCHECK(!callback_.is_null());
190 DCHECK(profile); 184 DCHECK(profile);
191 } 185 }
192 186
193 base::WeakPtr<SingleEntryPropertiesGetterForDrive> GetWeakPtr() {
194 return weak_ptr_factory_.GetWeakPtr();
195 }
196
197 void StartProcess() { 187 void StartProcess() {
198 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 188 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
199 189
200 file_path_ = drive::util::ExtractDrivePath(local_path_); 190 file_path_ = drive::util::ExtractDrivePath(local_path_);
201 file_owner_profile_ = drive::util::ExtractProfileFromPath(local_path_); 191 file_owner_profile_ = drive::util::ExtractProfileFromPath(local_path_);
202 192
203 if (!file_owner_profile_ || 193 if (!file_owner_profile_ ||
204 !g_browser_process->profile_manager()->IsValidProfile( 194 !g_browser_process->profile_manager()->IsValidProfile(
205 file_owner_profile_)) { 195 file_owner_profile_)) {
206 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED); 196 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED);
207 return; 197 return;
208 } 198 }
209 199
210 // Start getting the file info. 200 // Start getting the file info.
211 drive::FileSystemInterface* const file_system = 201 drive::FileSystemInterface* const file_system =
212 drive::util::GetFileSystemByProfile(file_owner_profile_); 202 drive::util::GetFileSystemByProfile(file_owner_profile_);
213 if (!file_system) { 203 if (!file_system) {
214 // |file_system| is NULL if Drive is disabled or not mounted. 204 // |file_system| is NULL if Drive is disabled or not mounted.
215 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED); 205 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED);
216 return; 206 return;
217 } 207 }
218 208
219 file_system->GetResourceEntry( 209 file_system->GetResourceEntry(
220 file_path_, 210 file_path_,
221 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetFileInfo, 211 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetFileInfo,
222 GetWeakPtr())); 212 weak_ptr_factory_.GetWeakPtr()));
223 } 213 }
224 214
225 void OnGetFileInfo(drive::FileError error, 215 void OnGetFileInfo(drive::FileError error,
226 scoped_ptr<drive::ResourceEntry> entry) { 216 scoped_ptr<drive::ResourceEntry> entry) {
227 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 217 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
228 218
229 if (error != drive::FILE_ERROR_OK) { 219 if (error != drive::FILE_ERROR_OK) {
230 CompleteGetEntryProperties(error); 220 CompleteGetEntryProperties(error);
231 return; 221 return;
232 } 222 }
(...skipping 10 matching lines...) Expand all
243 // flag from the running profile's value. 233 // flag from the running profile's value.
244 drive::FileSystemInterface* const file_system = 234 drive::FileSystemInterface* const file_system =
245 drive::util::GetFileSystemByProfile(running_profile_); 235 drive::util::GetFileSystemByProfile(running_profile_);
246 if (!file_system) { 236 if (!file_system) {
247 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED); 237 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED);
248 return; 238 return;
249 } 239 }
250 file_system->GetPathFromResourceId( 240 file_system->GetPathFromResourceId(
251 owner_resource_entry_->resource_id(), 241 owner_resource_entry_->resource_id(),
252 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetRunningPath, 242 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetRunningPath,
253 GetWeakPtr())); 243 weak_ptr_factory_.GetWeakPtr()));
254 } 244 }
255 245
256 void OnGetRunningPath(drive::FileError error, 246 void OnGetRunningPath(drive::FileError error,
257 const base::FilePath& file_path) { 247 const base::FilePath& file_path) {
258 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 248 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
259 249
260 if (error != drive::FILE_ERROR_OK) { 250 if (error != drive::FILE_ERROR_OK) {
261 // The running profile does not know the file. 251 // The running profile does not know the file.
262 StartParseFileInfo(false); 252 StartParseFileInfo(false);
263 return; 253 return;
264 } 254 }
265 255
266 drive::FileSystemInterface* const file_system = 256 drive::FileSystemInterface* const file_system =
267 drive::util::GetFileSystemByProfile(running_profile_); 257 drive::util::GetFileSystemByProfile(running_profile_);
268 if (!file_system) { 258 if (!file_system) {
269 // The drive is disable for the running profile. 259 // The drive is disable for the running profile.
270 StartParseFileInfo(false); 260 StartParseFileInfo(false);
271 return; 261 return;
272 } 262 }
273 263
274 file_system->GetResourceEntry( 264 file_system->GetResourceEntry(
275 file_path, 265 file_path,
276 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetShareInfo, 266 base::Bind(&SingleEntryPropertiesGetterForDrive::OnGetShareInfo,
277 GetWeakPtr())); 267 weak_ptr_factory_.GetWeakPtr()));
278 } 268 }
279 269
280 void OnGetShareInfo(drive::FileError error, 270 void OnGetShareInfo(drive::FileError error,
281 scoped_ptr<drive::ResourceEntry> entry) { 271 scoped_ptr<drive::ResourceEntry> entry) {
282 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 272 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
283 273
284 if (error != drive::FILE_ERROR_OK) { 274 if (error != drive::FILE_ERROR_OK) {
285 CompleteGetEntryProperties(error); 275 CompleteGetEntryProperties(error);
286 return; 276 return;
287 } 277 }
288 278
289 DCHECK(entry); 279 DCHECK(entry.get());
290 StartParseFileInfo(entry->shared_with_me()); 280 StartParseFileInfo(entry->shared_with_me());
291 } 281 }
292 282
293 void StartParseFileInfo(bool shared_with_me) { 283 void StartParseFileInfo(bool shared_with_me) {
294 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 284 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
295 285
296 FillEntryPropertiesValue( 286 FillEntryPropertiesValueForDrive(
297 *owner_resource_entry_, shared_with_me, properties_.get()); 287 *owner_resource_entry_, shared_with_me, properties_.get());
298 288
299 drive::FileSystemInterface* const file_system = 289 drive::FileSystemInterface* const file_system =
300 drive::util::GetFileSystemByProfile(file_owner_profile_); 290 drive::util::GetFileSystemByProfile(file_owner_profile_);
301 drive::DriveAppRegistry* const app_registry = 291 drive::DriveAppRegistry* const app_registry =
302 drive::util::GetDriveAppRegistryByProfile(file_owner_profile_); 292 drive::util::GetDriveAppRegistryByProfile(file_owner_profile_);
303 if (!file_system || !app_registry) { 293 if (!file_system || !app_registry) {
304 // |file_system| or |app_registry| is NULL if Drive is disabled. 294 // |file_system| or |app_registry| is NULL if Drive is disabled.
305 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED); 295 CompleteGetEntryProperties(drive::FILE_ERROR_FAILED);
306 return; 296 return;
307 } 297 }
308 298
309 // The properties meaningful for directories are already filled in 299 // The properties meaningful for directories are already filled in
310 // FillEntryPropertiesValue(). 300 // FillEntryPropertiesValueForDrive().
311 if (!owner_resource_entry_->has_file_specific_info()) { 301 if (!owner_resource_entry_->has_file_specific_info()) {
312 CompleteGetEntryProperties(drive::FILE_ERROR_OK); 302 CompleteGetEntryProperties(drive::FILE_ERROR_OK);
313 return; 303 return;
314 } 304 }
315 305
316 const drive::FileSpecificInfo& file_specific_info = 306 const drive::FileSpecificInfo& file_specific_info =
317 owner_resource_entry_->file_specific_info(); 307 owner_resource_entry_->file_specific_info();
318 308
319 // Get drive WebApps that can accept this file. We just need to extract the 309 // Get drive WebApps that can accept this file. We just need to extract the
320 // doc icon for the drive app, which is set as default. 310 // doc icon for the drive app, which is set as default.
(...skipping 22 matching lines...) Expand all
343 } 333 }
344 334
345 CompleteGetEntryProperties(drive::FILE_ERROR_OK); 335 CompleteGetEntryProperties(drive::FILE_ERROR_OK);
346 } 336 }
347 337
348 void CompleteGetEntryProperties(drive::FileError error) { 338 void CompleteGetEntryProperties(drive::FileError error) {
349 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 339 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
350 DCHECK(!callback_.is_null()); 340 DCHECK(!callback_.is_null());
351 341
352 callback_.Run(properties_.Pass(), drive::FileErrorToBaseFileError(error)); 342 callback_.Run(properties_.Pass(), drive::FileErrorToBaseFileError(error));
343 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, this);
344 }
353 345
354 delete this; 346 // Given parameters.
347 const ResultCallback callback_;
348 const base::FilePath local_path_;
349 Profile* const running_profile_;
350
351 // Values used in the process.
352 scoped_ptr<EntryProperties> properties_;
353 Profile* file_owner_profile_;
354 base::FilePath file_path_;
355 scoped_ptr<drive::ResourceEntry> owner_resource_entry_;
356
357 base::WeakPtrFactory<SingleEntryPropertiesGetterForDrive> weak_ptr_factory_;
358 }; // class SingleEntryPropertiesGetterForDrive
359
360 class SingleEntryPropertiesGetterForFileSystemProvider {
361 public:
362 typedef base::Callback<void(scoped_ptr<EntryProperties> properties,
363 base::File::Error error)> ResultCallback;
364
365 // Creates an instance and starts the process.
366 static void Start(const storage::FileSystemURL file_system_url,
367 const ResultCallback& callback) {
368 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
369
370 SingleEntryPropertiesGetterForFileSystemProvider* instance =
371 new SingleEntryPropertiesGetterForFileSystemProvider(file_system_url,
372 callback);
373 instance->StartProcess();
374
375 // The instance will be destroyed by itself.
355 } 376 }
377
378 virtual ~SingleEntryPropertiesGetterForFileSystemProvider() {}
379
380 private:
381 SingleEntryPropertiesGetterForFileSystemProvider(
382 const storage::FileSystemURL& file_system_url,
383 const ResultCallback& callback)
384 : callback_(callback),
385 file_system_url_(file_system_url),
386 properties_(new EntryProperties),
387 weak_ptr_factory_(this) {
388 DCHECK(!callback_.is_null());
389 }
390
391 void StartProcess() {
392 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
393
394 FileSystemURLParser parser(file_system_url_);
395 if (!parser.Parse()) {
396 CompleteGetEntryProperties(base::File::FILE_ERROR_NOT_FOUND);
397 return;
398 }
399
400 parser.file_system()->GetMetadata(
401 parser.file_path(),
402 ProvidedFileSystemInterface::METADATA_FIELD_THUMBNAIL,
403 base::Bind(&SingleEntryPropertiesGetterForFileSystemProvider::
404 OnGetMetadataCompleted,
405 weak_ptr_factory_.GetWeakPtr()));
406 }
407
408 void OnGetMetadataCompleted(scoped_ptr<EntryMetadata> metadata,
409 base::File::Error result) {
410 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
411
412 if (result != base::File::FILE_OK) {
413 CompleteGetEntryProperties(result);
414 return;
415 }
416
417 properties_->file_size.reset(new double(metadata->size));
418 properties_->last_modified_time.reset(
419 new double(metadata->modification_time.ToJsTime()));
420
421 if (!metadata->thumbnail.empty())
422 properties_->thumbnail_url.reset(new std::string(metadata->thumbnail));
423
424 CompleteGetEntryProperties(base::File::FILE_OK);
425 }
426
427 void CompleteGetEntryProperties(base::File::Error result) {
428 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
429 DCHECK(!callback_.is_null());
430
431 callback_.Run(properties_.Pass(), result);
432 BrowserThread::DeleteSoon(BrowserThread::UI, FROM_HERE, this);
433 }
434
435 // Given parameters.
436 const ResultCallback callback_;
437 const storage::FileSystemURL file_system_url_;
438
439 // Values used in the process.
440 scoped_ptr<EntryProperties> properties_;
441
442 base::WeakPtrFactory<SingleEntryPropertiesGetterForFileSystemProvider>
443 weak_ptr_factory_;
356 }; // class SingleEntryPropertiesGetterForDrive 444 }; // class SingleEntryPropertiesGetterForDrive
357 445
358 } // namespace 446 } // namespace
359 447
360 FileBrowserPrivateGetEntryPropertiesFunction:: 448 FileBrowserPrivateGetEntryPropertiesFunction::
361 FileBrowserPrivateGetEntryPropertiesFunction() 449 FileBrowserPrivateGetEntryPropertiesFunction()
362 : processed_count_(0) { 450 : processed_count_(0) {
363 } 451 }
364 452
365 FileBrowserPrivateGetEntryPropertiesFunction:: 453 FileBrowserPrivateGetEntryPropertiesFunction::
(...skipping 20 matching lines...) Expand all
386 case storage::kFileSystemTypeDrive: 474 case storage::kFileSystemTypeDrive:
387 SingleEntryPropertiesGetterForDrive::Start( 475 SingleEntryPropertiesGetterForDrive::Start(
388 file_system_url.path(), 476 file_system_url.path(),
389 GetProfile(), 477 GetProfile(),
390 base::Bind(&FileBrowserPrivateGetEntryPropertiesFunction:: 478 base::Bind(&FileBrowserPrivateGetEntryPropertiesFunction::
391 CompleteGetEntryProperties, 479 CompleteGetEntryProperties,
392 this, 480 this,
393 i)); 481 i));
394 break; 482 break;
395 case storage::kFileSystemTypeProvided: 483 case storage::kFileSystemTypeProvided:
396 // TODO(mtomasz): Add support for provided file systems. 484 SingleEntryPropertiesGetterForFileSystemProvider::Start(
397 NOTIMPLEMENTED(); 485 file_system_url,
486 base::Bind(&FileBrowserPrivateGetEntryPropertiesFunction::
487 CompleteGetEntryProperties,
488 this,
489 i));
398 break; 490 break;
399 default: 491 default:
400 LOG(ERROR) << "Not supported file system type."; 492 LOG(ERROR) << "Not supported file system type.";
401 CompleteGetEntryProperties(i, 493 CompleteGetEntryProperties(i,
402 make_scoped_ptr(new EntryProperties), 494 make_scoped_ptr(new EntryProperties),
403 base::File::FILE_ERROR_INVALID_OPERATION); 495 base::File::FILE_ERROR_INVALID_OPERATION);
404 } 496 }
405 } 497 }
406 498
407 return true; 499 return true;
408 } 500 }
409 501
410 void FileBrowserPrivateGetEntryPropertiesFunction::CompleteGetEntryProperties( 502 void FileBrowserPrivateGetEntryPropertiesFunction::CompleteGetEntryProperties(
411 size_t index, 503 size_t index,
412 scoped_ptr<EntryProperties> properties, 504 scoped_ptr<EntryProperties> properties,
413 base::File::Error error) { 505 base::File::Error error) {
(...skipping 600 matching lines...) Expand 10 before | Expand all | Expand 10 after
1014 return; 1106 return;
1015 } 1107 }
1016 1108
1017 const std::string url = download_url_ + "?access_token=" + access_token; 1109 const std::string url = download_url_ + "?access_token=" + access_token;
1018 SetResult(new base::StringValue(url)); 1110 SetResult(new base::StringValue(url));
1019 1111
1020 SendResponse(true); 1112 SendResponse(true);
1021 } 1113 }
1022 1114
1023 } // namespace extensions 1115 } // namespace extensions
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_apitest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698