C++程序  |  84行  |  2.71 KB

// 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_