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

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

Issue 10804026: Fix open dialog not remembering last opened folder on drive (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 5 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_browser_private_api.h" 5 #include "chrome/browser/chromeos/extensions/file_browser_private_api.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/base64.h" 9 #include "base/base64.h"
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 841 matching lines...) Expand 10 before | Expand all | Expand 10 after
852 LOG(WARNING) << "External provider is not available"; 852 LOG(WARNING) << "External provider is not available";
853 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 853 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
854 base::Bind(callback, selected_files)); 854 base::Bind(callback, selected_files));
855 return; 855 return;
856 } 856 }
857 857
858 GURL origin_url = source_url().GetOrigin(); 858 GURL origin_url = source_url().GetOrigin();
859 size_t len = file_urls.size(); 859 size_t len = file_urls.size();
860 selected_files.reserve(len); 860 selected_files.reserve(len);
861 for (size_t i = 0; i < len; ++i) { 861 for (size_t i = 0; i < len; ++i) {
862 FilePath real_path; 862 FilePath local_path;
863 const GURL& file_url = file_urls[i]; 863 const GURL& file_url = file_urls[i];
864 864
865 // If "localPath" parameter is set, use it as the real path. 865 // If "localPath" parameter is set, use it as the real path.
866 // TODO(satorux): Eventually, we should be able to get the real path 866 // TODO(satorux): Eventually, we should be able to get the real path
867 // from GDataFileSystem instead of passing through with filesystem 867 // from GDataFileSystem instead of passing through with filesystem
868 // URLs. crosbug.com/27510. 868 // URLs. crosbug.com/27510.
869 // 869 //
870 // TODO(satorux): GURL::query() is not yet supported for filesystem: 870 // TODO(satorux): GURL::query() is not yet supported for filesystem:
871 // URLs. For now, use GURL::spec() to get the query portion. Should 871 // URLs. For now, use GURL::spec() to get the query portion. Should
872 // get rid of the hack once query() is supported: crbug.com/114484. 872 // get rid of the hack once query() is supported: crbug.com/114484.
873 const std::string::size_type query_start = file_url.spec().find('?'); 873 const std::string::size_type query_start = file_url.spec().find('?');
874 if (query_start != std::string::npos) { 874 if (query_start != std::string::npos) {
875 const std::string query = file_url.spec().substr(query_start + 1); 875 const std::string query = file_url.spec().substr(query_start + 1);
876 std::vector<std::pair<std::string, std::string> > parameters; 876 std::vector<std::pair<std::string, std::string> > parameters;
877 if (base::SplitStringIntoKeyValuePairs( 877 if (base::SplitStringIntoKeyValuePairs(
878 query, '=', '&', &parameters)) { 878 query, '=', '&', &parameters)) {
879 for (size_t i = 0; i < parameters.size(); ++i) { 879 for (size_t i = 0; i < parameters.size(); ++i) {
880 if (parameters[i].first == "localPath") { 880 if (parameters[i].first == "localPath") {
881 const std::string unescaped_value = 881 const std::string unescaped_value =
882 net::UnescapeURLComponent(parameters[i].second, 882 net::UnescapeURLComponent(parameters[i].second,
883 kUnescapeRuleForQueryParameters); 883 kUnescapeRuleForQueryParameters);
884 real_path = FilePath::FromUTF8Unsafe(unescaped_value); 884 local_path = FilePath::FromUTF8Unsafe(unescaped_value);
885 break; 885 break;
886 } 886 }
887 } 887 }
888 } 888 }
889 } 889 }
890 890
891 // Extract the path from |file_url|. 891 // Extract the path from |file_url|.
892 GURL file_origin_url; 892 GURL file_origin_url;
893 FilePath virtual_path; 893 FilePath virtual_path;
894 fileapi::FileSystemType type; 894 fileapi::FileSystemType type;
895 895
896 if (!CrackFileSystemURL(file_url, &file_origin_url, &type, 896 if (!CrackFileSystemURL(file_url, &file_origin_url, &type,
897 &virtual_path)) { 897 &virtual_path)) {
898 continue; 898 continue;
899 } 899 }
900 if (type != fileapi::kFileSystemTypeExternal) { 900 if (type != fileapi::kFileSystemTypeExternal) {
901 NOTREACHED(); 901 NOTREACHED();
902 continue; 902 continue;
903 } 903 }
904 904
905 FilePath::StringType display_name;
906 FilePath root = provider->GetFileSystemRootPathOnFileThread( 905 FilePath root = provider->GetFileSystemRootPathOnFileThread(
907 origin_url, 906 origin_url,
908 fileapi::kFileSystemTypeExternal, 907 fileapi::kFileSystemTypeExternal,
909 FilePath(virtual_path), 908 FilePath(virtual_path),
910 false); 909 false);
910 FilePath file_path;
911 if (!root.empty()) { 911 if (!root.empty()) {
912 // If we haven't got the real path from "localPath", use it as the 912 file_path = root.Append(virtual_path);
913 // real path. Otherwise, use it as the display name.
914 if (real_path.empty())
915 real_path = root.Append(virtual_path);
916 else
917 display_name = virtual_path.BaseName().value();
918 } else { 913 } else {
919 LOG(WARNING) << "GetLocalPathsOnFileThread failed " 914 LOG(WARNING) << "GetLocalPathsOnFileThread failed "
920 << file_url.spec(); 915 << file_url.spec();
921 } 916 }
922 917
923 if (!real_path.empty()) { 918 if (!file_path.empty()) {
924 DVLOG(1) << "Selected: real path: " << real_path.value() 919 DVLOG(1) << "Selected: file path: " << file_path.value()
925 << " display name: " << display_name; 920 << " local path: " << local_path.value();
926 selected_files.push_back( 921 selected_files.push_back(
927 ui::SelectedFileInfo(real_path, display_name)); 922 ui::SelectedFileInfo(file_path, local_path));
928 } 923 }
929 } 924 }
930 925
931 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, 926 BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
932 base::Bind(callback, selected_files)); 927 base::Bind(callback, selected_files));
933 } 928 }
934 929
935 bool SelectFileFunction::RunImpl() { 930 bool SelectFileFunction::RunImpl() {
936 if (args_->GetSize() != 2) { 931 if (args_->GetSize() != 2) {
937 return false; 932 return false;
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 994
1000 void ViewFilesFunction::GetLocalPathsResponseOnUIThread( 995 void ViewFilesFunction::GetLocalPathsResponseOnUIThread(
1001 const std::string& internal_task_id, 996 const std::string& internal_task_id,
1002 const SelectedFileInfoList& files) { 997 const SelectedFileInfoList& files) {
1003 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 998 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1004 bool success = true; 999 bool success = true;
1005 for (SelectedFileInfoList::const_iterator iter = files.begin(); 1000 for (SelectedFileInfoList::const_iterator iter = files.begin();
1006 iter != files.end(); 1001 iter != files.end();
1007 ++iter) { 1002 ++iter) {
1008 bool handled = file_manager_util::ExecuteBuiltinHandler( 1003 bool handled = file_manager_util::ExecuteBuiltinHandler(
1009 GetCurrentBrowser(), iter->path, internal_task_id); 1004 GetCurrentBrowser(), iter->file_path, internal_task_id);
1010 if (!handled && files.size() == 1) 1005 if (!handled && files.size() == 1)
1011 success = false; 1006 success = false;
1012 } 1007 }
1013 SetResult(Value::CreateBooleanValue(success)); 1008 SetResult(Value::CreateBooleanValue(success));
1014 SendResponse(true); 1009 SendResponse(true);
1015 } 1010 }
1016 1011
1017 SelectFilesFunction::SelectFilesFunction() { 1012 SelectFilesFunction::SelectFilesFunction() {
1018 } 1013 }
1019 1014
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after
1149 void AddMountFunction::GetLocalPathsResponseOnUIThread( 1144 void AddMountFunction::GetLocalPathsResponseOnUIThread(
1150 const std::string& mount_type_str, 1145 const std::string& mount_type_str,
1151 const SelectedFileInfoList& files) { 1146 const SelectedFileInfoList& files) {
1152 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1147 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1153 1148
1154 if (!files.size()) { 1149 if (!files.size()) {
1155 SendResponse(false); 1150 SendResponse(false);
1156 return; 1151 return;
1157 } 1152 }
1158 1153
1159 const FilePath& source_path = files[0].path; 1154 const FilePath& source_path = files[0].local_path;
1160 const FilePath::StringType& display_name = files[0].display_name; 1155 const FilePath::StringType& display_name =
1156 files[0].file_path.BaseName().value();
1161 // Check if the source path is under GData cache directory. 1157 // Check if the source path is under GData cache directory.
1162 gdata::GDataSystemService* system_service = 1158 gdata::GDataSystemService* system_service =
1163 gdata::GDataSystemServiceFactory::GetForProfile(profile_); 1159 gdata::GDataSystemServiceFactory::GetForProfile(profile_);
1164 gdata::GDataCache* cache = system_service ? system_service->cache() : NULL; 1160 gdata::GDataCache* cache = system_service ? system_service->cache() : NULL;
1165 if (cache && cache->IsUnderGDataCacheDirectory(source_path)) { 1161 if (cache && cache->IsUnderGDataCacheDirectory(source_path)) {
1166 cache->SetMountedStateOnUIThread( 1162 cache->SetMountedStateOnUIThread(
1167 source_path, 1163 source_path,
1168 true, 1164 true,
1169 base::Bind(&AddMountFunction::OnMountedStateSet, this, mount_type_str, 1165 base::Bind(&AddMountFunction::OnMountedStateSet, this, mount_type_str,
1170 display_name)); 1166 display_name));
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 } 1211 }
1216 1212
1217 void RemoveMountFunction::GetLocalPathsResponseOnUIThread( 1213 void RemoveMountFunction::GetLocalPathsResponseOnUIThread(
1218 const SelectedFileInfoList& files) { 1214 const SelectedFileInfoList& files) {
1219 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1215 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1220 1216
1221 if (files.size() != 1) { 1217 if (files.size() != 1) {
1222 SendResponse(false); 1218 SendResponse(false);
1223 return; 1219 return;
1224 } 1220 }
1225 DiskMountManager::GetInstance()->UnmountPath(files[0].path.value()); 1221 DiskMountManager::GetInstance()->UnmountPath(files[0].local_path.value());
1226 SendResponse(true); 1222 SendResponse(true);
1227 } 1223 }
1228 1224
1229 GetMountPointsFunction::GetMountPointsFunction() { 1225 GetMountPointsFunction::GetMountPointsFunction() {
1230 } 1226 }
1231 1227
1232 GetMountPointsFunction::~GetMountPointsFunction() { 1228 GetMountPointsFunction::~GetMountPointsFunction() {
1233 } 1229 }
1234 1230
1235 bool GetMountPointsFunction::RunImpl() { 1231 bool GetMountPointsFunction::RunImpl() {
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
1281 1277
1282 void GetSizeStatsFunction::GetLocalPathsResponseOnUIThread( 1278 void GetSizeStatsFunction::GetLocalPathsResponseOnUIThread(
1283 const SelectedFileInfoList& files) { 1279 const SelectedFileInfoList& files) {
1284 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1280 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1285 1281
1286 if (files.size() != 1) { 1282 if (files.size() != 1) {
1287 SendResponse(false); 1283 SendResponse(false);
1288 return; 1284 return;
1289 } 1285 }
1290 1286
1291 if (files[0].path == gdata::util::GetGDataMountPointPath()) { 1287 if (files[0].file_path == gdata::util::GetGDataMountPointPath()) {
1292 gdata::GDataSystemService* system_service = 1288 gdata::GDataSystemService* system_service =
1293 gdata::GDataSystemServiceFactory::GetForProfile(profile_); 1289 gdata::GDataSystemServiceFactory::GetForProfile(profile_);
1294 1290
1295 gdata::GDataFileSystemInterface* file_system = 1291 gdata::GDataFileSystemInterface* file_system =
1296 system_service->file_system(); 1292 system_service->file_system();
1297 1293
1298 file_system->GetAvailableSpace( 1294 file_system->GetAvailableSpace(
1299 base::Bind(&GetSizeStatsFunction::GetGDataAvailableSpaceCallback, 1295 base::Bind(&GetSizeStatsFunction::GetGDataAvailableSpaceCallback,
1300 this)); 1296 this));
1301 1297
1302 } else { 1298 } else {
1303 BrowserThread::PostTask( 1299 BrowserThread::PostTask(
1304 BrowserThread::FILE, FROM_HERE, 1300 BrowserThread::FILE, FROM_HERE,
1305 base::Bind( 1301 base::Bind(
1306 &GetSizeStatsFunction::CallGetSizeStatsOnFileThread, 1302 &GetSizeStatsFunction::CallGetSizeStatsOnFileThread,
1307 this, 1303 this,
1308 files[0].path.value())); 1304 files[0].file_path.value()));
1309 } 1305 }
1310 } 1306 }
1311 1307
1312 void GetSizeStatsFunction::GetGDataAvailableSpaceCallback( 1308 void GetSizeStatsFunction::GetGDataAvailableSpaceCallback(
1313 gdata::GDataFileError error, 1309 gdata::GDataFileError error,
1314 int64 bytes_total, 1310 int64 bytes_total,
1315 int64 bytes_used) { 1311 int64 bytes_used) {
1316 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1312 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1317 1313
1318 if (error == gdata::GDATA_FILE_OK) { 1314 if (error == gdata::GDATA_FILE_OK) {
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
1384 1380
1385 void FormatDeviceFunction::GetLocalPathsResponseOnUIThread( 1381 void FormatDeviceFunction::GetLocalPathsResponseOnUIThread(
1386 const SelectedFileInfoList& files) { 1382 const SelectedFileInfoList& files) {
1387 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1383 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1388 1384
1389 if (files.size() != 1) { 1385 if (files.size() != 1) {
1390 SendResponse(false); 1386 SendResponse(false);
1391 return; 1387 return;
1392 } 1388 }
1393 1389
1394 DiskMountManager::GetInstance()->FormatMountedDevice(files[0].path.value()); 1390 DiskMountManager::GetInstance()->FormatMountedDevice(
1391 files[0].file_path.value());
1395 SendResponse(true); 1392 SendResponse(true);
1396 } 1393 }
1397 1394
1398 GetVolumeMetadataFunction::GetVolumeMetadataFunction() { 1395 GetVolumeMetadataFunction::GetVolumeMetadataFunction() {
1399 } 1396 }
1400 1397
1401 GetVolumeMetadataFunction::~GetVolumeMetadataFunction() { 1398 GetVolumeMetadataFunction::~GetVolumeMetadataFunction() {
1402 } 1399 }
1403 1400
1404 bool GetVolumeMetadataFunction::RunImpl() { 1401 bool GetVolumeMetadataFunction::RunImpl() {
(...skipping 25 matching lines...) Expand all
1430 // Should contain volume's mount path. 1427 // Should contain volume's mount path.
1431 if (files.size() != 1) { 1428 if (files.size() != 1) {
1432 error_ = "Invalid mount path."; 1429 error_ = "Invalid mount path.";
1433 SendResponse(false); 1430 SendResponse(false);
1434 return; 1431 return;
1435 } 1432 }
1436 1433
1437 results_.reset(); 1434 results_.reset();
1438 1435
1439 const DiskMountManager::Disk* volume = GetVolumeAsDisk( 1436 const DiskMountManager::Disk* volume = GetVolumeAsDisk(
1440 files[0].path.value()); 1437 files[0].file_path.value());
1441 if (volume) { 1438 if (volume) {
1442 DictionaryValue* volume_info = 1439 DictionaryValue* volume_info =
1443 CreateValueFromDisk(profile_, volume); 1440 CreateValueFromDisk(profile_, volume);
1444 SetResult(volume_info); 1441 SetResult(volume_info);
1445 } 1442 }
1446 1443
1447 SendResponse(true); 1444 SendResponse(true);
1448 } 1445 }
1449 1446
1450 bool ToggleFullscreenFunction::RunImpl() { 1447 bool ToggleFullscreenFunction::RunImpl() {
(...skipping 548 matching lines...) Expand 10 before | Expand all | Expand 10 after
1999 this)); 1996 this));
2000 return true; 1997 return true;
2001 } 1998 }
2002 1999
2003 void GetFileLocationsFunction::GetLocalPathsResponseOnUIThread( 2000 void GetFileLocationsFunction::GetLocalPathsResponseOnUIThread(
2004 const SelectedFileInfoList& files) { 2001 const SelectedFileInfoList& files) {
2005 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2002 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2006 2003
2007 ListValue* locations = new ListValue; 2004 ListValue* locations = new ListValue;
2008 for (size_t i = 0; i < files.size(); ++i) { 2005 for (size_t i = 0; i < files.size(); ++i) {
2009 if (gdata::util::IsUnderGDataMountPoint(files[i].path)) { 2006 if (gdata::util::IsUnderGDataMountPoint(files[i].file_path)) {
2010 locations->Append(Value::CreateStringValue("drive")); 2007 locations->Append(Value::CreateStringValue("drive"));
2011 } else { 2008 } else {
2012 locations->Append(Value::CreateStringValue("local")); 2009 locations->Append(Value::CreateStringValue("local"));
2013 } 2010 }
2014 } 2011 }
2015 2012
2016 SetResult(locations); 2013 SetResult(locations);
2017 SendResponse(true); 2014 SendResponse(true);
2018 } 2015 }
2019 2016
(...skipping 23 matching lines...) Expand all
2043 base::Bind(&GetGDataFilesFunction::GetLocalPathsResponseOnUIThread, 2040 base::Bind(&GetGDataFilesFunction::GetLocalPathsResponseOnUIThread,
2044 this)); 2041 this));
2045 return true; 2042 return true;
2046 } 2043 }
2047 2044
2048 void GetGDataFilesFunction::GetLocalPathsResponseOnUIThread( 2045 void GetGDataFilesFunction::GetLocalPathsResponseOnUIThread(
2049 const SelectedFileInfoList& files) { 2046 const SelectedFileInfoList& files) {
2050 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2047 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2051 2048
2052 for (size_t i = 0; i < files.size(); ++i) { 2049 for (size_t i = 0; i < files.size(); ++i) {
2053 DCHECK(gdata::util::IsUnderGDataMountPoint(files[i].path)); 2050 DCHECK(gdata::util::IsUnderGDataMountPoint(files[i].file_path));
2054 FilePath gdata_path = gdata::util::ExtractGDataPath(files[i].path); 2051 FilePath gdata_path = gdata::util::ExtractGDataPath(files[i].file_path);
2055 remaining_gdata_paths_.push(gdata_path); 2052 remaining_gdata_paths_.push(gdata_path);
2056 } 2053 }
2057 2054
2058 local_paths_ = new ListValue; 2055 local_paths_ = new ListValue;
2059 GetFileOrSendResponse(); 2056 GetFileOrSendResponse();
2060 } 2057 }
2061 2058
2062 void GetGDataFilesFunction::GetFileOrSendResponse() { 2059 void GetGDataFilesFunction::GetFileOrSendResponse() {
2063 // Send the response if all files are obtained. 2060 // Send the response if all files are obtained.
2064 if (remaining_gdata_paths_.empty()) { 2061 if (remaining_gdata_paths_.empty()) {
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
2173 if (!system_service) { 2170 if (!system_service) {
2174 SendResponse(false); 2171 SendResponse(false);
2175 return; 2172 return;
2176 } 2173 }
2177 2174
2178 gdata::GDataOperationRegistry* operation_registry = 2175 gdata::GDataOperationRegistry* operation_registry =
2179 system_service->docs_service()->operation_registry(); 2176 system_service->docs_service()->operation_registry();
2180 2177
2181 scoped_ptr<ListValue> responses(new ListValue()); 2178 scoped_ptr<ListValue> responses(new ListValue());
2182 for (size_t i = 0; i < files.size(); ++i) { 2179 for (size_t i = 0; i < files.size(); ++i) {
2183 DCHECK(gdata::util::IsUnderGDataMountPoint(files[i].path)); 2180 DCHECK(gdata::util::IsUnderGDataMountPoint(files[i].file_path));
2184 FilePath file_path = gdata::util::ExtractGDataPath(files[i].path); 2181 FilePath file_path = gdata::util::ExtractGDataPath(files[i].file_path);
2185 scoped_ptr<DictionaryValue> result(new DictionaryValue()); 2182 scoped_ptr<DictionaryValue> result(new DictionaryValue());
2186 result->SetBoolean( 2183 result->SetBoolean(
2187 "canceled", 2184 "canceled",
2188 operation_registry->CancelForFilePath(file_path)); 2185 operation_registry->CancelForFilePath(file_path));
2189 GURL file_url; 2186 GURL file_url;
2190 if (file_manager_util::ConvertFileToFileSystemUrl(profile_, 2187 if (file_manager_util::ConvertFileToFileSystemUrl(profile_,
2191 gdata::util::GetSpecialRemoteRootPath().Append(file_path), 2188 gdata::util::GetSpecialRemoteRootPath().Append(file_path),
2192 source_url_.GetOrigin(), 2189 source_url_.GetOrigin(),
2193 &file_url)) { 2190 &file_url)) {
2194 result->SetString("fileUrl", file_url.spec()); 2191 result->SetString("fileUrl", file_url.spec());
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
2231 return; 2228 return;
2232 } 2229 }
2233 2230
2234 gdata::GDataSystemService* system_service = 2231 gdata::GDataSystemService* system_service =
2235 gdata::GDataSystemServiceFactory::GetForProfile(profile_); 2232 gdata::GDataSystemServiceFactory::GetForProfile(profile_);
2236 if (!system_service) { 2233 if (!system_service) {
2237 SendResponse(false); 2234 SendResponse(false);
2238 return; 2235 return;
2239 } 2236 }
2240 2237
2241 FilePath source_file = files[0].path; 2238 FilePath source_file = files[0].file_path;
2242 FilePath destination_file = files[1].path; 2239 FilePath destination_file = files[1].file_path;
2243 2240
2244 bool source_file_under_gdata = 2241 bool source_file_under_gdata =
2245 gdata::util::IsUnderGDataMountPoint(source_file); 2242 gdata::util::IsUnderGDataMountPoint(source_file);
2246 bool destination_file_under_gdata = 2243 bool destination_file_under_gdata =
2247 gdata::util::IsUnderGDataMountPoint(destination_file); 2244 gdata::util::IsUnderGDataMountPoint(destination_file);
2248 2245
2249 if (source_file_under_gdata && !destination_file_under_gdata) { 2246 if (source_file_under_gdata && !destination_file_under_gdata) {
2250 // Transfer a file from gdata to local file system. 2247 // Transfer a file from gdata to local file system.
2251 source_file = gdata::util::ExtractGDataPath(source_file); 2248 source_file = gdata::util::ExtractGDataPath(source_file);
2252 system_service->file_system()->TransferFileFromRemoteToLocal( 2249 system_service->file_system()->TransferFileFromRemoteToLocal(
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
2417 gdata::GDataSystemService* system_service = 2414 gdata::GDataSystemService* system_service =
2418 gdata::GDataSystemServiceFactory::GetForProfile(profile_); 2415 gdata::GDataSystemServiceFactory::GetForProfile(profile_);
2419 if (!system_service || !system_service->file_system()) 2416 if (!system_service || !system_service->file_system())
2420 return false; 2417 return false;
2421 2418
2422 FilePath directory_path = GetVirtualPathFromURL(GURL(file_url_as_string)); 2419 FilePath directory_path = GetVirtualPathFromURL(GURL(file_url_as_string));
2423 system_service->file_system()->RequestDirectoryRefresh(directory_path); 2420 system_service->file_system()->RequestDirectoryRefresh(directory_path);
2424 2421
2425 return true; 2422 return true;
2426 } 2423 }
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/extensions/file_browser_private_api.h ('k') | chrome/browser/download/download_file_picker_chromeos.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698