--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ncdengine/provider/server/src/ncdrightsobjectoperationimpl.cpp Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,214 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "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 "ncdrightsobjectoperationimpl.h"
+
+#include <s32mem.h>
+#include <apmstd.h>
+
+#include "catalogsbasemessage.h"
+#include "catalogshttpincludes.h"
+
+#include "catalogsutils.h"
+#include "catalogscontext.h"
+#include "ncdproviderdefines.h"
+#include "ncddescriptordownloadsuboperation.h"
+#include "ncdhttputils.h"
+#include "ncdproviderutils.h"
+#include "ncddeviceinteractionfactory.h"
+#include "ncdinstallationservice.h"
+#include "ncdgeneralmanager.h"
+
+#include "catalogsdebug.h"
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+//
+CNcdRightsObjectOperation* CNcdRightsObjectOperation::NewL(
+ CNcdGeneralManager& aGeneralManager,
+ const TDesC& aDownloadUri,
+ const TDesC& aMimeType,
+ const TNcdConnectionMethod& aMethod,
+ MNcdOperationRemoveHandler& aRemoveHandler,
+ MCatalogsHttpSession& aHttpSession,
+ MCatalogsSession& aSession )
+ {
+ CNcdRightsObjectOperation* self = new( ELeave ) CNcdRightsObjectOperation(
+ aGeneralManager, aRemoveHandler, aHttpSession, aSession );
+ CleanupClosePushL( *self );
+ self->ConstructL( aMethod, aDownloadUri, aMimeType );
+ CleanupStack::Pop();
+ return self;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CNcdRightsObjectOperation::~CNcdRightsObjectOperation()
+ {
+ DLTRACEIN( ( "" ) );
+ if ( iDownloadOp )
+ {
+ iDownloadOp->Close();
+ iDownloadOp = NULL;
+ }
+ delete iInstallationService;
+ delete iMimeType;
+ DLTRACEOUT((""));
+ }
+
+
+// ---------------------------------------------------------------------------
+// Download config getter
+// ---------------------------------------------------------------------------
+//
+MCatalogsHttpConfig& CNcdRightsObjectOperation::Config()
+ {
+ DASSERT( iDownloadOp );
+ return iDownloadOp->Config();
+ }
+
+
+// ---------------------------------------------------------------------------
+// Cancel
+// ---------------------------------------------------------------------------
+//
+void CNcdRightsObjectOperation::Cancel()
+ {
+ DLTRACEIN(( "" ));
+ if ( iDownloadOp )
+ {
+ iDownloadOp->Cancel();
+ iDownloadOp->Close();
+ iDownloadOp = NULL;
+ }
+ DLTRACEOUT(( "" ));
+ }
+
+
+// ---------------------------------------------------------------------------
+// RunOperation
+// ---------------------------------------------------------------------------
+//
+TInt CNcdRightsObjectOperation::RunOperation()
+ {
+ DLTRACEIN(( "Pending message: %X", iPendingMessage ));
+ DASSERT( iDownloadOp );
+
+ if ( !iPendingMessage )
+ {
+ DLTRACE(("No pending message"));
+ return KErrNotReady;
+ }
+
+ // Start download.
+ DLINFO(("Starting download op"));
+ TInt err = iDownloadOp->Start();
+
+ DLTRACEOUT(("err: %d", err));
+ return err;
+ }
+
+
+// ---------------------------------------------------------------------------
+// Constructor
+// ---------------------------------------------------------------------------
+//
+CNcdRightsObjectOperation::CNcdRightsObjectOperation(
+ CNcdGeneralManager& aGeneralManager,
+ MNcdOperationRemoveHandler& aRemoveHandler,
+ MCatalogsHttpSession& aHttpSession,
+ MCatalogsSession& aSession )
+ :
+ CNcdBaseOperation( aGeneralManager, &aRemoveHandler, ERightsObjectOperation, aSession ),
+ iHttpSession( aHttpSession )
+ {
+ }
+
+
+// ---------------------------------------------------------------------------
+// ConstructL
+// ---------------------------------------------------------------------------
+//
+void CNcdRightsObjectOperation::ConstructL(
+ const TNcdConnectionMethod& aMethod,
+ const TDesC& aDownloadUri,
+ const TDesC& aMimeType )
+ {
+ DLTRACEIN( ( "" ) );
+
+ // Call ConstructL for the base class
+ CNcdBaseOperation::ConstructL();
+
+ iMimeType = ConvertUnicodeToUtf8L( aMimeType );
+
+ iDownloadOp = CNcdDescriptorDownloadSubOperation::NewL(
+ iGeneralManager, iHttpSession, aDownloadUri, *this, iSession );
+
+ iGeneralManager.HttpUtils().ConvertConnectionMethod(
+ aMethod, iConnectionMethod );
+
+ iDownloadOp->Config().SetConnectionMethod( iConnectionMethod );
+
+ iInstallationService =
+ NcdDeviceInteractionFactory::CreateInstallationServiceL();
+
+ DLTRACEOUT(( "" ));
+ }
+
+void CNcdRightsObjectOperation::Progress( CNcdBaseOperation& /*aOperation*/ )
+ {
+ DLTRACEIN((""));
+ }
+
+void CNcdRightsObjectOperation::QueryReceived(
+ CNcdBaseOperation& /*aOperation*/, CNcdQuery* /*aQuery*/ )
+ {
+ DLTRACEIN((""));
+ }
+
+void CNcdRightsObjectOperation::OperationComplete(
+ CNcdBaseOperation* aOperation, TInt aError )
+ {
+ DLTRACEIN(("aOperation=%08x, aError=%d", aOperation, aError));
+ (void) aOperation; // suppresses compiler warning
+
+ if( aError == KErrNone )
+ {
+ // Install the DRM object.
+ DLINFO(("Installing rights object (%d bytes data, mime type %S)",
+ iDownloadOp->Body().Size(), iMimeType ));
+
+ TRAP( aError, iInstallationService->AppendRightsL(
+ iDownloadOp->Body(),
+ TDataType( *iMimeType ) ) );
+ }
+
+ DLINFO(("Completing rights object dl&install operation with %d", aError));
+ CompleteMessage( iPendingMessage,
+ aError != KErrNone ?
+ ENCDOperationMessageCompletionError :
+ ENCDOperationMessageCompletionComplete,
+ aError );
+ }
+