diff --git a/chromeos/disks/disk_mount_manager.h b/chromeos/disks/disk_mount_manager.h
index 0fe1a1a..895c607 100644
--- a/chromeos/disks/disk_mount_manager.h
+++ b/chromeos/disks/disk_mount_manager.h
@@ -13,20 +13,6 @@
 namespace chromeos {
 namespace disks {
 
-// Types of events DiskMountManager sends to its observers.
-enum DiskMountManagerEventType {
-  MOUNT_DISK_ADDED,
-  MOUNT_DISK_REMOVED,
-  MOUNT_DISK_CHANGED,
-  MOUNT_DISK_MOUNTED,
-  MOUNT_DISK_UNMOUNTED,
-  MOUNT_DEVICE_ADDED,
-  MOUNT_DEVICE_REMOVED,
-  MOUNT_DEVICE_SCANNED,
-  MOUNT_FORMATTING_STARTED,
-  MOUNT_FORMATTING_FINISHED,
-};
-
 // Condition of mounted filesystem.
 enum MountCondition {
   MOUNT_CONDITION_NONE,
@@ -38,12 +24,29 @@
 // Other classes can add themselves as observers.
 class CHROMEOS_EXPORT DiskMountManager {
  public:
-  // Event type given to observers' MountCompleted method.
+  // Event types passed to the observers.
+  enum DiskEvent {
+    DISK_ADDED,
+    DISK_REMOVED,
+    DISK_CHANGED,
+  };
+
+  enum DeviceEvent {
+    DEVICE_ADDED,
+    DEVICE_REMOVED,
+    DEVICE_SCANNED,
+  };
+
   enum MountEvent {
     MOUNTING,
     UNMOUNTING,
   };
 
+  enum FormatEvent {
+    FORMAT_STARTED,
+    FORMAT_COMPLETED
+  };
+
   // Used to house an instance of each found mount device.
   class Disk {
    public:
@@ -196,16 +199,19 @@
    public:
     virtual ~Observer() {}
 
-    // A function called when disk mount status is changed.
-    virtual void DiskChanged(DiskMountManagerEventType event,
-                             const Disk* disk) = 0;
-    // A function called when device status is changed.
-    virtual void DeviceChanged(DiskMountManagerEventType event,
+    // Called when disk mount status is changed.
+    virtual void OnDiskEvent(DiskEvent event, const Disk* disk) = 0;
+    // Called when device status is changed.
+    virtual void OnDeviceEvent(DeviceEvent event,
                                const std::string& device_path) = 0;
-    // A function called after mount is completed.
-    virtual void MountCompleted(MountEvent event_type,
-                                MountError error_code,
-                                const MountPointInfo& mount_info) = 0;
+    // Called after a mount point has been mounted or unmounted.
+    virtual void OnMountEvent(MountEvent event,
+                              MountError error_code,
+                              const MountPointInfo& mount_info) = 0;
+    // Called on format process events.
+    virtual void OnFormatEvent(FormatEvent event,
+                               FormatError error_code,
+                               const std::string& device_path) = 0;
   };
 
   virtual ~DiskMountManager() {}
@@ -240,10 +246,6 @@
   virtual void UnmountPath(const std::string& mount_path,
                            UnmountOptions options) = 0;
 
-  // Formats device given its file path.
-  // Example: file_path: /dev/sdb1
-  virtual void FormatUnmountedDevice(const std::string& file_path) = 0;
-
   // Formats Device given its mount path. Unmounts the device.
   // Example: mount_path: /media/VOLUME_LABEL
   virtual void FormatMountedDevice(const std::string& mount_path) = 0;
@@ -254,6 +256,11 @@
       UnmountDeviceRecursiveCallbackType callback,
       void* user_data) = 0;
 
+  // Used in tests to initialize the manager's disk and mount point sets.
+  // Default implementation does noting. It just fails.
+  virtual bool AddDiskForTest(Disk* disk);
+  virtual bool AddMountPointForTest(const MountPointInfo& mount_point);
+
   // Returns corresponding string to |type| like "device" or "file".
   static std::string MountTypeToString(MountType type);
 
