Home | History | Annotate | Download | only in api
      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
      3 // found in the LICENSE file.
      4 
      5 // Use the <code>chrome.image_writer</code> API to write images to
      6 // removable media.
      7 [nodoc] namespace imageWriterPrivate {
      8   // The different stages of a write call.
      9   //
     10   // <dl>
     11   //    <dt>confirmation</dt>
     12   //    <dd>The process starts by prompting the user for confirmation.</dd>
     13   //    <dt>download</dt>
     14   //    <dd>The image file is being download if a remote image was
     15   //    requested.</dd>
     16   //    <dt>verifyDownload</dt>
     17   //    <dd>The download is being verified to match the image hash, if
     18   //    provided</dd>
     19   //    <dt>unzip</dt>
     20   //    <dd>The image is being extracted from the downloaded zip file</dd>
     21   //    <dt>write</dt>
     22   //    <dd>The image is being written to disk.</dd>
     23   //    <dt>verifyWrite</dt>
     24   //    <dt>The system is verifying that the written image matches the
     25   //    downloaded image.</dd>
     26   // <dl>
     27   enum Stage {
     28     confirmation,
     29     download,
     30     verifyDownload,
     31     unzip,
     32     write,
     33     verifyWrite,
     34     unknown
     35   };
     36 
     37   // Options for writing an image.
     38   dictionary UrlWriteOptions {
     39     // If present, verify that the downloaded image matches this hash.
     40     DOMString? imageHash;
     41     // If true, save the downloaded image as a file using the user's downloads
     42     // preferences.
     43     boolean? saveAsDownload;
     44   };
     45 
     46   dictionary ProgressInfo {
     47     // The $ref:Stage that the write process is currently in.
     48     Stage stage;
     49     // Current progress within the stage.
     50     long percentComplete;
     51   };
     52 
     53   dictionary RemovableStorageDevice {
     54     DOMString storageUnitId;
     55     double capacity;
     56     DOMString vendor;
     57     DOMString model;
     58   };
     59 
     60   callback WriteImageCallback = void ();
     61   callback WriteCancelCallback = void ();
     62   callback ListRemovableStorageDevicesCallback = void (RemovableStorageDevice[] devices);
     63   callback DestroyPartitionsCallback = void ();
     64 
     65   interface Functions {
     66     // Write an image to the disk downloaded from the provided URL.  The
     67     // callback will be called when the entire operation completes, either
     68     // successfully or on error.
     69     //
     70     // |storageUnitId|: The identifier for the storage unit
     71     // |imageUrl|: The url of the image to download which will be written
     72     // to the storage unit identified by |storageUnitId|
     73     // |options|: Optional parameters if comparing the download with a given
     74     // hash or saving the download to the users Downloads folder instead of a
     75     // temporary directory is desired
     76     // |callback|: The callback which signifies that the write operation has
     77     // been started by the system and provides a unique ID for this operation.
     78     static void writeFromUrl(DOMString storageUnitId,
     79                              DOMString imageUrl,
     80                              optional UrlWriteOptions options,
     81                              WriteImageCallback callback);
     82 
     83     // Write an image to the disk, prompting the user to supply the image from
     84     // a local file.  The callback will be called when the entire operation
     85     // completes, either successfully or on error.
     86     //
     87     // |storageUnitId|: The identifier for the storage unit
     88     // |fileEntry|: The FileEntry object of the image to be burned.
     89     // |callback|: The callback which signifies that the write operation has
     90     // been started by the system and provides a unique ID for this operation.
     91     static void writeFromFile(DOMString storageUnitId,
     92                               [instanceOf=FileEntry] object fileEntry,
     93                               WriteImageCallback callback);
     94 
     95     // Cancel a current write operation.
     96     //
     97     // |callback|: The callback which is triggered with the write is
     98     // successfully cancelled, passing the $ref:ProgressInfo of the operation at
     99     // the time it was cancelled.
    100     static boolean cancelWrite(WriteCancelCallback callback);
    101 
    102     // Destroys the partition table of a disk, effectively erasing it.  This is
    103     // a fairly quick operation and so it does not have complex stages or
    104     // progress information.  However, it can fail and call the callback with
    105     // an error.
    106     //
    107     // |storageUnitId|: The identifier of the storage unit to wipe
    108     // |callback|: A callback which is called when the operation is complete.
    109     static void destroyPartitions(DOMString storageUnitId,
    110                                   DestroyPartitionsCallback callback);
    111 
    112     // List all the removable block devices currently attached to the system.
    113     // |callback|: A callback called with a list of removable storage devices
    114     static void listRemovableStorageDevices(
    115         ListRemovableStorageDevicesCallback callback);
    116   };
    117 
    118   interface Events {
    119     // Fires periodically throughout the writing operation and at least once per
    120     // stage.
    121     static void onWriteProgress(ProgressInfo info);
    122 
    123     // Fires when the write operation has completely finished, such as all
    124     // devices being finalized and resources released.
    125     static void onWriteComplete();
    126 
    127     // Fires when an error occured during writing, passing the $ref:ProgressInfo
    128     // of the operation at the time the error occured.
    129     static void onWriteError(ProgressInfo info, DOMString error);
    130 
    131     // Fires when a removable storage device is inserted.
    132     static void onDeviceInserted(RemovableStorageDevice device);
    133 
    134     // Fires when a removable storage device is removed.
    135     static void onDeviceRemoved(RemovableStorageDevice device);
    136   };
    137 
    138 };
    139 
    140