diff options
Diffstat (limited to 'dom/system/gonk/nsIVolume.idl')
-rw-r--r-- | dom/system/gonk/nsIVolume.idl | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/dom/system/gonk/nsIVolume.idl b/dom/system/gonk/nsIVolume.idl new file mode 100644 index 000000000..60785f0a4 --- /dev/null +++ b/dom/system/gonk/nsIVolume.idl @@ -0,0 +1,114 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#include "nsISupports.idl" +#include "nsIVolumeStat.idl" + +[scriptable, uuid(EE752CB8-8FD7-11E4-A602-70221D5D46B0)] +interface nsIVolume : nsISupports +{ + // These MUST match the states from android's system/vold/Volume.h header + // Note: Changes made to the STATE_xxx names should also be reflected in the + // NS_VolumeStateStr function found in Volume.cpp + const long STATE_INIT = -1; + const long STATE_NOMEDIA = 0; + const long STATE_IDLE = 1; + const long STATE_PENDING = 2; + const long STATE_CHECKING = 3; + const long STATE_MOUNTED = 4; + const long STATE_UNMOUNTING = 5; + const long STATE_FORMATTING = 6; + const long STATE_SHARED = 7; + const long STATE_SHAREDMNT = 8; + const long STATE_CHECKMNT = 100; + const long STATE_MOUNT_FAIL = 101; + + // The name of the volume. Often there is only one volume, called sdcard. + // But some phones support multiple volumes. + readonly attribute DOMString name; + + // The mount point is the path on the system where the volume is mounted + // and is only valid when state == STATE_MOUNTED. + readonly attribute DOMString mountPoint; + + // Reflects the current state of the volume, using STATE_xxx constants + // from above. + readonly attribute long state; + + // mountGeneration is a unique number which is used distinguish between + // periods of time that a volume is in the mounted state. Each time a + // volume transitions to the mounted state, the mountGeneration will + // be different from the last time it transitioned to the mounted state. + readonly attribute long mountGeneration; + + // While a volume is mounted, it can be locked, preventing it from being + // shared with the PC. To lock a volume, acquire an MozWakeLock + // using the name of this attribute. Note that mountLockName changes + // every time the mountGeneration changes, so you'll need to reacquire + // the wakelock every time the volume becomes mounted. + readonly attribute DOMString mountLockName; + + // Determines if a mountlock is currently being held against this volume. + readonly attribute boolean isMountLocked; + + // Determines if media is actually present or not. Note, that when an sdcard + // is ejected, it may go through several tranistory states before finally + // arriving at STATE_NOMEDIA. So isMediaPresent may be false even when the + // current state isn't STATE_NOMEDIA. + readonly attribute boolean isMediaPresent; + + // Determines if the volume is currently being shared. This covers off + // more than just state == STATE_SHARED. isSharing will return true from the + // time that the volume leaves the mounted state, until it gets back to + // mounted, nomedia, or formatting states. This attribute is to allow + // device storage to suppress unwanted 'unavailable' status when + // transitioning from mounted to sharing and back again. + readonly attribute boolean isSharing; + + // Determines if the volume is currently formatting. This sets true once + // mFormatRequest == true and mState == STATE_MOUNTED, and sets false + // once the volume has been formatted and mounted again. + readonly attribute boolean isFormatting; + + readonly attribute boolean isUnmounting; + + nsIVolumeStat getStats(); + + // Formats the volume in IO thread, if the volume is ready to be formatted. + // Automounter will unmount it, format it and then mount it again. + void format(); + + // Mounts the volume in IO thread, if the volume is already unmounted. + // Automounter will mount it. Otherwise Automounter will skip this. + void mount(); + + // Unmounts the volume in IO thread, if the volume is already mounted. + // Automounter will unmount it. Otherwise Automounter will skip this. + void unmount(); + + // Whether this is a fake volume. + readonly attribute boolean isFake; + + // Whether this is a removable volume + readonly attribute boolean isRemovable; + + // Whether this is a hot-swappable volume + readonly attribute boolean isHotSwappable; + +}; + +%{C++ +// For use with the ObserverService +#define NS_VOLUME_STATE_CHANGED "volume-state-changed" +#define NS_VOLUME_REMOVED "volume-removed" + +namespace mozilla { +namespace system { + +// Convert a state into a loggable/printable string. +const char* NS_VolumeStateStr(int32_t aState); + +} // system +} // mozilla +%} |