187 lines
8.0 KiB
Plaintext
Executable File
187 lines
8.0 KiB
Plaintext
Executable File
// Copyright 2012 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
// Use the <code>chrome.fileSystem</code> API to create, read, navigate,
|
|
// and write to the user's local file system. With this API, Chrome Apps can
|
|
// read and write to a user-selected location. For example, a text editor app
|
|
// can use the API to read and write local documents. All failures are notified
|
|
// via chrome.runtime.lastError.
|
|
namespace fileSystem {
|
|
dictionary AcceptOption {
|
|
// This is the optional text description for this option. If not present,
|
|
// a description will be automatically generated; typically containing an
|
|
// expanded list of valid extensions (e.g. "text/html" may expand to
|
|
// "*.html, *.htm").
|
|
DOMString? description;
|
|
|
|
// Mime-types to accept, e.g. "image/jpeg" or "audio/*". One of mimeTypes or
|
|
// extensions must contain at least one valid element.
|
|
DOMString[]? mimeTypes;
|
|
|
|
// Extensions to accept, e.g. "jpg", "gif", "crx".
|
|
DOMString[]? extensions;
|
|
};
|
|
|
|
enum ChooseEntryType {
|
|
|
|
// Prompts the user to open an existing file and returns a FileEntry on
|
|
// success. From Chrome 31 onwards, the FileEntry will be writable if the
|
|
// application has the 'write' permission under 'fileSystem'; otherwise, the
|
|
// FileEntry will be read-only.
|
|
openFile,
|
|
|
|
// Prompts the user to open an existing file and returns a writable
|
|
// FileEntry on success. Calls using this type will fail with a runtime
|
|
// error if the application doesn't have the 'write' permission under
|
|
// 'fileSystem'.
|
|
openWritableFile,
|
|
|
|
// Prompts the user to open an existing file or a new file and returns a
|
|
// writable FileEntry on success. Calls using this type will fail with a
|
|
// runtime error if the application doesn't have the 'write' permission
|
|
// under 'fileSystem'.
|
|
saveFile,
|
|
|
|
// Prompts the user to open a directory and returns a DirectoryEntry on
|
|
// success. Calls using this type will fail with a runtime error if the
|
|
// application doesn't have the 'directory' permission under 'fileSystem'.
|
|
// If the application has the 'write' permission under 'fileSystem', the
|
|
// returned DirectoryEntry will be writable; otherwise it will be read-only.
|
|
// New in Chrome 31.
|
|
openDirectory
|
|
};
|
|
|
|
dictionary ChooseEntryOptions {
|
|
// Type of the prompt to show. The default is 'openFile'.
|
|
ChooseEntryType? type;
|
|
|
|
// The suggested file name that will be presented to the user as the
|
|
// default name to read or write. This is optional.
|
|
DOMString? suggestedName;
|
|
|
|
// The optional list of accept options for this file opener. Each option
|
|
// will be presented as a unique group to the end-user.
|
|
AcceptOption[]? accepts;
|
|
|
|
// Whether to accept all file types, in addition to the options specified
|
|
// in the accepts argument. The default is true. If the accepts field is
|
|
// unset or contains no valid entries, this will always be reset to true.
|
|
boolean? acceptsAllTypes;
|
|
|
|
// Whether to accept multiple files. This is only supported for openFile and
|
|
// openWritableFile. The callback to chooseEntry will be called with a list
|
|
// of entries if this is set to true. Otherwise it will be called with a
|
|
// single Entry.
|
|
boolean? acceptsMultiple;
|
|
};
|
|
|
|
dictionary RequestFileSystemOptions {
|
|
// The ID of the requested volume.
|
|
DOMString volumeId;
|
|
|
|
// Whether the requested file system should be writable. The default is
|
|
// read-only.
|
|
boolean? writable;
|
|
};
|
|
|
|
// Represents a mounted volume, which can be accessed via <code>chrome.
|
|
// fileSystem.requestFileSystem</code>.
|
|
dictionary Volume {
|
|
DOMString volumeId;
|
|
boolean writable;
|
|
};
|
|
|
|
// Event notifying about an inserted or a removed volume from the system.
|
|
dictionary VolumeListChangedEvent {
|
|
Volume[] volumes;
|
|
};
|
|
|
|
callback GetDisplayPathCallback = void (DOMString displayPath);
|
|
callback EntryCallback = void ([instanceOf=Entry] object entry);
|
|
callback EntriesCallback = void (
|
|
[instanceOf=Entry] optional object entry,
|
|
[instanceOf=FileEntry] optional object[] fileEntries);
|
|
callback IsWritableCallback = void (boolean isWritable);
|
|
callback IsRestorableCallback = void (boolean isRestorable);
|
|
callback RequestFileSystemCallback = void(
|
|
[instanceOf=FileSystem] optional object fileSystem);
|
|
callback GetVolumeListCallback = void(optional Volume[] volumes);
|
|
|
|
interface Functions {
|
|
// Get the display path of an Entry object. The display path is based on
|
|
// the full path of the file or directory on the local file system, but may
|
|
// be made more readable for display purposes.
|
|
static void getDisplayPath(
|
|
[instanceOf=Entry] object entry,
|
|
GetDisplayPathCallback callback);
|
|
|
|
// Get a writable Entry from another Entry. This call will fail with a
|
|
// runtime error if the application does not have the 'write' permission
|
|
// under 'fileSystem'. If entry is a DirectoryEntry, this call will fail if
|
|
// the application does not have the 'directory' permission under
|
|
// 'fileSystem'.
|
|
[doesNotSupportPromises="Custom hook sets lastError crbug.com/1504349"]
|
|
static void getWritableEntry(
|
|
[instanceOf=Entry] object entry,
|
|
EntryCallback callback);
|
|
|
|
// Gets whether this Entry is writable or not.
|
|
static void isWritableEntry(
|
|
[instanceOf=Entry] object entry,
|
|
IsWritableCallback callback);
|
|
|
|
// Ask the user to choose a file or directory.
|
|
[doesNotSupportPromises="Multi-parameter callback crbug.com/1313625,
|
|
Custom hook sets lastError crbug.com/1504349"]
|
|
static void chooseEntry(optional ChooseEntryOptions options,
|
|
EntriesCallback callback);
|
|
|
|
// Returns the file entry with the given id if it can be restored. This call
|
|
// will fail with a runtime error otherwise.
|
|
[doesNotSupportPromises="Custom hook sets lastError crbug.com/1504349"]
|
|
static void restoreEntry(DOMString id,
|
|
EntryCallback callback);
|
|
|
|
// Returns whether the app has permission to restore the entry with the
|
|
// given id.
|
|
static void isRestorable(
|
|
DOMString id,
|
|
IsRestorableCallback callback);
|
|
|
|
// Returns an id that can be passed to restoreEntry to regain access to a
|
|
// given file entry. Only the 500 most recently used entries are retained,
|
|
// where calls to retainEntry and restoreEntry count as use. If the app has
|
|
// the 'retainEntries' permission under 'fileSystem', entries are retained
|
|
// indefinitely. Otherwise, entries are retained only while the app is
|
|
// running and across restarts.
|
|
static DOMString retainEntry([instanceOf=Entry] object entry);
|
|
|
|
// Requests access to a file system for a volume represented by <code>
|
|
// options.volumeId</code>. If <code>options.writable</code> is set to true,
|
|
// then the file system will be writable. Otherwise, it will be read-only.
|
|
// The <code>writable</code> option requires the <code>
|
|
// "fileSystem": {"write"}</code> permission in the manifest. Available to
|
|
// kiosk apps running in kiosk session only. For manual-launch kiosk mode, a
|
|
// confirmation dialog will be shown on top of the active app window.
|
|
// In case of an error, <code>fileSystem</code> will be undefined, and
|
|
// <code>chrome.runtime.lastError</code> will be set.
|
|
static void requestFileSystem(
|
|
RequestFileSystemOptions options,
|
|
RequestFileSystemCallback callback);
|
|
|
|
// Returns a list of volumes available for <code>requestFileSystem()</code>.
|
|
// The <code>"fileSystem": {"requestFileSystem"}</code> manifest permission
|
|
// is required. Available to kiosk apps running in the kiosk session only.
|
|
// In case of an error, <code>volumes</code> will be undefined, and <code>
|
|
// chrome.runtime.lastError</code> will be set.
|
|
static void getVolumeList(
|
|
GetVolumeListCallback callback);
|
|
};
|
|
|
|
interface Events {
|
|
// Called when a list of available volumes is changed.
|
|
static void onVolumeListChanged(VolumeListChangedEvent event);
|
|
};
|
|
};
|