diff -r 95243422089a -r 491b3ed49290 filemanager/bkupengine/src/CMMCScBkupStateGetDataOwners.cpp --- a/filemanager/bkupengine/src/CMMCScBkupStateGetDataOwners.cpp Thu Aug 19 09:42:45 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -/* -* Copyright (c) 2005 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: CMMCScBkupStateGetDataOwners implementation -* -* -*/ - -#include "CMMCScBkupStateGetDataOwners.h" - -#include -// User includes -#include "MMCScBkupLogger.h" -#include "CMMCScBkupDataOwnerCollection.h" -#include "MMCScBkupSBEUtils.h" - -// Constants -const TInt KMMCScBkupDataOwnerGranularity = 20; - - - -// ========================= MEMBER FUNCTIONS ================================ - -// --------------------------------------------------------------------------- -// CMMCScBkupStateGetDataOwners::CMMCScBkupStateGetDataOwners() -// -// C++ constructor. -// --------------------------------------------------------------------------- -CMMCScBkupStateGetDataOwners::CMMCScBkupStateGetDataOwners( MMMCScBkupDriver& aDriver ) -: CMMCScBkupState( aDriver ) - { - __LOG1("CMMCScBkupStateGetDataOwners::CMMCScBkupStateGetDataOwners() - 0x%08x", StateId().iUid ); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateGetDataOwners::NewL() -// -// -// --------------------------------------------------------------------------- -CMMCScBkupStateGetDataOwners* CMMCScBkupStateGetDataOwners::NewL( MMMCScBkupDriver& aDriver ) - { - CMMCScBkupStateGetDataOwners* self = new(ELeave) CMMCScBkupStateGetDataOwners( aDriver ); - return self; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateGetDataOwners::StateId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateGetDataOwners::StateId() const - { - return KMMCScBkupStateIdGetDataOwners; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateGetDataOwners::NextStateId() -// -// -// --------------------------------------------------------------------------- -TMMCScBkupStateId CMMCScBkupStateGetDataOwners::NextStateId() const - { - // This is the same for backup & restore - return KMMCScBkupStateIdSetPhoneMode; - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateGetDataOwners::PerformStateInitL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateGetDataOwners::PerformStateInitL() - { - // Query asynchronously - CompleteSelf(); - } - - -// --------------------------------------------------------------------------- -// CMMCScBkupStateGetDataOwners::PerformAsynchronousStateStepL() -// -// -// --------------------------------------------------------------------------- -void CMMCScBkupStateGetDataOwners::PerformAsynchronousStateStepL() - { - RMMCScBkupPointerArray dataOwners(KMMCScBkupDataOwnerGranularity); - CleanupClosePushL( dataOwners ); - - // Get data owner listing from secure backup engine - Driver().DrvSecureBackupClient().ListOfDataOwnersL(dataOwners); - - // Inform driver of result -#ifdef RD_FILE_MANAGER_BACKUP - RPointerArray& dataOwnerLists = Driver().DrvDataOwnersAll(); - TInt count = dataOwners.Count(); - - // Construct an info array to get introduced for every category - for(TInt i = count-1; i >= 0; i--) - { - // Ownership is immediately transferred to the backup owner info object - // so we should remove it from the array prior to passing into NewLC - conn::CDataOwnerInfo* sbDataOwner = dataOwners[i]; - - dataOwners.Remove( i ); // Ensures it won't be deleted twice - - const TSBDerivedType type = sbDataOwner->Identifier().DerivedTypeL(); - if ( type == EJavaDerivedType || type == EJavaTransferDerivedType ) - { - HBufC* hash = MMCScBkupSBEUtils::JavaHashFromGenericLC( sbDataOwner->Identifier() ); - __LOG1("CMMCScBkupStateGetDataOwners::PerformAsynchronousStateStepL() - Assigning java owner with hash %S for categories", - hash ); - CleanupStack::PopAndDestroy( hash ); - } - else - { - __LOG1("CMMCScBkupStateGetDataOwners::PerformAsynchronousStateStepL() - Assigning data owner 0x%08x for categories", - MMCScBkupSBEUtils::SecureIdFromGenericL( sbDataOwner->Identifier() ).iId ); - } - - // We have to create copy of original data owner for each category, so we have to externalize it - RPointerArray sbDataOwnerCopies(dataOwnerLists.Count()); - CleanupClosePushL( sbDataOwnerCopies ); - HBufC8* dataOwner = sbDataOwner->ExternaliseL(); - CleanupStack::PushL( dataOwner ); - // Delete original data owner instance - delete sbDataOwner; - - // Create copies for each category (even if they do not eventually end up to those lists) - for(TInt j = 0; j < dataOwnerLists.Count(); j++) - { - conn::CDataOwnerInfo* sbDataOwnerCopy = conn::CDataOwnerInfo::NewL(*dataOwner); - CleanupStack::PushL( sbDataOwnerCopy ); - sbDataOwnerCopies.AppendL(sbDataOwnerCopy); - CleanupStack::Pop( sbDataOwnerCopy ); - } - CleanupStack::PopAndDestroy( dataOwner ); - - // Loop through all lists and assign copied data owners there - for(TInt j = 0; j < dataOwnerLists.Count(); j++) - { - // Again we have to create instances for each category, - // because each has to have own copy of data owner - CMMCScBkupDataOwnerInfo* info = CMMCScBkupDataOwnerInfo::NewLC( sbDataOwnerCopies[j] ); - - if(dataOwnerLists[j]->AssignL( *info )) - { - CleanupStack::Pop( info ); - } - else - { - CleanupStack::PopAndDestroy( info ); - } - } - - CleanupStack::PopAndDestroy( &sbDataOwnerCopies ); - } - -#if defined(__MMCSCBKUPLOGGING_ENABLED__) - __LOG("CMMCScBkupStateGetDataOwners::PerformAsynchronousStateStepL() - Data owners per categories:"); - - for(TInt i = 0; i < dataOwnerLists.Count(); i++) - { - __LOG2("CMMCScBkupStateGetDataOwners::PerformAsynchronousStateStepL() - Category 0x%x contains %d data owners", - dataOwnerLists[i]->Category().iFlags, dataOwnerLists[i]->Count() ); - - for(TInt j = 0; j < dataOwnerLists[i]->Count(); j++) - { - CMMCScBkupDataOwnerInfo* entry = &dataOwnerLists[i]->Owner(j); - - const TSBDerivedType type = entry->Owner().Identifier().DerivedTypeL(); - if ( type == EJavaDerivedType || type == EJavaTransferDerivedType ) - { - HBufC* hash = MMCScBkupSBEUtils::JavaHashFromGenericLC( entry->Owner().Identifier() ); - __LOG1("CMMCScBkupStateGetDataOwners::PerformAsynchronousStateStepL() - java data owner with hash %S", - hash ); - CleanupStack::PopAndDestroy( hash ); - } - else - { - __LOG1("CMMCScBkupStateGetDataOwners::PerformAsynchronousStateStepL() - data owner 0x%08x", - MMCScBkupSBEUtils::SecureIdFromGenericL( entry->Owner().Identifier() ).iId ); - } - } - } -#endif - -#else // RD_FILE_MANAGER_BACKUP - Driver().DrvDataOwners().AssignL( dataOwners ); -#endif // RD_FILE_MANAGER_BACKUP - - CleanupStack::PopAndDestroy( &dataOwners ); - }