123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359 |
- /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
- /* 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 http://mozilla.org/MPL/2.0/. */
- // Keeps track of ongoing downloads, in the form of nsIDownload's.
- #include "nsISupports.idl"
- interface nsIURI;
- interface nsIFile;
- interface nsIDownload;
- interface nsICancelable;
- interface nsIMIMEInfo;
- interface nsIDownloadProgressListener;
- interface nsISimpleEnumerator;
- interface mozIStorageConnection;
- [scriptable, function, uuid(0c07ffeb-791b-49f3-ae38-2c331fd55a52)]
- interface nsIDownloadManagerResult : nsISupports {
- /**
- * Process an asynchronous result from getDownloadByGUID.
- *
- * @param aStatus The result code of the operation:
- * * NS_OK: an item was found. No other success values are returned.
- * * NS_ERROR_NOT_AVAILABLE: no such item was found.
- * * Other error values are possible, but less well-defined.
- */
- void handleResult(in nsresult aStatus, in nsIDownload aDownload);
- };
- [scriptable, uuid(b29aac15-7ec4-4ab3-a53b-08f78aed3b34)]
- interface nsIDownloadManager : nsISupports {
- /**
- * Download type for generic file download.
- */
- const short DOWNLOAD_TYPE_DOWNLOAD = 0;
- /**
- * Download state for uninitialized download object.
- */
- const short DOWNLOAD_NOTSTARTED = -1;
- /**
- * Download is currently transferring data.
- */
- const short DOWNLOAD_DOWNLOADING = 0;
- /**
- * Download completed including any processing of the target
- * file. (completed)
- */
- const short DOWNLOAD_FINISHED = 1;
- /**
- * Transfer failed due to error. (completed)
- */
- const short DOWNLOAD_FAILED = 2;
- /**
- * Download was canceled by the user. (completed)
- */
- const short DOWNLOAD_CANCELED = 3;
- /**
- * Transfer was paused by the user.
- */
- const short DOWNLOAD_PAUSED = 4;
- /**
- * Download is active but data has not yet been received.
- */
- const short DOWNLOAD_QUEUED = 5;
- /**
- * Transfer request was blocked by parental controls proxies. (completed)
- */
- const short DOWNLOAD_BLOCKED_PARENTAL = 6;
- /**
- * Transferred download is being scanned by virus scanners.
- */
- const short DOWNLOAD_SCANNING = 7;
- /**
- * A virus was detected in the download. The target will most likely
- * no longer exist. (completed)
- */
- const short DOWNLOAD_DIRTY = 8;
- /**
- * Win specific: Request was blocked by zone policy settings.
- * (see bug #416683) (completed)
- */
- const short DOWNLOAD_BLOCKED_POLICY = 9;
- /**
- * Creates an nsIDownload and adds it to be managed by the download manager.
- *
- * @param aSource The source URI of the transfer. Must not be null.
- *
- * @param aTarget The target URI of the transfer. Must not be null.
- *
- * @param aDisplayName The user-readable description of the transfer.
- * Can be empty.
- *
- * @param aMIMEInfo The MIME info associated with the target,
- * including MIME type and helper app when appropriate.
- * This parameter is optional.
- *
- * @param startTime Time when the download started
- *
- * @param aTempFile The location of a temporary file; i.e. a file in which
- * the received data will be stored, but which is not
- * equal to the target file. (will be moved to the real
- * target by the DownloadManager, when the download is
- * finished). This will be null for all callers except for
- * nsExternalHelperAppHandler. Addons should generally pass
- * null for aTempFile. This will be moved to the real target
- * by the download manager when the download is finished,
- * and the action indicated by aMIMEInfo will be executed.
- *
- * @param aCancelable An object that can be used to abort the download.
- * Must not be null.
- *
- * @param aIsPrivate Used to determine the privacy status of the new download.
- * If true, the download is stored in a manner that leaves
- * no permanent trace outside of the current private session.
- *
- * @return The newly created download item with the passed-in properties.
- *
- * @note This does not actually start a download. If you want to add and
- * start a download, you need to create an nsIWebBrowserPersist, pass it
- * as the aCancelable object, call this method, set the progressListener
- * as the returned download object, then call saveURI.
- */
- nsIDownload addDownload(in short aDownloadType,
- in nsIURI aSource,
- in nsIURI aTarget,
- in AString aDisplayName,
- in nsIMIMEInfo aMIMEInfo,
- in PRTime aStartTime,
- in nsIFile aTempFile,
- in nsICancelable aCancelable,
- in boolean aIsPrivate);
- /**
- * Retrieves a download managed by the download manager. This can be one that
- * is in progress, or one that has completed in the past and is stored in the
- * database.
- *
- * @param aID The unique ID of the download.
- * @return The download with the specified ID.
- * @throws NS_ERROR_NOT_AVAILABLE if the download is not in the database.
- */
- nsIDownload getDownload(in unsigned long aID);
- /**
- * Retrieves a download managed by the download manager. This can be one that
- * is in progress, or one that has completed in the past and is stored in the
- * database. The result of this method is returned via an asynchronous callback,
- * the parameter of which will be an nsIDownload object, or null if none exists
- * with the provided GUID.
- *
- * @param aGUID The unique GUID of the download.
- * @param aCallback The callback to invoke with the result of the search.
- */
- void getDownloadByGUID(in ACString aGUID, in nsIDownloadManagerResult aCallback);
- /**
- * Cancels the download with the specified ID if it's currently in-progress.
- * This calls cancel(NS_BINDING_ABORTED) on the nsICancelable provided by the
- * download.
- *
- * @param aID The unique ID of the download.
- * @throws NS_ERROR_FAILURE if the download is not in-progress.
- */
- void cancelDownload(in unsigned long aID);
- /**
- * Removes the download with the specified id if it's not currently
- * in-progress. Whereas cancelDownload simply cancels the transfer, but
- * retains information about it, removeDownload removes all knowledge of it.
- *
- * Also notifies observers of the "download-manager-remove-download-guid"
- * topic with the download guid as the subject to allow any DM consumers to
- * react to the removal.
- *
- * Also may notify observers of the "download-manager-remove-download" topic
- * with the download id as the subject, if the download removed is public
- * or if global private browsing mode is in use. This notification is deprecated;
- * the guid notification should be relied upon instead.
- *
- * @param aID The unique ID of the download.
- * @throws NS_ERROR_FAILURE if the download is active.
- */
- void removeDownload(in unsigned long aID);
- /**
- * Removes all inactive downloads that were started inclusively within the
- * specified time frame.
- *
- * @param aBeginTime
- * The start time to remove downloads by in microseconds.
- * @param aEndTime
- * The end time to remove downloads by in microseconds.
- */
- void removeDownloadsByTimeframe(in long long aBeginTime,
- in long long aEndTime);
- /**
- * Pause the specified download.
- *
- * @param aID The unique ID of the download.
- * @throws NS_ERROR_FAILURE if the download is not in-progress.
- */
- void pauseDownload(in unsigned long aID);
- /**
- * Resume the specified download.
- *
- * @param aID The unique ID of the download.
- * @throws NS_ERROR_FAILURE if the download is not in-progress.
- */
- void resumeDownload(in unsigned long aID);
- /**
- * Retries a failed download.
- *
- * @param aID The unique ID of the download.
- * @throws NS_ERROR_NOT_AVAILALE if the download id is not known.
- * @throws NS_ERROR_FAILURE if the download is not in the following states:
- * nsIDownloadManager::DOWNLOAD_CANCELED
- * nsIDownloadManager::DOWNLOAD_FAILED
- */
- void retryDownload(in unsigned long aID);
- /**
- * The database connection to the downloads database.
- */
- readonly attribute mozIStorageConnection DBConnection;
- readonly attribute mozIStorageConnection privateDBConnection;
- /**
- * Whether or not there are downloads that can be cleaned up (removed)
- * i.e. downloads that have completed, have failed or have been canceled.
- * In global private browsing mode, this reports the status of the relevant
- * private or public downloads. In per-window mode, it only reports for
- * public ones.
- */
- readonly attribute boolean canCleanUp;
- /**
- * Whether or not there are private downloads that can be cleaned up (removed)
- * i.e. downloads that have completed, have failed or have been canceled.
- */
- readonly attribute boolean canCleanUpPrivate;
- /**
- * Removes completed, failed, and canceled downloads from the list.
- * In global private browsing mode, this operates on the relevant
- * private or public downloads. In per-window mode, it only operates
- * on public ones.
- *
- * Also notifies observers of the "download-manager-remove-download-gui"
- * and "download-manager-remove-download" topics with a null subject to
- * allow any DM consumers to react to the removals.
- */
- void cleanUp();
- /**
- * Removes completed, failed, and canceled downloads from the list
- * of private downloads.
- *
- * Also notifies observers of the "download-manager-remove-download-gui"
- * and "download-manager-remove-download" topics with a null subject to
- * allow any DM consumers to react to the removals.
- */
- void cleanUpPrivate();
- /**
- * The number of files currently being downloaded.
- *
- * In global private browsing mode, this reports the status of the relevant
- * private or public downloads. In per-window mode, it only reports public
- * ones.
- */
- readonly attribute long activeDownloadCount;
- /**
- * The number of private files currently being downloaded.
- */
- readonly attribute long activePrivateDownloadCount;
- /**
- * An enumeration of active nsIDownloads
- *
- * In global private browsing mode, this reports the status of the relevant
- * private or public downloads. In per-window mode, it only reports public
- * ones.
- */
- readonly attribute nsISimpleEnumerator activeDownloads;
- /**
- * An enumeration of active private nsIDownloads
- */
- readonly attribute nsISimpleEnumerator activePrivateDownloads;
- /**
- * Adds a listener to the download manager. It is expected that this
- * listener will only access downloads via their deprecated integer id attribute,
- * and when global private browsing compatibility mode is disabled, this listener
- * will receive no notifications for downloads marked private.
- */
- void addListener(in nsIDownloadProgressListener aListener);
- /**
- * Adds a listener to the download manager. This listener must be able to
- * understand and use the guid attribute of downloads for all interactions
- * with the download manager.
- */
- void addPrivacyAwareListener(in nsIDownloadProgressListener aListener);
- /**
- * Removes a listener from the download manager.
- */
- void removeListener(in nsIDownloadProgressListener aListener);
- /**
- * Returns the platform default downloads directory.
- */
- readonly attribute nsIFile defaultDownloadsDirectory;
- /**
- * Returns the user configured downloads directory.
- * The path is dependent on two user configurable prefs
- * set in preferences:
- *
- * browser.download.folderList
- * Indicates the location users wish to save downloaded
- * files too.
- * Values:
- * 0 - The desktop is the default download location.
- * 1 - The system's downloads folder is the default download location.
- * 2 - The default download location is elsewhere as specified in
- * browser.download.dir. If invalid, userDownloadsDirectory
- * will fallback on defaultDownloadsDirectory.
- *
- * browser.download.dir -
- * A local path the user may have selected at some point
- * where downloaded files are saved. The use of which is
- * enabled when folderList equals 2.
- */
- readonly attribute nsIFile userDownloadsDirectory;
- };
|