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

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

Issue 14658005: filemanager: Retrieve 'shared-with-me' property using getDriveEntryProperties API. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: update comments Created 7 years, 7 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/file_browser_private_a pi.h" 5 #include "chrome/browser/chromeos/extensions/file_manager/file_browser_private_a pi.h"
6 6
7 #include <sys/stat.h> 7 #include <sys/stat.h>
8 #include <sys/statvfs.h> 8 #include <sys/statvfs.h>
9 #include <sys/types.h> 9 #include <sys/types.h>
10 #include <utime.h> 10 #include <utime.h>
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 VLOG(1) << " " << suffixes_str; 356 VLOG(1) << " " << suffixes_str;
357 } 357 }
358 } 358 }
359 359
360 // Does nothing with a bool parameter. Used as a placeholder for calling 360 // Does nothing with a bool parameter. Used as a placeholder for calling
361 // ClearCacheAndRemountFileSystem(). TODO(yoshiki): Handle an error from 361 // ClearCacheAndRemountFileSystem(). TODO(yoshiki): Handle an error from
362 // ClearCacheAndRemountFileSystem() properly: http://crbug.com/140511. 362 // ClearCacheAndRemountFileSystem() properly: http://crbug.com/140511.
363 void DoNothingWithBool(bool /* success */) { 363 void DoNothingWithBool(bool /* success */) {
364 } 364 }
365 365
366 void FillDriveFilePropertiesValue( 366 void FillDriveEntryPropertiesValue(
367 const drive::DriveEntryProto& entry_proto, 367 const drive::DriveEntryProto& entry_proto,
368 DictionaryValue* property_dict) { 368 DictionaryValue* property_dict) {
369 property_dict->SetBoolean("sharedWithMe", entry_proto.shared_with_me());
370
371 if (!entry_proto.has_file_specific_info())
372 return;
373
369 const drive::DriveFileSpecificInfo& file_specific_info = 374 const drive::DriveFileSpecificInfo& file_specific_info =
370 entry_proto.file_specific_info(); 375 entry_proto.file_specific_info();
371 376
372 property_dict->SetString("thumbnailUrl", file_specific_info.thumbnail_url()); 377 property_dict->SetString("thumbnailUrl", file_specific_info.thumbnail_url());
373 378
374 if (!file_specific_info.alternate_url().empty()) 379 if (!file_specific_info.alternate_url().empty())
375 property_dict->SetString("editUrl", file_specific_info.alternate_url()); 380 property_dict->SetString("editUrl", file_specific_info.alternate_url());
376 381
377 if (!file_specific_info.share_url().empty()) 382 if (!file_specific_info.share_url().empty())
378 property_dict->SetString("shareUrl", file_specific_info.share_url()); 383 property_dict->SetString("shareUrl", file_specific_info.share_url());
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after
558 registry->RegisterFunction<AddFileWatchBrowserFunction>(); 563 registry->RegisterFunction<AddFileWatchBrowserFunction>();
559 registry->RegisterFunction<RemoveFileWatchBrowserFunction>(); 564 registry->RegisterFunction<RemoveFileWatchBrowserFunction>();
560 registry->RegisterFunction<SelectFileFunction>(); 565 registry->RegisterFunction<SelectFileFunction>();
561 registry->RegisterFunction<SelectFilesFunction>(); 566 registry->RegisterFunction<SelectFilesFunction>();
562 registry->RegisterFunction<AddMountFunction>(); 567 registry->RegisterFunction<AddMountFunction>();
563 registry->RegisterFunction<RemoveMountFunction>(); 568 registry->RegisterFunction<RemoveMountFunction>();
564 registry->RegisterFunction<GetMountPointsFunction>(); 569 registry->RegisterFunction<GetMountPointsFunction>();
565 registry->RegisterFunction<GetSizeStatsFunction>(); 570 registry->RegisterFunction<GetSizeStatsFunction>();
566 registry->RegisterFunction<FormatDeviceFunction>(); 571 registry->RegisterFunction<FormatDeviceFunction>();
567 registry->RegisterFunction<ViewFilesFunction>(); 572 registry->RegisterFunction<ViewFilesFunction>();
568 registry->RegisterFunction<GetDriveFilePropertiesFunction>(); 573 registry->RegisterFunction<GetDriveEntryPropertiesFunction>();
569 registry->RegisterFunction<PinDriveFileFunction>(); 574 registry->RegisterFunction<PinDriveFileFunction>();
570 registry->RegisterFunction<GetFileLocationsFunction>(); 575 registry->RegisterFunction<GetFileLocationsFunction>();
571 registry->RegisterFunction<GetDriveFilesFunction>(); 576 registry->RegisterFunction<GetDriveFilesFunction>();
572 registry->RegisterFunction<CancelFileTransfersFunction>(); 577 registry->RegisterFunction<CancelFileTransfersFunction>();
573 registry->RegisterFunction<TransferFileFunction>(); 578 registry->RegisterFunction<TransferFileFunction>();
574 registry->RegisterFunction<GetPreferencesFunction>(); 579 registry->RegisterFunction<GetPreferencesFunction>();
575 registry->RegisterFunction<SetPreferencesFunction>(); 580 registry->RegisterFunction<SetPreferencesFunction>();
576 registry->RegisterFunction<SearchDriveFunction>(); 581 registry->RegisterFunction<SearchDriveFunction>();
577 registry->RegisterFunction<SearchDriveMetadataFunction>(); 582 registry->RegisterFunction<SearchDriveMetadataFunction>();
578 registry->RegisterFunction<ClearDriveCacheFunction>(); 583 registry->RegisterFunction<ClearDriveCacheFunction>();
(...skipping 1719 matching lines...) Expand 10 before | Expand all | Expand 10 after
2298 const char kMachineInfoBoard[] = "CHROMEOS_RELEASE_BOARD"; 2303 const char kMachineInfoBoard[] = "CHROMEOS_RELEASE_BOARD";
2299 chromeos::system::StatisticsProvider* provider = 2304 chromeos::system::StatisticsProvider* provider =
2300 chromeos::system::StatisticsProvider::GetInstance(); 2305 chromeos::system::StatisticsProvider::GetInstance();
2301 if (!provider->GetMachineStatistic(kMachineInfoBoard, &board)) 2306 if (!provider->GetMachineStatistic(kMachineInfoBoard, &board))
2302 board = "unknown"; 2307 board = "unknown";
2303 dict->SetString(kMachineInfoBoard, board); 2308 dict->SetString(kMachineInfoBoard, board);
2304 2309
2305 return true; 2310 return true;
2306 } 2311 }
2307 2312
2308 GetDriveFilePropertiesFunction::GetDriveFilePropertiesFunction() { 2313 GetDriveEntryPropertiesFunction::GetDriveEntryPropertiesFunction() {
2309 } 2314 }
2310 2315
2311 GetDriveFilePropertiesFunction::~GetDriveFilePropertiesFunction() { 2316 GetDriveEntryPropertiesFunction::~GetDriveEntryPropertiesFunction() {
2312 } 2317 }
2313 2318
2314 bool GetDriveFilePropertiesFunction::RunImpl() { 2319 bool GetDriveEntryPropertiesFunction::RunImpl() {
2315 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2320 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2316 2321
2317 std::string file_url_str; 2322 std::string file_url_str;
2318 if (args_->GetSize() != 1 || !args_->GetString(0, &file_url_str)) 2323 if (args_->GetSize() != 1 || !args_->GetString(0, &file_url_str))
2319 return false; 2324 return false;
2320 2325
2321 GURL file_url = GURL(file_url_str); 2326 GURL file_url = GURL(file_url_str);
2322 file_path_ = drive::util::ExtractDrivePath(GetLocalPathFromURL(file_url)); 2327 file_path_ = drive::util::ExtractDrivePath(GetLocalPathFromURL(file_url));
2323 2328
2324 properties_.reset(new base::DictionaryValue); 2329 properties_.reset(new base::DictionaryValue);
2325 properties_->SetString("fileUrl", file_url.spec()); 2330 properties_->SetString("fileUrl", file_url.spec());
2326 2331
2327 // Start getting the file info. 2332 // Start getting the file info.
2328 drive::DriveSystemService* system_service = 2333 drive::DriveSystemService* system_service =
2329 drive::DriveSystemServiceFactory::GetForProfile(profile_); 2334 drive::DriveSystemServiceFactory::GetForProfile(profile_);
2330 // |system_service| is NULL if Drive is disabled. 2335 // |system_service| is NULL if Drive is disabled.
2331 if (!system_service) { 2336 if (!system_service) {
2332 CompleteGetFileProperties(drive::FILE_ERROR_FAILED); 2337 CompleteGetFileProperties(drive::FILE_ERROR_FAILED);
2333 return true; 2338 return true;
2334 } 2339 }
2335 2340
2336 system_service->file_system()->GetEntryInfoByPath( 2341 system_service->file_system()->GetEntryInfoByPath(
2337 file_path_, 2342 file_path_,
2338 base::Bind(&GetDriveFilePropertiesFunction::OnGetFileInfo, this)); 2343 base::Bind(&GetDriveEntryPropertiesFunction::OnGetFileInfo, this));
2339 return true; 2344 return true;
2340 } 2345 }
2341 2346
2342 void GetDriveFilePropertiesFunction::OnGetFileInfo( 2347 void GetDriveEntryPropertiesFunction::OnGetFileInfo(
2343 drive::FileError error, 2348 drive::FileError error,
2344 scoped_ptr<drive::DriveEntryProto> entry) { 2349 scoped_ptr<drive::DriveEntryProto> entry) {
2345 DCHECK(properties_); 2350 DCHECK(properties_);
2346 2351
2347 if (entry.get() && !entry->has_file_specific_info())
2348 error = drive::FILE_ERROR_NOT_FOUND;
2349
2350 if (error != drive::FILE_ERROR_OK) { 2352 if (error != drive::FILE_ERROR_OK) {
2351 CompleteGetFileProperties(error); 2353 CompleteGetFileProperties(error);
2352 return; 2354 return;
2353 } 2355 }
2354 DCHECK(entry); 2356 DCHECK(entry);
2355 2357
2356 const drive::DriveFileSpecificInfo& file_specific_info = 2358 FillDriveEntryPropertiesValue(*entry, properties_.get());
2357 entry->file_specific_info();
2358
2359 FillDriveFilePropertiesValue(*entry, properties_.get());
2360 2359
2361 drive::DriveSystemService* system_service = 2360 drive::DriveSystemService* system_service =
2362 drive::DriveSystemServiceFactory::GetForProfile(profile_); 2361 drive::DriveSystemServiceFactory::GetForProfile(profile_);
2363 // |system_service| is NULL if Drive is disabled. 2362 // |system_service| is NULL if Drive is disabled.
2364 if (!system_service) { 2363 if (!system_service) {
2365 CompleteGetFileProperties(drive::FILE_ERROR_FAILED); 2364 CompleteGetFileProperties(drive::FILE_ERROR_FAILED);
2366 return; 2365 return;
2367 } 2366 }
2368 2367
2368 // The properties meaningful for directories are already filled in
2369 // FillDriveEntryPropertiesValue().
2370 if (entry.get() && !entry->has_file_specific_info()) {
2371 CompleteGetFileProperties(error);
2372 return;
2373 }
2374
2375 const drive::DriveFileSpecificInfo& file_specific_info =
2376 entry->file_specific_info();
2377
2369 // Get drive WebApps that can accept this file. 2378 // Get drive WebApps that can accept this file.
2370 ScopedVector<drive::DriveWebAppInfo> web_apps; 2379 ScopedVector<drive::DriveWebAppInfo> web_apps;
2371 system_service->webapps_registry()->GetWebAppsForFile( 2380 system_service->webapps_registry()->GetWebAppsForFile(
2372 file_path_, file_specific_info.content_mime_type(), &web_apps); 2381 file_path_, file_specific_info.content_mime_type(), &web_apps);
2373 if (!web_apps.empty()) { 2382 if (!web_apps.empty()) {
2374 std::string default_task_id = file_handler_util::GetDefaultTaskIdFromPrefs( 2383 std::string default_task_id = file_handler_util::GetDefaultTaskIdFromPrefs(
2375 profile_, 2384 profile_,
2376 file_specific_info.content_mime_type(), 2385 file_specific_info.content_mime_type(),
2377 file_path_.Extension()); 2386 file_path_.Extension());
2378 std::string default_app_id; 2387 std::string default_app_id;
(...skipping 19 matching lines...) Expand all
2398 app->SetString("docIcon", doc_icon.spec()); 2407 app->SetString("docIcon", doc_icon.spec());
2399 app->SetString("objectType", webapp_info->object_type); 2408 app->SetString("objectType", webapp_info->object_type);
2400 app->SetBoolean("isPrimary", default_app_id == webapp_info->app_id); 2409 app->SetBoolean("isPrimary", default_app_id == webapp_info->app_id);
2401 apps->Append(app); 2410 apps->Append(app);
2402 } 2411 }
2403 } 2412 }
2404 2413
2405 system_service->file_system()->GetCacheEntryByResourceId( 2414 system_service->file_system()->GetCacheEntryByResourceId(
2406 entry->resource_id(), 2415 entry->resource_id(),
2407 file_specific_info.file_md5(), 2416 file_specific_info.file_md5(),
2408 base::Bind(&GetDriveFilePropertiesFunction::CacheStateReceived, this)); 2417 base::Bind(&GetDriveEntryPropertiesFunction::CacheStateReceived, this));
2409 } 2418 }
2410 2419
2411 void GetDriveFilePropertiesFunction::CacheStateReceived( 2420 void GetDriveEntryPropertiesFunction::CacheStateReceived(
2412 bool /* success */, 2421 bool /* success */,
2413 const drive::FileCacheEntry& cache_entry) { 2422 const drive::FileCacheEntry& cache_entry) {
2414 // In case of an error (i.e. success is false), cache_entry.is_*() all 2423 // In case of an error (i.e. success is false), cache_entry.is_*() all
2415 // returns false. 2424 // returns false.
2416 properties_->SetBoolean("isPinned", cache_entry.is_pinned()); 2425 properties_->SetBoolean("isPinned", cache_entry.is_pinned());
2417 properties_->SetBoolean("isPresent", cache_entry.is_present()); 2426 properties_->SetBoolean("isPresent", cache_entry.is_present());
2418 properties_->SetBoolean("isDirty", cache_entry.is_dirty()); 2427 properties_->SetBoolean("isDirty", cache_entry.is_dirty());
2419 2428
2420 CompleteGetFileProperties(drive::FILE_ERROR_OK); 2429 CompleteGetFileProperties(drive::FILE_ERROR_OK);
2421 } 2430 }
2422 2431
2423 void GetDriveFilePropertiesFunction::CompleteGetFileProperties( 2432 void GetDriveEntryPropertiesFunction::CompleteGetFileProperties(
2424 drive::FileError error) { 2433 drive::FileError error) {
2425 if (error != drive::FILE_ERROR_OK) 2434 if (error != drive::FILE_ERROR_OK)
2426 properties_->SetInteger("errorCode", error); 2435 properties_->SetInteger("errorCode", error);
2427 SetResult(properties_.release()); 2436 SetResult(properties_.release());
2428 SendResponse(true); 2437 SendResponse(true);
2429 } 2438 }
2430 2439
2431 PinDriveFileFunction::PinDriveFileFunction() { 2440 PinDriveFileFunction::PinDriveFileFunction() {
2432 } 2441 }
2433 2442
(...skipping 716 matching lines...) Expand 10 before | Expand all | Expand 10 after
3150 OpenNewWindowFunction::OpenNewWindowFunction() {} 3159 OpenNewWindowFunction::OpenNewWindowFunction() {}
3151 3160
3152 OpenNewWindowFunction::~OpenNewWindowFunction() {} 3161 OpenNewWindowFunction::~OpenNewWindowFunction() {}
3153 3162
3154 bool OpenNewWindowFunction::RunImpl() { 3163 bool OpenNewWindowFunction::RunImpl() {
3155 std::string url; 3164 std::string url;
3156 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url)); 3165 EXTENSION_FUNCTION_VALIDATE(args_->GetString(0, &url));
3157 file_manager_util::OpenNewWindow(profile_, GURL(url)); 3166 file_manager_util::OpenNewWindow(profile_, GURL(url));
3158 return true; 3167 return true;
3159 } 3168 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698