installationservices/swcomponentregistry/source/server/scrsubsession.cpp
branchRCL_3
changeset 66 8b7f4e561641
parent 65 7333d7932ef7
child 70 e8965914fac7
--- a/installationservices/swcomponentregistry/source/server/scrsubsession.cpp	Tue Aug 31 15:21:33 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,640 +0,0 @@
-/*
-* Copyright (c) 2008-2010 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "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: 
-* Implements CScrSubsession. See class and function definitions for more information.
-*
-*/
-
-
-/**
- @file
-*/
-
-#include "scrsubsession.h"
-#include "scrrequestimpl.h"
-#include "scrdatabase.h"
-#include <scs/ipcstream.h>
-#include <scs/cleanuputils.h>
-
-using namespace Usif;
-
-/////////////////
-// CScrSubsession
-/////////////////
-
-CScrSubsession::CScrSubsession(CScrSession &aSession)
-/**
-	This constructor is protected and prevents direct instantiation.
- */
-	: CScsSubsession(aSession)
-	{
-	iSession = static_cast<CScrSession *>(&aSession);
-	iServer = static_cast<CScrServer *>(&iSession->iServer);
-	}
-
-void CScrSubsession::ConstructL()
-/**
-	Second-phase constructor.
- */
-	{
-	iServer->AddSubsessionOwnerL(iSession);
-	}
-
-CScrSubsession::~CScrSubsession()
-/**
- 	Virtual destructor. Closes the database session handle.
- */
-	{
-	iServer->RemoveSubsessionOwner(iSession);
-	delete iStatement;
-	}
-	
-///////////////////////////
-// CCompViewSubsessionContext
-///////////////////////////	
-	
-CCompViewSubsessionContext::~CCompViewSubsessionContext()
-	{
-	delete iLastSoftwareTypeName;
-	iComponentFilterSuperset.Close();
-	}
-	
-///////////////////////////
-// CComponentViewSubsession
-///////////////////////////
-
-CComponentViewSubsession* CComponentViewSubsession::NewL(CScrSession &aSession)
-/**
-	Factory function allocates a new instance of CComponentViewSubsession.
-	
-	Note that CComponentViewSubsession derives from CObject and therefore it MUST NOT be deleted directly,
-	instead it should be closed.
-	 
-	@return					The newly created instance of CComponentViewSubsession.
-							Ownership is transferred to the caller.
- */
-	{
-	CComponentViewSubsession* self = new(ELeave) CComponentViewSubsession(aSession);
-	CleanupClosePushL(*self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-CComponentViewSubsession::CComponentViewSubsession(CScrSession &aSession)
-/**
-	This constructor is private and prevents direct instantiation. It provides
-	a single point of definition from which to call the superclass c'tor.
- */
-	:	CScrSubsession(aSession)
-	{	
-	}
-
-void CComponentViewSubsession::ConstructL()
-/**
-	Second-phase constructor.
- */
-	{
-	iSubsessionContext = new (ELeave) CCompViewSubsessionContext;		
-	CScrSubsession::ConstructL();
-	}
-
-CComponentViewSubsession::~CComponentViewSubsession()
-/**
-	Destructor for the subsession object.
- */
-	{
-	delete iFilter;
-	delete iComponentEntry;
-	iComponentEntryList.ResetAndDestroy();
-	delete iSubsessionContext;
-	}
-
-TBool CComponentViewSubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
-/**
-	Implement CComponentViewSubsession by handling the supplied message.
-
-	@param	aFunction		Function identifier without SCS code.
-	@param	aMessage		Standard server-side handle to message.
-	@return ETrue means complete client request now. EFalse for asynchronous tasks.
- */
-	{
-	TScrSubSessionFunction f = static_cast<TScrSubSessionFunction>(aFunction);
-	
-	switch (f)
-		{
-		case EOpenComponentsView:
-			{
-			DeleteObjectZ(iFilter);
-			iFilter = iServer->RequestImpL()->ReadComponentFilterL(aMessage);
-			DeleteObjectZ(iStatement);
-			iStatement = iServer->RequestImpL()->OpenComponentViewL(*iFilter, iSubsessionContext->iComponentFilterSuperset, iSubsessionContext->iFilterSupersetInUse);
-			break;
-			}
-		case EGetNextComponentSize:
-			iServer->RequestImpL()->NextComponentSizeL(aMessage, iStatement, iFilter, iComponentEntry, this->iSubsessionContext);
-			break;
-		case EGetNextComponentData:
-			iServer->RequestImpL()->NextComponentDataL(aMessage, iComponentEntry);
-			break;
-		case EGetNextComponentSetSize:
-			iServer->RequestImpL()->NextComponentSetSizeL(aMessage, iStatement, iFilter, iComponentEntryList, this->iSubsessionContext);
-			break;
-		case EGetNextComponentSetData:
-			iServer->RequestImpL()->NextComponentSetDataL(aMessage, iComponentEntryList);
-			break;
-		default:
-			User::Leave(KErrNotSupported);
-			break;
-		}
-	return ETrue;
-	}
-
-
-///////////////////////
-// CFileListSubsession
-///////////////////////
-
-CFileListSubsession* CFileListSubsession::NewL(CScrSession &aSession)
-/**
-	Factory function allocates a new instance of CFileListSubsession.
-	
-	Note that CFileListSubsession derives from CObject and therefore it MUST NOT be deleted directly,
-	instead it should be closed.
-	 
-	@return					The newly created instance of CFileListSubsession.
-							Ownership is transferred to the caller.
- */
-	{
-	CFileListSubsession* self = new(ELeave) CFileListSubsession(aSession);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-CFileListSubsession::CFileListSubsession(CScrSession &aSession)
-/**
-	This constructor is private and prevents direct instantiation. It provides
-	a single point of definition from which to call the superclass c'tor.
- */
-	:	CScrSubsession(aSession)
-	{
-	// empty.
-	}
-
-CFileListSubsession::~CFileListSubsession()
-/**
-	Destructor for the subsession object.
- */
-	{		
-	delete iFilePath;
-	iFileList.Close();
-	}
-
-TBool CFileListSubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
-/**
-	Implement CFileListSubsession by handling the supplied message.
-
-	@param	aFunction		Function identifier without SCS code.
-	@param	aMessage		Standard server-side handle to message.
-	@return ETrue means complete client request now. EFalse for asynchronous tasks.
- */
-	{
-	TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
-	
-	switch (f)
-		{
-		case EOpenFileList:
-			{
-			DeleteObjectZ(iStatement);
-			iStatement = iServer->RequestImpL()->OpenFileListL(aMessage);
-			break;
-			}
-		case EGetNextFileSize:
-			iServer->RequestImpL()->NextFileSizeL(aMessage, iStatement, iFilePath);
-			break;
-		case EGetNextFileData:
-			iServer->RequestImpL()->NextFileDataL(aMessage, iFilePath);
-			break;
-		case EGetNextFileSetSize:
-			iServer->RequestImpL()->NextFileSetSizeL(aMessage, iStatement, iFileList);
-			break;
-		case EGetNextFileSetData:
-			iServer->RequestImpL()->NextFileSetDataL(aMessage, iFileList);
-			break;
-		default:
-			User::Leave(KErrNotSupported);
-			break;
-		}
-	return ETrue;
-	}
-
-//////////////////////////////
-///CCompViewSubsessionContext
-/////////////////////////////
-
-CAppInfoViewSubsessionContext::~CAppInfoViewSubsessionContext()
-    {
-    iApps.Close();
-    }
-
-/////////////////////////
-///CAppInfoViewSubsession
-////////////////////////
-
-CAppInfoViewSubsession* CAppInfoViewSubsession::NewL(CScrSession& aSession)
-    {
-    CAppInfoViewSubsession* self = new(ELeave) CAppInfoViewSubsession(aSession);
-    CleanupClosePushL(*self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-
-CAppInfoViewSubsession::CAppInfoViewSubsession(CScrSession &aSession) : CScrSubsession(aSession)
-    {   
-    }
-
-void CAppInfoViewSubsession::ConstructL()
-/**
-    Second-phase constructor.
- */
-    {
-    iSubsessionContext = new (ELeave) CAppInfoViewSubsessionContext;       
-    CScrSubsession::ConstructL();
-    }
-
-CAppInfoViewSubsession::~CAppInfoViewSubsession()
-/**
-    Destructor for the subsession object.
- */
-    {
-    delete iAppInfoFilter;   
-    if(NULL != iApaAppInfo)
-        delete iApaAppInfo;
-    delete iSubsessionContext;
-    }
-
-TBool CAppInfoViewSubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
-/**
-    Implement CFileListSubsession by handling the supplied message.
-
-    @param  aFunction       Function identifier without SCS code.
-    @param  aMessage        Standard server-side handle to message.
-    @return ETrue means complete client request now. EFalse for asynchronous tasks.
- */
-    {
-    TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
-    
-    switch (f)
-        {
-        case EOpenAppInfoView:
-            {
-            DeleteObjectZ(iAppInfoFilter);
-            iAppInfoFilter = iServer->RequestImpL()->ReadAppInfoFilterL(aMessage);
-            DeleteObjectZ(iStatement);
-            iSubsessionContext->iLocale = TLanguage(aMessage.Int1());
-    
-            if(iSubsessionContext->iLocale == KUnspecifiedLocale)
-                {
-                iSubsessionContext->iLocale = User::Language();
-                }
-            iSubsessionContext->iAppInfoIndex = 0;
-            iServer->RequestImpL()->OpenAppInfoViewL(*iAppInfoFilter, this->iSubsessionContext);
-            break;
-            }
-        case EGetNextAppInfoSize:
-             iServer->RequestImpL()->NextAppInfoSizeL(aMessage, iApaAppInfo, this->iSubsessionContext);
-             break;
-        case EGetNextAppInfoData:
-             iServer->RequestImpL()->NextAppInfoDataL(aMessage, iApaAppInfo);
-             break;
-   
-        default:
-            User::Leave(KErrNotSupported);
-            break;
-        }
-    return ETrue;
-    }
-
-///////////////////////////////////////////
-///CApplicationRegInfoSubsessionContext
-//////////////////////////////////////////
-CApplicationRegInfoSubsessionContext::~CApplicationRegInfoSubsessionContext()
-    {
-    delete iAppServiceInfoFilter;   
-    iServiceInfoArray.ResetAndDestroy(); 
-    }
-
-/////////////////////////////////
-///CApplicationRegInfoSubsession
-////////////////////////////////
-CApplicationRegInfoSubsession* CApplicationRegInfoSubsession::NewL(CScrSession &aSession)
-/**
-    Factory function allocates a new instance of CAppInfoQuerySubsession.
-    
-    Note that CAppInfoQuerySubsession derives from CObject and therefore it MUST NOT be deleted directly,
-    instead it should be closed.
-     
-    @return                 The newly created instance of CAppInfoQuerySubsession.
-                            Ownership is transferred to the caller.
- */
-    {
-    CApplicationRegInfoSubsession* self = new(ELeave) CApplicationRegInfoSubsession(aSession);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-CApplicationRegInfoSubsession::CApplicationRegInfoSubsession(CScrSession &aSession)
-/**
-    This constructor is private and prevents direct instantiation. It provides
-    a single point of definition from which to call the superclass c'tor.
- */
-    :   CScrSubsession(aSession)
-    {
-    // empty.
-    }
-
-void CApplicationRegInfoSubsession::ConstructL()
-/**
-    Second-phase constructor.
- */
-    {
-    iSubsessionContext = new (ELeave) CApplicationRegInfoSubsessionContext;       
-    CScrSubsession::ConstructL();
-    }
-
-CApplicationRegInfoSubsession::~CApplicationRegInfoSubsession()
-/**
-    Destructor for the subsession object.
- */
-    {       
-    delete iSubsessionContext;
-    }
-
-TBool CApplicationRegInfoSubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
-/**
-    Implement CAppInfoQuerySubsession by handling the supplied message.
-
-    @param  aFunction       Function identifier without SCS code.
-    @param  aMessage        Standard server-side handle to message.
-    @return ETrue means complete client request now. EFalse for asynchronous tasks.
- */
-    {
-    TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
-    
-    switch (f)
-        {        
-        case EGetAppForDataTypeAndService:
-            iServer->RequestImpL()->GetAppForDataTypeAndServiceL(aMessage);
-            break;
-        case EGetAppForDataType:
-            iServer->RequestImpL()->GetAppForDataTypeL(aMessage);
-            break;                
-        case EGetAppServiceInfoSize:
-            iServer->RequestImpL()->GetAppServiceInfoSizeL(aMessage, this->iSubsessionContext);
-            break;
-        case EGetAppServiceInfoData:
-            iServer->RequestImpL()->GetAppServiceInfoDataL(aMessage, this->iSubsessionContext);
-            break;
-        case EGetApplicationInfo:
-            iServer->RequestImpL()->GetApplicationInfoL(aMessage);
-            break;
-        default:
-            User::Leave(KErrNotSupported);
-            break;
-        }
-    return ETrue;
-    }
-
-///////////////////////////////////////////
-///CRegInfoForApplicationSubsessionContext
-//////////////////////////////////////////
-CRegInfoForApplicationSubsessionContext::~CRegInfoForApplicationSubsessionContext()
-    {
-    iViewInfoArray.ResetAndDestroy(); 
-    iServiceUidList.Close(); 
-    iAppOwnedFiles.ResetAndDestroy();
-    }
-
-/////////////////////////////////////
-///CRegInfoForApplicationSubsession
-////////////////////////////////////
-CRegInfoForApplicationSubsession* CRegInfoForApplicationSubsession::NewL(CScrSession &aSession)
-/**
-    Factory function allocates a new instance of CAppInfoQueryContextSubsession.
-    
-    Note that CAppInfoQueryContextSubsession derives from CObject and therefore it MUST NOT be deleted directly,
-    instead it should be closed.
-     
-    @return                 The newly created instance of CAppInfoQueryContextSubsession.
-                            Ownership is transferred to the caller.
- */
-    {
-    CRegInfoForApplicationSubsession* self = new(ELeave) CRegInfoForApplicationSubsession(aSession);
-    CleanupStack::PushL(self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-CRegInfoForApplicationSubsession::CRegInfoForApplicationSubsession(CScrSession &aSession)
-/**
-    This constructor is private and prevents direct instantiation. It provides
-    a single point of definition from which to call the superclass c'tor.
- */
-    :   CScrSubsession(aSession)
-    {
-    // empty.
-    }
-
-void CRegInfoForApplicationSubsession::ConstructL()
-/**
-    Second-phase constructor.
- */
-    {
-    iSubsessionContext = new (ELeave) CRegInfoForApplicationSubsessionContext;       
-    CScrSubsession::ConstructL();
-    }
-
-CRegInfoForApplicationSubsession::~CRegInfoForApplicationSubsession()
-/**
-    Destructor for the subsession object.
- */
-    {   
-    delete iSubsessionContext;
-    }
-
-TBool CRegInfoForApplicationSubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
-/**
-    Implement CAppInfoQueryContextSubsession by handling the supplied message.
-
-    @param  aFunction       Function identifier without SCS code.
-    @param  aMessage        Standard server-side handle to message.
-    @return ETrue means complete client request now. EFalse for asynchronous tasks.
- */
-    {
-    TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
-    
-    switch (f)
-        {        
-        case ESetAppUid:
-            {
-            TUid appUid = TUid::Uid(aMessage.Int0());
-            if(!(iServer->RequestImpL()->CheckIfAppUidExistsL(appUid)))
-                {
-                User::Leave(KErrNotFound);
-                }
-            iAppUid = appUid;
-            iServer->RequestImpL()->SetLocaleForRegInfoForApplicationSubsessionContextL(aMessage, this->iSubsessionContext);
-            break;
-            }
-        case EGetServiceUidSize:
-            iServer->RequestImpL()->GetServiceUidSizeL(aMessage,iAppUid, this->iSubsessionContext);
-            break;
-        case EGetServiceUidList:
-            iServer->RequestImpL()->GetServiceUidDataL(aMessage, this->iSubsessionContext);
-            break;
-        case EGetApplicationLanguage:
-            iServer->RequestImpL()->GetApplicationLanguageL(aMessage,this->iSubsessionContext);
-            break;
-        case EGetDefaultScreenNumber:
-            iServer->RequestImpL()->GetDefaultScreenNumberL(aMessage,iAppUid);           
-            break;
-        case EGetNumberOfOwnDefinedIcons:
-            iServer->RequestImpL()->GetNumberOfOwnDefinedIconsL(aMessage,iAppUid,this->iSubsessionContext);
-            break;   
-		case EGetViewSize:
-            iServer->RequestImpL()->GetViewSizeL(aMessage, iAppUid, this->iSubsessionContext);
-            break;
-        case EGetViewData:
-            iServer->RequestImpL()->GetViewDataL(aMessage, this->iSubsessionContext);
-            break;
-        case EGetAppOwnedFilesSize:
-            iServer->RequestImpL()->GetAppOwnedFilesSizeL(aMessage, iAppUid, this->iSubsessionContext);
-            break;
-        case EGetAppOwnedFilesData:
-            iServer->RequestImpL()->GetAppOwnedFilesDataL(aMessage, this->iSubsessionContext);
-            break;
-        case EGetAppCharacteristics:
-            iServer->RequestImpL()->GetAppCharacteristicsL(aMessage, iAppUid);
-            break;
-        case EGetAppIconForFileName:
-            iServer->RequestImpL()->GetAppIconForFileNameL(aMessage, iAppUid, this->iSubsessionContext);
-            break;
-        case EGetAppViewIconFileName:
-            iServer->RequestImpL()->GetAppViewIconFileNameL(aMessage, iAppUid, this->iSubsessionContext);
-            break;
-        default:
-            User::Leave(KErrNotSupported);
-            break;
-        }
-    return ETrue;
-    }
-
-
-////////////////////////////////////////////
-///CAppRegistrySubsessionContext
-///////////////////////////////////////////
-
-CAppRegistrySubsessionContext::~CAppRegistrySubsessionContext()
-    {
-    iAppUids.Close();
-    }
-
-////////////////////////////
-///CAppRegistrySubsession
-////////////////////////////
-
-CAppRegistrySubsession* CAppRegistrySubsession::NewL(CScrSession& aSession)
-    {
-    CAppRegistrySubsession* self = new(ELeave) CAppRegistrySubsession(aSession);
-    CleanupClosePushL(*self);
-    self->ConstructL();
-    CleanupStack::Pop(self);
-    return self;
-    }
-
-
-CAppRegistrySubsession::CAppRegistrySubsession(CScrSession &aSession)
-/**
-    This constructor is private and prevents direct instantiation. It provides
-    a single point of definition from which to call the superclass c'tor.
- */
-    :   CScrSubsession(aSession)
-    {   
-    }
-
-void CAppRegistrySubsession::ConstructL()
-/**
-    Second-phase constructor.
- */
-    {
-    iSubsessionContext = new (ELeave) CAppRegistrySubsessionContext;       
-    CScrSubsession::ConstructL();
-    }
-
-CAppRegistrySubsession::~CAppRegistrySubsession()
-/**
-    Destructor for the subsession object.
- */
-    {
-    if(NULL != iApplicationRegistrationInfo)
-        delete iApplicationRegistrationInfo;
-    delete iSubsessionContext;
-    }
-
-TBool CAppRegistrySubsession::DoServiceL(TInt aFunction, const RMessage2& aMessage)
-/**
-    Implement CFileListSubsession by handling the supplied message.
-
-    @param  aFunction       Function identifier without SCS code.
-    @param  aMessage        Standard server-side handle to message.
-    @return ETrue means complete client request now. EFalse for asynchronous tasks.
- */
-    {
-    TScrSessionFunction f = static_cast<TScrSessionFunction>(aFunction);
-    
-    switch (f)
-        {
-        case EOpenApplicationRegistrationInfoView:
-            {
-            iSubsessionContext->iAppRegIndex = 0;
-            iSubsessionContext->iAppUids.Reset();
-            iServer->RequestImpL()->OpenApplicationRegistrationViewL(aMessage,this->iSubsessionContext);            
-            break;
-            }
-        case EGetApplicationRegistrationSize:
-             iServer->RequestImpL()->NextApplicationRegistrationInfoSizeL(aMessage, iApplicationRegistrationInfo, this->iSubsessionContext);
-             break;
-        case EGetApplicationRegistrationData:
-             iServer->RequestImpL()->NextApplicationRegistrationInfoDataL(aMessage, iApplicationRegistrationInfo);
-             break;
-        case EOpenApplicationRegistrationInfoForAppUidsView:
-            {
-            iSubsessionContext->iAppRegIndex = 0;
-            iSubsessionContext->iAppUids.Reset();
-            iServer->RequestImpL()->OpenApplicationRegistrationForAppUidsViewL(aMessage,this->iSubsessionContext);            
-            break;
-            }
-        default:
-            User::Leave(KErrNotSupported);
-            break;
-        }
-    return ETrue;
-    }