contentmgmt/referencedrmagent/RefTestAgent/RTAParser/wmdrmcontentparser.cpp
changeset 15 da2ae96f639b
child 29 ece3df019add
--- /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 <caf/caferr.h>
+
+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;
+	}