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

Unified Diff: chrome/browser/chromeos/extensions/file_manager/device_event_router_unittest.cc

Issue 472603004: Add DeviceEventRouter class. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 4 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/extensions/file_manager/device_event_router_unittest.cc
diff --git a/chrome/browser/chromeos/extensions/file_manager/device_event_router_unittest.cc b/chrome/browser/chromeos/extensions/file_manager/device_event_router_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..f1d16432ebc80e57293f08da9aa231cde345023d
--- /dev/null
+++ b/chrome/browser/chromeos/extensions/file_manager/device_event_router_unittest.cc
@@ -0,0 +1,200 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
mtomasz 2014/08/20 06:31:02 nit: 214
hirono 2014/08/20 08:07:18 Done.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/chromeos/extensions/file_manager/device_event_router.h"
+
+#include <string>
+#include <vector>
+
+#include "base/basictypes.h"
+#include "base/prefs/pref_service.h"
mtomasz 2014/08/20 06:31:02 pref_service not used?
hirono 2014/08/20 08:07:18 Done.
+#include "base/strings/utf_string_conversions.h"
mtomasz 2014/08/20 06:31:02 utf_string_conversion not used?
hirono 2014/08/20 08:07:18 Done.
+#include "chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h"
+#include "chrome/browser/chromeos/file_manager/volume_manager.h"
mtomasz 2014/08/20 06:31:02 volume_manager not used?
hirono 2014/08/20 08:07:18 Done.
+#include "chrome/browser/chromeos/file_manager/volume_manager_observer.h"
+#include "chrome/browser/chromeos/file_system_provider/fake_provided_file_system.h"
mtomasz 2014/08/20 06:31:02 file_system provider not used?
hirono 2014/08/20 08:07:17 Done.
+#include "chrome/browser/chromeos/file_system_provider/service.h"
+#include "chrome/common/pref_names.h"
mtomasz 2014/08/20 06:31:02 pref_names not used?
hirono 2014/08/20 08:07:18 Done.
+#include "chrome/test/base/testing_profile.h"
+#include "chromeos/dbus/fake_power_manager_client.h"
mtomasz 2014/08/20 06:31:02 if fake_power_manager_client used?
hirono 2014/08/20 08:07:18 Done.
+#include "chromeos/disks/disk_mount_manager.h"
+#include "components/storage_monitor/storage_info.h"
mtomasz 2014/08/20 06:31:02 is storage_info used?
hirono 2014/08/20 08:07:17 Done.
+#include "content/public/test/test_browser_thread_bundle.h"
mtomasz 2014/08/20 06:31:02 bundle not used?
hirono 2014/08/20 08:07:18 Done.
+#include "extensions/browser/extension_registry.h"
mtomasz 2014/08/20 06:31:02 extension_registry not used?
hirono 2014/08/20 08:07:17 Done.
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace file_manager {
+namespace {
+
+namespace file_browser_private = extensions::api::file_browser_private;
+typedef chromeos::disks::DiskMountManager::Disk Disk;
+
+const char kTestDevicePath[] = "/device/test";
+
+struct DeviceEvent {
+ extensions::api::file_browser_private::DeviceEventType type;
+ std::string device_path;
+};
+
+class DeviceEventRouterImpl : public DeviceEventRouter {
mtomasz 2014/08/20 06:31:02 Comment for the class and methods missing.
hirono 2014/08/20 08:07:17 Done.
+ public:
+ DeviceEventRouterImpl() : external_storage_disabled(false) {}
+ virtual ~DeviceEventRouterImpl() {}
+
+ virtual void OnDeviceEvent(file_browser_private::DeviceEventType type,
+ const std::string& device_path) OVERRIDE {
+ DeviceEvent event;
+ event.type = type;
+ event.device_path = device_path;
+ events.push_back(event);
+ }
+
+ virtual void PostDelayedTask(const base::Closure& callback,
+ const base::TimeDelta time) OVERRIDE {
+ callbacks_.push_back(callback);
+ }
+
+ virtual bool IsExternalStorageDisabled() OVERRIDE {
+ return external_storage_disabled;
+ }
+
+ void RunDelayedTasks() {
+ for (size_t i = 0; i < callbacks_.size(); ++i) {
+ callbacks_[i].Run();
+ }
+ callbacks_.clear();
+ }
+
+ std::vector<DeviceEvent> events;
+ bool external_storage_disabled;
+
+ private:
+ std::vector<base::Closure> callbacks_;
+};
mtomasz 2014/08/20 06:31:02 How about adding DISALLOW_COPY_AND_ASSIGN?
hirono 2014/08/20 08:07:18 Done.
+} // namespace
+
+class DeviceEventRouterTest : public testing::Test {
+ protected:
+ virtual void SetUp() OVERRIDE {
+ device_event_router.reset(new DeviceEventRouterImpl());
+ }
+
+ Disk CreateTestDisk(const std::string& device_path,
+ const std::string& mount_path) {
+ return Disk(device_path,
+ mount_path,
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ device_path,
+ chromeos::DEVICE_TYPE_UNKNOWN,
+ 0,
+ false,
+ false,
+ false,
+ false,
+ false,
+ false);
+ }
+
+ VolumeInfo CreateTestVolumeInfo(const std::string& device_path,
+ const std::string& mount_path) {
+ VolumeInfo volume_info;
+ volume_info.system_path_prefix = base::FilePath(device_path);
+ volume_info.mount_path = base::FilePath(mount_path);
+ return volume_info;
+ }
+
+ scoped_ptr<DeviceEventRouterImpl> device_event_router;
+};
+
+TEST_F(DeviceEventRouterTest, AddAndRemoveDevice) {
+ const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1");
+ const Disk disk1_unmounted = CreateTestDisk("/device/test", "");
+ const VolumeInfo volumeInfo =
+ CreateTestVolumeInfo("/device/test", "/mount/path1");
+ device_event_router->OnDeviceAdded("/device/test");
+ device_event_router->OnDiskAdded(disk1, true);
+ device_event_router->OnVolumeMounted(
+ chromeos::MOUNT_ERROR_NONE, volumeInfo, false);
+ device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE,
+ volumeInfo);
+ device_event_router->OnDiskRemoved(disk1_unmounted);
+ device_event_router->OnDeviceRemoved("/device/test");
+ EXPECT_EQ(1u, device_event_router->events.size());
+ EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED,
+ device_event_router->events[0].type);
+ EXPECT_EQ("/device/test", device_event_router->events[0].device_path);
+}
+
+TEST_F(DeviceEventRouterTest, DeviceScan) {
+ const Disk disk = CreateTestDisk("/device/test", "/mount/path1");
+ const Disk disk_unmounted = CreateTestDisk("/device/test", "");
+ const VolumeInfo volumeInfo =
+ CreateTestVolumeInfo("/device/test", "/mount/path1");
+ device_event_router->OnDeviceAdded("/device/test");
+ device_event_router->RunDelayedTasks();
+ device_event_router->OnDiskAdded(disk, true);
+ device_event_router->OnVolumeMounted(
+ chromeos::MOUNT_ERROR_NONE, volumeInfo, false);
+ device_event_router->OnVolumeUnmounted(chromeos::MOUNT_ERROR_NONE,
+ volumeInfo);
+ device_event_router->OnDiskRemoved(disk_unmounted);
+ device_event_router->OnDeviceRemoved("/device/test");
+ EXPECT_EQ(2u, device_event_router->events.size());
+ EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_ADDED,
+ device_event_router->events[0].type);
+ EXPECT_EQ("/device/test", device_event_router->events[0].device_path);
+ EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED,
+ device_event_router->events[1].type);
+ EXPECT_EQ("/device/test", device_event_router->events[1].device_path);
+}
+
+TEST_F(DeviceEventRouterTest, DeviceScanCancelled) {
+ const Disk disk = CreateTestDisk("/device/test", "/mount/path1");
+ const Disk disk_unmounted = CreateTestDisk("/device/test", "");
+ const VolumeInfo volumeInfo =
+ CreateTestVolumeInfo("/device/test", "/mount/path1");
+ device_event_router->OnDeviceAdded("/device/test");
+ device_event_router->RunDelayedTasks();
+ device_event_router->OnDiskAdded(disk, false);
+ device_event_router->OnDiskRemoved(disk_unmounted);
+ device_event_router->OnDeviceRemoved("/device/test");
+ EXPECT_EQ(3u, device_event_router->events.size());
+ EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_ADDED,
+ device_event_router->events[0].type);
+ EXPECT_EQ("/device/test", device_event_router->events[0].device_path);
+ EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_SCAN_CANCELED,
+ device_event_router->events[1].type);
+ EXPECT_EQ("/device/test", device_event_router->events[1].device_path);
+ EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED,
+ device_event_router->events[2].type);
+ EXPECT_EQ("/device/test", device_event_router->events[2].device_path);
+}
+
+TEST_F(DeviceEventRouterTest, HardUnplugged) {
+ const Disk disk1 = CreateTestDisk("/device/test", "/mount/path1");
+ const Disk disk2 = CreateTestDisk("/device/test", "/mount/path2");
+ device_event_router->OnDeviceAdded("/device/test");
+ device_event_router->OnDiskAdded(disk1, true);
+ device_event_router->OnDiskAdded(disk2, true);
+ device_event_router->OnDiskRemoved(disk1);
+ device_event_router->OnDiskRemoved(disk2);
+ device_event_router->OnDeviceRemoved(kTestDevicePath);
+ device_event_router->RunDelayedTasks();
+ EXPECT_EQ(2u, device_event_router->events.size());
+ EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_HARD_UNPLUGGED,
+ device_event_router->events[0].type);
+ EXPECT_EQ("/device/test", device_event_router->events[0].device_path);
+ EXPECT_EQ(file_browser_private::DEVICE_EVENT_TYPE_REMOVED,
+ device_event_router->events[1].type);
+ EXPECT_EQ("/device/test", device_event_router->events[1].device_path);
+}
+} // namespace file_manager

Powered by Google App Engine
This is Rietveld 408576698