| OLD | NEW |
| 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_browser_private_api.h" | 5 #include "chrome/browser/chromeos/extensions/file_browser_private_api.h" |
| 6 | 6 |
| 7 #include <sys/statvfs.h> | 7 #include <sys/statvfs.h> |
| 8 #include <utility> | 8 #include <utility> |
| 9 | 9 |
| 10 #include "base/base64.h" | 10 #include "base/base64.h" |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 181 void AddDriveMountPoint( | 181 void AddDriveMountPoint( |
| 182 Profile* profile, | 182 Profile* profile, |
| 183 const std::string& extension_id, | 183 const std::string& extension_id, |
| 184 content::RenderViewHost* render_view_host) { | 184 content::RenderViewHost* render_view_host) { |
| 185 fileapi::ExternalFileSystemMountPointProvider* provider = | 185 fileapi::ExternalFileSystemMountPointProvider* provider = |
| 186 BrowserContext::GetDefaultStoragePartition(profile)-> | 186 BrowserContext::GetDefaultStoragePartition(profile)-> |
| 187 GetFileSystemContext()->external_provider(); | 187 GetFileSystemContext()->external_provider(); |
| 188 if (!provider) | 188 if (!provider) |
| 189 return; | 189 return; |
| 190 | 190 |
| 191 const FilePath mount_point = gdata::util::GetDriveMountPointPath(); | 191 const FilePath mount_point = drive::util::GetDriveMountPointPath(); |
| 192 if (!render_view_host || !render_view_host->GetProcess()) | 192 if (!render_view_host || !render_view_host->GetProcess()) |
| 193 return; | 193 return; |
| 194 | 194 |
| 195 // Grant R/W permissions to drive 'folder'. File API layer still | 195 // Grant R/W permissions to drive 'folder'. File API layer still |
| 196 // expects this to be satisfied. | 196 // expects this to be satisfied. |
| 197 GrantFilePermissionsToHost(render_view_host, | 197 GrantFilePermissionsToHost(render_view_host, |
| 198 mount_point, | 198 mount_point, |
| 199 file_handler_util::GetReadWritePermissions()); | 199 file_handler_util::GetReadWritePermissions()); |
| 200 | 200 |
| 201 // Grant R/W permission for tmp and pinned cache folder. | 201 // Grant R/W permission for tmp and pinned cache folder. |
| 202 gdata::DriveSystemService* system_service = | 202 drive::DriveSystemService* system_service = |
| 203 gdata::DriveSystemServiceFactory::GetForProfile(profile); | 203 drive::DriveSystemServiceFactory::GetForProfile(profile); |
| 204 // |system_service| is NULL if incognito window / guest login. | 204 // |system_service| is NULL if incognito window / guest login. |
| 205 if (!system_service || !system_service->file_system()) | 205 if (!system_service || !system_service->file_system()) |
| 206 return; | 206 return; |
| 207 gdata::DriveCache* cache = system_service->cache(); | 207 drive::DriveCache* cache = system_service->cache(); |
| 208 | 208 |
| 209 // We check permissions for raw cache file paths only for read-only | 209 // We check permissions for raw cache file paths only for read-only |
| 210 // operations (when fileEntry.file() is called), so read only permissions | 210 // operations (when fileEntry.file() is called), so read only permissions |
| 211 // should be sufficient for all cache paths. For the rest of supported | 211 // should be sufficient for all cache paths. For the rest of supported |
| 212 // operations the file access check is done for drive/ paths. | 212 // operations the file access check is done for drive/ paths. |
| 213 GrantFilePermissionsToHost(render_view_host, | 213 GrantFilePermissionsToHost(render_view_host, |
| 214 cache->GetCacheDirectoryPath( | 214 cache->GetCacheDirectoryPath( |
| 215 gdata::DriveCache::CACHE_TYPE_TMP), | 215 drive::DriveCache::CACHE_TYPE_TMP), |
| 216 file_handler_util::GetReadOnlyPermissions()); | 216 file_handler_util::GetReadOnlyPermissions()); |
| 217 GrantFilePermissionsToHost( | 217 GrantFilePermissionsToHost( |
| 218 render_view_host, | 218 render_view_host, |
| 219 cache->GetCacheDirectoryPath( | 219 cache->GetCacheDirectoryPath( |
| 220 gdata::DriveCache::CACHE_TYPE_PERSISTENT), | 220 drive::DriveCache::CACHE_TYPE_PERSISTENT), |
| 221 file_handler_util::GetReadOnlyPermissions()); | 221 file_handler_util::GetReadOnlyPermissions()); |
| 222 | 222 |
| 223 FilePath mount_point_virtual; | 223 FilePath mount_point_virtual; |
| 224 if (provider->GetVirtualPath(mount_point, &mount_point_virtual)) | 224 if (provider->GetVirtualPath(mount_point, &mount_point_virtual)) |
| 225 provider->GrantFileAccessToExtension(extension_id, mount_point_virtual); | 225 provider->GrantFileAccessToExtension(extension_id, mount_point_virtual); |
| 226 } | 226 } |
| 227 | 227 |
| 228 // Finds an icon in the list of icons. If unable to find an icon of the exact | 228 // Finds an icon in the list of icons. If unable to find an icon of the exact |
| 229 // size requested, returns one with the next larger size. If all icons are | 229 // size requested, returns one with the next larger size. If all icons are |
| 230 // smaller than the preferred size, we'll return the largest one available. | 230 // smaller than the preferred size, we'll return the largest one available. |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 // Will finish asynchronously. | 514 // Will finish asynchronously. |
| 515 return true; | 515 return true; |
| 516 } | 516 } |
| 517 | 517 |
| 518 void RequestLocalFileSystemFunction::RespondSuccessOnUIThread( | 518 void RequestLocalFileSystemFunction::RespondSuccessOnUIThread( |
| 519 const std::string& name, const GURL& root_path) { | 519 const std::string& name, const GURL& root_path) { |
| 520 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 520 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 521 // Add drive mount point immediately when we kick of first instance of file | 521 // Add drive mount point immediately when we kick of first instance of file |
| 522 // manager. The actual mount event will be sent to UI only when we perform | 522 // manager. The actual mount event will be sent to UI only when we perform |
| 523 // proper authentication. | 523 // proper authentication. |
| 524 if (gdata::DriveSystemService::IsDriveEnabled(profile_)) | 524 if (drive::DriveSystemService::IsDriveEnabled(profile_)) |
| 525 AddDriveMountPoint(profile_, extension_id(), render_view_host()); | 525 AddDriveMountPoint(profile_, extension_id(), render_view_host()); |
| 526 DictionaryValue* dict = new DictionaryValue(); | 526 DictionaryValue* dict = new DictionaryValue(); |
| 527 SetResult(dict); | 527 SetResult(dict); |
| 528 dict->SetString("name", name); | 528 dict->SetString("name", name); |
| 529 dict->SetString("path", root_path.spec()); | 529 dict->SetString("path", root_path.spec()); |
| 530 dict->SetInteger("error", gdata::DRIVE_FILE_OK); | 530 dict->SetInteger("error", drive::DRIVE_FILE_OK); |
| 531 SendResponse(true); | 531 SendResponse(true); |
| 532 } | 532 } |
| 533 | 533 |
| 534 void RequestLocalFileSystemFunction::RespondFailedOnUIThread( | 534 void RequestLocalFileSystemFunction::RespondFailedOnUIThread( |
| 535 base::PlatformFileError error_code) { | 535 base::PlatformFileError error_code) { |
| 536 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 536 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 537 error_ = base::StringPrintf(kFileError, static_cast<int>(error_code)); | 537 error_ = base::StringPrintf(kFileError, static_cast<int>(error_code)); |
| 538 SendResponse(false); | 538 SendResponse(false); |
| 539 } | 539 } |
| 540 | 540 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 623 bool RemoveFileWatchBrowserFunction::PerformFileWatchOperation( | 623 bool RemoveFileWatchBrowserFunction::PerformFileWatchOperation( |
| 624 scoped_refptr<FileBrowserEventRouter> event_router, | 624 scoped_refptr<FileBrowserEventRouter> event_router, |
| 625 const FilePath& local_path, const FilePath& unused, | 625 const FilePath& local_path, const FilePath& unused, |
| 626 const std::string& extension_id) { | 626 const std::string& extension_id) { |
| 627 event_router->RemoveFileWatch(local_path, extension_id); | 627 event_router->RemoveFileWatch(local_path, extension_id); |
| 628 return true; | 628 return true; |
| 629 } | 629 } |
| 630 | 630 |
| 631 // static | 631 // static |
| 632 void GetFileTasksFileBrowserFunction::IntersectAvailableDriveTasks( | 632 void GetFileTasksFileBrowserFunction::IntersectAvailableDriveTasks( |
| 633 gdata::DriveWebAppsRegistry* registry, | 633 drive::DriveWebAppsRegistry* registry, |
| 634 const FileInfoList& file_info_list, | 634 const FileInfoList& file_info_list, |
| 635 WebAppInfoMap* app_info, | 635 WebAppInfoMap* app_info, |
| 636 std::set<std::string>* available_tasks) { | 636 std::set<std::string>* available_tasks) { |
| 637 for (FileInfoList::const_iterator file_iter = file_info_list.begin(); | 637 for (FileInfoList::const_iterator file_iter = file_info_list.begin(); |
| 638 file_iter != file_info_list.end(); ++file_iter) { | 638 file_iter != file_info_list.end(); ++file_iter) { |
| 639 if (file_iter->file_path.empty()) | 639 if (file_iter->file_path.empty()) |
| 640 continue; | 640 continue; |
| 641 ScopedVector<gdata::DriveWebAppInfo> info; | 641 ScopedVector<drive::DriveWebAppInfo> info; |
| 642 registry->GetWebAppsForFile(file_iter->file_path, | 642 registry->GetWebAppsForFile(file_iter->file_path, |
| 643 file_iter->mime_type, &info); | 643 file_iter->mime_type, &info); |
| 644 std::vector<gdata::DriveWebAppInfo*> info_ptrs; | 644 std::vector<drive::DriveWebAppInfo*> info_ptrs; |
| 645 info.release(&info_ptrs); // so they don't go away prematurely. | 645 info.release(&info_ptrs); // so they don't go away prematurely. |
| 646 std::set<std::string> tasks_for_this_file; | 646 std::set<std::string> tasks_for_this_file; |
| 647 for (std::vector<gdata::DriveWebAppInfo*>::iterator | 647 for (std::vector<drive::DriveWebAppInfo*>::iterator |
| 648 apps = info_ptrs.begin(); apps != info_ptrs.end(); ++apps) { | 648 apps = info_ptrs.begin(); apps != info_ptrs.end(); ++apps) { |
| 649 std::pair<WebAppInfoMap::iterator, bool> insert_result = | 649 std::pair<WebAppInfoMap::iterator, bool> insert_result = |
| 650 app_info->insert(std::make_pair((*apps)->app_id, *apps)); | 650 app_info->insert(std::make_pair((*apps)->app_id, *apps)); |
| 651 // TODO(gspencer): For now, the action id is always "open-with", but we | 651 // TODO(gspencer): For now, the action id is always "open-with", but we |
| 652 // could add any actions that the drive app supports. | 652 // could add any actions that the drive app supports. |
| 653 std::string task_id = file_handler_util::MakeTaskID( | 653 std::string task_id = file_handler_util::MakeTaskID( |
| 654 (*apps)->app_id, file_handler_util::kTaskDrive, "open-with"); | 654 (*apps)->app_id, file_handler_util::kTaskDrive, "open-with"); |
| 655 tasks_for_this_file.insert(task_id); | 655 tasks_for_this_file.insert(task_id); |
| 656 // If we failed to insert a task_id because there was a duplicate, then we | 656 // If we failed to insert a task_id because there was a duplicate, then we |
| 657 // must delete it (since we own it). | 657 // must delete it (since we own it). |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 695 iter != available_tasks.end(); ++iter) { | 695 iter != available_tasks.end(); ++iter) { |
| 696 VLOG(2) << " " << *iter; | 696 VLOG(2) << " " << *iter; |
| 697 } | 697 } |
| 698 } | 698 } |
| 699 } | 699 } |
| 700 } | 700 } |
| 701 } | 701 } |
| 702 | 702 |
| 703 // static | 703 // static |
| 704 void GetFileTasksFileBrowserFunction::CreateDriveTasks( | 704 void GetFileTasksFileBrowserFunction::CreateDriveTasks( |
| 705 gdata::DriveWebAppsRegistry* registry, | 705 drive::DriveWebAppsRegistry* registry, |
| 706 const WebAppInfoMap& app_info, | 706 const WebAppInfoMap& app_info, |
| 707 const std::set<std::string>& available_tasks, | 707 const std::set<std::string>& available_tasks, |
| 708 const std::set<std::string>& default_tasks, | 708 const std::set<std::string>& default_tasks, |
| 709 ListValue* result_list, | 709 ListValue* result_list, |
| 710 bool* default_already_set) { | 710 bool* default_already_set) { |
| 711 *default_already_set = false; | 711 *default_already_set = false; |
| 712 // OK, now we traverse the intersection of available applications for this | 712 // OK, now we traverse the intersection of available applications for this |
| 713 // list of files, adding a task for each one that is found. | 713 // list of files, adding a task for each one that is found. |
| 714 for (std::set<std::string>::const_iterator app_iter = available_tasks.begin(); | 714 for (std::set<std::string>::const_iterator app_iter = available_tasks.begin(); |
| 715 app_iter != available_tasks.end(); ++app_iter) { | 715 app_iter != available_tasks.end(); ++app_iter) { |
| 716 std::string app_id; | 716 std::string app_id; |
| 717 std::string task_type; | 717 std::string task_type; |
| 718 bool result = file_handler_util::CrackTaskID( | 718 bool result = file_handler_util::CrackTaskID( |
| 719 *app_iter, &app_id, &task_type, NULL); | 719 *app_iter, &app_id, &task_type, NULL); |
| 720 DCHECK(result) << "Unable to parse Drive task id: " << *app_iter; | 720 DCHECK(result) << "Unable to parse Drive task id: " << *app_iter; |
| 721 DCHECK_EQ(task_type, file_handler_util::kTaskDrive); | 721 DCHECK_EQ(task_type, file_handler_util::kTaskDrive); |
| 722 | 722 |
| 723 WebAppInfoMap::const_iterator info_iter = app_info.find(app_id); | 723 WebAppInfoMap::const_iterator info_iter = app_info.find(app_id); |
| 724 DCHECK(info_iter != app_info.end()); | 724 DCHECK(info_iter != app_info.end()); |
| 725 gdata::DriveWebAppInfo* info = info_iter->second; | 725 drive::DriveWebAppInfo* info = info_iter->second; |
| 726 DictionaryValue* task = new DictionaryValue; | 726 DictionaryValue* task = new DictionaryValue; |
| 727 | 727 |
| 728 task->SetString("taskId", *app_iter); | 728 task->SetString("taskId", *app_iter); |
| 729 task->SetString("title", info->app_name); | 729 task->SetString("title", info->app_name); |
| 730 | 730 |
| 731 GURL best_icon = FindPreferredIcon(info->app_icons, | 731 GURL best_icon = FindPreferredIcon(info->app_icons, |
| 732 kPreferredIconSize); | 732 kPreferredIconSize); |
| 733 if (!best_icon.is_empty()) { | 733 if (!best_icon.is_empty()) { |
| 734 task->SetString("iconUrl", best_icon.spec()); | 734 task->SetString("iconUrl", best_icon.spec()); |
| 735 } | 735 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 752 // from drive. We'll know that they are drive apps because the extension id will | 752 // from drive. We'll know that they are drive apps because the extension id will |
| 753 // begin with kDriveTaskExtensionPrefix. | 753 // begin with kDriveTaskExtensionPrefix. |
| 754 bool GetFileTasksFileBrowserFunction::FindDriveAppTasks( | 754 bool GetFileTasksFileBrowserFunction::FindDriveAppTasks( |
| 755 const FileInfoList& file_info_list, | 755 const FileInfoList& file_info_list, |
| 756 ListValue* result_list, | 756 ListValue* result_list, |
| 757 bool* default_already_set) { | 757 bool* default_already_set) { |
| 758 | 758 |
| 759 if (file_info_list.empty()) | 759 if (file_info_list.empty()) |
| 760 return true; | 760 return true; |
| 761 | 761 |
| 762 gdata::DriveSystemService* system_service = | 762 drive::DriveSystemService* system_service = |
| 763 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 763 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 764 // |system_service| is NULL if incognito window / guest login. We return true | 764 // |system_service| is NULL if incognito window / guest login. We return true |
| 765 // in this case because there might be other extension tasks, even if we don't | 765 // in this case because there might be other extension tasks, even if we don't |
| 766 // have any to add. | 766 // have any to add. |
| 767 if (!system_service || !system_service->webapps_registry()) | 767 if (!system_service || !system_service->webapps_registry()) |
| 768 return true; | 768 return true; |
| 769 | 769 |
| 770 gdata::DriveWebAppsRegistry* registry = system_service->webapps_registry(); | 770 drive::DriveWebAppsRegistry* registry = system_service->webapps_registry(); |
| 771 | 771 |
| 772 // Map of app_id to DriveWebAppInfo so we can look up the apps we've found | 772 // Map of app_id to DriveWebAppInfo so we can look up the apps we've found |
| 773 // after taking the intersection of available apps. | 773 // after taking the intersection of available apps. |
| 774 std::map<std::string, gdata::DriveWebAppInfo*> app_info; | 774 std::map<std::string, drive::DriveWebAppInfo*> app_info; |
| 775 // Set of application IDs. This will end up with the intersection of the | 775 // Set of application IDs. This will end up with the intersection of the |
| 776 // application IDs that apply to the paths in |file_paths|. | 776 // application IDs that apply to the paths in |file_paths|. |
| 777 std::set<std::string> available_tasks; | 777 std::set<std::string> available_tasks; |
| 778 | 778 |
| 779 IntersectAvailableDriveTasks(registry, file_info_list, | 779 IntersectAvailableDriveTasks(registry, file_info_list, |
| 780 &app_info, &available_tasks); | 780 &app_info, &available_tasks); |
| 781 std::set<std::string> default_tasks; | 781 std::set<std::string> default_tasks; |
| 782 FindDefaultDriveTasks(file_info_list, available_tasks, &default_tasks); | 782 FindDefaultDriveTasks(file_info_list, available_tasks, &default_tasks); |
| 783 CreateDriveTasks(registry, app_info, available_tasks, default_tasks, | 783 CreateDriveTasks(registry, app_info, available_tasks, default_tasks, |
| 784 result_list, default_already_set); | 784 result_list, default_already_set); |
| (...skipping 556 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1341 switch (mount_type) { | 1341 switch (mount_type) { |
| 1342 case chromeos::MOUNT_TYPE_INVALID: { | 1342 case chromeos::MOUNT_TYPE_INVALID: { |
| 1343 error_ = "Invalid mount type"; | 1343 error_ = "Invalid mount type"; |
| 1344 SendResponse(false); | 1344 SendResponse(false); |
| 1345 break; | 1345 break; |
| 1346 } | 1346 } |
| 1347 case chromeos::MOUNT_TYPE_GDATA: { | 1347 case chromeos::MOUNT_TYPE_GDATA: { |
| 1348 const bool success = true; | 1348 const bool success = true; |
| 1349 // Pass back the drive mount point path as source path. | 1349 // Pass back the drive mount point path as source path. |
| 1350 const std::string& drive_path = | 1350 const std::string& drive_path = |
| 1351 gdata::util::GetDriveMountPointPathAsString(); | 1351 drive::util::GetDriveMountPointPathAsString(); |
| 1352 SetResult(Value::CreateStringValue(drive_path)); | 1352 SetResult(Value::CreateStringValue(drive_path)); |
| 1353 FileBrowserEventRouterFactory::GetForProfile(profile_)-> | 1353 FileBrowserEventRouterFactory::GetForProfile(profile_)-> |
| 1354 MountDrive(base::Bind(&AddMountFunction::SendResponse, | 1354 MountDrive(base::Bind(&AddMountFunction::SendResponse, |
| 1355 this, | 1355 this, |
| 1356 success)); | 1356 success)); |
| 1357 break; | 1357 break; |
| 1358 } | 1358 } |
| 1359 default: { | 1359 default: { |
| 1360 UrlList file_paths; | 1360 UrlList file_paths; |
| 1361 file_paths.push_back(GURL(file_url)); | 1361 file_paths.push_back(GURL(file_url)); |
| (...skipping 16 matching lines...) Expand all Loading... |
| 1378 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1378 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1379 | 1379 |
| 1380 if (!files.size()) { | 1380 if (!files.size()) { |
| 1381 SendResponse(false); | 1381 SendResponse(false); |
| 1382 return; | 1382 return; |
| 1383 } | 1383 } |
| 1384 | 1384 |
| 1385 const FilePath& source_path = files[0].local_path; | 1385 const FilePath& source_path = files[0].local_path; |
| 1386 const FilePath::StringType& display_name = files[0].display_name; | 1386 const FilePath::StringType& display_name = files[0].display_name; |
| 1387 // Check if the source path is under Drive cache directory. | 1387 // Check if the source path is under Drive cache directory. |
| 1388 gdata::DriveSystemService* system_service = | 1388 drive::DriveSystemService* system_service = |
| 1389 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 1389 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 1390 gdata::DriveCache* cache = system_service ? system_service->cache() : NULL; | 1390 drive::DriveCache* cache = system_service ? system_service->cache() : NULL; |
| 1391 if (cache && cache->IsUnderDriveCacheDirectory(source_path)) { | 1391 if (cache && cache->IsUnderDriveCacheDirectory(source_path)) { |
| 1392 cache->SetMountedStateOnUIThread( | 1392 cache->SetMountedStateOnUIThread( |
| 1393 source_path, | 1393 source_path, |
| 1394 true, | 1394 true, |
| 1395 base::Bind(&AddMountFunction::OnMountedStateSet, this, mount_type_str, | 1395 base::Bind(&AddMountFunction::OnMountedStateSet, this, mount_type_str, |
| 1396 display_name)); | 1396 display_name)); |
| 1397 } else { | 1397 } else { |
| 1398 OnMountedStateSet(mount_type_str, display_name, | 1398 OnMountedStateSet(mount_type_str, display_name, |
| 1399 gdata::DRIVE_FILE_OK, source_path); | 1399 drive::DRIVE_FILE_OK, source_path); |
| 1400 } | 1400 } |
| 1401 } | 1401 } |
| 1402 | 1402 |
| 1403 void AddMountFunction::OnMountedStateSet(const std::string& mount_type, | 1403 void AddMountFunction::OnMountedStateSet(const std::string& mount_type, |
| 1404 const FilePath::StringType& file_name, | 1404 const FilePath::StringType& file_name, |
| 1405 gdata::DriveFileError error, | 1405 drive::DriveFileError error, |
| 1406 const FilePath& file_path) { | 1406 const FilePath& file_path) { |
| 1407 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1407 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1408 DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance(); | 1408 DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance(); |
| 1409 // Pass back the actual source path of the mount point. | 1409 // Pass back the actual source path of the mount point. |
| 1410 SetResult(Value::CreateStringValue(file_path.value())); | 1410 SetResult(Value::CreateStringValue(file_path.value())); |
| 1411 SendResponse(true); | 1411 SendResponse(true); |
| 1412 // MountPath() takes a std::string. | 1412 // MountPath() takes a std::string. |
| 1413 disk_mount_manager->MountPath(file_path.AsUTF8Unsafe(), | 1413 disk_mount_manager->MountPath(file_path.AsUTF8Unsafe(), |
| 1414 FilePath(file_name).Extension(), file_name, | 1414 FilePath(file_name).Extension(), file_name, |
| 1415 DiskMountManager::MountTypeFromString( | 1415 DiskMountManager::MountTypeFromString( |
| (...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1508 | 1508 |
| 1509 void GetSizeStatsFunction::GetLocalPathsResponseOnUIThread( | 1509 void GetSizeStatsFunction::GetLocalPathsResponseOnUIThread( |
| 1510 const SelectedFileInfoList& files) { | 1510 const SelectedFileInfoList& files) { |
| 1511 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1511 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1512 | 1512 |
| 1513 if (files.size() != 1) { | 1513 if (files.size() != 1) { |
| 1514 SendResponse(false); | 1514 SendResponse(false); |
| 1515 return; | 1515 return; |
| 1516 } | 1516 } |
| 1517 | 1517 |
| 1518 if (files[0].file_path == gdata::util::GetDriveMountPointPath()) { | 1518 if (files[0].file_path == drive::util::GetDriveMountPointPath()) { |
| 1519 gdata::DriveSystemService* system_service = | 1519 drive::DriveSystemService* system_service = |
| 1520 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 1520 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 1521 | 1521 |
| 1522 gdata::DriveFileSystemInterface* file_system = | 1522 drive::DriveFileSystemInterface* file_system = |
| 1523 system_service->file_system(); | 1523 system_service->file_system(); |
| 1524 | 1524 |
| 1525 file_system->GetAvailableSpace( | 1525 file_system->GetAvailableSpace( |
| 1526 base::Bind(&GetSizeStatsFunction::GetDriveAvailableSpaceCallback, | 1526 base::Bind(&GetSizeStatsFunction::GetDriveAvailableSpaceCallback, |
| 1527 this)); | 1527 this)); |
| 1528 | 1528 |
| 1529 } else { | 1529 } else { |
| 1530 BrowserThread::PostTask( | 1530 BrowserThread::PostTask( |
| 1531 BrowserThread::FILE, FROM_HERE, | 1531 BrowserThread::FILE, FROM_HERE, |
| 1532 base::Bind( | 1532 base::Bind( |
| 1533 &GetSizeStatsFunction::CallGetSizeStatsOnFileThread, | 1533 &GetSizeStatsFunction::CallGetSizeStatsOnFileThread, |
| 1534 this, | 1534 this, |
| 1535 files[0].file_path.value())); | 1535 files[0].file_path.value())); |
| 1536 } | 1536 } |
| 1537 } | 1537 } |
| 1538 | 1538 |
| 1539 void GetSizeStatsFunction::GetDriveAvailableSpaceCallback( | 1539 void GetSizeStatsFunction::GetDriveAvailableSpaceCallback( |
| 1540 gdata::DriveFileError error, | 1540 drive::DriveFileError error, |
| 1541 int64 bytes_total, | 1541 int64 bytes_total, |
| 1542 int64 bytes_used) { | 1542 int64 bytes_used) { |
| 1543 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1543 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 1544 | 1544 |
| 1545 if (error == gdata::DRIVE_FILE_OK) { | 1545 if (error == drive::DRIVE_FILE_OK) { |
| 1546 int64 bytes_remaining = bytes_total - bytes_used; | 1546 int64 bytes_remaining = bytes_total - bytes_used; |
| 1547 GetSizeStatsCallbackOnUIThread(static_cast<size_t>(bytes_total/1024), | 1547 GetSizeStatsCallbackOnUIThread(static_cast<size_t>(bytes_total/1024), |
| 1548 static_cast<size_t>(bytes_remaining/1024)); | 1548 static_cast<size_t>(bytes_remaining/1024)); |
| 1549 } else { | 1549 } else { |
| 1550 error_ = base::StringPrintf(kFileError, static_cast<int>(error)); | 1550 error_ = base::StringPrintf(kFileError, static_cast<int>(error)); |
| 1551 SendResponse(false); | 1551 SendResponse(false); |
| 1552 } | 1552 } |
| 1553 } | 1553 } |
| 1554 | 1554 |
| 1555 void GetSizeStatsFunction::CallGetSizeStatsOnFileThread( | 1555 void GetSizeStatsFunction::CallGetSizeStatsOnFileThread( |
| (...skipping 462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2018 | 2018 |
| 2019 SET_STRING(IDS_FILE_BROWSER, ALL_FILES_FILTER); | 2019 SET_STRING(IDS_FILE_BROWSER, ALL_FILES_FILTER); |
| 2020 #undef SET_STRING | 2020 #undef SET_STRING |
| 2021 | 2021 |
| 2022 dict->SetBoolean("PDF_VIEW_ENABLED", | 2022 dict->SetBoolean("PDF_VIEW_ENABLED", |
| 2023 file_manager_util::ShouldBeOpenedWithPdfPlugin(profile(), ".pdf")); | 2023 file_manager_util::ShouldBeOpenedWithPdfPlugin(profile(), ".pdf")); |
| 2024 | 2024 |
| 2025 ChromeURLDataManager::DataSource::SetFontAndTextDirection(dict); | 2025 ChromeURLDataManager::DataSource::SetFontAndTextDirection(dict); |
| 2026 | 2026 |
| 2027 dict->SetBoolean("ENABLE_GDATA", | 2027 dict->SetBoolean("ENABLE_GDATA", |
| 2028 gdata::DriveSystemService::IsDriveEnabled(profile())); | 2028 drive::DriveSystemService::IsDriveEnabled(profile())); |
| 2029 | 2029 |
| 2030 #if defined(USE_ASH) | 2030 #if defined(USE_ASH) |
| 2031 dict->SetBoolean("ASH", true); | 2031 dict->SetBoolean("ASH", true); |
| 2032 #else | 2032 #else |
| 2033 dict->SetBoolean("ASH", false); | 2033 dict->SetBoolean("ASH", false); |
| 2034 #endif | 2034 #endif |
| 2035 | 2035 |
| 2036 std::string board; | 2036 std::string board; |
| 2037 const char kMachineInfoBoard[] = "CHROMEOS_RELEASE_BOARD"; | 2037 const char kMachineInfoBoard[] = "CHROMEOS_RELEASE_BOARD"; |
| 2038 chromeos::system::StatisticsProvider* provider = | 2038 chromeos::system::StatisticsProvider* provider = |
| 2039 chromeos::system::StatisticsProvider::GetInstance(); | 2039 chromeos::system::StatisticsProvider::GetInstance(); |
| 2040 if (!provider->GetMachineStatistic(kMachineInfoBoard, &board)) | 2040 if (!provider->GetMachineStatistic(kMachineInfoBoard, &board)) |
| 2041 board = "unknown"; | 2041 board = "unknown"; |
| 2042 dict->SetString(kMachineInfoBoard, board); | 2042 dict->SetString(kMachineInfoBoard, board); |
| 2043 | 2043 |
| 2044 return true; | 2044 return true; |
| 2045 } | 2045 } |
| 2046 | 2046 |
| 2047 GetDriveFilePropertiesFunction::GetDriveFilePropertiesFunction() { | 2047 GetDriveFilePropertiesFunction::GetDriveFilePropertiesFunction() { |
| 2048 } | 2048 } |
| 2049 | 2049 |
| 2050 GetDriveFilePropertiesFunction::~GetDriveFilePropertiesFunction() { | 2050 GetDriveFilePropertiesFunction::~GetDriveFilePropertiesFunction() { |
| 2051 } | 2051 } |
| 2052 | 2052 |
| 2053 void GetDriveFilePropertiesFunction::DoOperation( | 2053 void GetDriveFilePropertiesFunction::DoOperation( |
| 2054 const FilePath& file_path, | 2054 const FilePath& file_path, |
| 2055 base::DictionaryValue* property_dict, | 2055 base::DictionaryValue* property_dict, |
| 2056 scoped_ptr<gdata::DriveEntryProto> entry_proto) { | 2056 scoped_ptr<drive::DriveEntryProto> entry_proto) { |
| 2057 DCHECK(property_dict); | 2057 DCHECK(property_dict); |
| 2058 | 2058 |
| 2059 // Nothing to do here so simply call OnOperationComplete(). | 2059 // Nothing to do here so simply call OnOperationComplete(). |
| 2060 OnOperationComplete(file_path, | 2060 OnOperationComplete(file_path, |
| 2061 property_dict, | 2061 property_dict, |
| 2062 gdata::DRIVE_FILE_OK, | 2062 drive::DRIVE_FILE_OK, |
| 2063 entry_proto.Pass()); | 2063 entry_proto.Pass()); |
| 2064 } | 2064 } |
| 2065 | 2065 |
| 2066 bool GetDriveFilePropertiesFunction::RunImpl() { | 2066 bool GetDriveFilePropertiesFunction::RunImpl() { |
| 2067 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2067 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2068 if (args_->GetSize() != 1) | 2068 if (args_->GetSize() != 1) |
| 2069 return false; | 2069 return false; |
| 2070 | 2070 |
| 2071 PrepareResults(); | 2071 PrepareResults(); |
| 2072 return true; | 2072 return true; |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2093 std::string file_str; | 2093 std::string file_str; |
| 2094 path_list_->GetString(current_index_, &file_str); | 2094 path_list_->GetString(current_index_, &file_str); |
| 2095 GURL file_url = GURL(file_str); | 2095 GURL file_url = GURL(file_str); |
| 2096 FilePath file_path = GetVirtualPathFromURL(file_url); | 2096 FilePath file_path = GetVirtualPathFromURL(file_url); |
| 2097 | 2097 |
| 2098 base::DictionaryValue* property_dict = new base::DictionaryValue; | 2098 base::DictionaryValue* property_dict = new base::DictionaryValue; |
| 2099 property_dict->SetString("fileUrl", file_url.spec()); | 2099 property_dict->SetString("fileUrl", file_url.spec()); |
| 2100 file_properties_->Append(property_dict); | 2100 file_properties_->Append(property_dict); |
| 2101 | 2101 |
| 2102 // Start getting the file info. | 2102 // Start getting the file info. |
| 2103 gdata::DriveSystemService* system_service = | 2103 drive::DriveSystemService* system_service = |
| 2104 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2104 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2105 system_service->file_system()->GetEntryInfoByPath( | 2105 system_service->file_system()->GetEntryInfoByPath( |
| 2106 file_path, | 2106 file_path, |
| 2107 base::Bind(&GetDriveFilePropertiesFunction::OnGetFileInfo, | 2107 base::Bind(&GetDriveFilePropertiesFunction::OnGetFileInfo, |
| 2108 this, | 2108 this, |
| 2109 file_path, | 2109 file_path, |
| 2110 property_dict)); | 2110 property_dict)); |
| 2111 } | 2111 } |
| 2112 | 2112 |
| 2113 void GetDriveFilePropertiesFunction::CompleteGetFileProperties() { | 2113 void GetDriveFilePropertiesFunction::CompleteGetFileProperties() { |
| 2114 current_index_++; | 2114 current_index_++; |
| 2115 | 2115 |
| 2116 // Could be called from callback. Let finish operation. | 2116 // Could be called from callback. Let finish operation. |
| 2117 MessageLoop::current()->PostTask(FROM_HERE, | 2117 MessageLoop::current()->PostTask(FROM_HERE, |
| 2118 Bind(&GetDriveFilePropertiesFunction::GetNextFileProperties, this)); | 2118 Bind(&GetDriveFilePropertiesFunction::GetNextFileProperties, this)); |
| 2119 } | 2119 } |
| 2120 | 2120 |
| 2121 void GetDriveFilePropertiesFunction::OnGetFileInfo( | 2121 void GetDriveFilePropertiesFunction::OnGetFileInfo( |
| 2122 const FilePath& file_path, | 2122 const FilePath& file_path, |
| 2123 base::DictionaryValue* property_dict, | 2123 base::DictionaryValue* property_dict, |
| 2124 gdata::DriveFileError error, | 2124 drive::DriveFileError error, |
| 2125 scoped_ptr<gdata::DriveEntryProto> entry_proto) { | 2125 scoped_ptr<drive::DriveEntryProto> entry_proto) { |
| 2126 DCHECK(property_dict); | 2126 DCHECK(property_dict); |
| 2127 | 2127 |
| 2128 if (entry_proto.get() && !entry_proto->has_file_specific_info()) | 2128 if (entry_proto.get() && !entry_proto->has_file_specific_info()) |
| 2129 error = gdata::DRIVE_FILE_ERROR_NOT_FOUND; | 2129 error = drive::DRIVE_FILE_ERROR_NOT_FOUND; |
| 2130 | 2130 |
| 2131 if (error == gdata::DRIVE_FILE_OK) | 2131 if (error == drive::DRIVE_FILE_OK) |
| 2132 DoOperation(file_path, property_dict, entry_proto.Pass()); | 2132 DoOperation(file_path, property_dict, entry_proto.Pass()); |
| 2133 else | 2133 else |
| 2134 OnOperationComplete(file_path, property_dict, error, entry_proto.Pass()); | 2134 OnOperationComplete(file_path, property_dict, error, entry_proto.Pass()); |
| 2135 } | 2135 } |
| 2136 | 2136 |
| 2137 void GetDriveFilePropertiesFunction::OnOperationComplete( | 2137 void GetDriveFilePropertiesFunction::OnOperationComplete( |
| 2138 const FilePath& file_path, | 2138 const FilePath& file_path, |
| 2139 base::DictionaryValue* property_dict, | 2139 base::DictionaryValue* property_dict, |
| 2140 gdata::DriveFileError error, | 2140 drive::DriveFileError error, |
| 2141 scoped_ptr<gdata::DriveEntryProto> entry_proto) { | 2141 scoped_ptr<drive::DriveEntryProto> entry_proto) { |
| 2142 if (entry_proto.get() && !entry_proto->has_file_specific_info()) | 2142 if (entry_proto.get() && !entry_proto->has_file_specific_info()) |
| 2143 error = gdata::DRIVE_FILE_ERROR_NOT_FOUND; | 2143 error = drive::DRIVE_FILE_ERROR_NOT_FOUND; |
| 2144 | 2144 |
| 2145 if (error != gdata::DRIVE_FILE_OK) { | 2145 if (error != drive::DRIVE_FILE_OK) { |
| 2146 property_dict->SetInteger("errorCode", error); | 2146 property_dict->SetInteger("errorCode", error); |
| 2147 CompleteGetFileProperties(); | 2147 CompleteGetFileProperties(); |
| 2148 return; | 2148 return; |
| 2149 } | 2149 } |
| 2150 DCHECK(entry_proto.get()); | 2150 DCHECK(entry_proto.get()); |
| 2151 | 2151 |
| 2152 const gdata::DriveFileSpecificInfo& file_specific_info = | 2152 const drive::DriveFileSpecificInfo& file_specific_info = |
| 2153 entry_proto->file_specific_info(); | 2153 entry_proto->file_specific_info(); |
| 2154 property_dict->SetString("thumbnailUrl", file_specific_info.thumbnail_url()); | 2154 property_dict->SetString("thumbnailUrl", file_specific_info.thumbnail_url()); |
| 2155 if (!file_specific_info.alternate_url().empty()) | 2155 if (!file_specific_info.alternate_url().empty()) |
| 2156 property_dict->SetString("editUrl", file_specific_info.alternate_url()); | 2156 property_dict->SetString("editUrl", file_specific_info.alternate_url()); |
| 2157 | 2157 |
| 2158 if (!entry_proto->content_url().empty()) { | 2158 if (!entry_proto->content_url().empty()) { |
| 2159 property_dict->SetString("contentUrl", entry_proto->content_url()); | 2159 property_dict->SetString("contentUrl", entry_proto->content_url()); |
| 2160 } | 2160 } |
| 2161 | 2161 |
| 2162 property_dict->SetBoolean("isHosted", | 2162 property_dict->SetBoolean("isHosted", |
| 2163 file_specific_info.is_hosted_document()); | 2163 file_specific_info.is_hosted_document()); |
| 2164 | 2164 |
| 2165 property_dict->SetString("contentMimeType", | 2165 property_dict->SetString("contentMimeType", |
| 2166 file_specific_info.content_mime_type()); | 2166 file_specific_info.content_mime_type()); |
| 2167 | 2167 |
| 2168 gdata::DriveSystemService* system_service = | 2168 drive::DriveSystemService* system_service = |
| 2169 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2169 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2170 | 2170 |
| 2171 // Get drive WebApps that can accept this file. | 2171 // Get drive WebApps that can accept this file. |
| 2172 ScopedVector<gdata::DriveWebAppInfo> web_apps; | 2172 ScopedVector<drive::DriveWebAppInfo> web_apps; |
| 2173 system_service->webapps_registry()->GetWebAppsForFile( | 2173 system_service->webapps_registry()->GetWebAppsForFile( |
| 2174 file_path, file_specific_info.content_mime_type(), &web_apps); | 2174 file_path, file_specific_info.content_mime_type(), &web_apps); |
| 2175 if (!web_apps.empty()) { | 2175 if (!web_apps.empty()) { |
| 2176 std::string default_task_id = file_handler_util::GetDefaultTaskIdFromPrefs( | 2176 std::string default_task_id = file_handler_util::GetDefaultTaskIdFromPrefs( |
| 2177 profile_, | 2177 profile_, |
| 2178 file_specific_info.content_mime_type(), | 2178 file_specific_info.content_mime_type(), |
| 2179 file_path.Extension()); | 2179 file_path.Extension()); |
| 2180 std::string default_app_id; | 2180 std::string default_app_id; |
| 2181 file_handler_util::CrackTaskID( | 2181 file_handler_util::CrackTaskID( |
| 2182 default_task_id, &default_app_id, NULL, NULL); | 2182 default_task_id, &default_app_id, NULL, NULL); |
| 2183 | 2183 |
| 2184 ListValue* apps = new ListValue(); | 2184 ListValue* apps = new ListValue(); |
| 2185 property_dict->Set("driveApps", apps); | 2185 property_dict->Set("driveApps", apps); |
| 2186 for (ScopedVector<gdata::DriveWebAppInfo>::const_iterator it = | 2186 for (ScopedVector<drive::DriveWebAppInfo>::const_iterator it = |
| 2187 web_apps.begin(); | 2187 web_apps.begin(); |
| 2188 it != web_apps.end(); ++it) { | 2188 it != web_apps.end(); ++it) { |
| 2189 const gdata::DriveWebAppInfo* webapp_info = *it; | 2189 const drive::DriveWebAppInfo* webapp_info = *it; |
| 2190 DictionaryValue* app = new DictionaryValue(); | 2190 DictionaryValue* app = new DictionaryValue(); |
| 2191 app->SetString("appId", webapp_info->app_id); | 2191 app->SetString("appId", webapp_info->app_id); |
| 2192 app->SetString("appName", webapp_info->app_name); | 2192 app->SetString("appName", webapp_info->app_name); |
| 2193 GURL app_icon = FindPreferredIcon(webapp_info->app_icons, | 2193 GURL app_icon = FindPreferredIcon(webapp_info->app_icons, |
| 2194 kPreferredIconSize); | 2194 kPreferredIconSize); |
| 2195 if (!app_icon.is_empty()) | 2195 if (!app_icon.is_empty()) |
| 2196 app->SetString("appIcon", app_icon.spec()); | 2196 app->SetString("appIcon", app_icon.spec()); |
| 2197 GURL doc_icon = FindPreferredIcon(webapp_info->document_icons, | 2197 GURL doc_icon = FindPreferredIcon(webapp_info->document_icons, |
| 2198 kPreferredIconSize); | 2198 kPreferredIconSize); |
| 2199 if (!doc_icon.is_empty()) | 2199 if (!doc_icon.is_empty()) |
| (...skipping 18 matching lines...) Expand all Loading... |
| 2218 entry_proto->resource_id(), | 2218 entry_proto->resource_id(), |
| 2219 file_specific_info.file_md5(), | 2219 file_specific_info.file_md5(), |
| 2220 base::Bind( | 2220 base::Bind( |
| 2221 &GetDriveFilePropertiesFunction::CacheStateReceived, | 2221 &GetDriveFilePropertiesFunction::CacheStateReceived, |
| 2222 this, property_dict)); | 2222 this, property_dict)); |
| 2223 } | 2223 } |
| 2224 | 2224 |
| 2225 void GetDriveFilePropertiesFunction::CacheStateReceived( | 2225 void GetDriveFilePropertiesFunction::CacheStateReceived( |
| 2226 base::DictionaryValue* property_dict, | 2226 base::DictionaryValue* property_dict, |
| 2227 bool /* success */, | 2227 bool /* success */, |
| 2228 const gdata::DriveCacheEntry& cache_entry) { | 2228 const drive::DriveCacheEntry& cache_entry) { |
| 2229 // In case of an error (i.e. success is false), cache_entry.is_*() all | 2229 // In case of an error (i.e. success is false), cache_entry.is_*() all |
| 2230 // returns false. | 2230 // returns false. |
| 2231 property_dict->SetBoolean("isPinned", cache_entry.is_pinned()); | 2231 property_dict->SetBoolean("isPinned", cache_entry.is_pinned()); |
| 2232 property_dict->SetBoolean("isPresent", cache_entry.is_present()); | 2232 property_dict->SetBoolean("isPresent", cache_entry.is_present()); |
| 2233 property_dict->SetBoolean("isDirty", cache_entry.is_dirty()); | 2233 property_dict->SetBoolean("isDirty", cache_entry.is_dirty()); |
| 2234 | 2234 |
| 2235 CompleteGetFileProperties(); | 2235 CompleteGetFileProperties(); |
| 2236 } | 2236 } |
| 2237 | 2237 |
| 2238 PinDriveFileFunction::PinDriveFileFunction() { | 2238 PinDriveFileFunction::PinDriveFileFunction() { |
| 2239 } | 2239 } |
| 2240 | 2240 |
| 2241 PinDriveFileFunction::~PinDriveFileFunction() { | 2241 PinDriveFileFunction::~PinDriveFileFunction() { |
| 2242 } | 2242 } |
| 2243 | 2243 |
| 2244 bool PinDriveFileFunction::RunImpl() { | 2244 bool PinDriveFileFunction::RunImpl() { |
| 2245 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2245 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2246 if (args_->GetSize() != 2 || !args_->GetBoolean(1, &set_pin_)) | 2246 if (args_->GetSize() != 2 || !args_->GetBoolean(1, &set_pin_)) |
| 2247 return false; | 2247 return false; |
| 2248 | 2248 |
| 2249 PrepareResults(); | 2249 PrepareResults(); |
| 2250 | 2250 |
| 2251 return true; | 2251 return true; |
| 2252 } | 2252 } |
| 2253 | 2253 |
| 2254 void PinDriveFileFunction::DoOperation( | 2254 void PinDriveFileFunction::DoOperation( |
| 2255 const FilePath& file_path, | 2255 const FilePath& file_path, |
| 2256 base::DictionaryValue* properties, | 2256 base::DictionaryValue* properties, |
| 2257 scoped_ptr<gdata::DriveEntryProto> entry_proto) { | 2257 scoped_ptr<drive::DriveEntryProto> entry_proto) { |
| 2258 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2258 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2259 | 2259 |
| 2260 gdata::DriveSystemService* system_service = | 2260 drive::DriveSystemService* system_service = |
| 2261 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2261 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2262 // This is subtle but we should take references of resource_id and md5 | 2262 // This is subtle but we should take references of resource_id and md5 |
| 2263 // before |file_info| is passed to |callback| by base::Passed(). Otherwise, | 2263 // before |file_info| is passed to |callback| by base::Passed(). Otherwise, |
| 2264 // file_info->whatever() crashes. | 2264 // file_info->whatever() crashes. |
| 2265 const std::string& resource_id = entry_proto->resource_id(); | 2265 const std::string& resource_id = entry_proto->resource_id(); |
| 2266 const std::string& md5 = entry_proto->file_specific_info().file_md5(); | 2266 const std::string& md5 = entry_proto->file_specific_info().file_md5(); |
| 2267 const gdata::CacheOperationCallback callback = | 2267 const drive::CacheOperationCallback callback = |
| 2268 base::Bind(&PinDriveFileFunction::OnPinStateSet, | 2268 base::Bind(&PinDriveFileFunction::OnPinStateSet, |
| 2269 this, | 2269 this, |
| 2270 file_path, | 2270 file_path, |
| 2271 properties, | 2271 properties, |
| 2272 base::Passed(&entry_proto)); | 2272 base::Passed(&entry_proto)); |
| 2273 | 2273 |
| 2274 if (set_pin_) | 2274 if (set_pin_) |
| 2275 system_service->cache()->PinOnUIThread(resource_id, md5, callback); | 2275 system_service->cache()->PinOnUIThread(resource_id, md5, callback); |
| 2276 else | 2276 else |
| 2277 system_service->cache()->UnpinOnUIThread(resource_id, md5, callback); | 2277 system_service->cache()->UnpinOnUIThread(resource_id, md5, callback); |
| 2278 } | 2278 } |
| 2279 | 2279 |
| 2280 void PinDriveFileFunction::OnPinStateSet( | 2280 void PinDriveFileFunction::OnPinStateSet( |
| 2281 const FilePath& path, | 2281 const FilePath& path, |
| 2282 base::DictionaryValue* properties, | 2282 base::DictionaryValue* properties, |
| 2283 scoped_ptr<gdata::DriveEntryProto> entry_proto, | 2283 scoped_ptr<drive::DriveEntryProto> entry_proto, |
| 2284 gdata::DriveFileError error, | 2284 drive::DriveFileError error, |
| 2285 const std::string& /* resource_id */, | 2285 const std::string& /* resource_id */, |
| 2286 const std::string& /* md5 */) { | 2286 const std::string& /* md5 */) { |
| 2287 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2287 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2288 | 2288 |
| 2289 OnOperationComplete(path, properties, error, entry_proto.Pass()); | 2289 OnOperationComplete(path, properties, error, entry_proto.Pass()); |
| 2290 } | 2290 } |
| 2291 | 2291 |
| 2292 GetFileLocationsFunction::GetFileLocationsFunction() { | 2292 GetFileLocationsFunction::GetFileLocationsFunction() { |
| 2293 } | 2293 } |
| 2294 | 2294 |
| (...skipping 20 matching lines...) Expand all Loading... |
| 2315 this)); | 2315 this)); |
| 2316 return true; | 2316 return true; |
| 2317 } | 2317 } |
| 2318 | 2318 |
| 2319 void GetFileLocationsFunction::GetLocalPathsResponseOnUIThread( | 2319 void GetFileLocationsFunction::GetLocalPathsResponseOnUIThread( |
| 2320 const SelectedFileInfoList& files) { | 2320 const SelectedFileInfoList& files) { |
| 2321 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2321 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2322 | 2322 |
| 2323 ListValue* locations = new ListValue; | 2323 ListValue* locations = new ListValue; |
| 2324 for (size_t i = 0; i < files.size(); ++i) { | 2324 for (size_t i = 0; i < files.size(); ++i) { |
| 2325 if (gdata::util::IsUnderDriveMountPoint(files[i].file_path)) { | 2325 if (drive::util::IsUnderDriveMountPoint(files[i].file_path)) { |
| 2326 locations->Append(Value::CreateStringValue("drive")); | 2326 locations->Append(Value::CreateStringValue("drive")); |
| 2327 } else { | 2327 } else { |
| 2328 locations->Append(Value::CreateStringValue("local")); | 2328 locations->Append(Value::CreateStringValue("local")); |
| 2329 } | 2329 } |
| 2330 } | 2330 } |
| 2331 | 2331 |
| 2332 SetResult(locations); | 2332 SetResult(locations); |
| 2333 SendResponse(true); | 2333 SendResponse(true); |
| 2334 } | 2334 } |
| 2335 | 2335 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 2359 base::Bind(&GetDriveFilesFunction::GetLocalPathsResponseOnUIThread, | 2359 base::Bind(&GetDriveFilesFunction::GetLocalPathsResponseOnUIThread, |
| 2360 this)); | 2360 this)); |
| 2361 return true; | 2361 return true; |
| 2362 } | 2362 } |
| 2363 | 2363 |
| 2364 void GetDriveFilesFunction::GetLocalPathsResponseOnUIThread( | 2364 void GetDriveFilesFunction::GetLocalPathsResponseOnUIThread( |
| 2365 const SelectedFileInfoList& files) { | 2365 const SelectedFileInfoList& files) { |
| 2366 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2366 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2367 | 2367 |
| 2368 for (size_t i = 0; i < files.size(); ++i) { | 2368 for (size_t i = 0; i < files.size(); ++i) { |
| 2369 DCHECK(gdata::util::IsUnderDriveMountPoint(files[i].file_path)); | 2369 DCHECK(drive::util::IsUnderDriveMountPoint(files[i].file_path)); |
| 2370 FilePath drive_path = gdata::util::ExtractDrivePath(files[i].file_path); | 2370 FilePath drive_path = drive::util::ExtractDrivePath(files[i].file_path); |
| 2371 remaining_drive_paths_.push(drive_path); | 2371 remaining_drive_paths_.push(drive_path); |
| 2372 } | 2372 } |
| 2373 | 2373 |
| 2374 local_paths_ = new ListValue; | 2374 local_paths_ = new ListValue; |
| 2375 GetFileOrSendResponse(); | 2375 GetFileOrSendResponse(); |
| 2376 } | 2376 } |
| 2377 | 2377 |
| 2378 void GetDriveFilesFunction::GetFileOrSendResponse() { | 2378 void GetDriveFilesFunction::GetFileOrSendResponse() { |
| 2379 // Send the response if all files are obtained. | 2379 // Send the response if all files are obtained. |
| 2380 if (remaining_drive_paths_.empty()) { | 2380 if (remaining_drive_paths_.empty()) { |
| 2381 SetResult(local_paths_); | 2381 SetResult(local_paths_); |
| 2382 SendResponse(true); | 2382 SendResponse(true); |
| 2383 return; | 2383 return; |
| 2384 } | 2384 } |
| 2385 | 2385 |
| 2386 gdata::DriveSystemService* system_service = | 2386 drive::DriveSystemService* system_service = |
| 2387 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2387 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2388 DCHECK(system_service); | 2388 DCHECK(system_service); |
| 2389 | 2389 |
| 2390 // Get the file on the top of the queue. | 2390 // Get the file on the top of the queue. |
| 2391 FilePath drive_path = remaining_drive_paths_.front(); | 2391 FilePath drive_path = remaining_drive_paths_.front(); |
| 2392 system_service->file_system()->GetFileByPath( | 2392 system_service->file_system()->GetFileByPath( |
| 2393 drive_path, | 2393 drive_path, |
| 2394 base::Bind(&GetDriveFilesFunction::OnFileReady, this), | 2394 base::Bind(&GetDriveFilesFunction::OnFileReady, this), |
| 2395 gdata::GetContentCallback()); | 2395 gdata::GetContentCallback()); |
| 2396 } | 2396 } |
| 2397 | 2397 |
| 2398 | 2398 |
| 2399 void GetDriveFilesFunction::OnFileReady( | 2399 void GetDriveFilesFunction::OnFileReady( |
| 2400 gdata::DriveFileError error, | 2400 drive::DriveFileError error, |
| 2401 const FilePath& local_path, | 2401 const FilePath& local_path, |
| 2402 const std::string& unused_mime_type, | 2402 const std::string& unused_mime_type, |
| 2403 gdata::DriveFileType file_type) { | 2403 drive::DriveFileType file_type) { |
| 2404 FilePath drive_path = remaining_drive_paths_.front(); | 2404 FilePath drive_path = remaining_drive_paths_.front(); |
| 2405 | 2405 |
| 2406 if (error == gdata::DRIVE_FILE_OK) { | 2406 if (error == drive::DRIVE_FILE_OK) { |
| 2407 local_paths_->Append(Value::CreateStringValue(local_path.value())); | 2407 local_paths_->Append(Value::CreateStringValue(local_path.value())); |
| 2408 DVLOG(1) << "Got " << drive_path.value() << " as " << local_path.value(); | 2408 DVLOG(1) << "Got " << drive_path.value() << " as " << local_path.value(); |
| 2409 | 2409 |
| 2410 // TODO(benchan): If the file is a hosted document, a temporary JSON file | 2410 // TODO(benchan): If the file is a hosted document, a temporary JSON file |
| 2411 // is created to represent the document. The JSON file is not cached and | 2411 // is created to represent the document. The JSON file is not cached and |
| 2412 // should be deleted after use. We need to somehow communicate with | 2412 // should be deleted after use. We need to somehow communicate with |
| 2413 // file_manager.js to manage the lifetime of the temporary file. | 2413 // file_manager.js to manage the lifetime of the temporary file. |
| 2414 // See crosbug.com/28058. | 2414 // See crosbug.com/28058. |
| 2415 } else { | 2415 } else { |
| 2416 local_paths_->Append(Value::CreateStringValue("")); | 2416 local_paths_->Append(Value::CreateStringValue("")); |
| 2417 DVLOG(1) << "Failed to get " << drive_path.value() | 2417 DVLOG(1) << "Failed to get " << drive_path.value() |
| 2418 << " with error code: " << error; | 2418 << " with error code: " << error; |
| 2419 } | 2419 } |
| 2420 | 2420 |
| 2421 remaining_drive_paths_.pop(); | 2421 remaining_drive_paths_.pop(); |
| 2422 | 2422 |
| 2423 // Start getting the next file. | 2423 // Start getting the next file. |
| 2424 GetFileOrSendResponse(); | 2424 GetFileOrSendResponse(); |
| 2425 } | 2425 } |
| 2426 | 2426 |
| 2427 GetFileTransfersFunction::GetFileTransfersFunction() {} | 2427 GetFileTransfersFunction::GetFileTransfersFunction() {} |
| 2428 | 2428 |
| 2429 GetFileTransfersFunction::~GetFileTransfersFunction() {} | 2429 GetFileTransfersFunction::~GetFileTransfersFunction() {} |
| 2430 | 2430 |
| 2431 ListValue* GetFileTransfersFunction::GetFileTransfersList() { | 2431 ListValue* GetFileTransfersFunction::GetFileTransfersList() { |
| 2432 gdata::DriveSystemService* system_service = | 2432 drive::DriveSystemService* system_service = |
| 2433 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2433 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2434 if (!system_service) | 2434 if (!system_service) |
| 2435 return NULL; | 2435 return NULL; |
| 2436 | 2436 |
| 2437 gdata::OperationProgressStatusList list = | 2437 gdata::OperationProgressStatusList list = |
| 2438 system_service->drive_service()->GetProgressStatusList(); | 2438 system_service->drive_service()->GetProgressStatusList(); |
| 2439 return file_manager_util::ProgressStatusVectorToListValue( | 2439 return file_manager_util::ProgressStatusVectorToListValue( |
| 2440 profile_, source_url_.GetOrigin(), list); | 2440 profile_, source_url_.GetOrigin(), list); |
| 2441 } | 2441 } |
| 2442 | 2442 |
| 2443 bool GetFileTransfersFunction::RunImpl() { | 2443 bool GetFileTransfersFunction::RunImpl() { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2476 GetLocalPathsOnFileThreadAndRunCallbackOnUIThread( | 2476 GetLocalPathsOnFileThreadAndRunCallbackOnUIThread( |
| 2477 file_urls, | 2477 file_urls, |
| 2478 base::Bind(&CancelFileTransfersFunction::GetLocalPathsResponseOnUIThread, | 2478 base::Bind(&CancelFileTransfersFunction::GetLocalPathsResponseOnUIThread, |
| 2479 this)); | 2479 this)); |
| 2480 return true; | 2480 return true; |
| 2481 } | 2481 } |
| 2482 | 2482 |
| 2483 void CancelFileTransfersFunction::GetLocalPathsResponseOnUIThread( | 2483 void CancelFileTransfersFunction::GetLocalPathsResponseOnUIThread( |
| 2484 const SelectedFileInfoList& files) { | 2484 const SelectedFileInfoList& files) { |
| 2485 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2485 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2486 gdata::DriveSystemService* system_service = | 2486 drive::DriveSystemService* system_service = |
| 2487 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2487 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2488 if (!system_service) { | 2488 if (!system_service) { |
| 2489 SendResponse(false); | 2489 SendResponse(false); |
| 2490 return; | 2490 return; |
| 2491 } | 2491 } |
| 2492 | 2492 |
| 2493 scoped_ptr<ListValue> responses(new ListValue()); | 2493 scoped_ptr<ListValue> responses(new ListValue()); |
| 2494 for (size_t i = 0; i < files.size(); ++i) { | 2494 for (size_t i = 0; i < files.size(); ++i) { |
| 2495 DCHECK(gdata::util::IsUnderDriveMountPoint(files[i].file_path)); | 2495 DCHECK(drive::util::IsUnderDriveMountPoint(files[i].file_path)); |
| 2496 FilePath file_path = gdata::util::ExtractDrivePath(files[i].file_path); | 2496 FilePath file_path = drive::util::ExtractDrivePath(files[i].file_path); |
| 2497 scoped_ptr<DictionaryValue> result(new DictionaryValue()); | 2497 scoped_ptr<DictionaryValue> result(new DictionaryValue()); |
| 2498 result->SetBoolean( | 2498 result->SetBoolean( |
| 2499 "canceled", | 2499 "canceled", |
| 2500 system_service->drive_service()->CancelForFilePath(file_path)); | 2500 system_service->drive_service()->CancelForFilePath(file_path)); |
| 2501 GURL file_url; | 2501 GURL file_url; |
| 2502 if (file_manager_util::ConvertFileToFileSystemUrl(profile_, | 2502 if (file_manager_util::ConvertFileToFileSystemUrl(profile_, |
| 2503 gdata::util::GetSpecialRemoteRootPath().Append(file_path), | 2503 drive::util::GetSpecialRemoteRootPath().Append(file_path), |
| 2504 source_url_.GetOrigin(), | 2504 source_url_.GetOrigin(), |
| 2505 &file_url)) { | 2505 &file_url)) { |
| 2506 result->SetString("fileUrl", file_url.spec()); | 2506 result->SetString("fileUrl", file_url.spec()); |
| 2507 } | 2507 } |
| 2508 | 2508 |
| 2509 responses->Append(result.release()); | 2509 responses->Append(result.release()); |
| 2510 } | 2510 } |
| 2511 SetResult(responses.release()); | 2511 SetResult(responses.release()); |
| 2512 SendResponse(true); | 2512 SendResponse(true); |
| 2513 } | 2513 } |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2536 } | 2536 } |
| 2537 | 2537 |
| 2538 void TransferFileFunction::GetLocalPathsResponseOnUIThread( | 2538 void TransferFileFunction::GetLocalPathsResponseOnUIThread( |
| 2539 const SelectedFileInfoList& files) { | 2539 const SelectedFileInfoList& files) { |
| 2540 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 2540 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 2541 if (files.size() != 2U) { | 2541 if (files.size() != 2U) { |
| 2542 SendResponse(false); | 2542 SendResponse(false); |
| 2543 return; | 2543 return; |
| 2544 } | 2544 } |
| 2545 | 2545 |
| 2546 gdata::DriveSystemService* system_service = | 2546 drive::DriveSystemService* system_service = |
| 2547 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2547 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2548 if (!system_service) { | 2548 if (!system_service) { |
| 2549 SendResponse(false); | 2549 SendResponse(false); |
| 2550 return; | 2550 return; |
| 2551 } | 2551 } |
| 2552 | 2552 |
| 2553 FilePath source_file = files[0].file_path; | 2553 FilePath source_file = files[0].file_path; |
| 2554 FilePath destination_file = files[1].file_path; | 2554 FilePath destination_file = files[1].file_path; |
| 2555 | 2555 |
| 2556 bool source_file_under_drive = | 2556 bool source_file_under_drive = |
| 2557 gdata::util::IsUnderDriveMountPoint(source_file); | 2557 drive::util::IsUnderDriveMountPoint(source_file); |
| 2558 bool destination_file_under_drive = | 2558 bool destination_file_under_drive = |
| 2559 gdata::util::IsUnderDriveMountPoint(destination_file); | 2559 drive::util::IsUnderDriveMountPoint(destination_file); |
| 2560 | 2560 |
| 2561 if (source_file_under_drive && !destination_file_under_drive) { | 2561 if (source_file_under_drive && !destination_file_under_drive) { |
| 2562 // Transfer a file from gdata to local file system. | 2562 // Transfer a file from gdata to local file system. |
| 2563 source_file = gdata::util::ExtractDrivePath(source_file); | 2563 source_file = drive::util::ExtractDrivePath(source_file); |
| 2564 system_service->file_system()->TransferFileFromRemoteToLocal( | 2564 system_service->file_system()->TransferFileFromRemoteToLocal( |
| 2565 source_file, | 2565 source_file, |
| 2566 destination_file, | 2566 destination_file, |
| 2567 base::Bind(&TransferFileFunction::OnTransferCompleted, this)); | 2567 base::Bind(&TransferFileFunction::OnTransferCompleted, this)); |
| 2568 } else if (!source_file_under_drive && destination_file_under_drive) { | 2568 } else if (!source_file_under_drive && destination_file_under_drive) { |
| 2569 // Transfer a file from local to Drive file system | 2569 // Transfer a file from local to Drive file system |
| 2570 destination_file = gdata::util::ExtractDrivePath(destination_file); | 2570 destination_file = drive::util::ExtractDrivePath(destination_file); |
| 2571 system_service->file_system()->TransferFileFromLocalToRemote( | 2571 system_service->file_system()->TransferFileFromLocalToRemote( |
| 2572 source_file, | 2572 source_file, |
| 2573 destination_file, | 2573 destination_file, |
| 2574 base::Bind(&TransferFileFunction::OnTransferCompleted, this)); | 2574 base::Bind(&TransferFileFunction::OnTransferCompleted, this)); |
| 2575 } else { | 2575 } else { |
| 2576 // Local-to-local or Drive-to-Drive file transfers should be done via | 2576 // Local-to-local or Drive-to-Drive file transfers should be done via |
| 2577 // FileEntry.copyTo in the File API and are thus not supported here. | 2577 // FileEntry.copyTo in the File API and are thus not supported here. |
| 2578 NOTREACHED(); | 2578 NOTREACHED(); |
| 2579 SendResponse(false); | 2579 SendResponse(false); |
| 2580 } | 2580 } |
| 2581 } | 2581 } |
| 2582 | 2582 |
| 2583 void TransferFileFunction::OnTransferCompleted(gdata::DriveFileError error) { | 2583 void TransferFileFunction::OnTransferCompleted(drive::DriveFileError error) { |
| 2584 if (error == gdata::DRIVE_FILE_OK) { | 2584 if (error == drive::DRIVE_FILE_OK) { |
| 2585 SendResponse(true); | 2585 SendResponse(true); |
| 2586 } else { | 2586 } else { |
| 2587 error_ = base::StringPrintf("%d", static_cast<int>( | 2587 error_ = base::StringPrintf("%d", static_cast<int>( |
| 2588 fileapi::PlatformFileErrorToWebFileError( | 2588 fileapi::PlatformFileErrorToWebFileError( |
| 2589 gdata::DriveFileErrorToPlatformError(error)))); | 2589 drive::DriveFileErrorToPlatformError(error)))); |
| 2590 SendResponse(false); | 2590 SendResponse(false); |
| 2591 } | 2591 } |
| 2592 } | 2592 } |
| 2593 | 2593 |
| 2594 // Read Drive-related preferences. | 2594 // Read Drive-related preferences. |
| 2595 bool GetDrivePreferencesFunction::RunImpl() { | 2595 bool GetDrivePreferencesFunction::RunImpl() { |
| 2596 scoped_ptr<DictionaryValue> value(new DictionaryValue()); | 2596 scoped_ptr<DictionaryValue> value(new DictionaryValue()); |
| 2597 | 2597 |
| 2598 const PrefService* service = profile_->GetPrefs(); | 2598 const PrefService* service = profile_->GetPrefs(); |
| 2599 | 2599 |
| 2600 bool drive_enabled = gdata::DriveSystemService::IsDriveEnabled(profile_); | 2600 bool drive_enabled = drive::DriveSystemService::IsDriveEnabled(profile_); |
| 2601 | 2601 |
| 2602 if (drive_enabled) | 2602 if (drive_enabled) |
| 2603 AddDriveMountPoint(profile_, extension_id(), render_view_host()); | 2603 AddDriveMountPoint(profile_, extension_id(), render_view_host()); |
| 2604 | 2604 |
| 2605 value->SetBoolean("driveEnabled", drive_enabled); | 2605 value->SetBoolean("driveEnabled", drive_enabled); |
| 2606 | 2606 |
| 2607 value->SetBoolean("cellularDisabled", | 2607 value->SetBoolean("cellularDisabled", |
| 2608 service->GetBoolean(prefs::kDisableGDataOverCellular)); | 2608 service->GetBoolean(prefs::kDisableGDataOverCellular)); |
| 2609 | 2609 |
| 2610 value->SetBoolean("hostedFilesDisabled", | 2610 value->SetBoolean("hostedFilesDisabled", |
| (...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2659 const std::string& file_system_name, | 2659 const std::string& file_system_name, |
| 2660 const GURL& file_system_url) { | 2660 const GURL& file_system_url) { |
| 2661 if (result != base::PLATFORM_FILE_OK) { | 2661 if (result != base::PLATFORM_FILE_OK) { |
| 2662 SendResponse(false); | 2662 SendResponse(false); |
| 2663 return; | 2663 return; |
| 2664 } | 2664 } |
| 2665 | 2665 |
| 2666 file_system_name_ = file_system_name; | 2666 file_system_name_ = file_system_name; |
| 2667 file_system_url_ = file_system_url; | 2667 file_system_url_ = file_system_url; |
| 2668 | 2668 |
| 2669 gdata::DriveSystemService* system_service = | 2669 drive::DriveSystemService* system_service = |
| 2670 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2670 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2671 if (!system_service || !system_service->file_system()) { | 2671 if (!system_service || !system_service->file_system()) { |
| 2672 SendResponse(false); | 2672 SendResponse(false); |
| 2673 return; | 2673 return; |
| 2674 } | 2674 } |
| 2675 | 2675 |
| 2676 system_service->file_system()->Search( | 2676 system_service->file_system()->Search( |
| 2677 query_, GURL(next_feed_), | 2677 query_, GURL(next_feed_), |
| 2678 base::Bind(&SearchDriveFunction::OnSearch, this)); | 2678 base::Bind(&SearchDriveFunction::OnSearch, this)); |
| 2679 } | 2679 } |
| 2680 | 2680 |
| 2681 void SearchDriveFunction::OnSearch( | 2681 void SearchDriveFunction::OnSearch( |
| 2682 gdata::DriveFileError error, | 2682 drive::DriveFileError error, |
| 2683 const GURL& next_feed, | 2683 const GURL& next_feed, |
| 2684 scoped_ptr<std::vector<gdata::SearchResultInfo> > results) { | 2684 scoped_ptr<std::vector<drive::SearchResultInfo> > results) { |
| 2685 if (error != gdata::DRIVE_FILE_OK) { | 2685 if (error != drive::DRIVE_FILE_OK) { |
| 2686 SendResponse(false); | 2686 SendResponse(false); |
| 2687 return; | 2687 return; |
| 2688 } | 2688 } |
| 2689 | 2689 |
| 2690 DCHECK(results.get()); | 2690 DCHECK(results.get()); |
| 2691 | 2691 |
| 2692 base::ListValue* entries = new ListValue(); | 2692 base::ListValue* entries = new ListValue(); |
| 2693 // Convert Drive files to something File API stack can understand. | 2693 // Convert Drive files to something File API stack can understand. |
| 2694 for (size_t i = 0; i < results->size(); ++i) { | 2694 for (size_t i = 0; i < results->size(); ++i) { |
| 2695 DictionaryValue* entry = new DictionaryValue(); | 2695 DictionaryValue* entry = new DictionaryValue(); |
| 2696 entry->SetString("fileSystemName", file_system_name_); | 2696 entry->SetString("fileSystemName", file_system_name_); |
| 2697 entry->SetString("fileSystemRoot", file_system_url_.spec()); | 2697 entry->SetString("fileSystemRoot", file_system_url_.spec()); |
| 2698 entry->SetString("fileFullPath", "/" + results->at(i).path.value()); | 2698 entry->SetString("fileFullPath", "/" + results->at(i).path.value()); |
| 2699 entry->SetBoolean("fileIsDirectory", results->at(i).is_directory); | 2699 entry->SetBoolean("fileIsDirectory", results->at(i).is_directory); |
| 2700 | 2700 |
| 2701 entries->Append(entry); | 2701 entries->Append(entry); |
| 2702 } | 2702 } |
| 2703 | 2703 |
| 2704 base::DictionaryValue* result = new DictionaryValue(); | 2704 base::DictionaryValue* result = new DictionaryValue(); |
| 2705 result->Set("entries", entries); | 2705 result->Set("entries", entries); |
| 2706 result->SetString("nextFeed", next_feed.spec()); | 2706 result->SetString("nextFeed", next_feed.spec()); |
| 2707 | 2707 |
| 2708 SetResult(result); | 2708 SetResult(result); |
| 2709 SendResponse(true); | 2709 SendResponse(true); |
| 2710 } | 2710 } |
| 2711 | 2711 |
| 2712 bool ClearDriveCacheFunction::RunImpl() { | 2712 bool ClearDriveCacheFunction::RunImpl() { |
| 2713 gdata::DriveSystemService* system_service = | 2713 drive::DriveSystemService* system_service = |
| 2714 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2714 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2715 // |system_service| is NULL if incognito window / guest login. | 2715 // |system_service| is NULL if incognito window / guest login. |
| 2716 if (!system_service || !system_service->file_system()) | 2716 if (!system_service || !system_service->file_system()) |
| 2717 return false; | 2717 return false; |
| 2718 | 2718 |
| 2719 // TODO(yoshiki): Receive a callback from JS-side and pass it to | 2719 // TODO(yoshiki): Receive a callback from JS-side and pass it to |
| 2720 // ClearCacheAndRemountFileSystem(). http://crbug.com/140511 | 2720 // ClearCacheAndRemountFileSystem(). http://crbug.com/140511 |
| 2721 system_service->ClearCacheAndRemountFileSystem(base::Callback<void(bool)>()); | 2721 system_service->ClearCacheAndRemountFileSystem(base::Callback<void(bool)>()); |
| 2722 | 2722 |
| 2723 SendResponse(true); | 2723 SendResponse(true); |
| 2724 return true; | 2724 return true; |
| (...skipping 22 matching lines...) Expand all Loading... |
| 2747 SetResult(value.release()); | 2747 SetResult(value.release()); |
| 2748 | 2748 |
| 2749 return true; | 2749 return true; |
| 2750 } | 2750 } |
| 2751 | 2751 |
| 2752 bool RequestDirectoryRefreshFunction::RunImpl() { | 2752 bool RequestDirectoryRefreshFunction::RunImpl() { |
| 2753 std::string file_url_as_string; | 2753 std::string file_url_as_string; |
| 2754 if (!args_->GetString(0, &file_url_as_string)) | 2754 if (!args_->GetString(0, &file_url_as_string)) |
| 2755 return false; | 2755 return false; |
| 2756 | 2756 |
| 2757 gdata::DriveSystemService* system_service = | 2757 drive::DriveSystemService* system_service = |
| 2758 gdata::DriveSystemServiceFactory::GetForProfile(profile_); | 2758 drive::DriveSystemServiceFactory::GetForProfile(profile_); |
| 2759 if (!system_service || !system_service->file_system()) | 2759 if (!system_service || !system_service->file_system()) |
| 2760 return false; | 2760 return false; |
| 2761 | 2761 |
| 2762 FilePath directory_path = GetVirtualPathFromURL(GURL(file_url_as_string)); | 2762 FilePath directory_path = GetVirtualPathFromURL(GURL(file_url_as_string)); |
| 2763 system_service->file_system()->RequestDirectoryRefresh(directory_path); | 2763 system_service->file_system()->RequestDirectoryRefresh(directory_path); |
| 2764 | 2764 |
| 2765 return true; | 2765 return true; |
| 2766 } | 2766 } |
| OLD | NEW |