// Copyright 2013 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. // Use the chrome.system.storage API to query storage device // information and be notified when a removable storage device is attached and // detached. namespace system.storage { enum StorageUnitType { // The storage has fixed media, e.g. hard disk or SSD. fixed, // The storage is removable, e.g. USB flash drive. removable, // The storage type is unknown. unknown }; dictionary StorageUnitInfo { // The transient ID that uniquely identifies the storage device. // This ID will be persistent within the same run of a single application. // It will not be a persistent identifier between different runs of an // application, or between different applications. DOMString id; // The name of the storage unit. DOMString name; // The media type of the storage unit. StorageUnitType type; // The total amount of the storage space, in bytes. double capacity; }; dictionary StorageAvailableCapacityInfo { // A copied |id| of getAvailableCapacity function parameter |id|. DOMString id; // The available capacity of the storage device, in bytes. double availableCapacity; }; [inline_doc] enum EjectDeviceResultCode { // The ejection command is successful -- the application can prompt the user // to remove the device. success, // The device is in use by another application. The ejection did not // succeed; the user should not remove the device until the other // application is done with the device. in_use, // There is no such device known. no_such_device, // The ejection command failed. failure }; callback EjectDeviceCallback = void (EjectDeviceResultCode result); callback StorageInfoCallback = void (StorageUnitInfo[] info); callback GetAvailableCapacityCallback = void ( StorageAvailableCapacityInfo info); interface Functions { // Get the storage information from the system. The argument passed to the // callback is an array of StorageUnitInfo objects. static void getInfo(StorageInfoCallback callback); // Ejects a removable storage device. static void ejectDevice(DOMString id, EjectDeviceCallback callback); // Get the available capacity of a specified |id| storage device. // The |id| is the transient device ID from StorageUnitInfo. static void getAvailableCapacity(DOMString id, GetAvailableCapacityCallback callback); }; interface Events { // Fired when a new removable storage is attached to the system. static void onAttached(StorageUnitInfo info); // Fired when a removable storage is detached from the system. static void onDetached(DOMString id); }; };