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

Side by Side Diff: chrome/browser/extensions/extension_file_browser_private_api.cc

Issue 9019002: [CrosDisksClient] Determine device type from DeviceMediaType property sent by cros-disks. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 8 years, 10 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/extensions/extension_file_browser_private_api.h" 5 #include "chrome/browser/extensions/extension_file_browser_private_api.h"
6 6
7 #include "base/base64.h" 7 #include "base/base64.h"
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/json/json_writer.h" 10 #include "base/json/json_writer.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 #include "grit/generated_resources.h" 42 #include "grit/generated_resources.h"
43 #include "grit/platform_locale_settings.h" 43 #include "grit/platform_locale_settings.h"
44 #include "ui/base/l10n/l10n_util.h" 44 #include "ui/base/l10n/l10n_util.h"
45 #include "webkit/fileapi/file_system_context.h" 45 #include "webkit/fileapi/file_system_context.h"
46 #include "webkit/fileapi/file_system_file_util.h" 46 #include "webkit/fileapi/file_system_file_util.h"
47 #include "webkit/fileapi/file_system_mount_point_provider.h" 47 #include "webkit/fileapi/file_system_mount_point_provider.h"
48 #include "webkit/fileapi/file_system_operation_context.h" 48 #include "webkit/fileapi/file_system_operation_context.h"
49 #include "webkit/fileapi/file_system_types.h" 49 #include "webkit/fileapi/file_system_types.h"
50 #include "webkit/fileapi/file_system_util.h" 50 #include "webkit/fileapi/file_system_util.h"
51 51
52 #ifdef OS_CHROMEOS
53 #include "chrome/browser/chromeos/disks/disk_mount_manager.h"
54 #endif
55
56 using chromeos::disks::DiskMountManager;
52 using content::BrowserThread; 57 using content::BrowserThread;
53 using content::SiteInstance; 58 using content::SiteInstance;
54 using content::WebContents; 59 using content::WebContents;
55 60
56 namespace { 61 namespace {
57 62
58 // Error messages. 63 // Error messages.
59 const char kFileError[] = "File error %d"; 64 const char kFileError[] = "File error %d";
60 const char kInvalidFileUrl[] = "Invalid file URL"; 65 const char kInvalidFileUrl[] = "Invalid file URL";
61 const char kVolumeDevicePathNotFound[] = "Device path not found"; 66 const char kVolumeDevicePathNotFound[] = "Device path not found";
(...skipping 197 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 DictionaryPrefUpdate prefs_usage_update(profile->GetPrefs(), 264 DictionaryPrefUpdate prefs_usage_update(profile->GetPrefs(),
260 prefs::kLastUsedFileBrowserHandlers); 265 prefs::kLastUsedFileBrowserHandlers);
261 prefs_usage_update->SetWithoutPathExpansion(task_id, 266 prefs_usage_update->SetWithoutPathExpansion(task_id,
262 new base::FundamentalValue( 267 new base::FundamentalValue(
263 static_cast<int>(base::Time::Now().ToInternalValue()/ 268 static_cast<int>(base::Time::Now().ToInternalValue()/
264 base::Time::kMicrosecondsPerSecond))); 269 base::Time::kMicrosecondsPerSecond)));
265 } 270 }
266 271
267 #ifdef OS_CHROMEOS 272 #ifdef OS_CHROMEOS
268 base::DictionaryValue* MountPointToValue(Profile* profile, 273 base::DictionaryValue* MountPointToValue(Profile* profile,
269 const chromeos::disks::DiskMountManager::MountPointInfo& mount_point_info) { 274 const DiskMountManager::MountPointInfo& mount_point_info) {
270 275
271 base::DictionaryValue *mount_info = new base::DictionaryValue(); 276 base::DictionaryValue *mount_info = new base::DictionaryValue();
272 277
273 mount_info->SetString("mountType", 278 mount_info->SetString("mountType",
274 chromeos::disks::DiskMountManager::MountTypeToString( 279 DiskMountManager::MountTypeToString(
275 mount_point_info.mount_type)); 280 mount_point_info.mount_type));
276 281
277 if (mount_point_info.mount_type == chromeos::MOUNT_TYPE_ARCHIVE) { 282 if (mount_point_info.mount_type == chromeos::MOUNT_TYPE_ARCHIVE) {
278 GURL source_url; 283 GURL source_url;
279 if (file_manager_util::ConvertFileToFileSystemUrl(profile, 284 if (file_manager_util::ConvertFileToFileSystemUrl(profile,
280 FilePath(mount_point_info.source_path), 285 FilePath(mount_point_info.source_path),
281 file_manager_util::GetFileBrowserExtensionUrl().GetOrigin(), 286 file_manager_util::GetFileBrowserExtensionUrl().GetOrigin(),
282 &source_url)) { 287 &source_url)) {
283 mount_info->SetString("sourceUrl", source_url.spec()); 288 mount_info->SetString("sourceUrl", source_url.spec());
284 } 289 }
285 } else { 290 } else {
286 mount_info->SetString("sourceUrl", mount_point_info.source_path); 291 mount_info->SetString("sourceUrl", mount_point_info.source_path);
287 } 292 }
288 293
289 FilePath relative_mount_path; 294 FilePath relative_mount_path;
290 // Convert mount point path to relative path with the external file system 295 // Convert mount point path to relative path with the external file system
291 // exposed within File API. 296 // exposed within File API.
292 if (file_manager_util::ConvertFileToRelativeFileSystemPath(profile, 297 if (file_manager_util::ConvertFileToRelativeFileSystemPath(profile,
293 FilePath(mount_point_info.mount_path), 298 FilePath(mount_point_info.mount_path),
294 &relative_mount_path)) { 299 &relative_mount_path)) {
295 mount_info->SetString("mountPath", relative_mount_path.value()); 300 mount_info->SetString("mountPath", relative_mount_path.value());
296 } 301 }
297 302
298 mount_info->SetString("mountCondition", 303 mount_info->SetString("mountCondition",
299 chromeos::disks::DiskMountManager::MountConditionToString( 304 DiskMountManager::MountConditionToString(
300 mount_point_info.mount_condition)); 305 mount_point_info.mount_condition));
301 306
302 return mount_info; 307 return mount_info;
303 } 308 }
304 #endif 309 #endif
305 310
306 } // namespace 311 } // namespace
307 312
308 class RequestLocalFileSystemFunction::LocalFileSystemCallbackDispatcher 313 class RequestLocalFileSystemFunction::LocalFileSystemCallbackDispatcher
309 : public fileapi::FileSystemCallbackDispatcher { 314 : public fileapi::FileSystemCallbackDispatcher {
310 public: 315 public:
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after
1237 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1242 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1238 1243
1239 if (!files.size()) { 1244 if (!files.size()) {
1240 SendResponse(false); 1245 SendResponse(false);
1241 return; 1246 return;
1242 } 1247 }
1243 1248
1244 #ifdef OS_CHROMEOS 1249 #ifdef OS_CHROMEOS
1245 FilePath::StringType source_file = files[0].value(); 1250 FilePath::StringType source_file = files[0].value();
1246 1251
1247 chromeos::disks::DiskMountManager* disk_mount_manager = 1252 DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance();
1248 chromeos::disks::DiskMountManager::GetInstance();
1249 1253
1250 chromeos::MountType mount_type = 1254 chromeos::MountType mount_type =
1251 disk_mount_manager->MountTypeFromString(mount_type_str); 1255 disk_mount_manager->MountTypeFromString(mount_type_str);
1252 if (mount_type == chromeos::MOUNT_TYPE_INVALID) { 1256 if (mount_type == chromeos::MOUNT_TYPE_INVALID) {
1253 error_ = "Invalid mount type"; 1257 error_ = "Invalid mount type";
1254 SendResponse(false); 1258 SendResponse(false);
1255 return; 1259 return;
1256 } 1260 }
1257 1261
1258 disk_mount_manager->MountPath(source_file.data(), mount_type); 1262 disk_mount_manager->MountPath(source_file.data(), mount_type);
(...skipping 28 matching lines...) Expand all
1287 1291
1288 void RemoveMountFunction::GetLocalPathsResponseOnUIThread( 1292 void RemoveMountFunction::GetLocalPathsResponseOnUIThread(
1289 const FilePathList& files) { 1293 const FilePathList& files) {
1290 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1294 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1291 1295
1292 if (files.size() != 1) { 1296 if (files.size() != 1) {
1293 SendResponse(false); 1297 SendResponse(false);
1294 return; 1298 return;
1295 } 1299 }
1296 #ifdef OS_CHROMEOS 1300 #ifdef OS_CHROMEOS
1297 chromeos::disks::DiskMountManager::GetInstance()->UnmountPath( 1301 DiskMountManager::GetInstance()->UnmountPath(files[0].value());
1298 files[0].value());
1299 #endif 1302 #endif
1300 1303
1301 SendResponse(true); 1304 SendResponse(true);
1302 } 1305 }
1303 1306
1304 GetMountPointsFunction::GetMountPointsFunction() { 1307 GetMountPointsFunction::GetMountPointsFunction() {
1305 } 1308 }
1306 1309
1307 GetMountPointsFunction::~GetMountPointsFunction() { 1310 GetMountPointsFunction::~GetMountPointsFunction() {
1308 } 1311 }
1309 1312
1310 bool GetMountPointsFunction::RunImpl() { 1313 bool GetMountPointsFunction::RunImpl() {
1311 if (args_->GetSize()) 1314 if (args_->GetSize())
1312 return false; 1315 return false;
1313 1316
1314 base::ListValue *mounts = new base::ListValue(); 1317 base::ListValue *mounts = new base::ListValue();
1315 result_.reset(mounts); 1318 result_.reset(mounts);
1316 1319
1317 #ifdef OS_CHROMEOS 1320 #ifdef OS_CHROMEOS
1318 chromeos::disks::DiskMountManager* disk_mount_manager = 1321 DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance();
1319 chromeos::disks::DiskMountManager::GetInstance(); 1322 DiskMountManager::MountPointMap mount_points =
1320 chromeos::disks::DiskMountManager::MountPointMap mount_points =
1321 disk_mount_manager->mount_points(); 1323 disk_mount_manager->mount_points();
1322 1324
1323 for (chromeos::disks::DiskMountManager::MountPointMap::const_iterator it = 1325 for (DiskMountManager::MountPointMap::const_iterator it =
1324 mount_points.begin(); 1326 mount_points.begin();
1325 it != mount_points.end(); 1327 it != mount_points.end();
1326 ++it) { 1328 ++it) {
1327 mounts->Append(MountPointToValue(profile_, it->second)); 1329 mounts->Append(MountPointToValue(profile_, it->second));
1328 } 1330 }
1329 #endif 1331 #endif
1330 1332
1331 SendResponse(true); 1333 SendResponse(true);
1332 return true; 1334 return true;
1333 } 1335 }
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1373 files[0].value())); 1375 files[0].value()));
1374 } 1376 }
1375 1377
1376 void GetSizeStatsFunction::CallGetSizeStatsOnFileThread( 1378 void GetSizeStatsFunction::CallGetSizeStatsOnFileThread(
1377 const std::string& mount_path) { 1379 const std::string& mount_path) {
1378 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE)); 1380 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::FILE));
1379 1381
1380 size_t total_size_kb = 0; 1382 size_t total_size_kb = 0;
1381 size_t remaining_size_kb = 0; 1383 size_t remaining_size_kb = 0;
1382 #ifdef OS_CHROMEOS 1384 #ifdef OS_CHROMEOS
1383 chromeos::disks::DiskMountManager::GetInstance()-> 1385 DiskMountManager::GetInstance()->
1384 GetSizeStatsOnFileThread(mount_path, &total_size_kb, &remaining_size_kb); 1386 GetSizeStatsOnFileThread(mount_path, &total_size_kb, &remaining_size_kb);
1385 #endif 1387 #endif
1386 1388
1387 BrowserThread::PostTask( 1389 BrowserThread::PostTask(
1388 BrowserThread::UI, FROM_HERE, 1390 BrowserThread::UI, FROM_HERE,
1389 base::Bind( 1391 base::Bind(
1390 &GetSizeStatsFunction::GetSizeStatsCallbackOnUIThread, 1392 &GetSizeStatsFunction::GetSizeStatsCallbackOnUIThread,
1391 this, 1393 this,
1392 mount_path, total_size_kb, remaining_size_kb)); 1394 mount_path, total_size_kb, remaining_size_kb));
1393 } 1395 }
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
1436 void FormatDeviceFunction::GetLocalPathsResponseOnUIThread( 1438 void FormatDeviceFunction::GetLocalPathsResponseOnUIThread(
1437 const FilePathList& files) { 1439 const FilePathList& files) {
1438 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 1440 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
1439 1441
1440 if (files.size() != 1) { 1442 if (files.size() != 1) {
1441 SendResponse(false); 1443 SendResponse(false);
1442 return; 1444 return;
1443 } 1445 }
1444 1446
1445 #ifdef OS_CHROMEOS 1447 #ifdef OS_CHROMEOS
1446 chromeos::disks::DiskMountManager::GetInstance()->FormatMountedDevice( 1448 DiskMountManager::GetInstance()->FormatMountedDevice(files[0].value());
1447 files[0].value());
1448 #endif 1449 #endif
1449 1450
1450 SendResponse(true); 1451 SendResponse(true);
1451 } 1452 }
1452 1453
1453 GetVolumeMetadataFunction::GetVolumeMetadataFunction() { 1454 GetVolumeMetadataFunction::GetVolumeMetadataFunction() {
1454 } 1455 }
1455 1456
1456 GetVolumeMetadataFunction::~GetVolumeMetadataFunction() { 1457 GetVolumeMetadataFunction::~GetVolumeMetadataFunction() {
1457 } 1458 }
1458 1459
1459 bool GetVolumeMetadataFunction::RunImpl() { 1460 bool GetVolumeMetadataFunction::RunImpl() {
1460 if (args_->GetSize() != 1) { 1461 if (args_->GetSize() != 1) {
1461 error_ = "Invalid argument count"; 1462 error_ = "Invalid argument count";
1462 return false; 1463 return false;
1463 } 1464 }
1464 1465
1465 std::string volume_device_path; 1466 std::string volume_device_path;
1466 if (!args_->GetString(0, &volume_device_path)) { 1467 if (!args_->GetString(0, &volume_device_path)) {
1467 NOTREACHED(); 1468 NOTREACHED();
1468 } 1469 }
1469 1470
1470 #ifdef OS_CHROMEOS 1471 #ifdef OS_CHROMEOS
1471 chromeos::disks::DiskMountManager* disk_mount_manager = 1472 DiskMountManager* disk_mount_manager = DiskMountManager::GetInstance();
1472 chromeos::disks::DiskMountManager::GetInstance(); 1473 DiskMountManager::DiskMap::const_iterator volume_it =
1473 chromeos::disks::DiskMountManager::DiskMap::const_iterator volume_it =
1474 disk_mount_manager->disks().find(volume_device_path); 1474 disk_mount_manager->disks().find(volume_device_path);
1475 1475
1476 if (volume_it != disk_mount_manager->disks().end() && 1476 if (volume_it != disk_mount_manager->disks().end() &&
1477 !volume_it->second->is_hidden()) { 1477 !volume_it->second->is_hidden()) {
1478 chromeos::disks::DiskMountManager::Disk* volume = volume_it->second; 1478 DiskMountManager::Disk* volume = volume_it->second;
1479 DictionaryValue* volume_info = new DictionaryValue(); 1479 DictionaryValue* volume_info = new DictionaryValue();
1480 result_.reset(volume_info); 1480 result_.reset(volume_info);
1481 // Localising mount path. 1481 // Localising mount path.
1482 std::string mount_path; 1482 std::string mount_path;
1483 if (!volume->mount_path().empty()) { 1483 if (!volume->mount_path().empty()) {
1484 FilePath relative_mount_path; 1484 FilePath relative_mount_path;
1485 file_manager_util::ConvertFileToRelativeFileSystemPath(profile_, 1485 file_manager_util::ConvertFileToRelativeFileSystemPath(profile_,
1486 FilePath(volume->mount_path()), &relative_mount_path); 1486 FilePath(volume->mount_path()), &relative_mount_path);
1487 mount_path = relative_mount_path.value(); 1487 mount_path = relative_mount_path.value();
1488 } 1488 }
1489 volume_info->SetString("devicePath", volume->device_path()); 1489 volume_info->SetString("devicePath", volume->device_path());
1490 volume_info->SetString("mountPath", mount_path); 1490 volume_info->SetString("mountPath", mount_path);
1491 volume_info->SetString("systemPath", volume->system_path()); 1491 volume_info->SetString("systemPath", volume->system_path());
1492 volume_info->SetString("filePath", volume->file_path()); 1492 volume_info->SetString("filePath", volume->file_path());
1493 volume_info->SetString("deviceLabel", volume->device_label()); 1493 volume_info->SetString("deviceLabel", volume->device_label());
1494 volume_info->SetString("driveLabel", volume->drive_label()); 1494 volume_info->SetString("driveLabel", volume->drive_label());
1495 volume_info->SetString("deviceType", 1495 volume_info->SetString("deviceType",
1496 DeviceTypeToString(volume->device_type())); 1496 DiskMountManager::DeviceTypeToString(volume->device_type()));
1497 volume_info->SetInteger("totalSize", volume->total_size_in_bytes()); 1497 volume_info->SetInteger("totalSize", volume->total_size_in_bytes());
1498 volume_info->SetBoolean("isParent", volume->is_parent()); 1498 volume_info->SetBoolean("isParent", volume->is_parent());
1499 volume_info->SetBoolean("isReadOnly", volume->is_read_only()); 1499 volume_info->SetBoolean("isReadOnly", volume->is_read_only());
1500 volume_info->SetBoolean("hasMedia", volume->has_media()); 1500 volume_info->SetBoolean("hasMedia", volume->has_media());
1501 volume_info->SetBoolean("isOnBootDevice", volume->on_boot_device()); 1501 volume_info->SetBoolean("isOnBootDevice", volume->on_boot_device());
1502 1502
1503 return true; 1503 return true;
1504 } 1504 }
1505 #endif 1505 #endif
1506 error_ = kVolumeDevicePathNotFound; 1506 error_ = kVolumeDevicePathNotFound;
1507 return false; 1507 return false;
1508 } 1508 }
1509 1509
1510 #ifdef OS_CHROMEOS
1511 std::string GetVolumeMetadataFunction::DeviceTypeToString(
1512 chromeos::DeviceType type) {
1513 switch (type) {
1514 case chromeos::FLASH:
1515 return kVolumeTypeFlash;
1516 case chromeos::OPTICAL:
1517 return kVolumeTypeOptical;
1518 case chromeos::HDD:
1519 return kVolumeTypeHardDrive;
1520 default:
1521 break;
1522 }
1523 return kVolumeTypeUnknown;
1524 }
1525 #endif
1526
1527 bool FileDialogStringsFunction::RunImpl() { 1510 bool FileDialogStringsFunction::RunImpl() {
1528 result_.reset(new DictionaryValue()); 1511 result_.reset(new DictionaryValue());
1529 DictionaryValue* dict = reinterpret_cast<DictionaryValue*>(result_.get()); 1512 DictionaryValue* dict = reinterpret_cast<DictionaryValue*>(result_.get());
1530 1513
1531 #define SET_STRING(ns, id) \ 1514 #define SET_STRING(ns, id) \
1532 dict->SetString(#id, l10n_util::GetStringUTF16(ns##_##id)) 1515 dict->SetString(#id, l10n_util::GetStringUTF16(ns##_##id))
1533 1516
1534 SET_STRING(IDS, WEB_FONT_FAMILY); 1517 SET_STRING(IDS, WEB_FONT_FAMILY);
1535 SET_STRING(IDS, WEB_FONT_SIZE); 1518 SET_STRING(IDS, WEB_FONT_SIZE);
1536 1519
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
1691 SET_STRING(IDS_FILE_BROWSER, ENQUEUE); 1674 SET_STRING(IDS_FILE_BROWSER, ENQUEUE);
1692 #undef SET_STRING 1675 #undef SET_STRING
1693 1676
1694 ChromeURLDataManager::DataSource::SetFontAndTextDirection(dict); 1677 ChromeURLDataManager::DataSource::SetFontAndTextDirection(dict);
1695 1678
1696 dict->SetString("PLAY_MEDIA", 1679 dict->SetString("PLAY_MEDIA",
1697 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_PLAY)); 1680 l10n_util::GetStringUTF16(IDS_CONTENT_CONTEXT_PLAY));
1698 1681
1699 return true; 1682 return true;
1700 } 1683 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698