| // 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 <code>chrome.fileSystemProvider</code> API to create file systems, |
| // that can be accessible from the file manager on Chrome OS. |
| [platforms=("chromeos"), |
| implemented_in="chrome/browser/chromeos/extensions/file_system_provider/file_system_provider_api.h"] |
| namespace fileSystemProvider { |
| // Error codes used by providing extensions in response to requests. For |
| // success, <code>OK</code> should be used. |
| enum ProviderError { |
| OK, |
| FAILED, |
| IN_USE, |
| EXISTS, |
| NOT_FOUND, |
| ACCESS_DENIED, |
| TOO_MANY_OPENED, |
| NO_MEMORY, |
| NO_SPACE, |
| NOT_A_DIRECTORY, |
| INVALID_OPERATION, |
| SECURITY, |
| ABORT, |
| NOT_A_FILE, |
| NOT_EMPTY, |
| INVALID_URL, |
| IO |
| }; |
| |
| // Mode of opening a file. Used by <code>onOpenFileRequested</code>. |
| enum OpenFileMode { |
| READ, |
| WRITE |
| }; |
| |
| // Represents metadata of a file or a directory. |
| dictionary EntryMetadata { |
| // True if it is a directory. |
| boolean isDirectory; |
| |
| // Name of this entry (not full path name). |
| DOMString name; |
| |
| // File size in bytes. |
| double size; |
| |
| // The last modified time of this entry. |
| [instanceOf=Date] object modificationTime; |
| }; |
| |
| // Options for the <code>mount()</code> method. |
| dictionary MountOptions { |
| DOMString fileSystemId; |
| DOMString displayName; |
| }; |
| |
| // Options for the <code>unmount()</code> method. |
| dictionary UnmountOptions { |
| DOMString fileSystemId; |
| }; |
| |
| // Options for the <code>onUnmountRequested()</code> event. |
| dictionary UnmountRequestedOptions { |
| DOMString fileSystemId; |
| long requestId; |
| }; |
| |
| // Options for the <code>onGetMetadataRequested()</code> event. |
| dictionary GetMetadataRequestedOptions { |
| DOMString fileSystemId; |
| long requestId; |
| DOMString entryPath; |
| }; |
| |
| // Options for the <code>onReadDirectoryRequested()</code> event. |
| dictionary ReadDirectoryRequestedOptions { |
| DOMString fileSystemId; |
| long requestId; |
| DOMString directoryPath; |
| }; |
| |
| // Options for the <code>onOpenFileRequested()</code> event. |
| dictionary OpenFileRequestedOptions { |
| DOMString fileSystemId; |
| long requestId; |
| DOMString filePath; |
| OpenFileMode mode; |
| boolean create; |
| }; |
| |
| // Options for the <code>onCloseFileRequested()</code> event. |
| dictionary CloseFileRequestedOptions { |
| DOMString fileSystemId; |
| long requestId; |
| long openRequestId; |
| }; |
| |
| // Options for the <code>onReadFileRequested()</code> event. |
| dictionary ReadFileRequestedOptions { |
| DOMString fileSystemId; |
| long requestId; |
| long openRequestId; |
| double offset; |
| double length; |
| }; |
| |
| // Callback to receive the result of mount() function. |
| callback MountCallback = void([nodoc, instanceOf=DOMError] object error); |
| |
| // Callback to receive the result of unmount() function. |
| callback UnmountCallback = void([nodoc, instanceOf=DOMError] object error); |
| |
| // Callback to be called by the providing extension in case of a success. |
| callback ProviderSuccessCallback = void(); |
| |
| // Callback to be called by the providing extension in case of an error. |
| callback ProviderErrorCallback = void(ProviderError error); |
| |
| // Callback to handle an error raised from the browser. |
| [nocompile] callback ErrorCallback = void([instanceOf=DOMError] object error); |
| |
| // Success callback for the <code>onGetMetadataRequested</code> event. |
| callback MetadataCallback = void(EntryMetadata metadata); |
| |
| // Success callback for the <code>onReadDirectoryRequested</code> event. If |
| // more entries will be returned, then <code>hasMore</code> must be true, and |
| // it has to be called again with additional entries. If no more entries are |
| // available, then <code>hasMore</code> must be set to false. |
| callback EntriesCallback = void(ResourceEntry[] entries, bool hasMore); |
| |
| // Success callback for the <code>onReadFileRequested</code> event. If more |
| // data will be returned, then <code>hasMore</code> must be true, and it |
| // has to be called again with additional entries. If no more data is |
| // available, then <code>hasMore</code> must be set to false. |
| callback FileDataCallback = void(ArrayBuffer data, bool hasMore); |
| |
| interface Functions { |
| // Mounts a file system with the given <code>fileSystemId</code> and <code> |
| // displayName</code>. <code>displayName</code> will be shown in the left |
| // panel of Files.app. <code>displayName</code> can contain any characters |
| // including '/', but cannot be an empty string. <code>displayName</code> |
| // should be descriptive but doesn't have to be unique. Duplicate display |
| // names are uniquified by adding suffix like "(1)" in the Files app UI. |
| // |
| // If a file system with the passed <code>fileSystemId</code> is already |
| // mounted by this extension, then <code>errorCallback</code> will be called |
| // with <code>ProviderError.EXISTS</code> value. The <code>fileSystemId |
| // </code> must not be an empty string. |
| static void mount(MountOptions options, |
| MountCallback successCallback, |
| [nocompile] ErrorCallback errorCallback); |
| |
| // Unmounts a file system with the given <code>fileSystemId</code>. It |
| // should be called after <code>onUnmountRequested</code> is invoked. Also, |
| // the providing extension can decide to perform unmounting if not requested |
| // (eg. in case of lost connection, or a file error). If there is no file |
| // system with the requested id, or unmounting fails, then the |
| // <code>errorCallback</code> will be called. |
| static void unmount(UnmountOptions options, |
| UnmountCallback successCallback, |
| [nocompile] ErrorCallback errorCallback); |
| }; |
| |
| interface Events { |
| // Raised when unmounting for the file system with the <code>fileSystemId |
| // </code> identifier is requested. In the response, the <code>unmount |
| // </code> API method should be called together with <code>successCallback |
| // </code>. If unmounting is not possible (eg. due to a pending operation), |
| // then <code>errorCallback</code> must be called. |
| [maxListeners=1] static void onUnmountRequested( |
| UnmountRequestedOptions options, |
| ProviderSuccessCallback successCallback, |
| ProviderErrorCallback errorCallback); |
| |
| // Raised when metadata of a file or a directory at <code>entryPath</code> |
| // is requested. The metadata should be returned with the <code> |
| // successCallback</code> call. In case of an error, <code>errorCallback |
| // </code> must be called. |
| [maxListeners=1] static void onGetMetadataRequested( |
| GetMetadataRequestedOptions options, |
| MetadataCallback successCallback, |
| ProviderErrorCallback errorCallback); |
| |
| // Raised when contents of a directory at <code>directoryPath</code> are |
| // requested. The results should be returned in chunks by calling the <code> |
| // successCallback</code> several times. In case of an error, <code> |
| // errorCallback</code> must be called. |
| [maxListeners=1] static void onReadDirectoryRequested( |
| ReadDirectoryRequestedOptions options, |
| EntriesCallback successCallback, |
| ProviderErrorCallback errorCallback); |
| |
| // Raised when opening a file at <code>filePath</code> is requested. |
| // If <code>create</code> is set to <code>true</code> and the file does not |
| // exist, then it should be created. |
| [maxListeners=1] static void onOpenFileRequested( |
| OpenFileRequestedOptions options, |
| ProviderSuccessCallback successCallback, |
| ProviderErrorCallback errorCallback); |
| |
| // Raised when opening a file previously opened with <code>openRequestId |
| // </code> is requested to be closed. |
| [maxListeners=1] static void onCloseFileRequested( |
| CloseFileRequestedOptions options, |
| ProviderSuccessCallback successCallback, |
| ProviderErrorCallback errorCallback); |
| |
| // Raised when contents of a file opened previously with <code>openRequestId |
| // </code>. The results should be returned in chunks by calling <code> |
| // successCallback</code> several times. In case of an error, <code> |
| // errorCallback</code> must be called. |
| [maxListeners=1] static void onReadFileRequested( |
| ReadFileRequestedOptions options, |
| FileDataCallback successCallback, |
| ProviderErrorCallback errorCallback); |
| }; |
| }; |
| |