| // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #ifndef CHROME_BROWSER_CHROMEOS_IMAGEBURNER_BURN_CONTROLLER_H_ |
| #define CHROME_BROWSER_CHROMEOS_IMAGEBURNER_BURN_CONTROLLER_H_ |
| |
| #include <vector> |
| |
| #include "base/basictypes.h" |
| #include "chrome/browser/chromeos/imageburner/burn_manager.h" |
| #include "chromeos/disks/disk_mount_manager.h" |
| |
| namespace base { |
| class FilePath; |
| class TimeDelta; |
| } |
| |
| namespace content { |
| class WebContents; |
| } |
| |
| namespace chromeos { |
| namespace imageburner { |
| |
| // A class to control recovery media creating process. |
| class BurnController { |
| public: |
| class Delegate { |
| public: |
| // Called when recovery image is successfully burnt. |
| virtual void OnSuccess() = 0; |
| // Called when something goes wrong. |
| virtual void OnFail(int error_message_id) = 0; |
| // Called when a burnable device is added. |
| virtual void OnDeviceAdded(const disks::DiskMountManager::Disk& disk) = 0; |
| // Called when a burnable device is removed. |
| virtual void OnDeviceRemoved(const disks::DiskMountManager::Disk& disk) = 0; |
| // Called when device is too small. |
| virtual void OnDeviceTooSmall(int64 device_size) = 0; |
| // Called when some progress is made. |
| virtual void OnProgress(ProgressType progress_type, |
| int64 amount_finished, |
| int64 amount_total) = 0; |
| // Called when some progress is made and remaining time estimation is |
| // available. |
| virtual void OnProgressWithRemainingTime( |
| ProgressType progress_type, |
| int64 amount_finished, |
| int64 amount_total, |
| const base::TimeDelta& time_remaining) = 0; |
| // Called when network is connected. |
| virtual void OnNetworkDetected() = 0; |
| // Called when an error occurs because there is no network connection. |
| virtual void OnNoNetwork() = 0; |
| }; |
| |
| virtual ~BurnController() {} |
| |
| // Initializes the instance. |
| virtual void Init() = 0; |
| // Returns devices on which we can burn recovery image. |
| virtual std::vector<disks::DiskMountManager::Disk> GetBurnableDevices() = 0; |
| // Starts burning process. |
| virtual void StartBurnImage(const base::FilePath& target_device_path, |
| const base::FilePath& target_file_path) = 0; |
| // Cancels burning process. |
| virtual void CancelBurnImage() = 0; |
| // Creates a new instance of BurnController. |
| static BurnController* CreateBurnController( |
| content::WebContents* web_contents, Delegate* delegate); |
| |
| protected: |
| BurnController() {} |
| |
| private: |
| DISALLOW_COPY_AND_ASSIGN(BurnController); |
| }; |
| |
| } // namespace imageburner |
| } // namespace chromeos |
| |
| #endif // CHROME_BROWSER_CHROMEOS_IMAGEBURNER_BURN_CONTROLLER_H_ |