messagingapp/msgnotifications/msgnotifier/tsrc/mmstestbed/src/mmsteststaticutils.cpp
changeset 52 12db4185673b
parent 44 36f374c67aa8
child 61 8ba0afbb4637
--- a/messagingapp/msgnotifications/msgnotifier/tsrc/mmstestbed/src/mmsteststaticutils.cpp	Tue Jul 06 14:12:40 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,528 +0,0 @@
-/*
- * 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 "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 <f32file.h>
-#include <centralrepository.h>
-#include <apparc.h>
-#include <msvapi.h>
-#include <msvids.h>
-
-#include "mmsteststaticutils.h"
-#include "mmsconst.h"
-#include <MmsEnginePrivateCRKeys.h>
-#include "mmssettings.h"
-#include <mmsheaders.h>
-#include "mmsservercommon.h"
-#include <mmsencode.h>
-
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-TMmsJoinedArrays::TMmsJoinedArrays(CDesCArray* const & aArray1, CDesCArray* const & aArray2)
-: iArray1(aArray1), iArray2(aArray2)
-    {
-    }
-
-TInt TMmsJoinedArrays::MdcaCount() const
-    {
-    TInt count=0;
-    if (iArray1)
-        count += iArray1->MdcaCount();
-    if (iArray2)
-        count += iArray2->MdcaCount();
-    return count;
-    }
-
-TPtrC16 TMmsJoinedArrays::MdcaPoint(TInt aIndex) const
-    {
-    if (iArray1)
-        {
-        if (aIndex < iArray1->MdcaCount())
-            return iArray1->MdcaPoint(aIndex);
-        else
-            aIndex -= iArray1->MdcaCount();
-        }
-    return iArray2->MdcaPoint(aIndex);
-    }
-
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-TMmsTestUtils::TMmsTestUtils()
-    {
-
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-HBufC* TMmsTestUtils::ReadContactFromFileL( TDesC& aFileName, RFs& aFs )
-    {
-    RFile file;
-    TInt error = KErrNone;
-
-    TInt textBufferSize = 256;
-    HBufC* textBuffer = HBufC::NewL( textBufferSize );
-    TPtr textPtr = textBuffer->Des();
-    TFileText textFile;
-
-    error = file.Open( aFs, aFileName,
-            EFileRead|EFileShareReadersOnly );
-
-    if ( error == KErrNone )
-        {
-        textFile.Set( file );
-        error = textFile.Seek( ESeekStart );
-        }
-
-    if ( error == KErrNone )
-        {
-        error = textFile.Read( textPtr );
-        }
-
-    file.Close();
-
-    if ( textBuffer->Des().Find( &KMmsByteOrderMark, 1 ) == 0 )
-        {
-        textBuffer->Des().Copy( textBuffer->Des().Mid( 1 ) );
-        }
-
-    return textBuffer;
-    }
-
-//----------------------------------------------------------------------------------------
-// turn on detailed logging while decoding a message
-//----------------------------------------------------------------------------------------
-//
-void TMmsTestUtils::DecodeLoggingOnL()
-    {
-    // CenRep for decodelogging
-    CRepository* repository = NULL;
-    TInt retval = KErrNone;
-    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) );
-    if( retval == KErrNone )
-        {
-        // Best effort - if cannot access repository, no can do
-        TInt temp = 1;
-        repository->Set( KMmsEngineDecodeLog, temp );
-        delete repository;
-        }
-    }
-
-//----------------------------------------------------------------------------------------
-// turn off detailed logging while decoding a message
-//----------------------------------------------------------------------------------------
-//
-void TMmsTestUtils::DecodeLoggingOffL()
-    {
-    // CenRep for decodelogging
-    CRepository* repository = NULL;
-    TInt retval = KErrNone;
-    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) );
-    if( retval == KErrNone )
-        {
-        // Best effort - if cannot access repository, no can do
-        TInt temp = 0;
-        repository->Set( KMmsEngineDecodeLog, temp );
-        delete repository;
-        }
-
-    }
-
-//----------------------------------------------------------------------------------------
-// turn on binary dump of incoming messages
-//----------------------------------------------------------------------------------------
-//
-void TMmsTestUtils::BinaryDumpOnL()
-    {
-    // CenRep for binarydump setting
-    CRepository* repository = NULL;
-    TInt retval = KErrNone;
-    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) );
-    if( retval == KErrNone )
-        {
-        // Best effort - if cannot access repository, no can do
-        TInt temp = 1;
-        repository->Set( KMmsEngineBinaryDump, temp );
-        delete repository;
-        }
-
-    }
-
-//----------------------------------------------------------------------------------------
-// turn off binary dump of incoming messages
-//----------------------------------------------------------------------------------------
-//
-void TMmsTestUtils::BinaryDumpOffL()
-    {
-    // CenRep for binarydump setting
-    CRepository* repository = NULL;
-    TInt retval = KErrNone;
-    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) );
-    if( retval == KErrNone )
-        {
-        // Best effort - if cannot access repository, no can do
-        TInt temp = 0;
-        repository->Set( KMmsEngineBinaryDump, temp );
-        delete repository;
-        }
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-void TMmsTestUtils::CleanDirectoryL( RFs& aFs )
-    {
-    // Delete the files in the directory
-    CFileMan* fileMan = CFileMan::NewL( aFs );
-    CleanupStack::PushL( fileMan );
-    fileMan->RmDir( KMmsDefaultLocalModeDir );
-    fileMan->RmDir( KMmsMMBoxDirectory );
-    fileMan->RmDir( KMmsMMBoxDescriptionDirectory );
-    CleanupStack::PopAndDestroy(); // fileManager
-    // we don't want to throw these away!
-    aFs.MkDirAll( KMmsDefaultLocalModeDir );
-    aFs.MkDirAll( KMmsMMBoxDirectory );
-    aFs.MkDirAll( KMmsMMBoxDescriptionDirectory );
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-void TMmsTestUtils::Dump( CBufFlat& aBuffer, TFileName& aFilename, TParse& aParse, RFs& aFs )
-    {
-    TInt error = KErrNone;
-    aFs.MkDirAll( aFilename );
-    TUint att;
-    if ( aFs.Att( aFilename, att ) == KErrNone )
-        {
-        _LIT( KRelated, "dump.mms");
-        aParse.Set( aFilename, &KRelated, NULL );
-        aFilename = aParse.FullName();
-        error = CApaApplication::GenerateFileName( aFs, aFilename );
-        if ( error == KErrNone )
-            {
-            RFile file;
-            error = file.Create( aFs, aFilename, EFileWrite | EFileShareExclusive );
-            // for message id generation
-            aParse.Set( aFilename, NULL, NULL );
-            if ( error == KErrNone )
-                {
-                // the data is supposed to be in the encode buffer
-                TPtr8 ptr = aBuffer.Ptr( 0 );
-                file.Write( ptr );
-                file.Flush();
-                }
-
-            // done - close files
-            file.Close();
-            }
-        }
-    }
-
-// ---------------------------------------------------------
-//
-// ---------------------------------------------------------
-//
-void TMmsTestUtils::CleanBoxL(TMsvId aBoxId, CMsvSession& aSession)
-    {
-    CMsvEntry* cEntry = NULL;
-    // delete all messages from the specified box
-    cEntry = aSession.GetEntryL(KMsvRootIndexEntryId);
-    CleanupStack::PushL(cEntry);
-    cEntry->SetEntryL(aBoxId);
-    // show invisible entries
-    cEntry->SetSortTypeL( TMsvSelectionOrdering( KMsvNoGrouping, EMsvSortByNone, ETrue ) );
-    CMsvEntrySelection* msvEntrySelection = cEntry->ChildrenWithMtmL(KUidMsgTypeMultimedia);
-    CleanupStack::PushL(msvEntrySelection);
-
-    CMsvEntrySelection* selection = NULL;
-    cEntry->SetSortTypeL( TMsvSelectionOrdering( KMsvNoGrouping, EMsvSortByNone, ETrue ) );
-    selection = cEntry->ChildrenWithMtmL(KUidMsgMMSNotification);
-    CleanupStack::PushL( selection );
-    if ( selection->Count() > 0 )
-        {
-        msvEntrySelection->AppendL( selection->Back( 0 ), selection->Count() );
-        }
-    CleanupStack::PopAndDestroy(); // selection
-
-    int i;
-    for (i = 0; i < msvEntrySelection->Count(); ++i)
-        {
-        CMsvEntry* entry = aSession.GetEntryL( msvEntrySelection->At(i) );
-        CleanupStack::PushL( entry );
-        TMsvEntry tEntry = entry->Entry();
-        tEntry.SetReadOnly(EFalse);
-        entry->ChangeL(tEntry);
-        cEntry->DeleteL( msvEntrySelection->At(i) );
-        CleanupStack::PopAndDestroy( entry );
-        }
-
-    CleanupStack::PopAndDestroy(msvEntrySelection);
-    CleanupStack::PopAndDestroy(cEntry);
-    }
-
-//----------------------------------------------------------------------------------------
-// turn on logging email recipients
-//----------------------------------------------------------------------------------------
-void TMmsTestUtils::EmailLoggingOnL()
-    {
-    // CenRep for binarydump setting
-    CRepository* repository = NULL;
-    TInt retval = KErrNone;
-    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) ); // ***
-    if( retval == KErrNone )
-        {
-        TInt temp = 1;
-        repository->Set( KMmsEngineLogEmailRecipients, temp );
-        delete repository;
-        }
-
-    }
-
-//----------------------------------------------------------------------------------------
-// turn off logging email recipients
-//----------------------------------------------------------------------------------------
-void TMmsTestUtils::EmailLoggingOffL()
-    {
-    // CenRep for binarydump setting
-    CRepository* repository = NULL;
-    TInt retval = KErrNone;
-    TRAP( retval, repository = CRepository::NewL( KUidMmsServerMtm ) ); // ***
-    if( retval == KErrNone )
-        {
-        TInt temp = 0;
-        repository->Set( KMmsEngineLogEmailRecipients, temp );
-        delete repository;
-        }
-
-    }
-
-//----------------------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------------------
-TInt TMmsTestUtils::CountChildrenL(TMsvId aBoxId, CMsvEntrySelection*& aMsvEntrySelection, CMsvSession& aSession, TUid aMessageType )
-    {
-    CMsvEntry* cEntry = aSession.GetEntryL(KMsvRootIndexEntryId);
-    CleanupStack::PushL(cEntry);
-    cEntry->SetEntryL(aBoxId);
-    if (aMsvEntrySelection != NULL)
-        {
-        delete aMsvEntrySelection;
-        aMsvEntrySelection = NULL;
-        }
-    aMsvEntrySelection = cEntry->ChildrenWithMtmL(aMessageType);
-    CleanupStack::PopAndDestroy(); // cEntry
-    return aMsvEntrySelection->Count();
-    }
-
-
-// -----------------------------------------------------------------------------
-// CreateFolderEntryL
-//
-// -----------------------------------------------------------------------------
-//
-void TMmsTestUtils::CreateFolderEntryL(
-    CMsvSession& aSession,
-    TMsvId aParentFolder,
-    const TDesC& aFolderName,
-    TMsvId& aFolderId )
-    {
-    aFolderId = KMsvNullIndexEntryId;
-    CMsvEntry* cEntry = aSession.GetEntryL( aParentFolder );
-    CleanupStack::PushL( cEntry );
-
-    // Create a new folder.
-
-    TMsvEntry entry;
-    entry.iType = KUidMsvFolderEntry;
-    entry.iMtm = KUidMsvLocalServiceMtm;
-    entry.iDetails.Set( aFolderName );
-    entry.SetVisible( EFalse );
-    entry.SetInPreparation( EFalse );
-    entry.iServiceId = KMsvLocalServiceIndexEntryId;
-    cEntry->CreateL( entry );
-    aFolderId = entry.Id();
-    CleanupStack::PopAndDestroy( cEntry );
-
-    }
-
-
-//----------------------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------------------
-TMsvId TMmsTestUtils::CreateNotificationEntryL(
-        TMsvId aNotificationFolder,
-        TMsvId aServiceId,
-        CBufFlat* aEncodeBuffer,
-        CMsvSession& aSession )
-    {
-    TMsvId entryId = KMsvNullIndexEntryId;
-    if ( aNotificationFolder == KMsvNullIndexEntryId )
-        {
-        // no folder no entry
-        return entryId;
-        }
-
-    CMsvEntry* cEntry = aSession.GetEntryL( aNotificationFolder );
-    CleanupStack::PushL(cEntry);
-
-    TMsvEntry entry;
-    entry.iType = KUidMsvMessageEntry;
-    entry.iMtm = KUidMsgTypeMultimedia;
-    entry.SetVisible( ETrue );
-    // If we want to put data here, InPreparation must be set to true first
-    entry.SetInPreparation( EFalse );
-    entry.iServiceId = KMsvLocalServiceIndexEntryId;
-    entry.iRelatedId = aServiceId;
-    entry.iMtmData2 = KMmsNotificationBinary;
-    cEntry->CreateL( entry );
-    entryId = entry.Id();
-
-    //
-    // Stream
-    // 1) length of the data as 32 bit integer
-    // 2) pushed message data
-    // into created entry's stream
-    //
-    cEntry->SetEntryL( entryId );
-    CMsvStore* store = cEntry->EditStoreL();
-    CleanupStack::PushL( store );   // ***
-    RMsvWriteStream outs;
-    outs.AssignLC( *store, KUidBinaryNotificationStream ); // ***
-    TPtrC8 ptr = aEncodeBuffer->Ptr( 0 );
-    outs.WriteUint32L( ptr.Length() );
-    outs.WriteL( ptr );
-    outs.CommitL();
-    outs.Close();
-    store->CommitL();
-
-    CleanupStack::PopAndDestroy( &outs ); // close outs
-    CleanupStack::PopAndDestroy( store );
-    CleanupStack::PopAndDestroy( cEntry );
-
-    return entryId;
-
-    }
-
-//----------------------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------------------
-void TMmsTestUtils::FormNotification(
-        TDesC8& aUrl,
-        TInt aSize,
-        CMmsHeaders& aMmsHeaders,
-        CMmsEncode& aMmsEncoder,
-        CBufFlat* aEncodeBuffer )
-    {
-    // for test purposes aUrl will contain the filename.
-
-    // Reset sets the default encapsulation version
-    // The default version has been set from MmsSettings in NewL
-    aMmsHeaders.Reset();
-
-    // construct the notification into iMmsHeaders, and call encode
-
-    aMmsHeaders.SetMessageType( KMmsMessageTypeMNotificationInd );
-
-    TTime currentTime;
-    currentTime.UniversalTime();
-    currentTime.Int64();
-
-    TPtrC8 tid;
-    TBufC8<KMMSMAXTIDLENGTH> target;
-    TInt random = 0;
-
-    // we don't generate a true random TID: We generate the
-    // TID from the URL so that if we generate a notification
-    // twice from the same file, we get the same TID and the
-    // same URL. This way we can test the pruning function in
-    // server MTM
-
-    TInt i;
-    for ( i = 0; i < aUrl.Length(); ++i )
-        {
-        random += aUrl[ i ];
-        }
-
-    target.Des().Num( random );
-    tid.Set( target.Des() );
-    aMmsHeaders.SetTidL( tid );
-
-    aMmsHeaders.SetMessageClass( EMmsClassPersonal );
-    aMmsHeaders.SetMessageSize( aSize );
-    const TInt KTenHours = 10 * 60 * 60; // 10 hours relative expiry
-    aMmsHeaders.SetExpiryInterval( KTenHours );
-    aMmsHeaders.SetContentLocationL( aUrl );
-
-    aMmsEncoder.EncodeHeadersL( aMmsHeaders, *aEncodeBuffer );
-
-    }
-
-
-//----------------------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------------------
-TBool TMmsTestUtils::IsFile(const TDesC& aFileName, RFs& aFs)
-    {
-    //Is the name a file?
-    if (IsDrive(aFileName))
-        return EFalse;
-    return !(IsDir(aFileName, aFs));
-    }
-
-//----------------------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------------------
-TBool TMmsTestUtils::IsDir(const TDesC& aFileName, RFs& aFs)
-    {
-    //Is the name a directory?
-    TEntry entry;
-    TInt err = aFs.Entry(aFileName, entry);
-    if (err)
-        return EFalse;
-    else
-        return entry.IsDir();
-    }
-
-//----------------------------------------------------------------------------------------
-//
-//----------------------------------------------------------------------------------------
-TBool TMmsTestUtils::IsDrive(const TDesC& aFileName)
-    {
-    //horrible little function to figure if the path is just a drive
-    TBool retVal = EFalse;
-    if (aFileName.Length()==3) //eg "c:\"
-        {
-        if ((aFileName[1] == ':')  && (aFileName[2] == '\\'))
-            retVal=ETrue;
-        }
-    else if (aFileName.Length()==2) //eg "c:"
-        {
-        if (aFileName[1] == ':')
-            retVal=ETrue;
-        }
-    return retVal;
-    }
-
-// end of file