Index: chrome/browser/chromeos/extensions/file_manager/event_router.cc |
diff --git a/chrome/browser/chromeos/extensions/file_manager/event_router.cc b/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
index 83cbe971a5ead77c2aba97406fa5aac58d6954fa..0a04a2b2d47ee62485d708b55503b0bfa8e6fc61 100644 |
--- a/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
+++ b/chrome/browser/chromeos/extensions/file_manager/event_router.cc |
@@ -759,6 +759,7 @@ void EventRouter::DispatchDirectoryChangeEventWithEntryDefinition( |
} |
void EventRouter::ShowRemovableDeviceInFileManager( |
+ VolumeType type, |
const base::FilePath& mount_path) { |
// Do not attempt to open File Manager while the login is in progress or |
// the screen is locked or running in kiosk app mode and make sure the file |
@@ -773,19 +774,24 @@ void EventRouter::ShowRemovableDeviceInFileManager( |
if (IsRecoveryToolRunning(profile_)) |
return; |
- // According to DCF (Design rule of Camera File system) by JEITA / CP-3461 |
- // cameras should have pictures located in the DCIM root directory. |
- const base::FilePath dcim_path = mount_path.Append( |
- FILE_PATH_LITERAL("DCIM")); |
+ // Do not pop-up the File Manager, if Google+ Photos may be launched. |
+ if (IsGooglePhotosInstalled(profile_)) { |
+ // MTP device is handled by Photos app. |
+ if (type == VOLUME_TYPE_MTP) |
+ return; |
+ // According to DCF (Design rule of Camera File system) by JEITA / CP-3461 |
+ // cameras should have pictures located in the DCIM root directory. |
+ // Such removable disks are handled by Photos app. |
+ if (type == VOLUME_TYPE_REMOVABLE_DISK_PARTITION) { |
+ DirectoryExistsOnUIThread( |
+ mount_path.AppendASCII("DCIM"), |
+ base::Bind(&base::DoNothing), |
+ base::Bind(&util::OpenRemovableDrive, profile_, mount_path)); |
+ return; |
+ } |
+ } |
- // If there is a DCIM folder and Google+ Photos is installed, then do not |
- // launch Files.app. |
- DirectoryExistsOnUIThread( |
- dcim_path, |
- IsGooglePhotosInstalled(profile_) |
- ? base::Bind(&base::DoNothing) |
- : base::Bind(&util::OpenRemovableDrive, profile_, mount_path), |
- base::Bind(&util::OpenRemovableDrive, profile_, mount_path)); |
+ util::OpenRemovableDrive(profile_, mount_path); |
} |
void EventRouter::DispatchDeviceEvent( |
@@ -866,12 +872,14 @@ void EventRouter::OnVolumeMounted(chromeos::MountError error_code, |
volume_info, |
is_remounting); |
- if (volume_info.type == VOLUME_TYPE_REMOVABLE_DISK_PARTITION && |
+ if ((volume_info.type == VOLUME_TYPE_MTP || |
+ volume_info.type == VOLUME_TYPE_REMOVABLE_DISK_PARTITION) && |
!is_remounting) { |
// If a new device was mounted, a new File manager window may need to be |
// opened. |
if (error_code == chromeos::MOUNT_ERROR_NONE) |
- ShowRemovableDeviceInFileManager(volume_info.mount_path); |
+ ShowRemovableDeviceInFileManager(volume_info.type, |
+ volume_info.mount_path); |
} |
} |