|
||
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.