|
|
|
the v2.x release of CAF is binary compatible for applications currently using CAF v1.0,
there are several deprecated functions which will be removed in a future release,
it is not source compatible for Content Access Agents implementing the CAF v1.0 API, they will need significant modifications to work with this release of CAF,
Content Access Agent interface UID changed to
0x10204740 for CAF v2.0 agents. This prevents CAF v2.0 trying to
load CAF v1.0 agents and vice versa.
Added new value EContentVersion to enum
TAttribute.
Added two new values EContentLocation and
ERightsIssuerURI to enum TStringAttribute.
Adding these new attributes allows CAF to better support the OMA DRM v2 DCF specification.
Removed the capability requirement on users of the
CImportFile API. Client processes using this API no longer have to
hold the DRM capability. The DRM capability must only be enforced by Content
Access Agents on APIs that manipulate rights or that handle the plain text form
of protected/encryted rights or content.
Added new patchable boolean variable to caf.dll called
KCafLoadPostProductionAgents held in a new
patchdata.cpp file. Updated caf.iby obey file to
allow this variable to be set by licensees.
The compile-time macro CAF_LOAD_POST_PRODUCTION_AGENTS
has now become a ROM build-time macro. See Considerations for licensees using CAF.
Added new entry in TStringAttribute for the
TransactionID and updated the CAF API/SPI accordingly to allow
applications to retrieve this new attribute from a content object. Adding this
new attribute makes CAF compliant to the OMA DRM v2 and the DCF Format.
Licensee considerations section of API documentation updated.
API documentation has been updated to clarify the usage of the
asynchronous APIs. New section 'Making an asynchronous
SendReceive() call in an agent plugin' added to documentation.
Added new error codes: KErrCACorruptContent and
KErrCACorruptRights.
API documentation has been updated for the majority of APIs and SPIs to reflect changes.
ContentAccess::CData objects can now be
constructed without a CContent object
ContentAccess::CContent and
ContentAccess::CData objects can now be created by
supplying a URI or by passing an open RFile handle
ContentAccess::CContent now allows
applications to browse the contents of files containing more than one content
object, see Listing objects within a container
ContentAccess::CData now allows applications
to read a particular content object within a file, see
Reading data from a content object
The concept of a virtual path has been introduced to identify content within a file, see Identifying a content object within a file
Added new attribute functions to
ContentAccess::CContent and
ContentAccess::CManager to query attributes related to a
virtual path
Added ContentAccess::RAttributeSet and
ContentAccess::RStringAttributeSet to allow several
attributes to be queried in one function call
File management functions similar to RFs added
to ContentAccess::CManager.
Agent management functions added to
ContentAccess::CManager so applications can configure or
query a particular agent
Event Notification functions added to
ContentAccess::CContent and
ContentAccess::CManager. The events currently relate to
changes in the rights status of a content object.
Agent specific commands supported in
ContentAccess::CContent and
ContentAccess::CManager.
ContentAccess::CSupplier and
ContentAccess::CImportFile now allow the client to supply
output file handles for the agent to write to. See
ContentAccess::CImportFile::ContinueWithNewOutputFile().
ContentAccess::CContent,
ContentAccess::CData and
ContentAccess::CImportFile now use less memory
ContentAccess::CAgentConsumer has been renamed
to ContentAccess::CAgentData
ContentAccess::CAgentSupplier has been renamed
to ContentAccess::CAgentImportFile
ContentAccess::CAgentRightsManager added to
the agent interface
Added ContentAccess::CContentIterator to
simplify discovery of content objects
Added template class
ContentAccess::RStreamablePtrArray that simplifies the
task of transferring arrays across the client server boundary.
Agents will implement the user interface. Applications can request
to suppress the agent UI using the SetProperty() function (e.g.
ContentAccess::CContent::SetProperty()). See
CAF and the User Interface
KDefaultContentObject 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 KNullDesC16(), the file
will be opened in exactly the same way as an RFile, no
translation will occur.
ContentAccess::CData::SetQosL() renamed to
ContentAccess::CData::SetProperty(). Allows it to apply to
other aspects of an agent without causing confusion
Removed const from
ContentAccess::CData::Read() and
ContentAccess::CData::Seek() functions so agents can
maintain an internal state if necessary
Allow applications to include all of CAF by just doing
#include <caf/caf.h>
Agent server private directories are mapped from
\private\SID\ to \private\agentname\.
Deprecated the ContentAccess::CAttribute class
since it did not work well with multiple content object files
Deprecated ContentAccess::CCafMimeHeader and
ContentAccess::CMimeFieldAndData, replaced with more generic
ContentAccess::CMetaDataArray and
ContentAccess::CMetaData
Deprecated ContentAccess::TMimeFields, not needed by
new APIs
Deprecated ContentAccess::CBitset class, no longer
required when retrieving attributes with new APIs
Deprecated ContentAccess::TCAFUtilsPanics used by
ContentAccess::CBitset
Deprecated void CData::SetQosL(TQosAttribute aQosAttr, TInt
aValue) (see ContentAccess::CData::SetQosL()), replaced by
ContentAccess::CData::SetProperty().
Deprecated ContentAccess::TQosAttribute, replaced by
ContentAccess::TAgentProperty
Deprecated CAttribute* CContent::NewAttributeL(TBool
aPreloaded) (see
ContentAccess::CContent::NewAttributeL()).
Deprecated CAttribute* CContent::NewAttributeL(TBool
aPreloaded, TContentShareMode aShareMode) (see
ContentAccess::CContent::NewAttributeL()).
Deprecated ContentAccess::CContent::OpenContentL(TIntent,
TContentShareMode) function (see
ContentAccess::CContent::OpenContentL()). The
ContentAccess::TContentShareMode is now on the
ContentAccess::CContent::NewL().
Deprecated TBool CData::GetMimeTypeL(TDes8& aMimeType)
const; (see ContentAccess::CData::GetMimeTypeL()),
can now retrieve this from string attributes.
Deprecated static void CManager::DeleteFileL (const TDesC
&aFileName); (see
ContentAccess::CManager::DeleteFileL()), replaced with non
leaving function ContentAccess::CManager::DeleteFile().
Deprecated CImportFile * CSupplier::ImportFileL
(CCafMimeHeader &aMimeHeader, const TDesC &aSuggestedFileName);
(see ContentAccess::CSupplier::ImportFileL()), replaced
with function that takes a ContentAccess::CMetaDataArray.
Deprecated CAttribute &
CSupplierOutputFile::AttributesL(TBool aPreloaded); (see
ContentAccess::CSupplierOutputFile::AttributesL()) since
ContentAccess::CAttribute is deprecated.