Add test for the TermsOfServiceURL policy
[chromium-blink-merge.git] / chrome / browser / chromeos / imageburner / burn_device_handler.h
bloba8a3467c52752f46c08088302de6581d5c7110f0
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef CHROME_BROWSER_CHROMEOS_IMAGEBURNER_BURN_DEVICE_HANDLER_H_
6 #define CHROME_BROWSER_CHROMEOS_IMAGEBURNER_BURN_DEVICE_HANDLER_H_
8 #include <string>
9 #include <vector>
11 #include "base/callback.h"
12 #include "chromeos/dbus/cros_disks_client.h"
13 #include "chromeos/disks/disk_mount_manager.h"
15 namespace chromeos {
16 namespace imageburner {
18 // This is the implementation for the communication between BurnManager
19 // and DiskMountManager.
20 // The main reason this is NOT merged into BurnManager is to improve
21 // testability, since both BurnManager and DiskMountManager are singleton
22 // in real usage.
23 class BurnDeviceHandler : public disks::DiskMountManager::Observer {
24 public:
25 // Triggered when a burnable device is added or removed.
26 typedef base::Callback<void(const disks::DiskMountManager::Disk& disk)>
27 DiskCallback;
29 // This class takes the pointer of DiskMountManager to improve testability,
30 // although it is singleton in the real usage.
31 explicit BurnDeviceHandler(disks::DiskMountManager* disk_mount_manager);
32 virtual ~BurnDeviceHandler();
34 // |add_callback| will be called when a new burnable device is added with
35 // the device's information.
36 // |remove_callback| will be called when a burnable device is removed.
37 // Note: This class is designed to connect to only one BurnManager,
38 // so it supports only single callback for each add and remove intentionally
39 // (rather than ObserverList).
40 void SetCallbacks(const DiskCallback& add_callback,
41 const DiskCallback& remove_callback);
43 // Returns devices on which we can burn recovery image.
44 std::vector<disks::DiskMountManager::Disk> GetBurnableDevices();
46 // DiskMountManager::Observer overrides.
47 virtual void OnDiskEvent(
48 disks::DiskMountManager::DiskEvent event,
49 const disks::DiskMountManager::Disk* disk) OVERRIDE;
50 virtual void OnDeviceEvent(
51 disks::DiskMountManager::DeviceEvent event,
52 const std::string& device_path) OVERRIDE;
53 virtual void OnMountEvent(
54 disks::DiskMountManager::MountEvent event,
55 MountError error_code,
56 const disks::DiskMountManager::MountPointInfo& mount_info) OVERRIDE;
57 virtual void OnFormatEvent(
58 disks::DiskMountManager::FormatEvent event,
59 FormatError error_code,
60 const std::string& device_path) OVERRIDE;
62 private:
63 disks::DiskMountManager* disk_mount_manager_; // Not owned by this class.
64 DiskCallback add_callback_;
65 DiskCallback remove_callback_;
67 DISALLOW_COPY_AND_ASSIGN(BurnDeviceHandler);
70 } // namespace imageburner
71 } // namespace chromeos
73 #endif // CHROME_BROWSER_CHROMEOS_IMAGEBURNER_BURN_DEVICE_HANDLER_H_