Revision: 201023 RCL_3 PDK_3.0.1
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Mon, 21 Jun 2010 16:13:35 +0300
branchRCL_3
changeset 42 4aca42fa4eb1
parent 34 e257e2b6459d
child 52 b034b1c214c2
Revision: 201023 Kit: 2010125
mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp
mmappcomponents/harvester/filehandler/inc/mpxdbcommon.h
mmappcomponents/harvester/filehandler/inc/mpxharvesterdb.h
mmappcomponents/harvester/filehandler/inc/mpxharvesterdbmanager.h
mmappcomponents/harvester/filehandler/inc/mpxharvesterfilehandlerimp.h
mmappcomponents/harvester/filehandler/src/mpxfolderscanner.cpp
mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp
mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp
mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp
mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp
mmappcomponents/harvester/server/src/mpxconnectioneventhandler.cpp
mmappcomponents/harvester/server/src/mpxharvesterserver.cpp
mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/group/CollectionHelperTestClass.pkg
mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/inc/CollectionHelperTestClass.h
mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/src/CollectionHelperTestClassBlocks.cpp
mmappfw_plat/collection_helper_api/tsrc/conf/CollectionHelperTestClass.cfg
mmappfw_plat/collection_helper_api/tsrc/data/1.alb
mmappfw_plat/collection_helper_api/tsrc/data/1.mp3
mmappfw_plat/collection_helper_api/tsrc/data/1.wma
mmappfw_plat/group/bld.inf
mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/inc/HarvesterCollectionMediatorTest.h
mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/src/HarvesterCollectionMediatorTestBlocks.cpp
mmappfw_plat/harvester_collection_mediator_api/tsrc/conf/HarvesterCollectionMediatorTest.cfg
mmappfw_plat/harvester_utility_api/tsrc/mpxharvestertest/src/mpxharvestertestBlocks.cpp
mmappfw_plat/mpx_base_view_plugins_api/tsrc/conf/tcmpxbaseviewpluginstest.cfg
mmappfw_plat/mpx_base_view_plugins_api/tsrc/conf/ui_mpxbaseviewpluginstest.cfg
mmappfw_plat/mpx_base_view_plugins_api/tsrc/init/TestFramework.ini
mmappfw_plat/mpx_base_view_plugins_api/tsrc/ui_mpxbaseviewpluginstest/group/ui_mpxbaseviewpluginstest.pkg
mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/inc/commontestclass.h
mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testcenrepwatcher.cpp
mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxpluginhandlerbase.cpp
mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxplugininfo.cpp
mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxuser.cpp
mpx/Conf/mpx.confml
mpx/cenrep/101FFCD2.txt
mpx/collectionframework/collectionserver/src/mpxcollectionserver.cpp
mpx/collectionframework/collectionutility/src/mpxcollectionplaylist.cpp
--- a/mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/audiofetcher/src/audiofetcherdialog.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -600,7 +600,8 @@
     
     switch ( aEventType )
         {
-        case EEventItemSingleClicked:   // fallthrough
+    	case EEventItemClicked:      // fallthrough
+        case EEventItemSingleClicked:   
         case EEventEnterKeyPressed:
             {
             TBool closeDialog = HandleListSelectionL();
--- a/mmappcomponents/harvester/filehandler/inc/mpxdbcommon.h	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/filehandler/inc/mpxdbcommon.h	Mon Jun 21 16:13:35 2010 +0300
@@ -24,9 +24,11 @@
 // Please update the increment number for each increment 
 // Please update the version number for each schema change
 #ifdef ABSTRACTAUDIOALBUM_INCLUDED
-_LIT( KHarvesterDBName, "harvesterdbv9_6.dat" );
+_LIT( KHarvesterDBName, "harvesterdbv10_0.dat" );
+_LIT( KHarvesterDBNameEMMC, "harvesterdbv10_0i.dat" );
 #else
-_LIT( KHarvesterDBName, "harvesterdbv9_5.dat" );
+_LIT( KHarvesterDBName, "harvesterdbv10_0n.dat" );
+_LIT( KHarvesterDBNameEMMC, "harvesterdbv10_0in.dat" );
 #endif 
 _LIT( KHarvesterDBPattern, "harvesterdbv*.dat" );
 
--- a/mmappcomponents/harvester/filehandler/inc/mpxharvesterdb.h	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/filehandler/inc/mpxharvesterdb.h	Mon Jun 21 16:13:35 2010 +0300
@@ -51,9 +51,10 @@
     * Two-phased constructor
     * @param aDrive drive of the database
     * @param aFs file session
+    * @param aEMMC whether the system has an internal drive 
     * @return new instance of CMPXHarvesterDB
     */
-    static CMPXHarvesterDB* NewL( TDriveNumber aDrive, RFs& aFs );
+    static CMPXHarvesterDB* NewL( TDriveNumber aDrive, RFs& aFs, TBool aEMMC = EFalse );
 
     /**
     * Virtual destructor
@@ -209,7 +210,7 @@
     /**
     * Default constructor
     */
-    CMPXHarvesterDB( TDriveNumber aDrive, RFs& aFs  );
+    CMPXHarvesterDB( TDriveNumber aDrive, RFs& aFs, TBool aEMMC );
 
     /**
     * 2nd phase constructor
@@ -219,6 +220,7 @@
 private: // data
     TDriveNumber      iDrive;
     RFs&              iFs;
+    TBool             iEMMC;      //Has system an internal drive
     // Internal database
     CFileStore*       iStore;
     RDbStoreDatabase* iDatabase;  // Local single client db
--- a/mmappcomponents/harvester/filehandler/inc/mpxharvesterdbmanager.h	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/filehandler/inc/mpxharvesterdbmanager.h	Mon Jun 21 16:13:35 2010 +0300
@@ -268,7 +268,7 @@
     RPointerArray<CMPXHarvesterDB>   iDatabases;
 
     RFs&                             iFs;   // Not Owned
-
+    TBool                            iEMMC; //Has system an internal drive
 #ifdef __RAMDISK_PERF_ENABLE
     // Defined for RAM disk performance
     TBool                   iRAMDiskPerfEnabled;  // flag to indicate RAM disk feature is enabled from cenrep.
--- a/mmappcomponents/harvester/filehandler/inc/mpxharvesterfilehandlerimp.h	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/filehandler/inc/mpxharvesterfilehandlerimp.h	Mon Jun 21 16:13:35 2010 +0300
@@ -264,6 +264,13 @@
     void ParseScanPathL();
 
     /**
+	 * Read cenrep file for paths	
+     * @param aScanPath fetched from cenrep dirs to scan
+     * @param aBlockPath fetched from cenrep dirs not to scan 
+     */
+    void FetchPathsFromCenrepL( TDes16& aScanPath, TDes16& aBlockPath );
+    
+    /**
     * Parse cenrep string (KHarvesterContainerKey)
     * for a list of containers
     */
--- a/mmappcomponents/harvester/filehandler/src/mpxfolderscanner.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/filehandler/src/mpxfolderscanner.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -192,6 +192,14 @@
         do
             {
             TRAP(err, iDirScan->NextL(iDir));
+            if( !iDir && !err ) 
+                {
+                // if iDir NULL and no error, there are no 
+                // more directories in the structure
+                // in this case there is no leaving functions called before
+                // returning err has to be 0
+                break;
+                }
             blocked = iObserver.IsPathBlockedL( iDirScan->FullPath() );
             if( blocked )
                 {
@@ -246,6 +254,14 @@
                 {
                 MPX_DEBUG1("CMPXFolderScanner::SetupNextDriveToScanL iDirScan->NextL()");
                 TRAP(err, iDirScan->NextL(iDir));
+                if( !iDir && !err ) 
+                    {
+                    // if iDir NULL and no error, there are no 
+                    // more directories in the structure
+                    // in this case there is no leaving functions called before
+                    // returning err has to be 0
+                    break;
+                    }
                 MPX_DEBUG2("CMPXFolderScanner::SetupNextDriveToScanL path %S", &iDirScan->FullPath());
                 blocked = iObserver.IsPathBlockedL( iDirScan->FullPath() );
                 MPX_DEBUG2("CMPXFolderScanner::SetupNextDriveToScanL path blocked %i", blocked);
--- a/mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterdb.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -30,9 +30,10 @@
 // C++ Constructor
 // ---------------------------------------------------------------------------
 //
-CMPXHarvesterDB::CMPXHarvesterDB( TDriveNumber aDrive, RFs& aFs  ) :
+CMPXHarvesterDB::CMPXHarvesterDB( TDriveNumber aDrive, RFs& aFs, TBool aEMMC  ) :
                                   iDrive( aDrive),
-                                  iFs( aFs )
+                                  iFs( aFs ),
+                                  iEMMC( aEMMC )	  
 #ifdef __RAMDISK_PERF_ENABLE
                                   ,iRamDrive(aDrive),
                                   iUseRamDrive(EFalse)
@@ -54,9 +55,9 @@
 // Two-Phased Constructor
 // ---------------------------------------------------------------------------
 //
-CMPXHarvesterDB* CMPXHarvesterDB::NewL( TDriveNumber aDrive, RFs& aFs   )
+CMPXHarvesterDB* CMPXHarvesterDB::NewL( TDriveNumber aDrive, RFs& aFs, TBool aEMMC )
     {
-    CMPXHarvesterDB* self = new( ELeave ) CMPXHarvesterDB( aDrive, aFs );
+    CMPXHarvesterDB* self = new( ELeave ) CMPXHarvesterDB( aDrive, aFs, aEMMC );
     CleanupStack::PushL( self );
     self->ConstructL();
     CleanupStack::Pop( self );
@@ -708,7 +709,14 @@
         fileName.Append( KHarvesterDBPath );
         TDriveUnit drive( iDrive );
         fileName.Append(drive.Name()[0]);
-        fileName.Append(KHarvesterDBName);
+    
+        //Use different name for Dbs if the system has an internal drive vs. MMC-only.
+        //Since hard-coded drive letters in the Thumbnail URIs
+        //So Dbs are not interchangeable between an internal drive system and MMC-only system.		
+        if ( iEMMC )
+           fileName.Append( KHarvesterDBNameEMMC );
+        else
+           fileName.Append( KHarvesterDBName );
         }
     else
         {
@@ -716,7 +724,10 @@
         TDriveUnit drive( iDrive );
         fileName.Append( drive.Name() );
         fileName.Append( KHarvesterDBPath );
-        fileName.Append( KHarvesterDBName );
+        if ( iEMMC )
+           fileName.Append( KHarvesterDBNameEMMC );
+        else
+           fileName.Append( KHarvesterDBName );
 #ifdef __RAMDISK_PERF_ENABLE
         }
 #endif // __RAMDISK_PERF_ENABLE
--- a/mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterdbmanager.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -48,7 +48,8 @@
 // ---------------------------------------------------------------------------
 //
 CMPXHarvesterDatabaseManager::CMPXHarvesterDatabaseManager( RFs& aFs ):
-        iFs( aFs )
+        iFs( aFs ),
+        iEMMC( EFalse )
 #ifdef __RAMDISK_PERF_ENABLE
         ,iRAMDiskPerfEnabled(EFalse),
         iMaximumAllowedRAMDiskSpaceToCopy(0),
@@ -70,6 +71,13 @@
     MPX_FUNC("CMPXHarvesterDatabaseManager::ConstructL");
     User::LeaveIfError( iDBSession.Connect() );
 
+    //Find out if the system has an internal drive (eMMC)
+    TDriveInfo driveInfo;
+    if( iFs.Drive( driveInfo, EDriveE ) == KErrNone )
+    	{
+        if ( driveInfo.iDriveAtt & KDriveAttInternal )
+        	iEMMC = ETrue;
+    	}
 #ifdef __RAMDISK_PERF_ENABLE
     TInt temp;
     CRepository* repository = CRepository::NewLC( KCRUIDMpxHarvesterFeatures );
@@ -162,7 +170,7 @@
                 {
                 MPX_DEBUG1("CMPXHarvesterDatabaseManager::OpenAllDatabasesL: re-creating database");
                 CMPXHarvesterDB* dB = CMPXHarvesterDB::NewL(
-                    static_cast<TDriveNumber>(driveNum), iFs );
+                    static_cast<TDriveNumber>(driveNum), iFs, iEMMC );
                 CleanupStack::PushL( dB );
                 TRAPD(openError, rtn |= dB->OpenL() );  //lint !e665
                 if(openError == KErrNone)
@@ -212,7 +220,7 @@
     if ( index == KErrNotFound )
         {
         index = iDatabases.Count();
-        db = CMPXHarvesterDB::NewL( aDrive, iFs );
+        db = CMPXHarvesterDB::NewL( aDrive, iFs, iEMMC );
         CleanupStack::PushL( db );
         iDatabases.AppendL( db );
         CleanupStack::Pop( db );
@@ -1000,13 +1008,23 @@
         {
         name.Append(iRAMFolder);
         name.Append(aDriveUnit.Name()[0]);
-        name.Append(KHarvesterDBName);
+
+        //Use different name for Dbs if the system has an internal drive vs. MMC-only.
+        //Since hard-coded drive letters in the Thumbnail URIs
+        //So Dbs are not interchangeable between an internal drive system and MMC-only system.
+        if ( iEMMC )
+            name.Append( KHarvesterDBNameEMMC );
+        else
+            name.Append( KHarvesterDBName );
         }
     else
         {
         name.Append(aDriveUnit.Name());
         name.Append(KHarvesterDBPath);
-        name.Append(KHarvesterDBName);
+        if ( iEMMC )
+            name.Append( KHarvesterDBNameEMMC );
+        else
+            name.Append( KHarvesterDBName );
         }
     
     MPX_DEBUG2("CMPXHarvesterDatabaseManager::GenerateHarvesterDbName name = %S", &name );
--- a/mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/filehandler/src/mpxharvesterfilehandlerimp.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Handles all file related activities
-*  Version     : %version: da1mmcf#72.1.14.2.4.1.4.1.2.1.7 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: da1mmcf#72.1.14.2.4.1.4.1.2.1.9 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -61,8 +61,8 @@
 #include "mpxbrokenlinkcleanup.h"
 
 // ============ CONSTANTS ==========
-_LIT( KDefaultScanPath, "C:\\DATA\\|E:\\" );
-_LIT( KDefaultBlockPath, "\\SYS\\|\\PRIVATE\\|\\SYSTEM\\|\\CITIES\\");
+_LIT( KDefaultScanPath, "C:\\DATA\\|E:\\|F:\\" );
+_LIT( KDefaultBlockPath, "\\SYS\\|\\PRIVATE\\|\\SYSTEM\\|\\CITIES\\|\\SOUNDS\\SIMPLE\\|\\GAMES\\|\\RESOURCE\\|\\IMAGES\\"); 
 _LIT( KDefaultContainers, ".odf|.dcf|.asf|.m4a|.mp4" );
 _LIT( KDefaultAutoScanFolder, "C:\\data\\sounds\\digital\\|E:\\sounds\\digital\\");
 const TUid KCRUIDHarvesterFeatures  = { 0x101FFCD2 };
@@ -343,12 +343,11 @@
                 // Remove current drive from the scanned drives list
                 TParse fileNameParser;
                 User::LeaveIfError(fileNameParser.Set(iFilteredDrivesToScan[index],NULL,NULL));
-                TFileName driveName(fileNameParser.Drive());
+                TPtrC driveName(fileNameParser.Drive());
                 TInt driveNumber = TDriveUnit( driveName );
                 if (currentDriveNumber == driveNumber)
                     {
                     iFilteredDrivesToScan.Remove(index);
-                    iFilteredOutOfDisk = ETrue;
                     count--;
                     }
                 else
@@ -357,6 +356,7 @@
                     }
                 }
             iDBManager->CloseDatabase(static_cast<TDriveNumber>(currentDriveNumber));
+            iFilteredOutOfDisk = ETrue;
             }
         }
 
@@ -1737,15 +1737,8 @@
     //
     TBuf<255> scanPath;
     TBuf<255> blockPath;
-    CRepository* cenrep(NULL);
-    TRAPD( err, cenrep = CRepository::NewL( KCRUIDHarvesterFeatures ) );
-    if( err == KErrNone )
-        {
-        cenrep->Get( KHarvesterScanPathKey, scanPath );
-        cenrep->Get( KHarvesterBlockPathKey, blockPath );
-        delete cenrep;
-        }
-    else
+    TRAPD( err, FetchPathsFromCenrepL(scanPath,blockPath) );
+    if( err )
         {
         scanPath = KDefaultScanPath;
         blockPath = KDefaultBlockPath;
@@ -1758,6 +1751,20 @@
     }
 
 // ---------------------------------------------------------------------------
+// Fetches scan - and block - paths from cenrep 
+// ---------------------------------------------------------------------------
+//
+void CMPXHarvesterFileHandlerImp::FetchPathsFromCenrepL( TDes16& aScanPath, 
+                                                         TDes16& aBlockPath )
+    {
+    MPX_FUNC("CMPXHarvesterFileHandlerImp::FetchPathsFromCenrepL");
+    CRepository* cenrep( CRepository::NewLC( KCRUIDHarvesterFeatures ) );
+    User::LeaveIfError( cenrep->Get( KHarvesterScanPathKey, aScanPath ) );
+    User::LeaveIfError( cenrep->Get( KHarvesterBlockPathKey, aBlockPath ) );
+    CleanupStack::PopAndDestroy(cenrep);
+    }
+
+// ---------------------------------------------------------------------------
 // Parses cenrep setting for container file types
 // ---------------------------------------------------------------------------
 //
--- a/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/metadataextractor/src/mpxmetadataextractor.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  Extracts metadata from a file
-*  Version     : %version: da1mmcf#38.1.4.2.6.1.13 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: da1mmcf#38.1.4.2.6.1.14 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -741,6 +741,8 @@
         TThumbnailRequestId tnId = iTNManager->CreateThumbnails( *source );
         iArrayTNRequestId.Append( tnId ); // add thumbnail id to array
         CleanupStack::Pop( value8 );
+        delete source;
+        
         aMedia.SetTextValueL( KMPXMediaMusicOriginalAlbumArtFileName, aFile );
 #endif // RD_MPX_TNM_INTEGRATION          
         aMedia.SetTextValueL( KMPXMediaMusicAlbumArtFileName, aFile );
--- a/mmappcomponents/harvester/server/src/mpxconnectioneventhandler.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/server/src/mpxconnectioneventhandler.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -26,7 +26,7 @@
 #include <coreapplicationuisdomainpskeys.h>
 #include <UsbWatcherInternalPSKeys.h>
 #include <usbpersonalityids.h>
-#include <MtpPrivatePSKeys.h>
+#include <mtpprivatepskeys.h>
 #include <mpxlog.h>
 #include "mpxconnectioneventhandler.h"
 
@@ -161,7 +161,7 @@
     iUSBKeyWatcher->GetValue( usbStatus );
     
     TInt mtpStatus;
-    iMTPKeyWatcher->GetValue(mtpStatus);
+    TInt err = iMTPKeyWatcher->GetValue(mtpStatus);
     
     MPX_DEBUG3("CMPXConnectionEventHandler::DoHandlePSEventL, usbStatus = %d, mtpStatus = %d", usbStatus, mtpStatus);
     MPX_DEBUG2("CMPXConnectionEventHandler::DoHandlePSEventL, iState = %d", iState);
@@ -196,20 +196,29 @@
     // after MassStorage End, it is possible that MTP is still connected
     if (iState != EMPXConnectionMassStorage)
         {
-        if ((mtpStatus == EMtpPSStatusUninitialized) && (iState != EMPXConnectionNone))
-            {
-            MPX_DEBUG1("CMPXConnectionEventHandler::DoHandlePSEvent - MTP End");
-            iObserver.HandleSystemEventL( EUSBMTPEndEvent, -1 );
-            iState = EMPXConnectionNone;
+		if (err == KErrNone)
+		    {
+            if ((mtpStatus == EMtpPSStatusUninitialized) && (iState != EMPXConnectionNone))
+                {
+                MPX_DEBUG1("CMPXConnectionEventHandler::DoHandlePSEvent - MTP End");
+                iObserver.HandleSystemEventL( EUSBMTPEndEvent, -1 );
+                iState = EMPXConnectionNone;
+                }
+            else if ((mtpStatus == EMtpPSStatusActive) && (iState != EMPXConnectionMTPActive)
+                    && ((usbStatus == KUsbPersonalityIdMTP) || (usbStatus == KUsbPersonalityIdPCSuiteMTP))) // only trigger MusicPlayer fully block and RAM Drive if USB MTP/PCSuiteMTP is connected
+                {
+                DoMTPStartEventL();
+                }
+            else if ((mtpStatus == EMtpPSStatusReadyToSync) && (iState != EMPXConnectionMTPIdle) && (iState != EMPXConnectionMTPActive))
+                {
+                DoMTPNotActiveEventL();
+                }
             }
-        else if ((mtpStatus == EMtpPSStatusActive) && (iState != EMPXConnectionMTPActive)
-                && ((usbStatus == KUsbPersonalityIdMTP) || (usbStatus == KUsbPersonalityIdPCSuiteMTP))) // only trigger MusicPlayer fully block and RAM Drive if USB MTP/PCSuiteMTP is connected
+        else
             {
-            DoMTPStartEventL();
-            }
-        else if ((mtpStatus == EMtpPSStatusReadyToSync) && (iState != EMPXConnectionMTPIdle) && (iState != EMPXConnectionMTPActive))
-            {
-            DoMTPNotActiveEventL();
+            // mtpwatcher can err out because the mtp ps key would only be defined and default after first use,
+            // and this logic here might hit before that
+            MPX_DEBUG2("CMPXConnectionEventHandler::DoHandlePSEvent - MTPWatcher err = %d", err);
             }
         }
     }
--- a/mmappcomponents/harvester/server/src/mpxharvesterserver.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappcomponents/harvester/server/src/mpxharvesterserver.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -117,9 +117,9 @@
 //
 void CMPXHarvesterServer::ConstructL()
     {
-    iEngine = CMPXHarvesterEngine::NewL();
     StartL(KMPXHarvesterServerName);
     RProcess().SetPriority(::EPriorityBackground);
+    iEngine = CMPXHarvesterEngine::NewL();    
     }
     
 // ----------------------------------------------------------------------------
--- a/mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/group/CollectionHelperTestClass.pkg	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/group/CollectionHelperTestClass.pkg	Mon Jun 21 16:13:35 2010 +0300
@@ -47,7 +47,10 @@
 
 "..\..\init\TestFramework.ini"   -   "c:\testframework\TestFramework.ini" 
 "..\..\conf\CollectionHelperTestClass.cfg"   -   "c:\testframework\CollectionHelperTestClass.cfg"
-
+"..\..\data\1.alb"   -   "e:\data\sounds\digital\1.alb" 
+"..\..\data\1.mp3"   -   "e:\data\sounds\digital\1.mp3"
+"..\..\data\1.wma"   -   "e:\data\sounds\digital\1.wma"
+                   
 "\epoc32\release\armv5\urel\CollectionHelperTestClass.dll"   -   "c:\Sys\Bin\CollectionHelperTestClass.dll"
   
 ; Embedded SIS 
--- a/mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/inc/CollectionHelperTestClass.h	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/inc/CollectionHelperTestClass.h	Mon Jun 21 16:13:35 2010 +0300
@@ -59,7 +59,7 @@
 //#define ?macro ?macro_def
 // Logging path
 #ifdef __WINSCW__
-_LIT( KCollectionHelperTestClassLogPath, "\\logs\\testframework\\CollectionHelperTestClass\\" ); 
+_LIT( KCollectionHelperTestClassLogPath, "c:\\logs\\testframework\\CollectionHelperTestClass\\" ); 
 #else
 _LIT( KCollectionHelperTestClassLogPath, "e:\\logs\\testframework\\CollectionHelperTestClass\\" );
 #endif
@@ -73,10 +73,10 @@
 _LIT( KRenameOldUri, "c:\\Blackbird.aac");
 _LIT( KRenameNewUri, "c:\\data\\Blackbird.aac");
 
-_LIT( KFileWmaSong, "f:\\1.wma");
+_LIT( KFileWmaSong, "c:\\data\\sounds\\digital\\1.mp3");
 
 _LIT( KFile1, "e:\\data\\sounds\\digital\\1.mp3");    //ok
-_LIT( KOldAbstractAlbumName, "1.wma");    //ok
+_LIT( KOldAbstractAlbumName, "1.mp3");    //ok
 _LIT( KNewAbstractAlbumName, "The 99 Most Essential Beethoven MasterpiecesVarious Artists");    //ok
 _LIT( KFile3, "e:\\data\\sounds\\digital\\(01) Amber - Yes.mp3");    //ok
 _LIT( KFilet, "e:\\data\\sounds\\digital\\02 What A Wonderful World.mp3");    //ok
@@ -85,10 +85,10 @@
 _LIT( KTestFile3, "e:\\data\\sounds\\digital\\Atomic Kitten - It's Ok.mp3");    //ok
 _LIT( KSongtest, "e:\\data\\sounds\\digital\\02 What A Wonderful World.mp3"); //ok
 
-_LIT( KAbstractalbum1, "f:\\1.alb");
-_LIT( KAbstractalbum2, "f:\\2.alb");
-_LIT( KAbstractalbum3, "f:\\3.alb");
-_LIT( KStoreRoot, "f:\\");
+_LIT( KAbstractalbum1, "e:\\data\\sounds\\digital\\1.alb");
+_LIT( KAbstractalbum2, "e:\\data\\sounds\\digital\\2.alb");
+_LIT( KAbstractalbum3, "e:\\data\\sounds\\digital\\3.alb");
+_LIT( KStoreRoot, "e:\\");
 
 _LIT( KAbstractAlbumName, "The 99 Most Essential Beethoven MasterpiecesVarious Artists");
 
--- a/mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/src/CollectionHelperTestClassBlocks.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/collection_helper_api/tsrc/CollectionHelperTestClass/src/CollectionHelperTestClassBlocks.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -788,16 +788,17 @@
     FTRACE(FPrint(_L("CCollectionHelperTest::GetSongAlbumArtistL")));
     TMPXGeneralCategory category = EMPXSong;
    // CMPXMedia* foundMedia= NULL;
-
+   TInt result(KErrNotFound);
    const CMPXMedia& foundMedia = iCachedHelper->GetL( KFileWmaSong(), category );
 
     if (foundMedia.IsSupported(KMPXMediaMusicAlbumArtist))
         {
         const TDesC& albumartist = foundMedia.ValueText( KMPXMediaMusicAlbumArtist );
+        result = KErrNone;
 	    }
    iLog->Log(_L("CCollectionHelperTestClass::GetSongAlbumArtistL done "));
 
-   return 1;
+   return result;
 }
 
 
@@ -848,7 +849,7 @@
 	FTRACE(FPrint(_L("CCollectionHelperTest::GetAbstractAlbumArtistL")));
     TMPXGeneralCategory category = EMPXAbstractAlbum;
     const CMPXMedia& foundMedia = iCachedHelper->GetL( KAbstractalbum1(), category );   //wma test file
-
+    TInt result(0);
 
     //print out foundMedia attributes
     if (foundMedia.IsSupported(KMPXMediaMusicAlbumArtist))
@@ -859,7 +860,7 @@
         
 
          const TDesC& albumartist = foundMedia.ValueText( KMPXMediaMusicAlbumArtist );
-
+         result++;
         }
 
 		if (foundMedia.IsSupported(KMPXMediaGeneralTitle))
@@ -871,7 +872,7 @@
 				 const TDesC& name = foundMedia.ValueText( KMPXMediaGeneralTitle );
 				 iLog->Log(_L("CCollectionHelperTestClass::GetAbstractAlbumArtistL, ABSTRACTALBUM.name retrived"));
 				 
-	
+				 result++;
 
 		}
 		if (foundMedia.IsSupported(KMPXMediaGeneralUri))
@@ -882,10 +883,13 @@
 				   //     albumartist = foundMedia.ValueText( KMPXMediaMusicAlbumArtist ).AllocLC(); // + data
 		     const TDesC& uri = foundMedia.ValueText( KMPXMediaGeneralUri );
 			 iLog->Log(_L("CCollectionHelperTestClass::GetAbstractAlbumArtistL, ABSTRACTALBUM.uri retrived"));
-					  
+			 result++;	  
 			}
 	iLog->Log(_L("CCollectionHelperTestClass::GetAbstractAlbumArtistL done"));
-	return 1;
+	if(result == 3)
+		return KErrNone;
+	else
+	    return KErrNotFound;
 	}
 
 
@@ -990,7 +994,7 @@
 
    CMPXMediaArray* foundArray =
        foundMedia->Value<CMPXMediaArray>(KMPXMediaArrayContents);
-   CleanupStack::PopAndDestroy(foundMedia);
+   
 
    for (TInt j = 0; j < foundItemCount; ++j)
         {
@@ -1001,7 +1005,7 @@
         if (abstractalbumMedia->IsSupported(KMPXMediaGeneralTitle))
             {
 	        const TDesC& name = abstractalbumMedia->ValueText( KMPXMediaGeneralTitle );
-            iLog->Log(_L("CCollectionHelperTestClass::GetAlbumAndSongsL, found abstractalbumName = [%s]"), name );
+       //     iLog->Log(_L("CCollectionHelperTestClass::GetAlbumAndSongsL, found abstractalbumName = [%s]"), name );
 	        }
 
         if (abstractalbumMedia->IsSupported(KMPXMediaGeneralId))
@@ -1036,6 +1040,7 @@
         CleanupStack::PopAndDestroy(&songAttributes);
         CleanupStack::PopAndDestroy(searchMediaSong);
         CleanupStack::PopAndDestroy(abstractalbumMedia);
+        CleanupStack::PopAndDestroy(foundMedia);
 
         CleanupStack::PushL( foundSongs ); // + foundSongs
         if ( err != KErrNone )
@@ -1056,7 +1061,7 @@
         iLog->Log(_L("CCollectionHelperTestClass::GetAlbumAndSongsL, numOfSongsRefs=%d"), numOfSongsRefs );
         CleanupStack::PopAndDestroy( foundSongs ); // - foundSong
     }
-   return 1;
+   return err;
  }
 
 
--- a/mmappfw_plat/collection_helper_api/tsrc/conf/CollectionHelperTestClass.cfg	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/collection_helper_api/tsrc/conf/CollectionHelperTestClass.cfg	Mon Jun 21 16:13:35 2010 +0300
@@ -113,7 +113,6 @@
 delete test
 pause 1000
 [Endtest]
-RemoveAbstractAlbumL
 
 
 [Test]
@@ -127,7 +126,6 @@
 delete test
 pause 1000
 [Endtest]
-[Test]
 
 
 [Test]
@@ -141,7 +139,6 @@
 delete test
 pause 1000
 [Endtest]
-[Test]
 
 
 [Test]
@@ -150,7 +147,10 @@
 test OpenCollectionUtility
 waittestclass test
 test NewCachedHelper
+test AddSong
 test GetSongAlbumArtist
+pause 1000
+test RemoveSong
 test CloseCachedHelper
 delete test
 pause 1000
@@ -167,7 +167,6 @@
 delete test
 pause 1000
 [Endtest]
-[Test]
 
 [Test]
 title 12. Get AbstractAlbumArtist
@@ -175,12 +174,15 @@
 test OpenCollectionUtility
 waittestclass test
 test NewCachedHelper
+test AddSong
+test AddAbstractAlbum
 test GetAbstractAlbumArtist
+pause 1000
+test RemoveSong
 test CloseCachedHelper
 delete test
 pause 1000
 [Endtest]
-[Test]
 
 
 [Test]
@@ -195,13 +197,16 @@
 pause 1000
 [Endtest]
 
-
+[Test]
 title 14. Get AbstractAlbum and Songs
 create CollectionHelperTestClass test
 test OpenCollectionUtility
 waittestclass test
 test NewCachedHelper
+test AddSong
+pause 1000
 test GetAbstractAlbumAndSongs
+test RemoveSong
 test CloseCachedHelper
 delete test
 pause 1000
@@ -213,12 +218,15 @@
 test OpenCollectionUtility
 waittestclass test
 test NewCachedHelper
+test AddSong
+test AddAbstractAlbum
 test RenameAbstractAlbum
+test RemoveSong
 test CloseCachedHelper
 delete test
 pause 1000
 [Endtest]
-[Test]
+
 
 
        
Binary file mmappfw_plat/collection_helper_api/tsrc/data/1.alb has changed
Binary file mmappfw_plat/collection_helper_api/tsrc/data/1.mp3 has changed
Binary file mmappfw_plat/collection_helper_api/tsrc/data/1.wma has changed
--- a/mmappfw_plat/group/bld.inf	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/group/bld.inf	Mon Jun 21 16:13:35 2010 +0300
@@ -13,13 +13,13 @@
 *
 * Description:  Includes all the Domain API specific bld.inf files, which 
 *                export files.
-*  Version     : %version: da1ido#1.1.4.1.3.3.5 %
+*  Version     : %version: 1.1.4.1.3.3.5.1.1 %
 *
 */
 
 
 #include <bldvariant.hrh>
-#include "../inc/mmappfwbldvariant.hrh"
+#include "../../inc/mmappfwbldvariant.hrh"
 
 #include "../collection_helper_api/group/bld.inf"
 #include "../harvester_collection_mediator_api/group/bld.inf"
--- a/mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/inc/HarvesterCollectionMediatorTest.h	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/inc/HarvesterCollectionMediatorTest.h	Mon Jun 21 16:13:35 2010 +0300
@@ -43,9 +43,9 @@
 // Log file
 _LIT( KHarvesterCollectionMediatorTestLogFile, "HarvesterCollectionMediatorTest.txt" ); 
 _LIT( KHarvesterCollectionMediatorTestLogFileWithTitle, "HarvesterCollectionMediatorTest_[%S].txt" );
-_LIT( KTestItemPath, "\\testing\\data\\test0000.mp3");
-_LIT( KTestItemPath2, "\\testing\\data\\test0001.mp3");
-_LIT( KTestItemPath3, "\\testing\\data\\test0002.mp3");
+_LIT( KTestItemPath, "e:\\testing\\data\\test0000.mp3");
+_LIT( KTestItemPath2, "e:\\testing\\data\\test0001.mp3");
+_LIT( KTestItemPath3, "e:\\testing\\data\\test0002.mp3");
 // FUNCTION PROTOTYPES
 //?type ?function_name(?arg_list);
 
--- a/mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/src/HarvesterCollectionMediatorTestBlocks.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/harvester_collection_mediator_api/tsrc/HarvesterCollectionMediatorTest/src/HarvesterCollectionMediatorTestBlocks.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -225,6 +225,11 @@
 	 TInt err = KErrNone;
      delete iMediator;
      iMediator = NULL;
+     if(iCollectionUtility)
+    	 {
+         iCollectionUtility->Close();
+         iCollectionUtility = NULL;
+    	 }
 	 iLog->Log(_L("CHarvesterCollectionMediatorTest::CMPXCollectionMediatorDestruction testing ~CMPXCollectionMediator end err=%d"), err);
 	 return err;
  	}
@@ -253,7 +258,6 @@
 	   {
        iLog->Log( _L("CHarvesterCollectionMediatorTest::CMPXCollectionMediatorNewLWithMPXCollection testing CMPXCollectionMediator::NewL() End") );
        }    
-    iCollectionUtility->Close();
     return err;
  	}
 
@@ -271,6 +275,7 @@
     iMediator = CMPXCollectionMediator::NewLC( iCollectionUtility->Collection() );
     CleanupStack::Pop( iMediator );
     iCollectionUtility->Close();
+    iCollectionUtility = NULL;
     iLog->Log( _L("CHarvesterCollectionMediatorTest::CMPXCollectionMediatorNewLC testing CMPXCollectionMediator::NewLC() End") );
     return err;
  	}
--- a/mmappfw_plat/harvester_collection_mediator_api/tsrc/conf/HarvesterCollectionMediatorTest.cfg	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/harvester_collection_mediator_api/tsrc/conf/HarvesterCollectionMediatorTest.cfg	Mon Jun 21 16:13:35 2010 +0300
@@ -101,10 +101,11 @@
 [Test]
 title 11.MoveItemLwith3paras CMPXCollectionMediator
 create HarvesterCollectionMediatorTest CollectionMediatorTest
-CollectionMediatorTest CMPXCollectionMediatorWithRealCollection
+CollectionMediatorTest  CMPXCollectionMediatorNewLWithMPXCollection
 CollectionMediatorTest CMPXCollectionAddItemLCMPXMediaArray
+pause 2000
+CollectionMediatorTest CMPXCollectionMoveItemLwith3paras
 pause 1000
-CollectionMediatorTest CMPXCollectionMoveItemLwith3paras
 CollectionMediatorTest CMPXCollectionMediatorDestruction
 delete CollectionMediatorTest
 pause 1000
--- a/mmappfw_plat/harvester_utility_api/tsrc/mpxharvestertest/src/mpxharvestertestBlocks.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/harvester_utility_api/tsrc/mpxharvestertest/src/mpxharvestertestBlocks.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -386,12 +386,19 @@
 		KTo.Append(Kmpxharvester_digitalPath);
 		KTo.Append(string);
 
+		for( TInt i = 0; i < 5; i++ )
+		    {
 	    err = iFileMan->Copy(KFrom, KTo);
  		if ( err != KErrNone )
  			{
 			iLog->Log(_L("CopyTestFile returned: %d"), err);
+	            User::After( 1000000 );
+	            }
+	        else
+	            {
 			break;
 			}
+		    }
         }
     return err;
     }
@@ -413,12 +420,19 @@
 		KFrom.Append(Kmpxharvester_digitalPath);
 		KFrom.Append(string);
 
+		for( TInt i = 0; i < 5; i++ )
+		    {
 	    err = iFileMan->Delete(KFrom);
  		if ( err != KErrNone )
  			{
 			iLog->Log(_L("DeleteTestFile returned: %d"), err);
+	            User::After( 1000000 );
+	            }
+	        else
+	            {
 			break;
 			}
+		    }
         }
     return err;
     }
@@ -698,10 +712,18 @@
 			}
 		else if ( mode == KTagSync )
 			{
+            for( TInt i = 0; i < 5; i++ )
+                {
 		    TRAP(err, iHarvester->DeleteFilesL(*files));
 	 		if ( err != KErrNone )
 	 			{
 				iLog->Log(_L("DeleteFilesL sync returned: %d"), err);
+                    User::After( 1000000 );
+                    }
+                else
+                    {
+                    break;
+                    }
 				}
 			}
 		else
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmappfw_plat/mpx_base_view_plugins_api/tsrc/conf/tcmpxbaseviewpluginstest.cfg	Mon Jun 21 16:13:35 2010 +0300
@@ -0,0 +1,77 @@
+
+[Test]
+title 1: CMPXAknViewPluginDestruct
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 1
+[Endtest] 
+
+[Test]
+title 2: CMPXAknViewPluginCreateViewL
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 2
+[Endtest]
+
+[Test]
+title 3: CMPXAknViewPluginDestroyView
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 3
+[Endtest]
+
+[Test]
+title 4: CMPXAknViewPluginActivateViewL
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 4
+[Endtest]
+
+[Test]
+title 5: CMPXAknViewPluginSetAsDefaultViewL
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 5
+[Endtest]
+
+[Test]
+title 6: CMPXAknViewPluginDeactivateView
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 6
+[Endtest]
+
+[Test]
+title 7: CMPXAknDialogPluginDestruct
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 7
+[Endtest] 
+
+[Test]
+title 8: CMPXAknDialogPluginCreateViewL
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 8
+[Endtest]
+
+[Test]
+title 9: CMPXAknDialogPluginDestroyView
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 9
+[Endtest]
+
+[Test]
+title 10: CMPXAknDialogPluginActivateViewL
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 10
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 17
+[Endtest]
+
+[Test]
+title 11: CMPXAknDialogPluginSetAsDefaultViewL
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 11
+[Endtest]
+
+[Test]
+title 12: CMPXAknDialogPluginDeactivateView
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 12
+[Endtest]
+
+[Test]
+title 13: CMPXViewPluginNewL
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 13
+[Endtest] 
+
+[Test]
+title 14: CMPXViewPluginDestruct
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 14
+[Endtest] 
+
+[Test]
+title 15: CMPXViewPluginSetObserver
+run testscripter c:\testframework\ui_mpxbaseviewpluginstest.cfg 15
+[Endtest]
+
--- a/mmappfw_plat/mpx_base_view_plugins_api/tsrc/conf/ui_mpxbaseviewpluginstest.cfg	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/mpx_base_view_plugins_api/tsrc/conf/ui_mpxbaseviewpluginstest.cfg	Mon Jun 21 16:13:35 2010 +0300
@@ -91,6 +91,7 @@
 [Test]
 title 10: CMPXAknDialogPluginActivateViewL
 create ui_mpxbaseviewpluginstest foobar
+bringtoforeground
 foobar CDummyMPXAknDialogPluginConstruct
 foobar CMPXAknDialogPluginCreateViewL
 foobar CMPXAknDialogPluginActivateViewL
@@ -98,6 +99,7 @@
 foobar CMPXAknDialogPluginDestroyView
 foobar CDummyMPXViewPluginDesConstruct 
 delete foobar
+sendtobackground
 [Endtest]
 
 [Test]
@@ -147,3 +149,14 @@
 delete foobar
 [Endtest]
 
+[Test]# lsf key
+title PressKey
+pause 10000
+presskey global EKeyDevice0
+[Endtest] 
+
+[Test]# rsf key
+title PressKey
+pause 10000
+presskey global EKeyDevice1
+[Endtest] 
--- a/mmappfw_plat/mpx_base_view_plugins_api/tsrc/init/TestFramework.ini	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/mpx_base_view_plugins_api/tsrc/init/TestFramework.ini	Mon Jun 21 16:13:35 2010 +0300
@@ -89,8 +89,8 @@
 # name of the test module when adding new test module
 
 [New_Module]
-ModuleName= testscripter
-TestCaseFile= c:\testframework\ui_mpxbaseviewpluginstest.cfg
+ModuleName= testcombiner
+TestCaseFile= c:\testframework\tcmpxbaseviewpluginstest.cfg
 [End_Module]
 
 
--- a/mmappfw_plat/mpx_base_view_plugins_api/tsrc/ui_mpxbaseviewpluginstest/group/ui_mpxbaseviewpluginstest.pkg	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/mpx_base_view_plugins_api/tsrc/ui_mpxbaseviewpluginstest/group/ui_mpxbaseviewpluginstest.pkg	Mon Jun 21 16:13:35 2010 +0300
@@ -48,8 +48,9 @@
 
 ; Install files
 
-;"..\..\init\TestFramework.ini"   -   "c:\testframework\TestFramework.ini" 
+"..\..\init\TestFramework.ini"   -   "c:\testframework\TestFramework.ini" 
 "..\..\conf\ui_mpxbaseviewpluginstest.cfg"   -   "c:\testframework\ui_mpxbaseviewpluginstest.cfg"
+"..\..\conf\tcmpxbaseviewpluginstest.cfg"   -   "c:\testframework\tcmpxbaseviewpluginstest.cfg"
 
 "\epoc32\release\armv5\urel\ui_mpxbaseviewpluginstest.dll"   -   "c:\Sys\Bin\ui_mpxbaseviewpluginstest.dll"
   
--- a/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/inc/commontestclass.h	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/inc/commontestclass.h	Mon Jun 21 16:13:35 2010 +0300
@@ -73,7 +73,7 @@
 #endif
 
 _LIT( KCommonTestClassLogFile, "CommonTestClass.log" ); 
-_LIT( KCommonTestFilePath, "C:\\testing\\data\\" );
+_LIT( KCommonTestFilePath, "e:\\testing\\data\\" );
 _LIT( KMsgBadTestParameters, "[Error] No valid test case parameters");
 _LIT( KTagCompareNotEqual, "<>");
 _LIT( KTagCompareEqual, "==");
--- a/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testcenrepwatcher.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testcenrepwatcher.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -38,7 +38,7 @@
         }
     iCenRepWatcher = NULL;
     iCenRepWatcher = CMPXCenRepWatcher::NewL(KCRUidMPXSettings, 
-                                             KMPXPlaybackRepeatMode, 
+                                             KMPXPlaybackVolume, 
                                              this);
     if ( iCenRepWatcher == NULL)
         {
--- a/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxpluginhandlerbase.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxpluginhandlerbase.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -19,12 +19,15 @@
 #include "commontestclass.h"
 #include <mpxpluginhandlerbase.h>
 #include <mpxplugininfo.h>
+#include <mpxpluginhandlerobserver.h>
 
 
 // Begin MPXPluginHandlerBase testing implementation (mpxpluginhandlerbase.h)============================
 const TUid KMPXPPluginHandlerBaseUid = {0x12345};
-const TUid KMPXPlaybackInterfaceUid = {0x21CD4510};
-class CDummyMpxPluginHandler : public CMPXPluginHandlerBase
+
+const TUid KMPXPlaybackInterfaceUid = {0x101FFC05};
+class CDummyMpxPluginHandler : public CMPXPluginHandlerBase,
+                               public MMPXPluginHandlerObserver
     {
 public:  // Constructors and destructor
     CDummyMpxPluginHandler();  
@@ -40,6 +43,15 @@
     
     void BaseHandlePluginUnload(const TUid& aPluginUid);
     
+    /*
+    * From MMPXPluginHandlerObserver
+    * @see MMPXPluginHandlerObserver
+    */
+    void HandlePluginHandlerEvent(
+            TPluginHandlerEvents aEvent, 
+            const TUid& aPluginUid,
+            TInt aLoaded, TInt aData);
+    
     };
     
 // -----------------------------------------------------------------------------
@@ -47,7 +59,11 @@
 // -----------------------------------------------------------------------------
 
 CDummyMpxPluginHandler::CDummyMpxPluginHandler():
-    CMPXPluginHandlerBase (KMPXPPluginHandlerBaseUid, CMPXPluginHandlerBase::ESelectionUid, 0,iObserver,CMPXPluginMonitor::NewL((TUid)KMPXPlaybackInterfaceUid/*, *this*/))
+    CMPXPluginHandlerBase (
+            KMPXPlaybackInterfaceUid,
+            CMPXPluginHandlerBase::ESelectionUid, 
+            0,*this,
+            CMPXPluginMonitor::NewL((TUid)KMPXPlaybackInterfaceUid/*, *this*/))
     {
         TInt err = KErrNone;
         TRAP(err,iDataType = HBufC8::NewL(11));//NULL;
@@ -99,6 +115,15 @@
     }
 
 // -----------------------------------------------------------------------------
+// CDummyMpxPluginHandler::HandlePluginHandlerEvent()
+// -----------------------------------------------------------------------------
+void CDummyMpxPluginHandler::HandlePluginHandlerEvent(
+        TPluginHandlerEvents /*aEvent*/, const TUid& /*aPluginUid*/,
+        TBool /*aLoaded*/, TInt /*aData*/ )
+    {
+    }
+
+// -----------------------------------------------------------------------------
 // CTestMpxPluginHandler::ResolvePluginL()
 // -----------------------------------------------------------------------------
 //void CDummyMpxPluginHandler::ResolvePluginL()
@@ -452,7 +477,7 @@
     //----------------------------------------------
     
     TUid uid = pluginHandler->FindPlugin(uids.Array());
-    pluginHandler->SupportUids(KMPXPPluginHandlerBaseUid,uids.Array());
+    pluginHandler->SupportUids(uid, uids.Array());
     //pluginHandler->SupportUids(uid,uids.Array());
     CleanupStack::PopAndDestroy( &uids );
     delete pluginHandler;
@@ -574,12 +599,18 @@
     {//TODO need to update
     FTRACE(FPrint(_L("CCommonTestClass::MpxPluginHandlerBasePluginFlagsL testing CMPXPluginHandlerBase::PluginFlagsL() begin")));
     iLog->Log(_L("CCommonTestClass::MpxPluginHandlerBasePluginFlagsL testing CMPXPluginHandlerBase::PluginFlagsL() begin"));
-    TInt err=KErrNone;
+
     CDummyMpxPluginHandler pluginHandler;
     
-    //TInt index = pluginHandler.IndexOf(KMPXPPluginHandlerBaseUid);
+    //TInt index = pluginHandler.IndexOf(KMPXPPluginHandlerBaseUid);    
+    TRAPD( err, pluginHandler.PluginFlagsL(KMPXPPluginHandlerBaseUid));
+    // Using the invalid id (KMPXPPluginHandlerBaseUid), so it is right if the 
+    // return err is KErrNotFound.
+    if ( err == KErrNotFound )
+        {
+        err = KErrNone;
+        }
     
-    pluginHandler.PluginFlagsL(KMPXPPluginHandlerBaseUid);
     iLog->Log(_L("CCommonTestClass::MpxPluginType testing CMPXPluginHandlerBase::MpxPluginFlagsL() end"),err);
     return err;
     }
--- a/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxplugininfo.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxplugininfo.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -106,7 +106,10 @@
     
     TInt err = KErrNone;
     
+    iPluginInfo = new CDummyCMPXPluginInfo();
     TRAP(err,iPluginInfo->ImplementationUid());
+    delete iPluginInfo;
+    iPluginInfo = NULL;
 	
     FTRACE(FPrint(_L("CCommonTestClass::CMPXPluginInfoImplementationUid testing CMPXPluginInfo::ImplementationUid end err=%d"), err));
 	iLog->Log(_L("CCommonTestClass::CMPXPluginInfoImplementationUid testing CMPXPluginInfo::ImplementationUid end err=%d"), err);
@@ -155,7 +158,10 @@
     _LIT8(KPluginData,"Plugin Data");
     _LIT8(KPluginTag,"Plugin Tag");
     //iPluginInfo->ProcessTaggedDataL( KPluginTag,KPluginData );
+    iPluginInfo = new CDummyCMPXPluginInfo();
     TUint flag = iPluginInfo->Flags();
+    delete iPluginInfo;
+    iPluginInfo = NULL;
     
 	return err;
     }
--- a/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxuser.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mmappfw_plat/mpx_common_api/tsrc/ui_commontestclass/src/testmpxuser.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -232,14 +232,15 @@
 // -----------------------------------------------------------------------------
 // CCommonTestClass::CreateBufferMsgL()
 // Returns: Symbian OS errors.
+// Could not create an instance of RMessage2 properly, ignore this test case. 
 // -----------------------------------------------------------------------------
 TInt CCommonTestClass::CreateBufferMsgL()
     {//TODO need to update
 	FTRACE(FPrint(_L("CCommonTestClass::CreateBufferMsgL testing MPXUser::CreateBufferL() begin")));
     iLog->Log(_L("CCommonTestClass::CreateBufferMsgL testing MPXUser::CreateBufferL() begin"));
     TInt err = KErrNone;
-
-    RMessage2* msg = new(ELeave)RMessage2();
+//
+//    RMessage2* msg = new(ELeave)RMessage2();
        
 //    HBufC* msg1 = HBufC::New( 20 );
 //    HBufC* msg2 = HBufC::New( 20 );
@@ -263,9 +264,9 @@
 //    TUint8 msgNum = (TUint8)1;
 //    msgContent = &msgNum;
 //    msg.Read( 0,msgContent );
-    CBufBase* buffer(NULL);
-    MPXUser::CreateBufferL( *msg,1,buffer );
-    delete buffer;    
+//    CBufBase* buffer(NULL);
+//    MPXUser::CreateBufferL( *msg,1,buffer );
+//    delete buffer;    
 
 	FTRACE(FPrint(_L("CCommonTestClass::CreateBufferMsgL testing MPXUser::CreateBufferL(s) end err=%d"), err));
     iLog->Log(_L("CCommonTestClass::CreateBufferMsgL testing MPXUser::CreateBufferL() end err=%d"), err);
Binary file mpx/Conf/mpx.confml has changed
Binary file mpx/cenrep/101FFCD2.txt has changed
--- a/mpx/collectionframework/collectionserver/src/mpxcollectionserver.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mpx/collectionframework/collectionserver/src/mpxcollectionserver.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -117,8 +117,8 @@
 //
 void CMPXCollectionServer::ConstructL()
     {
+    StartL(KMPXCollectionServerName);    	
     iEngine = CMPXCollectionEngine::NewL();
-    StartL(KMPXCollectionServerName);
     }
  
 // ----------------------------------------------------------------------------
--- a/mpx/collectionframework/collectionutility/src/mpxcollectionplaylist.cpp	Wed Jun 09 10:13:45 2010 +0300
+++ b/mpx/collectionframework/collectionutility/src/mpxcollectionplaylist.cpp	Mon Jun 21 16:13:35 2010 +0300
@@ -38,7 +38,8 @@
 
 // CONSTANTS
 const TInt KIncrementalFetchSize = 400;
-const TInt KIncrementalDelay = 2000000;
+
+const TInt KIncrementalDelay = 250000;
 
 // -----------------------------------------------------------------------------
 // Two-phased constructor.
@@ -1257,18 +1258,6 @@
             {
             refresh = ETrue;
             MPX_DEBUG1("CMPXCollectionPlaylist::DoHandleCollectionChangeMessageL -- current item deleted");
-            
-            TBool lastItemDeleted( iItemIndex == 0 && iItemIndexes.Count() == 1 );
-            
-            if ( lastItemDeleted ) // playlist is now empty, notify observer immediately
-                {
-                MPX_DEBUG1("CMPXCollectionPlaylist::DoHandleCollectionChangeMessageL -- last playlist item deleted");
-                Invalidate();
-                if ( iPlObs )
-                    {
-                    iPlObs->HandleCollectionPlaylistChange(KErrEof);
-                    }
-                }
             }
         // Modified
         else if( changeType == EMPXItemModified )
@@ -1347,11 +1336,11 @@
         }
 
     // update playlist immediately when item is deleted in order to detect deletion of the last item in the playlist
-    if ( refresh && iItemIndexes.Count() > 0 )
+     if (iAutoPlaylist && refresh)
         {
         // For autoplaylist, affected by the event.
         // Path clip will never happen for autoplaylist
-        if (changeType == EMPXItemDeleted)
+		if ( changeType == EMPXItemDeleted )
             {
             // item deleted in the autoplaylist, update the iPath to remove the item
             // auso update iItemIndexes and iItemIndex