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

Unified Diff: chrome/browser/media_gallery/media_device_notifications_linux_unittest.cc

Issue 10829228: [LINUX] Extract the name and id of the device and send it along the device attach message. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments. Created 8 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/media_gallery/media_device_notifications_linux_unittest.cc
diff --git a/chrome/browser/media_gallery/media_device_notifications_linux_unittest.cc b/chrome/browser/media_gallery/media_device_notifications_linux_unittest.cc
index 0493a70713394a40f74f26d02d6781c898493342..d1898a0bdd655e4c00ff929599836a76b4190837 100644
--- a/chrome/browser/media_gallery/media_device_notifications_linux_unittest.cc
+++ b/chrome/browser/media_gallery/media_device_notifications_linux_unittest.cc
@@ -37,6 +37,14 @@ const char kDevice1[] = "d1";
const char kDevice2[] = "d2";
const char kDevice3[] = "d3";
+const char kDeviceId1[] = "FFF0-000F";
+const char kDeviceId2[] = "FFF0-00F0";
+const char kDeviceId3[] = "FFF0-0F00";
+
+const char kDeviceLabel1[] = "TEST_USB_MODEL_1";
+const char kDeviceLabel2[] = "TEST_USB_MODEL_2";
+const char kDeviceLabel3[] = "TEST_USB_MODEL_3";
+
const char kMountPointA[] = "mnt_a";
const char kMountPointB[] = "mnt_b";
@@ -47,9 +55,16 @@ class MediaDeviceNotificationsLinuxTestWrapper
MessageLoop* message_loop)
: MediaDeviceNotificationsLinux(path),
message_loop_(message_loop) {
+ PopulateMountDeviceInfoMap();
}
private:
+ // Device unique id and label information.
+ typedef std::pair<std::string, string16> DeviceInfo;
+
+ // (Mount device, DeviceInfo)
+ typedef std::map<std::string, DeviceInfo> MountDeviceInfoMap;
+
// Avoids code deleting the object while there are references to it.
// Aside from the base::RefCountedThreadSafe friend class, any attempts to
// call this dtor will result in a compile-time error.
@@ -60,7 +75,36 @@ class MediaDeviceNotificationsLinuxTestWrapper
message_loop_->PostTask(FROM_HERE, MessageLoop::QuitClosure());
}
+ virtual bool GetDeviceInfo(const std::string& dev_path,
+ std::string* id,
+ string16* name) OVERRIDE {
+ MountDeviceInfoMap::const_iterator it = device_info_map_.find(dev_path);
+ if (it == device_info_map_.end())
+ return false;
+
+ id->assign(it->second.first);
+ *name = it->second.second;
+ return true;
+ }
+
+ // Helper function to populate test device information.
+ void PopulateMountDeviceInfoMap() {
+ device_info_map_.insert(
+ std::make_pair(kDevice1,
+ std::make_pair(kDeviceId1,
+ UTF8ToUTF16(kDeviceLabel1))));
+ device_info_map_.insert(
+ std::make_pair(kDevice2,
+ std::make_pair(kDeviceId2,
+ UTF8ToUTF16(kDeviceLabel2))));
+ device_info_map_.insert(
+ std::make_pair(kDevice3,
+ std::make_pair(kDeviceId3,
+ UTF8ToUTF16(kDeviceLabel3))));
+ }
+
MessageLoop* message_loop_;
+ MountDeviceInfoMap device_info_map_;
DISALLOW_COPY_AND_ASSIGN(MediaDeviceNotificationsLinuxTestWrapper);
};
@@ -236,18 +280,17 @@ TEST_F(MediaDeviceNotificationsLinuxTest, BasicAttachDetach) {
MtabTestData(kDevice1, kInvalidPath, kValidFS),
MtabTestData(kDevice2, test_path.value(), kValidFS),
};
- const std::string kDeviceId = "0";
// Only |kDevice2| should be attached, since |kDevice1| has a bad path.
EXPECT_CALL(observer(),
- OnMediaDeviceAttached(kDeviceId,
- ASCIIToUTF16(kDevice2),
+ OnMediaDeviceAttached(kDeviceId2,
+ UTF8ToUTF16(kDeviceLabel2),
Lei Zhang 2012/08/09 03:47:16 What I mean is, you can still use ASCIIToUTF16().
kmadhusu 2012/08/09 08:10:03 Done.
base::SystemMonitor::TYPE_PATH,
test_path.value()))
.InSequence(mock_sequence);
AppendToMtabAndRunLoop(test_data, arraysize(test_data));
// |kDevice2| should be detached here.
- EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId))
+ EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId2))
.InSequence(mock_sequence);
WriteEmptyMtabAndRunLoop();
}
@@ -260,11 +303,10 @@ TEST_F(MediaDeviceNotificationsLinuxTest, DCIM) {
MtabTestData test_data1[] = {
MtabTestData(kDevice1, test_path_a.value(), kValidFS),
};
- const std::string kDeviceId = "0";
// |kDevice1| should be attached as expected.
EXPECT_CALL(observer(),
- OnMediaDeviceAttached(kDeviceId,
- ASCIIToUTF16(kDevice1),
+ OnMediaDeviceAttached(kDeviceId1,
+ UTF8ToUTF16(kDeviceLabel1),
base::SystemMonitor::TYPE_PATH,
test_path_a.value()))
.InSequence(mock_sequence);
@@ -279,12 +321,48 @@ TEST_F(MediaDeviceNotificationsLinuxTest, DCIM) {
AppendToMtabAndRunLoop(test_data2, arraysize(test_data2));
// |kDevice1| should be detached as expected.
- EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId))
+ EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId1))
.InSequence(mock_sequence);
WriteEmptyMtabAndRunLoop();
}
// More complicated test case with multiple devices on multiple mount points.
+TEST_F(MediaDeviceNotificationsLinuxTest, SwapMountPoints) {
+ FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA);
+ FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB);
+ ASSERT_FALSE(test_path_a.empty());
+ ASSERT_FALSE(test_path_b.empty());
+
+ // Attach two devices.
+ // kDevice1 -> kMountPointA
+ // kDevice2 -> kMountPointB
+ MtabTestData test_data1[] = {
+ MtabTestData(kDevice1, test_path_a.value(), kValidFS),
+ MtabTestData(kDevice2, test_path_b.value(), kValidFS),
+ };
+ EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(2);
+ EXPECT_CALL(observer(), OnMediaDeviceDetached(_)).Times(0);
+ AppendToMtabAndRunLoop(test_data1, arraysize(test_data1));
+
+ // Detach two devices from old mount points and attach the devices at new
+ // mount points.
+ // kDevice1 -> kMountPointB
+ // kDevice2 -> kMountPointA
+ MtabTestData test_data2[] = {
+ MtabTestData(kDevice1, test_path_b.value(), kValidFS),
+ MtabTestData(kDevice2, test_path_a.value(), kValidFS),
+ };
+ EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(2);
+ EXPECT_CALL(observer(), OnMediaDeviceDetached(_)).Times(2);
+ OverwriteMtabAndRunLoop(test_data2, arraysize(test_data2));
+
+ // Detach all devices.
+ EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0);
+ EXPECT_CALL(observer(), OnMediaDeviceDetached(_)).Times(2);
+ WriteEmptyMtabAndRunLoop();
+}
+
+// More complicated test case with multiple devices on multiple mount points.
TEST_F(MediaDeviceNotificationsLinuxTest, MultiDevicesMultiMountPoints) {
FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA);
FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB);
@@ -359,8 +437,6 @@ TEST_F(MediaDeviceNotificationsLinuxTest, MultiDevicesOneMountPoint) {
FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB);
ASSERT_FALSE(test_path_a.empty());
ASSERT_FALSE(test_path_b.empty());
- const std::string kDeviceId0 = "0";
- const std::string kDeviceId1 = "1";
// |kDevice1| is most recently mounted at |kMountPointB|.
// kDevice1 -> kMountPointA
@@ -372,8 +448,8 @@ TEST_F(MediaDeviceNotificationsLinuxTest, MultiDevicesOneMountPoint) {
MtabTestData(kDevice1, test_path_b.value(), kValidFS),
};
EXPECT_CALL(observer(),
- OnMediaDeviceAttached(kDeviceId0,
- ASCIIToUTF16(kDevice1),
+ OnMediaDeviceAttached(kDeviceId1,
+ UTF8ToUTF16(kDeviceLabel1),
base::SystemMonitor::TYPE_PATH,
test_path_b.value()))
.Times(1);
@@ -391,10 +467,10 @@ TEST_F(MediaDeviceNotificationsLinuxTest, MultiDevicesOneMountPoint) {
MtabTestData test_data2[] = {
MtabTestData(kDevice3, test_path_b.value(), kValidFS),
};
- EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId0)).Times(1);
+ EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId1)).Times(1);
EXPECT_CALL(observer(),
- OnMediaDeviceAttached(kDeviceId1,
- ASCIIToUTF16(kDevice3),
+ OnMediaDeviceAttached(kDeviceId3,
+ UTF8ToUTF16(kDeviceLabel3),
base::SystemMonitor::TYPE_PATH,
test_path_b.value()))
.Times(1);
@@ -402,7 +478,7 @@ TEST_F(MediaDeviceNotificationsLinuxTest, MultiDevicesOneMountPoint) {
// Detach all devices.
EXPECT_CALL(observer(), OnMediaDeviceAttached(_, _, _, _)).Times(0);
- EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId1)).Times(1);
+ EXPECT_CALL(observer(), OnMediaDeviceDetached(kDeviceId3)).Times(1);
WriteEmptyMtabAndRunLoop();
}

Powered by Google App Engine
This is Rietveld 408576698