harvester/server/src/harvesterao.cpp
changeset 60 79f826a55db2
parent 48 1389872e7c51
--- a/harvester/server/src/harvesterao.cpp	Mon Sep 27 15:53:05 2010 +0300
+++ b/harvester/server/src/harvesterao.cpp	Wed Oct 06 15:08:08 2010 +0300
@@ -506,7 +506,7 @@
 //
 void CHarvesterAO::HandleUnmount( TUint32 aMediaId )
 	{
-    WRITELOG1( "CHarvesterAO::HandleUnmount(%d)", aMediaId );    
+    WRITELOG1( "CHarvesterAO::HandleUnmount(%u)", aMediaId );    
 	OstTrace1( TRACE_NORMAL, CHARVESTERAO_HANDLEUNMOUNT, "CHarvesterAO::HandleUnmount;aMediaId=%d", aMediaId );
     
     iUnmountDetected = ETrue;
@@ -3126,30 +3126,50 @@
 	partialRestore = ETrue;
 #endif
 	
-	if ( !partialRestore )
-		{
-		return;
-		}
-	
 	if( !iMdeSessionInitialized )
 	    {
 	    return;
 	    }
 	
-	iMdEHarvesterSession->ChangeCDriveMediaId();
+    if( partialRestore )
+        {
+        iMdEHarvesterSession->ChangeCDriveMediaId();
 
-	WRITELOG("CHarvesterAO::BootPartialRestoreScanL() - partial restore");
-    OstTrace0( TRACE_NORMAL, CHARVESTERAO_BOOTPARTIALRESTORESCANL, "CHarvesterAO::BootPartialRestoreScanL - partial restore" );
+        WRITELOG("CHarvesterAO::BootPartialRestoreScanL() - partial restore");  
+        }
+    else
+        {
+        WRITELOG("CHarvesterAO::BootPartialRestoreScanL() - preinstalled content bootup scan");
+        }
+    OstTrace0( TRACE_NORMAL, CHARVESTERAO_BOOTPARTIALRESTORESCANL, "CHarvesterAO::BootPartialRestoreScanL - prepare bootup scan" );
     
 	RPointerArray<TScanItem> scanItems;
 	TCleanupItem cleanupItem( MdsUtils::CleanupPtrArray<TScanItem>, &scanItems );
     CleanupStack::PushL( cleanupItem );
 
-	CHarvesterCenRepUtil::GetPartialRestorePathsL( scanItems );
+    if( partialRestore )
+        {
+        CHarvesterCenRepUtil::GetPartialRestorePathsL( scanItems );
+        }
+
+    RPointerArray<TScanItem> preinstalledItems;
+    TCleanupItem cleanupItem2( MdsUtils::CleanupPtrArray<TScanItem>, &preinstalledItems );
+    CleanupStack::PushL( cleanupItem2 );
+    
+    // Scan for preinstalled content anyways
+    CHarvesterCenRepUtil::GetAlwaysScanOnBootPathsL( preinstalledItems );
+
+    for( TInt i = preinstalledItems.Count() - 1; i >=0; i-- )
+        {
+        TScanItem* preinstalledLocation = preinstalledItems[i];
+        preinstalledLocation->iPreinstalled = MdeConstants::MediaObject::EPreinstalled;
+        scanItems.Append( preinstalledLocation );
+        }
+    preinstalledItems.Reset(); 
 
 	RPointerArray<HBufC> ignorePaths;
-	TCleanupItem cleanupItem2( MdsUtils::CleanupPtrArray<HBufC>, &ignorePaths );
-    CleanupStack::PushL( cleanupItem2 );
+	TCleanupItem cleanupItem3( MdsUtils::CleanupPtrArray<HBufC>, &ignorePaths );
+    CleanupStack::PushL( cleanupItem3 );
 
 	CHarvesterCenRepUtil::GetIgnoredPartialRestorePathsL( ignorePaths );
 
@@ -3161,6 +3181,7 @@
 	iRestoreWatcher->UnregisterL();
 
 	CleanupStack::PopAndDestroy( &ignorePaths );
+	CleanupStack::PopAndDestroy( &preinstalledItems );
 	CleanupStack::PopAndDestroy( &scanItems );
 	}
 
@@ -3270,7 +3291,7 @@
 						TScanItem* item = new (ELeave) TScanItem();
 						CleanupStack::PushL( item );
 						item->iPath = name->AllocL();
-						item->iPreinstalled = MdeConstants::MediaObject::ENotPreinstalled;
+						item->iPreinstalled = preinstalled;
 						CleanupStack::Pop( item );
 						aScanItems.AppendL( item ); // ownership is transferred
 						}