diff -r 000000000000 -r bde4ae8d615e os/graphics/windowing/windowserver/test/tdynamicres/inc/t_wsdynamicreswinbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/graphics/windowing/windowserver/test/tdynamicres/inc/t_wsdynamicreswinbase.h Fri Jun 15 03:10:57 2012 +0200 @@ -0,0 +1,169 @@ +// Copyright (c) 2008-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: +// twsgcetestwinbase.h +// +// + +#ifndef TWSDYNAMICRESWINBASE_H_ +#define TWSDYNAMICRESWINBASE_H_ + +#include +#include +#include +#include +#include "wsgcedebugsession.h" +struct TWsDebugWindowId; + +/** + * Base class sets up the tryptich of test windows. + * + * + **/ +class CWsDynamicResWinBase : public CTestFixture +{ +public: + CWsDynamicResWinBase(); + virtual ~CWsDynamicResWinBase(); + virtual void SetupL(); + virtual void SetupL(TBool aUseOtherScreenForInfo); + + virtual void TearDownL(); + virtual void TearDownFromDeleteL(); + + static TBool ActivateWithWipe(CWindowGc* aGc,RWindow& aWin,TRgb aColor=TRgb(0,0)); + + /* Note that each derived test class needs to declare a static function to register tests. + * This should match the following prototype: + static CTestSuite* CreateSuiteL( const TDesC& aName ); + */ + +protected: + static void Pause(TInt aMilliseconds=200); + + TBool GCEIsSupported() const; + static TBool GCEIsSupportedStatic(); + + TBool DisplayHasAlpha() const; + TBool SelectChromaCompositionMode(); + TBool SelectAlphaCompositionMode(TDisplayMode aMode = EColor16MA); + TRgb GceHoleColor(RWindowBase& aWin)const; + void DrawUIContent(RWindow& aWindow); + void DrawPlainUI(RWindow& aWindow,TBool aInvalidate,TRgb aWipeColor=TRgb(0,0)); + void DrawCross(RWindow& aWindow, TRgb aColor, TInt aThickness=1); + void TestPixelL(TPoint aPt, TRgb aColor, TBool aMatch); + TBool TestRectL(TRect aRect,TRgb aInnerColor,TInt aOtherInnerColors,TRgb aOuterColor,TInt aOtherOuterColors,TInt aCornerSize); + void MakeTitleAndCompareWindowsL(TRefByValue aTitle,TRefByValue aDetail=_L("")); + void LargerCompareWindow(TBool aGoLarger=ETrue); + void UpdateTitleWindowL(TRefByValue aDetail,TInt aIndex=0); + void RepaintTitleWindowL(); + void TefUnitFailLeaveL(); + CWindowGc* GcForWindow(RWindow& aWin); + TBool InvalidateRegion(const TRegion& aRegion,RWindow& aWin); + CWindowGc* BeginActivateWithWipe(TBool aInvalidate,RWindow& aWin,TRgb aColor=TRgb(0,0)); + CWindowGc* BeginActivateWithWipe(TBool aInvalidate,TRect aRect,RWindow& aWin,TRgb aColor=TRgb(0,0)); + CWindowGc* BeginActivateWithWipe(const TRegion& aRegion,RWindow& aWin,TRgb aColor); + /** Helper method to find a named screen region + * start/end letter should be 'a' to 'y' (yes that includes 'i') + **/ + static TRect PentCellRect(const TRect& aFullRect,char aStartLetter,char aEndLetter=0); + void CheckAndConnectScreen(); + +protected: + static const TInt KSurfaceWidth = 50; + static const TInt KSurfaceHeight = 50; + TBool iDoTearDown; + RWsDebugSession iSession; + RWindowGroup iGroup; + RWindowGroup iInfoGroupInstance; + RWindowGroup* iInfoGroup; + CWsScreenDevice* iScreenDevice; + CWsScreenDevice* iInfoScreenDevice; + CWindowGc* iGc; + CWindowGc* iInfoGc; + TInt iWindowHandle; + static TBool iTransparencyEnabled; + TRgb iRed, iGreen, iBlue, iCyan, iMagenta, iYellow, iWhite; + TRgb TITLE_BACKGROUND; + TRgb COMPARE_BACKGROUND; + RBlankWindow iBackground; + RWindow iCompare; + RWindow iTitle; + TRect iTestPos; + TRect iCenteredFrontWinRect; + TPoint iTestPointCentre; + TDisplayMode iDisplayMode; + static const TInt KMaxTestName = 80; + typedef TBuf TTestName; + mutable TRgb iLastGceHoleColor; + TTestName iTestName; + static const TInt KMaxInfoLines=5; + TTestName iTestInfo[KMaxInfoLines]; + static CActiveScheduler iScheduler; +}; + +// This little helper class checks that the given bytes contain the expected pattern. +namespace Pattern + { + void Fill(void* aTrg,TInt aOffset,TInt aLength); + TBool Check(void* aTrg,TInt aOffset,TInt aLength); + TBool CheckVal(void* aTrg,TInt aOffset,TInt aLength,char val=0); + } + +//This wrapper for the configuration class allows stress testing of the configuration object + +template +class TestExtend: public TXxxConfiguration + { +public: + char iExtraData[aExtraSize]; + TestExtend(): + TXxxConfiguration(aFalseSize) + { + TXxxConfiguration::iSize=aFalseSize; + Pattern::Fill(this,aFalseSize,sizeof(*this)-aFalseSize); + } + void* operator new(unsigned int,TestExtend* inplace) + { //Use this inplace operator new to pre-initialise the memory + return inplace; + } + void operator delete(void*,TestExtend*) + { //Stops the warning! + } + TestExtend(const TXxxConfiguration&i): + TXxxConfiguration(i) + { + Pattern::Check(this,sizeof(TXxxConfiguration),aExtraSize); + } + TBool WasExtraOverwritten() + { + return Pattern::Check(this,sizeof(TXxxConfiguration),aExtraSize); + } + TBool WasFalseSizeOverwritten() + { + return Pattern::Check(this,aFalseSize,sizeof(*this)-aFalseSize); + } + TBool WasFalseSizeZero() + { + return Pattern::CheckVal(this,aFalseSize,sizeof(TXxxConfiguration)-aFalseSize); + } + void StompValue(TInt aOffsetInLongs,TInt aNewValue) + { + *((TInt*)this+aOffsetInLongs)=aNewValue; + } + TInt ReadValue(TInt aOffsetInLongs) + { + return *((TInt*)this+aOffsetInLongs); + } + }; +#endif /*TWSDYNAMICRESWINBASE_H_*/