First public contribution.
2 * Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
4 * This component and the accompanying materials are made available
5 * under the terms of the License "Eclipse Public License v1.0"
6 * which accompanies this distribution, and is available
7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
9 * Initial Contributors:
10 * Nokia Corporation - initial contribution.
20 #include "f32agentdata.h"
21 #include "f32defaultattributes.h"
22 #include <caf/virtualpath.h>
23 #include <caf/f32agentui.h>
26 using namespace ContentAccess;
28 CF32AgentData* CF32AgentData::NewL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
30 CF32AgentData* self = new (ELeave) CF32AgentData;
31 CleanupStack::PushL(self);
32 self->ConstructL(aVirtualPath, aShareMode);
33 CleanupStack::Pop(self);
37 CF32AgentData* CF32AgentData::NewL(RFile& aFile, const TDesC& aUniqueId)
39 CF32AgentData* self = new (ELeave) CF32AgentData;
40 CleanupStack::PushL(self);
41 self->ConstructL(aFile, aUniqueId);
42 CleanupStack::Pop(self);
46 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
48 CF32AgentData* CF32AgentData::NewL(const TDesC8& aHeaderData)
50 CF32AgentData* self = new (ELeave) CF32AgentData;
51 CleanupStack::PushL(self);
52 self->ConstructL(aHeaderData);
53 CleanupStack::Pop(self);
57 void CF32AgentData::ConstructL(const TDesC8& aHeaderData)
59 if(aHeaderData.Length() > 0)
60 iHeaderData = aHeaderData.AllocL();
62 User::Leave(KErrMissingWmdrmHeaderData);
65 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
67 CF32AgentData::CF32AgentData()
71 CF32AgentData::~CF32AgentData()
73 // Tidy up RFile and RFs
75 if(iVirtualPath) // opened by name
82 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
84 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
87 void CF32AgentData::ConstructL(const TVirtualPathPtr& aVirtualPath, TContentShareMode aShareMode)
89 iVirtualPath = CVirtualPath::NewL(aVirtualPath);
91 // Check that the client hasn't specified some incorrect UniqueId
92 User::LeaveIfError(TF32DefaultAttributes::CheckUniqueId(aVirtualPath.UniqueId()));
94 TUint mode = TF32DefaultAttributes::GetFileMode(aShareMode);
95 User::LeaveIfError(iFs.Connect());
97 // Make the file session shareable
98 User::LeaveIfError(iFs.ShareAuto());
100 User::LeaveIfError(iFile.Open(iFs, aVirtualPath.URI(), mode));
103 void CF32AgentData::ConstructL(RFile& aFile, const TDesC& aUniqueId)
105 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
109 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
111 // Check that the client hasn't specified some incorrect UniqueId
112 User::LeaveIfError(TF32DefaultAttributes::CheckUniqueId(aUniqueId));
114 // When creating a CData from a file handle we must duplicate the file handle
115 // before doing anything
116 User::LeaveIfError(iFile.Duplicate(aFile));
117 User::LeaveIfError(iFile.Seek(ESeekStart, pos)); // reset to start of file
120 void CF32AgentData::DataSizeL(TInt &aSize)
122 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
124 User::LeaveIfError(iFile.Size(size));
127 User::LeaveIfError(iFile.Size(aSize));
128 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
131 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
132 void CF32AgentData::DataSize64L(TInt64 &aSize)
134 User::LeaveIfError(iFile.Size(aSize));
136 #endif //SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
138 TInt CF32AgentData::EvaluateIntent(TIntent /*aIntent*/)
143 TInt CF32AgentData::ExecuteIntent(TIntent /*aIntent*/)
148 TInt CF32AgentData::Read(TDes8& aDes)
150 return iFile.Read(aDes);
153 TInt CF32AgentData::Read(TDes8& aDes,TInt aLength)
155 return iFile.Read(aDes,aLength);
158 void CF32AgentData::Read(TDes8& aDes,TRequestStatus& aStatus)
160 iFile.Read(aDes, aStatus);
163 void CF32AgentData::Read(TDes8& aDes,
165 TRequestStatus& aStatus)
167 iFile.Read(aDes, aLength, aStatus);
170 TInt CF32AgentData::Read(TInt aPos, TDes8& aDes,
172 TRequestStatus& aStatus)
174 iFile.Read(aPos, aDes, aLength, aStatus);
178 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
179 TInt CF32AgentData::Read64(TInt64 aPos, TDes8& aDes,
181 TRequestStatus& aStatus)
183 iFile.Read(aPos, aDes, aLength, aStatus);
186 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
188 void CF32AgentData::ReadCancel(TRequestStatus& aStatus)
190 iFile.ReadCancel(aStatus);
193 TInt CF32AgentData::Seek(TSeek aMode, TInt& aPos)
195 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
197 TInt offset = iFile.Seek(aMode, pos);
200 TInt offset = iFile.Seek(aMode, aPos);
201 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
205 #ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
206 TInt CF32AgentData::Seek64(TSeek aMode, TInt64& aPos)
208 return iFile.Seek(aMode, aPos);
210 #endif // SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
213 TInt CF32AgentData::SetProperty(TAgentProperty aProperty, TInt aValue)
216 if(aProperty==EAgentPropertyAgentUI)
217 // should only pass type EAgentPropertyAgentUI
219 CF32AgentUi* ui = NULL;
221 // get a pointer to the UI
222 TRAPD(err, ui = &AgentUiL());
227 return ui->SetProperty(aProperty, aValue);
231 return KErrCANotSupported;
235 TInt CF32AgentData::GetAttribute(TInt aAttribute, TInt& aValue)
237 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
240 return TF32DefaultAttributes::GetAttribute(*iHeaderData, aAttribute, aValue);
243 else if(iVirtualPath)
245 return TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iVirtualPath->URI());
250 return TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iFile);
255 return TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iVirtualPath->URI());
259 return TF32DefaultAttributes::GetAttribute(aAttribute, aValue, iFile);
261 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
264 TInt CF32AgentData::GetAttributeSet(RAttributeSet& aAttributeSet)
266 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
269 return TF32DefaultAttributes::GetAttributeSet(*iHeaderData, aAttributeSet);
272 else if(iVirtualPath)
274 return TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iVirtualPath->URI());
279 return TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iFile);
284 return TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iVirtualPath->URI());
288 return TF32DefaultAttributes::GetAttributeSet(aAttributeSet, iFile);
290 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
293 TInt CF32AgentData::GetStringAttribute(TInt aAttribute, TDes& aValue)
295 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
298 return TF32DefaultAttributes::GetStringAttribute(*iHeaderData, aAttribute, aValue);
301 else if(iVirtualPath)
303 return TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iVirtualPath->URI());
307 return TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iFile);
312 return TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iVirtualPath->URI());
316 return TF32DefaultAttributes::GetStringAttribute(aAttribute, aValue, iFile);
318 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
321 TInt CF32AgentData::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet)
323 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
326 return TF32DefaultAttributes::GetStringAttributeSet(*iHeaderData, aStringAttributeSet);
329 else if(iVirtualPath)
331 return TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iVirtualPath->URI());
335 return TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iFile);
340 return TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iVirtualPath->URI());
344 return TF32DefaultAttributes::GetStringAttributeSet(aStringAttributeSet, iFile);
346 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
349 CF32AgentUi& CF32AgentData::AgentUiL()
353 // load agent UI from f32AgentUi.dll
354 iAgentUi = TF32AgentUiFactory::CreateF32AgentUiL();
359 #ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT
361 TInt CF32AgentData::Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket)
363 if(aEncryptedInputDataPacket.Length() <= 0)
365 return KErrInsufficientDataPacketLength;
368 aDecryptedOutputDataPacket = aEncryptedInputDataPacket;
372 void CF32AgentData::Read(const TDesC8& aEncryptedInputDataPacket, TDes8& aDecryptedOutputDataPacket, TRequestStatus& aStatus)
374 TRequestStatus* status = &aStatus;
375 if(aEncryptedInputDataPacket.Length() <= 0)
377 User::RequestComplete(status, KErrInsufficientDataPacketLength);
380 aDecryptedOutputDataPacket = aEncryptedInputDataPacket;
381 User::RequestComplete(status, KErrNone);
384 #endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT