summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhirono <hirono@chromium.org>2015-07-28 18:13:37 -0700
committerCommit bot <commit-bot@chromium.org>2015-07-29 01:14:03 +0000
commita4b675dcc763144c7cb4ffe2da17204511f59377 (patch)
tree507d926bbc1d161d31a57328f1e01f378ddc33e7
parent19b6d9ddc1d6a17e3863857643c0cfe2cbf3162f (diff)
downloadchromium_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.cc3
-rw-r--r--chrome/browser/chromeos/file_manager/fake_disk_mount_manager.h3
-rw-r--r--chrome/browser/chromeos/file_manager/volume_manager.cc3
-rw-r--r--chromeos/disks/disk_mount_manager.cc5
-rw-r--r--chromeos/disks/disk_mount_manager.h5
-rw-r--r--chromeos/disks/mock_disk_mount_manager.cc8
-rw-r--r--chromeos/disks/mock_disk_mount_manager.h7
-rw-r--r--chromeos/disks/suspend_unmount_manager.cc9
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