| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // Use the <code>chrome.fileSystemProvider</code> API to create file systems, | 5 // Use the <code>chrome.fileSystemProvider</code> API to create file systems, |
| 6 // that can be accessible from the file manager on Chrome OS. | 6 // that can be accessible from the file manager on Chrome OS. |
| 7 [platforms=("chromeos"), | 7 [platforms=("chromeos"), |
| 8 implemented_in="chrome/browser/chromeos/extensions/file_system_provider/file_sy
stem_provider_api.h"] | 8 implemented_in="chrome/browser/chromeos/extensions/file_system_provider/file_sy
stem_provider_api.h"] |
| 9 namespace fileSystemProvider { | 9 namespace fileSystemProvider { |
| 10 // Error codes used by providing extensions in response to requests. For | 10 // Error codes used by providing extensions in response to requests. For |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 INVALID_URL, | 27 INVALID_URL, |
| 28 IO | 28 IO |
| 29 }; | 29 }; |
| 30 | 30 |
| 31 // Mode of opening a file. Used by <code>onOpenFileRequested</code>. | 31 // Mode of opening a file. Used by <code>onOpenFileRequested</code>. |
| 32 enum OpenFileMode { | 32 enum OpenFileMode { |
| 33 READ, | 33 READ, |
| 34 WRITE | 34 WRITE |
| 35 }; | 35 }; |
| 36 | 36 |
| 37 // Type of a change detected on the observed directory. |
| 38 enum ChangeType { |
| 39 CHANGED, |
| 40 DELETED |
| 41 }; |
| 42 |
| 37 // Represents metadata of a file or a directory. | 43 // Represents metadata of a file or a directory. |
| 38 dictionary EntryMetadata { | 44 dictionary EntryMetadata { |
| 39 // True if it is a directory. | 45 // True if it is a directory. |
| 40 boolean isDirectory; | 46 boolean isDirectory; |
| 41 | 47 |
| 42 // Name of this entry (not full path name). | 48 // Name of this entry (not full path name). |
| 43 DOMString name; | 49 DOMString name; |
| 44 | 50 |
| 45 // File size in bytes. | 51 // File size in bytes. |
| 46 double size; | 52 double size; |
| 47 | 53 |
| 48 // The last modified time of this entry. | 54 // The last modified time of this entry. |
| 49 [instanceOf=Date] object modificationTime; | 55 [instanceOf=Date] object modificationTime; |
| 50 | 56 |
| 51 // Mime type for the entry. | 57 // Mime type for the entry. |
| 52 DOMString? mimeType; | 58 DOMString? mimeType; |
| 53 | 59 |
| 54 // Thumbnail image as a data URI in either PNG, JPEG or WEBP format, at most | 60 // Thumbnail image as a data URI in either PNG, JPEG or WEBP format, at most |
| 55 // 32 KB in size. Optional, but can be provided only when explicitly | 61 // 32 KB in size. Optional, but can be provided only when explicitly |
| 56 // requested by the <code>onGetMetadataRequested</code> event. | 62 // requested by the <code>onGetMetadataRequested</code> event. |
| 57 DOMString? thumbnail; | 63 DOMString? thumbnail; |
| 58 }; | 64 }; |
| 59 | 65 |
| 66 // Represents an observed entry. |
| 67 dictionary ObservedEntry { |
| 68 // The path of the entry being observed. |
| 69 DOMString entryPath; |
| 70 |
| 71 // Whether observing should include all child entries recursively. |
| 72 boolean recursive; |
| 73 |
| 74 // Tag used by the last notification for the observed path. |
| 75 DOMString? lastTag; |
| 76 }; |
| 77 |
| 60 // Represents a mounted file system. | 78 // Represents a mounted file system. |
| 61 dictionary FileSystemInfo { | 79 dictionary FileSystemInfo { |
| 62 // The identifier of the file system. | 80 // The identifier of the file system. |
| 63 DOMString fileSystemId; | 81 DOMString fileSystemId; |
| 64 | 82 |
| 65 // A human-readable name for the file system. | 83 // A human-readable name for the file system. |
| 66 DOMString displayName; | 84 DOMString displayName; |
| 67 | 85 |
| 68 // Whether the file system supports operations which may change contents | 86 // Whether the file system supports operations which may change contents |
| 69 // of the file system (such as creating, deleting or writing to files). | 87 // of the file system (such as creating, deleting or writing to files). |
| 70 boolean writable; | 88 boolean writable; |
| 89 |
| 90 // Whether the file system supports the <code>tag</code> field for observing |
| 91 // directories. |
| 92 [nodoc] boolean? supportsNotifyTag; |
| 93 |
| 94 // List of observed entries. |
| 95 [nodoc] ObservedEntry[] observedEntries; |
| 71 }; | 96 }; |
| 72 | 97 |
| 73 // Options for the <code>mount()</code> method. | 98 // Options for the <code>mount()</code> method. |
| 74 dictionary MountOptions { | 99 dictionary MountOptions { |
| 75 // The string indentifier of the file system. Must be unique per each | 100 // The string indentifier of the file system. Must be unique per each |
| 76 // extension. | 101 // extension. |
| 77 DOMString fileSystemId; | 102 DOMString fileSystemId; |
| 78 | 103 |
| 79 // A human-readable name for the file system. | 104 // A human-readable name for the file system. |
| 80 DOMString displayName; | 105 DOMString displayName; |
| 81 | 106 |
| 82 // Whether the file system supports operations which may change contents | 107 // Whether the file system supports operations which may change contents |
| 83 // of the file system (such as creating, deleting or writing to files). | 108 // of the file system (such as creating, deleting or writing to files). |
| 84 boolean? writable; | 109 boolean? writable; |
| 110 |
| 111 // Whether the file system supports the <code>tag</code> field for observed |
| 112 // directories. Required in order to enable the internal cache. |
| 113 [nodoc] boolean? supportsNotifyTag; |
| 85 }; | 114 }; |
| 86 | 115 |
| 87 // Options for the <code>unmount()</code> method. | 116 // Options for the <code>unmount()</code> method. |
| 88 dictionary UnmountOptions { | 117 dictionary UnmountOptions { |
| 89 // The identifier of the file system to be unmounted. | 118 // The identifier of the file system to be unmounted. |
| 90 DOMString fileSystemId; | 119 DOMString fileSystemId; |
| 91 }; | 120 }; |
| 92 | 121 |
| 93 // Options for the <code>onUnmountRequested()</code> event. | 122 // Options for the <code>onUnmountRequested()</code> event. |
| 94 dictionary UnmountRequestedOptions { | 123 dictionary UnmountRequestedOptions { |
| (...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 280 // The identifier of the file system related to this operation. | 309 // The identifier of the file system related to this operation. |
| 281 DOMString fileSystemId; | 310 DOMString fileSystemId; |
| 282 | 311 |
| 283 // The unique identifier of this request. | 312 // The unique identifier of this request. |
| 284 long requestId; | 313 long requestId; |
| 285 | 314 |
| 286 // An ID of the request to be aborted. | 315 // An ID of the request to be aborted. |
| 287 long operationRequestId; | 316 long operationRequestId; |
| 288 }; | 317 }; |
| 289 | 318 |
| 319 // Options for the <code>onObserveDirectoryRequested()</code> event. |
| 320 dictionary ObserveDirectoryRequestedOptions { |
| 321 // The identifier of the file system related to this operation. |
| 322 DOMString fileSystemId; |
| 323 |
| 324 // The unique identifier of this request. |
| 325 long requestId; |
| 326 |
| 327 // The path of the directory to be observed. |
| 328 DOMString directoryPath; |
| 329 |
| 330 // Whether observing should include all child entries recursively. |
| 331 boolean recursive; |
| 332 }; |
| 333 |
| 334 // Options for the <code>onUnobserveEntryRequested()</code> event. |
| 335 dictionary UnobserveEntryRequestedOptions { |
| 336 // The identifier of the file system related to this operation. |
| 337 DOMString fileSystemId; |
| 338 |
| 339 // The unique identifier of this request. |
| 340 long requestId; |
| 341 |
| 342 // The path of the entry to be not observed anymore. |
| 343 DOMString entryPath; |
| 344 }; |
| 345 |
| 346 // Information about a change happened to an entry within the observed |
| 347 // directory. |
| 348 dictionary ChildChange { |
| 349 // The path of the changed entry. |
| 350 DOMString entryPath; |
| 351 |
| 352 // The type of the change which happened to the entry. |
| 353 ChangeType changeType; |
| 354 }; |
| 355 |
| 356 // Options for the <code>Notify()</code> method. |
| 357 dictionary NotifyOptions { |
| 358 // The identifier of the file system related to this change. |
| 359 DOMString fileSystemId; |
| 360 |
| 361 // The path of the observed entry. |
| 362 DOMString observedPath; |
| 363 |
| 364 // The type of the change which happened to the observed entry. If it is |
| 365 // DELETED, then the observed entry will be automatically removed from the |
| 366 // list of observed entries. |
| 367 ChangeType changeType; |
| 368 |
| 369 // List of changes to entries within the observed directory. |
| 370 ChildChange[]? childChanges; |
| 371 |
| 372 // Tag for the notification. Required if the file system was mounted with |
| 373 // the <code>supportsNotifyTag</code> option. Note, that this flag is |
| 374 // necessary to provide notifications about changes which changed even |
| 375 // when the system was shutdown. |
| 376 DOMString? tag; |
| 377 }; |
| 378 |
| 290 // Callback to receive the result of mount() function. | 379 // Callback to receive the result of mount() function. |
| 291 callback MountCallback = void([nodoc, instanceOf=DOMError] object error); | 380 callback MountCallback = void([nodoc, instanceOf=DOMError] object error); |
| 292 | 381 |
| 293 // Callback to receive the result of unmount() function. | 382 // Callback to receive the result of unmount() function. |
| 294 callback UnmountCallback = void([nodoc, instanceOf=DOMError] object error); | 383 callback UnmountCallback = void([nodoc, instanceOf=DOMError] object error); |
| 295 | 384 |
| 296 // Callback to receive the result of getAll() function. | 385 // Callback to receive the result of getAll() function. |
| 297 callback GetAllCallback = void(FileSystemInfo[] fileSystems); | 386 callback GetAllCallback = void(FileSystemInfo[] fileSystems); |
| 298 | 387 |
| 299 // Callback to handle an error raised from the browser. | 388 // Callback to handle an error raised from the browser. |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 344 // the providing extension can decide to perform unmounting if not requested | 433 // the providing extension can decide to perform unmounting if not requested |
| 345 // (eg. in case of lost connection, or a file error). If there is no file | 434 // (eg. in case of lost connection, or a file error). If there is no file |
| 346 // system with the requested id, or unmounting fails, then the | 435 // system with the requested id, or unmounting fails, then the |
| 347 // <code>errorCallback</code> will be called. | 436 // <code>errorCallback</code> will be called. |
| 348 static void unmount(UnmountOptions options, | 437 static void unmount(UnmountOptions options, |
| 349 UnmountCallback successCallback, | 438 UnmountCallback successCallback, |
| 350 [nocompile] ErrorCallback errorCallback); | 439 [nocompile] ErrorCallback errorCallback); |
| 351 | 440 |
| 352 // Returns all file systems mounted by the extension. | 441 // Returns all file systems mounted by the extension. |
| 353 static void getAll(GetAllCallback callback); | 442 static void getAll(GetAllCallback callback); |
| 443 |
| 444 // Notifies about changes in the observed directory at <code> |
| 445 // observedPath</code>. If the file system is mounted with <code> |
| 446 // supportsNofityTag</code>, then <code>tag</code> must be provided, and |
| 447 // all changes since the last notification always reported, even if the |
| 448 // system was shutdown. The last tag can be obtained with <code> |
| 449 // getAll()</code>. Note, that <code>tag</code> is required in order to |
| 450 // enable the internal cache. |
| 451 // |
| 452 // Value of <code>tag</code> can be any string which is unique per call, |
| 453 // so it's possible to identify the last registered notification. Eg. if |
| 454 // the providing extension starts after a reboot, and the last registered |
| 455 // notification's tag is equal to "123", then it should call notify() for |
| 456 // all changes which happened since the change tagged as "123". |
| 457 // |
| 458 // Not all providers are able to provide a tag, but if the file system has |
| 459 // a changelog, then the tag can be eg. a change number, or a revision |
| 460 // number. |
| 461 [nodoc] static void notify(NotifyOptions options); |
| 354 }; | 462 }; |
| 355 | 463 |
| 356 interface Events { | 464 interface Events { |
| 357 // Raised when unmounting for the file system with the <code>fileSystemId | 465 // Raised when unmounting for the file system with the <code>fileSystemId |
| 358 // </code> identifier is requested. In the response, the <code>unmount | 466 // </code> identifier is requested. In the response, the <code>unmount |
| 359 // </code> API method must be called together with <code>successCallback | 467 // </code> API method must be called together with <code>successCallback |
| 360 // </code>. If unmounting is not possible (eg. due to a pending operation), | 468 // </code>. If unmounting is not possible (eg. due to a pending operation), |
| 361 // then <code>errorCallback</code> must be called. | 469 // then <code>errorCallback</code> must be called. |
| 362 [maxListeners=1] static void onUnmountRequested( | 470 [maxListeners=1] static void onUnmountRequested( |
| 363 UnmountRequestedOptions options, | 471 UnmountRequestedOptions options, |
| (...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 462 // is requested. The operation executed with <code>operationRequestId</code> | 570 // is requested. The operation executed with <code>operationRequestId</code> |
| 463 // must be immediately stopped and <code>successCallback</code> of this | 571 // must be immediately stopped and <code>successCallback</code> of this |
| 464 // abort request executed. If aborting fails, then <code>errorCallback | 572 // abort request executed. If aborting fails, then <code>errorCallback |
| 465 // </code> must be called. Note, that callbacks of the aborted operation | 573 // </code> must be called. Note, that callbacks of the aborted operation |
| 466 // must not be called, as they will be ignored. Despite calling <code> | 574 // must not be called, as they will be ignored. Despite calling <code> |
| 467 // errorCallback</code>, the request may be forcibly aborted. | 575 // errorCallback</code>, the request may be forcibly aborted. |
| 468 [maxListeners=1] static void onAbortRequested( | 576 [maxListeners=1] static void onAbortRequested( |
| 469 AbortRequestedOptions options, | 577 AbortRequestedOptions options, |
| 470 ProviderSuccessCallback successCallback, | 578 ProviderSuccessCallback successCallback, |
| 471 ProviderErrorCallback errorCallback); | 579 ProviderErrorCallback errorCallback); |
| 580 |
| 581 // Raised when setting a new directory watcher is requested. If an error |
| 582 // occurs, then <code>errorCallback</code> must be called. |
| 583 [maxListeners=1, nodoc] static void onObserveDirectoryRequested( |
| 584 ObserveDirectoryRequestedOptions options, |
| 585 ProviderSuccessCallback successCallback, |
| 586 ProviderErrorCallback errorCallback); |
| 587 |
| 588 // Raised when the entry should no longer be observed. If an error occurs, |
| 589 // then <code>errorCallback</code> must be called. |
| 590 [maxListeners=1, nodoc] static void onUnobserveEntryRequested( |
| 591 UnobserveEntryRequestedOptions options, |
| 592 ProviderSuccessCallback successCallback, |
| 593 ProviderErrorCallback errorCallback); |
| 472 }; | 594 }; |
| 473 }; | 595 }; |
| 474 | 596 |
| OLD | NEW |