diff -r afc583cfa176 -r da2ae96f639b contentmgmt/referencedrmagent/RefTestAgent/RTAParser/wmdrmcontentparser.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/contentmgmt/referencedrmagent/RefTestAgent/RTAParser/wmdrmcontentparser.cpp Mon Oct 12 10:17:04 2009 +0300 @@ -0,0 +1,154 @@ +/* +* Copyright (c) 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 "wmdrmcontentparser.h" +#include + +using namespace ReferenceTestAgent; +using namespace ContentAccess; + +EXPORT_C CWmdrmContentParser* CWmdrmContentParser::NewL(const TDesC8& aHeaderData) + { + CWmdrmContentParser* self = new (ELeave) CWmdrmContentParser; + CleanupStack::PushL(self); + self->ConstructL(aHeaderData); + CleanupStack::Pop(self); + return self; + } + + +CWmdrmContentParser::CWmdrmContentParser() + { + } + + +void CWmdrmContentParser::ConstructL(const TDesC8& aHeaderData) + { + iHeaderData = aHeaderData.AllocL(); + + // Initialise default attributes. + CreateAttributeSetL(); + CreateStringAttributeSetL(); + } + +void CWmdrmContentParser::CreateAttributeSetL() + { + // Initialise attributes + SetAttributeL(EIsProtected, ETrue, KErrNone); + SetAttributeL(EIsForwardable, EFalse, KErrNone); + SetAttributeL(EIsModifyable, EFalse, KErrNone); + SetAttributeL(EIsCopyable, EFalse, KErrNone); + SetAttributeL(ECanPlay, EFalse, KErrNone); + SetAttributeL(ECanPrint, EFalse, KErrNone); + SetAttributeL(ECanExecute, EFalse, KErrNone); + SetAttributeL(ECanView, EFalse, KErrNone); + SetAttributeL(ERightsNone, ETrue, KErrNone); + SetAttributeL(ERightsPending, EFalse, KErrNone); + SetAttributeL(ERightsHaveExpired, EFalse, KErrNone); + SetAttributeL(EPreviewAvailable, EFalse, KErrNone); + SetAttributeL(ECanRewind, EFalse, KErrNone); + SetAttributeL(ECopyPaste, EFalse, KErrNone); + SetAttributeL(ERightsConsumable, EFalse, KErrNone); + SetAttributeL(ERightsStateless, EFalse, KErrNone); + SetAttributeL(ECanMove, ETrue, KErrNone); + SetAttributeL(ECanRename, ETrue, KErrNone); + SetAttributeL(ECanAutomaticConsume, EFalse, KErrNone); + } + +void CWmdrmContentParser::CreateStringAttributeSetL() + { + // Initialise string attributes. + _LIT(KDescription, "WMDRM"); + SetStringAttributeL(EDescription , KDescription, KErrNone); + + _LIT(KMimeType, "application/vnd.drm.asf"); + + SetStringAttributeL(EMimeType, KMimeType, KErrNone); + } + +void CWmdrmContentParser::SetAttributeL(TInt aAttribute, TInt aValue, TInt aErrorCode) + { + iAttributeSet.AddL(aAttribute); + User::LeaveIfError(iAttributeSet.SetValue(aAttribute, aValue, aErrorCode)); + } + +void CWmdrmContentParser::SetStringAttributeL(TInt aAttribute, const TDesC& aValue, TInt aErrorCode) + { + iStringAttributeSet.AddL(aAttribute); + User::LeaveIfError(iStringAttributeSet.SetValue(aAttribute, aValue, aErrorCode)); + } + +CWmdrmContentParser::~CWmdrmContentParser() + { + delete iHeaderData; + + iAttributeSet.Close(); + iStringAttributeSet.Close(); + } + +EXPORT_C TInt CWmdrmContentParser::GetAttribute(TInt aAttribute, TInt& aValue) const + { + return iAttributeSet.GetValue(aAttribute, aValue); + } + +EXPORT_C TInt CWmdrmContentParser::GetStringAttribute(TInt aAttribute, TDes& aValue) const + { + return iStringAttributeSet.GetValue(aAttribute, aValue); + } + +EXPORT_C TInt CWmdrmContentParser::GetAttributeSet(RAttributeSet &aAttributeSet) const + { + TInt value = 0; + TInt err = KErrNone; + for(TInt i = 0; i < aAttributeSet.Count(); i++) + { + TInt attribute = aAttributeSet[i]; + err = GetAttribute(attribute, value); + if(err != KErrNone) + { + break; + } + + aAttributeSet.SetValue(attribute, value, err); + } + return err; + } + +EXPORT_C TInt CWmdrmContentParser::GetStringAttributeSet(RStringAttributeSet &aStringAttributeSet) const + { + TInt err = KErrNone; + for(TInt i = 0; i < aStringAttributeSet.Count(); i++) + { + TInt attribute = aStringAttributeSet[i]; + HBufC* value = NULL; + TRAP(err, value = HBufC::NewL(iStringAttributeSet.GetValueLength(attribute))); + CleanupStack::PushL(value); + + TPtr valuePtr = value->Des(); + err = GetStringAttribute(attribute, valuePtr); + if(err != KErrNone) + { + CleanupStack::PopAndDestroy(value); + break; + } + + aStringAttributeSet.SetValue(attribute, valuePtr, err); + CleanupStack::PopAndDestroy(value); + } + return err; + }