imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp
changeset 54 48dd0f169f0d
parent 42 2e2a89493e2b
--- a/imagehandlingutilities/thumbnailmanager/thumbnailserver/src/thumbnailgeneratetask.cpp	Fri Sep 03 10:29:37 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,601 +0,0 @@
-/*
-* Copyright (c) 2006-2007 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:  Task for generating new thumbnails
- *
-*/
-
-
-#include <e32base.h>
-#include <fbs.h>
-
-#include <thumbnailmanager.h>
-#include "thumbnailgeneratetask.h"
-#include "thumbnailscaletask.h"
-#include "thumbnailprovider.h"
-#include "thumbnailserver.h"
-#include "thumbnailtaskprocessor.h"
-#include "thumbnailmanagerconstants.h"
-#include "thumbnaillog.h"
-#include "thumbnailpanic.h"
-#include "thumbnailfetchedchecker.h"
-#include "OstTraceDefinitions.h"
-#ifdef OST_TRACE_COMPILER_IN_USE
-#include "thumbnailgeneratetaskTraces.h"
-#endif
-
-
-// ======== MEMBER FUNCTIONS ========
-
-// ---------------------------------------------------------------------------
-// CThumbnailGenerateTask::CThumbnailGenerateTask()
-// C++ default constructor can NOT contain any code, that might leave.
-// ---------------------------------------------------------------------------
-//
-CThumbnailGenerateTask::CThumbnailGenerateTask( CThumbnailTaskProcessor&
-    aProcessor, CThumbnailServer& aServer, RFile64* aFile, TDesC8* aBuffer,
-    const TDataType* aMimeType, CThumbnailManager::TThumbnailFlags aFlags,
-    const TSize& aSize, TDisplayMode aDisplayMode, TInt aPriority,
-    RArray < TThumbnailPersistentSize >* aMissingSizes, const TDesC& aTargetUri,
-    TThumbnailSize aThumbnailSize, const TInt64 aModified, 
-    const CThumbnailManager::TThumbnailQualityPreference aQualityPreference,
-    TBool aVirtualUri ): 
-    CThumbnailTask( aProcessor, aPriority ), iServer( aServer ), 
-    iFlags( aFlags ), iSize( aSize ), iDisplayMode( aDisplayMode ),
-    iMissingSizes( aMissingSizes ), iTargetUri( aTargetUri ),
-    iThumbnailSize( aThumbnailSize ), iModified(aModified),
-    iQualityPreference( aQualityPreference ), iVirtualUri( aVirtualUri )
-    {
-    TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::CThumbnailGenerateTask()", this);
-    OstTrace1( TRACE_NORMAL, CTHUMBNAILGENERATETASK_CTHUMBNAILGENERATETASK, "CThumbnailGenerateTask::CThumbnailGenerateTask;this=%o", this );
-    
-    if ( !aBuffer && aFile)
-        {
-        iFile = *aFile; 
-        iFile.FullName( iFilename );
-        }
-    else if( aBuffer )
-        {
-        iBuffer = aBuffer;
-        }
-    if ( aMimeType )
-        {
-        iMimeType = *aMimeType;
-        }
-    else
-        {
-        iMimeType = TDataType(KNullDesC8);
-        }
-    
-    // scaled bitmaps to pool by default
-    iScaledBitmapToPool = ETrue;
-    iBitmapHandle = 0;
-    }
-
-
-// ---------------------------------------------------------------------------
-// CThumbnailGenerateTask::~CThumbnailGenerateTask()
-// Destructor.
-// ---------------------------------------------------------------------------
-//
-CThumbnailGenerateTask::~CThumbnailGenerateTask()
-    {
-    TN_DEBUG2("CThumbnailGenerateTask(0x%08x)::~CThumbnailGenerateTask()", this);
-    OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILGENERATETASK_CTHUMBNAILGENERATETASK, "CThumbnailGenerateTask::~CThumbnailGenerateTask;this=%o", this );
-    
-    if ( iProvider )
-        {
-        iProvider->CancelGetThumbnail();
-        }
-	
-    if ( iMissingSizes )
-        {
-        iMissingSizes->Reset();
-        delete iMissingSizes;
-        iMissingSizes = NULL;
-        }
-		
-    if ( iBitmapHandle )
-        {
-        iServer.DeleteBitmapFromPool( iBitmapHandle );
-        iBitmapHandle = 0;
-        }
-		
-    iProvider = NULL;
-    delete iBuffer;
-    iBuffer = NULL;
-    
-    iFile.Close();
-    TN_DEBUG1("CThumbnailGenerateTask::~CThumbnailGenerateTask() - file handle closed");
-    OstTrace0( TRACE_NORMAL, DUP2_CTHUMBNAILGENERATETASK_CTHUMBNAILGENERATETASK, "CThumbnailGenerateTask::~CThumbnailGenerateTask - file handle closed" );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CThumbnailGenerateTask::StartL()
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::StartL()
-    {
-    TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::StartL()", this );
-    OstTrace1( TRACE_NORMAL, CTHUMBNAILGENERATETASK_STARTL, "CThumbnailGenerateTask::StartL;this=%o", this );
-
-    CThumbnailTask::StartL();
-    
-#ifdef _DEBUG
-    aStart.UniversalTime();
-#endif
-   
-    TBuf8< KMaxDataTypeLength > mimeType;
-
-    if ( (!iVirtualUri && iFilename.Right(KExtLength).CompareF(KNonEmbeddedArtExt) == 0) ||
-         (iVirtualUri && iTargetUri.Right(KExtLength).CompareF(KContactExt) == 0) ) // tparse panics with virtual URI
-        {         
-        mimeType.Copy( KImageMime );  		
-        }
-    else
-        {
-        mimeType = iMimeType.Des8();
-        }
-    iProvider = iServer.ResolveProviderL(mimeType);
-       	
-    TN_DEBUG3( "CThumbnailGenerateTask(0x%08x) -- provider UID 0x%08x", this, iProvider->Uid());
-    OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILGENERATETASK_STARTL, "CThumbnailGenerateTask::StartL;this=%o", this );
-
-    __ASSERT_DEBUG(( iProvider ), ThumbnailPanic( EThumbnailNullPointer ));
-
-    iProvider->CancelGetThumbnail();
-    iProvider->Reset();
-    iProvider->SetObserver( *this );
-
-    TSize effectiveTargetSize;
-    TSize croppedTargetSize;
-
-    CalculateTargetSizesL( effectiveTargetSize, croppedTargetSize );
-
-    iProvider->SetTargetSize( effectiveTargetSize );
-      
-    if(effectiveTargetSize == TSize())
-        {
-        iProvider->SetTargetSize( croppedTargetSize );
-        }
-	
-    TInt providerErr;
-    
-    if ( !iBuffer )
-        {
-        TRAP(providerErr, iProvider->GetThumbnailL( iServer.Fs(), iFile, iMimeType, iFlags,
-            iDisplayMode, iQualityPreference ) );
-        }
-    else
-        {
-        TRAP( providerErr, iProvider->GetThumbnailL( iServer.Fs(), iBuffer, iMimeType, iFlags,
-            iDisplayMode, iQualityPreference ));
-        }
-    
-    DoBlacklisting( providerErr, TSize(0,0) );
-    
-    User::LeaveIfError( providerErr );
-    
-    TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::StartL() end", this );
-    OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILGENERATETASK_STARTL, "CThumbnailGenerateTask::StartL -end;this=%o", this );
-    }
-
-
-// ---------------------------------------------------------------------------
-// CThumbnailGenerateTask::RunL()
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::RunL()
-    {
-    // No implementation required
-    }
-
-
-// ---------------------------------------------------------------------------
-// CThumbnailGenerateTask::DoCancel()
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::DoCancel()
-    {
-    TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::DoCancel()", this );
-    OstTrace1( TRACE_NORMAL, CTHUMBNAILGENERATETASK_DOCANCEL, "CThumbnailGenerateTask::DoCancel;this=%o", this );
-    
-    if ( iProvider )
-        {
-        iProvider->CancelGetThumbnail();
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// Calculate the largest non-cropped size and largest cropped size and
-// let the provider plug-in know the values
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::CalculateTargetSizesL( TSize& aEffectiveTargetSize,
-    TSize& aCroppedTargetSize )
-    { 
-    if ( iThumbnailSize == ECustomThumbnailSize )
-        {
-        if ( iFlags& CThumbnailManager::ECropToAspectRatio )
-            {
-            aCroppedTargetSize = iSize;
-            }
-        else
-            {
-            aEffectiveTargetSize = iSize;
-            }       
-        }
-    
-    if ( iThumbnailSize != ECustomThumbnailSize )
-        {
-        RArray < TThumbnailPersistentSize > sizes = iServer.PersistentSizesL();
-        const TInt count = sizes.Count();
-        for ( TInt i = 0; i < count; i++ )
-            {
-            TThumbnailPersistentSize size( sizes[i] );     
-
-            iSize = size.iSize;
-            if ( size.iCrop )
-               {
-               aCroppedTargetSize.iWidth = Max( aCroppedTargetSize.iWidth,
-                   size.iSize.iWidth );
-               aCroppedTargetSize.iHeight = Max( aCroppedTargetSize.iHeight,
-                   size.iSize.iHeight );
-               
-               if(iBuffer)
-                 {
-                 iFlags = ( CThumbnailManager::TThumbnailFlags ) (iFlags | CThumbnailManager::ECropToAspectRatio);
-                 aEffectiveTargetSize = aCroppedTargetSize;
-                 }
-               }
-            else
-               {
-                aEffectiveTargetSize.iWidth = Max( aEffectiveTargetSize.iWidth,
-                   size.iSize.iWidth );
-                aEffectiveTargetSize.iHeight = Max( aEffectiveTargetSize.iHeight,
-                   size.iSize.iHeight );
-               }
-            
-            if(size.iType == iThumbnailSize)
-              {
-              break;
-              }     
-            }
-        }    
-    }
-
-// ---------------------------------------------------------------------------
-// Thumbnail provider observer callback to notify the server when
-// thumbnail has been generated.
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::ThumbnailProviderReady( const TInt aError,
-    CFbsBitmap* aBitmap, const TSize& aOriginalSize, const TBool aEXIF, const TBool aPortrait )
-    {
-    TN_DEBUG4( 
-        "CThumbnailGenerateTask(0x%08x)::ThumbnailProviderReady(aError=%d, aBitmap=0x%08x)", this, aError, aBitmap );
-    OstTrace1( TRACE_NORMAL, CTHUMBNAILGENERATETASK_THUMBNAILPROVIDERREADY, "CThumbnailGenerateTask::ThumbnailProviderReady;this=%o", this );
-    OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILGENERATETASK_THUMBNAILPROVIDERREADY, "CThumbnailGenerateTask::ThumbnailProviderReady;aError=%d", aError );
-    OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILGENERATETASK_THUMBNAILPROVIDERREADY, "CThumbnailGenerateTask::ThumbnailProviderReady;aBitmap=%o", aBitmap );
-
-    #ifdef _DEBUG
-    aStop.UniversalTime();
-    TN_DEBUG2( "CThumbnailGenerateTask::ThumbnailProviderReady() generate took %d ms", (TInt)aStop.MicroSecondsFrom(aStart).Int64()/1000);
-    #endif
-    
-    iPortrait = aPortrait;
-    iEXIF = aEXIF;
-    iOriginalSize = aOriginalSize;
-
-    if ( aError )
-        {
-        delete aBitmap;
-        aBitmap = NULL;
-
-        DoBlacklisting( aError, aOriginalSize );
-            
-        Complete( aError );
-        }
-    else
-        {
-        // CreateScaleTasksL will take ownership of bitmap
-        
-#ifdef _DEBUG
-        TN_DEBUG2( "CThumbnailGenerateTask::ThumbnailProviderReady() - displaymode is %d", aBitmap->DisplayMode());
-        OstTrace1( TRACE_NORMAL, DUP3_CTHUMBNAILGENERATETASK_THUMBNAILPROVIDERREADY, "CThumbnailGenerateTask::ThumbnailProviderReady;aBitmap->DisplayMode()=%u", aBitmap->DisplayMode() );
-#endif
-        
-        TRAPD( err, CreateScaleTasksL( aBitmap ));
-        aBitmap = NULL;
-        // If CreateScaleTasksL left, we are responsible for completing
-        // the RMessage. If there was no leave, then this call will not
-        // complete actual the message, just the mark the task as completed.
-        Complete( err );
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// Create tasks to scale the thumbnail to each persistent thumbnail size
-// and also to the size the client requested
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::CreateScaleTasksL( CFbsBitmap* aBitmap )
-    {
-    __ASSERT_DEBUG(( aBitmap ), ThumbnailPanic( EThumbnailNullPointer ));
-
-    CleanupStack::PushL( aBitmap );
-    iServer.AddBitmapToPoolL( iRequestId.iSession, aBitmap, iRequestId );
-
-    // Keep handle so we can delete bitmap from pool
-    iBitmapHandle = aBitmap->Handle();
-    CleanupStack::Pop( aBitmap );
-
-    // compTask is the scale task which returns the bitmap to the client
-    CThumbnailScaleTask* complTask = NULL;
-	
-    TInt err1 = KErrNone;
-    TInt err2 = KErrNone;
-    TBool isPublic = ETrue;
-    TBool isPublic2 = ETrue;
-    
-    if(iFilename != KNullDesC)
-        {
-        TRAP(err1, iServer.StoreForPathL(iFilename));
-        
-        isPublic = iServer.IsPublicPath( iFilename );
-        }           
-    if(iTargetUri != KNullDesC )
-        {
-        TRAP(err2, iServer.StoreForPathL(iTargetUri));
-        
-        isPublic2 = iServer.IsPublicPath( iTargetUri );
-        }
-    
-    // check if need to create more than one scale task
-    if ( iMissingSizes )
-        {
-        const TInt count = iMissingSizes->Count();
-        
-        // scale small thumbs first, because fullscreen encoding takes longer
-        for ( TInt i( count-1 ); i >= 0; i-- )
-            {
-            TThumbnailSize size = (*iMissingSizes)[ i ].iType;
-#ifdef _DEBUG
-            TN_DEBUG3( "CThumbnailGenerateTask(0x%08x)::CreateScaleTasksL() *iMissingSizes)[ i ].iType == %d", this, size );
-            OstTrace1( TRACE_NORMAL, CTHUMBNAILGENERATETASK_CREATESCALETASKSL, "CThumbnailGenerateTask::CreateScaleTasksL;this=%o", this );
-            OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILGENERATETASK_CREATESCALETASKSL, "CThumbnailGenerateTask::CreateScaleTasksL;size=%d", size );
-#endif
-            
-            if ( iPortrait )
-                {
-                if ( size == EFullScreenThumbnailSize ||
-                     size == EVideoFullScreenThumbnailSize ||
-                     size == EAudioFullScreenThumbnailSize ||
-                     size == EImageFullScreenThumbnailSize || 
-                     size == EContactFullScreenThumbnailSize )
-                    {
-                    TInt mis_width = (*iMissingSizes)[ i ].iSize.iWidth;
-                    TN_DEBUG2( "*iMissingSizes)[ i ].iWidth == %d", (*iMissingSizes)[ i ].iSize.iWidth );
-                    OstTrace1( TRACE_NORMAL, DUP2_CTHUMBNAILGENERATETASK_CREATESCALETASKSL, "CThumbnailGenerateTask::CreateScaleTasksL;width=%d", mis_width );
-
-                    TInt mis_height = (*iMissingSizes)[ i ].iSize.iHeight;
-                    TN_DEBUG2( "*iMissingSizes)[ i ].iHeight == %d", (*iMissingSizes)[ i ].iSize.iHeight );
-                    OstTrace1( TRACE_NORMAL, DUP3_CTHUMBNAILGENERATETASK_CREATESCALETASKSL, "CThumbnailGenerateTask::CreateScaleTasksL;mis_height=%d", mis_height );
-                    TInt width = (*iMissingSizes)[ i ].iSize.iWidth; 
-                    (*iMissingSizes)[ i ].iSize.iWidth = (*iMissingSizes)[ i ].iSize.iHeight;
-                    (*iMissingSizes)[ i ].iSize.iHeight = width;
-                    TN_DEBUG2( "*iMissingSizes)[ i ].iWidth == %d", (*iMissingSizes)[ i ].iSize.iWidth );
-                    OstTrace1( TRACE_NORMAL, DUP4_CTHUMBNAILGENERATETASK_CREATESCALETASKSL, "CThumbnailGenerateTask::CreateScaleTasksL;width=%d", width );
-                    mis_height = (*iMissingSizes)[ i ].iSize.iHeight;
-                    TN_DEBUG2( "*iMissingSizes)[ i ].iHeight == %d", (*iMissingSizes)[ i ].iSize.iHeight );
-                    OstTrace1( TRACE_NORMAL, DUP5_CTHUMBNAILGENERATETASK_CREATESCALETASKSL, "CThumbnailGenerateTask::CreateScaleTasksL;mis_height=%d", mis_height );
-                    }
-                }
-            
-            CThumbnailScaleTask* complTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename,
-                aBitmap, iOriginalSize, (*iMissingSizes)[ i ].iSize, (*iMissingSizes)[ i ].iCrop, iDisplayMode,
-                KMaxPriority, iTargetUri, (*iMissingSizes)[ i ].iType, iModified, iScaledBitmapToPool, iEXIF,
-                iRequestId, iVirtualUri);
-            CleanupStack::PushL( complTask );
-            
-            // if trying to access Z drive, don't try to store
-            // don't want to store custom sizes
-            // don't store if from private directory
-            if( !isPublic || !isPublic2 ||
-                err1 == KErrAccessDenied || err2 == KErrAccessDenied ||
-                (*iMissingSizes)[ i ].iType == ECustomThumbnailSize || 
-                (*iMissingSizes)[ i ].iType == EUnknownThumbnailSize )
-                {
-                complTask->SetDoStore( EFalse );
-                TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::CreateScaleTasksL() - do not store", this );
-                OstTrace1( TRACE_NORMAL, DUP6_CTHUMBNAILGENERATETASK_CREATESCALETASKSL, "CThumbnailGenerateTask::CreateScaleTasksL - do not store;this=%o", this );
-                }
-            else
-                {
-                complTask->SetDoStore( ETrue );
-                }
-            
-            iProcessor.AddTaskL( complTask );
-            CleanupStack::Pop( complTask );
-            
-            // completion to first task, because task processor works like stack
-            if( i == 0 )
-                {
-                // compTask is now responsible for completing the RMessage
-                complTask->SetMessageData( iRequestId, iMessage, iClientThread );
-                ResetMessageData();
-                }
-            }
-        }
-    else
-        {
-        if( iPortrait )
-            {
-            if ( iThumbnailSize == EFullScreenThumbnailSize ||
-                 iThumbnailSize == EVideoFullScreenThumbnailSize ||
-                 iThumbnailSize == EAudioFullScreenThumbnailSize ||
-                 iThumbnailSize == EImageFullScreenThumbnailSize ||
-                 iThumbnailSize == EContactFullScreenThumbnailSize)
-                {
-                TInt width = iSize.iWidth; 
-                iSize.iWidth = iSize.iHeight;
-                iSize.iHeight = width;
-                }
-            }
-        
-        complTask = CThumbnailScaleTask::NewL( iProcessor, iServer, iFilename,
-            aBitmap, iOriginalSize, iSize, iFlags& CThumbnailManager
-            ::ECropToAspectRatio, iDisplayMode, KMaxPriority, iTargetUri,
-            iThumbnailSize, iModified, iScaledBitmapToPool, iEXIF, iRequestId,
-            iVirtualUri);
-        CleanupStack::PushL( complTask );
-        
-        // if trying to access Z drive, don't try to store
-        // don't want to store custom sizes
-        if( !isPublic || !isPublic2 ||
-            err1 == KErrAccessDenied || err2 == KErrAccessDenied ||
-            iThumbnailSize == ECustomThumbnailSize || 
-            iThumbnailSize == EUnknownThumbnailSize )
-            {
-            complTask->SetDoStore( EFalse );
-            TN_DEBUG2( "CThumbnailGenerateTask(0x%08x)::CreateScaleTasksL() - do not store", this );
-            OstTrace1( TRACE_NORMAL, DUP7_CTHUMBNAILGENERATETASK_CREATESCALETASKSL, "CThumbnailGenerateTask::CreateScaleTasksL - do not store;this=%o", this );
-            }
-        else
-            {
-            complTask->SetDoStore( ETrue );
-            }
-        
-        iProcessor.AddTaskL( complTask );
-        CleanupStack::Pop( complTask );
-        
-        // compTask is now responsible for completing the RMessage and
-        // returning the bitmap to the client
-        complTask->SetMessageData( iRequestId, iMessage, iClientThread );
-        ResetMessageData();
-        }
-
-    // Scale tasks now reference the bitmap in the pool
-    iServer.DeleteBitmapFromPool( iBitmapHandle );
-    iBitmapHandle = 0;
-    aBitmap = NULL;
-    }
-
-// ---------------------------------------------------------------------------
-// Defines if scaled bitmaps need to be added to pool
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::ScaledBitmapToPool( TBool aBool )
-    {
-    iScaledBitmapToPool = aBool;
-    }
-
-// ---------------------------------------------------------------------------
-// Stores a blacklisted thumbnail
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::CreateBlackListedL( const TSize& aOriginalSize )
-    {
-    TN_DEBUG1( "CThumbnailGenerateTask::CreateBlackListedL()");
-    OstTrace0( TRACE_NORMAL, CTHUMBNAILGENERATETASK_CREATEBLACKLISTEDL, "CThumbnailGenerateTask::CreateBlackListedL" );
-    CFbsBitmap* tempBitmap = 0;
-    tempBitmap = new (ELeave) CFbsBitmap();
-    CleanupStack::PushL( tempBitmap );
-    TSize tempSize( 1, 1 );
-    User::LeaveIfError( tempBitmap->Create( tempSize, iDisplayMode ) );
-    
-    // Instead of creating a blacklisted entry of requested size (iThumbnailSize) in thumbnail db,
-    // consider blacklisting all sizes (hence the changes are needed in thumbnail fetching logic too).
-    // However, decoding of source to thumnail could succeed in other sizes, which makes blacklisting
-    // of requested size only meaningful. 
-    
-    if(iFilename != KNullDesC)
-        {
-        iServer.StoreForPathL( iFilename )->StoreThumbnailL( 
-            iFilename, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, !iVirtualUri, ETrue );
-		//remove result from fetched checker
-        iServer.FetchedChecker().SetFetchResult( iFilename,  iThumbnailSize, KErrNone );
-        }
-    else if(iTargetUri != KNullDesC)
-        {
-        iServer.StoreForPathL( iTargetUri )->StoreThumbnailL( 
-            iTargetUri, tempBitmap, aOriginalSize, EFalse, iThumbnailSize, iModified, !iVirtualUri, ETrue );
-		//remove result from fetched checker
-        iServer.FetchedChecker().SetFetchResult( iTargetUri, iThumbnailSize, KErrNone );
-        }
-
-    CleanupStack::PopAndDestroy( tempBitmap );
-    }
-
-// ---------------------------------------------------------------------------
-// Checks is blacklisting needed
-// ---------------------------------------------------------------------------
-//
-void CThumbnailGenerateTask::DoBlacklisting( const TInt aError, const TSize& aOriginalSize )
-    {
-    TN_DEBUG1( "CThumbnailGenerateTask::DoBlacklisting()");
-    OstTrace0( TRACE_NORMAL, CTHUMBNAILGENERATETASK_DOBLACKLISTING, "CThumbnailGenerateTask::DoBlacklisting" );
-    // Create a temporary bitmap of size 1 for storing blacklisted thumbnail
-    // Because no actual bitmap data is generated, there is no reason to 
-    // add bitmap to server bitmap pool. Completion of client request with
-    // error code just results in applications showing their default bitmap. 
-    if( aError != KErrNone && (iFilename != KNullDesC || iTargetUri != KNullDesC ))
-        {
-        if (aError == KErrNotFound ||
-            aError == KErrNotSupported ||
-            aError == KErrCorrupt ||
-            aError == KErrCompletion ||
-            aError == KErrUnderflow ||
-            aError == KErrNotReady || 
-            aError == KErrGeneral )
-            {
-        
-        if(iMissingSizes)
-            {
-            TN_DEBUG2( "CThumbnailGenerateTask::DoBlacklisting() - blacklist missing sizes count = %d", iMissingSizes->Count() );
-            OstTrace1( TRACE_NORMAL, DUP1_CTHUMBNAILGENERATETASK_DOBLACKLISTING, "CThumbnailGenerateTask::DoBlacklisting - blacklist missing sizes count;iMissingSizes->Count()=%d", iMissingSizes->Count() );
-
-            for ( TInt i( 0 ); i < iMissingSizes->Count(); i++ )
-                {
-                iThumbnailSize = (*iMissingSizes)[ i ].iType;
-                TRAPD( err, CreateBlackListedL( aOriginalSize ) );
-                if (err != KErrNone)
-                   {
-                   TN_DEBUG3( "CThumbnailGenerateTask::DoBlacklisting() - blacklisting missing size %d failed with code %d", iThumbnailSize, err );
-                   OstTraceExt2( TRACE_NORMAL, DUP2_CTHUMBNAILGENERATETASK_DOBLACKLISTING, "CThumbnailGenerateTask::DoBlacklisting -  - blacklisting missing size failed with error;iThumbnailSize=%u;err=%d", iThumbnailSize, err );
-                   }
-                }
-            return;
-            }
-        else
-            {
-            TN_DEBUG1( "CThumbnailGenerateTask::DoBlacklisting() - blacklist single size" );
-            OstTrace0( TRACE_NORMAL, DUP3_CTHUMBNAILGENERATETASK_DOBLACKLISTING, "CThumbnailGenerateTask::DoBlacklisting - blacklist single size" );
-            TRAPD( err, CreateBlackListedL( aOriginalSize ) );
-            if (err != KErrNone)
-                {
-                TN_DEBUG2( "CThumbnailGenerateTask::DoBlacklisting() - blacklisting failed with code %d", err );
-                OstTrace1( TRACE_NORMAL, DUP4_CTHUMBNAILGENERATETASK_DOBLACKLISTING, "CThumbnailGenerateTask::DoBlacklisting - blacklisting failed with code;err=%d", err );
-                }
-            return;
-            }
-        }
-    TN_DEBUG1( "CThumbnailGenerateTask::DoBlacklisting() - not blacklisted " );        
-    OstTrace0( TRACE_NORMAL, DUP5_CTHUMBNAILGENERATETASK_DOBLACKLISTING, "CThumbnailGenerateTask::DoBlacklisting - not blacklisted" );
-    }
-}
-
-