diff -r 000000000000 -r 2e3d3ce01487 appfw/viewserver/inc/VWSPRIV.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/appfw/viewserver/inc/VWSPRIV.H Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,199 @@ +// 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 __VWSPRIV_H__ +#define __VWSPRIV_H__ + +#include +#include + +#include "VWSDEF.H" + +#if defined(_DEBUG) +# if defined(ASSERT) +# undef ASSERT +# endif +// Redefine assert to be a little more useful to us, i.e. to include file & line number +# define __ASSERT_FILE__(s) _LIT(KPanicFileName,s) +# define __ASSERT_PANIC__(l) User::Panic(KPanicFileName().Right(12),l) +# define ASSERT(x) { __ASSERT_FILE__(__FILE__); __ASSERT_DEBUG(x, __ASSERT_PANIC__(__LINE__) ); } +#endif + +// +// Constants. +// + + +_LIT(KViewServerName,"!ViewServer"); +_LIT(KViewServerSemaphore,"ViewServerSemaphore"); + +const TUint KVwsMajorVersionNumber=0; +const TUint KVwsMinorVersionNumber=1; +const TUint KVwsBuildVersionNumber=1; + + +// +// Panic codes. +// + +enum TVwsServerPanic + { + EVwsServerCreate=1, + EVwsServerStart, + EVwsBadRequest, + EVwsBadDescriptor, + EVwsMainSchedulerError, + EVwsViewNotFound, + EVwsInvalidViewUid, + EVwsCustomMessageNotCollected, + EVwsViewActive, + EVwsViewEventRequestAlreadyPending, + EVwsViewActivationEventTimeOut, + EVwsNoClientMessage, + EVwsInvalidScreenMode, + EVwsViewDeactivationEventTimeOut //A view has taken too long to complete its implementation of MCoeView::ViewDeactivated() + }; + +GLREF_C void PanicServer(TVwsServerPanic aPanic); + +enum TVwsRanges + { + EFirstUnrestrictedOpcodeInVws, + EFirstOpcodeNeedingCustomCheckInVws=100, + EFirstOpcodeNeedingSecureIdInVws=101, + EFirstOpCodeNeedingPowerMgmt=110, + }; +// +// Request opcodes. +// + +enum TVwsRequestOpcode + { + //No Capability requirement + EVwsFirst=EFirstUnrestrictedOpcodeInVws, + EVwsCreate, + EVwsAddView, + EVwsRemoveView, + EVwsRequestViewEvent, + EVwsRequestViewEventCancel, + EVwsActivateView, + EVwsRequestCustomMessage, + EVwsStartApp, + EVwsDeactivateActiveView, + EVwsNotifyNextDeactivation, + EVwsNotifyNextActivation, + EVwsCreateActivateViewEvent, + EVwsCreateDeactivateViewEvent, + EVwsGetSystemDefaultView, + EVwsCheckSourceOfViewSwitch, + EVwsAsynchronousMessageForServerToPanicClientWith, + EVwsSetProtected, + EVwsSetCrossCheckUid, + EVwsDeactivateActiveViewIfOwnerMatch, + EVwsPriority, + EVwsSetWindowBackgroundColor, + EVwsCurrentActiveViewId, + //Custom Check + EVwsSetSystemDefaultView=EFirstOpcodeNeedingCustomCheckInVws, + //SID of Eiksrvs + EVwsSetClientRequestTimeOut=EFirstOpcodeNeedingSecureIdInVws, + EVwsSetServerEventTimeOut, + EVwsEnableServerEventTimeOut, + EVwsEnableServerBlankScreen, + //PowerMgmt capability check + EVwsClose=EFirstOpCodeNeedingPowerMgmt, + // End Marker no Capability + EVwsFirstUnusedOpcode + }; + +enum TVwsCompleteRequest + { + ECompleteRequest, + EDoNotCompleteRequest + }; + +/** + * The RVwsSession class implements a client session connection to the view server. + */ +class RVwsSession : public RSessionBase + { +public: + RVwsSession(); + TInt Connect(); + TVersion Version() const; + TInt Shutdown() const; + TInt AddView(const TVwsViewId& aViewId) const; + TInt SetSystemDefaultView(const TVwsViewId& aViewId,TInt aMode) const; + TInt GetSystemDefaultView(TVwsViewId& aViewId); + TInt RemoveView(const TVwsViewId& aViewId) const; + void RequestViewEvent(TVwsViewEventBuf& aViewEventBuf,TInt aLastError,TRequestStatus& aStatus) const; + void RequestViewEvent(TVwsViewEventBuf& aViewEventBuf,TInt aLastError,const TVwsViewIdAndMessageBuf& aViewActivationBuf,const TDesC8& aMessage,TRequestStatus& aStatus) const; + TInt RequestViewEventCancel() const; + void ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage,TRequestStatus& aStatus, TInt aCustomControl); + TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage, TInt aCustomControl); + TInt RequestCustomMessage(TDes8& aMessageBuf) const; + TInt StartApp(TUid aAppToStart) const; + void DeactivateActiveView(TRequestStatus& aStatus) const; + TInt DeactivateActiveView() const; + void DeactivateActiveViewIfOwnerMatch(TRequestStatus& aStatus) const; + TInt DeactivateActiveViewIfOwnerMatch() const; + TInt NotifyNextDeactivation(const TVwsViewId& aViewId) const; + TInt NotifyNextActivation(const TVwsViewId& aViewId) const; + TInt SetClientRequestTimeOut(TTimeIntervalMicroSeconds32 aDuration) const; + TInt SetServerEventTimeOut(TTimeIntervalMicroSeconds32 aDuration) const; + TInt EnableServerEventTimeOut(TBool aEnable) const; + TInt CheckSourceOfViewSwitch(TBool& aResult,const TSecurityPolicy& aSecurityPolicy,const char* aDiagnostic) const; + TInt GetPriority(); + TInt EnableServerBlankScreen(TBool aEnable) const; + TInt SetProtected(TBool aEnable) const; + TInt SetCrossCheckUid(const TUid& aCrossCheckUid); + TInt SetWindowBackgroundColor(const TRgb& aBgColor); + TInt GetCurrentActiveViewInSystem(TVwsViewId& aActiveViewId); +private: + TPckgBuf iActivateViewId; + TPtrC8 iCustomMessage; + TRequestStatus iPanicStatus; + }; + + +class MVwsSessionWrapperObserver; + +/** + * The CVwsEventHandler class actively requests view events from the client session and + * forwards these events to any session handler observer. + */ +class CVwsSessionEventHandler : public CActive + { +public: + CVwsSessionEventHandler(MVwsSessionWrapperObserver& aObserver,RVwsSession& aSession,TInt aPriority); + ~CVwsSessionEventHandler(); + void Queue(); + void OnNextQueueActivateView(const TVwsViewIdAndMessage& aViewIdAndMessage); + void DoRunL(); +private: // From CActive. + void RunL(); + void DoCancel(); +private: + MVwsSessionWrapperObserver& iObserver; + RVwsSession& iVwsSession; + TVwsViewEventBuf iViewEventBuf; + TVwsViewIdAndMessageBuf iViewActivationBuf; + TPtrC8 iCustomMessage; + TBool iDoActivationNextQueue; + TInt iLastError; + }; + +#endif