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 // RemovableDeviceNotificationsLinux unit tests. | 5 // RemovableDeviceNotificationsLinux unit tests. |
6 | 6 |
7 #include "chrome/browser/media_gallery/removable_device_notifications_linux.h" | 7 #include "chrome/browser/media_gallery/removable_device_notifications_linux.h" |
8 | 8 |
9 #include <mntent.h> | 9 #include <mntent.h> |
10 #include <stdio.h> | 10 #include <stdio.h> |
(...skipping 16 matching lines...) Expand all Loading... |
27 | 27 |
28 namespace { | 28 namespace { |
29 | 29 |
30 using testing::_; | 30 using testing::_; |
31 | 31 |
32 const char kValidFS[] = "vfat"; | 32 const char kValidFS[] = "vfat"; |
33 const char kInvalidFS[] = "invalidfs"; | 33 const char kInvalidFS[] = "invalidfs"; |
34 | 34 |
35 const char kInvalidPath[] = "invalid path does not exist"; | 35 const char kInvalidPath[] = "invalid path does not exist"; |
36 | 36 |
37 const char kDevice1[] = "d1"; | 37 const char kDeviceDCIM1[] = "d1"; |
38 const char kDevice2[] = "d2"; | 38 const char kDeviceDCIM2[] = "d2"; |
39 const char kDevice3[] = "d3"; | 39 const char kDeviceDCIM3[] = "d3"; |
40 const char kDevice4[] = "d4"; | 40 const char kDeviceNoDCIM[] = "d4"; |
41 const char kDevice5[] = "d5"; | 41 const char kDeviceFixed[] = "d5"; |
42 | 42 |
43 const char kInvalidDevice[] = "invalid_device"; | 43 const char kInvalidDevice[] = "invalid_device"; |
44 | 44 |
45 const char kMountPointA[] = "mnt_a"; | 45 const char kMountPointA[] = "mnt_a"; |
46 const char kMountPointB[] = "mnt_b"; | 46 const char kMountPointB[] = "mnt_b"; |
47 const char kMountPointC[] = "mnt_c"; | 47 const char kMountPointC[] = "mnt_c"; |
48 | 48 |
49 const char kDCIM[] = "DCIM"; | 49 const char kDCIM[] = "DCIM"; |
50 | 50 |
51 struct TestDeviceData { | 51 struct TestDeviceData { |
52 const char* device_path; | 52 const char* device_path; |
53 const char* unique_id; | 53 const char* unique_id; |
54 const char* device_name; | 54 const char* device_name; |
55 MediaStorageUtil::Type type; | 55 MediaStorageUtil::Type type; |
56 }; | 56 }; |
57 | 57 |
58 const TestDeviceData kTestDeviceData[] = { | 58 const TestDeviceData kTestDeviceData[] = { |
59 {kDevice1, "UUID:FFF0-000F", "TEST_USB_MODEL_1", | 59 {kDeviceDCIM1, "UUID:FFF0-000F", "TEST_USB_MODEL_1", |
60 MediaStorageUtil::REMOVABLE_MASS_STORAGE_WITH_DCIM}, | 60 MediaStorageUtil::REMOVABLE_MASS_STORAGE_WITH_DCIM}, |
61 {kDevice2, "VendorModelSerial:ComName:Model2010:89898989", "TEST_USB_MODEL_2", | 61 {kDeviceDCIM2, "VendorModelSerial:ComName:Model2010:8989", "TEST_USB_MODEL_2", |
62 MediaStorageUtil::REMOVABLE_MASS_STORAGE_WITH_DCIM}, | 62 MediaStorageUtil::REMOVABLE_MASS_STORAGE_WITH_DCIM}, |
63 {kDevice3, "VendorModelSerial:::WEM319X792", "TEST_USB_MODEL_3", | 63 {kDeviceDCIM3, "VendorModelSerial:::WEM319X792", "TEST_USB_MODEL_3", |
64 MediaStorageUtil::REMOVABLE_MASS_STORAGE_WITH_DCIM}, | 64 MediaStorageUtil::REMOVABLE_MASS_STORAGE_WITH_DCIM}, |
65 {kDevice4, "UUID:ABCD-1234", "TEST_USB_MODEL_4", | 65 {kDeviceNoDCIM, "UUID:ABCD-1234", "TEST_USB_MODEL_4", |
66 MediaStorageUtil::REMOVABLE_MASS_STORAGE_NO_DCIM}, | 66 MediaStorageUtil::REMOVABLE_MASS_STORAGE_NO_DCIM}, |
67 {kDevice5, "UUID:743A91FD2349", "TEST_USB_MODEL_5", | 67 {kDeviceFixed, "UUID:743A91FD2349", "TEST_USB_MODEL_5", |
68 MediaStorageUtil::FIXED_MASS_STORAGE}, | 68 MediaStorageUtil::FIXED_MASS_STORAGE}, |
69 }; | 69 }; |
70 | 70 |
71 bool GetDeviceInfo(const FilePath& device_path, std::string* id, | 71 bool GetDeviceInfo(const FilePath& device_path, std::string* id, |
72 string16* name, bool* removable) { | 72 string16* name, bool* removable) { |
73 for (size_t i = 0; i < arraysize(kTestDeviceData); i++) { | 73 for (size_t i = 0; i < arraysize(kTestDeviceData); i++) { |
74 if (device_path.value() == kTestDeviceData[i].device_path) { | 74 if (device_path.value() == kTestDeviceData[i].device_path) { |
75 if (id) | 75 if (id) |
76 *id = kTestDeviceData[i].unique_id; | 76 *id = kTestDeviceData[i].unique_id; |
77 if (name) | 77 if (name) |
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 | 303 |
304 DISALLOW_COPY_AND_ASSIGN(RemovableDeviceNotificationLinuxTest); | 304 DISALLOW_COPY_AND_ASSIGN(RemovableDeviceNotificationLinuxTest); |
305 }; | 305 }; |
306 | 306 |
307 // Simple test case where we attach and detach a media device. | 307 // Simple test case where we attach and detach a media device. |
308 TEST_F(RemovableDeviceNotificationLinuxTest, BasicAttachDetach) { | 308 TEST_F(RemovableDeviceNotificationLinuxTest, BasicAttachDetach) { |
309 testing::Sequence mock_sequence; | 309 testing::Sequence mock_sequence; |
310 FilePath test_path = CreateMountPointWithDCIMDir(kMountPointA); | 310 FilePath test_path = CreateMountPointWithDCIMDir(kMountPointA); |
311 ASSERT_FALSE(test_path.empty()); | 311 ASSERT_FALSE(test_path.empty()); |
312 MtabTestData test_data[] = { | 312 MtabTestData test_data[] = { |
313 MtabTestData(kDevice1, kInvalidPath, kValidFS), | 313 MtabTestData(kDeviceDCIM2, test_path.value(), kValidFS), |
314 MtabTestData(kDevice2, test_path.value(), kValidFS), | 314 MtabTestData(kDeviceFixed, kInvalidPath, kValidFS), |
315 }; | 315 }; |
316 // Only |kDevice2| should be attached, since |kDevice1| has a bad path. | 316 // Only |kDeviceDCIM2| should be attached, since |kDeviceFixed| has a bad |
317 EXPECT_CALL(observer(), OnRemovableStorageAttached(GetDeviceId(kDevice2), | 317 // path. |
318 GetDeviceName(kDevice2), | 318 EXPECT_CALL(observer(), |
319 test_path.value())) | 319 OnRemovableStorageAttached(GetDeviceId(kDeviceDCIM2), |
| 320 GetDeviceName(kDeviceDCIM2), |
| 321 test_path.value())) |
320 .InSequence(mock_sequence); | 322 .InSequence(mock_sequence); |
321 AppendToMtabAndRunLoop(test_data, arraysize(test_data)); | 323 AppendToMtabAndRunLoop(test_data, arraysize(test_data)); |
322 | 324 |
323 // |kDevice2| should be detached here. | 325 // |kDeviceDCIM2| should be detached here. |
324 EXPECT_CALL(observer(), OnRemovableStorageDetached(GetDeviceId(kDevice2))) | 326 EXPECT_CALL(observer(), OnRemovableStorageDetached(GetDeviceId(kDeviceDCIM2))) |
325 .InSequence(mock_sequence); | 327 .InSequence(mock_sequence); |
326 WriteEmptyMtabAndRunLoop(); | 328 WriteEmptyMtabAndRunLoop(); |
327 } | 329 } |
328 | 330 |
329 // Only mount points with DCIM directories are recognized. | 331 // Only removable devices are recognized. |
330 TEST_F(RemovableDeviceNotificationLinuxTest, DCIM) { | 332 TEST_F(RemovableDeviceNotificationLinuxTest, Removable) { |
331 testing::Sequence mock_sequence; | 333 testing::Sequence mock_sequence; |
332 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); | 334 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); |
333 ASSERT_FALSE(test_path_a.empty()); | 335 ASSERT_FALSE(test_path_a.empty()); |
334 MtabTestData test_data1[] = { | 336 MtabTestData test_data1[] = { |
335 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 337 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
336 }; | 338 }; |
337 // |kDevice1| should be attached as expected. | 339 // |kDeviceDCIM1| should be attached as expected. |
338 EXPECT_CALL(observer(), OnRemovableStorageAttached(GetDeviceId(kDevice1), | 340 EXPECT_CALL(observer(), |
339 GetDeviceName(kDevice1), | 341 OnRemovableStorageAttached(GetDeviceId(kDeviceDCIM1), |
340 test_path_a.value())) | 342 GetDeviceName(kDeviceDCIM1), |
| 343 test_path_a.value())) |
341 .InSequence(mock_sequence); | 344 .InSequence(mock_sequence); |
342 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); | 345 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); |
343 | 346 |
344 // This should do nothing, since |kMountPointB| does not have a DCIM dir. | 347 // This should do nothing, since |kDeviceFixed| is not removable. |
345 FilePath test_path_b = CreateMountPointWithoutDCIMDir(kMountPointB); | 348 FilePath test_path_b = CreateMountPointWithoutDCIMDir(kMountPointB); |
346 ASSERT_FALSE(test_path_b.empty()); | 349 ASSERT_FALSE(test_path_b.empty()); |
347 MtabTestData test_data2[] = { | 350 MtabTestData test_data2[] = { |
348 MtabTestData(kDevice2, test_path_b.value(), kValidFS), | 351 MtabTestData(kDeviceFixed, test_path_b.value(), kValidFS), |
349 }; | 352 }; |
350 AppendToMtabAndRunLoop(test_data2, arraysize(test_data2)); | 353 AppendToMtabAndRunLoop(test_data2, arraysize(test_data2)); |
351 | 354 |
352 // |kDevice1| should be detached as expected. | 355 // |kDeviceDCIM1| should be detached as expected. |
353 EXPECT_CALL(observer(), OnRemovableStorageDetached(GetDeviceId(kDevice1))) | 356 EXPECT_CALL(observer(), OnRemovableStorageDetached(GetDeviceId(kDeviceDCIM1))) |
| 357 .InSequence(mock_sequence); |
| 358 WriteEmptyMtabAndRunLoop(); |
| 359 |
| 360 // |kDeviceNoDCIM| should be attached as expected. |
| 361 EXPECT_CALL(observer(), |
| 362 OnRemovableStorageAttached(GetDeviceId(kDeviceNoDCIM), |
| 363 GetDeviceName(kDeviceNoDCIM), |
| 364 test_path_b.value())) |
| 365 .InSequence(mock_sequence); |
| 366 MtabTestData test_data3[] = { |
| 367 MtabTestData(kDeviceNoDCIM, test_path_b.value(), kValidFS), |
| 368 }; |
| 369 AppendToMtabAndRunLoop(test_data3, arraysize(test_data3)); |
| 370 |
| 371 // |kDeviceNoDCIM| should be detached as expected. |
| 372 EXPECT_CALL(observer(), |
| 373 OnRemovableStorageDetached(GetDeviceId(kDeviceNoDCIM))) |
354 .InSequence(mock_sequence); | 374 .InSequence(mock_sequence); |
355 WriteEmptyMtabAndRunLoop(); | 375 WriteEmptyMtabAndRunLoop(); |
356 } | 376 } |
357 | 377 |
358 // More complicated test case with multiple devices on multiple mount points. | 378 // More complicated test case with multiple devices on multiple mount points. |
359 TEST_F(RemovableDeviceNotificationLinuxTest, SwapMountPoints) { | 379 TEST_F(RemovableDeviceNotificationLinuxTest, SwapMountPoints) { |
360 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); | 380 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); |
361 FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB); | 381 FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB); |
362 ASSERT_FALSE(test_path_a.empty()); | 382 ASSERT_FALSE(test_path_a.empty()); |
363 ASSERT_FALSE(test_path_b.empty()); | 383 ASSERT_FALSE(test_path_b.empty()); |
364 | 384 |
365 // Attach two devices. | 385 // Attach two devices. (*'d mounts are those SystemMonitor knows about.) |
366 // kDevice1 -> kMountPointA | 386 // kDeviceDCIM1 -> kMountPointA * |
367 // kDevice2 -> kMountPointB | 387 // kDeviceDCIM2 -> kMountPointB * |
368 MtabTestData test_data1[] = { | 388 MtabTestData test_data1[] = { |
369 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 389 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
370 MtabTestData(kDevice2, test_path_b.value(), kValidFS), | 390 MtabTestData(kDeviceDCIM2, test_path_b.value(), kValidFS), |
371 }; | 391 }; |
372 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); | 392 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); |
373 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 393 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
374 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); | 394 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); |
375 | 395 |
376 // Detach two devices from old mount points and attach the devices at new | 396 // Detach two devices from old mount points and attach the devices at new |
377 // mount points. | 397 // mount points. |
378 // kDevice1 -> kMountPointB | 398 // kDeviceDCIM1 -> kMountPointB * |
379 // kDevice2 -> kMountPointA | 399 // kDeviceDCIM2 -> kMountPointA * |
380 MtabTestData test_data2[] = { | 400 MtabTestData test_data2[] = { |
381 MtabTestData(kDevice1, test_path_b.value(), kValidFS), | 401 MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS), |
382 MtabTestData(kDevice2, test_path_a.value(), kValidFS), | 402 MtabTestData(kDeviceDCIM2, test_path_a.value(), kValidFS), |
383 }; | 403 }; |
384 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); | 404 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); |
385 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(2); | 405 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(2); |
386 OverwriteMtabAndRunLoop(test_data2, arraysize(test_data2)); | 406 OverwriteMtabAndRunLoop(test_data2, arraysize(test_data2)); |
387 | 407 |
388 // Detach all devices. | 408 // Detach all devices. |
389 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 409 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
390 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(2); | 410 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(2); |
391 WriteEmptyMtabAndRunLoop(); | 411 WriteEmptyMtabAndRunLoop(); |
392 } | 412 } |
393 | 413 |
394 // More complicated test case with multiple devices on multiple mount points. | 414 // More complicated test case with multiple devices on multiple mount points. |
395 TEST_F(RemovableDeviceNotificationLinuxTest, MultiDevicesMultiMountPoints) { | 415 TEST_F(RemovableDeviceNotificationLinuxTest, MultiDevicesMultiMountPoints) { |
396 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); | 416 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); |
397 FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB); | 417 FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB); |
398 ASSERT_FALSE(test_path_a.empty()); | 418 ASSERT_FALSE(test_path_a.empty()); |
399 ASSERT_FALSE(test_path_b.empty()); | 419 ASSERT_FALSE(test_path_b.empty()); |
400 | 420 |
401 // Attach two devices. | 421 // Attach two devices. (*'d mounts are those SystemMonitor knows about.) |
402 // kDevice1 -> kMountPointA * | 422 // kDeviceDCIM1 -> kMountPointA * |
403 // kDevice2 -> kMountPointB * | 423 // kDeviceDCIM2 -> kMountPointB * |
404 MtabTestData test_data1[] = { | 424 MtabTestData test_data1[] = { |
405 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 425 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
406 MtabTestData(kDevice2, test_path_b.value(), kValidFS), | 426 MtabTestData(kDeviceDCIM2, test_path_b.value(), kValidFS), |
407 }; | 427 }; |
408 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); | 428 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); |
409 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 429 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
410 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); | 430 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); |
411 | 431 |
412 // Attach |kDevice1| to |kMountPointB|. | 432 // Attach |kDeviceDCIM1| to |kMountPointB|. |
413 // |kDevice2| is inaccessible, so it is detached. |kDevice1| has been | 433 // |kDeviceDCIM2| is inaccessible, so it is detached. |kDeviceDCIM1| has been |
414 // attached at |kMountPointB|, but is still accessible from |kMountPointA|. | 434 // attached at |kMountPointB|, but is still accessible from |kMountPointA|. |
415 // kDevice1 -> kMountPointA * | 435 // kDeviceDCIM1 -> kMountPointA * |
416 // kDevice2 -> kMountPointB | 436 // kDeviceDCIM2 -> kMountPointB |
417 // kDevice1 -> kMountPointB | 437 // kDeviceDCIM1 -> kMountPointB |
418 MtabTestData test_data2[] = { | 438 MtabTestData test_data2[] = { |
419 MtabTestData(kDevice1, test_path_b.value(), kValidFS), | 439 MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS), |
420 }; | 440 }; |
421 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 441 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
422 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); | 442 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
423 AppendToMtabAndRunLoop(test_data2, arraysize(test_data2)); | 443 AppendToMtabAndRunLoop(test_data2, arraysize(test_data2)); |
424 | 444 |
425 // Detach |kDevice1| from |kMountPointA|, causing a detach and attach event. | 445 // Detach |kDeviceDCIM1| from |kMountPointA|, causing a detach and attach |
426 // kDevice2 -> kMountPointB | 446 // event. |
427 // kDevice1 -> kMountPointB * | 447 // kDeviceDCIM2 -> kMountPointB |
| 448 // kDeviceDCIM1 -> kMountPointB * |
428 MtabTestData test_data3[] = { | 449 MtabTestData test_data3[] = { |
429 MtabTestData(kDevice2, test_path_b.value(), kValidFS), | 450 MtabTestData(kDeviceDCIM2, test_path_b.value(), kValidFS), |
430 MtabTestData(kDevice1, test_path_b.value(), kValidFS), | 451 MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS), |
431 }; | 452 }; |
432 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); | 453 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); |
433 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); | 454 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
434 OverwriteMtabAndRunLoop(test_data3, arraysize(test_data3)); | 455 OverwriteMtabAndRunLoop(test_data3, arraysize(test_data3)); |
435 | 456 |
436 // Attach |kDevice1| to |kMountPointA|. | 457 // Attach |kDeviceDCIM1| to |kMountPointA|. |
437 // kDevice2 -> kMountPointB | 458 // kDeviceDCIM2 -> kMountPointB |
438 // kDevice1 -> kMountPointB * | 459 // kDeviceDCIM1 -> kMountPointB * |
439 // kDevice1 -> kMountPointA | 460 // kDeviceDCIM1 -> kMountPointA |
440 MtabTestData test_data4[] = { | 461 MtabTestData test_data4[] = { |
441 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 462 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
442 }; | 463 }; |
443 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 464 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
444 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 465 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
445 AppendToMtabAndRunLoop(test_data4, arraysize(test_data4)); | 466 AppendToMtabAndRunLoop(test_data4, arraysize(test_data4)); |
446 | 467 |
447 // Detach |kDevice1| from |kMountPointB|. | 468 // Detach |kDeviceDCIM1| from |kMountPointB|. |
448 // kDevice1 -> kMountPointA * | 469 // kDeviceDCIM1 -> kMountPointA * |
449 // kDevice2 -> kMountPointB * | 470 // kDeviceDCIM2 -> kMountPointB * |
450 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); | 471 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); |
451 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); | 472 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
452 OverwriteMtabAndRunLoop(test_data1, arraysize(test_data1)); | 473 OverwriteMtabAndRunLoop(test_data1, arraysize(test_data1)); |
453 | 474 |
454 // Detach all devices. | 475 // Detach all devices. |
455 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 476 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
456 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(2); | 477 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(2); |
457 WriteEmptyMtabAndRunLoop(); | 478 WriteEmptyMtabAndRunLoop(); |
458 } | 479 } |
459 | 480 |
460 TEST_F(RemovableDeviceNotificationLinuxTest, | 481 TEST_F(RemovableDeviceNotificationLinuxTest, |
461 MultipleMountPointsWithNonDCIMDevices) { | 482 MultipleMountPointsWithNonDCIMDevices) { |
462 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); | 483 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); |
463 FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB); | 484 FilePath test_path_b = CreateMountPointWithDCIMDir(kMountPointB); |
464 ASSERT_FALSE(test_path_a.empty()); | 485 ASSERT_FALSE(test_path_a.empty()); |
465 ASSERT_FALSE(test_path_b.empty()); | 486 ASSERT_FALSE(test_path_b.empty()); |
466 | 487 |
467 // Attach to one first. | 488 // Attach to one first. (*'d mounts are those SystemMonitor knows about.) |
468 // kDevice1 -> kMountPointA * | 489 // kDeviceDCIM1 -> kMountPointA * |
469 MtabTestData test_data1[] = { | 490 MtabTestData test_data1[] = { |
470 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 491 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
471 }; | 492 }; |
472 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); | 493 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); |
473 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 494 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
474 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); | 495 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); |
475 | 496 |
476 // Attach |kDevice1| to |kMountPointB|. | 497 // Attach |kDeviceDCIM1| to |kMountPointB|. |
477 // kDevice1 -> kMountPointA * | 498 // kDeviceDCIM1 -> kMountPointA * |
478 // kDevice1 -> kMountPointB | 499 // kDeviceDCIM1 -> kMountPointB |
479 MtabTestData test_data2[] = { | 500 MtabTestData test_data2[] = { |
480 MtabTestData(kDevice1, test_path_b.value(), kValidFS), | 501 MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS), |
481 }; | 502 }; |
482 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 503 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
483 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 504 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
484 AppendToMtabAndRunLoop(test_data2, arraysize(test_data2)); | 505 AppendToMtabAndRunLoop(test_data2, arraysize(test_data2)); |
485 | 506 |
486 // Attach |kDevice4| (a non-DCIM device) to |kMountPointA|. | 507 // Attach |kDeviceFixed| (a non-removable device) to |kMountPointA|. |
487 // kDevice1 -> kMountPointA | 508 // kDeviceDCIM1 -> kMountPointA |
488 // kDevice1 -> kMountPointB * | 509 // kDeviceDCIM1 -> kMountPointB * |
489 // kDevice4 -> kMountPointA | 510 // kDeviceFixed -> kMountPointA |
490 MtabTestData test_data3[] = { | 511 MtabTestData test_data3[] = { |
491 MtabTestData(kDevice4, test_path_a.value(), kValidFS), | 512 MtabTestData(kDeviceFixed, test_path_a.value(), kValidFS), |
492 }; | 513 }; |
493 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); | 514 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); |
494 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); | 515 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
495 RemoveDCIMDirFromMountPoint(kMountPointA); | 516 RemoveDCIMDirFromMountPoint(kMountPointA); |
496 AppendToMtabAndRunLoop(test_data3, arraysize(test_data3)); | 517 AppendToMtabAndRunLoop(test_data3, arraysize(test_data3)); |
497 | 518 |
498 // Detach |kDevice4|. | 519 // Detach |kDeviceFixed|. |
499 // kDevice1 -> kMountPointA | 520 // kDeviceDCIM1 -> kMountPointA |
500 // kDevice1 -> kMountPointB * | 521 // kDeviceDCIM1 -> kMountPointB * |
501 MtabTestData test_data4[] = { | 522 MtabTestData test_data4[] = { |
502 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 523 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
503 MtabTestData(kDevice1, test_path_b.value(), kValidFS), | 524 MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS), |
504 }; | 525 }; |
505 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 526 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
506 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 527 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
| 528 CreateMountPointWithDCIMDir(kMountPointA); |
507 OverwriteMtabAndRunLoop(test_data4, arraysize(test_data4)); | 529 OverwriteMtabAndRunLoop(test_data4, arraysize(test_data4)); |
508 | 530 |
509 // Detach |kDevice1| from |kMountPointA|. | 531 // Attach |kDeviceNoDCIM| (a non-DCIM device) to |kMountPointB|. |
510 // kDevice1 -> kMountPointB * | 532 // kDeviceDCIM1 -> kMountPointA * |
| 533 // kDeviceDCIM1 -> kMountPointB |
| 534 // kDeviceNoDCIM -> kMountPointB * |
| 535 MtabTestData test_data5[] = { |
| 536 MtabTestData(kDeviceNoDCIM, test_path_b.value(), kValidFS), |
| 537 }; |
| 538 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); |
| 539 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
| 540 file_util::Delete(test_path_b.Append("DCIM"), false); |
| 541 AppendToMtabAndRunLoop(test_data5, arraysize(test_data5)); |
| 542 |
| 543 // Detach |kDeviceNoDCIM|. |
| 544 // kDeviceDCIM1 -> kMountPointA * |
| 545 // kDeviceDCIM1 -> kMountPointB |
| 546 MtabTestData test_data6[] = { |
| 547 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
| 548 MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS), |
| 549 }; |
| 550 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
| 551 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
| 552 CreateMountPointWithDCIMDir(kMountPointB); |
| 553 OverwriteMtabAndRunLoop(test_data6, arraysize(test_data6)); |
| 554 |
| 555 // Detach |kDeviceDCIM1| from |kMountPointB|. |
| 556 // kDeviceDCIM1 -> kMountPointA * |
511 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 557 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
512 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 558 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
513 OverwriteMtabAndRunLoop(test_data2, arraysize(test_data2)); | 559 OverwriteMtabAndRunLoop(test_data1, arraysize(test_data1)); |
514 | 560 |
515 // Detach all devices. | 561 // Detach all devices. |
516 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 562 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
517 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); | 563 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
518 WriteEmptyMtabAndRunLoop(); | 564 WriteEmptyMtabAndRunLoop(); |
519 } | 565 } |
520 | 566 |
521 TEST_F(RemovableDeviceNotificationLinuxTest, MountLookUp) { | 567 TEST_F(RemovableDeviceNotificationLinuxTest, MountLookUp) { |
522 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); | 568 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); |
523 FilePath test_path_b = CreateMountPointWithoutDCIMDir(kMountPointB); | 569 FilePath test_path_b = CreateMountPointWithoutDCIMDir(kMountPointB); |
524 FilePath test_path_c = CreateMountPointWithoutDCIMDir(kMountPointC); | 570 FilePath test_path_c = CreateMountPointWithoutDCIMDir(kMountPointC); |
525 ASSERT_FALSE(test_path_a.empty()); | 571 ASSERT_FALSE(test_path_a.empty()); |
526 ASSERT_FALSE(test_path_b.empty()); | 572 ASSERT_FALSE(test_path_b.empty()); |
527 ASSERT_FALSE(test_path_c.empty()); | 573 ASSERT_FALSE(test_path_c.empty()); |
528 | 574 |
529 // Attach to one first. | 575 // Attach to one first. (*'d mounts are those SystemMonitor knows about.) |
530 // kDevice1 -> kMountPointA * | 576 // kDeviceDCIM1 -> kMountPointA * |
531 // kDevice4 -> kMountPointB | 577 // kDeviceNoDCIM -> kMountPointB * |
532 // kDevice5 -> kMountPointC | 578 // kDeviceFixed -> kMountPointC |
533 MtabTestData test_data1[] = { | 579 MtabTestData test_data1[] = { |
534 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 580 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
535 MtabTestData(kDevice4, test_path_b.value(), kValidFS), | 581 MtabTestData(kDeviceNoDCIM, test_path_b.value(), kValidFS), |
536 MtabTestData(kDevice5, test_path_c.value(), kValidFS), | 582 MtabTestData(kDeviceFixed, test_path_c.value(), kValidFS), |
537 }; | 583 }; |
538 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); | 584 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); |
539 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 585 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
540 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); | 586 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); |
541 | 587 |
542 EXPECT_EQ(test_path_a, | 588 EXPECT_EQ(test_path_a, |
543 notifier()->GetDeviceMountPoint(GetDeviceId(kDevice1))); | 589 notifier()->GetDeviceMountPoint(GetDeviceId(kDeviceDCIM1))); |
544 EXPECT_EQ(test_path_b, | 590 EXPECT_EQ(test_path_b, |
545 notifier()->GetDeviceMountPoint(GetDeviceId(kDevice4))); | 591 notifier()->GetDeviceMountPoint(GetDeviceId(kDeviceNoDCIM))); |
546 EXPECT_EQ(test_path_c, | 592 EXPECT_EQ(test_path_c, |
547 notifier()->GetDeviceMountPoint(GetDeviceId(kDevice5))); | 593 notifier()->GetDeviceMountPoint(GetDeviceId(kDeviceFixed))); |
548 EXPECT_EQ(FilePath(), | 594 EXPECT_EQ(FilePath(), |
549 notifier()->GetDeviceMountPoint(GetDeviceId(kInvalidDevice))); | 595 notifier()->GetDeviceMountPoint(GetDeviceId(kInvalidDevice))); |
550 | 596 |
551 // Make |kDevice1| mounted in multiple places. | 597 // Make |kDeviceDCIM1| mounted in multiple places. |
552 // kDevice1 -> kMountPointA * | 598 // kDeviceDCIM1 -> kMountPointA * |
553 // kDevice1 -> kMountPointB | 599 // kDeviceDCIM1 -> kMountPointB |
554 // kDevice1 -> kMountPointC | 600 // kDeviceDCIM1 -> kMountPointC |
555 MtabTestData test_data2[] = { | 601 MtabTestData test_data2[] = { |
556 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 602 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
557 MtabTestData(kDevice1, test_path_b.value(), kValidFS), | 603 MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS), |
558 MtabTestData(kDevice1, test_path_c.value(), kValidFS), | 604 MtabTestData(kDeviceDCIM1, test_path_c.value(), kValidFS), |
559 }; | 605 }; |
560 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 606 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
561 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 607 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
562 // Add DCIM dirs. | 608 // Add DCIM dirs. |
563 CreateMountPointWithDCIMDir(kMountPointB); | 609 CreateMountPointWithDCIMDir(kMountPointB); |
564 CreateMountPointWithDCIMDir(kMountPointC); | 610 CreateMountPointWithDCIMDir(kMountPointC); |
565 OverwriteMtabAndRunLoop(test_data2, arraysize(test_data2)); | 611 OverwriteMtabAndRunLoop(test_data2, arraysize(test_data2)); |
566 | 612 |
567 EXPECT_EQ(test_path_a, | 613 EXPECT_EQ(test_path_a, |
568 notifier()->GetDeviceMountPoint(GetDeviceId(kDevice1))); | 614 notifier()->GetDeviceMountPoint(GetDeviceId(kDeviceDCIM1))); |
569 | 615 |
570 // Unmount |kDevice1| from |kMountPointA|. | 616 // Unmount |kDeviceDCIM1| from |kMountPointA|. |
571 // kDevice1 -> kMountPointB * | 617 // kDeviceDCIM1 -> kMountPointB * |
572 // kDevice1 -> kMountPointC | 618 // kDeviceDCIM1 -> kMountPointC |
573 // Either |kMountPointB| or |kMountPointC| is a valid new default, but | 619 // Either |kMountPointB| or |kMountPointC| is a valid new default, but |
574 // it turns out that it will be B. | 620 // it turns out that it will be B. |
575 MtabTestData test_data3[] = { | 621 MtabTestData test_data3[] = { |
576 MtabTestData(kDevice1, test_path_b.value(), kValidFS), | 622 MtabTestData(kDeviceDCIM1, test_path_b.value(), kValidFS), |
577 }; | 623 }; |
578 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); | 624 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); |
579 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); | 625 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
580 OverwriteMtabAndRunLoop(test_data3, arraysize(test_data3)); | 626 OverwriteMtabAndRunLoop(test_data3, arraysize(test_data3)); |
581 | 627 |
582 EXPECT_EQ(test_path_b, | 628 EXPECT_EQ(test_path_b, |
583 notifier()->GetDeviceMountPoint(GetDeviceId(kDevice1))); | 629 notifier()->GetDeviceMountPoint(GetDeviceId(kDeviceDCIM1))); |
584 | 630 |
585 // Mount a non-removable device in multiple places. | 631 // Mount a non-removable device in multiple places. |
586 // kDevice5 -> kMountPointA | 632 // kDeviceFixed -> kMountPointA |
587 // kDevice5 -> kMountPointB | 633 // kDeviceFixed -> kMountPointB |
588 // kDevice5 -> kMountPointC | 634 // kDeviceFixed -> kMountPointC |
589 MtabTestData test_data4[] = { | 635 MtabTestData test_data4[] = { |
590 MtabTestData(kDevice5, test_path_a.value(), kValidFS), | 636 MtabTestData(kDeviceFixed, test_path_a.value(), kValidFS), |
591 MtabTestData(kDevice5, test_path_b.value(), kValidFS), | 637 MtabTestData(kDeviceFixed, test_path_b.value(), kValidFS), |
592 MtabTestData(kDevice5, test_path_c.value(), kValidFS), | 638 MtabTestData(kDeviceFixed, test_path_c.value(), kValidFS), |
593 }; | 639 }; |
594 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 640 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
595 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); | 641 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
596 // Remove DCIM dirs. | 642 // Remove DCIM dirs. |
597 RemoveDCIMDirFromMountPoint(kMountPointA); | 643 RemoveDCIMDirFromMountPoint(kMountPointA); |
598 RemoveDCIMDirFromMountPoint(kMountPointB); | 644 RemoveDCIMDirFromMountPoint(kMountPointB); |
599 RemoveDCIMDirFromMountPoint(kMountPointC); | 645 RemoveDCIMDirFromMountPoint(kMountPointC); |
600 OverwriteMtabAndRunLoop(test_data4, arraysize(test_data4)); | 646 OverwriteMtabAndRunLoop(test_data4, arraysize(test_data4)); |
601 | 647 |
602 // Any of the mount points would be valid. | 648 // Any of the mount points would be valid. |
603 EXPECT_EQ(test_path_a.value(), | 649 EXPECT_EQ(test_path_a.value(), |
604 notifier()->GetDeviceMountPoint(GetDeviceId(kDevice5)).value()); | 650 notifier()->GetDeviceMountPoint(GetDeviceId(kDeviceFixed)).value()); |
605 } | 651 } |
606 | 652 |
607 TEST_F(RemovableDeviceNotificationLinuxTest, DeviceLookUp) { | 653 TEST_F(RemovableDeviceNotificationLinuxTest, DeviceLookUp) { |
608 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); | 654 FilePath test_path_a = CreateMountPointWithDCIMDir(kMountPointA); |
609 FilePath test_path_b = CreateMountPointWithoutDCIMDir(kMountPointB); | 655 FilePath test_path_b = CreateMountPointWithoutDCIMDir(kMountPointB); |
610 FilePath test_path_c = CreateMountPointWithoutDCIMDir(kMountPointC); | 656 FilePath test_path_c = CreateMountPointWithoutDCIMDir(kMountPointC); |
611 ASSERT_FALSE(test_path_a.empty()); | 657 ASSERT_FALSE(test_path_a.empty()); |
612 ASSERT_FALSE(test_path_b.empty()); | 658 ASSERT_FALSE(test_path_b.empty()); |
613 ASSERT_FALSE(test_path_c.empty()); | 659 ASSERT_FALSE(test_path_c.empty()); |
614 | 660 |
615 // Attach to one first. | 661 // Attach to one first. (*'d mounts are those SystemMonitor knows about.) |
616 // kDevice1 -> kMountPointA * | 662 // kDeviceDCIM1 -> kMountPointA * |
617 // kDevice4 -> kMountPointB | 663 // kDeviceNoDCIM -> kMountPointB * |
618 // kDevice5 -> kMountPointC | 664 // kDeviceFixed -> kMountPointC |
619 MtabTestData test_data1[] = { | 665 MtabTestData test_data1[] = { |
620 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 666 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
621 MtabTestData(kDevice4, test_path_b.value(), kValidFS), | 667 MtabTestData(kDeviceNoDCIM, test_path_b.value(), kValidFS), |
622 MtabTestData(kDevice5, test_path_c.value(), kValidFS), | 668 MtabTestData(kDeviceFixed, test_path_c.value(), kValidFS), |
623 }; | 669 }; |
624 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(1); | 670 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(2); |
625 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 671 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); |
626 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); | 672 AppendToMtabAndRunLoop(test_data1, arraysize(test_data1)); |
627 | 673 |
628 FilePath mount_point; | 674 FilePath mount_point; |
629 EXPECT_EQ(GetDeviceId(kDevice1), | 675 EXPECT_EQ(GetDeviceId(kDeviceDCIM1), |
630 notifier()->GetDeviceIdForPath(test_path_a, &mount_point)); | 676 notifier()->GetDeviceIdForPath(test_path_a, &mount_point)); |
631 EXPECT_EQ(test_path_a.value(), mount_point.value()); | 677 EXPECT_EQ(test_path_a.value(), mount_point.value()); |
632 EXPECT_EQ(GetDeviceId(kDevice4), | 678 EXPECT_EQ(GetDeviceId(kDeviceNoDCIM), |
633 notifier()->GetDeviceIdForPath(test_path_b, &mount_point)); | 679 notifier()->GetDeviceIdForPath(test_path_b, &mount_point)); |
634 EXPECT_EQ(test_path_b.value(), mount_point.value()); | 680 EXPECT_EQ(test_path_b.value(), mount_point.value()); |
635 EXPECT_EQ(GetDeviceId(kDevice5), | 681 EXPECT_EQ(GetDeviceId(kDeviceFixed), |
636 notifier()->GetDeviceIdForPath(test_path_c, NULL)); | 682 notifier()->GetDeviceIdForPath(test_path_c, NULL)); |
637 | 683 |
638 // An invalid path. | 684 // An invalid path. |
639 EXPECT_EQ(std::string(), | 685 EXPECT_EQ(std::string(), |
640 notifier()->GetDeviceIdForPath(FilePath(kInvalidPath), NULL)); | 686 notifier()->GetDeviceIdForPath(FilePath(kInvalidPath), NULL)); |
641 | 687 |
642 // Test filling in of the mount point. | 688 // Test filling in of the mount point. |
643 EXPECT_EQ(GetDeviceId(kDevice1), notifier()->GetDeviceIdForPath( | 689 EXPECT_EQ(GetDeviceId(kDeviceDCIM1), notifier()->GetDeviceIdForPath( |
644 test_path_a.Append("some/other/path"), &mount_point)); | 690 test_path_a.Append("some/other/path"), &mount_point)); |
645 EXPECT_EQ(test_path_a.value(), mount_point.value()); | 691 EXPECT_EQ(test_path_a.value(), mount_point.value()); |
646 | 692 |
647 // One device attached at multiple points. | 693 // One device attached at multiple points. |
648 // kDevice1 -> kMountPointA * | 694 // kDeviceDCIM1 -> kMountPointA * |
649 // kDevice5 -> kMountPointB | 695 // kDeviceFixed -> kMountPointB |
650 // kDevice5 -> kMountPointC | 696 // kDeviceFixed -> kMountPointC |
651 MtabTestData test_data2[] = { | 697 MtabTestData test_data2[] = { |
652 MtabTestData(kDevice1, test_path_a.value(), kValidFS), | 698 MtabTestData(kDeviceDCIM1, test_path_a.value(), kValidFS), |
653 MtabTestData(kDevice5, test_path_b.value(), kValidFS), | 699 MtabTestData(kDeviceFixed, test_path_b.value(), kValidFS), |
654 MtabTestData(kDevice5, test_path_c.value(), kValidFS), | 700 MtabTestData(kDeviceFixed, test_path_c.value(), kValidFS), |
655 }; | 701 }; |
656 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); | 702 EXPECT_CALL(observer(), OnRemovableStorageAttached(_, _, _)).Times(0); |
657 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(0); | 703 EXPECT_CALL(observer(), OnRemovableStorageDetached(_)).Times(1); |
658 AppendToMtabAndRunLoop(test_data2, arraysize(test_data2)); | 704 AppendToMtabAndRunLoop(test_data2, arraysize(test_data2)); |
659 | 705 |
660 EXPECT_EQ(GetDeviceId(kDevice1), | 706 EXPECT_EQ(GetDeviceId(kDeviceDCIM1), |
661 notifier()->GetDeviceIdForPath(test_path_a, NULL)); | 707 notifier()->GetDeviceIdForPath(test_path_a, NULL)); |
662 EXPECT_EQ(GetDeviceId(kDevice5), | 708 EXPECT_EQ(GetDeviceId(kDeviceFixed), |
663 notifier()->GetDeviceIdForPath(test_path_b, NULL)); | 709 notifier()->GetDeviceIdForPath(test_path_b, NULL)); |
664 EXPECT_EQ(GetDeviceId(kDevice5), | 710 EXPECT_EQ(GetDeviceId(kDeviceFixed), |
665 notifier()->GetDeviceIdForPath(test_path_c, NULL)); | 711 notifier()->GetDeviceIdForPath(test_path_c, NULL)); |
666 } | 712 } |
667 | 713 |
668 } // namespace | 714 } // namespace |
669 | 715 |
670 } // namespace chrome | 716 } // namespace chrome |
OLD | NEW |