imagingandcamerafws/imaginginttest/src/TestImageDecoderDRM.cpp
changeset 0 40261b775718
child 41 f7bf1ed8db72
--- /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);
+    }