diff options
author | hirono <hirono@chromium.org> | 2015-07-28 18:13:37 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-07-29 01:14:03 +0000 |
commit | a4b675dcc763144c7cb4ffe2da17204511f59377 (patch) | |
tree | 507d926bbc1d161d31a57328f1e01f378ddc33e7 | |
parent | 19b6d9ddc1d6a17e3863857643c0cfe2cbf3162f (diff) | |
download | chromium_src-a4b675dcc763144c7cb4ffe2da17204511f59377.zip chromium_src-a4b675dcc763144c7cb4ffe2da17204511f59377.tar.gz chromium_src-a4b675dcc763144c7cb4ffe2da17204511f59377.tar.bz2 |
Refresh mount state when suspend is done.
BUG=511996
TEST=None
Review URL: https://codereview.chromium.org/1255123002
Cr-Commit-Position: refs/heads/master@{#340828}
-rw-r--r-- | chrome/browser/chromeos/file_manager/fake_disk_mount_manager.cc | 3 | ||||
-rw-r--r-- | chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h | 3 | ||||
-rw-r--r-- | chrome/browser/chromeos/file_manager/volume_manager.cc | 3 | ||||
-rw-r--r-- | chromeos/disks/disk_mount_manager.cc | 5 | ||||
-rw-r--r-- | chromeos/disks/disk_mount_manager.h | 5 | ||||
-rw-r--r-- | chromeos/disks/mock_disk_mount_manager.cc | 8 | ||||
-rw-r--r-- | chromeos/disks/mock_disk_mount_manager.h | 7 | ||||
-rw-r--r-- | chromeos/disks/suspend_unmount_manager.cc | 9 |
8 files changed, 28 insertions, 15 deletions
diff --git a/chrome/browser/chromeos/file_manager/fake_disk_mount_manager.cc b/chrome/browser/chromeos/file_manager/fake_disk_mount_manager.cc index 585fbdf..5c82c98 100644 --- a/chrome/browser/chromeos/file_manager/fake_disk_mount_manager.cc +++ b/chrome/browser/chromeos/file_manager/fake_disk_mount_manager.cc @@ -64,7 +64,8 @@ FakeDiskMountManager::mount_points() const { } void FakeDiskMountManager::EnsureMountInfoRefreshed( - const EnsureMountInfoRefreshedCallback& callback) { + const EnsureMountInfoRefreshedCallback& callback, + bool force) { callback.Run(true); } diff --git a/chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h b/chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h index 0c9cd88..5e44060 100644 --- a/chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h +++ b/chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h @@ -56,7 +56,8 @@ class FakeDiskMountManager : public chromeos::disks::DiskMountManager { const std::string& source_path) const override; const MountPointMap& mount_points() const override; void EnsureMountInfoRefreshed( - const EnsureMountInfoRefreshedCallback& callback) override; + const EnsureMountInfoRefreshedCallback& callback, + bool force) override; void MountPath(const std::string& source_path, const std::string& source_format, const std::string& mount_label, diff --git a/chrome/browser/chromeos/file_manager/volume_manager.cc b/chrome/browser/chromeos/file_manager/volume_manager.cc index 73bc754..69c7a3e 100644 --- a/chrome/browser/chromeos/file_manager/volume_manager.cc +++ b/chrome/browser/chromeos/file_manager/volume_manager.cc @@ -337,7 +337,8 @@ void VolumeManager::Initialize() { disk_mount_manager_->AddObserver(this); disk_mount_manager_->EnsureMountInfoRefreshed( base::Bind(&VolumeManager::OnDiskMountManagerRefreshed, - weak_ptr_factory_.GetWeakPtr())); + weak_ptr_factory_.GetWeakPtr()), + false /* force */); // Subscribe to FileSystemProviderService and register currently mounted // volumes for the profile. diff --git a/chromeos/disks/disk_mount_manager.cc b/chromeos/disks/disk_mount_manager.cc index ed2c597..004b793 100644 --- a/chromeos/disks/disk_mount_manager.cc +++ b/chromeos/disks/disk_mount_manager.cc @@ -194,8 +194,9 @@ class DiskMountManagerImpl : public DiskMountManager { // DiskMountManager override. void EnsureMountInfoRefreshed( - const EnsureMountInfoRefreshedCallback& callback) override { - if (already_refreshed_) { + const EnsureMountInfoRefreshedCallback& callback, + bool force) override { + if (!force && already_refreshed_) { callback.Run(true); return; } diff --git a/chromeos/disks/disk_mount_manager.h b/chromeos/disks/disk_mount_manager.h index 59f7d5a..ac21ad3 100644 --- a/chromeos/disks/disk_mount_manager.h +++ b/chromeos/disks/disk_mount_manager.h @@ -246,9 +246,10 @@ class CHROMEOS_EXPORT DiskMountManager { // Refreshes all the information about mounting if it is not yet done and // invokes |callback| when finished. If the information is already refreshed - // It just runs |callback| immediately. + // and |force| is false, it just runs |callback| immediately. virtual void EnsureMountInfoRefreshed( - const EnsureMountInfoRefreshedCallback& callback) = 0; + const EnsureMountInfoRefreshedCallback& callback, + bool force) = 0; // Mounts a device. // Note that the mount operation may fail. To find out the result, one should diff --git a/chromeos/disks/mock_disk_mount_manager.cc b/chromeos/disks/mock_disk_mount_manager.cc index f4bfce7..c915b00 100644 --- a/chromeos/disks/mock_disk_mount_manager.cc +++ b/chromeos/disks/mock_disk_mount_manager.cc @@ -58,7 +58,7 @@ MockDiskMountManager::MockDiskMountManager() { ON_CALL(*this, FindDiskBySourcePath(_)) .WillByDefault(Invoke( this, &MockDiskMountManager::FindDiskBySourcePathInternal)); - ON_CALL(*this, EnsureMountInfoRefreshed(_)) + ON_CALL(*this, EnsureMountInfoRefreshed(_, _)) .WillByDefault(Invoke( this, &MockDiskMountManager::EnsureMountInfoRefreshedInternal)); } @@ -168,8 +168,7 @@ void MockDiskMountManager::SetupDefaultReplies() { .WillRepeatedly(ReturnRef(mount_points_)); EXPECT_CALL(*this, FindDiskBySourcePath(_)) .Times(AnyNumber()); - EXPECT_CALL(*this, EnsureMountInfoRefreshed(_)) - .Times(AnyNumber()); + EXPECT_CALL(*this, EnsureMountInfoRefreshed(_, _)).Times(AnyNumber()); EXPECT_CALL(*this, MountPath(_, _, _, _)) .Times(AnyNumber()); EXPECT_CALL(*this, UnmountPath(_, _, _)) @@ -243,7 +242,8 @@ MockDiskMountManager::FindDiskBySourcePathInternal( } void MockDiskMountManager::EnsureMountInfoRefreshedInternal( - const EnsureMountInfoRefreshedCallback& callback) { + const EnsureMountInfoRefreshedCallback& callback, + bool force) { callback.Run(true); } diff --git a/chromeos/disks/mock_disk_mount_manager.h b/chromeos/disks/mock_disk_mount_manager.h index 5ef4bad..e5693d1 100644 --- a/chromeos/disks/mock_disk_mount_manager.h +++ b/chromeos/disks/mock_disk_mount_manager.h @@ -32,8 +32,8 @@ class MockDiskMountManager : public DiskMountManager { const DiskMountManager::Disk*(const std::string&)); MOCK_CONST_METHOD0(mount_points, const DiskMountManager::MountPointMap&(void)); - MOCK_METHOD1(EnsureMountInfoRefreshed, - void(const EnsureMountInfoRefreshedCallback&)); + MOCK_METHOD2(EnsureMountInfoRefreshed, + void(const EnsureMountInfoRefreshedCallback&, bool)); MOCK_METHOD4(MountPath, void(const std::string&, const std::string&, const std::string&, MountType)); MOCK_METHOD3(UnmountPath, void(const std::string&, @@ -92,7 +92,8 @@ class MockDiskMountManager : public DiskMountManager { // Is used to implement EnsureMountInfoRefreshed. void EnsureMountInfoRefreshedInternal( - const EnsureMountInfoRefreshedCallback& callback); + const EnsureMountInfoRefreshedCallback& callback, + bool force); // Notifies observers about device status update. void NotifyDeviceChanged(DeviceEvent event, diff --git a/chromeos/disks/suspend_unmount_manager.cc b/chromeos/disks/suspend_unmount_manager.cc index cff1755..795ac9d 100644 --- a/chromeos/disks/suspend_unmount_manager.cc +++ b/chromeos/disks/suspend_unmount_manager.cc @@ -9,6 +9,11 @@ namespace chromeos { namespace disks { +namespace { + +void OnRefreshCompleted(bool success) {} + +} // namespace SuspendUnmountManager::SuspendUnmountManager( DiskMountManager* disk_mount_manager, @@ -54,6 +59,8 @@ void SuspendUnmountManager::SuspendDone(const base::TimeDelta& sleep_duration) { // SuspendDone can be called before OnUnmountComplete when suspend is // cancelled, or it takes long time to unmount volumes. unmounting_paths_.clear(); + disk_mount_manager_->EnsureMountInfoRefreshed(base::Bind(&OnRefreshCompleted), + true /* force */); suspend_readiness_callback_.Reset(); } @@ -68,5 +75,5 @@ void SuspendUnmountManager::OnUnmountComplete(const std::string& mount_path, } } -} // namespace chromeos } // namespace disks +} // namespace chromeos |