diff -r 000000000000 -r 2e3d3ce01487 appfw/viewserver/inc/VWSERVER.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appfw/viewserver/inc/VWSERVER.H Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,160 @@ +// Copyright (c) 1999-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: +// + + +#ifndef __VWSERVER_H__ +#define __VWSERVER_H__ + +#include +#include + +#include "VWSAPPST.H" +#include "VWSDEF.H" +#include "VWSPRIV.H" +#include "VWSDEBUG.H" +#include +#include +#include +#include +// +// Forward declarations. +// + +class CVwsLog; +class CVwsServer; +class CVwsSession; +class CVwsEventQueue; +class CVwsWServSessionHandler; +class CVwsWServEventHandler; +class CVwsWServRedrawer; +class MVwsViewAdditionObserver; +class MVwsDeactivationObserver; +class MVwsActivationObserver; +class MVwsSessionObserver; +class CVwsServerEvent; +class CVwsClientMessage; + + +/** + * The CVwsServer class implements the view server. + */ +class CVwsServer : public CPolicyServer + { +public: + IMPORT_C static CVwsServer* NewL(MVwsAppStarter& aAppStarter); +public: + IMPORT_C ~CVwsServer(); +public: //from CServer2 + virtual CSession2* NewSessionL(const TVersion& aVersion,const RMessage2& aMessage) const; +public: + TName ClientName() const; + void SetSystemDefaultViewL(TInt aMode,const TVwsViewId& aViewId); + void GetSystemDefaultView(TVwsViewId& aViewId); + void ActivateViewL(const TVwsViewId& aViewId,CVwsClientMessage* aClientMessage,const RMessage2& aMessage,const CVwsSession& aSession,TVwsCompleteRequest aCompleteRequest); + void ActivateViewL(const TVwsViewId& aViewId,CVwsClientMessage* aClientMessage,const RMessage2& aMessage,const TThreadId& aClientThreadId,TVwsCompleteRequest aCompleteRequest); + CVwsSession* SessionByUid(const TUid& aAppUid); + CVwsSession* SessionByThreadId(const TThreadId& aThreadId); + CVwsSession* SessionByThreadIdAndAppUid(const TThreadId& aThreadId,const TUid& aAppUid); + CVwsSession* ActiveViewSession(); + TVwsViewId ActiveView(); + void SetActiveView(const TThreadId& aThreadId,const TVwsViewId& aViewId); + void ClearActiveView(); + void SetViewAdditionObserver(MVwsViewAdditionObserver* aViewAdditionObserver); + void HandleScreenDeviceChangedL(); + TInt StartApp(const TUid& aAppUid,TThreadId& aThreadId); + TInt CheckViewExists(const TThreadId& aThreadId,const TVwsViewId& aViewId); + TBool IsViewActive(const TVwsViewId& aViewId); + void RequestDeactivateActiveViewL(const RMessage2& aMessage,const CVwsSession& aSession,TVwsCompleteRequest aCompleteRequest); + void RequestAppStartL(const RMessage2& aMessage,const TUid& aAppToStart); + void HandleDeactivation(const TVwsViewId& aDeactivatedViewId, const TVwsViewId& aActivatedViewId); + void HandleActivation(const TVwsViewId& aActivatedViewId, const TVwsViewId& ViewIdToBeDeactivated); + void MakeInterceptingWindowVisible(); + void MakeInterceptingWindowInvisible(); + void MakeInterceptingWindowVisibleAndUpdateScreen(); + TInt ScreenMode(); + void HandleSessionViewAddition(const TVwsViewId& aViewId, const TThreadId& aNewViewClientThreadId); + TBool IsSystemDefaultView(const TVwsViewId& aViewId); + void HandleSessionRemoval(const TThreadId& aThreadId); + void SetClientRequestTimeOut(const TTimeIntervalMicroSeconds32& aDuration); + void SetServerEventTimeOut(const TTimeIntervalMicroSeconds32& aDuration); + void HandleLastServerEventOnQueue(); + void HandleForegroundTaskChange(); + void EnableServerEventTimeOut(TBool aEnable); + inline TBool IsServerEventTimeOutEnabled() const; + void PanicClient(TInt aPanic) const; + void GetPriorityForActiveObjectL(TInt& aPriority); + void EnableServerBlankScreen(TBool aEnable); + void SetCrossCheckUid(const RMessage2& aMessage); + TUid CrossCheckUid() const; + void SendCrossCheckToLauncherL(RWsSession& aWsSession, TInt aFgAppWgId, const TVwsViewId& aActiveView); + void KickStartEventQ(); + void SetWindowBackgroundColor(const RMessage2& aMessage); + void GetCurrentActiveViewId(TVwsViewId& aActiveViewId); + TBool IsAppInForeground(); + TBool InitializationFinished() const; + TInt IsPriorityBoostBeforePanicEnabled() const; + void HandleInitializationFinished(); + void BoostPriority(CVwsSession* aClient); +private: + CVwsServer(TInt aPriority,MVwsAppStarter& aAppStarter); + void ConstructL(); + void CrossCheckForegroundTask(); + TCustomResult CustomSecurityCheckL(const RMessage2& aMsg, TInt& aAction, TSecurityInfo& aMissing); +private: + MVwsAppStarter& iAppStarter; + CVwsWServSessionHandler* iWServSessionHandler; + CArrayFixFlat iSystemDefaultViewIdArray; + CVwsEventQueue* iEventQueue; + MVwsViewAdditionObserver* iViewAdditionObserver; + TTimeIntervalMicroSeconds32 iClientRequestTimeOut; + TTimeIntervalMicroSeconds32 iServerEventTimeOut; + TBool iForegroundChangeWhileEventsOutstanding; + TInt iIsServerEventTimeOutDisabled; +#ifdef __DO_LOGGING__ + TInt iNoActivationRequests; +#endif + TInt iPrioritySet; + TBool iEnableServerBlankScreen; + TUid iCrossCheckUid; + TInt iEnableBoostAppPriorityBeforePanic; + TBool iInitializationFinished; + }; + +NONSHARABLE_CLASS (CVwsStartupAware) : public CActive + { +public: + CVwsStartupAware(CVwsServer& aServer); + ~CVwsStartupAware(); + TInt Start(); + +private: + void DoCancel(); + void RunL(); + +private: + CVwsServer& iServer; + RSsmStateAwareSession iStateAwareSession; + }; + +// +// Inlines +// + +inline TBool CVwsServer::IsServerEventTimeOutEnabled() const + { + return (iIsServerEventTimeOutDisabled ? EFalse : ETrue); + } + +#endif