| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_manager/device_event_router.h" | 5 #include "chrome/browser/chromeos/extensions/file_manager/device_event_router.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 } // namespace | 61 } // namespace |
| 62 | 62 |
| 63 class DeviceEventRouterTest : public testing::Test { | 63 class DeviceEventRouterTest : public testing::Test { |
| 64 protected: | 64 protected: |
| 65 void SetUp() override { | 65 void SetUp() override { |
| 66 device_event_router.reset(new DeviceEventRouterImpl()); | 66 device_event_router.reset(new DeviceEventRouterImpl()); |
| 67 } | 67 } |
| 68 | 68 |
| 69 // Creates a disk instance with |device_path| and |mount_path| for testing. | 69 // Creates a disk instance with |device_path| and |mount_path| for testing. |
| 70 Disk CreateTestDisk(const std::string& device_path, | 70 Disk CreateTestDisk(const std::string& device_path, |
| 71 const std::string& mount_path) { | 71 const std::string& mount_path, |
| 72 bool is_read_only_hardware) { |
| 72 return Disk(device_path, | 73 return Disk(device_path, |
| 73 mount_path, | 74 mount_path, |
| 74 false, | 75 false, |
| 75 "", | 76 "", |
| 76 "", | 77 "", |
| 77 "", | 78 "", |
| 78 "", | 79 "", |
| 79 "", | 80 "", |
| 80 "", | 81 "", |
| 81 "", | 82 "", |
| 82 "", | 83 "", |
| 83 "", | 84 "", |
| 84 device_path, | 85 device_path, |
| 85 chromeos::DEVICE_TYPE_UNKNOWN, | 86 chromeos::DEVICE_TYPE_UNKNOWN, |
| 86 0, | 87 0, |
| 87 false, | 88 false, |
| 89 is_read_only_hardware, |
| 88 false, | 90 false, |
| 89 false, | 91 false, |
| 90 false, | 92 false, |
| 91 false, | |
| 92 false); | 93 false); |
| 93 } | 94 } |
| 94 | 95 |
| 95 std::unique_ptr<DeviceEventRouterImpl> device_event_router; | 96 std::unique_ptr<DeviceEventRouterImpl> device_event_router; |
| 96 | 97 |
| 97 private: | 98 private: |
| 98 base::MessageLoop message_loop_; | 99 base::MessageLoop message_loop_; |
| 99 }; | 100 }; |
| 100 | 101 |
| 101 TEST_F(DeviceEventRouterTest, AddAndRemoveDevice) { | 102 TEST_F(DeviceEventRouterTest, AddAndRemoveDevice) { |
| 102 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1"); | 103 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1", false); |
| 103 const Disk disk1_unmounted = CreateTestDisk("/device/test", ""); | 104 const Disk disk1_unmounted = CreateTestDisk("/device/test", "", false); |
| 104 std::unique_ptr<Volume> volume(Volume::CreateForTesting( | 105 std::unique_ptr<Volume> volume(Volume::CreateForTesting( |
| 105 base::FilePath(FILE_PATH_LITERAL("/device/test")), | 106 base::FilePath(FILE_PATH_LITERAL("/device/test")), |
| 106 base::FilePath(FILE_PATH_LITERAL("/mount/path1")))); | 107 base::FilePath(FILE_PATH_LITERAL("/mount/path1")))); |
| 107 device_event_router->OnDeviceAdded("/device/test"); | 108 device_event_router->OnDeviceAdded("/device/test"); |
| 108 device_event_router->OnDiskAdded(disk1, true); | 109 device_event_router->OnDiskAdded(disk1, true); |
| 109 device_event_router->OnVolumeMounted(chromeos::MOUNT_ERROR_NONE, | 110 device_event_router->OnVolumeMounted(chromeos::MOUNT_ERROR_NONE, |
| 110 *volume.get()); | 111 *volume.get()); |
| 111 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, | 112 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, |
| 112 *volume.get()); | 113 *volume.get()); |
| 113 device_event_router->OnDiskRemoved(disk1_unmounted); | 114 device_event_router->OnDiskRemoved(disk1_unmounted); |
| 114 device_event_router->OnDeviceRemoved("/device/test"); | 115 device_event_router->OnDeviceRemoved("/device/test"); |
| 115 ASSERT_EQ(1u, device_event_router->events.size()); | 116 ASSERT_EQ(1u, device_event_router->events.size()); |
| 116 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, | 117 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 117 device_event_router->events[0].type); | 118 device_event_router->events[0].type); |
| 118 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | 119 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 119 } | 120 } |
| 120 | 121 |
| 121 TEST_F(DeviceEventRouterTest, HardUnplugged) { | 122 TEST_F(DeviceEventRouterTest, HardUnplugged) { |
| 122 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1"); | 123 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1", false); |
| 123 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2"); | 124 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2", false); |
| 124 device_event_router->OnDeviceAdded("/device/test"); | 125 device_event_router->OnDeviceAdded("/device/test"); |
| 125 device_event_router->OnDiskAdded(disk1, true); | 126 device_event_router->OnDiskAdded(disk1, true); |
| 126 device_event_router->OnDiskAdded(disk2, true); | 127 device_event_router->OnDiskAdded(disk2, true); |
| 127 device_event_router->OnDiskRemoved(disk1); | 128 device_event_router->OnDiskRemoved(disk1); |
| 128 device_event_router->OnDiskRemoved(disk2); | 129 device_event_router->OnDiskRemoved(disk2); |
| 129 device_event_router->OnDeviceRemoved(kTestDevicePath); | 130 device_event_router->OnDeviceRemoved(kTestDevicePath); |
| 130 base::RunLoop().RunUntilIdle(); | 131 base::RunLoop().RunUntilIdle(); |
| 131 ASSERT_EQ(2u, device_event_router->events.size()); | 132 ASSERT_EQ(2u, device_event_router->events.size()); |
| 132 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_HARD_UNPLUGGED, | 133 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_HARD_UNPLUGGED, |
| 133 device_event_router->events[0].type); | 134 device_event_router->events[0].type); |
| 134 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | 135 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 135 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, | 136 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 136 device_event_router->events[1].type); | 137 device_event_router->events[1].type); |
| 137 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); | 138 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); |
| 138 } | 139 } |
| 139 | 140 |
| 141 TEST_F(DeviceEventRouterTest, HardUnplugReadOnlyVolume) { |
| 142 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1", true); |
| 143 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2", true); |
| 144 device_event_router->OnDeviceAdded("/device/test"); |
| 145 device_event_router->OnDiskAdded(disk1, true); |
| 146 device_event_router->OnDiskAdded(disk2, true); |
| 147 device_event_router->OnDiskRemoved(disk1); |
| 148 device_event_router->OnDiskRemoved(disk2); |
| 149 device_event_router->OnDeviceRemoved(kTestDevicePath); |
| 150 base::RunLoop().RunUntilIdle(); |
| 151 ASSERT_EQ(1u, device_event_router->events.size()); |
| 152 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 153 device_event_router->events[0].type); |
| 154 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 155 // Should not warn hard unplug because the volumes are read-only. |
| 156 } |
| 157 |
| 140 } // namespace file_manager | 158 } // namespace file_manager |
| OLD | NEW |