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

Side by Side Diff: chrome/browser/media_gallery/removable_device_notifications_linux_unittest.cc

Issue 10880078: Linux removable device notifications: notify about non-dcim devices. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address comments Created 8 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/media_gallery/removable_device_notifications_linux.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/media_gallery/removable_device_notifications_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698