diff -r 666f914201fb -r 2fe1408b6811 epoc32/include/mw/httpdownloadmgrcommon.h --- a/epoc32/include/mw/httpdownloadmgrcommon.h Tue Nov 24 13:55:44 2009 +0000 +++ b/epoc32/include/mw/httpdownloadmgrcommon.h Tue Mar 16 16:12:26 2010 +0000 @@ -1,1 +1,804 @@ -httpdownloadmgrcommon.h +/* +* Copyright (c) 2002-2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Common constants used in Download Manager Engine +* +*/ + + + +#ifndef HTTPDOWNLOADMGRCOMMON_H +#define HTTPDOWNLOADMGRCOMMON_H + +// INCLUDES +#include + +// CONSTANTS +const TInt KMaxUrlLength = 2048; +const TInt KMaxChunkSize = 4096; +const TUint KMaxDefAttrLength = 32; +const TUint KMaxRealmLength = 128; +const TUint KMaxContentTypeLength = 256; +const TUint KMaxDispositionTypeLength = 256; +const TInt32 KDefaultPort = 80; +const TInt32 KDefaultContentLength = -1; +const TUint KMaxGeneralHeaderFieldLength = 256; +/** Length of a digest hash when represented in hex */ +const TInt KHashLength = 32; +/** Length of a digest hash before converting to hex. */ +const TInt KRawHashLength = 16; +/** Default FOTA package id. Default means no FOTA download! */ +const TInt32 KDefaultFotaPckgId = -1; +/** Non-MediaObject index */ +const TInt32 KNonMoIndex = 0; +/** Index of first media object */ +const TInt32 KFirstMoIndex = 1; + +const TInt KColon( ':' ); +const TInt KSemiColon( ';' ); +const TInt KQuote( '"' ); +const TInt KEqual( '=' ); + +_LIT8( KHttpFieldSeparator, "\n"); +_LIT8( KHttpDispositionTypeAttachment, "attachment"); +_LIT8( KHttpDispositionTypeInline, "inline"); +_LIT8( KHttpFileNameParm, "filename"); + +/** OMA DD specific definition */ +_LIT8( KCodMimeType, "text/x-co-desc" ); +/** OMA DD specific definition */ +_LIT8( KDdMimeType, "application/vnd.oma.dd+xml" ); +/** OMA DD specific definition */ +_LIT8( KDd2MimeType, "application/vnd.oma.dd2+xml" ); +_LIT8( KRoapMimeType, "application/vnd.oma.drm.roap-trigger+xml" ); + +/// FOTA Update Package type. +_LIT8( KFotaPackageDataType, "application/vnd.nokia.swupd.dp2" ); + +/** OMA DD specific definition */ +_LIT8( KMultiPartMimeType, "multipart/related" ); + +/** DRM specific MIME type */ +_LIT8( KDrmMessageMimeType, "application/vnd.oma.drm.message" ); +/** DRM specific MIME type */ +_LIT8( KDrmMessageMimeTypeDrmContent, "application/vnd.oma.drm.content" ); +/** DRM specific MIME type */ +_LIT8( KDrmMessageMimeTypeDrmDcf, "application/vnd.oma.drm.dcf" ); + +/** DRM specific MIME type */ +_LIT8( KRoapPduMimeType, "application/vnd.oma.drm.roap-pdu+xml" ); + +/** Enumeration indicating download state. + * The download states from EHttpDlMoved are temporary. E.g. download adopt + * EHttpDlMoved state, but right after that, it returns to the original + * EHttpDlCompleted state. + */ +enum THttpDownloadState + { + EHttpDlCreated = 1, + EHttpDlInprogress, + EHttpDlPaused, + EHttpDlCompleted, + EHttpDlFailed, + + /// download is moved from one client instance to another one. + EHttpDlMoved, + /// MMC card or other storage media is removed from the phone. + EHttpDlMediaRemoved, + /** MMC card or other storage media inserted and + * downloaded content file found on it. + * If MMC card inserted, but (partially) downloaded content file + * is not found on it, download is failed with error reason + * EContentFileIntegrity. */ + EHttpDlMediaInserted, + /** Download process can be paused again. This event only occurs after + * EHttpDlNonPausable. */ + EHttpDlPausable, + /// Download process cannot be paused, or the content will be lost. + EHttpDlNonPausable, + /// Download is deleted from another client instance. + EHttpDlDeleted, + /// Download is started when it's already progressing + EHttpDlAlreadyRunning, + /// Download is going to be deleted. + EHttpDlDeleting, + /// Out of network coverage, in case of non-pausable downloads + EHttpDlNonPausableNetworkLoss, + EHttpDlMultipleMOStarted, + EHttpDlMultipleMOCompleted, + EHttpDlMultipleMOFailed, + /// Internally used download event. Do NOT deal with them + EHttpDlCancelTransaction = 128 + }; + +/** Enumeration indicating download progress state. + * These enumarated values usually come with EHttpDlInprogress. + * An exception is EHttpContentTypeReceived that pauses the download + * until client app accepts and resumes, or deletes/resets it. + */ +enum THttpProgressState + { + EHttpProgNone = 0, + + EHttpStarted = 500, + + EHttpProgCreatingConnection = 1000, + EHttpProgConnectionNeeded = 1010, + EHttpProgConnected = 1020, + + EHttpProgConnectionSuspended = 1022, + + EHttpProgDisconnected = 1030, + + EHttpProgDownloadStarted = 2000, + EHttpContentTypeRequested = EHttpProgDownloadStarted + 20, + + /** Download status is EHttpDlPaused! + * Application can check the received content type here and decide whether + * to accept it or not. Call Start again to carry on download, or Delete to + * delete this download. */ + EHttpContentTypeReceived, + + EHttpProgSubmitIssued = EHttpProgDownloadStarted + 30, + + EHttpProgResponseHeaderReceived = 2050, + EHttpProgResponseBodyReceived, + EHttpProgRedirectedPermanently, + EHttpProgRedirectedTemporarily, + EHttpProgDlNameChanged, + EHttpProgContentTypeChanged, + + /// OMA DD specific progress + EHttpProgCodDescriptorDownloaded = 2500, + /// OMA DD specific progress + EHttpProgCodDownloadStarted, + /// Cod is accepted + EHttpProgCodDescriptorAccepted, + /** Cod Handler downloaded the content, but still needs to continue some + * operation. Call Start again to carry on! Download status is + * EHttpDlInprogress! */ + EHttpProgCodLoadEnd, + EHttpProgSupportedMultiPart, + + EHttpProgCodPdAvailable, + EHttpProgCodDownloadShouldResume, + EHttpProgCodDownloadPause, + + EHttpProgMovingContentFile = 3000, + EHttpProgContentFileMoved, + + // We have received sufficient HTTP response body to allow us to recognize + // content-type from data rather than trust content-type header + EHttpContTypeRecognitionAvail, + + //The state is used for duplicate files .The duplicate file is renamed + //and move happens simultaneously + EHttpProgContentFileMovedAndDestFNChanged, + + // Progress event to indicate download is progressively played + EHttpDlProgProgressive, + + // Progress event to indicate download is not progressively played + EHttpDlProgNonProgressive + }; + +/** Enums to access session level attributes. +* Attribute types: string(8/16), TInt32, TBool. +* Some of them indicated as read-only. In debug mode if the client +* application tries to write such attribute server panics. +* In release mode it only returns with KErrArgument. +* If not specified other, buffer size is KMaxDefAttrLength. +* +* Every 8bits string attribute can be queried into 16bits descriptor. +* In this case the 8bits buffer is converted into a 16bits one. +*/ +enum THttpDownloadMgrAttrib + { + EDlMgrAppUid, /**< Unique id of the application + * passed in Connect. + * (TInt32 - read only) */ + + EDlMgrIap, /**< Internet Access Point + * (TInt32 - read/write) + * (default: default AP used from CommsDb) */ + + EDlMgrExitAction, /**< See THttpDownloadMgrExitAction + * (TInt32 - read/write) + * (default: EExitNothing) */ + + EDlMgrSilentMode, /**< No UI interaction in download process + * (TBool - read/write) + * (default: EFalse) + * It is supported only in case of FOTA!!! */ + + EDlMgrMaster, /**< Used if application can be executed in multiple + * instances (stand-alone and embedded). + * This flag indicates that this instance, while running, + * will inherit downloads of all other instances's + * when they closed. + * Two masters are forbidden in the same time. + * (TBool - read/write) + * (default: EFalse) */ + + EDlMgrAllDlsInMaster, /**< Returns the number of downloads of the Master + * instance of the application + * (TInt32 - read-only) */ + + EDlMgrNoMediaDlsInMaster, /**< Returns the number of downloads of the + * Master instance, those downloads were stored on a + * media, that media is not present in the phone. + * (TInt32 - read-only) */ + + EDlMgrConnectionName, /**< Name of the connection to be used to create + * connection. + * Or on return it is name of connection used by this instance of + * download manager. Connection has to be established before this + * attribute could be returned. Same as RConnection::Name(). + * Download Manager automatically connects to network with the + * given name. + * (String16 - read/write) */ + + EDlMgrAPName, /**< Name of the access point used. Valid only if the IAP id + * is known by download manager + * (String16 - read-only) + * (Not supported on yet!) */ + + EDlMgrNumInprogressDownloads, + /**< Number of in-progress downloads of the client. + * (TInt32 - read-only) */ + + EDlMgrConnected, /**< Returns ETrue if the session have active connection. + * (TBool - read-only) */ + + EDlMgrNoMediaDls, /**< Returns the number of downloads that are + * stored on a media that is not present in the phone. + * (e.g. MMC that is unplugged) */ + + EDlMgrEnableCookies, /**< Client can specify cookie usage in downloads + * via this attribute. + * (TBool - read/write) + * (default: ETrue) */ + + EDlAutoConnect, /**< Connection is automatically created if not + * exists and this attribute is ETrue. If it's EFalse and no + * connection, EHttpProgConnectionNeeded is sent to + * the client. + * (TBool - read/write) + * (default: ETrue) */ + EDlMgrAutoConnect = EDlAutoConnect, + + EDlMgrFotaDownload, /**< Deprecated! Do not use!!! + * Indicates that it is a FOTA download + * (TBool - read/write) + * (default: EFalse) */ + + EDlMgrCodFolder, /**< Folder to store COD contents + * (String16 - read-only) + * (Not supported on yet!) */ + EDlMgrNumOfClientSideDownload, + /**< Number of client side download + * (TInt32 - read-only) */ + EDlMgrHasActiveDownloads, + /**< Indicates there are unfinished downloads, particularly + * important during re-start of DownloadMgr after failure + * of DownloadManager or device */ + EDlMgrAutoAcceptCod, /**< Tells CODHandler to suppress download confirmation + * dialog for user acceptance of COD/OMA downloads */ + + EDlMgrProgressiveDownload /**< Used to control progressiveness + * of all downoads in a session + * (TBool - read/write)*/ + + }; + +/** Enums to access download specific attributes. +* Attribute types: string(8/16), TInt32, TBool. +* Some of them indicated as read-only. In debug mode +* if the client application tries to write such attribute +* server panics. In release mode it only returns with +* KErrArgument. +* If not specified anyway buffer size is KMaxDefAttrLength. +*/ +enum THttpDownloadAttrib + { + // Download progress attributes + EDlAttrState, /**< See THttpDownloadState + * (TInt32 - read-only) */ + + EDlAttrProgressState, /**< See THttpProgressState + * (TInt32 - read-only) */ + + EDlAttrUserData, /**< Any user defined data that can fit into 32bits + * (TInt32 - read/write) */ + + EDlAttrId, /**< Unique id of the download. + * (TInt32 - read-only) */ + + // + // Attributes mandatory to issue the request + // + EDlAttrReqUrl = 100, /**< Requested URL of the content. + * (String8 - read/write */ + + EDlAttrRedirUlr, /**< URL after the last permanent redirection. + * When download is created or reseted it's the same + * as EDlAttrReqUrl. + * (String8 - read-only) */ + EDlAttrRedirUrl = EDlAttrRedirUlr, + + EDlAttrCurrentUrl, /**< Current URL of the content. It's always updated if + * transaction redirected (permanently/temporary). + * (String8 - read-only) */ + + EDlAttrName, /**< Name of the download. Generated from URL path. + * If URL doesn't contain filename in the path + * this name is 'index.html' as per default. + * (String16 - read-only) */ + + EDlAttrPort, /**< Port address of the host + * (TInt32 - read/write) + * (default: KDefaultPort) */ + + EDlAttrMethod, /**< Do not use it. For internal usage only!!! + * (TInt32 - read/write) */ + + EDlAttrRequestHeaderAddon, /**< Client application can specify addition request + * header field with this attribute. + * Additional header fields cannot override the ones + * set by Download Manager! + * Format is: + * fieldname KColon fieldrawdata [KHttpFieldSeparator fieldname KColon fieldrawdata] + * Do not insert whitespaces between fieldname and ":" and fieldrawdata! + * Sample format string: "%S%c%S". + * (String8 - read/write) */ + + EDlAttrNextBodyData, /**< Returns the next body chunk. + * (String8 - read-only) + * (Not supported on v2.8!) */ + + EDlAttrReleaseBodyData, /**< Retrieving attribute releases memory allocated + * for body chunk returned in a previous + * EDlAttrNextBodyData call. + * On return it indicates that that chunk was the last one. + * (TBool - read-only) + * (Not supported on v2.8!) */ + + EDlAttrRedirected, /**< Indicates that temporary redirection occured. + * Pausing this download is dangerous, because on + * restart only the original URL, or the last + * permenently redirected URL is used. It's not + * guaranteed that HTTP server will provide the same + * content on restart after a temporary redirection. + * (TBool - read-only) */ + + EDlAttrResponseHeader, /**< In continue download, client application can + * pass the received response header via this + * attribute. + * Format is the same as in case of EDlAttrRequestHeaderAddon. + * (String8 - write-only. Accepted only if EDlAttrContinue is ETrue) */ + + EDlAttrRequestHeaderAddonLength, /**< Length of the request header add-on, + * set by client application. + * (TInt - read-only) */ + + // + // HTTP/Proxy authentication attributes. + // Have to be set when state is EHttpDlPaused/EHttpContentTypeReceived + // + EDlAttrAuthScheme = 200, /**< Scheme of authentication. + * See THttpAuthenticationScheme! + * (TInt - read/write. Write is accepted only if EDlAttrContinue is ETrue) */ + + EDlAttrRealm, /**< Realm of the HTTP authentication + * (String8 - read/write. + * Write is accepted only if EDlAttrContinue is ETrue) */ + + EDlAttrUsername, /**< User name. + * (String8 - read/write) */ + + EDlAttrPassword, /**< Password. + * (String8 - write-only) */ + + EDlAttrProxyRealm, /**< Realm of the proxy authentication. + * (String8 - read/write. + * Write is accepted only if EDlAttrContinue is ETrue) */ + + EDlAttrProxyUsername, /**< User name for proxy authentication. + * (String8 - read/write) */ + + EDlAttrProxyPassword, /**< Password for proxy authentication. + * (String8 - write-only) */ + + // + // Miscellaneous download attributes + // + EDlAttrDestFilename, /**< Destination filename. Content will be + * moved/renamed here after download completed. + * Can be set only before Start and after + * download successfully completed. + * (String16 - read/write) */ + + EDlAttrLength, /**< Full size of the content. + * (TInt32 - read/write. + * Write is accepted only if EDlAttrContinue is ETrue) + * (default: KDefaultContentLength - until content size is known) */ + + EDlAttrDownloadedSize, /**< Downloaded size of the content. + * (TInt32 - read-only) */ + + EDlAttrNoContentTypeCheck, /**< Content is downloaded w/o content type validation. + * (TBool - read/write) + * (default: EFalse) */ + + EDlAttrContinueBody, /**< In case of continue download, the client application + * can pass already received body data to download manager + * via this attribute. Note that if the download is not started this + * data is lost, because download manager doesn't persist it until that. + * It is because it's actually not surely known what the destination file + * size&name until that. + * (String8 - write only. Accepted only if EDlAttrContinue is ETrue) + * (String16 - write only. Accepted only if EDlAttrContinue is ETrue. + * 8bits data stream stored in 16bits descriptor.) */ + + EDlAttrDestRemovable, /**< Indicates that the content file is stored on + * a removable media. + * (TBool - read-only) */ + + // + // Attributes to indicate error occured during download + // + EDlAttrStatusCode = 500, /**< Status code from response header + * (TInt32 - read-only) */ + + EDlAttrErrorId, /**< See THttpDownloadMgrError + * (TInt32 - read-only) */ + + EDlAttrGlobalErrorId, /**< Global error id + * (TInt32 - read-only) */ + + EDlAttrContentType, /**< Content type from response header + * (String8 - read/write. + * Write is accepted only if EDlAttrCodDownload is ETrue) */ + + EDlAttrTargetApp, /**< Target app that can open the content + * (TInt32 - read/write. + * Write is accepted only if EDlAttrContinue is ETrue) */ + + EDlAttrMediaType, /**< Media type from response header. See RFC2616. + * (String8 - read-only) */ + EDlAttrMediaTypeBoundary, /**< Boundary attribute from media type. + * (String8 - read-only) */ + + EDlAttrAttachmentFileName, + + // + // Other + // + EDlAttrDisconnectOnReset = 1000, /**< Automatic disconnection when Reset called. + * (TBool - read/write) + * (default: ETrue) */ + + EDlAttrDisconnectOnPause, /**< Automatic disconnection when Pause called. + * In progress state EHttpContentTypeReceived + * download is in paused state but connection is + * not closed. + * (TBool - read/write) + * (default: ETrue) */ + + EDlAttrUnused1, + + EDlAttrAction, /**< See THttpDownloadMgrAction + * (TInt32 - read/write) + * (default: ELaunch ) */ + + EDlAttrRestartAction, /**< See THttpRestartActions + * (TInt32 - read/write) + * (default: ERestartIfExpired ) */ + + EDlAttrNoMedia, /**< ETrue if the media, on which the download is stored, is removed. + * A Reset clears this flag. + * (TBool - read only) */ + + EDlAttrContinue, /**< Indicates that download was started in + * client app but that doesn't handle it. + * Download is created with RHttpDownloadMgr::CreateClientSideDownloadL(). + * (TBool - read-only) + * (default: EFalse) */ + + EDlAttrPausable, /**< If EFalse, download cannot be paused, or the + * content will be lost. + * (TBool - read-only) + * (default: ETrue) */ + + EDlAttrHidden, /**< If true download is NOT shows in the download + * list or in any way to the user. + * (TBool - read/write) + * (default: EFalse) */ + + EDlAttrSilent, /**< No progress events sent to the client application. + * Only exceptions are: + * EHttpDlInprogress - EHttpStarted + * EHttpDlCompleted + * EHttpDlFailed + * (TBool - read/write) + * (default: EFalse) */ + + EDlAttrProgressive, /**< Indicates that this is a progressive download. + * (TBool - read/write) + * (default: EFalse) */ + + EDlAttrFotaPckgId, /**< Fota package ID. + * (TInt32 - read/write) + * (default: KDefaultFotaPckgId. Default means no FOTA download! ) */ + + EDlAttrDownloadNextUrl, /**< This attribute is not supported from 3.0! + * Beginning from 3.0, Download Manager never + * downloads the next-uri of OMA/COD downloads + * automatically, but forwards the next-uri to the + * client via MHttpDownloadMgrNextUriObserver, + * then the client can create a new download with + * the next-uri it has got, if it wants so. */ + + EDlAttrDownloadUpdatedDDUri,/**< If ETrue, updated DD URI is present in download descriptor. + * Start download with updatd DD URI. + * (TBool - read/write) + * (default: EFalse) + */ + + EDlAttrUpdatedDDUri, /**< Updated DD URI. + * (String8 - read/write + */ + + EDlAttrDDType, /**< Content type of the descriptor for OMA downloads. + * For HTTP this will be content type of the MO + * (String8 - read only. + */ + + /** Application can set and query raw header + * fields and values via these attributes. + * (String - read/write) */ + EDlAttrHeaderFields = 1500, + EDlAttrCharSet = EDlAttrHeaderFields, // Character Set + EDlAttrResponseCharSet = EDlAttrCharSet, + EDlAttrResponseAge, + EDlAttrResponseETag, + EDlAttrResponseLocation, + EDlAttrResponseRetryAfter, + EDlAttrResponseServer, + EDlAttrResponseVary, + + /** Request headers */ + EDlAttrRequestAccept = 2000, + EDlAttrRequestAcceptCharSet, + EDlAttrRequestAcceptLanguage, + EDlAttrRequestExpect, + EDlAttrRequestFrom, + EDlAttrRequestHost, + EDlAttrRequestMaxForwards, + EDlAttrRequestPragma, + EDlAttrRequestReferer, + EDlAttrRequestUserAgent, + EDlAttrRequestVary, + + /** Entity header fields */ + EDlAttrEntityAllow = 2500, + EDlAttrEntityContentEncoding, + EDlAttrEntityContentLanguage, + EDlAttrEntityContentLocation, + EDlAttrEntityExpires, + EDlAttrEntityLastModified, + + /** General header fields */ + EDlAttrGeneralCacheControl = 3000, + EDlAttrGeneralDate, + EDlAttrGeneralPragma, + EDlAttrGeneralVia, + EDlAttrGeneralWarning, + + /** Internally used attribute! Do NOT use! */ + EDlAttrSucceeded = 8192, + /** Internally used attribute! Do NOT use! */ + EDlAttUnused2, + /** Internally used attribute! Do NOT use! */ + EDlAttrFailed, + + EDlAttrCodDownload, /**< Indicates that it is an OMA DD downlad, + * and the content is downloaded by COD Handler. + * (TBool - read-only) + * (default: EFalse) */ + + /** Internally used attribute! Do NOT use! */ + EDlAttrHashedMsgBody, + /** Internally used attribute! Do NOT use! */ + EDlAttrDefaultEvent, + /** Internally used attribute! Do NOT use! */ + EDlAttrRedirectedTemporary, + /** Internally used attribute! Do NOT use! */ + EDlAttrRedirectedPermanently, + /** Internally used attribute! Do NOT use! */ + EDlAttrCodDescriptorAccepted, + /** Internally used attribute! Do NOT use! */ + EDlAttrCodLoadEnd, + + EDlAttrDiskBufferingSize, + /**< Indicates how large a buffer (in bytes) to + * use when writing this download to disk. A + * value of 0 indicates no buffering. */ + + /** Internally used attribute! Do NOT use! */ + EDlAttrCodPdAvailable, /* This is introduced for OMA 2 (DD2). Indicates that progressive download is available + * in case if license element exists in the DD2 this attribute is set when the right obj + * is available and the Progressive download element is true. + * In case when the license element in not represented this attribute is set if + * the Progressive download element is true. + */ + + EDlAttrLocalFileName, /* This is introduced for OMA 2 (DD2). + * Local filename. Content will be + * moved from this location. + * This attribute should be set before the client sends the Move command + * (String16 - read/write) */ + + /** Internally used attribute! Do NOT use! */ + + EDlAttrCodPausable, /**< Would update the server about Pausability of COD Download. + * This attribute is only used for COD downloads to update pause attibure in server + * (TBool - write only) + */ + + EDlAttrDdFileName, /** For storing DD File name. */ + EDlAttrActiveDownload, + EDlAttrActivePlayedDownload, + EDlAttrNumMediaObjects, + EDlAttrMultipleMOLength,/**< specifies total length of all MOs for the download. + * (TInt32 - read/write. */ + + EDlAttrMultipleMODownloadedSize, /**< current downloaded size (the sum of downloaded size of all completed MOs. Completed MOs can be successful/failed/paused MOs). . + * (TInt32 - read-only) */ + EDlAttrAlbumName /**< Name of the album. In case of non-album download, this is the download name. + * (String16 - read-only) */ + }; + +/** +* See RFC2616. +*/ +enum THttpMethod + { + EMethodGET, + EMethodPOST, + EMethodHEAD + }; + +/** +* Authentication scheme +*/ +enum THttpAuthenticationScheme + { + EAuthBasic, ///< Basic authentication scheme + EAuthDigest ///< Digest authentication scheme + }; + +/** +* This attribute specifies what Download Manager do +* with the downloads on exit. +*/ +enum THttpDownloadMgrExitAction + { + EExitNothing, ///< Downloads remain intacted on exit (default). + EExitPause, ///< All downloads paused on exit. + EExitDelete ///< All downloads deleted on exit. + }; + +/** +* The action to do when a download completes. +*/ +enum THttpDownloadMgrAction + { + /** + * Do nothing when download completed. + */ + EDoNothing = 0, + /** + * Automatically move content to the location pointed by EDlAttrDestFilename + */ + EMove = 0x0001, + /** + * Automatically lauch target application when download + * completed. This is the default if not set (default). + */ + ELaunch = 0x0002, + /** + * Automatically lauch progressive download + */ + EPdLaunch = 0x0004 + }; + +/** +* Restart actions. +*/ +enum THttpRestartActions + { + ERestartIfExpired, /**< Download content again if content is expired (default). */ + ERestartNoIfCompleted, /**< (Re)Start completes with EHttpDlCompleted at + * once if already completed. + * Anyway starts to download the content only if it's + * not modified since last partial download. + * Restarted anyway. No content update/expiry check. */ + ERestartForced /**< Forced download. Don't matter if content is + * expired, or not. */ + }; + +/** +* Allocated usable error range: -30421 -> -30470 (includes the 1st and last numbers). +*/ +enum THttpDownloadMgrError + { + ENoError = 0, + EGeneral = -30421, ///< Non-download specific error. See global error code. + EInternal = -30422, /**< Internal error occured. Most probably a programming error. + * (e.g. download that is stored on a media, that is not present + * in the phone, cannot be started) */ + EContentFileIntegrity = -30423, /**< Content file is missing or has different size then + * it should be. EDlAttrNoMedia is ETrue if the media, on which + * content file was (partially) stored, removed. */ + EDiskFull = -30424, ///< Not enough disk space for the content + EConnectionFailed = -30425, /**< Most probably IAP id was wrong or no network coverage. + * For more specific info about the error see EDlAttrGlobalErrorId. */ + ETransactionFailed = -30426, /**< Error occured in the transaction. + * For more specific info about the error see EDlAttrGlobalErrorId. */ + EMoveFailed = -30427, /**< Moving content file failed. + * See EDlAttrGlobalErrorId for specific reason. */ + EDestFileWriteFailed = -30428, ///< Destination file write failed. + EMMCRemoved = -30429, ///< MMC card, where th download is being persisted, removed. + EBadUrl = -30430, /**< Download Manager cannot handle this URL: + * - it's too long + * - malformed. */ + + // Download attributes related error + + EWrongDestFilename = -30431, + ///< Error in destination filename. Most probably not a real filename. + EDestFileInUse = -30432, + /**< Destination file cannot be opened/created. It's most probably + * in use by other app. or download. */ + + //HTTP error case + + EHttpUnhandled = -30433, + /**< Unhandled HTTP error code. See it in + * EDlAttrGlobalErrorId. */ + EHttpAuthenticationFailed = -30434, + /**< 401 - Client has to set username/password + * and Start download again. */ + EProxyAuthenticationFailed = -30435, + /**< 407 - Client has to set proxy + * username/password and Start download again. */ + EObjectNotFound = -30436, + /**< 404 - Object not found. */ + EPartialContentModified = -30437, + /**< 412: partial content cannot be downloaded because + * it's already modified. + * Call Reset or set THttpRestartActions::ERestartForced */ + + EContentExpired = -30438, + /**< Paused content is expired, or content + * is modified between two requests. + * Call Reset() or see THttpRestartActions. */ + + // miscellaneous errors + EHttpRestartFailed = -30450 /**< Resuming progressive download failed. */ + }; + +#endif // HTTPDOWNLOADMGRCOMMON_H + +// End of File