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