Return fixed storage from StorageMonitor::GetAllAvailableStorages(). (1/2)

Fetch information about all devices from OS in the DiskMountManager.
Ignore virtual block devices.

Split disk changes callback into separate callbacks for auto mountable
and fixed storage disks, so clients that are only interested
in auto mountable devices do not need to do additional filtering.


Bug: 420633
Change-Id: I3380c1a0ff49d7167760633cc3ed30d151170a08
Reviewed-on: https://chromium-review.googlesource.com/756273
Commit-Queue: Aga Wronska <[email protected]>
Reviewed-by: Steven Bennetts <[email protected]>
Reviewed-by: Lei Zhang <[email protected]>
Reviewed-by: Yusuke Sato <[email protected]>
Reviewed-by: Toni Barzic <[email protected]>
Cr-Commit-Position: refs/heads/master@{#521019}
diff --git a/chromeos/dbus/cros_disks_client.cc b/chromeos/dbus/cros_disks_client.cc
index 3b0c08d8..44b40c7 100644
--- a/chromeos/dbus/cros_disks_client.cc
+++ b/chromeos/dbus/cros_disks_client.cc
@@ -141,15 +141,24 @@
 
   // CrosDisksClient override.
   void EnumerateAutoMountableDevices(
-      const EnumerateAutoMountableDevicesCallback& callback,
+      const EnumerateDevicesCallback& callback,
       const base::Closure& error_callback) override {
     dbus::MethodCall method_call(cros_disks::kCrosDisksInterface,
                                  cros_disks::kEnumerateAutoMountableDevices);
-    proxy_->CallMethod(
-        &method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
-        base::BindOnce(&CrosDisksClientImpl::OnEnumerateAutoMountableDevices,
-                       weak_ptr_factory_.GetWeakPtr(), callback,
-                       error_callback));
+    proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+                       base::BindOnce(&CrosDisksClientImpl::OnEnumerateDevices,
+                                      weak_ptr_factory_.GetWeakPtr(), callback,
+                                      error_callback));
+  }
+
+  void EnumerateDevices(const EnumerateDevicesCallback& callback,
+                        const base::Closure& error_callback) override {
+    dbus::MethodCall method_call(cros_disks::kCrosDisksInterface,
+                                 cros_disks::kEnumerateDevices);
+    proxy_->CallMethod(&method_call, dbus::ObjectProxy::TIMEOUT_USE_DEFAULT,
+                       base::BindOnce(&CrosDisksClientImpl::OnEnumerateDevices,
+                                      weak_ptr_factory_.GetWeakPtr(), callback,
+                                      error_callback));
   }
 
   // CrosDisksClient override.
@@ -331,12 +340,11 @@
     callback.Run();
   }
 
-  // Handles the result of EnumerateAutoMountableDevices and calls |callback| or
-  // |error_callback|.
-  void OnEnumerateAutoMountableDevices(
-      const EnumerateAutoMountableDevicesCallback& callback,
-      const base::Closure& error_callback,
-      dbus::Response* response) {
+  // Handles the result of EnumerateDevices and EnumarateAutoMountableDevices.
+  // Calls |callback| or |error_callback|.
+  void OnEnumerateDevices(const EnumerateDevicesCallback& callback,
+                          const base::Closure& error_callback,
+                          dbus::Response* response) {
     if (!response) {
       error_callback.Run();
       return;
@@ -497,10 +505,11 @@
       has_media_(false),
       on_boot_device_(false),
       on_removable_device_(false),
-      device_type_(DEVICE_TYPE_UNKNOWN),
-      total_size_in_bytes_(0),
       is_read_only_(false),
-      is_hidden_(true) {
+      is_hidden_(true),
+      is_virtual_(false),
+      device_type_(DEVICE_TYPE_UNKNOWN),
+      total_size_in_bytes_(0) {
   InitializeFromResponse(response);
 }
 
@@ -627,6 +636,8 @@
       cros_disks::kDeviceIsOnBootDevice, &on_boot_device_);
   properties->GetBooleanWithoutPathExpansion(
       cros_disks::kDeviceIsOnRemovableDevice, &on_removable_device_);
+  properties->GetBooleanWithoutPathExpansion(cros_disks::kDeviceIsVirtual,
+                                             &is_virtual_);
   properties->GetStringWithoutPathExpansion(
       cros_disks::kNativePath, &system_path_);
   properties->GetStringWithoutPathExpansion(