| 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 // chromeos::MediaDeviceNotifications unit tests. | 5 // chromeos::MediaDeviceNotifications unit tests. |
| 6 | 6 |
| 7 #include "chrome/browser/media_gallery/media_device_notifications_chromeos.h" | 7 #include "chrome/browser/media_gallery/media_device_notifications_chromeos.h" |
| 8 | 8 |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 system_monitor_.RemoveDevicesChangedObserver( | 66 system_monitor_.RemoveDevicesChangedObserver( |
| 67 mock_devices_changed_observer_.get()); | 67 mock_devices_changed_observer_.get()); |
| 68 WaitForFileThread(); | 68 WaitForFileThread(); |
| 69 } | 69 } |
| 70 | 70 |
| 71 base::MockDevicesChangedObserver& observer() { | 71 base::MockDevicesChangedObserver& observer() { |
| 72 return *mock_devices_changed_observer_; | 72 return *mock_devices_changed_observer_; |
| 73 } | 73 } |
| 74 | 74 |
| 75 void MountDevice(MountError error_code, | 75 void MountDevice(MountError error_code, |
| 76 const DiskMountManager::MountPointInfo& mount_info) { | 76 const DiskMountManager::MountPointInfo& mount_info, |
| 77 const std::string& device_id) { |
| 78 if (error_code == MOUNT_ERROR_NONE) { |
| 79 disk_mount_manager_mock_->CreateDiskEntryForMountDevice( |
| 80 mount_info, device_id); |
| 81 } |
| 77 notifications_->MountCompleted(disks::DiskMountManager::MOUNTING, | 82 notifications_->MountCompleted(disks::DiskMountManager::MOUNTING, |
| 78 error_code, | 83 error_code, |
| 79 mount_info); | 84 mount_info); |
| 80 WaitForFileThread(); | 85 WaitForFileThread(); |
| 81 } | 86 } |
| 82 | 87 |
| 83 void UnmountDevice(MountError error_code, | 88 void UnmountDevice(MountError error_code, |
| 84 const DiskMountManager::MountPointInfo& mount_info) { | 89 const DiskMountManager::MountPointInfo& mount_info) { |
| 85 notifications_->MountCompleted(disks::DiskMountManager::UNMOUNTING, | 90 notifications_->MountCompleted(disks::DiskMountManager::UNMOUNTING, |
| 86 error_code, | 91 error_code, |
| 87 mount_info); | 92 mount_info); |
| 93 if (error_code == MOUNT_ERROR_NONE) { |
| 94 disk_mount_manager_mock_->RemoveDiskEntryForMountDevice( |
| 95 mount_info); |
| 96 } |
| 88 WaitForFileThread(); | 97 WaitForFileThread(); |
| 89 } | 98 } |
| 90 | 99 |
| 91 // Create a directory named |dir| relative to the test directory. | 100 // Create a directory named |dir| relative to the test directory. |
| 92 // Set |with_dcim_dir| to true if the created directory will have a "DCIM" | 101 // Set |with_dcim_dir| to true if the created directory will have a "DCIM" |
| 93 // subdirectory. | 102 // subdirectory. |
| 94 // Returns the full path to the created directory on success, or an empty | 103 // Returns the full path to the created directory on success, or an empty |
| 95 // path on failure. | 104 // path on failure. |
| 96 FilePath CreateMountPoint(const std::string& dir, bool with_dcim_dir) { | 105 FilePath CreateMountPoint(const std::string& dir, bool with_dcim_dir) { |
| 97 FilePath return_path(scoped_temp_dir_.path()); | 106 FilePath return_path(scoped_temp_dir_.path()); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 | 148 |
| 140 // Simple test case where we attach and detach a media device. | 149 // Simple test case where we attach and detach a media device. |
| 141 TEST_F(MediaDeviceNotificationsTest, BasicAttachDetach) { | 150 TEST_F(MediaDeviceNotificationsTest, BasicAttachDetach) { |
| 142 testing::Sequence mock_sequence; | 151 testing::Sequence mock_sequence; |
| 143 FilePath mount_path1 = CreateMountPoint(kMountPointA, true); | 152 FilePath mount_path1 = CreateMountPoint(kMountPointA, true); |
| 144 ASSERT_FALSE(mount_path1.empty()); | 153 ASSERT_FALSE(mount_path1.empty()); |
| 145 DiskMountManager::MountPointInfo mount_info(kDevice1, | 154 DiskMountManager::MountPointInfo mount_info(kDevice1, |
| 146 mount_path1.value(), | 155 mount_path1.value(), |
| 147 MOUNT_TYPE_DEVICE, | 156 MOUNT_TYPE_DEVICE, |
| 148 disks::MOUNT_CONDITION_NONE); | 157 disks::MOUNT_CONDITION_NONE); |
| 149 const std::string kDeviceId0 = "0"; | 158 const std::string kDeviceId0 = "FFFF-FFFF"; |
| 150 EXPECT_CALL(observer(), | 159 EXPECT_CALL(observer(), |
| 151 OnMediaDeviceAttached(kDeviceId0, | 160 OnMediaDeviceAttached(kDeviceId0, |
| 152 ASCIIToUTF16(kDevice1Name), | 161 ASCIIToUTF16(kDevice1Name), |
| 153 base::SystemMonitor::TYPE_PATH, | 162 base::SystemMonitor::TYPE_PATH, |
| 154 mount_path1.value())) | 163 mount_path1.value())) |
| 155 .InSequence(mock_sequence); | 164 .InSequence(mock_sequence); |
| 156 MountDevice(MOUNT_ERROR_NONE, mount_info); | 165 MountDevice(MOUNT_ERROR_NONE, mount_info, kDeviceId0); |
| 157 | 166 |
| 158 EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId0)) | 167 EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId0)) |
| 159 .InSequence(mock_sequence); | 168 .InSequence(mock_sequence); |
| 160 UnmountDevice(MOUNT_ERROR_NONE, mount_info); | 169 UnmountDevice(MOUNT_ERROR_NONE, mount_info); |
| 161 | 170 |
| 162 FilePath mount_path2 = CreateMountPoint(kMountPointB, true); | 171 FilePath mount_path2 = CreateMountPoint(kMountPointB, true); |
| 163 ASSERT_FALSE(mount_path2.empty()); | 172 ASSERT_FALSE(mount_path2.empty()); |
| 164 DiskMountManager::MountPointInfo mount_info2(kDevice2, | 173 DiskMountManager::MountPointInfo mount_info2(kDevice2, |
| 165 mount_path2.value(), | 174 mount_path2.value(), |
| 166 MOUNT_TYPE_DEVICE, | 175 MOUNT_TYPE_DEVICE, |
| 167 disks::MOUNT_CONDITION_NONE); | 176 disks::MOUNT_CONDITION_NONE); |
| 168 const std::string kDeviceId1 = "1"; | 177 const std::string kDeviceId1 = "FFF0-FFF0"; |
| 169 | 178 |
| 170 EXPECT_CALL(observer(), | 179 EXPECT_CALL(observer(), |
| 171 OnMediaDeviceAttached(kDeviceId1, | 180 OnMediaDeviceAttached(kDeviceId1, |
| 172 ASCIIToUTF16(kDevice2Name), | 181 ASCIIToUTF16(kDevice2Name), |
| 173 base::SystemMonitor::TYPE_PATH, | 182 base::SystemMonitor::TYPE_PATH, |
| 174 mount_path2.value())) | 183 mount_path2.value())) |
| 175 .InSequence(mock_sequence); | 184 .InSequence(mock_sequence); |
| 176 MountDevice(MOUNT_ERROR_NONE, mount_info2); | 185 MountDevice(MOUNT_ERROR_NONE, mount_info2, kDeviceId1); |
| 177 | 186 |
| 178 EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId1)) | 187 EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId1)) |
| 179 .InSequence(mock_sequence); | 188 .InSequence(mock_sequence); |
| 180 UnmountDevice(MOUNT_ERROR_NONE, mount_info2); | 189 UnmountDevice(MOUNT_ERROR_NONE, mount_info2); |
| 181 } | 190 } |
| 182 | 191 |
| 183 // Only mount points with DCIM directories are recognized. | 192 // Only mount points with DCIM directories are recognized. |
| 184 TEST_F(MediaDeviceNotificationsTest, DCIM) { | 193 TEST_F(MediaDeviceNotificationsTest, DCIM) { |
| 185 testing::Sequence mock_sequence; | 194 testing::Sequence mock_sequence; |
| 186 FilePath mount_path = CreateMountPoint(kMountPointA, false); | 195 FilePath mount_path = CreateMountPoint(kMountPointA, false); |
| 196 const std::string kDeviceId = "FFFF-FFFF"; |
| 187 ASSERT_FALSE(mount_path.empty()); | 197 ASSERT_FALSE(mount_path.empty()); |
| 188 DiskMountManager::MountPointInfo mount_info(kDevice1, | 198 DiskMountManager::MountPointInfo mount_info(kDevice1, |
| 189 mount_path.value(), | 199 mount_path.value(), |
| 190 MOUNT_TYPE_DEVICE, | 200 MOUNT_TYPE_DEVICE, |
| 191 disks::MOUNT_CONDITION_NONE); | 201 disks::MOUNT_CONDITION_NONE); |
| 192 EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0); | 202 EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0); |
| 193 MountDevice(MOUNT_ERROR_NONE, mount_info); | 203 MountDevice(MOUNT_ERROR_NONE, mount_info, kDeviceId); |
| 194 } | 204 } |
| 195 | 205 |
| 196 // Non device mounts and mount errors are ignored. | 206 // Non device mounts and mount errors are ignored. |
| 197 TEST_F(MediaDeviceNotificationsTest, Ignore) { | 207 TEST_F(MediaDeviceNotificationsTest, Ignore) { |
| 198 testing::Sequence mock_sequence; | 208 testing::Sequence mock_sequence; |
| 199 FilePath mount_path = CreateMountPoint(kMountPointA, true); | 209 FilePath mount_path = CreateMountPoint(kMountPointA, true); |
| 210 const std::string kDeviceId = "FFFF-FFFF"; |
| 200 ASSERT_FALSE(mount_path.empty()); | 211 ASSERT_FALSE(mount_path.empty()); |
| 201 | 212 |
| 202 // Mount error. | 213 // Mount error. |
| 203 DiskMountManager::MountPointInfo mount_info(kDevice1, | 214 DiskMountManager::MountPointInfo mount_info(kDevice1, |
| 204 mount_path.value(), | 215 mount_path.value(), |
| 205 MOUNT_TYPE_DEVICE, | 216 MOUNT_TYPE_DEVICE, |
| 206 disks::MOUNT_CONDITION_NONE); | 217 disks::MOUNT_CONDITION_NONE); |
| 207 EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0); | 218 EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0); |
| 208 MountDevice(MOUNT_ERROR_UNKNOWN, mount_info); | 219 MountDevice(MOUNT_ERROR_UNKNOWN, mount_info, kDeviceId); |
| 209 | 220 |
| 210 // Not a device | 221 // Not a device |
| 211 mount_info.mount_type = MOUNT_TYPE_ARCHIVE; | 222 mount_info.mount_type = MOUNT_TYPE_ARCHIVE; |
| 212 EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0); | 223 EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0); |
| 213 MountDevice(MOUNT_ERROR_NONE, mount_info); | 224 MountDevice(MOUNT_ERROR_NONE, mount_info, kDeviceId); |
| 214 | 225 |
| 215 // Unsupported file system. | 226 // Unsupported file system. |
| 216 mount_info.mount_type = MOUNT_TYPE_DEVICE; | 227 mount_info.mount_type = MOUNT_TYPE_DEVICE; |
| 217 mount_info.mount_condition = disks::MOUNT_CONDITION_UNSUPPORTED_FILESYSTEM; | 228 mount_info.mount_condition = disks::MOUNT_CONDITION_UNSUPPORTED_FILESYSTEM; |
| 218 EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0); | 229 EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0); |
| 219 MountDevice(MOUNT_ERROR_NONE, mount_info); | 230 MountDevice(MOUNT_ERROR_NONE, mount_info, kDeviceId); |
| 220 } | 231 } |
| 221 | 232 |
| 222 } // namespace | 233 } // namespace |
| 223 | 234 |
| 224 } // namespace chrome | 235 } // namespace chrome |
| OLD | NEW |