diff -r 000000000000 -r 2c201484c85f contentmgmt/contentaccessfwfordrm/engineering/dox/CAFIntroduction.dox --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentmgmt/contentaccessfwfordrm/engineering/dox/CAFIntroduction.dox Wed Jul 08 11:25:26 2009 +0100 @@ -0,0 +1,183 @@ +// Copyright (c) 2006-2009 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 "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +//
ContentAccess::CAgentFactory
.
+// CAF Agents can be written to provide the following functions:
+// The CAF framework does not provide any capability enforcement so it is the responsiblity
+// of the agent to police access to the APIs. The agent can choose to deny some operations
+// in the CAF API based upon application's capabilities or the agent's own policy relating
+// to the use of that API.
+// ContentAccess::CAgentFactory
. This is the ECom interface for a CAF Agent.
+// The agent's factory will produce products derived from:
+// -# ContentAccess::CAgentContent
+// -# ContentAccess::CAgentData
+// -# ContentAccess::CAgentImportFile
+// -# ContentAccess::CAgentManager
+// -# ContentAccess::CAgentRightsManager
+// These products provide the services described in the introduction (above) on a per
+// agent basis.
+// ContentAccess::CSupplier
and ContentAccess::CImportFile
+// Consumer API
+// Allows applications to read the content as if it were stored as plain text regardless
+// of how it is actually stored on the device. For instance it might be encrypted.
+// The consumer API will be used by applications rendering content and/or multimedia
+// plug-ins. By rendering we mean reading data from a file, transforming it, then playing
+// or displaying it on the device.
+// See the classes ContentAccess::CContent
and ContentAccess::CData
.
+// Manager API
+// The management of files and content access agents.
+// See ContentAccess::CManager
+// Rights Manager API
+// A generic API used to manage DRM rights within a particular DRM agent
+// See ContentAccess::CRightsManager
+// ContentAccess::CContent
class.
+// This class allows applications to use the content within these container files
+// without needing to understand any specifics of the compression or storage mechanism
+// used by the archive.
+// GetAttribute()
functions to determine whether the operation is allowed on any
+// given content object.
+// Finally any application or plug-in that reads DRM content must handle the unencrypted version of
+// the content responsibly. Only applications proven to work this way will be given the DRM capability.
+// ContentAccess::TIntent
:
+// - \c EPeek: Do not process or evaluate rights in any way
+// - \c EPlay: Play the target content (OMA)
+// - \c Eview: View the target content (OMA)
+// - \c EExecute: Execute the target content (OMA). Note: only supported in
+// a Java context
+// - \c EPrint: Print the target content (OMA)
+// - \c EPause: Pause content playback
+// - \c EContinue: Continue content playback
+// - \c EUnknown: Client has no idea what the content will be used for. DRM Agents can deny this intent allowing only unprotected content to be accessed this way.
+// RFile
.
+// The Content Access Framework treats the F32 agent as a special case. If no other suitable
+// agent is responsible for a file or directory the F32 Agent will be used.
+// The F32 Agent runs in the same process and thread as the calling application so any
+// file operations it performs will be limited to the file operations permitted for
+// the calling application's process
+// ContentAccess::CAgentManager::GetDir()
function.
+// In the file system the private directories have the format
+// \\private\\xxxxxxxx\\directory_1\\...directory_n\\filename.ext
+// where xxxxxxxx
is the UID of the agent.
+// CAF will translate that path so applications see the file as:
+// \\private\\agent_name\\directory_1\\...directory_n\\filename.ext
+// where agent_name
is the name of the agent.
+// When an application opens a file stored in the private directory, CAF selects the
+// agent which handles that content based upon the name in the path. If the file is not
+// stored in a private directory, CAF asks each of the agents in turn whether they support
+// the file. If no agent supports the file, it will be read as plaintext using the F32Agent
.
+// CAF.DLL
- Content Access Framework (the application level APIs)
+// - CAFUTILS.DLL
- Utility classes used by agents, applications and CAF itself
+// - F32AGENT.DLL
- Agent for reading unprotected files
+// - F32AGENTUI.DLL
- Agent for reading unprotected files
+// - RECCAF.DLL
- Data Recognizer for all agents within the Content Access Framework
+//