| 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 "", | 75 "", |
| 75 "", | 76 "", |
| 76 "", | 77 "", |
| 77 "", | 78 "", |
| 78 "", | 79 "", |
| 79 "", | 80 "", |
| 80 "", | 81 "", |
| 81 "", | 82 "", |
| 82 "", | 83 "", |
| 83 device_path, | 84 device_path, |
| 84 chromeos::DEVICE_TYPE_UNKNOWN, | 85 chromeos::DEVICE_TYPE_UNKNOWN, |
| 85 0, | 86 0, |
| 86 false, | 87 false, |
| 88 is_read_only_hardware, |
| 87 false, | 89 false, |
| 88 false, | 90 false, |
| 89 false, | 91 false, |
| 90 false, | |
| 91 false); | 92 false); |
| 92 } | 93 } |
| 93 | 94 |
| 94 std::unique_ptr<DeviceEventRouterImpl> device_event_router; | 95 std::unique_ptr<DeviceEventRouterImpl> device_event_router; |
| 95 | 96 |
| 96 private: | 97 private: |
| 97 base::MessageLoop message_loop_; | 98 base::MessageLoop message_loop_; |
| 98 }; | 99 }; |
| 99 | 100 |
| 100 TEST_F(DeviceEventRouterTest, AddAndRemoveDevice) { | 101 TEST_F(DeviceEventRouterTest, AddAndRemoveDevice) { |
| 101 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1"); | 102 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1", false); |
| 102 const Disk disk1_unmounted = CreateTestDisk("/device/test", ""); | 103 const Disk disk1_unmounted = CreateTestDisk("/device/test", "", false); |
| 103 std::unique_ptr<Volume> volume(Volume::CreateForTesting( | 104 std::unique_ptr<Volume> volume(Volume::CreateForTesting( |
| 104 base::FilePath(FILE_PATH_LITERAL("/device/test")), | 105 base::FilePath(FILE_PATH_LITERAL("/device/test")), |
| 105 base::FilePath(FILE_PATH_LITERAL("/mount/path1")))); | 106 base::FilePath(FILE_PATH_LITERAL("/mount/path1")))); |
| 106 device_event_router->OnDeviceAdded("/device/test"); | 107 device_event_router->OnDeviceAdded("/device/test"); |
| 107 device_event_router->OnDiskAdded(disk1, true); | 108 device_event_router->OnDiskAdded(disk1, true); |
| 108 device_event_router->OnVolumeMounted(chromeos::MOUNT_ERROR_NONE, | 109 device_event_router->OnVolumeMounted(chromeos::MOUNT_ERROR_NONE, |
| 109 *volume.get()); | 110 *volume.get()); |
| 110 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, | 111 device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE, |
| 111 *volume.get()); | 112 *volume.get()); |
| 112 device_event_router->OnDiskRemoved(disk1_unmounted); | 113 device_event_router->OnDiskRemoved(disk1_unmounted); |
| 113 device_event_router->OnDeviceRemoved("/device/test"); | 114 device_event_router->OnDeviceRemoved("/device/test"); |
| 114 ASSERT_EQ(1u, device_event_router->events.size()); | 115 ASSERT_EQ(1u, device_event_router->events.size()); |
| 115 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, | 116 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 116 device_event_router->events[0].type); | 117 device_event_router->events[0].type); |
| 117 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | 118 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 118 } | 119 } |
| 119 | 120 |
| 120 TEST_F(DeviceEventRouterTest, HardUnplugged) { | 121 TEST_F(DeviceEventRouterTest, HardUnplugged) { |
| 121 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1"); | 122 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1", false); |
| 122 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2"); | 123 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2", false); |
| 123 device_event_router->OnDeviceAdded("/device/test"); | 124 device_event_router->OnDeviceAdded("/device/test"); |
| 124 device_event_router->OnDiskAdded(disk1, true); | 125 device_event_router->OnDiskAdded(disk1, true); |
| 125 device_event_router->OnDiskAdded(disk2, true); | 126 device_event_router->OnDiskAdded(disk2, true); |
| 126 device_event_router->OnDiskRemoved(disk1); | 127 device_event_router->OnDiskRemoved(disk1); |
| 127 device_event_router->OnDiskRemoved(disk2); | 128 device_event_router->OnDiskRemoved(disk2); |
| 128 device_event_router->OnDeviceRemoved(kTestDevicePath); | 129 device_event_router->OnDeviceRemoved(kTestDevicePath); |
| 129 base::RunLoop().RunUntilIdle(); | 130 base::RunLoop().RunUntilIdle(); |
| 130 ASSERT_EQ(2u, device_event_router->events.size()); | 131 ASSERT_EQ(2u, device_event_router->events.size()); |
| 131 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_HARD_UNPLUGGED, | 132 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_HARD_UNPLUGGED, |
| 132 device_event_router->events[0].type); | 133 device_event_router->events[0].type); |
| 133 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); | 134 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 134 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, | 135 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 135 device_event_router->events[1].type); | 136 device_event_router->events[1].type); |
| 136 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); | 137 EXPECT_EQ("/device/test", device_event_router->events[1].device_path); |
| 137 } | 138 } |
| 138 | 139 |
| 140 TEST_F(DeviceEventRouterTest, HardUnplugReadOnlyVolume) { |
| 141 const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1", true); |
| 142 const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2", true); |
| 143 device_event_router->OnDeviceAdded("/device/test"); |
| 144 device_event_router->OnDiskAdded(disk1, true); |
| 145 device_event_router->OnDiskAdded(disk2, true); |
| 146 device_event_router->OnDiskRemoved(disk1); |
| 147 device_event_router->OnDiskRemoved(disk2); |
| 148 device_event_router->OnDeviceRemoved(kTestDevicePath); |
| 149 base::RunLoop().RunUntilIdle(); |
| 150 ASSERT_EQ(1u, device_event_router->events.size()); |
| 151 EXPECT_EQ(file_manager_private::DEVICE_EVENT_TYPE_REMOVED, |
| 152 device_event_router->events[0].type); |
| 153 EXPECT_EQ("/device/test", device_event_router->events[0].device_path); |
| 154 // Should not warn hard unplug because the volumes are read-only. |
| 155 } |
| 156 |
| 139 } // namespace file_manager | 157 } // namespace file_manager |
| OLD | NEW |