--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/imaginginttest/src/TestImageDecoderDRM.cpp Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,231 @@
+// 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 "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:
+// Integration test.
+//
+//
+
+#include <testframework.h>
+
+#include "TestImageDecoderDRM.h"
+
+const TInt KMimeMaxLength = 256;
+
+_LIT(KJpegRefFile, "jfif444.mbm"); // Reference filename
+_LIT(KDefaultRightsUniqueId, "ICLTestjfif444Id001"); // Unique Id of the content
+
+// Positive Test
+
+/**
+*
+* Ctor for CTestImageDecDrmEnableAgentUI
+*
+* @param const TDesC& aTestName: Name of this test step used by the script file.
+*
+* @return CTestImageDecDrmEnableAgentUI*:
+* Constructed CTestImageDecDrmEnableAgentUI object
+*
+*/
+CTestImageDecDrmEnableAgentUI* CTestImageDecDrmEnableAgentUI::NewL(const TDesC& aTestName)
+ {
+ return new (ELeave) CTestImageDecDrmEnableAgentUI(aTestName);
+ }
+
+/**
+*
+* Test step constructor.
+* Each test step initialises its own name.
+*
+* @param const TDesC& aTestName: Name of this test step.
+*
+*/
+CTestImageDecDrmEnableAgentUI::CTestImageDecDrmEnableAgentUI(const TDesC& aTestName):
+ CTestStepConversion(aTestName)
+ {
+ iHeapSize = 500000;
+ }
+
+/**
+*
+* Do the test step.
+* Each test step must supply an implementation for DoTestStepL.
+*
+* @return TVerdict: The result of the test step.
+*
+*/
+TVerdict CTestImageDecDrmEnableAgentUI::DoTestStepL()
+ {
+ TVerdict result = EPass;
+ if (iTestStepName.Compare(_L("MM-ICL-FRM-I-0761-HP")) == 0)
+ {
+ result = TestStep_I_0761L();
+ }
+
+ return result;
+ }
+
+/**
+*
+* Test Step.
+*
+* @return TVerdict: The result of the test step.
+*
+*/
+TVerdict CTestImageDecDrmEnableAgentUI::TestStep_I_0761L()
+ {
+ // Dummy Hal call for heap balance on target
+ if (DummyHalCall() != KErrNone)
+ {
+ return EInconclusive;
+ }
+
+ __MM_HEAP_MARK;
+
+ TInt err = KErrNone;
+ err = RFbsSession::Connect();
+ if (err != KErrNone)
+ {
+ INFO_PRINTF2(_L("RFbsSession::Connect() failed, err = %d"), err);
+ return EInconclusive;
+ }
+
+ // Open and decode the image
+ TRAP(err, OpenImageAndDecodeFromFileSourceL(iFileNameSrc, KDefaultRightsUniqueId, EView));
+
+ RFbsSession::Disconnect();
+
+ __MM_HEAP_MARKEND;
+
+ if (err == KErrNone)
+ {
+ return EPass;
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Error in opening/decoding the image : %d"), err);
+ return EFail;
+ }
+ }
+
+/**
+*
+* Opens the image for 'the intent' and decodes.
+*
+* @param const TDesC& aFileName: Name of the data file.
+* @param const TDesC& aUniqueId: Unique Id of the content file.
+* @param ContentAccess::TIntent aIntent: Intent for opening the content file.
+*
+* @leave err: Leaves with 'err'.
+*
+*/
+void CTestImageDecDrmEnableAgentUI::OpenImageAndDecodeFromFileSourceL(
+ const TDesC& aFileName,
+ const TDesC& aUniqueId,
+ ContentAccess::TIntent aIntent)
+ {
+ // Get the path
+ TFileName theSourceFilename;
+ Directory(EInput, theSourceFilename);
+ theSourceFilename.Append(aFileName);
+
+ User::LeaveIfError(iFs.Connect());
+
+ // Get the MIME type from ini file
+ TBuf8<KMimeMaxLength> mimeType;
+ ReadMimeTypeFromConfig(mimeType);
+
+ INFO_PRINTF4(_L("Opening the file %S for intent %d, having Unique Id %S."), &theSourceFilename, aIntent, &aUniqueId);
+ TMMFileSource fileSource(theSourceFilename, aUniqueId, aIntent);
+
+ // Open the image and create an image decoder
+ TInt err = KErrNone;
+ CImageDecoder* imageDecoder = NULL;
+ TRAP(err, imageDecoder = CImageDecoder::FileNewL(iFs, fileSource, mimeType));
+
+ if (err != KErrNone)
+ {
+ INFO_PRINTF3(_L("Cannot open file: %S. Unexpected Error: %d"), &theSourceFilename, err);
+ User::Leave(err);
+ }
+
+ if (imageDecoder == NULL)
+ {
+ INFO_PRINTF1(_L("ImageDecoder is NULL!"));
+ User::Leave(err);
+ }
+ CleanupStack::PushL(imageDecoder);
+
+ INFO_PRINTF4(_L("The file %S for intent %d, having Unique Id %S had been opened."), &theSourceFilename, aIntent, &aUniqueId);
+
+ INFO_PRINTF1(_L("Enabling Agent's user interface for errors and confirmation requests."));
+ err = imageDecoder->SetAgentProperty(EAgentPropertyAgentUI, 1);
+
+ if (err != KErrNone)
+ {
+ INFO_PRINTF2(_L("SetAgentProperty(EAgentPropertyAgentUI, 1) failed with %d"), err);
+ INFO_PRINTF1(_L("\tFailure is expected, as RTA does not support this feature."));
+ INFO_PRINTF1(_L("\tContinue test."));
+ }
+
+ // Create an active listener and push it on the cleanup stack
+ CActiveListener* activeListener = new (ELeave) CActiveListener;
+ CleanupStack::PushL(activeListener);
+
+ const TFrameInfo* theFrameInfo = &imageDecoder->FrameInfo();
+
+ // Create the destination bitmap
+ CFbsBitmap* destBitmap = new (ELeave) CFbsBitmap;
+ CleanupStack::PushL(destBitmap);
+
+ // Create the destination bitmap with the specified size and display mode
+ User::LeaveIfError(destBitmap->Create(
+ theFrameInfo->iOverallSizeInPixels,
+ theFrameInfo->iFrameDisplayMode));
+
+ activeListener ->InitialiseActiveListener();
+
+ // Decode the image
+ imageDecoder->Convert(&activeListener->iStatus, *destBitmap, 0);
+ CActiveScheduler::Start();
+
+ err = activeListener->iStatus.Int();
+ if (err == KErrNone)
+ {
+ INFO_PRINTF4(_L("Conversion of file %S for intent %d, having Unique Id %S was successfull!"), &theSourceFilename, aIntent, &aUniqueId);
+ }
+ else
+ {
+ INFO_PRINTF2(_L("Failed during conversion of the file: %S"), &theSourceFilename);
+
+ // imageDecoder, activeListener, destBitmap
+ CleanupStack::PopAndDestroy(3, imageDecoder);
+ User::Leave(err);
+ }
+
+ // Get the reference filename
+ TFileName refFilename;
+ TBuf<KLenBufferExtension> extension;
+ Directory(EReference, refFilename);
+ refFilename.Append(KJpegRefFile);
+
+ if (err == KErrNone)
+ {
+ // Check the bitmaps
+ INFO_PRINTF2(_L("Comparison of the decoded file having Unique Id: %S."), &aUniqueId);
+ err = CheckBitmapL(*destBitmap, refFilename);
+ }
+
+ // imageDecoder, activeListener, destBitmap
+ CleanupStack::PopAndDestroy(3, imageDecoder);
+ User::Leave(err);
+ }