appinstaller/AppinstUi/Plugin/SisxUI/Src/SisxUIOperationWatcher.cpp
changeset 80 9dcba1ee99f7
parent 77 d1838696558c
--- a/appinstaller/AppinstUi/Plugin/SisxUI/Src/SisxUIOperationWatcher.cpp	Thu Oct 14 14:11:30 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1409 +0,0 @@
-/*
-* Copyright (c) 2002-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:   This module contains the implementation of CSisxUIOperationWatcher 
-*                class member functions.
-*
-*/
-
-
-// INCLUDE FILES
-
-#include <swi/asynclauncher.h>
-#include <swi/sisregistrysession.h>
-#include <swi/sisregistryentry.h>
-#include <swi/sisregistrypackage.h>
-#include <centralrepository.h>
-#include <SWInstallerInternalCRKeys.h>
-#include <pathinfo.h>
-#include <zipfilemember.h>
-#include <DRMLicenseManager.h>
-#include <SisxUIData.rsg>
-#include <SWInstTaskManager.h>
-#include <SWInstTask.h>
-#include <SWInstDefs.h>
-#include <featmgr.h>
-#include <SWInstFileTaskParam.h>
-#include <e32property.h>
-#include <SWInstallerInternalPSKeys.h>
-#include <Oma2Agent.h>              // KOmaDrm2AgentName
-#include <syslangutil.h>
-#include <caf/manager.h>            // ContentAccess::CManager
-#include <caf/agent.h>              // ContentAccess::TAgent
-
-#include <DcfEntry.h> // JPAA-7GEB7P 
-#include <DcfRep.h> // JPAA-7GEB7P
-
-#include "SisxUIOperationWatcher.h"
-#include "SisxUIHandler.h"
-#include "SisxUIResult.h"
-#include "SisxUIAppInfo.h"
-#include "SisxUIStartupFile.h"
-#include "SWInstDebug.h"
-#include "SisxUISilentHandler.h"
-#include "SisxUICleanupUtils.h" // JPAA-7GEB7P
-
-_LIT( KTempDir, "piptemp\\" );
-_LIT( KPipFileMatch, "*" );
-const TUint KSisxFileUidPosition = 8;
-const TUint KDot = 0x2E; // Dot
-_LIT(KSisString, "sis");
-_LIT( KSkinExtension, "*.skn" ); // JPAA-7GEB7P
-
-using namespace SwiUI;
-using namespace ContentAccess;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::CSisxUIOperationWatcher
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CSisxUIOperationWatcher::CSisxUIOperationWatcher() 
-    : CActive( CActive::EPriorityStandard ),
-      iIsSilent( EFalse ),
-      iDoSilentOcsp( EFalse )
-    {
-    CActiveScheduler::Add( this );    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::ConstructL()
-    {
-    iTaskManager = CTaskManager::NewL();
-    User::LeaveIfError( iRfs.Connect() );    
-    iRfs.ShareProtected();
-    FeatureManager::InitializeLibL(); 
-    iLauncher = Swi::CAsyncLauncher::NewL();
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-//
-CSisxUIOperationWatcher* CSisxUIOperationWatcher::NewL()
-    {
-    CSisxUIOperationWatcher* self = new( ELeave ) CSisxUIOperationWatcher();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    return self;    
-    }
-    
-// Destructor
-CSisxUIOperationWatcher::~CSisxUIOperationWatcher()
-    {
-    iDeletionOngoing = ETrue;
-    if ( iCanceller )
-        {
-        iCanceller->Cancel();
-        delete iCanceller;
-        }    
-
-    delete iLauncher;
-    iLauncher = NULL;
-    CActive::Cancel();
-
-    iSupportedLanguages.Close();
-    delete iUIHandler;
-    delete iTaskManager;
-    delete iMIME;    
-
-    NotifyEndUninstall();
-
-    iInstalledFiles.ResetAndDestroy();
-    iAugmentations.ResetAndDestroy();    
-
-    iTempFile.Close();
-    iRfs.Close();    
-
-    FeatureManager::UnInitializeLib();
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::InstallL
-// Handle install request.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-void CSisxUIOperationWatcher::InstallL( RFile& aFile, 
-                                        const TDesC8& aMIME, 
-                                        TBool aIsDRM, 
-                                        TRequestStatus& aRequestStatus )
-    {
-    // Set client request to pending state
-    iRequestStatus = &aRequestStatus;    
-    *iRequestStatus = KRequestPending; 
-
-    iSourceFile = aFile;
-    iMIME = aMIME.AllocL();    
-
-    // Create the ui
-    iUIHandler = CSisxUIHandler::NewL( CSisxUIHandler::EModeInstall, this );   
-    if ( aIsDRM )
-        {
-        // We need to pass the handle to ui handler, so that it can shown
-        // details of drm
-        iUIHandler->SetFileForDrm( aFile );        
-        }    
-
-    iPreparing = ETrue;    
-    // Kick off the RunL
-    TRequestStatus* stat = &iStatus;
-    User::RequestComplete( stat, KErrNone );
-    SetActive();  
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::SilentInstallL
-// Handle silentinstall request.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-void CSisxUIOperationWatcher::SilentInstallL( RFile& aFile, 
-                                              const TDesC8& aMIME, 
-                                              TBool aIsDRM,
-                                              TInstallOptions& aOptions, 
-                                              TRequestStatus& aRequestStatus )
-    {
-    // Set client request to pending state
-    iRequestStatus = &aRequestStatus;    
-    *iRequestStatus = KRequestPending;
-
-    iIsSilent = ETrue;      
-    iSourceFile = aFile;
-    iMIME = aMIME.AllocL();    
-    if ( aOptions.iOCSP == EPolicyAllowed )
-        {
-        iDoSilentOcsp = ETrue;        
-        }    
-
-    // Create the ui
-    iUIHandler = CSisxUISilentHandler::NewL( aOptions, this );   
-    if ( aIsDRM )
-        {
-        // We need to pass the handle to ui handler, so that it can shown
-        // details of drm
-        iUIHandler->SetFileForDrm( aFile );        
-        }    
-
-    iPreparing = ETrue;    
-    // Kick off the RunL
-    TRequestStatus* stat = &iStatus;
-    User::RequestComplete( stat, KErrNone );
-    SetActive();  
-    }        
-      
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::UninstallL
-// Handle uninstall request.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//      
-void CSisxUIOperationWatcher::UninstallL( const TUid& aUid, TRequestStatus& aRequestStatus ) 
-    {
-    // Set client request to pending state
-    iRequestStatus = &aRequestStatus;    
-    *iRequestStatus = KRequestPending; 
-
-    iUninstalledUid = aUid;    
-
-    TRAP_IGNORE( NotifyStartUninstallL(aUid ) );
-    iUIHandler = CSisxUIHandler::NewL( CSisxUIHandler::EModeUninstall, this );
-    
-    iLauncher->UninstallL( *iUIHandler, aUid, iStatus );
-    SetActive();    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::UninstallL
-// Handle uninstall request.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//      
-void CSisxUIOperationWatcher::SilentUninstallL( const TUid& aUid, 
-                                                TUninstallOptions& aOptions, 
-                                                TRequestStatus& aRequestStatus ) 
-    {
-    // Set client request to pending state
-    iRequestStatus = &aRequestStatus;    
-    *iRequestStatus = KRequestPending; 
-
-    iIsSilent = ETrue;    
-    iUninstalledUid = aUid;    
-
-    iUIHandler = CSisxUISilentHandler::NewL( aOptions, this );
-
-    TRAP_IGNORE( NotifyStartUninstallL(aUid ) );
-    iLauncher->UninstallL( *iUIHandler, aUid, iStatus );
-    SetActive();    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::UninstallAugmentationL
-// Uninstalls only a specific augmentation (sispatch)
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::UninstallAugmentationL( const TUid& aUid, 
-                                                      TInt aIndex, 
-                                                      TRequestStatus& aRequestStatus )
-    {
-    // Set client request to pending state
-    iRequestStatus = &aRequestStatus;    
-    *iRequestStatus = KRequestPending; 
-
-    iUninstalledUid = aUid;    
-
-    TRAP_IGNORE( NotifyStartUninstallL(aUid ) );
-    iUIHandler = CSisxUIHandler::NewL( CSisxUIHandler::EModeUninstall, this );
-   
-    DoUninstallAugmentationL( aUid, aIndex );    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::SilentUninstallAugmentationL
-// Uninstalls only a specific augmentation (sispatch)
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::SilentUninstallAugmentationL( const TUid& aUid, 
-                                                            TUninstallOptions& aOptions,
-                                                            TInt aIndex, 
-                                                            TRequestStatus& aRequestStatus )
-    {
-    // Set client request to pending state
-    iRequestStatus = &aRequestStatus;    
-    *iRequestStatus = KRequestPending; 
-
-    iIsSilent = ETrue;    
-    iUninstalledUid = aUid;    
-
-    TRAP_IGNORE( NotifyStartUninstallL(aUid ) );
-    iUIHandler = CSisxUISilentHandler::NewL( aOptions, this );
-   
-    DoUninstallAugmentationL( aUid, aIndex );    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::FinalCompleteL
-// Informs the UI, about final completion.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::FinalCompleteL()
-    {
-    iTempFile.Close();
-    
-    if ( iUIHandler )
-        {
-        iUIHandler->ShowFinalNoteL();        
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::Cancel
-// Override of CActive::Cancel
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-void CSisxUIOperationWatcher::Cancel()
-    {
-    if ( !iCancelOngoing )
-        {        
-        iUIHandler->ProcessResult( KSWInstErrUserCancel );
-    
-        if ( iPreparing )
-            {
-            CActive::Cancel();            
-            iUIHandler->DoNotShowFinalNote();            
-            // Just complete the client request
-            CompleteRequest( KSWInstErrUserCancel ); 
-            }        
-        else
-            {            
-            // If we are installing/uninstalling we may have a dialog waiting
-            // for user input. We need to use this special method to cancel
-            // the operation.
-            TRAPD( err,
-                   iCanceller = CommonUI::CCUICancelTimer::NewL( this );
-                   iCanceller->StartCancelling();            
-                );
-            if ( err != KErrNone )
-                {
-                // Complete the original request from client
-                CompleteRequest( KSWInstErrUserCancel );           
-                }            
-            }        
-
-        iCancelOngoing = ETrue;        
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::RunL
-// Called by framework when request is finished.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//    
-void CSisxUIOperationWatcher::RunL()
-    {
-    FLOG_1( _L("SisxUI: RunL() status: %d"), iStatus.Int() );
-
-    // If we got here, we don't need the canceller anymore
-    if ( iCanceller )
-        {
-        iCanceller->Cancel();
-        delete iCanceller;
-        iCanceller = NULL;        
-        }    
-
-    if ( iPreparing )
-        {
-        // Do all the necessary preparations
-        PrepareInstallL();
-        return;        
-        }
-
-    // Let the UI know about the result
-    iUIHandler->ProcessResult( iStatus.Int() );    
-
-    if ( iUIHandler->GetResult().iResult == EUiResultOk )
-        {
-        // Install case    
-        if ( iUIHandler->InstallMode() == CSisxUIHandler::EModeInstall )
-            {
-            TRAP_IGNORE( CompleteInstallationL() );            
-            }
-        // Uninstall case
-        else 
-            {
-            TRAP_IGNORE( CompleteUninstallationL() );
-            }       
-        }
-
-    CompleteRequest( iUIHandler->GetResult().CommonResult() );          
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::DoCancelL
-// Called by framework when request is cancelled.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::DoCancel()
-    {        
-    // This function is usually not used because of overridden Cancel().
-    // Usually CActive::Cancel() followed by CompleteRequest() is used to
-    // cancel active CSisxUIOperationWatcher. However, when active operation
-    // watcher is deleted, this function must complete the client request
-    // (to avoid deadlock when client calls CActive::Cancel() later).
-    if( iDeletionOngoing && iRequestStatus )
-        {
-        CompleteRequest( KErrCancel );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::DoCancelL
-// Handles a leave occurring in the request completion event handler RunL().
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-TInt CSisxUIOperationWatcher::RunError( TInt aError )
-    {
-    // Report the error to the UI
-    iUIHandler->ProcessResult( aError );    
-    // Complete client request
-    CompleteRequest( aError );
-    return KErrNone;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::UserCancelL
-// Called when user has cancelled the operation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::UserCancelL( TBool aCancelImmediately )
-    {
-    iIsUserCancel = ETrue;
-    if ( !aCancelImmediately )
-        {        
-        Cancel();
-        }
-    else
-        {
-        CancelEngine();
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::IsShowingDialog
-// Indicates if a modal dialog is currently shown.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-TBool CSisxUIOperationWatcher::IsShowingDialog()
-    {
-    return iUIHandler->IsShowingDialog();    
-    }
-    
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::CancelEngine
-// Cancels the installation engine.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::CancelEngine()
-    {
-    if ( iLauncher )
-        {
-        iLauncher->CancelOperation();   
-        }              
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::ForceCancel
-// Called when nothing else has worked.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::ForceCancel()
-    {
-    // We need to make a dirty cancel
-    // Kill the async launcher
-    delete iLauncher;
-    iLauncher = NULL;
-    
-    // We can cancel the AO, launcher has completed the request
-    CActive::Cancel();
-    
-    // Complete the client request
-    CompleteRequest( KSWInstErrUserCancel );
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::StartedCancellingL
-// Called to indicate that the cancelling progress has been started.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::StartedCancellingL()
-    {
-    // Show the dialog only if this is user initiated cancel.
-    if ( iIsUserCancel )
-        {        
-        iUIHandler->ShowCancellingL();    
-        }    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::DoCancelL
-// Completes the pending request.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::CompleteRequest( TInt aResult )
-    {
-    iTempFile.Close();
-    
-    if ( iRequestStatus )
-        {        
-        FLOG_1( _L("SisxUI: Completing with: %d"), aResult );
-        User::RequestComplete( iRequestStatus, aResult );
-        iRequestStatus = NULL;
-        }   
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::AddStartupItemsL
-// Add files to startup list.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::AddStartupItemsL( RArray<TStartupTaskParam>& aParams )
-    {
-    if ( FeatureManager::FeatureSupported( KFeatureIdExtendedStartup ) )
-        {        
-        if ( aParams.Count() > 0 )
-            {        
-            CTask* task = CTask::NewL( KSTartupTaskAddImplUid, ETrue );
-            CleanupStack::PushL( task );        
-            for ( TInt index = 0; index < aParams.Count(); index++ )
-                {
-                TStartupTaskParamPckg pckg( aParams[index] );        
-                task->SetParameterL( pckg, index );        
-                }
-    
-            iTaskManager->AddTaskL( task );
-            CleanupStack::Pop( task );
-            }
-        }    
-    }
- 
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::RemoveStartupItemsL
-// Remove files from the startup list.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::RemoveStartupItemsL( RArray<TStartupTaskParam>& aParams )
-    {
-    if ( FeatureManager::FeatureSupported( KFeatureIdExtendedStartup ) )
-        {        
-        if ( aParams.Count() > 0 )
-            {        
-            CTask* task = CTask::NewL( KSTartupTaskRemoveImplUid, ETrue );
-            CleanupStack::PushL( task );        
-            for ( TInt index = 0; index < aParams.Count(); index++ )
-                {
-                TStartupTaskParamPckg pckg( aParams[index] );        
-                task->SetParameterL( pckg, index );        
-                }
-    
-            iTaskManager->AddTaskL( task );
-            CleanupStack::Pop( task );
-            }    
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::RemoveStartupFileL
-// Checks if the given uid has installed a startup file. If it finds one
-// it removes it and creates a task to remove the items as well.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::RemoveStartupFileL( TUid aUid )
-    {
-    if ( FeatureManager::FeatureSupported( KFeatureIdExtendedStartup ) )
-        {        
-        // Handle startup list
-        CSisxUIStartupFile* startupFile = CSisxUIStartupFile::NewL( aUid );
-        CleanupStack::PushL( startupFile );
-        if ( !startupFile->NewFileExists() )
-            {
-            FLOG( _L("SisxUI: Removal of import file") );
-        
-            // First see if we have a control file for this package
-            if ( startupFile->PrivateFileExists() )
-                {            
-                RArray<TStartupTaskParam> params;     
-                startupFile->RemovePrivateFile( params );
-                CleanupClosePushL( params );                        
-                RemoveStartupItemsL( params ); 
-                CleanupStack::PopAndDestroy(); // params
-                iInstalledFiles.ResetAndDestroy();
-
-                // Put the flag on that we did modify the startup list
-                iStartupModified = ETrue;        
-                }
-            }
-        
-        CleanupStack::PopAndDestroy( startupFile );        
-        }      
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::HandleLogL
-// Handles the log entry addition.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::HandleLogL( const CSisxUIAppInfo& aAppInfo, 
-                                          const TLogTaskAction& aAction, 
-                                          TBool aIsStartup )
-    {
-    // Create a log task object, non-persistent
-    CTask* task = CTask::NewL( KLogTaskImplUid, EFalse );
-    CleanupStack::PushL( task );
-    
-    // Construct log task parameters
-    TLogTaskParam params;
-
-    // Make sure that we don't copy over limits
-    params.iName.Copy( aAppInfo.Name().Left( KMaxLogNameLength ) );
-    params.iVendor.Copy( aAppInfo.Vendor().Left( KMaxLogNameLength ) );
-
-    params.iVersion = aAppInfo.Version();
-    params.iUid = aAppInfo.Uid();
-    // The time must be in universal time
-    TTime time;
-    time.UniversalTime();    
-    params.iTime = time;
-    params.iAction = aAction;
-    params.iIsStartup = aIsStartup;    
-    
-    TLogTaskParamPckg pckg( params );
-    task->SetParameterL( pckg, 0 );
-
-    // Add the log task to the task list
-    iTaskManager->AddTaskL( task );
-
-    CleanupStack::Pop( task );
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::HandlePipFileL
-// Helper to handle the case of pip file.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::HandlePipFileL( RFile& aPipFileHandle, RFile& aSisFileHandle )
-    {
-    FLOG( _L("SisxUI: Handle pip file") );
-
-    // PIP package, we need to use license manager to extract the sis file
-    // First construct the temp path
-    iRfs.PrivatePath( iTempDir );
-    iTempDir.Insert( 0, TParsePtrC( PathInfo::PhoneMemoryRootPath() ).Drive() );
-    iTempDir.Append( KTempDir );
-    iRfs.MkDir( iTempDir );    
-  
-    // Add task to delete the extracted sis file
-    HBufC* pipFileMatch = HBufC::NewLC( KMaxFileName );
-    pipFileMatch->Des().Copy( iTempDir );
-    pipFileMatch->Des().Append( KPipFileMatch );
-
-    // Create a delete file task
-    CTask* task = CTask::NewL( KFileTaskDeleteImplUid, ETrue );
-    CleanupStack::PushL( task );
-    
-    // Construct file task parameters
-    TFileTaskDeleteParam params;
-    params.iFile = *pipFileMatch;
-    TFileTaskDeleteParamPckg pckg( params );
-    task->SetParameterL( pckg, 0 );
-    
-    // Add the task to the task list
-    iTaskManager->AddTaskL( task );
-    CleanupStack::Pop( task );    
-    iTaskManager->CommitL();
-    
-    CleanupStack::PopAndDestroy( pipFileMatch );    
-    
-    // Use license manager to extract files from the pip package
-    CDRMLicenseManager* licenseMgr = CDRMLicenseManager::NewL();
-    CleanupStack::PushL( licenseMgr );               
-    User::LeaveIfError( licenseMgr->ExtractSISFileL( aPipFileHandle, iTempDir ) );
-    
-    // Get the sis file name and open temporary handle to it.
-    // HLEI-7EGFRE
-    CZipFileMember* sisMember( licenseMgr->GetSISMemberL() );
-    CleanupStack::PushL( sisMember );
-    iTempDir.Append( *sisMember->Name() );
-    CleanupStack::PopAndDestroy( sisMember );
-    sisMember = NULL;
-    
-    User::LeaveIfError( aSisFileHandle.Open( iRfs, iTempDir, EFileShareAny ) );        
-    iIsPipFile = ETrue;
-    
-    CleanupStack::PopAndDestroy( licenseMgr );    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::PrepareOCSPL
-// Helper to read ocsp values from central repository and prepare the ui.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::PrepareOCSPL( CSisxUIHandler* aUIHandler, 
-                                            Swi::CInstallPrefs* aPrefs )
-    {
-    TSWInstallerOcspProcedure ocspProc( ESWInstallerOcspProcedureOff );
-    
-    if ( !iIsSilent || iDoSilentOcsp )
-        {        
-        CRepository* repository = CRepository::NewL( KCRUidSWInstallerSettings );
-        CleanupStack::PushL( repository );
-    
-        if ( !iIsSilent )
-            {            
-            // In case of normal installation we check the ocsp value from central rep
-            TInt value( 0 );
-            repository->Get( KSWInstallerOcspProcedure, value );
-            ocspProc = TSWInstallerOcspProcedure( value );    
-            }
-        else
-            {
-            // In case of silent install, the client sets the value
-            ocspProc = ESWInstallerOcspProcedureOn;            
-            }
-    
-        // Get default OCSP URL
-        HBufC* ocspURL = HBufC::NewLC( NCentralRepositoryConstants::KMaxUnicodeStringLength );
-        TPtr ptr( ocspURL->Des() );
-        repository->Get( KSWInstallerOcspDefaultURL, ptr );
-
-        // Convert to 8 byte
-        HBufC8* ocspURL8 = HBufC8::NewLC( ocspURL->Length() );
-        ocspURL8->Des().Copy( *ocspURL );
-        
-        aPrefs->SetRevocationServerUriL( *ocspURL8 );
-        CleanupStack::PopAndDestroy( 3, repository );        
-        }
-    
-    if ( ocspProc == ESWInstallerOcspProcedureOn ||
-         ocspProc == ESWInstallerOcspProcedureMust )
-        {
-        if ( ocspProc == ESWInstallerOcspProcedureOn )
-            {
-            aUIHandler->SetOcspProcedure( ESisxUIOcspProcOn );
-            }
-        else
-            {
-            aUIHandler->SetOcspProcedure( ESisxUIOcspProcMust );
-            }        
-        
-        aPrefs->SetPerformRevocationCheck( ETrue );        
-        }
-    else
-        {
-        aUIHandler->SetOcspProcedure( ESisxUIOcspProcOff );
-        aPrefs->SetPerformRevocationCheck( EFalse );
-        }   
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::GetInstalledPackagesL
-// Helper to get the packages that were installed in this session.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::GetInstalledPackagesL( RPointerArray<CSisxUIAppInfo>& aPackages )
-    {
-    ContentAccess::CContent* content = NULL;
-    if ( iIsPipFile )
-        {
-        // The source file is a pip file, we need to use the extracted sis file instead.
-        content = ContentAccess::CContent::NewLC( iTempFile );
-        }  
-    else
-        {
-        content = ContentAccess::CContent::NewLC( iSourceFile );
-        }
-    
-    ContentAccess::CData* data = content->OpenContentLC( ContentAccess::EExecute );
-
-    // Read the uid from the package
-    TInt32 uid( 0 );    
-    TPckg<TInt32> uidpkg( uid );
-    TInt pos( KSisxFileUidPosition );
-    data->Seek( ESeekStart, pos );    
-    data->Read( uidpkg, sizeof( TInt32 ) );
-
-    CleanupStack::PopAndDestroy( 2, content );    
-
-    iUIHandler->ProcessedPackages( aPackages );            
-
-    // Currently we can only get the parent package
-    for ( TInt index = 0; index < 1 && index < aPackages.Count(); index++ )
-        {
-        aPackages[index]->SetUid( TUid::Uid( uid ) );                
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::HandleStartupAdditionL
-// Helper to handle startup list addition.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::HandleStartupAdditionL( const CSisxUIAppInfo& aAppInfo )
-    {
-    FLOG( _L("SisxUI: Handle startup") );
-
-    if ( FeatureManager::FeatureSupported( KFeatureIdExtendedStartup ) )
-        {        
-        CSisxUIStartupFile* startupFile = CSisxUIStartupFile::NewL( aAppInfo.Uid() );
-        CleanupStack::PushL( startupFile );
-
-        // First check if there is a control file in import dir
-        if ( startupFile->NewFileExists() )
-            {
-            FLOG( _L("SisxUI: Processing control file") );
-
-            // Get all files installed by this package
-            Swi::RSisRegistrySession regSession;
-            CleanupClosePushL( regSession );
-            User::LeaveIfError( regSession.Connect() );
-
-            Swi::RSisRegistryEntry regEntry;
-            CleanupClosePushL( regEntry );
-            User::LeaveIfError( regEntry.Open( regSession, aAppInfo.Uid() ) );
-
-            regEntry.FilesL( iInstalledFiles ); 
-
-            CleanupStack::PopAndDestroy( 2 ); // regEntry, regSession
-                         
-            RArray<TStartupTaskParam> params;
-
-            // See if there are some old items, if so remove them
-            if ( startupFile->PrivateFileExists() )
-                {
-                startupFile->RemovePrivateFile( params );
-                CleanupClosePushL( params );                        
-                RemoveStartupItemsL( params ); 
-                CleanupStack::Pop(); // params                        
-                params.Reset();                               
-                }                        
-
-            startupFile->ProcessNewFile( params, iInstalledFiles );
-                        
-            CleanupClosePushL( params );                        
-            AddStartupItemsL( params ); 
-            CleanupStack::PopAndDestroy(); // params
-            iInstalledFiles.ResetAndDestroy();  
-            }
-
-        iTaskManager->CommitL();
-
-        CleanupStack::PopAndDestroy( startupFile );   
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::PrepareInstallL
-// Prepares the installation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::PrepareInstallL()
-    {    
-    Swi::CInstallPrefs* prefs = Swi::CInstallPrefs::NewL();
-    CleanupStack::PushL( prefs );    
-
-    // Prepare for possible OCSP
-    PrepareOCSPL( iUIHandler, prefs );
-
-    // Check if we allow untrusted SW to be installed
-    CRepository* repository = CRepository::NewL( KCRUidSWInstallerSettings );
-    CleanupStack::PushL( repository );    
-    TInt value( 1 );
-    repository->Get( KSWInstallerAllowUntrusted, value );
-    if ( !value )
-        {
-        iUIHandler->SetAllowUntrusted( EFalse );        
-        }
-    else
-        {
-        iUIHandler->SetAllowUntrusted( ETrue );
-        }    
-    CleanupStack::PopAndDestroy( repository );    
-
-    // Get supported language ids in a RArray for Swi::CAsyncLauncher::InstallL()
-    iSupportedLanguages.Reset();
-    CArrayFixFlat<TInt>* installedLanguages = NULL;
-    TInt err = SysLangUtil::GetInstalledLanguages( installedLanguages, &iRfs );
-    CleanupStack::PushL( installedLanguages );
-    User::LeaveIfError( err );
-    if( installedLanguages )
-        {
-        for( TInt lang = 0; lang < installedLanguages->Count(); lang++ )
-            {
-            iSupportedLanguages.AppendL( (*installedLanguages)[ lang ] );
-            }
-        }
-    CleanupStack::PopAndDestroy( installedLanguages );
-
-    if ( *iMIME == KPipMimeType )
-        {
-        // Handle the pip file
-        HandlePipFileL( iSourceFile, iTempFile );
-        
-        // Start installation
-        iLauncher->InstallL( *iUIHandler, iTempFile, *prefs, iSupportedLanguages, iStatus );
-        }   
-    else
-        {
-        // Start installation
-        iLauncher->InstallL( *iUIHandler, iSourceFile, *prefs, iSupportedLanguages, iStatus );
-        }    
-
-    CleanupStack::PopAndDestroy( prefs );
-    
-    // Preparing done
-    iPreparing = EFalse;
-    SetActive();       
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::CompleteInstallationL
-// Completes the installation
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::CompleteInstallationL()
-    {
-    FLOG( _L("SisxUI: CompleteInstallationL ->") );
-    // If this was a pip file, process it
-    if ( iIsPipFile )
-        {    
-        FLOG( _L("SisxUI: PIP file") );
-                    
-        CDRMLicenseManager* licenseMgr = CDRMLicenseManager::NewL();
-        CleanupStack::PushL( licenseMgr );     
-        TInt err = licenseMgr->ProcessL( iSourceFile, KNullDesC() );
-        if ( err != KErrNone )
-            {
-            // Reset the OK result so that we can show the error.
-            iUIHandler->ResetResult();
-            User::Leave( KSWInstErrFileCorrupted );
-            }
-                
-        CleanupStack::PopAndDestroy( licenseMgr );                
-        
-// RVIN-6JUGWH
-        HBufC* fileName = HBufC::NewLC( 100 );
-        TPtr fileNamePtr( fileName->Des() );   
-    	TInt err2 = iSourceFile.Name( fileNamePtr );
-        
-        FLOG_1( _L("Original file name: %S"), &fileNamePtr );
-        
-        TInt i = 0;
-        for ( ; i < fileNamePtr.Length(); i++ )
-            {
-            if ( fileNamePtr[i] == KDot )
-                {
-                break;
-                }                    
-            } 
-            
-        HBufC* tmpFile = HBufC::NewLC( i + 4 );
-        TPtr tmpFilePtr( tmpFile->Des() );   
-        tmpFilePtr = fileNamePtr.Left( i + 1 );
-        tmpFilePtr.Append( KSisString );               
-
-        FLOG_1( _L( "Changed file name: %S" ), &tmpFilePtr );
-
-        // Create data supplier      
-        CContent* content = CContent::NewLC( iSourceFile );
-
-        HBufC* contentID = HBufC::NewLC( KMaxCafContentName  );
-        TPtr contPtr(NULL, NULL);
-
-        // create attribute set
-        ContentAccess::RStringAttributeSet stringAttSet;
-        //RStringAttributeSet stringAttSet;
-        CleanupClosePushL( stringAttSet );
-
-        stringAttSet.AddL( EContentID );
-
-        content->GetStringAttributeSet( stringAttSet );
-
-        // pass on values of string attributes
-        contPtr.Set( contentID->Des() );
-
-        err = stringAttSet.GetValue( EContentID, contPtr );
-        
-        if ( err != KErrNone )
-            {  
-            FLOG_1( _L("SisxUI: ContentID error = %d"), err );          
-            // Reset the OK result so that we can show the error.
-            iUIHandler->ResetResult();
-            User::Leave( KSWInstErrGeneralError );
-            }
-
-        HBufC8* contentID8 = HBufC8::NewLC( contentID->Length() );
-        TPtr8 cont8Ptr = contentID8->Des();
-        
-        // Copy 8bit data from contentID buffer.
-        // Note that AgentSpecificCommand function take's only 8bit data.
-        cont8Ptr.Copy( contPtr );
-
-        HBufC8* buffer = HBufC8::NewMaxLC( sizeof( TInt ) + 
-                                           contentID8->Size() + 
-                                           tmpFilePtr.Size() );                                           
-        TUint8* bptr = const_cast<TUint8*>( buffer->Ptr() );
-
-        TUint length = tmpFilePtr.Length();
-        TPtr8 temp( NULL, 0, 0 );
-        TPtr8 buf( buffer->Des() );
-        Mem::Copy(bptr, &length, sizeof(TInt));
-        Mem::Copy(bptr+sizeof( TInt ), tmpFilePtr.Ptr(), length * 2 );
-        Mem::Copy(bptr+sizeof( TInt )+( length * 2 ), contentID8->Ptr(), contentID8->Size());    
-
-        ContentAccess::CManager* manager = NULL;
-        ContentAccess::TAgent agent;
-
-        // Find the caf agent and create manager
-        manager = GetCafDataL( agent );
-
-    	// ignore any error, we couldn't do anything about it anyway
-        length = manager->AgentSpecificCommand( agent, ContentAccess::ESetContentName, 
-                                                buf, temp);
-
-        FLOG( _L("SisxUI: PopAndDestroy") );
-        // buffer, tmpfile, fileName, content, contentID, stringAttSet, contentID8 
-        CleanupStack::PopAndDestroy( 7 ); 
-        delete manager;
-// RVIN-6JUGWH                       
-        }            
-
-    FLOG( _L("SisxUI: GetInstalledPackagesL") );
-
-    // Here we get only the first package in case of embedded packages
-    // as currently there is no means to get the sub packages 
-    RPointerArray<CSisxUIAppInfo> packages;  
-    GetInstalledPackagesL( packages );            
-    CleanupClosePushL( packages );            
-
-    // Create log entry for every installed package and handle possible 
-    // startup list addition.
-    for ( TInt index = 0; index < packages.Count(); index++ )
-        {               
-        // Handle startup list
-        // Currently, if embedded sis, only the first package can contain
-        // startup items
-        if ( !index && packages[index]->IsTrusted() )
-            {
-            HandleStartupAdditionL( *packages[index] ); 
-       
-            // Handle log
-            HandleLogL( *packages[index], ELogTaskActionInstall, ETrue );
-            }
-        else
-            {
-            // Handle log
-            HandleLogL( *packages[index], ELogTaskActionInstall, EFalse );
-            }                
-        }            
-     
-// JPAA-7GEB7P
-    // Register PIP file content to DRM DCF server.
-    if ( iIsPipFile )     
-        {               
-        TInt siscount = packages.Count();
-        FLOG_1( _L("SisxUI: packages.Count() = %d"), siscount ); 
-    
-        if ( siscount )
-            {    
-            TUid pkgUid( packages[0]->Uid() );
-            FLOG_1( _L("SisxUI: package UID: 0x%x"), pkgUid.iUid );              
-            RegisterContentToDCF( pkgUid );
-            }
-        }
-// JPAA-7GEB7P        
-        
-    FLOG( _L("SisxUI: PopAndDestroy") );
-    CleanupStack::PopAndDestroy(); // packages
-    
-    FLOG( _L("SisxUI: CompleteInstallationL <-") );
-            
-    // Make sure that all other control files are removed.
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::CompleteUninstallationL
-// Completes the uninstallation
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::CompleteUninstallationL()
-    {
-    NotifyEndUninstall();
-    
-    RemoveStartupFileL( iUninstalledUid );
-    iTaskManager->CommitL();   
-
-    RPointerArray<CSisxUIAppInfo> packages;            
-    iUIHandler->ProcessedPackages( packages );
-    CleanupClosePushL( packages );
-        
-    if ( packages.Count() > 0 )
-        {            
-        packages[0]->SetUid( iUninstalledUid );           
-        
-        HandleLogL( *packages[0], ELogTaskActionUninstall, iStartupModified );
-        }        
-    CleanupStack::PopAndDestroy(); // packages 
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::DoUninstallAugmentationL
-// Performs the uninstallation of augmentation.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::DoUninstallAugmentationL( TUid aUid, TInt aIndex )
-    {
-    // Find the augmentation
-    Swi::RSisRegistrySession regSession;
-    CleanupClosePushL( regSession );
-    User::LeaveIfError( regSession.Connect() );
-    
-    Swi::RSisRegistryEntry regEntry;
-    CleanupClosePushL( regEntry );
-    User::LeaveIfError( regEntry.Open( regSession, aUid ) );
-    
-    regEntry.AugmentationsL( iAugmentations );
-    
-    for ( TInt i( 0 ); i < iAugmentations.Count(); i++ )
-        {
-        if ( iAugmentations[i]->Index() == aIndex )
-            {
-            iIsAugmentation = ETrue;            
-            // We found the correct package, now uninstall it
-            iLauncher->UninstallL( *iUIHandler, *iAugmentations[i], iStatus );            
-            SetActive();
-            break;            
-            }        
-        if ( i == iAugmentations.Count() + 1 )
-            {
-            // We have gone through the whole list and couldn't find the package
-            User::Leave( KErrNotFound );            
-            }        
-        }  
-       
-    iAugmentations.ResetAndDestroy();    
-    CleanupStack::PopAndDestroy( 2, &regSession );   
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::NotifyStartUninstallL
-// Notifies that uninstallation is about to start.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::NotifyStartUninstallL( TUid aUid )
-    {
-    _LIT_SECURITY_POLICY_PASS( KPropReadPolicy );
-    _LIT_SECURITY_POLICY_C1( KPropWritePolicy, ECapabilityWriteDeviceData );
-
-    // Try to define the property if this is the first time
-    TInt err = RProperty::Define( KPSUidSWInstallerUiNotification, 
-                                  KSWInstallerUninstallation, 
-                                  RProperty::EInt,
-                                  KPropReadPolicy,
-                                  KPropWritePolicy );	
-    if ( err != KErrNone && err != KErrAlreadyExists )
-        {		
-        User::Leave( err );		
-        }
-    
-    // Set the package uid as the value
-    err = RProperty::Set( KPSUidSWInstallerUiNotification, 
-                          KSWInstallerUninstallation, 
-                          aUid.iUid );
-    User::LeaveIfError( err );
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::NotifyEndUninstall
-// Notifies that uninstallation has been completed.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-void CSisxUIOperationWatcher::NotifyEndUninstall()
-    {
-    RProperty::Set( KPSUidSWInstallerUiNotification, 
-                    KSWInstallerUninstallation, 
-                    0 );
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::GetCafDataL
-// Handles searching correct DRM agent and manager.
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-// 
-ContentAccess::CManager* CSisxUIOperationWatcher::GetCafDataL( ContentAccess::TAgent& aAgent )
-    {
-    RArray<TAgent> agents;
-
-    CleanupClosePushL( agents );
-    CManager* manager = CManager::NewLC();
-
-    manager->ListAgentsL( agents );
-    
-    for ( TInt i = 0; i < agents.Count(); i++ )
-        {
-        if (agents[i].Name().Compare(KOmaDrm2AgentName) == 0)
-            {
-            aAgent = agents[i];
-            break;
-            }
-        }
-    CleanupStack::Pop( manager );
-    CleanupStack::PopAndDestroy( &agents );
-    return manager;    
-    }
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::RegisterContentToDCF
-// This function does register PIP packages content to DCF server.
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::RegisterContentToDCF( TUid aUid )
-    {
-    // Note that currently we do register only skin (*.skn) 
-    // files since there is not way to SisxUI plugin to know 
-    // which files should be registerd to DCF. It is not reasonable
-    // to push all files to DCF and hope that some is correct one.
-    
-    FLOG( _L("SisxUI: RegisterContentToDCF") ); 
-    Swi::RSisRegistrySession sisRegSession;                                        
-    User::LeaveIfError( sisRegSession.Connect() );                
-    CleanupClosePushL( sisRegSession );
-                
-    // Get current package UID and open the entry.
-    Swi::RSisRegistryEntry entry;                                
-    // Open entry
-    TInt error = entry.Open( sisRegSession, aUid );
-    FLOG_1( _L("SisxUI: SisEntry open error: %d"), error );  
-     
-    if ( error == KErrNone )
-        {                       
-        CleanupClosePushL( entry );   
-        // Get all files to array for DCF update.
-        RPointerArray<HBufC> fileArray; 
-        CleanupResetAndDestroyPushL( fileArray );
-        TInt index = 0;     
-        // It seems that some PIP pkg do not have files in 
-        // main pacakge, but let's make sure that we do not
-        // miss any files.
-        FLOG( _L("SisxUI: Get files from main pkg") );  
-        RPointerArray<HBufC> sisFileArray;                
-        entry.FilesL( sisFileArray );                    
-        CleanupResetAndDestroyPushL( sisFileArray );
-        
-        // Add main package's file paths to file array.
-        SearchFilesForDCFL( sisFileArray, fileArray );
-              
-        // Let's see if there is augmentations to this main pkg.                  
-        RPointerArray<Swi::CSisRegistryPackage> augPackages;                      
-        entry.AugmentationsL( augPackages );                                        
-        CleanupResetAndDestroyPushL( augPackages );
-        
-        TInt augCount = augPackages.Count();
-        FLOG_1( _L("SisxUI: augmentations count = %d"), augCount );
-        
-        if ( augCount )
-            { 
-            // There may be several augmentaion pkgs and we need 
-            // check them all.      
-            for ( TInt augInd = 0; augInd < augCount; augInd++ )
-                {
-                FLOG_1( _L("SisxUI: augm. index = %d"), augInd );                                           
-                Swi::RSisRegistryEntry augEntry;  
-                
-                error = augEntry.OpenL( 
-                      sisRegSession, 
-                      *augPackages[augInd] );
-                FLOG_1( _L("SisxUI: Open augm. error = %d"), error );  
-                                                                                            
-                if ( !error )
-                    {
-                    CleanupClosePushL( augEntry );
-                    
-                    RPointerArray<HBufC> augFileArray;                
-                    augEntry.FilesL( augFileArray );                         
-                    CleanupResetAndDestroyPushL( augFileArray );
-                    
-                    // Add file paths to file array.
-                    SearchFilesForDCFL( augFileArray, fileArray );
-        
-                    // augEntry, augFileArray                         
-                    CleanupStack::PopAndDestroy( 2, &augEntry );                                             
-                    }
-                }//for   
-            }
-        // sisFileArray, augPackages
-        CleanupStack::PopAndDestroy( 2, &sisFileArray );  
-        
-        // Ok let's start to register files to DCF server.
-        TInt fileCount = fileArray.Count();  
-        
-        if ( fileCount )
-            {                                       
-            FLOG( _L("SisxUI: Create DCF entry") );
-            CDcfEntry* dcfEntry = CDcfEntry::NewL();    
-            CleanupStack::PushL( dcfEntry );
-            
-            CDcfRep* dcfRep = CDcfRep::NewL();
-            CleanupStack::PushL( dcfRep );    
-            
-            for (index = 0; index < fileCount; index++ )
-                {   
-                TPtr fileBufPtr = fileArray[index]->Des();
-                FLOG_1( _L("SisxUI: DCF SetLocationL with file: %S"), &fileBufPtr );
-                
-                TRAP( error, dcfEntry->SetLocationL( fileBufPtr, 0 ) );                   
-                FLOG_1( _L("SisxUI: SetLocationL err = %d"), error );                
-                // Note UpdateL function needs to be TRAPed. It
-                // does leave if file type is not supported.
-                TRAP( error, dcfRep->UpdateL( dcfEntry ) );                            
-                FLOG_1( _L("SisxUI: UpdateL err = %d"), error );                                                                      
-                }                                               
-            // dcfRep, dcfEntry 
-            CleanupStack::PopAndDestroy( 2 );  
-            }
-        // fileArray
-        CleanupStack::PopAndDestroy( 1, &fileArray ); 
-        // sisRegSession,  sisRegEntry                                                                                           
-        CleanupStack::PopAndDestroy( 2, &sisRegSession );     
-        }                                                      
-    }
-
-
-// -----------------------------------------------------------------------------
-// CSisxUIOperationWatcher::SearchFilesForDCFL
-// This function finds files for DCF server.
-// -----------------------------------------------------------------------------
-// 
-void CSisxUIOperationWatcher::SearchFilesForDCFL( 
-    RPointerArray<HBufC>& aSourceArray,
-    RPointerArray<HBufC>& aTargetArray )
-    {
-    FLOG( _L("SisxUI: SearchFilesForDCFL") );   
-    // Currently we do register only skin files.       
-    // Note for now there is no way to get list from file types
-    // which DCF server will accecpt. PIP package contais
-    // some txt file which specifies files to be registred,
-    // but SisxUI do not have acceess to that file since DRM
-    // has extracts the pip content.
-          
-    TInt fileCount = aSourceArray.Count();                                                 
-    FLOG_1( _L("SisxUI: package file count = %d"), fileCount );   
-            
-    if ( fileCount )
-        {        
-        for ( TInt index = 0; index < fileCount; index++ )
-            {
-            HBufC* tempPath = aSourceArray[index];
-            // Search extension 
-            FLOG( _L("SisxUI: Search extension") ); 
-            if ( tempPath->Match( KSkinExtension ) != KErrNotFound )
-                {
-                // Ok correct file extension found. Alloc memory
-                // because source may be deleted.
-                HBufC* filePath = tempPath->AllocL();
-                aTargetArray.Append( filePath );
-#ifdef _DEBUG
-                TPtr tempPtr = filePath->Des();                                                           
-                FLOG_1( _L("SisxUI: Add file to array: %S"), &tempPtr );
-#endif                                
-                } 
-            }
-        }    
-    }
-
-//  End of File