First public contribution.
1 // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
15 // to enum TStringAttribute. Adding these new attributes allows CAF to better support the OMA DRM v2 DCF specification.
17 // processes using this API no long have to hold the DRM capability. The DRM
18 // capability must only be enforced by Content Access Agents on APIs that
19 // manipulate rights or that handle the plain text form of protected/encryted
22 // 'KCafLoadPostProductionAgents' held in a new patchdata.cpp file. Also updated
23 // caf.iby obey file to allow this variable to be set by licensees. The
24 // compile-time macro CAF_LOAD_POST_PRODUCTION_AGENTS has now become a ROM
30 // This release of CAF is scheduled for Mike (v9.1)
37 @page CAFReleaseNotes CAF v2.19 Release Notes
38 @section CAFChanges_2_19 New in CAF v2.19
39 @li Added new value EContentVersion to enum TAttribute. Added two new values EContentLocation and ERightsIssuerURI
40 @section CAFChanges_2_18 New in CAF v2.18
41 @li Removed the capability requirement on users of the CImportFile API. Client
42 @section CAFChanges_2_17 New in CAF v2.17
43 @li Added new patchable boolean variable to caf.dll called
44 build-time macro. See @ref licenseesROMOnly.
45 @section CAFChanges_2_16 New in CAF v2.16
46 @li Added new entry in TStringAttribute for the TransactionID and updated the CAF API?SPI accordingly, to allow applications to retrieve thsi new attribute from the a content object.
47 @li Adding this new attribute makes CAF compliant to the OMA DRM v2 and the DCF Format.
48 @section CAFChanges_2_15 New in CAF v2.15
49 @li Licensee considerations section of API documentation updated.
50 @section CAFChanges_2_14 New in CAF v2.14
51 @li API documentation has been updated to clarify the usage of the asynchronous APIs.
52 @li New section 'Making an asynchronous SendReceive() call in an agent plugin' added to .chm file.
53 @section CAFChanges_2_13 New in CAF v2.13
54 @li Added new error codes: KErrCACorruptContent and KErrCACorruptRights.
55 @li API documentation has been updated for the majority of APIs and SPIs to reflect changes.
56 @section AppSince10 CAF v1.0 Compatibilty
57 @li It will be binary compatible for applications currently using CAF v1.0
58 @li There are several deprecated functions which will be removed in a future release
59 @li It<b> will not</b> be source compatible for Content Access Agents implementing the CAF v1.0 API, they will need significant modifications to work with this release of CAF
60 @li Content Access Agent inteface UID changed to \c 0x10204740 for CAF v2.0 agents. This prevents CAF v2.0 trying to load CAF v1.0 agents and vice versa
61 @section CAFChanges_2_12 New in CAF v2.12
62 @li <code>ContentAccess::CData</code> objects can now be constructed without a CContent object
63 @li <code>ContentAccess::CContent</code> and <code>ContentAccess::CData</code> objects can now be created by supplying a URI or by passing an open RFile handle
64 @li <code>ContentAccess::CContent</code> now allows applications to browse the contents of files containing more than one content object, see @ref Listing
65 @li <code>ContentAccess::CData</code> now allows applications to read a particular content object within a file, see @ref CAFCData
66 @li Concept of a virtual path has been introduced to identify content within a file, see @ref VirtualPaths
67 @li Added new attribute functions to <code>ContentAccess::CContent</code> and <code>ContentAccess::CManager</code> to query attributes related to a virtual path
68 @li Added <code>ContentAccess::RAttributeSet</code> and <code>ContentAccess::RStringAttributeSet</code> to allow several attributes to be queried in one function call
69 @li File management functions similar to \c RFs added to <code>ContentAccess::CManager</code>.
70 @li Agent management functions added to <code>ContentAccess::CManager</code> so applications can configure or query a particular agent
71 @li Event Notification functions added to <code>ContentAccess::CContent</code> and <code>ContentAccess::CManager</code>. The events currently relate to changes in the rights status of a content object.
72 @li Agent specific commands supported on <code>ContentAccess::CContent</code> and <code>ContentAccess::CManager</code>.
73 @li <code>ContentAccess::CSupplier</code> and <code>ContentAccess::CImportFile</code> now allow the client to supply output file handles for the agent to write to. See <code>ContentAccess::CImportFile::ContinueWithNewOutputFile()</code>
74 @li <code>ContentAccess::CContent</code>, <code>ContentAccess::CData</code> and <code>ContentAccess::CImportFile</code> now use less memory
75 @li <code>ContentAccess::CAgentConsumer</code> has been renamed <code>ContentAccess::CAgentData</code>
76 @li <code>ContentAccess::CAgentSupplier</code> has been renamed <code>ContentAccess::CAgentImportFile</code>
77 @li <code>ContentAccess::CAgentRightsManager</code> added to the agent interface
78 @li Added <code>ContentAccess::CContentIterator</code> to simplify discovery of content objects
79 @li Added template class <code>ContentAccess::RStreamablePtrArray</code> that simplifies the task of transferring arrays across the client server boundary.
80 @li Agents will implement the user interface. Applications can request to suppress the agent UI using the <code>SetProperty()</code> function (e.g. <code>ContentAccess::CContent::SetProperty()</code>). See @ref CAFUI
81 @li <code>KDefaultContentObject</code> string introduced to identify that the client wants to open the default content object within the file. The default is used automatically if no UniqueId is specified. If the client specifies the UniqueId <code>KNullDesC16()</code>, the file will be opened in exactly the same way as an \c RFile, no translation will occur.
82 @li <code>ContentAccess::CData::SetQosL()</code> renamed to <code>ContentAccess::CData::SetProperty()</code>. Allows it to apply to other aspects of an agent without causing confusion
83 @li Removed <code>"const"</code> from <code>ContentAccess::CData::Read()</code> and <code>ContentAccess::CData::Seek()</code> functions so agents can maintain an internal state if necessary
84 @li Allow applications to include all of CAF by just doing <code>#include \<caf//caf.h\></code>
85 @li Agent server private directories are mapped from <code>\\private\\SID\\</code> to <code>\\private\\agentname\\</code>
86 @section CAFDeprecated Deprecated code in CAF v2.12
87 @li Deprecated the <code>ContentAccess::CAttribute</code> class since it did not work well with multiple content object files
88 @li Deprecated <code>ContentAccess::CCafMimeHeader</code> and <code>ContentAccess::CMimeFieldAndData</code>, replaced with more generic <code>ContentAccess::CMetaDataArray</code> and <code>ContentAccess::CMetaData</code>
89 @li Deprecated <code>ContentAccess::TMimeFields</code>, not needed by new APIs
90 @li Deprecated <code>ContentAccess::CBitset</code> class, no longer required when retrieving attributes with new APIs
91 @li Deprecated <code>ContentAccess::TCAFUtilsPanics</code> used by <code>ContentAccess::CBitset</code>
92 @li Deprecated <code>void CData::SetQosL(TQosAttribute aQosAttr, TInt aValue)</code> (see <code>ContentAccess::CData::SetQosL()</code>), \n replaced by <code>ContentAccess::CData::SetProperty()</code>.
93 @li Deprecated <code>ContentAccess::TQosAttribute</code>, replaced by <code>ContentAccess::TAgentProperty</code>
94 @li Deprecated <code>CAttribute* CContent::NewAttributeL(TBool aPreloaded)</code> (see <code>ContentAccess::CContent::NewAttributeL()</code>).
95 @li Deprecated <code>CAttribute* CContent::NewAttributeL(TBool aPreloaded, TContentShareMode aShareMode)</code> (see <code>ContentAccess::CContent::NewAttributeL()</code>).
96 @li Deprecated <code>ContentAccess::CContent::OpenContentL(TIntent, TContentShareMode)</code> function (see <code>ContentAccess::CContent::OpenContentL()</code>). \n The <code>ContentAccess::TContentShareMode</code> is now on the <code>ContentAccess::CContent::NewL()</code>.
97 @li Deprecated <code>TBool CData::GetMimeTypeL(TDes8& aMimeType) const;</code> (see <code>ContentAccess::CData::GetMimeTypeL()</code>), can now retrieve this from string attributes.
98 @li Deprecated <code>static void CManager::DeleteFileL (const TDesC &aFileName);</code> (see <code>ContentAccess::CManager::DeleteFileL()</code>), \n replaced with non leaving function <code>ContentAccess::CManager::DeleteFile()</code>.
99 @li Deprecated <code>CImportFile * CSupplier::ImportFileL (CCafMimeHeader &aMimeHeader, const TDesC &aSuggestedFileName);</code> (see <code>ContentAccess::CSupplier::ImportFileL()</code>), \n replaced with function that takes a <code>ContentAccess::CMetaDataArray</code>.
100 @li Deprecated <code>CAttribute & CSupplierOutputFile::AttributesL (TBool aPreloaded);</code> (see <code>ContentAccess::CSupplierOutputFile::AttributesL()</code>) \n since <code>ContentAccess::CAttribute</code> is deprecated.