diff -r bf7481649c98 -r 7f25ef56562d windowing/windowserver/test/tlib/testbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/test/tlib/testbase.h Wed Jun 23 19:41:15 2010 +0300 @@ -0,0 +1,562 @@ +// Copyright (c) 1995-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: +// Base classes definitions used for building window server test code +// +// + +#ifndef __TESTBASE_H__ +#define __TESTBASE_H__ + +enum TTlibActivePriorities + { + ETlibRedrawActivePriority=-10, + ETlibWsEventActivePriority=0, + }; + +const TInt KDefaultScreen = 0; + +//enum {ENullWsHandle=0xFFFFFFFF}; // Events delivered to this handle are thrown away +const TUint32 ENullWsHandle=0xFFFFFFFF; // Events delivered to this handle are thrown away + +typedef TBuf TWindowTitle; +typedef TBuf<0x100> TWinCommand; + +const TUid KUidWServSecurityTesting={0x10205152}; +enum TWServSecTest + { + EWServSecTestBufferSecurity + }; + +class CTClient; // Forward reference +class CTWindowGroup; +class CTBaseWin; +class CTWin; + +typedef CTClient *(*TCreateClientFunc)(); + +IMPORT_C TBool CheckBlankWindow(TRect aArea,TRgb aColor,const CWsScreenDevice* aScreen); + +class CTWinBase : public CBase + { +protected: +public: + IMPORT_C CTWinBase(TInt aType); + IMPORT_C virtual TPoint Position() const; + IMPORT_C virtual void PointerEnter(const TTime &aTime); + IMPORT_C virtual void PointerExit(const TTime &aTime); + IMPORT_C virtual void PointerBufferReady(const TTime &aTime); + IMPORT_C virtual void PointerL(const TPointerEvent &aPointer,const TTime &aTime); + IMPORT_C virtual void SwitchOn(const TTime &aTime); + IMPORT_C virtual void ModifiersChanged(const TModifiersChangedEvent &aModifiersChanged ,const TTime &aTime); + IMPORT_C virtual void ErrorMessage(const TWsErrorMessage &aErrorMessage, const TTime &aTime); + IMPORT_C virtual void SetVisible(TBool aState); + IMPORT_C CTWinBase *Parent() const; + IMPORT_C CTWinBase *NextSibling() const; + IMPORT_C CTWinBase *PrevSibling() const; + IMPORT_C CTBaseWin *Child() const; + IMPORT_C virtual void AdjustOrdinal(TInt adjust); + IMPORT_C virtual void AdjustShadow(TInt aAdjust); + IMPORT_C virtual TInt SubType(); +// Pure virtual definitions + virtual void WinKeyL(const TKeyEvent &aKey,const TTime &aTime)=0; + virtual TSize Size() const=0; + virtual RWindowTreeNode *WinTreeNode()=0; + virtual const RWindowTreeNode *WinTreeNode() const=0; + IMPORT_C virtual CTClient *Client() const; + virtual CTWindowGroup *Group() const=0; + CTWindowGroup *iOwnerWin; +public: + TInt iType; + __DECLARE_TEST; + }; + +class CTBaseWin : public CTWinBase + { +public: + IMPORT_C CTBaseWin(TInt aType); + IMPORT_C ~CTBaseWin(); + IMPORT_C virtual void ConstructL(CTWinBase &parent); + IMPORT_C virtual void ConstructExtLD(CTWinBase &aParent, const TPoint &aPos, const TSize &aSize); + virtual TInt ConstructWin(const CTWinBase &aWs)=0; + IMPORT_C virtual void InitWin(); + IMPORT_C virtual void PointerL(const TPointerEvent &aPointer,const TTime &aTime); + IMPORT_C virtual void DragDropL(const TPointerEvent &aPointer,const TTime &aTime); + IMPORT_C virtual void RelinquishFocus(); + IMPORT_C void Activate(); + IMPORT_C virtual void AssignGC(CWindowGc &aGc); + IMPORT_C CTBaseWin *Next(); + IMPORT_C CTBaseWin *Prev(); + IMPORT_C virtual void SetExtL(const TPoint &aPos, const TSize &aSize); + IMPORT_C virtual void SetSizeL(const TSize &aSize); + IMPORT_C virtual void SetPos(const TPoint &aPos); + IMPORT_C void SetInitialPos(const TPoint &aPos); + IMPORT_C virtual void SetDefaultExtL(); + IMPORT_C virtual void SetFullScreenExtL(); + IMPORT_C virtual void AdjustSizeL(TInt xMove,TInt yMove,TInt resize); + IMPORT_C virtual TSize Size() const; + IMPORT_C virtual void Draw(); + IMPORT_C void DrawBorder(); +// void FillWindow(TInt inset); + IMPORT_C virtual TPoint Position() const; + IMPORT_C static void Delete(CTBaseWin *aWin); + IMPORT_C void AdjustOrdinal(TInt aAdjust); + IMPORT_C virtual void AdjustShadow(TInt aAdjust); + IMPORT_C void SetVisible(TBool aState); + IMPORT_C RWindowTreeNode *WinTreeNode(); + IMPORT_C const RWindowTreeNode *WinTreeNode() const; + IMPORT_C virtual void WinKeyL(const TKeyEvent &aKey,const TTime &aTime); + IMPORT_C virtual void KeyUpL(const TKeyEvent &aKey,const TTime &aTime); + IMPORT_C virtual void KeyDownL(const TKeyEvent &aKey,const TTime &aTime); + IMPORT_C virtual void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); + IMPORT_C virtual void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc, TDisplayMode *aMode); + IMPORT_C void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc,TBool aVisible); + enum + { + ENoTransparency=0x100 + }; + IMPORT_C virtual void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc, TDisplayMode *aMode,TBool aVisible,TInt aTransparency=ENoTransparency); + IMPORT_C void SetDragRect(const TRect &aRect); + IMPORT_C virtual void Resized(const TSize &aSize); + IMPORT_C virtual void FocusChanged(TBool aState); + IMPORT_C virtual CTWindowGroup *Group() const; + virtual RWindowBase *BaseWin()=0; + virtual const RWindowBase *BaseWin() const=0; + inline CWindowGc *Gc(); +protected: + TSize iSize; + CWindowGc *iGc; // Not owned by the window, just using it + TPoint iPos; + TInt iShadow; + TRect iDragRect; + TBool iDragging; + TPoint iDragPos; + CFbsFont *iFont; + __DECLARE_TEST; + }; + +class CTDrawableWin : public CTBaseWin + { +public: + IMPORT_C CTDrawableWin(TInt aType); + virtual RDrawableWindow *DrawableWin()=0; + virtual const RDrawableWindow *DrawableWin() const=0; + }; + +class CTWin : public CTDrawableWin + { +public: + IMPORT_C CTWin(); + IMPORT_C ~CTWin(); + inline RWindow *Win() const; + IMPORT_C virtual TInt ConstructWin(const CTWinBase &aWs); + IMPORT_C void Invalidate(); + IMPORT_C void Invalidate(const TRect &rect); + IMPORT_C virtual void Redraw(); + IMPORT_C virtual void Redraw(const TRect &aRect); + IMPORT_C void DrawNow(); + IMPORT_C void SetExt(const TPoint &aPos, const TSize &aSize); + IMPORT_C void SetSize(const TSize &aSize); + IMPORT_C void SetDefaultExt(); + IMPORT_C void AdjustSize(TInt xMove,TInt yMove,TInt resize); + IMPORT_C virtual RWindowBase *BaseWin(); + IMPORT_C virtual const RWindowBase *BaseWin() const; + IMPORT_C virtual RDrawableWindow *DrawableWin(); + IMPORT_C virtual const RDrawableWindow *DrawableWin() const; +protected: + RWindow iWin; + __DECLARE_TEST; + }; + +class CTBackedUpWin : public CTDrawableWin + { +public: + IMPORT_C CTBackedUpWin(TDisplayMode aDisplayMode); + IMPORT_C ~CTBackedUpWin(); + IMPORT_C virtual TInt ConstructWin(const CTWinBase &aWs); + IMPORT_C virtual RWindowBase *BaseWin(); + IMPORT_C virtual const RWindowBase *BaseWin() const; + IMPORT_C virtual RDrawableWindow *DrawableWin(); + IMPORT_C virtual const RDrawableWindow *DrawableWin() const; + IMPORT_C RBackedUpWindow *BackedUpWin(); + IMPORT_C const RBackedUpWindow *BackedUpWin() const; +protected: + RBackedUpWindow iWin; + TDisplayMode iDisplayMode; + __DECLARE_TEST; + }; + +class CTTitledWindow : public CTWin + { +public: + IMPORT_C CTTitledWindow(); + IMPORT_C ~CTTitledWindow(); + IMPORT_C void ConstructL(CTWinBase &parent); + IMPORT_C void Draw(); + IMPORT_C void FocusChanged(TBool aState); + IMPORT_C void SetTitle(const TWindowTitle &aTitle); + IMPORT_C void SetColor(TRgb aRgb); + inline TRgb Color(); +private: + IMPORT_C void Resized(const TSize &aSize); +protected: + TWindowTitle iTitle; + TInt iTitleHeight; + TBool iFocus; + TRgb iWinColor; + TRgb iPenColor; + }; + +class CTBlankWindow : public CTBaseWin + { +public: + IMPORT_C CTBlankWindow(); + IMPORT_C ~CTBlankWindow(); + IMPORT_C void ConstructL(CTWinBase &aParent); + IMPORT_C void SetColor(const TRgb &aRgb); + IMPORT_C virtual TInt ConstructWin(const class CTWinBase&); + IMPORT_C virtual const RWindowBase *BaseWin()const; + IMPORT_C virtual RWindowBase *BaseWin(); + inline const RBlankWindow *BlankWin()const; + inline RBlankWindow *BlankWin(); + IMPORT_C void SetExt(const TPoint &aPos, const TSize &aSize); + IMPORT_C void SetSize(const TSize &aSize); +protected: + RBlankWindow iWin; + }; + +class CTWindowGroup : public CTWinBase + { +public: + IMPORT_C CTWindowGroup(CTClient *aClient); + IMPORT_C ~CTWindowGroup(); + IMPORT_C virtual void ConstructL(); + IMPORT_C void WinKeyL(const TKeyEvent &aKey,const TTime &aTime); + IMPORT_C virtual TSize Size() const; + IMPORT_C RWindowTreeNode *WinTreeNode(); + IMPORT_C const RWindowTreeNode *WinTreeNode() const; + inline RWindowGroup *GroupWin(); + IMPORT_C virtual void KeyL(const TKeyEvent &aKey,const TTime &aTime); + IMPORT_C virtual void KeyUpL(const TKeyEvent &aKey,const TTime &aTime); + IMPORT_C virtual void KeyDownL(const TKeyEvent &aKey,const TTime &aTime); + IMPORT_C virtual void PasswordL(const TTime &aTime); + IMPORT_C virtual void MessageReady(const TWsEvent &aTime); + IMPORT_C virtual void ScreenDeviceChanged(); + IMPORT_C virtual void UserEvent(TInt aEventType); + IMPORT_C void SetCurrentWindow(CTBaseWin *aWindow); + IMPORT_C void SetCurrentWindow(CTBaseWin *aWindow,TBool aLocked); + IMPORT_C CTBaseWin *CurWin(void) const; + IMPORT_C void FocusLost(); + IMPORT_C void FocusGained(); + IMPORT_C TBool HasFocus(CTBaseWin *aWin) const; + IMPORT_C virtual CTWindowGroup *Group() const; + IMPORT_C virtual CTClient *Client() const; + IMPORT_C void ClearCurrentWindow(); +protected: + CTClient *iClient; + CTBaseWin *iCurWin; + RWindowGroup iGroupWin; + TBool iLocked; + TBool iFocus; + }; + +inline RWindowGroup *CTWindowGroup::GroupWin() + {return(&iGroupWin);} + +class CTEventBase : public CActive + { +public: + IMPORT_C CTEventBase(RWsSession *aWs, TInt aPriority); + IMPORT_C ~CTEventBase(); + IMPORT_C void Construct(); + void SetCancelFunction(const TCallBack &aCallBack); + virtual void Request()=0; + inline TInt Count() {return iCount;} +protected: + virtual void doRunL()=0; + IMPORT_C void RunL(); + IMPORT_C void CancelHandler(); +protected: + TBool iCancelRequested; + TCallBack iCancelCallBack; + RWsSession *iWs; + TInt iCount; + }; + +class CTRedraw : public CTEventBase + { +public: + IMPORT_C CTRedraw(RWsSession *aWs); + IMPORT_C ~CTRedraw(); + IMPORT_C void Request(); +protected: + IMPORT_C void DoCancel(); + IMPORT_C void doRunL(); + }; + +class TlibWsEvent : public TWsEvent + { +public: + IMPORT_C CTWindowGroup *WindowGroup(); + IMPORT_C CTBaseWin *BaseWin(); + }; + +class CTEvent : public CTEventBase + { +public: + IMPORT_C CTEvent(RWsSession *aWs); + IMPORT_C ~CTEvent(); + IMPORT_C void Request(); + IMPORT_C virtual void LogEvent(const TWsEvent &aEvent); +protected: + IMPORT_C void DoCancel(); + IMPORT_C void doRunL(); + }; + +class CTClient : public CBase + { +public: + IMPORT_C CTClient(); + IMPORT_C ~CTClient(); + IMPORT_C virtual void ConstructL(); + IMPORT_C virtual void ConstructEventHandlerL(); + IMPORT_C void DestroyWindows(); + IMPORT_C TWindowTitle *Title(); + IMPORT_C void ResetFocus(); + IMPORT_C TBool QueueRead(); + IMPORT_C void CancelRead(); + IMPORT_C void CancelRedrawRead(); + IMPORT_C void SetCancelFunction(const TCallBack &aCallBack); + IMPORT_C void SetRedrawCancelFunction(const TCallBack &aCallBack); + IMPORT_C void RequestRedraw(); + IMPORT_C void LogMessage(const TLogMessageText &aMessage); + inline void Flush() {iWs.Flush();} + inline void SetScreenNumber(TInt aScreenNumber); + IMPORT_C TBool IsEventWaiting(); + IMPORT_C TBool WaitUntilEventPending(); + IMPORT_C TBool WaitUntilRedrawPending(); + inline CTEvent* EventHandler(); + inline CTRedraw* RedrawHandler(); + IMPORT_C TInt WaitForRedrawsToFinish(); + IMPORT_C TInt WaitForAllEventProcessingToFinish(); +private: + TBool WaitUntilEventPending(const TRequestStatus& aStatus); + TInt WaitForEventsToFinish(TBool aAll); +protected: + CTEvent *iEventHandler; + CTRedraw *iRedrawEventHandler; +public: + CWindowGc *iGc; + CTWindowGroup *iGroup; + RWsSession iWs; + CWsScreenDevice *iScreen; +protected: + TWindowTitle iTitle; + TInt iScreenNumber; + }; + +class CTAutoKey; +class CTDialog : public CTTitledWindow + { +public: + enum + { + EDialogWaitForButtonUp=0x0001, + EDialogDisplayAtBottom=0x0002, + EDialogDisplayAtLeft=0x0008, + }; +public: + IMPORT_C CTDialog(); + IMPORT_C ~CTDialog(); + IMPORT_C void ConstructLD(CTWinBase &aParent, CWindowGc &aGc); + IMPORT_C void Draw(); + IMPORT_C void WinKeyL(const TKeyEvent &aKey,const TTime &aTime); + IMPORT_C void PointerL(const TPointerEvent &aPointer,const TTime &aTime); + IMPORT_C virtual void ButtonPressL(TInt aButton); + IMPORT_C void SetLine1(const TDesC &aLine1); + IMPORT_C void SetLine2(const TDesC &aLine2); + IMPORT_C void SetNumButtons(TInt aNum); + IMPORT_C void SetButtonText(TInt aNum,const TDesC &aButton); + IMPORT_C void SetWindowSize(); + IMPORT_C void RelinquishFocus(); + IMPORT_C TInt Display(); + IMPORT_C void SetFlags(TUint aFlags); +protected: + void SetResult(TInt aButton); + inline void SetTakeFocus() {iTakeFocus=ETrue;} +private: + void SetMaxWid(TInt &aMax, TInt aWid); + TRect ButtonRect(TInt aIndex) const; +private: + TBool iIsActive; + TBool iActivated; + TBool iWinActive; + TBool iTakeFocus; + TInt iNumButtons; + TInt iButWid; + CTBaseWin *iOldFocus; + TInt *iResultPtr; + TBuf<0x40> iLine1; + TBuf<0x40> iLine2; + TBuf<0x20> iButton[3]; + TInt iButtonClickOn; + TUint iFlags; + CTAutoKey* iAutoKey; + }; + +class CInfoDialog : public CTDialog + { +private: + enum + { + eSeconds=1000000, + eTimes=6, + }; +public: + IMPORT_C CInfoDialog(CTWindowGroup *aGroupWin,CWindowGc *aGc); + IMPORT_C void ConstructLD(); + IMPORT_C void TimerResults(); + //Virtual function from CTDialog + IMPORT_C void ButtonPressL(TInt aButton); +private: + void AppendProfileTime(TDes &aDes, TInt aNum); + void AppendProfileCount(TDes &aDes, TInt aNum); + void AddComma(TDes &aDes); +private: + CTWindowGroup *iGroupWin; + CWindowGc *iGc; + }; + +class CEventWindow : public CTWin + { +public: + IMPORT_C CEventWindow(TInt aLogSize); + IMPORT_C ~CEventWindow(); + IMPORT_C void ConstructL(CTWinBase &parent); + IMPORT_C void SetUpL(const TPoint &pos, CTWinBase *parent, CWindowGc &aGc); + IMPORT_C void Draw(); + IMPORT_C void WinKeyL(const TKeyEvent &,const TTime &aTime); + IMPORT_C void LogEvent(const TWsEvent &aEvent); +private: + void DrawLine(TInt aLine, const TDesC &aText); + void LogEvent(TInt aLogNum, const TWsEvent &aEvent); +private: + TInt iLineHeight; + TInt iCount; + TInt iLogSize; + TInt iNumLogged; + TWsEvent *iLoggedEvents; + }; + +class CBlankWindow : public CTWin + { +public: + IMPORT_C CBlankWindow(TRgb aCol); + IMPORT_C CBlankWindow(); + IMPORT_C void ConstructL(CTWinBase &parent); + IMPORT_C void SetColor(TRgb aColor); + IMPORT_C void RealDraw(TBool aRealDraw); + IMPORT_C virtual void Draw(); + IMPORT_C void DrawNow(); + IMPORT_C void DrawNow(TRect& aRect); + IMPORT_C TBool Check(const CTClient& aClient); +protected: + TRgb iCol; + TBool iRealDraw; + }; + +struct TSpriteCreateParams; + +class CTSpriteBase : public CBase + { +public: + typedef void (*TSpriteDrawFunction)(CBitmapContext *aGc,TInt aIndex, const TSize &aSize, TBool aDoMask, TAny *aParam); +protected: + virtual RWsSpriteBase &SpriteBase()=0; + void CreateBitmapL(CFbsBitmap *&aBitmap, CFbsBitmapDevice *&aBitmapDevice, TSpriteCreateParams *aParams, TBool aDoMask); +public: + IMPORT_C void UpdateL(TInt aIndex, TSpriteCreateParams *aParams); + IMPORT_C void RedrawL(CFbsBitmap *&aBitmap, CFbsBitmap *&aMaskBitmap, TSpriteCreateParams *aParams); + }; + +class CTSprite : public CTSpriteBase + { +public: + IMPORT_C CTSprite(RWsSession &aWs); + IMPORT_C ~CTSprite(); + IMPORT_C void ConstructL(RWindowTreeNode &aWindow, const TPoint &aPos, TInt aCount, TSpriteCreateParams *aParams, TInt aFlags); + IMPORT_C RWsSpriteBase &SpriteBase(); + IMPORT_C RWsSprite &Sprite(); +private: + RWsSprite iSprite; + }; + +class CTPointerCursor : public CTSpriteBase + { +public: + IMPORT_C CTPointerCursor(RWsSession &aWs); + IMPORT_C ~CTPointerCursor(); + IMPORT_C void ConstructL(TInt aFlags); + IMPORT_C void ConstructL(TInt aCount, TSpriteCreateParams *aParams, TInt aFlags, CFbsBitmap *&aBitmap, CFbsBitmap *&aMaskBitmap); + IMPORT_C void ConstructL(TInt aCount, TSpriteCreateParams *aParams, TInt aFlags); + IMPORT_C RWsSpriteBase &SpriteBase(); + IMPORT_C RWsPointerCursor &PointerCursor(); +private: + RWsPointerCursor iCursor; + }; + +struct TSpriteCreateParams + { +public: + IMPORT_C TSpriteCreateParams(TSize aSize,TPoint aOffset,CTSpriteBase::TSpriteDrawFunction aDrawFunc,TAny *aDrawFuncParam=NULL, TBool aMask=ETrue,CGraphicsContext::TDrawMode aDrawMode=CGraphicsContext::EDrawModePEN); + IMPORT_C TSpriteCreateParams(); +public: + TSize iSize; + TPoint iOffset; + CTSpriteBase::TSpriteDrawFunction iDrawFunc; + TAny *iDrawFuncParam; + TBool iMask; + CGraphicsContext::TDrawMode iDrawMode; + TTimeIntervalMicroSeconds32 iInterval; + }; + +class CTUser + { +public: + IMPORT_C static void Splat(CTClient *aClient, const TRect &aRect, const TRgb &aRgb); + }; + +IMPORT_C void DisplayDialog(const TWindowTitle &aTitle, const TDesC &aLine1, const TDesC &aLine2, const RWindowGroup *aGroup=NULL); +IMPORT_C void DisplayDialog(TInt aScreenNumber,const TWindowTitle &aTitle, const TDesC &aLine1, const TDesC &aLine2, const RWindowGroup *aGroup=NULL); +IMPORT_C void DisplayDialog(CTClient *aClient, const TWindowTitle &aTitle, const TDesC &aLine1, const TDesC &aLine2); +IMPORT_C TInt TestLibStartUp(TCreateClientFunc aFunc); +IMPORT_C TInt TestLibStartUp(TCreateClientFunc aFunc,TInt aScreenNumber); + + +inline TRgb CTTitledWindow::Color() + {return(iWinColor);} +inline CWindowGc *CTBaseWin::Gc() + {return(iGc);} +inline RWindow *CTWin::Win() const + {return((RWindow *)BaseWin());} +inline const RBlankWindow *CTBlankWindow::BlankWin()const + {return(&iWin);} +inline RBlankWindow *CTBlankWindow::BlankWin() + {return(&iWin);} +inline void CTClient::SetScreenNumber(TInt aScreenNumber) + {iScreenNumber=aScreenNumber;} +inline CTEvent* CTClient::EventHandler() + {return iEventHandler;} +inline CTRedraw* CTClient::RedrawHandler() + {return iRedrawEventHandler;} +#endif