diff -r 000000000000 -r bde4ae8d615e os/security/contentmgmt/contentaccessfwfordrm/source/f32agent/f32defaultattributes.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/security/contentmgmt/contentaccessfwfordrm/source/f32agent/f32defaultattributes.cpp Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,358 @@ +/* +* Copyright (c) 2004-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 "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: +* +*/ + + +#include +#include + +#include +#include +#include +#include +#include "f32defaultattributes.h" + + +using namespace ContentAccess; + +TInt TF32DefaultAttributes::GetAttribute(TInt aAttribute, TInt& aValue, const TDesC& ) + { + TInt err = KErrNone; + // All files handled by the F32 agent are unprotected and have the same + // standard set of attributes + switch(aAttribute) + { + case EIsForwardable: + case EIsModifyable: + case EIsCopyable: + case ECanPlay: + case ECanPrint: + case ECanExecute: + case ECanView: + case ECanRewind: + case ECopyPaste: + case ECanMove: + case ECanRename: + case ECanAutomaticConsume: + aValue = ETrue; + break; + case EIsMediaPlayerOnly: + case EIsAutomatedUseOnly: + case EIsProtected: + case EPreviewAvailable: + aValue = EFalse; + break; + case ETrackNumber: + case EContentCDataInUse: + case EContentVersion: + default: + err = KErrCANotSupported; + break; + }; + return err; + } + +TInt TF32DefaultAttributes::GetAttributeSet(RAttributeSet& aAttributeSet, const TDesC& aUri) + { + TInt i = 0; + TInt attribute = 0; + TInt value=0; + TInt err = KErrNone; + TInt numAttributes = aAttributeSet.Count(); + + // loop through all the attriutes in the set and find their values + for(i = 0; i < numAttributes; i++) + { + attribute = aAttributeSet[i]; + err = GetAttribute(attribute, value, aUri); + aAttributeSet.SetValue(attribute, value, err); + } + return KErrNone; + } + +TInt TF32DefaultAttributes::GetStringAttribute(TInt aAttribute, TDes& aValue, const TDesC& aUri) + { + TInt err = KErrNone; + TBuf8 mimeType; + + switch(aAttribute) + { + case EMimeType: + TRAP(err, GetMimeTypeL(aUri, mimeType)); + if(err == KErrNone) + { + aValue.Copy(mimeType); + } + break; + default: + err = KErrCANotSupported; + break; + }; + return err; + } + +TInt TF32DefaultAttributes::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, const TDesC& aUri) + { + TInt i = 0; + TInt attribute = 0; + TInt err = KErrNone; + TBuf buf; + + TInt numAttributes = aStringAttributeSet.Count(); + + // loop through all the attriutes in the set and find their values + for(i = 0; i < numAttributes; i++) + { + buf.SetLength(0); + attribute = aStringAttributeSet[i]; + err = GetStringAttribute(attribute, buf, aUri); + err = aStringAttributeSet.SetValue(attribute,buf, err); + if(err != KErrNone) + { + return err; + } + } + return KErrNone; + } + +void TF32DefaultAttributes::GetMimeTypeL(const TDesC& aURI, TDes8& aMimeType) + { + TUid appUid(KNullUid); + TDataType dataType; + RApaLsSession apparcSession; + + // Connect to Apparc + User::LeaveIfError(apparcSession.Connect()); + CleanupClosePushL(apparcSession); + + User::LeaveIfError(apparcSession.AppForDocument(aURI, appUid, dataType)); + + if(dataType.Des8().Length() == 0) + { + User::Leave(KErrNotFound); + } + + aMimeType.Append(dataType.Des8()); + CleanupStack::PopAndDestroy(&apparcSession); + } + + +TInt TF32DefaultAttributes::GetAttribute(TInt aAttribute, TInt& aValue, RFile& /*aFile*/) + { + return GetAttribute(aAttribute, aValue, KNullDesC); + } + +TInt TF32DefaultAttributes::GetAttributeSet(RAttributeSet& aAttributeSet, RFile& aFile) + { + TInt i = 0; + TInt attribute = 0; + TInt value = 0; + TInt err = KErrNone; + TInt numAttributes = aAttributeSet.Count(); + + // loop through all the attributes in the set and find their values + for(i = 0; i < numAttributes; i++) + { + attribute = aAttributeSet[i]; + err = GetAttribute(attribute, value, aFile); + aAttributeSet.SetValue(attribute, value, err); + } + return KErrNone; + } + +TInt TF32DefaultAttributes::GetStringAttribute(TInt aAttribute, TDes& aValue, RFile& aFile) + { + TInt err = KErrNone; + TBuf8 mimeType; + + switch(aAttribute) + { + case EMimeType: + TRAP(err, GetMimeTypeL(aFile, mimeType)); + if(err == KErrNone) + { + aValue.Copy(mimeType); + } + break; + default: + err = KErrCANotSupported; + break; + }; + return err; + } + +TInt TF32DefaultAttributes::GetStringAttributeSet(RStringAttributeSet& aStringAttributeSet, RFile& aFile) + { + TInt i = 0; + TInt attribute = 0; + TInt err = KErrNone; + TBuf buf; + + TInt numAttributes = aStringAttributeSet.Count(); + + // loop through all the attriutes in the set and find their values + for(i = 0; i < numAttributes; i++) + { + buf.SetLength(0); + attribute = aStringAttributeSet[i]; + err = GetStringAttribute(attribute, buf, aFile); + err = aStringAttributeSet.SetValue(attribute,buf, err); + if(err != KErrNone) + { + return err; + } + } + return KErrNone; + } + +void TF32DefaultAttributes::GetMimeTypeL(RFile& aFile, TDes8& aMimeType) + { + TUid appUid(KNullUid); + TDataType dataType; + RApaLsSession apparcSession; + + // Connect to Apparc + User::LeaveIfError(apparcSession.Connect()); + CleanupClosePushL(apparcSession); + + User::LeaveIfError(apparcSession.AppForDocument(aFile, appUid, dataType)); + + if(dataType.Des8().Length() == 0) + { + User::Leave(KErrNotFound); + } + + aMimeType.Append(dataType.Des8()); + CleanupStack::PopAndDestroy(&apparcSession); + } + +TInt TF32DefaultAttributes::CheckUniqueId(const TDesC& aUniqueId) + { + // The only UniqueId values that make sense for the F32 agent are + // a zero length descriptor (indicating the application is referring to the entire file + // or KDefaultContentObject which is also the entire file in the case of the F32 agent + if(aUniqueId.Length() == 0 || aUniqueId == KDefaultContentObject()) + { + return KErrNone; + } + else + { + return KErrNotFound; + } + } + +TInt TF32DefaultAttributes::CheckVirtualPath(const TVirtualPathPtr& aVirtualPath) + { + // check the Unique Id + TInt err = CheckUniqueId(aVirtualPath.UniqueId()); + + // check if the file exists + + + return err; + } + +TUint TF32DefaultAttributes::GetFileMode(TContentShareMode aMode) + { + + TUint fileMode = EFileStream | EFileRead; + + if(aMode == EContentShareReadWrite) + { + fileMode |= EFileShareReadersOrWriters; + } + else if(aMode == EContentShareExclusive) + { + fileMode |= EFileShareExclusive; + } + else + { + fileMode |= EFileShareReadersOnly; + } + + return fileMode; + } + +#ifdef SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT + +TInt TF32DefaultAttributes::GetAttribute(const TDesC8& /*aHeaderData*/, TInt aAttribute, TInt& aValue) + { + return GetAttribute(aAttribute, aValue, KNullDesC); + } + +TInt TF32DefaultAttributes::GetAttributeSet(const TDesC8& aHeaderData, RAttributeSet& aAttributeSet) + { + TInt i = 0; + TInt attribute = 0; + TInt value = 0; + TInt err = KErrNone; + TInt numAttributes = aAttributeSet.Count(); + + // loop through all the attriutes in the set and find their values + for(i = 0; i < numAttributes; i++) + { + attribute = aAttributeSet[i]; + err = GetAttribute(aHeaderData, attribute, value); + aAttributeSet.SetValue(attribute, value, err); + } + return KErrNone; + } + +TInt TF32DefaultAttributes::GetStringAttribute(const TDesC8& /*aHeaderData*/, TInt aAttribute, TDes& aValue) + { + TInt err = KErrNone; + TBuf8 mimeType; + + switch(aAttribute) + { + case EMimeType: + aValue.Copy(KNullDesC()); + break; + case EContentID: + aValue.Copy(KDefaultContentObject()); + break; + default: + err = KErrCANotSupported; + break; + }; + return err; + } + +TInt TF32DefaultAttributes::GetStringAttributeSet(const TDesC8& aHeaderData, RStringAttributeSet& aStringAttributeSet) + { + TInt i = 0; + TInt attribute = 0; + TInt err = KErrNone; + TBuf buf; + + TInt numAttributes = aStringAttributeSet.Count(); + + // loop through all the attriutes in the set and find their values + for(i = 0; i < numAttributes; i++) + { + buf.SetLength(0); + attribute = aStringAttributeSet[i]; + err = GetStringAttribute(aHeaderData, attribute, buf); + err = aStringAttributeSet.SetValue(attribute, buf, err); + if(err != KErrNone) + { + return err; + } + } + return KErrNone; + } + +#endif //SYMBIAN_ENABLE_SDP_WMDRM_SUPPORT