1// Copyright 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.
4
5#ifndef CHROME_BROWSER_EXTENSIONS_API_SYSTEM_STORAGE_SYSTEM_STORAGE_API_H_
6#define CHROME_BROWSER_EXTENSIONS_API_SYSTEM_STORAGE_SYSTEM_STORAGE_API_H_
7
8#include "chrome/browser/extensions/api/system_storage/storage_info_provider.h"
9#include "chrome/browser/extensions/extension_function.h"
10#include "chrome/browser/storage_monitor/storage_monitor.h"
11
12namespace extensions {
13
14// Implementation of the systeminfo.storage.get API. It is an asynchronous
15// call relative to browser UI thread.
16class SystemStorageGetInfoFunction : public AsyncExtensionFunction {
17 public:
18  DECLARE_EXTENSION_FUNCTION("system.storage.getInfo", SYSTEM_STORAGE_GETINFO);
19  SystemStorageGetInfoFunction();
20
21 private:
22  virtual ~SystemStorageGetInfoFunction();
23  virtual bool RunImpl() OVERRIDE;
24
25  void OnGetStorageInfoCompleted(bool success);
26};
27
28class SystemStorageEjectDeviceFunction
29    : public AsyncExtensionFunction {
30 public:
31  DECLARE_EXTENSION_FUNCTION("system.storage.ejectDevice",
32                             SYSTEM_STORAGE_EJECTDEVICE);
33
34 protected:
35  virtual ~SystemStorageEjectDeviceFunction();
36
37  // AsyncExtensionFunction overrides.
38  virtual bool RunImpl() OVERRIDE;
39
40 private:
41  void OnStorageMonitorInit(const std::string& transient_device_id);
42
43  // Eject device request handler.
44  void HandleResponse(chrome::StorageMonitor::EjectStatus status);
45};
46
47}  // namespace extensions
48
49#endif  // CHROME_BROWSER_EXTENSIONS_API_SYSTEM_STORAGE_SYSTEM_STORAGE_API_H_
50