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

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

Issue 10231010: gdata: Apply correct mount label when mounting archives in GData (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: rebase Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
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_event_router.h" 5 #include "chrome/browser/chromeos/extensions/file_browser_event_router.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/json/json_writer.h" 8 #include "base/json/json_writer.h"
9 #include "base/message_loop.h" 9 #include "base/message_loop.h"
10 #include "base/stl_util.h" 10 #include "base/stl_util.h"
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 ListValue args; 361 ListValue args;
362 DictionaryValue* mount_info_value = new DictionaryValue(); 362 DictionaryValue* mount_info_value = new DictionaryValue();
363 args.Append(mount_info_value); 363 args.Append(mount_info_value);
364 mount_info_value->SetString("eventType", 364 mount_info_value->SetString("eventType",
365 event == DiskMountManager::MOUNTING ? "mount" : "unmount"); 365 event == DiskMountManager::MOUNTING ? "mount" : "unmount");
366 mount_info_value->SetString("status", MountErrorToString(error_code)); 366 mount_info_value->SetString("status", MountErrorToString(error_code));
367 mount_info_value->SetString( 367 mount_info_value->SetString(
368 "mountType", 368 "mountType",
369 DiskMountManager::MountTypeToString(mount_info.mount_type)); 369 DiskMountManager::MountTypeToString(mount_info.mount_type));
370 370
371 if (mount_info.mount_type == chromeos::MOUNT_TYPE_ARCHIVE || 371 // Add sourcePath to the event.
372 mount_info.mount_type == chromeos::MOUNT_TYPE_GDATA) { 372 mount_info_value->SetString("sourcePath", mount_info.source_path);
373 GURL source_url;
374 if (file_manager_util::ConvertFileToFileSystemUrl(profile_,
375 FilePath(mount_info.source_path),
376 file_manager_util::GetFileBrowserExtensionUrl().GetOrigin(),
377 &source_url)) {
378 mount_info_value->SetString("sourceUrl", source_url.spec());
379 } else {
380 // If mounting of gdata moutn point failed, we may not be able to convert
381 // source path to source url, so let just send empty string.
382 DCHECK(mount_info.mount_type == chromeos::MOUNT_TYPE_GDATA &&
383 error_code != chromeos::MOUNT_ERROR_NONE);
384 mount_info_value->SetString("sourceUrl", "");
385 }
386 } else {
387 mount_info_value->SetString("sourceUrl", mount_info.source_path);
388 }
389 373
390 FilePath relative_mount_path; 374 FilePath relative_mount_path;
391 bool relative_mount_path_set = false; 375 bool relative_mount_path_set = false;
392 376
393 // If there were no error or some special conditions occured, add mountPath 377 // If there were no error or some special conditions occured, add mountPath
394 // to the event. 378 // to the event.
395 if (error_code == chromeos::MOUNT_ERROR_NONE || 379 if (error_code == chromeos::MOUNT_ERROR_NONE ||
396 mount_info.mount_condition) { 380 mount_info.mount_condition) {
397 // Convert mount point path to relative path with the external file system 381 // Convert mount point path to relative path with the external file system
398 // exposed within File API. 382 // exposed within File API.
(...skipping 24 matching lines...) Expand all
423 const DiskMountManager::Disk* disk) { 407 const DiskMountManager::Disk* disk) {
424 VLOG(1) << "Disk added: " << disk->device_path(); 408 VLOG(1) << "Disk added: " << disk->device_path();
425 if (disk->device_path().empty()) { 409 if (disk->device_path().empty()) {
426 VLOG(1) << "Empty system path for " << disk->device_path(); 410 VLOG(1) << "Empty system path for " << disk->device_path();
427 return; 411 return;
428 } 412 }
429 413
430 // If disk is not mounted yet and it has media, give it a try. 414 // If disk is not mounted yet and it has media, give it a try.
431 if (disk->mount_path().empty() && disk->has_media()) { 415 if (disk->mount_path().empty() && disk->has_media()) {
432 // Initiate disk mount operation. MountPath auto-detects the filesystem 416 // Initiate disk mount operation. MountPath auto-detects the filesystem
433 // format if the second argument is empty. 417 // format if the second argument is empty. The third argument (mount label)
418 // is not used in a disk mount operation.
434 DiskMountManager::GetInstance()->MountPath( 419 DiskMountManager::GetInstance()->MountPath(
435 disk->device_path(), std::string(), chromeos::MOUNT_TYPE_DEVICE); 420 disk->device_path(), std::string(), std::string(),
421 chromeos::MOUNT_TYPE_DEVICE);
436 } else { 422 } else {
437 // Either the disk was mounted or it has no media. In both cases we don't 423 // Either the disk was mounted or it has no media. In both cases we don't
438 // want the Scanning notification to persist. 424 // want the Scanning notification to persist.
439 notifications_->HideNotification(FileBrowserNotifications::DEVICE, 425 notifications_->HideNotification(FileBrowserNotifications::DEVICE,
440 disk->system_path_prefix()); 426 disk->system_path_prefix());
441 } 427 }
442 DispatchDiskEvent(disk, true); 428 DispatchDiskEvent(disk, true);
443 } 429 }
444 430
445 void FileBrowserEventRouter::OnDiskRemoved( 431 void FileBrowserEventRouter::OnDiskRemoved(
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
492 const std::string& device_path, bool success) { 478 const std::string& device_path, bool success) {
493 if (success) { 479 if (success) {
494 notifications_->HideNotification(FileBrowserNotifications::FORMAT_START, 480 notifications_->HideNotification(FileBrowserNotifications::FORMAT_START,
495 device_path); 481 device_path);
496 notifications_->ShowNotification(FileBrowserNotifications::FORMAT_SUCCESS, 482 notifications_->ShowNotification(FileBrowserNotifications::FORMAT_SUCCESS,
497 device_path); 483 device_path);
498 // Hide it after a couple of seconds. 484 // Hide it after a couple of seconds.
499 notifications_->HideNotificationDelayed( 485 notifications_->HideNotificationDelayed(
500 FileBrowserNotifications::FORMAT_SUCCESS, device_path, 4000); 486 FileBrowserNotifications::FORMAT_SUCCESS, device_path, 4000);
501 // MountPath auto-detects filesystem format if second argument is empty. 487 // MountPath auto-detects filesystem format if second argument is empty.
488 // The third argument (mount label) is not used in a disk mount operation.
502 DiskMountManager::GetInstance()->MountPath(device_path, std::string(), 489 DiskMountManager::GetInstance()->MountPath(device_path, std::string(),
490 std::string(),
503 chromeos::MOUNT_TYPE_DEVICE); 491 chromeos::MOUNT_TYPE_DEVICE);
504 } else { 492 } else {
505 notifications_->HideNotification(FileBrowserNotifications::FORMAT_START, 493 notifications_->HideNotification(FileBrowserNotifications::FORMAT_START,
506 device_path); 494 device_path);
507 notifications_->ShowNotification(FileBrowserNotifications::FORMAT_FAIL, 495 notifications_->ShowNotification(FileBrowserNotifications::FORMAT_FAIL,
508 device_path); 496 device_path);
509 } 497 }
510 } 498 }
511 499
512 // FileBrowserEventRouter::WatcherDelegate methods. 500 // FileBrowserEventRouter::WatcherDelegate methods.
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
633 return scoped_refptr<RefcountedProfileKeyedService>( 621 return scoped_refptr<RefcountedProfileKeyedService>(
634 new FileBrowserEventRouter(profile)); 622 new FileBrowserEventRouter(profile));
635 } 623 }
636 624
637 bool FileBrowserEventRouterFactory::ServiceHasOwnInstanceInIncognito() { 625 bool FileBrowserEventRouterFactory::ServiceHasOwnInstanceInIncognito() {
638 // Explicitly and always allow this router in guest login mode. see 626 // Explicitly and always allow this router in guest login mode. see
639 // chrome/browser/profiles/profile_keyed_base_factory.h comment 627 // chrome/browser/profiles/profile_keyed_base_factory.h comment
640 // for the details. 628 // for the details.
641 return true; 629 return true;
642 } 630 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698