| // 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.image_writer</code> API to write images to |
| // removable media. |
| // |
| // See the design doc for a detailed description of this API. |
| // https://goo.gl/KzMEFq |
| namespace imageWriterPrivate { |
| // The different stages of a write call. |
| // |
| // <dl> |
| // <dt>confirmation</dt> |
| // <dd>The process starts by prompting the user for confirmation.</dd> |
| // <dt>download</dt> |
| // <dd>The image file is being download if a remote image was |
| // requested.</dd> |
| // <dt>verifyDownload</dt> |
| // <dd>The download is being verified to match the image hash, if |
| // provided</dd> |
| // <dt>unzip</dt> |
| // <dd>The image is being extracted from the downloaded zip file</dd> |
| // <dt>write</dt> |
| // <dd>The image is being written to disk.</dd> |
| // <dt>verifyWrite</dt> |
| // <dt>The system is verifying that the written image matches the |
| // downloaded image.</dd> |
| // <dl> |
| enum Stage { |
| confirmation, |
| download, |
| verifyDownload, |
| unzip, |
| write, |
| verifyWrite, |
| unknown |
| }; |
| |
| // Options for writing an image. |
| dictionary UrlWriteOptions { |
| // If present, verify that the downloaded image matches this hash. |
| DOMString? imageHash; |
| // If true, save the downloaded image as a file using the user's downloads |
| // preferences. |
| boolean? saveAsDownload; |
| }; |
| |
| dictionary ProgressInfo { |
| // The $(ref:Stage) that the write process is currently in. |
| Stage stage; |
| // Current progress within the stage. |
| long percentComplete; |
| }; |
| |
| dictionary RemovableStorageDevice { |
| DOMString storageUnitId; |
| double capacity; |
| DOMString vendor; |
| DOMString model; |
| boolean removable; |
| }; |
| |
| callback WriteImageCallback = void (); |
| callback WriteCancelCallback = void (); |
| callback ListRemovableStorageDevicesCallback = void (RemovableStorageDevice[] devices); |
| callback DestroyPartitionsCallback = void (); |
| |
| interface Functions { |
| // Write an image to the disk downloaded from the provided URL. The |
| // callback will be called when the entire operation completes, either |
| // successfully or on error. |
| // |
| // |storageUnitId|: The identifier for the storage unit |
| // |imageUrl|: The url of the image to download which will be written |
| // to the storage unit identified by |storageUnitId| |
| // |options|: Optional parameters if comparing the download with a given |
| // hash or saving the download to the users Downloads folder instead of a |
| // temporary directory is desired |
| // |callback|: The callback which signifies that the write operation has |
| // been started by the system and provides a unique ID for this operation. |
| static void writeFromUrl(DOMString storageUnitId, |
| DOMString imageUrl, |
| optional UrlWriteOptions options, |
| WriteImageCallback callback); |
| |
| // Write an image to the disk, prompting the user to supply the image from |
| // a local file. The callback will be called when the entire operation |
| // completes, either successfully or on error. |
| // |
| // |storageUnitId|: The identifier for the storage unit |
| // |fileEntry|: The FileEntry object of the image to be burned. |
| // |callback|: The callback which signifies that the write operation has |
| // been started by the system and provides a unique ID for this operation. |
| static void writeFromFile(DOMString storageUnitId, |
| [instanceOf=FileEntry] object fileEntry, |
| WriteImageCallback callback); |
| |
| // Cancel a current write operation. |
| // |
| // |callback|: The callback which is triggered with the write is |
| // successfully cancelled, passing the $(ref:ProgressInfo) of the operation at |
| // the time it was cancelled. |
| static boolean cancelWrite(WriteCancelCallback callback); |
| |
| // Destroys the partition table of a disk, effectively erasing it. This is |
| // a fairly quick operation and so it does not have complex stages or |
| // progress information, just a write phase. |
| // |
| // |storageUnitId|: The identifier of the storage unit to wipe |
| // |callback|: A callback that triggers when the operation has been |
| // successfully started. |
| static void destroyPartitions(DOMString storageUnitId, |
| DestroyPartitionsCallback callback); |
| |
| // List all the removable block devices currently attached to the system. |
| // |callback|: A callback called with a list of removable storage devices |
| static void listRemovableStorageDevices( |
| ListRemovableStorageDevicesCallback callback); |
| }; |
| |
| interface Events { |
| // Fires periodically throughout the writing operation and at least once per |
| // stage. |
| static void onWriteProgress(ProgressInfo info); |
| |
| // Fires when the write operation has completely finished, such as all |
| // devices being finalized and resources released. |
| static void onWriteComplete(); |
| |
| // Fires when an error occured during writing, passing the $(ref:ProgressInfo) |
| // of the operation at the time the error occured. |
| static void onWriteError(ProgressInfo info, DOMString error); |
| |
| // Fires when a removable storage device is inserted. |
| static void onDeviceInserted(RemovableStorageDevice device); |
| |
| // Fires when a removable storage device is removed. |
| static void onDeviceRemoved(RemovableStorageDevice device); |
| }; |
| |
| }; |
| |