author Ben Kelly <>
Tue, 13 Sep 2016 20:14:02 -0700
changeset 313770 12ee5e6a9c9d06c102e2f8bb8ad3ed31494d857a
parent 263391 ffd40920af0c9020488448939e550637c563b5ed
permissions -rw-r--r--
Bug 1300658 P5 Make service worker APIs use the MainThreadTaskQueue. r=baku

/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 */

dictionary DeviceStorageEnumerationParameters {
  Date since;

interface DeviceStorage : EventTarget {
  attribute EventHandler onchange;

  DOMRequest? add(Blob? aBlob);
  DOMRequest? addNamed(Blob? aBlob, DOMString aName);

   * Append data to a given file.
   * If the file doesn't exist, a "NotFoundError" event will be dispatched.
   * In the same time, it is a request.onerror case.
   * If the file exists, it will be opened with the following permission:
   *                                                "PR_WRONLY|PR_CREATE_FILE|PR_APPEND".
   * The function will return null when blob file is null and other unexpected situations.
   * @parameter aBlob: A Blob object representing the data to append
   * @parameter aName: A string representing the full name (path + file name) of the file
   *                   to append data to.
  DOMRequest? appendNamed(Blob? aBlob, DOMString aName);

  DOMRequest get(DOMString aName);
  DOMRequest getEditable(DOMString aName);
  DOMRequest delete(DOMString aName);

  DOMCursor enumerate(optional DeviceStorageEnumerationParameters options);
  DOMCursor enumerate(DOMString path,
                      optional DeviceStorageEnumerationParameters options);
  DOMCursor enumerateEditable(optional DeviceStorageEnumerationParameters options);
  DOMCursor enumerateEditable(DOMString path,
                              optional DeviceStorageEnumerationParameters options);

  DOMRequest freeSpace();
  DOMRequest usedSpace();
  DOMRequest available();
  DOMRequest storageStatus();
  DOMRequest format();
  DOMRequest mount();
  DOMRequest unmount();

  // Note that the storageName is just a name (like sdcard), and doesn't
  // include any path information.
  readonly attribute DOMString storageName;

  // Indicates if the storage area denoted by storageName is capable of
  // being mounted and unmounted.
  readonly attribute boolean canBeMounted;

  // Indicates if the storage area denoted by storageName is capable of
  // being shared and unshared.
  readonly attribute boolean canBeShared;

  // Indicates if the storage area denoted by storageName is capable of
  // being formatted.
  readonly attribute boolean canBeFormatted;

  // Determines if this storage area is the one which will be used by default
  // for storing new files.
  readonly attribute boolean default;

  // Indicates if the storage area denoted by storageName is removable
  readonly attribute boolean isRemovable;

  // True if the storage area is close to being full
  readonly attribute boolean lowDiskSpace;

  // XXXbz what type does this really return?
  Promise<any> getRoot();