| Index: chrome/browser/storage_monitor/removable_device_notifications_chromeos_unittest.cc | 
| diff --git a/chrome/browser/storage_monitor/removable_device_notifications_chromeos_unittest.cc b/chrome/browser/storage_monitor/removable_device_notifications_chromeos_unittest.cc | 
| deleted file mode 100644 | 
| index 58715c3a1d04c397668e9b176c35611d56817e30..0000000000000000000000000000000000000000 | 
| --- a/chrome/browser/storage_monitor/removable_device_notifications_chromeos_unittest.cc | 
| +++ /dev/null | 
| @@ -1,398 +0,0 @@ | 
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. | 
| -// Use of this source code is governed by a BSD-style license that can be | 
| -// found in the LICENSE file. | 
| - | 
| -// chromeos::RemovableDeviceNotificationsCros unit tests. | 
| - | 
| -#include "chrome/browser/storage_monitor/removable_device_notifications_chromeos.h" | 
| - | 
| -#include "base/file_util.h" | 
| -#include "base/files/scoped_temp_dir.h" | 
| -#include "base/logging.h" | 
| -#include "base/memory/scoped_ptr.h" | 
| -#include "base/message_loop.h" | 
| -#include "base/utf_string_conversions.h" | 
| -#include "chrome/browser/storage_monitor/media_storage_util.h" | 
| -#include "chrome/browser/storage_monitor/mock_removable_storage_observer.h" | 
| -#include "chrome/browser/storage_monitor/removable_device_constants.h" | 
| -#include "chromeos/disks/mock_disk_mount_manager.h" | 
| -#include "content/public/test/test_browser_thread.h" | 
| -#include "testing/gtest/include/gtest/gtest.h" | 
| - | 
| -namespace chromeos { | 
| - | 
| -namespace { | 
| - | 
| -using content::BrowserThread; | 
| -using disks::DiskMountManager; | 
| -using testing::_; | 
| - | 
| -const char kDeviceNameWithManufacturerDetails[] = "110 KB (CompanyA, Z101)"; | 
| -const char kDevice1[] = "/dev/d1"; | 
| -const char kDevice1Name[] = "d1"; | 
| -const char kDevice1NameWithSizeInfo[] = "110 KB d1"; | 
| -const char kDevice2[] = "/dev/disk/d2"; | 
| -const char kDevice2Name[] = "d2"; | 
| -const char kDevice2NameWithSizeInfo[] = "207 KB d2"; | 
| -const char kEmptyDeviceLabel[] = ""; | 
| -const char kMountPointA[] = "mnt_a"; | 
| -const char kMountPointB[] = "mnt_b"; | 
| -const char kSDCardDeviceName1[] = "8.6 MB Amy_SD"; | 
| -const char kSDCardDeviceName2[] = "8.6 MB SD Card"; | 
| -const char kSDCardMountPoint1[] = "media/removable/Amy_SD"; | 
| -const char kSDCardMountPoint2[] = "media/removable/SD Card"; | 
| -const char kProductName[] = "Z101"; | 
| -const char kUniqueId1[] = "FFFF-FFFF"; | 
| -const char kUniqueId2[] = "FFFF-FF0F"; | 
| -const char kVendorName[] = "CompanyA"; | 
| - | 
| -uint64 kDevice1SizeInBytes = 113048; | 
| -uint64 kDevice2SizeInBytes = 212312; | 
| -uint64 kSDCardSizeInBytes = 9000000; | 
| - | 
| -std::string GetDCIMDeviceId(const std::string& unique_id) { | 
| -  return chrome::MediaStorageUtil::MakeDeviceId( | 
| -      chrome::MediaStorageUtil::REMOVABLE_MASS_STORAGE_WITH_DCIM, | 
| -      chrome::kFSUniqueIdPrefix + unique_id); | 
| -} | 
| - | 
| -// Wrapper class to test RemovableDeviceNotificationsCros. | 
| -class RemovableDeviceNotificationsCrosTest : public testing::Test { | 
| - public: | 
| -  RemovableDeviceNotificationsCrosTest(); | 
| -  virtual ~RemovableDeviceNotificationsCrosTest(); | 
| - | 
| - protected: | 
| -  // testing::Test: | 
| -  virtual void SetUp() OVERRIDE; | 
| -  virtual void TearDown() OVERRIDE; | 
| - | 
| -  void MountDevice(MountError error_code, | 
| -                   const DiskMountManager::MountPointInfo& mount_info, | 
| -                   const std::string& unique_id, | 
| -                   const std::string& device_label, | 
| -                   const std::string& vendor_name, | 
| -                   const std::string& product_name, | 
| -                   DeviceType device_type, | 
| -                   uint64 device_size_in_bytes); | 
| - | 
| -  void UnmountDevice(MountError error_code, | 
| -                     const DiskMountManager::MountPointInfo& mount_info); | 
| - | 
| -  uint64 GetDeviceStorageSize(const std::string& device_location); | 
| - | 
| -  // Create a directory named |dir| relative to the test directory. | 
| -  // Set |with_dcim_dir| to true if the created directory will have a "DCIM" | 
| -  // subdirectory. | 
| -  // Returns the full path to the created directory on success, or an empty | 
| -  // path on failure. | 
| -  base::FilePath CreateMountPoint(const std::string& dir, bool with_dcim_dir); | 
| - | 
| -  static void PostQuitToUIThread(); | 
| -  static void WaitForFileThread(); | 
| - | 
| -  chrome::MockRemovableStorageObserver& observer() { | 
| -    return *mock_storage_observer_; | 
| -  } | 
| - | 
| - private: | 
| -  // The message loops and threads to run tests on. | 
| -  MessageLoop ui_loop_; | 
| -  content::TestBrowserThread ui_thread_; | 
| -  content::TestBrowserThread file_thread_; | 
| - | 
| -  // Temporary directory for created test data. | 
| -  base::ScopedTempDir scoped_temp_dir_; | 
| - | 
| -  // Objects that talks with RemovableDeviceNotificationsCros. | 
| -  scoped_ptr<chrome::MockRemovableStorageObserver> mock_storage_observer_; | 
| -  // Owned by DiskMountManager. | 
| -  disks::MockDiskMountManager* disk_mount_manager_mock_; | 
| - | 
| -  scoped_refptr<RemovableDeviceNotificationsCros> notifications_; | 
| - | 
| -  DISALLOW_COPY_AND_ASSIGN(RemovableDeviceNotificationsCrosTest); | 
| -}; | 
| - | 
| -RemovableDeviceNotificationsCrosTest::RemovableDeviceNotificationsCrosTest() | 
| -    : ui_thread_(BrowserThread::UI, &ui_loop_), | 
| -      file_thread_(BrowserThread::FILE) { | 
| -} | 
| - | 
| -RemovableDeviceNotificationsCrosTest::~RemovableDeviceNotificationsCrosTest() { | 
| -} | 
| - | 
| -void RemovableDeviceNotificationsCrosTest::SetUp() { | 
| -  ASSERT_TRUE(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 
| -  ASSERT_TRUE(scoped_temp_dir_.CreateUniqueTempDir()); | 
| -  file_thread_.Start(); | 
| -  disk_mount_manager_mock_ = new disks::MockDiskMountManager(); | 
| -  DiskMountManager::InitializeForTesting(disk_mount_manager_mock_); | 
| -  disk_mount_manager_mock_->SetupDefaultReplies(); | 
| - | 
| -  mock_storage_observer_.reset(new chrome::MockRemovableStorageObserver); | 
| - | 
| -  // Initialize the test subject. | 
| -  notifications_ = new RemovableDeviceNotificationsCros(); | 
| -  notifications_->AddObserver(mock_storage_observer_.get()); | 
| -} | 
| - | 
| -void RemovableDeviceNotificationsCrosTest::TearDown() { | 
| -  notifications_->RemoveObserver(mock_storage_observer_.get()); | 
| -  notifications_ = NULL; | 
| - | 
| -  disk_mount_manager_mock_ = NULL; | 
| -  DiskMountManager::Shutdown(); | 
| -  WaitForFileThread(); | 
| -} | 
| - | 
| -void RemovableDeviceNotificationsCrosTest::MountDevice( | 
| -    MountError error_code, | 
| -    const DiskMountManager::MountPointInfo& mount_info, | 
| -    const std::string& unique_id, | 
| -    const std::string& device_label, | 
| -    const std::string& vendor_name, | 
| -    const std::string& product_name, | 
| -    DeviceType device_type, | 
| -    uint64 device_size_in_bytes) { | 
| -  if (error_code == MOUNT_ERROR_NONE) { | 
| -    disk_mount_manager_mock_->CreateDiskEntryForMountDevice( | 
| -        mount_info, unique_id, device_label, vendor_name, product_name, | 
| -        device_type, device_size_in_bytes); | 
| -  } | 
| -  notifications_->OnMountEvent(disks::DiskMountManager::MOUNTING, | 
| -                               error_code, | 
| -                               mount_info); | 
| -  WaitForFileThread(); | 
| -} | 
| - | 
| -void RemovableDeviceNotificationsCrosTest::UnmountDevice( | 
| -    MountError error_code, | 
| -    const DiskMountManager::MountPointInfo& mount_info) { | 
| -  notifications_->OnMountEvent(disks::DiskMountManager::UNMOUNTING, | 
| -                               error_code, | 
| -                               mount_info); | 
| -  if (error_code == MOUNT_ERROR_NONE) | 
| -    disk_mount_manager_mock_->RemoveDiskEntryForMountDevice(mount_info); | 
| -  WaitForFileThread(); | 
| -} | 
| - | 
| -uint64 RemovableDeviceNotificationsCrosTest::GetDeviceStorageSize( | 
| -    const std::string& device_location) { | 
| -  return notifications_->GetStorageSize(device_location); | 
| -} | 
| - | 
| -base::FilePath RemovableDeviceNotificationsCrosTest::CreateMountPoint( | 
| -    const std::string& dir, bool with_dcim_dir) { | 
| -  base::FilePath return_path(scoped_temp_dir_.path()); | 
| -  return_path = return_path.AppendASCII(dir); | 
| -  base::FilePath path(return_path); | 
| -  if (with_dcim_dir) | 
| -    path = path.Append(chrome::kDCIMDirectoryName); | 
| -  if (!file_util::CreateDirectory(path)) | 
| -    return base::FilePath(); | 
| -  return return_path; | 
| -} | 
| - | 
| -// static | 
| -void RemovableDeviceNotificationsCrosTest::PostQuitToUIThread() { | 
| -  BrowserThread::PostTask(BrowserThread::UI, FROM_HERE, | 
| -                          MessageLoop::QuitClosure()); | 
| -} | 
| - | 
| -// static | 
| -void RemovableDeviceNotificationsCrosTest::WaitForFileThread() { | 
| -  BrowserThread::PostTask(BrowserThread::FILE, FROM_HERE, | 
| -                          base::Bind(&PostQuitToUIThread)); | 
| -  MessageLoop::current()->Run(); | 
| -} | 
| - | 
| -// Simple test case where we attach and detach a media device. | 
| -TEST_F(RemovableDeviceNotificationsCrosTest, BasicAttachDetach) { | 
| -  base::FilePath mount_path1 = CreateMountPoint(kMountPointA, true); | 
| -  ASSERT_FALSE(mount_path1.empty()); | 
| -  DiskMountManager::MountPointInfo mount_info(kDevice1, | 
| -                                              mount_path1.value(), | 
| -                                              MOUNT_TYPE_DEVICE, | 
| -                                              disks::MOUNT_CONDITION_NONE); | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info, kUniqueId1, kDevice1Name, | 
| -              kVendorName, kProductName, DEVICE_TYPE_USB, kDevice1SizeInBytes); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(0, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId1), observer().last_attached().device_id); | 
| -  EXPECT_EQ(ASCIIToUTF16(kDevice1NameWithSizeInfo), | 
| -            observer().last_attached().name); | 
| -  EXPECT_EQ(mount_path1.value(), observer().last_attached().location); | 
| - | 
| -  UnmountDevice(MOUNT_ERROR_NONE, mount_info); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(1, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId1), observer().last_detached().device_id); | 
| - | 
| -  base::FilePath mount_path2 = CreateMountPoint(kMountPointB, true); | 
| -  ASSERT_FALSE(mount_path2.empty()); | 
| -  DiskMountManager::MountPointInfo mount_info2(kDevice2, | 
| -                                               mount_path2.value(), | 
| -                                               MOUNT_TYPE_DEVICE, | 
| -                                               disks::MOUNT_CONDITION_NONE); | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info2, kUniqueId2, kDevice2Name, | 
| -              kVendorName, kProductName, DEVICE_TYPE_USB, kDevice2SizeInBytes); | 
| -  EXPECT_EQ(2, observer().attach_calls()); | 
| -  EXPECT_EQ(1, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId2), observer().last_attached().device_id); | 
| -  EXPECT_EQ(ASCIIToUTF16(kDevice2NameWithSizeInfo), | 
| -            observer().last_attached().name); | 
| -  EXPECT_EQ(mount_path2.value(), observer().last_attached().location); | 
| - | 
| -  UnmountDevice(MOUNT_ERROR_NONE, mount_info2); | 
| -  EXPECT_EQ(2, observer().attach_calls()); | 
| -  EXPECT_EQ(2, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId2), observer().last_detached().device_id); | 
| -} | 
| - | 
| -// Removable mass storage devices with no dcim folder are also recognized. | 
| -TEST_F(RemovableDeviceNotificationsCrosTest, NoDCIM) { | 
| -  testing::Sequence mock_sequence; | 
| -  base::FilePath mount_path = CreateMountPoint(kMountPointA, false); | 
| -  const std::string kUniqueId = "FFFF-FFFF"; | 
| -  ASSERT_FALSE(mount_path.empty()); | 
| -  DiskMountManager::MountPointInfo mount_info(kDevice1, | 
| -                                              mount_path.value(), | 
| -                                              MOUNT_TYPE_DEVICE, | 
| -                                              disks::MOUNT_CONDITION_NONE); | 
| -  const std::string device_id = chrome::MediaStorageUtil::MakeDeviceId( | 
| -      chrome::MediaStorageUtil::REMOVABLE_MASS_STORAGE_NO_DCIM, | 
| -      chrome::kFSUniqueIdPrefix + kUniqueId); | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info, kUniqueId, kDevice1Name, | 
| -              kVendorName, kProductName, DEVICE_TYPE_USB, kDevice1SizeInBytes); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(0, observer().detach_calls()); | 
| -  EXPECT_EQ(device_id, observer().last_attached().device_id); | 
| -  EXPECT_EQ(ASCIIToUTF16(kDevice1NameWithSizeInfo), | 
| -            observer().last_attached().name); | 
| -  EXPECT_EQ(mount_path.value(), observer().last_attached().location); | 
| -} | 
| - | 
| -// Non device mounts and mount errors are ignored. | 
| -TEST_F(RemovableDeviceNotificationsCrosTest, Ignore) { | 
| -  testing::Sequence mock_sequence; | 
| -  base::FilePath mount_path = CreateMountPoint(kMountPointA, true); | 
| -  const std::string kUniqueId = "FFFF-FFFF"; | 
| -  ASSERT_FALSE(mount_path.empty()); | 
| - | 
| -  // Mount error. | 
| -  DiskMountManager::MountPointInfo mount_info(kDevice1, | 
| -                                              mount_path.value(), | 
| -                                              MOUNT_TYPE_DEVICE, | 
| -                                              disks::MOUNT_CONDITION_NONE); | 
| -  MountDevice(MOUNT_ERROR_UNKNOWN, mount_info, kUniqueId, kDevice1Name, | 
| -              kVendorName, kProductName, DEVICE_TYPE_USB, kDevice1SizeInBytes); | 
| -  EXPECT_EQ(0, observer().attach_calls()); | 
| -  EXPECT_EQ(0, observer().detach_calls()); | 
| - | 
| -  // Not a device | 
| -  mount_info.mount_type = MOUNT_TYPE_ARCHIVE; | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info, kUniqueId, kDevice1Name, | 
| -              kVendorName, kProductName, DEVICE_TYPE_USB, kDevice1SizeInBytes); | 
| -  EXPECT_EQ(0, observer().attach_calls()); | 
| -  EXPECT_EQ(0, observer().detach_calls()); | 
| - | 
| -  // Unsupported file system. | 
| -  mount_info.mount_type = MOUNT_TYPE_DEVICE; | 
| -  mount_info.mount_condition = disks::MOUNT_CONDITION_UNSUPPORTED_FILESYSTEM; | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info, kUniqueId, kDevice1Name, | 
| -              kVendorName, kProductName, DEVICE_TYPE_USB, kDevice1SizeInBytes); | 
| -  EXPECT_EQ(0, observer().attach_calls()); | 
| -  EXPECT_EQ(0, observer().detach_calls()); | 
| -} | 
| - | 
| -TEST_F(RemovableDeviceNotificationsCrosTest, SDCardAttachDetach) { | 
| -  base::FilePath mount_path1 = CreateMountPoint(kSDCardMountPoint1, true); | 
| -  ASSERT_FALSE(mount_path1.empty()); | 
| -  DiskMountManager::MountPointInfo mount_info1(kSDCardDeviceName1, | 
| -                                               mount_path1.value(), | 
| -                                               MOUNT_TYPE_DEVICE, | 
| -                                               disks::MOUNT_CONDITION_NONE); | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info1, kUniqueId2, kSDCardDeviceName1, | 
| -              kVendorName, kProductName, DEVICE_TYPE_SD, kSDCardSizeInBytes); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(0, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId2), observer().last_attached().device_id); | 
| -  EXPECT_EQ(ASCIIToUTF16(kSDCardDeviceName1), | 
| -            observer().last_attached().name); | 
| -  EXPECT_EQ(mount_path1.value(), observer().last_attached().location); | 
| - | 
| -  UnmountDevice(MOUNT_ERROR_NONE, mount_info1); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(1, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId2), observer().last_detached().device_id); | 
| - | 
| -  base::FilePath mount_path2 = CreateMountPoint(kSDCardMountPoint2, true); | 
| -  ASSERT_FALSE(mount_path2.empty()); | 
| -  DiskMountManager::MountPointInfo mount_info2(kSDCardDeviceName2, | 
| -                                               mount_path2.value(), | 
| -                                               MOUNT_TYPE_DEVICE, | 
| -                                               disks::MOUNT_CONDITION_NONE); | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info2, kUniqueId2, kSDCardDeviceName2, | 
| -              kVendorName, kProductName, DEVICE_TYPE_SD, kSDCardSizeInBytes); | 
| -  EXPECT_EQ(2, observer().attach_calls()); | 
| -  EXPECT_EQ(1, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId2), observer().last_attached().device_id); | 
| -  EXPECT_EQ(ASCIIToUTF16(kSDCardDeviceName2), | 
| -            observer().last_attached().name); | 
| -  EXPECT_EQ(mount_path2.value(), observer().last_attached().location); | 
| - | 
| -  UnmountDevice(MOUNT_ERROR_NONE, mount_info2); | 
| -  EXPECT_EQ(2, observer().attach_calls()); | 
| -  EXPECT_EQ(2, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId2), observer().last_detached().device_id); | 
| -} | 
| - | 
| -TEST_F(RemovableDeviceNotificationsCrosTest, AttachDeviceWithEmptyLabel) { | 
| -  base::FilePath mount_path1 = CreateMountPoint(kMountPointA, true); | 
| -  ASSERT_FALSE(mount_path1.empty()); | 
| -  DiskMountManager::MountPointInfo mount_info(kEmptyDeviceLabel, | 
| -                                              mount_path1.value(), | 
| -                                              MOUNT_TYPE_DEVICE, | 
| -                                              disks::MOUNT_CONDITION_NONE); | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info, kUniqueId1, kEmptyDeviceLabel, | 
| -              kVendorName, kProductName, DEVICE_TYPE_USB, kDevice1SizeInBytes); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(0, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId1), observer().last_attached().device_id); | 
| -  EXPECT_EQ(ASCIIToUTF16(kDeviceNameWithManufacturerDetails), | 
| -            observer().last_attached().name); | 
| -  EXPECT_EQ(mount_path1.value(), observer().last_attached().location); | 
| - | 
| -  UnmountDevice(MOUNT_ERROR_NONE, mount_info); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(1, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId1), observer().last_detached().device_id); | 
| -} | 
| - | 
| -TEST_F(RemovableDeviceNotificationsCrosTest, GetStorageSize) { | 
| -  base::FilePath mount_path1 = CreateMountPoint(kMountPointA, true); | 
| -  ASSERT_FALSE(mount_path1.empty()); | 
| -  DiskMountManager::MountPointInfo mount_info(kEmptyDeviceLabel, | 
| -                                              mount_path1.value(), | 
| -                                              MOUNT_TYPE_DEVICE, | 
| -                                              disks::MOUNT_CONDITION_NONE); | 
| -  MountDevice(MOUNT_ERROR_NONE, mount_info, kUniqueId1, kEmptyDeviceLabel, | 
| -              kVendorName, kProductName, DEVICE_TYPE_USB, kDevice1SizeInBytes); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(0, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId1), observer().last_attached().device_id); | 
| -  EXPECT_EQ(ASCIIToUTF16(kDeviceNameWithManufacturerDetails), | 
| -            observer().last_attached().name); | 
| -  EXPECT_EQ(mount_path1.value(), observer().last_attached().location); | 
| - | 
| -  EXPECT_EQ(kDevice1SizeInBytes, GetDeviceStorageSize(mount_path1.value())); | 
| -  UnmountDevice(MOUNT_ERROR_NONE, mount_info); | 
| -  EXPECT_EQ(1, observer().attach_calls()); | 
| -  EXPECT_EQ(1, observer().detach_calls()); | 
| -  EXPECT_EQ(GetDCIMDeviceId(kUniqueId1), observer().last_detached().device_id); | 
| -} | 
| - | 
| -}  // namespace | 
| - | 
| -}  // namespace chromeos | 
|  |