Hi all,
Exploration and file operation on SD Card has been a required feature for a
long time. The user stories document is at
https://wiki.mozilla.org/User_Stories_of_SD_Card_File_Management_Requirement
Below is my API proposal. navigator.mozSDCard is the entrance.
It represents the root directory of the SD Card.
The rest is almost the same as FileSystem API:
http://www.w3.org/TR/file-system-api/
partial interface Navigator {
readonly attribute FileSystem mozSDCard;
};
interface FileSystem {
readonly attribute DOMString name;
readonly attribute DirectoryEntry root;
};
interface Entry {
readonly attribute boolean isFile;
readonly attribute boolean isDirectory;
void getMetadata (MetadataCallback successCallback, optional
ErrorCallback errorCallback);
readonly attribute DOMString name;
readonly attribute DOMString fullPath;
readonly attribute FileSystem filesystem;
void moveTo (DirectoryEntry parent, optional DOMString newName, optional
EntryCallback successCallback, optional ErrorCallback errorCallback);
void copyTo (DirectoryEntry parent, optional DOMString newName, optional
EntryCallback successCallback, optional ErrorCallback errorCallback);
void remove (VoidCallback successCallback, optional ErrorCallback
errorCallback);
void getParent (EntryCallback successCallback, optional ErrorCallback
errorCallback);
};
interface DirectoryEntry : Entry {
DirectoryReader createReader ();
void getFile (DOMString path, optional Flags options, optional
EntryCallback successCallback, optional ErrorCallback errorCallback);
void getDirectory (DOMString path, optional Flags options, optional
EntryCallback successCallback, optional ErrorCallback errorCallback);
void removeRecursively (VoidCallback successCallback, optional
ErrorCallback errorCallback);
};
interface DirectoryReader {
void readEntries (EntriesCallback successCallback, optional ErrorCallback errorCallback);
};
interface FileEntry : Entry {
};
interface Metadata {
readonly attribute Date modificationTime;
readonly attribute unsigned long long size;
};
dictionary Flags {
boolean create;
boolean exclusive;
};
[Callback=FunctionOnly]
interface EntryCallback {
void handleEvent (Entry entry);
};
[Callback=FunctionOnly]
interface EntriesCallback {
void handleEvent (Entry[] entries);
};
[Callback=FunctionOnly]
interface MetadataCallback {
void handleEvent (Metadata metadata);
};
[Callback=FunctionOnly]
interface FileCallback {
void handleEvent (File file);
};
[Callback=FunctionOnly]
interface VoidCallback {
void handleEvent ();
};
[Callback=FunctionOnly]
interface ErrorCallback {
void handleEvent (DOMError err);
};
--
Best regards,
尤睿(Ray You)