windowing/windowserver/tauto/TWINDOW.CPP
changeset 116 171fae344dd4
parent 103 2717213c588a
--- a/windowing/windowserver/tauto/TWINDOW.CPP	Tue Jun 22 15:21:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2943 +0,0 @@
-// Copyright (c) 1996-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:
-// General window tests
-// 
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#include "TWINDOW.H"
-
-const TInt ENumCornerInsets=6;
-const TInt corner0[ENumCornerInsets]={0,0,0,0,0,0};
-const TInt corner1[ENumCornerInsets]={1,0,0,0,0,0};
-const TInt corner2[ENumCornerInsets]={2,1,0,0,0,0};
-const TInt corner3[ENumCornerInsets]={3,1,1,0,0,0};
-const TInt corner5[ENumCornerInsets]={5,3,2,1,1,0};
-const TInt KBaseUserEvent=61750;		//0xF136 - a random number that is unlikely to be used by other applicaions for user event sending
-
-//
-
-CWinTestWindow::CWinTestWindow(TRgb aCol) : CBlankWindow(aCol)
-	{
-	}
-
-CWinTestWindow::~CWinTestWindow()
-	{
-	delete iChild;
-	}
-
-void CWinTestWindow::ConstructL(TPoint pos,TSize size,CTWinBase *aParent, CWindowGc &aGc, TInt aDepth)
-	{
-	iWin=RWindow(TheClient->iWs);
-	User::LeaveIfError(iWin.Construct(*(aParent->WinTreeNode()),ENullWsHandle));
-	SetExt(pos,size);
-	if (aDepth<3)
-		{
-		iChild=new(ELeave) CWinTestWindow(TRgb::Gray256(iCol.Gray256()+34));
-		size.iWidth-=8;
-		size.iHeight-=8;
-		iChild->ConstructL(TPoint(4,4),size,this,aGc,aDepth+1);
-		}
-	Activate();
-	AssignGC(aGc);
-	}
-
-//
-
-CEvWindowGroup* CEvWindowGroup::NewLC(CTClient* aClient,CTWsGraphicsBase* aTest)
-	{
-	CEvWindowGroup* self=new(ELeave) CEvWindowGroup(aClient,aTest);
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	return self;
-	}
-
-CEvWindowGroup::CEvWindowGroup(CTClient* aClient,CTWsGraphicsBase* aTest) : CTWindowGroup(aClient), iTest(aTest)
-	{}
-
-void CEvWindowGroup::ConstructL()
-	{
-	CTWindowGroup::ConstructL();
-	iGroupWin.EnableReceiptOfFocus(EFalse);
-	}
-
-void CEvWindowGroup::SetExpectedEvent(TInt aType)
-	{
-	iTest->TEST(!iExpectingEvent);
-	if (iExpectingEvent)
-		{
-		_LIT(KLog,"Setting expected event of type %d, when previouse event of type %d has not arrived (GpWinId=%d).");
-		iTest->LOG_MESSAGE4(KLog,aType,iExpectedEvent,iGroupWin.Identifier());
-		}
-	iExpectedEvent=aType;
-	iExpectingEvent=ETrue;
-	}
-
-void CEvWindowGroup::SendEvent(TInt aType)
-	{
-	TWsEvent event;
-	event.SetType(aType);
-	iClient->iWs.SendEventToWindowGroup(iGroupWin.Identifier(),event);
-	SetExpectedEvent(aType);
-	iClient->Flush();
-	}
-
-void CEvWindowGroup::UserEvent(TInt aEventType)
-	{
-	iTest->TEST(iExpectingEvent && iExpectedEvent==aEventType);
-	if (!iExpectingEvent || iExpectedEvent!=aEventType)
-		{
-		TInt id=iGroupWin.Identifier();
-		if (!iExpectingEvent)
-			{
-			_LIT(KLog,"Event of type %d recieved when not expecting an event (GpWinId=%d).");
-			iTest->LOG_MESSAGE3(KLog,aEventType,id);
-			}
-		else
-			{
-			_LIT(KLog,"Event of type %d when expecting an event of type %d (GpWinId=%d).");
-			iTest->LOG_MESSAGE4(KLog,aEventType,iExpectingEvent,id);
-			}
-		}
-	iExpectingEvent=EFalse;
-	}
-
-//
-
-CTWindowTest::CTWindowTest(CTestStep* aStep) : CTWsGraphicsBase(aStep)
-	{}
-
-CTWindowTest::~CTWindowTest()
-	{
-	delete iWin;
-	}
-
-void CTWindowTest::ConstructL()
-	{}
-
-TInt CTWindowTest::MoveGroup(TAny* aParam)
-	{
-	RWsSession ws;
-	TInt err=ws.Connect();
-	if (err==KErrNone)
-		{
-		TInt command=static_cast<TWindowThreadParam*>(aParam)->iCommand;
-		err=ws.SetWindowGroupOrdinalPosition(command&EIdMask,(command&EPosMask)>>EPosShift);
-		ws.Finish();
-		ws.Close();
-		}
-	return err;
-	}
-
-void CTWindowTest::CreateTestWindowL()
-	{
-	iWin=new(ELeave) CWinTestWindow(TRgb(0,0,0));
-	iWin->ConstructL(TPoint(1,1),TSize(TestWin->Size().iWidth/2,TestWin->Size().iHeight/2),TheClient->iGroup,*TheClient->iGc,0);
-	}
-
-void CTWindowTest::DrawWindows(CWinTestWindow *aWin)
-	{
-	if (aWin->iChild)
-		DrawWindows(aWin->iChild);
-	aWin->Win()->BeginRedraw();
-	TheGc->Activate(*aWin->Win());
-	TheGc->DrawRect(TRect(aWin->Win()->Size()));
-	TheGc->Deactivate();
-	aWin->Win()->EndRedraw();
-	TheClient->iWs.Flush();
-	}
-
-void CTWindowTest::CheckAndDestroyWindows()
-	{
-	DrawWindows(iWin);
-	delete iWin;
-	iWin=NULL;
-	}
-
-void CTWindowTest::DestroyWindowWithActiveGc()
-	{
-	iWin->Win()->BeginRedraw();
-	TheGc->Activate(*iWin->Win());
-	delete iWin;
-	TheGc->Deactivate();
-	iWin=NULL;
-	}
-
-void CTWindowTest::DestroyWindowWithActiveGc2L()
-	{
-	iWin->Win()->BeginRedraw();
-	TheGc->Activate(*iWin->Win());
-	CWindowGc *gc1=new(ELeave) CWindowGc(TheClient->iScreen);
-	CWindowGc *gc2=new(ELeave) CWindowGc(TheClient->iScreen);
-	CWindowGc *gc3=new(ELeave) CWindowGc(TheClient->iScreen);
-	gc1->Construct();
-	gc2->Construct();
-	gc3->Construct();
-	gc1->Activate(*iWin->Win());
-	gc2->Activate(*iWin->Win());
-	gc3->Activate(*iWin->Win());
-	delete iWin;
-	TheGc->Deactivate();
-	delete gc1;
-	delete gc2;
-	delete gc3;
-	iWin=NULL;
-	}
-
-LOCAL_C TInt DoPanicTest(TInt aInt, TAny *aScreenNumber)
-	{
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-	// use correct screen
-	//
-	CWsScreenDevice* screen = new (ELeave) CWsScreenDevice(ws);
-	User::LeaveIfError(screen->Construct((TInt)aScreenNumber));
-
-	RWindowGroup group(ws);
-	group.Construct(888);
-	group.EnableReceiptOfFocus(EFalse);	// Stop auto group switching on close
-
-	RWindow redraw(ws);
-	redraw.Construct(group,88);
-
-	RBackedUpWindow backedUp(ws);
-	backedUp.Construct(group,EGray16,99);
-
-	RBlankWindow blank(ws);
-	blank.Construct(group,111);
-
-	RWindowBase *base=NULL;
-	TInt source=aInt/10000;
-	TInt target=(aInt%10000)/100;
-	TInt panic=aInt%100;
-	switch(source)
-		{
-		case 0:
-			base= &redraw;
-			break;
-		case 1:
-			base= &backedUp;
-			break;
-		case 2:
-			base= &blank;
-			break;
-		}
-	switch(target)
-		{
-		case 0:
-			{
-			RWindow *win=(RWindow *)base;
-			switch(panic)
-				{
-				case 0:
-					win->BeginRedraw();
-					break;
-				case 1:
-					ws.SetAutoFlush(ETrue);
-					win->BeginRedraw(TRect(0,0,1,1));
-					ws.SetAutoFlush(EFalse);
-					break;
-				case 2:
-					ws.SetAutoFlush(ETrue);
-					win->EndRedraw();
-					ws.SetAutoFlush(EFalse);
-					break;
-				case 3:
-					win->Invalidate();
-					break;
-				case 4:
-					win->Invalidate(TRect(0,0,1,1));
-					break;
-				case 5:
-					{
-					RRegion region;
-					win->GetInvalidRegion(region);
-					}
-					break;
-				case 6:
-					win->SetBackgroundColor(TRgb(0,0,0));
-					break;
-				case 7:
-					return(EWsExitReasonFinished);
-				}
-			break;
-			}
-		case 1:
-			{
-			RBackedUpWindow *win=(RBackedUpWindow *)base;
-			switch(panic)
-				{
-				case 0:
-					win->BitmapHandle();
-					break;
-				case 1:
-					win->UpdateScreen();
-					break;
-				case 2:
-					win->UpdateScreen(TRegionFix<1>(TRect(10,10,20,20)));
-					break;
-				case 3:
-					win->UpdateBackupBitmap();
-					break;
-				case 4:
-					win->MaintainBackup();
-					break;
-				case 5:
-					return(EWsExitReasonFinished);
-				}
-			break;
-			}
-		case 2:
-			{
-			RBlankWindow *win=(RBlankWindow *)base;
-			switch(panic)
-				{
-				case 0:
-					win->SetColor(TRgb(0));
-					break;
-				case 1:
-					return(EWsExitReasonFinished);
-				}
-			break;
-			}
-		}
-	ws.Flush();
-	return(EWsExitReasonBad);	// Should never get here, but it's baaddd if it does
-	}
-
-struct TWsLocalStructure
-	{
-	TInt xPos;
-	TInt yPos;
-	TInt Length;
-	TAny *ptr;
-	};
-
-LOCAL_C TInt DoPanicTest2(TInt aInt, TAny *aScreenNumber)
-	{
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-//
-	CWsScreenDevice *screen=new(ELeave) CWsScreenDevice(ws);
-	screen->Construct((TInt)aScreenNumber);
-//
-	RWindowGroup group(ws);
-	group.Construct(999);
-	group.EnableReceiptOfFocus(EFalse);	// Stop auto group switching on close
-
-	RWindow win(ws);
-	win.Construct(group,122);
-	win.Activate();
-
-	switch(aInt)
-		{
-		case 0:
-			{
-			win.BeginRedraw();
-			CWindowGc *gc;
-			screen->CreateContext(gc);
-			gc->Activate(win);
-			CFbsFont *font;
-			screen->GetNearestFontToDesignHeightInTwips((CFont *&)font,TFontSpec());
-			gc->UseFont(font);
-			TWsLocalStructure params;
-			params.xPos=0;
-			params.yPos=0;
-			params.Length=1;
-			TPckgC<TWsLocalStructure> pkg(params);
-			TPtr8 ptr(NULL,10,10);
-			ws.TestWriteReplyByProvidingRemoteReadAccess(gc->WsHandle(),EWsGcOpDrawTextPtr,pkg,ptr); // Bad source descriptor
-			}
-			break;
-		case 1:
-			{
-			TPtr8 bad(NULL,0); // Bad descriptor
-			ws.TestWriteReplyP(win.WsHandle(),EWsWinOpSize,NULL,0,&bad); // Bad descriptor
-			}
-			break;
-		case 2:
-			{
-			TSize size;
-			TPtr8 bad((TUint8 *)&size,4,4); // Short descriptor
-			ws.TestWriteReplyP(win.WsHandle(),EWsWinOpSize,NULL,0,&bad); // Short descriptor
-			}
-			break;
-		case 3:
-			win.EnablePointerMoveBuffer();
-			break;
-		case 4:
-			{
-			RBackedUpWindow backup(ws);
-			backup.Construct(group,EGray16,123);
-			backup.Activate();
-			backup.SetRequiredDisplayMode(EGray16);
-			}
-			break;
-		default:
-			return(EWsExitReasonFinished);
-		}
-	ws.Flush();
-	return(EWsExitReasonBad);	// Should never get here, but it's baaddd if it does
-	}
-
-LOCAL_C TInt CallWindowFuction(RWindowTreeNode* aWin,TInt aWinType,TInt aFunc,RWsSession aWs)
-	{
-	switch(aWinType)
-		{
-	case 0:		//Call functions from RWindowTreeNode
-		{
-		RWindowTreeNode* win=aWin;
-		switch(aFunc)
-			{
-		case 0:
-			win->OrdinalPosition();
-			break;
-		case 1:
-			win->SetOrdinalPosition(1);
-			break;
-		case 2:
-			win->SetOrdinalPosition(1,2);
-			break;
-		case 3:
-			win->FullOrdinalPosition();
-			break;
-		case 4:
-			win->Parent();
-			break;
-		case 5:
-			win->PrevSibling();
-			break;
-		case 6:
-			win->SetFaded(0,RWindowTreeNode::EFadeIncludeChildren);
-			break;
-		case 7:
-			win->WindowGroupId();
-			break;
-		//The following can be called on a window with no parent without panicking
-		case 8:
-			win->ClearPointerCursor();
-			break;
-		case 9:
-			win->ClientHandle();
-			break;
-		case 10:
-			win->DisableErrorMessages();
-			break;
-		case 11:
-			win->DisableFocusChangeEvents();
-			break;
-		case 12:
-			win->DisableGroupChangeEvents();
-			break;
-		case 13:
-			win->DisableGroupListChangeEvents();
-			break;
-		case 14:
-			win->DisableModifierChangedEvents();
-			break;
-		case 15:
-			win->DisableOnEvents();
-			break;
-		case 16:
-			win->DisableVisibilityChangeEvents();
-			break;
-		case 17:
-			win->EnableErrorMessages(EEventControlAlways);
-			break;
-		case 18:
-			win->EnableFocusChangeEvents();
-			break;
-		case 19:
-			win->EnableGroupChangeEvents();
-			break;
-		case 20:
-			win->EnableGroupListChangeEvents();
-			break;
-		case 21:
-			win->EnableModifierChangedEvents(0,EEventControlAlways);
-			break;
-		case 22:
-			win->EnableVisibilityChangeEvents();
-			break;
-		case 23:
-			win->NextSibling();
-			break;
-		case 24:
-			win->OrdinalPriority();
-			break;
-		case 25:
-			win->SetNonFading(0);
-			break;
-		case 26:
-			win->SetPointerCursor(0);
-			break;
-		case 27:
-			win->Child();
-			break;
-		case 28:
-			return(EWsExitReasonFinished);
-		default:;
-			}
-		}
-		break;
-	case 1:		//Call functions from RWindowGroup
-		{
-		RWindowGroup* win=(RWindowGroup*)aWin;
-		switch(aFunc)
-			{
-		case 0:
-			win->EnableReceiptOfFocus(ETrue);
-			break;
-		case 1:
-			win->AutoForeground(ETrue);
-			break;
-		case 2:
-			win->SetOrdinalPriorityAdjust(5);
-			break;
-		case 3:
-			win->CaptureKey(20,0,0);
-			break;
-		case 4:
-			win->CaptureKeyUpAndDowns(20,0,0);
-			break;
-		case 5:
-		case 6:
-			{
-			RWindowGroup group(aWs);
-			group.Construct(876);
-			group.EnableReceiptOfFocus(EFalse);		// Stop auto group switching on close
-			if (aFunc==5)
-				win->CancelCaptureKey(group.CaptureKey(20,0,0));
-			else
-				win->CancelCaptureKeyUpAndDowns(group.CaptureKeyUpAndDowns(20,0,0));
-			}
-			break;
-		case 7:
-			win->AddPriorityKey(20,0,0);
-			break;
-		case 8:
-			win->RemovePriorityKey(20,0,0);
-			break;
-		case 9:
-		case 10:
-			{
-			RWindowGroup group(aWs);
-			group.Construct(765);
-			group.EnableReceiptOfFocus(EFalse);		// Stop auto group switching on close
- 			RWindow window(aWs);
-			window.Construct(group,79);
-			if (aFunc==9)
-				win->SetTextCursor(window,TPoint(45,46),TTextCursor());
-			else
-				win->SetTextCursor(window,TPoint(55,66),TTextCursor(),TRect(TSize(5,8)));
-			}
-			break;
-		case 11:
-			win->CancelTextCursor();
-			break;
-		case 12:
-			win->SetOwningWindowGroup(456);
-			break;
-		case 13:
-			win->DefaultOwningWindow();
-			break;
-		case 14:
-			{
-			TBufC<8> text(_L("abcdef"));
-			win->SetName(text);
-			}
-			break;
-		case 15:
-			{
-			TBuf<16> text;
-			User::LeaveIfError(win->Name(text));
-			}
-			break;
-		case 16:
-			win->Identifier();
-			break;
-		case 17:
-			win->DisableKeyClick(ETrue);
-			break;
-		case 18:
-			/*{
-			TPtr8 text(NULL,0);
-			TUid uid;
-			User::LeaveIfError(win->FetchMessage(uid,text));
-			}*/
-			win->Identifier();
-			break;
-		case 19:
-			User::LeaveIfError(win->EnableScreenChangeEvents());
-			break;
-		case 20:
-			win->EnableScreenChangeEvents();
-			break;
-		case 21:
-			win->DisableScreenChangeEvents();
-			break;
-		case 22:
-			win->SimulatePointerEvent(TRawEvent());
-			break;
-#ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NGA
-        case 23: 	
-        	win->SimulateAdvancedPointerEvent(TRawEvent());
-  	  		break;
-        case 24:	
-			return(EWsExitReasonFinished);
-#else
-		case 23:	
-			return(EWsExitReasonFinished);
-#endif			
-		default:;
-			}
-		}
-		break;
-	case 2:					//Call functions from RWindowBase
-		{
-		RWindowBase* win=(RWindowBase*)aWin;
-		switch(aFunc)
-			{
-		case 0:
-			win->SetPosition(TPoint(7,8));
-			break;
-		case 1:
-			User::LeaveIfError(win->SetSizeErr(TSize(21,22)));
-			break;
-		case 2:
-			User::LeaveIfError(win->SetExtentErr(TPoint(8,9),TSize(21,22)));
-			break;
-		case 3:
-			win->ClaimPointerGrab();
-			break;
-		case 4:
-			win->SetVisible(ETrue);
-			break;
-		case 5:
-			win->EnableBackup();
-			break;
-		case 6:
-			win->RequestPointerRepeatEvent(TTimeIntervalMicroSeconds32(100000),TRect());
-			break;
-		case 7:
-			win->PasswordWindow(EPasswordCancel);
-			break;
-		case 8:
-			win->FadeBehind(ETrue);
-			break;
-		//These can all be called on a window with no parent without panicking
-		case 9:
-			win->SetVisible(EFalse);
-			break;
-		case 10:
-			{
-			RWindowGroup group(aWs);
-			group.Construct(567);
-			group.EnableReceiptOfFocus(EFalse);		// Stop auto group switching on close
- 			RWindow window(aWs);
-			window.Construct(group,97);
-			win->InquireOffset(window);
-			}
-			break;
-		case 11:
-			win->PointerFilter(0,0);
-			break;
-		case 12:
-			win->SetPointerGrab(ETrue);
-			break;
-		case 13:
-			win->SetPointerCapture(0);
-			break;
-		case 14:
-			win->Size();
-			break;
-		case 15:
-			win->Position();
-			break;
-		case 16:
-			User::LeaveIfError(win->SetCornerType(EWindowCorner5,0));
-			break;
-		case 17:
-			{
-			TRegionFix<3> region;
-			User::LeaveIfError(win->SetShape(region));
-			}
-			break;
-		case 18:
-			User::LeaveIfError(win->SetRequiredDisplayMode(EColor16));
-			break;
-		case 19:
-			win->DisplayMode();
-			break;
-		case 20:
-			win->CancelPointerRepeatEventRequest();
-			break;
-		case 21:
-			win->AllocPointerMoveBuffer(10,0);
-			break;
-		case 22:
-			win->FreePointerMoveBuffer();
-			break;
-		case 23:
-			win->DisablePointerMoveBuffer();
-			break;
-		case 24:
-			{
-			TBuf8<16> buf;
-			win->RetrievePointerMoveBuffer(buf);
-			}
-			break;
-		case 25:
-			win->DiscardPointerMoveBuffer();
-			break;
-		case 26:
-			User::LeaveIfError(win->AddKeyRect(TRect(TSize(10,10)),20,ETrue));
-			break;
-		case 27:
-			win->RemoveAllKeyRects();
-			break;
-		case 28:
-			win->EnablePointerMoveBuffer();
-			break;
-		case 29:
-			return(EWsExitReasonFinished);
-		default:;
-			}
-		}
-		break;
-	case 3:					//Call functions from RDrawableWindow
-		{
-		RDrawableWindow* win=(RDrawableWindow*)aWin;
-		switch(aFunc)
-			{
-		//The following can be called on a window with no parent without panicking
-		case 0:
-			win->Scroll(TPoint(7,8));
-			break;
-		case 1:
-			win->Scroll(TRect(9,10,11,12),TPoint(13,14));
-			break;
-		case 2:
-			win->Scroll(TPoint(15,16),TRect(17,18,19,20));
-			break;
-		case 3:
-			win->Scroll(TRect(21,22,23,24),TPoint(25,26),TRect(27,28,29,30));
-			break;
-		case 4:
-			return(EWsExitReasonFinished);
-		default:;
-			}
-		}
-		break;
-	case 4:					//Call functions from RBlankWindow
-		{
-		RBlankWindow* win=(RBlankWindow*)aWin;
-		switch(aFunc)
-			{
-		case 0:
-			win->SetSize(TSize(7,8));
-			break;
-		case 1:
-			win->SetExtent(TPoint(27,28),TSize(17,18));
-			break;
-		//The following function can be called on a window with no parent without panicking
-		case 2:
-			win->SetColor(TRgb::Gray4(2));
-			break;
-		case 3:
-			return(EWsExitReasonFinished);
-		default:;
-			}
-		}
-		break;
-	case 5:					//Call functions from RWindow
-		{
-		RWindow* win=(RWindow*)aWin;
-		switch(aFunc)
-			{
-		case 0:
-			win->BeginRedraw();
-			break;
-		case 1:
-			aWs.SetAutoFlush(ETrue);
-			win->BeginRedraw(TRect(31,32,43,44));
-			aWs.SetAutoFlush(EFalse);
-			break;
-		case 2:
-			win->SetSize(TSize(5,6));
-			break;
-		case 3:
-			win->SetExtent(TPoint(25,26),TSize(15,16));
-			break;
-		//The following can be called on a window with no parent without panicking
-		case 4:
-			win->Invalidate();
-			break;
-		case 5:
-			win->Invalidate(TRect(51,52,63,64));
-			break;
-		case 6:			//These ones don't panic
-			aWs.SetAutoFlush(ETrue);
-			win->EndRedraw();
-			aWs.SetAutoFlush(EFalse);
-			break;
-		case 7:
-			{
-			RRegion region;
-			win->GetInvalidRegion(region);
-			}
-			break;
-		case 8:
-			win->SetBackgroundColor(TRgb::Gray4(1));
-			break;
-		case 9:
-			win->SetBackgroundColor();
-			break;
-		case 10:
-			return(EWsExitReasonFinished);
-		default:;
-			}
-		}
-		break;
-	case 6:					//Call functions from RBackedUpWindow
-		{
-		RBackedUpWindow* win=(RBackedUpWindow*)aWin;
-		switch(aFunc)			//None of these functions panic
-			{
-		//The following can be called on a window with no parent without panicking
-		case 0:
-			win->BitmapHandle();
-			break;
-		case 1:
-			win->UpdateBackupBitmap();
-			break;
-		case 2:
-			win->MaintainBackup();
-			break;
-		case 3:
-			win->UpdateScreen();
-			break;
-		case 4:
-			win->UpdateScreen(TRegionFix<1>(TRect(1,1,22,22)));
-			break;
-		case 5:
-			return(EWsExitReasonFinished);
-		default:;
-			}
-		}
-		break;
-		}
-	aWs.Flush();
-	return(EWsExitReasonBad);	// Should never get here, but it's baaddd if it does
-	}
-
-LOCAL_C TInt DoPanicTest3(TInt aInt, TAny *aScreenNumber)
-	{
-	TInt winType=aInt/CTWindowTest::EWinTypeFactor;
-	TInt func=aInt%CTWindowTest::EWinTypeFactor;
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-	// use correct screen
-	//
-	CWsScreenDevice* screen = new (ELeave) CWsScreenDevice(ws);
-	User::LeaveIfError(screen->Construct((TInt)aScreenNumber));
-
-	RWindowGroup group(ws);
-	group.Construct(888);
-	group.EnableReceiptOfFocus(EFalse);	// Stop auto group switching on close
- 	RWindow window(ws);
-	window.Construct(group,789);
-	RWindowTreeNode* win;
-	if (winType==1)
-		win=&window;
-	else
-		win=&group;
-
-	return CallWindowFuction(win,winType,func,ws);
-	}
-
-//PanicTestNoPanic
-//This function is called from DoPanicTest4 for window functions that should run without
-//panicking the user thread if its parent has been deleted.
-TInt PanicTestNoPanic(RWindowTreeNode* aWin,TInt aWinType,TInt aFunc,RWsSession aWs,const TInt* const aFuncToSkip)
-	{
-	TInt funcReturn;
-	for(;;)
-		{
-		if (aFuncToSkip && *aFuncToSkip == aFunc)
-			{
-			aFunc++;
-			}
-		funcReturn = CallWindowFuction(aWin,aWinType,aFunc,aWs);
-		if (funcReturn==EWsExitReasonBad)
-			{
-			aFunc++;
-			}
-		else if (funcReturn==EWsExitReasonFinished)
-			{
-			return EWsExitReasonFinished;
-			}
-		else
-			{
-			return EWsExitReasonBad;
-			}
-		}
-	}
-
-LOCAL_C TInt DoPanicTest4(TInt aInt, TAny *aScreenNumber)
-	{
- 	TInt winType=aInt/CTWindowTest::EWinTypeFactor;
-	TInt func=aInt%CTWindowTest::EWinTypeFactor;
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-	// use correct screen
-	//
-	CWsScreenDevice* screen = new (ELeave) CWsScreenDevice(ws);
-	User::LeaveIfError(screen->Construct((TInt)aScreenNumber));
-
-	RWindowGroup group(ws);
-	group.Construct(234);
-	group.EnableReceiptOfFocus(EFalse);	// Stop auto group switching on close
- 	RWindow window(ws);
-	window.Construct(group,897);
-	RBackedUpWindow backedUp(ws);
-	backedUp.Construct(group,EGray16,98);
-	RBlankWindow blank(ws);
-	blank.Construct(group,169);
-	RWindowTreeNode* win=&window;
-	switch (winType)
-		{
-	case 0:
-		{
-		if (func > 8)			//if a func 8+ had panicked, fail the test
-			{
-			return EWsExitReasonBad;
-			}
-		else if (func==8)
-			{
-			group.Close();
-			return PanicTestNoPanic(win,winType,func,ws,NULL);
-			}
-		}
-		break;
-	case 2:
-		{
-		if (func>9)			//if a func 9+ had panicked, fail the test
-			{
-			return EWsExitReasonBad;
-			}
-		else if (func==9)	//set window visible so that SetVisible(EFalse) (func 9) would crash before fix
-			{
-			window.SetVisible(ETrue);
-			ws.Flush();
-			group.Close();
-			TInt funcToSkip = 28;	//this call needs to have already successfully allocated a pointer cursor
-			return PanicTestNoPanic(win,winType,func,ws,&funcToSkip);
-			}
-		}
-		break;
-	case 4:
-		{
-		win=&blank;
-		if (func>2)			//if a func 2+ had panicked, fail the test
-			{
-			return EWsExitReasonBad;
-			}
-		else if (func==2)
-			{
-			group.Close();
-			return PanicTestNoPanic(win,winType,func,ws,NULL);
-			}
-		}
-		break;
-	case 5:
-		{
-		if (func>6)			//if a func 4+ had panicked, fail the test
-			{
-			return EWsExitReasonBad;
-			}
-		else if (func==4 || func==5)
-			{
-			if (CallWindowFuction(win,winType,func,ws)==EWsExitReasonBad)
-				{
-				func = 1;
-				}
-			else
-				{
-				return EWsExitReasonBad;
-				}
-			}
-		else if (func==6)
-			{
-			group.Close();
-			TInt funcToSkip = 6;	//Skip the call to EndRedraw in CallWindowFunction, it is not safe to call it on Window casts.
-			return PanicTestNoPanic(win,winType,func,ws,&funcToSkip);
-			}
-		}
-		break;
-	case 6:
-		{
-		win=&backedUp;
-		if (func>0)
-			return EWsExitReasonBad;
-		else		//if (func==0)
-			{
-			TInt end=2;
-			while (func==0)
-				{
-				group.Close();
-				while (CallWindowFuction(win,winType,func,ws)==EWsExitReasonBad && ++func<end)
-					{}
-				if (func==end && end==2)
-					{
-					func=0;
-					end=4;
-					}
-				}
-			if (func==end)
-				return EWsExitReasonFinished;
-			else
-				return EWsExitReasonBad;
-			}
-		}
-		/*break;*/
-	default:;
-		}
-	group.Close();
-	return CallWindowFuction(win,winType,func,ws);
-	}
-
-LOCAL_C TInt DoPanicTest5(TInt aTest, TAny *aScreenNumber)
-	{
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-
-	CWsScreenDevice *scrDev=new(ELeave) CWsScreenDevice(ws);
-	scrDev->Construct((TInt)aScreenNumber);
-
-	RWindowGroup group(ws);
-	group.Construct(235);
-	group.EnableReceiptOfFocus(EFalse);	// Stop auto group switching on close
- 	RWindow window(ws);
-	window.Construct(group,896);
-	CWindowGc *gc=new(ELeave) CWindowGc(scrDev);
-	gc->Construct();
-	gc->Activate(window);
-	group.Close();
-	switch (aTest)
-		{
-	case 0:
-		gc->Deactivate();
-		gc->Activate(window);
-		break;
-	case 1:
-		gc->DrawLine(TPoint(0,0),TPoint(10,10));
-		break;
-	default:
-		return(EWsExitReasonFinished);
-		}
-	ws.Flush();
-	return(EWsExitReasonBad);	// Should never get here, but it's baaddd if it does
-	}
-
-#if defined(_DEBUG)
-LOCAL_C TInt DoPanicTest6(TInt /*aInt*/, TAny *aScreenNumber)
-	{
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-	RWindowGroup group1(ws);
-	CWsScreenDevice* screen=new(ELeave) CWsScreenDevice(ws);
-	User::LeaveIfError(screen->Construct((TInt)aScreenNumber));
-	group1.Construct(123456,ETrue,screen);
-	RWindowGroup group2(ws);
-	group2.Construct(123456,ETrue,screen);	// Should panic client here
-	return(EWsExitReasonBad);	// Should never get here
-	}
-#endif
-
-void CTWindowTest::TestInvalidFunctionsL()
-//
-// This code casts windows to be different types and then sends messages for the 'cast' that
-// should not be sent to the original type of window. These should all result in panics
-//
-	{
-	static TClientPanic PanicCode[]={EWservPanicDescriptor,EWservPanicDescriptor,EWservPanicDescriptor,
-									 EWservPanicNoPointerBuffer,EWservPanicBackupDisplayMode,
-									 EWservPanicNoFont};	// Dummy end value to catch out overflowing the array
-	INFO_PRINTF1(_L("AUTO  Test Invalid Functions "));
-	INFO_PRINTF1(_L(" Opcode Panics"));
-
-	for (TInt source=0;source<3;source++)
-		for (TInt target=0;target<3;target++)
-			if (source!=target)
-				for (TInt panic=0;;panic++)
-					{
-					TBool testFinished=EFalse;
-					TEST(iTest->TestWsPanicL(DoPanicTest,EWservPanicOpcode,source*10000+target*100+panic,(TAny*)iTest->iScreenNumber,&testFinished));
-					if (testFinished)
-						break;
-					}
-	_LIT(KSet,"Various Different Panics");
-	INFO_PRINTF1(KSet);
-	RDebug::Print(KPlatsecBegin);
-	for(TInt index=0;;index++)
-		{
-		TBool testFinished=EFalse;
-		TEST(iTest->TestWsPanicL(DoPanicTest2,PanicCode[index],index,(TAny*)iTest->iScreenNumber,&testFinished));
-		if (testFinished)
-			break;
-		}
-	RDebug::Print(KPlatsecEnd);
-	iTest->CloseAllPanicWindows();
-	}
-
-void CTWindowTest::ShadowAutoClearTest()
-	{
-	RWindowGroup group(TheClient->iWs);
-	group.Construct(1111);
-	group.EnableReceiptOfFocus(EFalse);	// Stop auto group switching on close
-
-	RWindow background(TheClient->iWs);
-	background.Construct(group,133);
-	background.SetBackgroundColor();
-	background.Activate();
-
-	background.BeginRedraw();
-	TheClient->iGc->Activate(background);
-	TheClient->iGc->SetBrushColor(TRgb::Gray4(1));
-	TheClient->iGc->Clear();
-	background.EndRedraw();
-//
-	RBlankWindow tab2(TheClient->iWs);
-	tab2.Construct(group,144);
-	tab2.SetExtent(TPoint(10,00),TSize(200,10));
-	tab2.SetColor(TRgb::Gray256(170));
-	tab2.SetShadowHeight(1);
-	tab2.Activate();
-	RBlankWindow tab1(TheClient->iWs);
-	tab1.Construct(group,155);
-	tab1.SetExtent(TPoint(70,00),TSize(10,10));
-	tab1.SetColor(TRgb::Gray256(170));
-	tab1.SetShadowHeight(1);
-	tab1.Activate();
-	RBlankWindow blank(TheClient->iWs);
-	blank.Construct(group,156);
-	blank.SetExtent(TPoint(50,10),TSize(100,100));
-	blank.SetColor(TRgb::Gray256(170));
-	blank.SetShadowHeight(0);
-	blank.Activate();
-//
-	tab1.Close();
-	tab1.Construct(group,166);
-	tab1.SetExtent(TPoint(50,00),TSize(10,10));
-	tab1.SetColor(TRgb::Gray256(170));
-	tab1.SetShadowHeight(1);
-	tab1.Activate();
-	blank.Close();
-	RBlankWindow blank2(TheClient->iWs);
-	blank2.Construct(group,177);
-	blank2.SetColor(TRgb::Gray256(255));
-	blank2.SetExtent(TPoint(10,10),TSize(100,120));
-	blank2.SetShadowHeight(2);
-	blank2.Activate();
-	TheClient->iWs.Flush();
-//
-	background.BeginRedraw();
-	TheClient->iGc->SetBrushColor(TRgb::Gray4(1));
-	TheClient->iGc->Clear();
-	background.EndRedraw();
-//
-	tab1.Close();
-	tab2.Close();
-	blank2.Close();
-	background.BeginRedraw();
-	TheClient->iGc->Clear();
-	TheClient->iGc->Deactivate();
-	background.EndRedraw();
-	TheClient->iWs.Finish();
-	TSize size=TheClient->iScreen->SizeInPixels();
-	TBool rectCompare = TheClient->iScreen->RectCompare(TRect(0,0,size.iWidth>>1,size.iHeight),TRect(size.iWidth>>1,0,(size.iWidth>>1)<<1,size.iHeight));	
-	TEST(rectCompare);
-	if(!rectCompare)
-		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare return value - Expected: %d, Actual: %d"), ETrue, rectCompare);
-	background.Close();
-	group.Close();
-	}
-
-void CTWindowTest::ClearRedraw(RWindow &aWindow, TRgb aRgb)
-	{
-	aWindow.BeginRedraw();
-	TheClient->iGc->Activate(aWindow);
-	TheClient->iGc->SetBrushColor(aRgb);
-	TheClient->iGc->Clear();
-	TheClient->iGc->Deactivate();
-	aWindow.EndRedraw();
-	}
-
-void CTWindowTest::CheckCorner(TCorner aCorner, const TInt *aInsetList)
-	{
-	TRect rect(TPoint(1,1),iBlankWin2->Size());
-	TPoint pos;
-	TInt direction;
-	if (aCorner==ECornerTL || aCorner==ECornerTR)
-		{
-		pos.iY=rect.iTl.iY;
-		direction=1;
-		}
-	else
-		{
-		pos.iY=rect.iBr.iY-1;
-		direction= -1;
-		}
-	if (aCorner==ECornerTL || aCorner==ECornerBL)
-		pos.iX=rect.iTl.iX;
-	else
-		pos.iX=rect.iBr.iX-8;
-	TRgb rgbBuf[8];
-	TPtr8 desc((TUint8 *)rgbBuf,sizeof(rgbBuf));
-	for(TInt count=0;count<ENumCornerInsets;count++,pos.iY+=direction)
-		{
-		iScreenDev->GetScanLine(desc,pos,8,EColor16MA);
-		if (aCorner==ECornerTR || aCorner==ECornerBR)
-			{
-			for(TInt loop=0;loop<4;loop++)
-				{
-				TRgb tmp=rgbBuf[loop];
-				rgbBuf[loop]=rgbBuf[8-1-loop];
-				rgbBuf[8-1-loop]=tmp;
-				}
-			}
-		// We can't compare rgb value from original source against screen value in EColor64K mode as
-		// the color component might be truncated (EColor64K is 16-bit using format RGB565),
-		// ie R or B components might be reduced from 8-bit to 5-bit and G from 8-bit to 6-bit
-		//
-		// For example: RGB value of Gray4(1) is 0x555555, it is drawn to screen in RGB565 as 0x52AA,
-		// when it's converted back to RGB for comparison, the value becomes 0x525552
-		TRgb col1=TRgb::Gray4(1);
-		TRgb col2=TRgb::Gray4(3);
-		if (iScreenDev->DisplayMode()==EColor64K)
-			{
-			col1=TRgb::Color64K(col1.Color64K());
-			col2=TRgb::Color64K(col2.Color64K());
-			}
-		TInt loop2=0;
-		for(;loop2<aInsetList[count];loop2++)
-			{	
-			TEST(rgbBuf[loop2]==col1);				
-			}
-		for(;loop2<8;loop2++)
-			{		
-			TEST(rgbBuf[loop2]==col2);
-			}
-		}
-	}
-
-void CTWindowTest::doCornerTest(TCornerType aCornerType, TInt aFlags)
-	{
-	const TInt *corners=corner0;
-	switch(aCornerType)
-		{
-		case EWindowCorner1:
-			corners=corner1;
-			break;
-		case EWindowCorner2:
-			corners=corner2;
-			break;
-		case EWindowCorner3:
-			corners=corner3;
-			break;
-		case EWindowCorner5:
-			corners=corner5;
-			break;
-		default:
-			break;
-		}
-	iBlankWin2->BaseWin()->SetCornerType(aCornerType,aFlags);
-	if (!(aFlags&EWindowCornerNotTL))
-		CheckCorner(ECornerTL, corners);
-	if (!(aFlags&EWindowCornerNotTR))
-		CheckCorner(ECornerTR, corners);
-	if (!(aFlags&EWindowCornerNotBL))
-		CheckCorner(ECornerBL, corners);
-	if (!(aFlags&EWindowCornerNotBR))
-		CheckCorner(ECornerBR, corners);
-//
-	if (aFlags&EWindowCornerNotTL)
-		CheckCorner(ECornerTL, corner0);
-	if (aFlags&EWindowCornerNotTR)
-		CheckCorner(ECornerTR, corner0);
-	if (aFlags&EWindowCornerNotBL)
-		CheckCorner(ECornerBL, corner0);
-	if (aFlags&EWindowCornerNotBR)
-		CheckCorner(ECornerBR, corner0);
-	}
-
-void CTWindowTest::doCornerTestsL()
-	{
-	iScreenDev=new(ELeave) CWsScreenDevice(TheClient->iWs);
-	User::LeaveIfError(iScreenDev->Construct(iTest->iScreenNumber));
-	iBlankWin1=new(ELeave) CTBlankWindow();
-	iBlankWin1->SetUpL(TPoint(1,1),TSize(100,50),TheClient->iGroup,*TheClient->iGc);
-	iBlankWin1->SetColor(TRgb::Gray4(1));
-	iBlankWin2=new(ELeave) CTBlankWindow();
-	iBlankWin2->SetUpL(TPoint(1,1),iBlankWin1->Size(),TheClient->iGroup,*TheClient->iGc);
-	iBlankWin2->SetColor(TRgb::Gray4(3));
-	iBlankWin2->BaseWin()->SetShadowHeight(0);
-	doCornerTest(EWindowCornerSquare,0);
-	doCornerTest(EWindowCornerSquare,EWindowCornerNotBL);
-	doCornerTest(EWindowCorner1,0);	// 0 + all corners missing
-	doCornerTest(EWindowCorner1,EWindowCornerNotTL|EWindowCornerNotTR|EWindowCornerNotBL|EWindowCornerNotBR);
-	doCornerTest(EWindowCorner2,0);	// 0 + all sets of 3 corners missing
-	doCornerTest(EWindowCorner2,EWindowCornerNotTR|EWindowCornerNotBL|EWindowCornerNotBR);
-	doCornerTest(EWindowCorner2,EWindowCornerNotTL|EWindowCornerNotBL|EWindowCornerNotBR);
-	doCornerTest(EWindowCorner2,EWindowCornerNotTL|EWindowCornerNotTR|EWindowCornerNotBR);
-	doCornerTest(EWindowCorner2,EWindowCornerNotTL|EWindowCornerNotTR|EWindowCornerNotBL);
-	doCornerTest(EWindowCorner3,0);	// 0 + all 4 individual corners missing
-	doCornerTest(EWindowCorner3,EWindowCornerNotTL);
-	doCornerTest(EWindowCorner3,EWindowCornerNotTR);
-	doCornerTest(EWindowCorner3,EWindowCornerNotBL);
-	doCornerTest(EWindowCorner3,EWindowCornerNotBR);
-	doCornerTest(EWindowCorner5,0);	// 0 + all pairs of corners missing
-	doCornerTest(EWindowCorner5,EWindowCornerNotTL|EWindowCornerNotTR);
-	doCornerTest(EWindowCorner5,EWindowCornerNotTL|EWindowCornerNotBL);
-	doCornerTest(EWindowCorner5,EWindowCornerNotTL|EWindowCornerNotBR);
-	doCornerTest(EWindowCorner5,EWindowCornerNotTR|EWindowCornerNotBL);
-	doCornerTest(EWindowCorner5,EWindowCornerNotTR|EWindowCornerNotBR);
-	doCornerTest(EWindowCorner5,EWindowCornerNotBL|EWindowCornerNotBR);
-	}
-
-void CTWindowTest::CornerTests()
-	{
-	TRAP_IGNORE(doCornerTestsL());
-	delete iBlankWin2;
-	delete iBlankWin1;
-	delete iScreenDev;
-	}
-
-LOCAL_C void doMegaTreeThread(TInt aScreenNumber)
-	{
-	CTrapCleanup::New();
-	RWsSession ws;
-	ws.Connect();
-	CWsScreenDevice *scrDev=new(ELeave) CWsScreenDevice(ws);
-	scrDev->Construct(aScreenNumber);
-	RWindowGroup group(ws);
-	group.Construct(1);
-	group.EnableReceiptOfFocus(EFalse);
-	RWindow parent(ws);
-	parent.Construct(group,123);
-	parent.Activate();
-	CWindowGc *gc=new(ELeave) CWindowGc(scrDev);
-	gc->Construct();
-	TSize max(parent.Size());
-	RWindow prev=parent;
-	TBool horiz=EFalse;
-	TInt color=0;
-	for(TInt count=0;count<100;count++)
-		{
-		RWindow win(ws);
-		if (win.Construct(prev,ENullWsHandle)!=KErrNone)
-			break;
-		win.SetExtent(horiz?TPoint(1,0):TPoint(0,1),max);
-		win.SetBackgroundColor(TRgb::Gray4(color));
-		color=(color+1)%4;
-		win.Activate();
-		win.BeginRedraw();
-		gc->Activate(win);
-		gc->Clear();
-		gc->Deactivate();
-		win.EndRedraw();
-		prev=win;
-		horiz=!horiz;
-		}
-	parent.SetVisible(EFalse);
-	parent.SetVisible(ETrue);
-	parent.SetPosition(TPoint(-1,-1));
-	parent.SetPosition(TPoint(0,0));
-	parent.Close();
-	ws.Close();
-	}
-
-LOCAL_C TInt MegaTreeThread(TAny *aScreenNumber)
-	{
-	TRAPD(err,doMegaTreeThread((TInt)aScreenNumber));
-	return(err);
-	}
-
-void CTWindowTest::CreateMegaTree()
-	{
-	const TUint KThreadHeapSize=0x2000;
-	RThread thread;
-	if (thread.Create(_L("MegaTree"),MegaTreeThread,KDefaultStackSize,KThreadHeapSize,KThreadHeapSize,(TAny*)iTest->iScreenNumber,EOwnerThread)==KErrNone)
-		{
-		TRequestStatus stat;
-		thread.Logon(stat);
-		thread.Resume();
-		User::WaitForRequest(stat);		
-		TEST(stat==KErrNone);
-		}
-	thread.Close();
-	}
-
-void CTWindowTest::TiledWindowTestL()
-	{
-	RWindow parent(TheClient->iWs);
-	User::LeaveIfError(parent.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&parent));
-	parent.SetExtent(TPoint(10,10),TSize(50,50));
-	parent.Activate();
-//
-	RWindow child1(TheClient->iWs);
-	User::LeaveIfError(child1.Construct(parent,ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&child1));
-	child1.SetExtent(TPoint(0,0),TSize(50,20));
-	child1.Activate();
-//
-	RWindow child2(TheClient->iWs);
-	User::LeaveIfError(child2.Construct(parent,ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&child2));
-	child2.SetExtent(TPoint(0,20),TSize(50,30));
-	child2.Activate();
-//
-	child1.BeginRedraw();
-	TSize rect1Size(25,20);
-	TheGc->Activate(child1);
-	TheGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
-	TheGc->DrawRect(TRect(rect1Size));
-	TheGc->DrawRect(TRect(TPoint(rect1Size.iWidth,0),rect1Size));
-	TheGc->Deactivate();
-	child1.EndRedraw();
-//
-	child2.BeginRedraw();
-	TSize rect2Size(25,30);
-	TheGc->Activate(child2);
-	TheGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
-	TheGc->DrawRect(TRect(rect2Size));
-	TheGc->DrawRect(TRect(TPoint(rect2Size.iWidth,0),rect2Size));
-	TheGc->Deactivate();
-	child2.EndRedraw();
-//
-// Left and right halves should be identical
-//
-	TBool rectCompare = !TheClient->iScreen->RectCompare(TRect(10,10,35,60),TRect(35,10,70,60));	
-	TEST(rectCompare);
-	if(!rectCompare)
-		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare return value - Expected: %d, Actual: %d"), ETrue, rectCompare);
-//
-	CleanupStack::PopAndDestroy(3);
-	}
-
-void CTWindowTest::TiledWindowTest2L()
-	{
-	TSize size(200,240);		//Parent Windows
-	TSize childSize(TSize(size.iWidth/2,size.iHeight/2));		//Child Windows
-	TSize dialogueSize(50,50);
-
-	TheClient->iWs.SetAutoFlush(ETrue);
-	RBlankWindow parent1(TheClient->iWs);
-	User::LeaveIfError(parent1.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&parent1));
-	parent1.SetExtent(TPoint(240,0),size);
-	parent1.SetColor(TRgb::Gray4(2));
-	parent1.Activate();
-
-	TheClient->iWs.SetAutoFlush(ETrue);
-	RBlankWindow parent2(TheClient->iWs);
-	User::LeaveIfError(parent2.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&parent2));
-	parent2.SetExtent(TPoint(440,0),size);
-	parent2.SetColor(TRgb::Gray4(2));
-	parent2.Activate();
-
-	TheClient->iWs.SetAutoFlush(ETrue);
-	RBlankWindow child1(TheClient->iWs);
-	User::LeaveIfError(child1.Construct(parent1,ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&child1));
-	child1.SetExtent(TPoint(0,0),childSize);
-	child1.SetColor(TRgb::Gray4(2));
-	child1.Activate();
-
-	TheClient->iWs.SetAutoFlush(ETrue);
-	RBlankWindow child2(TheClient->iWs);
-	User::LeaveIfError(child2.Construct(parent1,ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&child2));
-	child2.SetExtent(TPoint(0,childSize.iHeight),childSize);
-	child2.SetColor(TRgb::Gray4(2));
-	child2.Activate();
-
-	TheClient->iWs.SetAutoFlush(ETrue);
-	RBlankWindow child3(TheClient->iWs);
-	User::LeaveIfError(child3.Construct(parent1,ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&child3));
-	child3.SetExtent(TPoint(childSize.iWidth,0),TSize(childSize.iWidth,size.iHeight));
-	child3.SetColor(TRgb::Gray4(2));
-	child3.Activate();
-
-	TPoint dialoguePos(375,93);
-	TheClient->iWs.SetAutoFlush(ETrue);
-	RBlankWindow dialog1(TheClient->iWs);
-	User::LeaveIfError(dialog1.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&dialog1));
-	dialog1.SetExtent(dialoguePos,dialogueSize);
-	dialog1.SetColor(TRgb::Gray4(3));
-	dialog1.SetShadowHeight(4);
-	dialog1.Activate();
-
-	TheClient->iWs.SetAutoFlush(ETrue);
-	RBlankWindow dialog2(TheClient->iWs);
-	User::LeaveIfError(dialog2.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle));
-	CleanupStack::PushL(TCleanupItem(CleanUpWindow,&dialog2));
-	dialog2.SetExtent(TPoint(dialoguePos.iX+size.iWidth,dialoguePos.iY),dialogueSize);
-	dialog2.SetColor(TRgb::Gray4(3));
-	dialog2.SetShadowHeight(0);
-	dialog2.Activate();
-
-	TInt ii;
-	for (ii=400;ii>374;ii-=25)
-		dialog1.SetPosition(TPoint(ii,93));
-	TheClient->iWs.SetAutoFlush(EFalse);
-	CleanupStack::PopAndDestroy(7);
-	}
-
-void CTWindowTest::ColorTestL()
-	{
-	if (iTest->MaxGrays() == 0)
-		return;
-
-	_LIT(KSet,"AUTO  Color Test ");
-	INFO_PRINTF1(KSet);
-	RWindow window(TheClient->iWs);
-	User::LeaveIfError(window.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle));
-	PushWindowL(&window);
-	window.SetExtent(TPoint(10,10),TSize(50,50));
-	window.Activate();
-	TInt colorMode,mode;
-	TInt currentMode=TheClient->iScreen->DisplayMode();	
-	TEST(currentMode==EGray4 || currentMode==EColor16 || currentMode==EColor256 || currentMode == EColor64K);
-	if(currentMode!=EGray4 && currentMode!=EColor16 && currentMode!=EColor256 && currentMode != EColor64K)
-		INFO_PRINTF5(_L("TheClient->iScreen->DisplayMode() return value - Expected: %d or %d or %d, Actual: %d"), EGray4, EColor16, EColor256, currentMode);
-	INFO_PRINTF1(_L(" Done Setup"));
-	for(colorMode=EGray4;colorMode<EColorLast;colorMode++)
-		{
-		INFO_PRINTF1(_L(" Loop 1"));
-		if (colorMode==ERgb || (colorMode==EGray256 && TDisplayModeUtils::IsDisplayModeColor(REINTERPRET_CAST(TDisplayMode&,currentMode))) ||  (colorMode==EGray256 && TDisplayModeUtils::IsDisplayModeColor(REINTERPRET_CAST(TDisplayMode&,currentMode))) )
-			continue;
-		User::LeaveIfError(window.SetRequiredDisplayMode((TDisplayMode&)colorMode));
-		mode=window.DisplayMode();
-		if (!(mode==currentMode || mode==colorMode))
-			{
-			_LIT(KModes," Failed in Loop1  SetTo=%d, Actual=%d, Current=%d");
-			TBuf<64> log;
-			log.Format(KModes,colorMode,mode,currentMode);
-			INFO_PRINTF1(log);
-			}
-		if (mode>ERgb && colorMode==EColor64K)
-			break;	
-		TEST(mode==currentMode || mode==colorMode );
-		if (mode!=currentMode && mode!=colorMode)
-			INFO_PRINTF4(_L("window.DisplayMode() return value - Expected: %d or %d, Actual: %d"), currentMode, colorMode, mode);
-		INFO_PRINTF1(_L(" Loop 2"));
-		if (mode>currentMode)
-			currentMode=mode;
-		if (colorMode==EColor16)
-			window.SetSize(TSize(40,60));
-		else if (colorMode==EColor4K)
-			window.SetSize(TSize(60,40));
-		mode=TheClient->iScreen->DisplayMode();
-		if(TDisplayModeUtils::NumDisplayModeColors(STATIC_CAST(TDisplayMode,currentMode))==16777216)
-			{
-			TEST(mode==CFbsDevice::DisplayMode16M());
-			if (mode!=CFbsDevice::DisplayMode16M())
-				INFO_PRINTF3(_L("window.DisplayMode() return value - Expected: %d, Actual: %d"), CFbsDevice::DisplayMode16M(), mode);
-			}
-		else
-			{		
-			TEST(currentMode==mode || currentMode==colorMode);
-			if (currentMode!=mode && currentMode!=colorMode)
-				INFO_PRINTF3(_L("TheClient->iScreen->DisplayMode() return value  return value - Expected: %d , Actual: %d"), currentMode, mode);
-			}
-		}
-	INFO_PRINTF1(_L(" Done First Loop"));
-	TInt color,gray;
-	TDisplayMode defMode=TheClient->iWs.GetDefModeMaxNumColors(color,gray);
-	TInt screenNo =TheClient->iScreen->GetScreenNumber();
-	TDisplayMode defModeForScreen=TheClient->iWs.GetDefModeMaxNumColors(screenNo,color,gray); 
-	TEST(defMode==defModeForScreen);
-	if (defMode!=defModeForScreen)
-		INFO_PRINTF3(_L("TheClient->iScreen->DisplayMode() return value  return value - Expected: %d , Actual: %d"), defMode, defModeForScreen);
-	if (color==16777216 && gray==256)
-		{		
-		TEST(defMode==EGray4 || defMode==EColor256 || defMode==EColor64K);		//WINS
-		if (defMode!=EGray4 && defMode!=EColor256 && defMode != EColor64K)
-			INFO_PRINTF4(_L("TheClient->iWs.GetDefModeMaxNumColors(color,gray) return value  return value - Expected: %d or %d, Actual: %d"), EGray4, EColor256, defMode);
-		}
-	else
-		{
-		if (color==0 && gray==16)
-			{		
-			TEST(defMode==EGray4);		//S5 family
-			if (defMode!=EGray4)
-				INFO_PRINTF3(_L("TheClient->iScreen->DisplayMode() return value  return value - Expected: %d , Actual: %d"), EGray4, defMode);
-			}
-		else
-			{
-			TLogMessageText buf;
-			_LIT(KColorSettings,"##Data  Most Colors=%d, Most Greys=%d, DefMode=%d");
-			buf.Format(KColorSettings,color,gray,defMode);
-			TheClient->iWs.LogMessage(buf);
-			TheClient->iWs.Flush();		
-			TEST(defMode==EGray4 || defMode==EColor256);
-			if (defMode!=EGray4 && defMode!=EColor256)
-				INFO_PRINTF4(_L("TheClient->iWs.GetDefModeMaxNumColors(color,gray) return value  return value - Expected: %d or %d, Actual: %d"), EGray4, EColor256, defMode);
-			}
-		}
-	CArrayFixFlat<TInt> *colorModes=new(ELeave) CArrayFixFlat<TInt>(1);
-	CleanupStack::PushL(colorModes);
-	User::LeaveIfError(TheClient->iWs.GetColorModeList(screenNo,colorModes));
-	TDisplayMode mostColor=ENone;
-	TDisplayMode lastGray=ENone;
-	TDisplayMode dispMode;
-	TInt ii;
-	TInt colorModes16M = 0;
-	INFO_PRINTF1(_L(" Done Setup 2"));
-	for (ii=0;ii<colorModes->Count();ii++)
-		{
-		dispMode=(TDisplayMode)(*colorModes)[ii];	
-		TEST(dispMode!=ERgb);
-		if (dispMode==ERgb)
-			INFO_PRINTF3(_L("(TDisplayMode)(*colorModes)[i] return value - Not Expected: %d , Actual: %d"), ERgb, dispMode);	
-		TEST(dispMode!=ENone);
-		if (dispMode==ENone)
-			INFO_PRINTF3(_L("(TDisplayMode)(*colorModes)[i] return value - Not Expected: %d , Actual: %d"), ENone, dispMode);
-		if (dispMode<=EGray256)
-			lastGray=dispMode;
-		else
-			mostColor=dispMode;
-		if(dispMode == EColor16M || dispMode == EColor16MU || dispMode == EColor16MA)
-			colorModes16M++;
-		}	
-	TEST(mostColor!=ERgb);
-	if (mostColor==ERgb)
-		INFO_PRINTF3(_L("mostColor - Not Expected: %d , Actual: %d"), ERgb, mostColor);	
-	TEST(colorModes16M <= 1);
-	if (colorModes16M > 1)
-		INFO_PRINTF3(_L("Number of times color Modes 16M - less than or equal to: %d , Actual: %d"), 1, colorModes16M);
-#if defined(__WINS__)	
-	TEST(colorModes16M == 1);
-	if (colorModes16M != 1)
-		INFO_PRINTF3(_L("Number of times color Modes 16M on wins - equal to: %d , Actual: %d"), 1, colorModes16M);
-#endif
-	TInt retVal;
-	if (color==0)
-		{
-		TEST(mostColor==ENone);
-		if (mostColor!=ENone)
-			INFO_PRINTF3(_L("Most color - equal to: %d , Actual: %d"), ENone ,mostColor);
-		}
-	else
-		{
-		retVal = TDisplayModeUtils::NumDisplayModeColors(mostColor);		
-		TEST(color==retVal);
-		if (color!=retVal)
-			INFO_PRINTF3(_L("TDisplayModeUtils::NumDisplayModeColors(mostColor) return value - equal to: %d , Actual: %d"), TDisplayModeUtils::NumDisplayModeColors(mostColor), retVal);
-		}
-	if (gray==0)
-		{		
-		TEST(lastGray==ENone);
-		if (lastGray!=ENone)
-			INFO_PRINTF3(_L("LastGray - equal to: %d , Actual: %d"), ENone, lastGray);
-		}
-	else
-		{
-		retVal = TDisplayModeUtils::NumDisplayModeColors(lastGray);	
-		TEST(gray==retVal);	
-		if(gray!=retVal)
-			INFO_PRINTF3(_L("Gray - equal to: %d , Actual: %d"), retVal, gray);
-		}
-	retVal = TDisplayModeUtils::NumDisplayModeColors(ENone);	
-	TEST(retVal==0);
-	if (retVal!=0)
-		INFO_PRINTF3(_L("TDisplayModeUtils::NumDisplayModeColors(ENone) return value - equal to: %d , Actual: %d"), 0, retVal);	
-	CleanupStack::PopAndDestroy(2);		//window and mode-array
-	}
-
-void CTWindowTest::TestInvalidFunctions2L()
-//
-// This code casts windows to group windows and vice-versa and then sends messages for the 'cast' that
-// should not be sent to the original type of window. These should all result in panics
-//
-	{
-	for (TInt winType=1;winType<7;++winType)		//Skip type 0 (RWindowTreeNode)
-		for (TInt panic=0;;panic++)
-			{
-			TBool testFinished=EFalse;
-			TEST(iTest->TestWsPanicL(DoPanicTest3,EWservPanicOpcode,EWinTypeFactor*winType+panic,(TAny*)iTest->iScreenNumber,&testFinished));
-			if (testFinished)
-				break;
-			}
-	iTest->CloseAllPanicWindows();
-	}
-
-void CTWindowTest::TestDeletedParentPanics1L()
-	{
-	for (TInt winType=0;winType<7;++winType)
-		{
-		if (winType==1)		//Skip type 1 (RWindowGroup)
-			++winType;
-		for (TInt panic=0;;panic++)
-			{
-			TBool testFinished=EFalse;
-			TEST(iTest->TestWsPanicL(DoPanicTest4,EWservPanicParentDeleted,EWinTypeFactor*winType+panic,(TAny*)iTest->iScreenNumber,&testFinished));
-			if (testFinished)
-				break;
-			}
-		}
-	iTest->CloseAllPanicWindows();
-	}
-
-void CTWindowTest::TestDeletedParentPanics2L()
-	{
-	for (TInt panic=0;;panic++)
-		{
-		TBool testFinished=EFalse;
-		TEST(iTest->TestWsPanicL(DoPanicTest5,EWservPanicParentDeleted,panic,(TAny*)iTest->iScreenNumber,&testFinished));
-		if (testFinished)
-			break;
-		}
-	iTest->CloseAllPanicWindows();
-	}
-
-void CTWindowTest::Bug1L()
-//
-// Test a defect found with WSERV 099 that caused a full Eikon ROM to crash before even the splach screen appeared
-//
-	{
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-	// use correct screen
-	CWsScreenDevice* screen = new (ELeave) CWsScreenDevice(ws);
-	CleanupStack::PushL(screen);
-	User::LeaveIfError(screen->Construct(iTest->iScreenNumber));
-
-	RWindowGroup group(ws);
-	group.Construct(344);
-	group.EnableReceiptOfFocus(EFalse);		//Not done by Eikon, but needed to stop shell window comming to front.
-	RBlankWindow blank(ws);
-	blank.Construct(group,345);
-	blank.SetOrdinalPosition(0,1000);
-	blank.Activate();
-	RWindow window(ws);
-	window.Construct(group,346);
-
-	//Must delete this window to tidy up
-	window.Close();
-	blank.Close();
-	group.Close();
-
-	CleanupStack::PopAndDestroy(screen);
-	ws.Close();
-	}
-
-void CTWindowTest::TestWindowDelete()
-	{
-	TInt handles = 344;
-	TInt err = KErrNone;
-	TInt loop = 0;
-	TInt allocFailRate = 0;
-	
-	RWindowGroup group(TheClient->iWs);
-	RWindow parent1(TheClient->iWs);
-	RWindow child1(TheClient->iWs);
-	RWindow testWindow(TheClient->iWs);
-	
-	while (loop < 5)
-		{
-		err = group.Construct(++handles, EFalse);		
-		if (err == KErrNone)
-			{
-			TheClient->iWs.HeapSetFail(RHeap::EDeterministic, allocFailRate);
-
-			//Create parent 1
-			err = parent1.Construct(group,++handles);
-			if (err == KErrNone)
-				{
-				parent1.SetExtent(TPoint(10,10),TSize(50,50));
-				parent1.Activate();
-				}			
-			}
-		//Create child 1
-		if (err == KErrNone)
-			{
-			err = child1.Construct(parent1,++handles);
-			if (err == KErrNone)
-				{
-				child1.SetExtent(TPoint(),TSize(50,20));
-				child1.Activate();
-				}
-			//Only delete the parent 1, but not the child 1
-			parent1.Close();	
-			}
-		
-		if (err == KErrNone) 
-			{			
-			//Create testWindow
-			err = testWindow.Construct(group,++handles);
-			if (err == KErrNone)
-				{
-				testWindow.SetExtent(TPoint(0,20),TSize(50,30));
-				testWindow.Activate();
-				}
-			}
-		TheClient->iWs.HeapSetFail(RAllocator::ENone, 0);
-			
-		child1.Close();
-		testWindow.Close();
-		group.Close();
-		++allocFailRate;
-		loop = (err == KErrNone) ? loop + 1 : 0; 
-		}
-	}
-void CTWindowTest::Bug2L()
-//
-// Test a defect ...
-//
-	{
-	TSize offset(20,20);
-	TRect screen(TheClient->iScreen->SizeInPixels()-offset);
-	TRgb color;
-	RWsSession ws1;
-	User::LeaveIfError(ws1.Connect());
-	ws1.SetAutoFlush(ETrue);
-
-	// use correct screen
-	//
-	CWsScreenDevice* scr1 = new (ELeave) CWsScreenDevice(ws1);
-	CleanupStack::PushL(scr1);
-	User::LeaveIfError(scr1->Construct(iTest->iScreenNumber));
-
-	RWsSession ws2;
-	User::LeaveIfError(ws2.Connect());
-	ws2.SetAutoFlush(ETrue);
-
-	// use correct screen
-	//
-	CWsScreenDevice* scr2 = new (ELeave) CWsScreenDevice(ws2);
-	CleanupStack::PushL(scr2);
-	User::LeaveIfError(scr2->Construct(iTest->iScreenNumber));
-
-	RWindowGroup group1a(ws1);
-	group1a.Construct(344);
-	group1a.EnableReceiptOfFocus(EFalse);
-	group1a.SetOrdinalPosition(0,5);
-	RBlankWindow blank1a(ws1);
-	blank1a.Construct(group1a,345);
-	color=TRgb::Gray4(0);
-	blank1a.SetColor(color);
-	blank1a.SetExtent(screen.iTl,screen.Size());
-	blank1a.EnableBackup();
-	blank1a.Activate();
-
-	RWindowGroup group2(ws2);
-	group2.Construct(342);
-	group2.EnableReceiptOfFocus(EFalse);
-	group2.SetOrdinalPosition(0,5);
-	RBlankWindow blank2(ws2);
-	blank2.Construct(group2,347);
-	color=TRgb::Gray4(1);
-	blank2.SetColor(color);
-	blank2.SetExtent(screen.iTl+TSize(20,0),screen.Size());
-	blank2.EnableBackup();
-	blank2.Activate();
-
-	RWindowGroup group1b(ws1);
-	group1b.Construct(343);
-	//group1b.EnableReceiptOfFocus(EFalse);
-	group1b.SetOrdinalPosition(0,5);
-	RBlankWindow blank1b(ws1);
-	blank1b.Construct(group1b,346);
-	color=TRgb::Gray4(2);
-	blank1b.SetColor(color);
-	blank1b.SetExtent(screen.iTl+offset,screen.Size());
-	blank1b.EnableBackup();
-	blank1b.Activate();
-
-	group1b.Close();
-	blank1a.Close();
-	blank1b.Close();
-	blank2.Close();
-	group1a.Close();
-	group2.Close();
-
-	CleanupStack::PopAndDestroy(2,scr1);
-	ws1.Close();
-	ws2.Close();
-	}
-
-void CTWindowTest::Bug3L()
-//
-// Actiate then make visible and backup behind window caused panic.
-//
-	{
-	TSize offset(20,20);
-	TRect screen(TheClient->iScreen->SizeInPixels()-offset);
-	TRgb color;
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-	ws.SetAutoFlush(ETrue);
-
-	// use correct screen
-	//
-	CWsScreenDevice* scr = new (ELeave) CWsScreenDevice(ws);
-	CleanupStack::PushL(scr);
-	User::LeaveIfError(scr->Construct(iTest->iScreenNumber));
-
-	RWindowGroup group(ws);
-	group.Construct(348);
-	group.EnableReceiptOfFocus(EFalse);
-	RBlankWindow blank1(ws);
-	blank1.Construct(group,341);
-	color=TRgb::Gray4(1);
-	blank1.SetColor(color);
-	blank1.SetExtent(screen.iTl,screen.Size());
-	blank1.EnableBackup();
-	blank1.SetVisible(EFalse);
-	blank1.Activate();
-	blank1.SetVisible(ETrue);
-	RBlankWindow blank2(ws);
-	blank2.Construct(group,342);
-	color=TRgb::Gray4(2);
-	blank2.SetColor(color);
-	blank2.SetExtent(screen.iTl,screen.Size());
-	blank2.EnableBackup();
-	blank2.SetVisible(EFalse);
-	blank2.SetVisible(ETrue);
-	blank2.Activate();
-	group.Close();
-	blank1.Close();
-	blank2.Close();
-
-	CleanupStack::PopAndDestroy(scr);
-	ws.Close();
-	}
-
-void CTWindowTest::ErrorCodesL()
-	{
-	RWsSession ws;
-	User::LeaveIfError(ws.Connect());
-	// use correct screen
-	//
-	CWsScreenDevice* scr = new (ELeave) CWsScreenDevice(ws);
-	CleanupStack::PushL(scr);
-	User::LeaveIfError(scr->Construct(iTest->iScreenNumber));
-
-
-	RWindowGroup group(ws);
-	group.Construct(349);
-	group.EnableReceiptOfFocus(EFalse);
-	RWindow window(TheClient->iWs);
-	User::LeaveIfError(window.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle));
-	TInt retVal = window.MoveToGroup(22222);		
-	TEST(retVal==KErrNotFound);
-	if (retVal!=KErrNotFound)
-		INFO_PRINTF3(_L("window.MoveToGroup(22222) return value - equal to: %d , Actual: %d"), KErrNotFound, retVal);
-	retVal = window.MoveToGroup(group.Identifier());	
-	TEST(retVal==KErrNotFound);
-	if (retVal!=KErrNotFound)
-		INFO_PRINTF3(_L("window.MoveToGroup(group.Identifier()) return value - equal to: %d , Actual: %d"), KErrNotFound, retVal);
-	window.Close();
-	group.Close();
-
-	CleanupStack::PopAndDestroy(scr);
-	ws.Close();
-	}
-
-void CTWindowTest::BackColorBugL()
-//
-// Test a defect with window being drawn with the wrong background color when they are moved on the screen
-//
-	{
-	TSize scrSize(TheClient->iScreen->SizeInPixels());
-	TSize checkSize(12,10);			//X-Size needs to be multiple of 4 due to BITGDI change/defect
-	CBlankWindow* win;
-	win=new(ELeave) CBlankWindow(TRgb(16,16,240));
-	CleanupStack::PushL(win);
-	win->SetUpL(TPoint(5,5),scrSize-TSize(10,10),TheClient->iGroup,*TheClient->iGc);
-	TInt mode=win->BaseWin()->SetRequiredDisplayMode(EColor256);
-	const TDisplayMode actualMode=reinterpret_cast<TDisplayMode&>(mode);
-	if (!TDisplayModeUtils::IsDisplayModeColor(actualMode) || TDisplayModeUtils::NumDisplayModeColors(actualMode)<256)
-		{
-		CleanupStack::PopAndDestroy(win);
-		return;
-		}
-	win->RealDraw(ETrue);
-	win->Win()->SetBackgroundColor(TRgb(64,224,64));
-	CBlankWindow* win3;
-	win3=new(ELeave) CBlankWindow(TRgb::Gray16(8));
-	CleanupStack::PushL(win3);
-	win3->SetUpL(TPoint(12,12),checkSize,TheClient->iGroup,*TheClient->iGc);
-	win3->BaseWin()->SetRequiredDisplayMode(EColor256);
-	CBlankWindow* win2;
-	win2=new(ELeave) CBlankWindow(TRgb(240,16,16));
-	CleanupStack::PushL(win2);
-	win2->SetUpL(TPoint(10,scrSize.iHeight/2),TSize(scrSize.iWidth/3,scrSize.iHeight/2-10),TheClient->iGroup,*TheClient->iGc);
-	win2->BaseWin()->SetRequiredDisplayMode(EColor256);
-	win2->RealDraw(EFalse);
-
-	win2->Win()->SetBackgroundColor(TRgb::Gray16(8));
-	win2->SetExt(TPoint(scrSize.iWidth/4,30),TSize(scrSize.iWidth/2,2*scrSize.iHeight/3));
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-	if (!CheckRect(win2,win3,TRect(checkSize)))
-		{
-		_LIT(KLog,"After window is moved and resizes it doesn't matches the other window");
-		LOG_MESSAGE(KLog);
-		//Code to save a screen shot useful if this test fails
-		/*_LIT(KTest,"E:\\logs\\testexecute\\Window%d");
-		TBuf<64> buf;
-		buf.Format(KTest,iTest->iState);
-		TInt err=iTest->SaveScreen(buf);
-		_LIT(KLogSave,"Saved screenshot to file %S, (err=%d)");
-		LOG_MESSAGE3(KLogSave,&buf,err);*/
-		}
-	TheClient->WaitForRedrawsToFinish();
-	CleanupStack::PopAndDestroy(3,win);
-	}
-
-void CTWindowTest::FocusChangedL()
-//
-// Test that the focus change is available when the redraw is
-// it should be available before, but it isn't always possible to test that
-//
-	{
-	_LIT(KThreadName,"MoveGroup");
-	_LIT(KEventWaiting,"Event Waiting when none expected.");
-	TInt command;
-	iThreadParam.iScreenNumber=iTest->iScreenNumber;
-	iFirstFunction=TThreadStartUp(CTWindowTest::MoveGroup,&iThreadParam);
-	TRequestStatus status;
-	TSize scrSize(TheClient->iScreen->SizeInPixels());
-	CTWindowGroup* group1=new(ELeave) CTWindowGroup(TheClient);
-	group1->ConstructL();
-	CleanupStack::PushL(group1);
-	TInt winId1=group1->GroupWin()->Identifier();
-	CBlankWindow* win1=new(ELeave) CBlankWindow(TRgb::Gray4(1));
-	CleanupStack::PushL(win1);
-	win1->SetUpL(TPoint(1,1),TSize(2*scrSize.iWidth/3,2*scrSize.iHeight/3),group1,*TheClient->iGc);
-	win1->RealDraw(ETrue);
-	win1->Win()->SetBackgroundColor(TRgb::Gray4(3));
-	CTWindowGroup* group2=new(ELeave) CTWindowGroup(TheClient);
-	group2->ConstructL();
-	CleanupStack::PushL(group2);
-	TInt winId2=group2->GroupWin()->Identifier();
-	CBlankWindow* win2=new(ELeave) CBlankWindow(TRgb::Gray4(2));
-	CleanupStack::PushL(win2);
-	win2->SetUpL(TPoint(scrSize.iWidth/3-5,scrSize.iHeight/3-5),TSize(2*scrSize.iWidth/3,2*scrSize.iHeight/3),group2,*TheClient->iGc);
-	win2->RealDraw(ETrue);
-	win2->Win()->SetBackgroundColor(TRgb::Gray4(0));
-
-	TheClient->WaitForRedrawsToFinish();
-	TheClient->WaitForAllEventProcessingToFinish();
-	command=winId1;
-	iThreadParam.iCommand=command;
-	TBool noEventWaiting=!TheClient->IsEventWaiting();
-	TEST(noEventWaiting);
-	if (!noEventWaiting)
-		LOG_MESSAGE(KEventWaiting);
-	_LIT(KTest1,"FocusChangedL: 1st test completed");
-	LOG_MESSAGE(KTest1);
-	CProcess* iMoveGroup=CProcess::NewSimpleThreadL(KThreadName,&iFirstFunction,&status);
-	User::WaitForRequest(status);
-	delete iMoveGroup;
-	TEST(TheClient->WaitForEvent());
-	TheClient->WaitForAllEventProcessingToFinish();
-
-	command=winId2;
-	iThreadParam.iCommand=command;
-	TheClient->WaitForRedrawsToFinish();
-	noEventWaiting=!TheClient->IsEventWaiting();
-	TEST(noEventWaiting);
-	if (!noEventWaiting)
-		LOG_MESSAGE(KEventWaiting);
-	_LIT(KTest2,"FocusChangedL: 2nd test completed");
-	LOG_MESSAGE(KTest2);
-	iMoveGroup=CProcess::NewSimpleThreadL(KThreadName,&iFirstFunction,&status);
-	User::WaitForRequest(status);
-	delete iMoveGroup;
-	TEST(TheClient->WaitForEvent());
-	TheClient->WaitForAllEventProcessingToFinish();
-
-	command=winId2|(1<<EPosShift);
-	iThreadParam.iCommand=command;
-	TheClient->WaitForRedrawsToFinish();
-	noEventWaiting=!TheClient->IsEventWaiting();
-	TEST(noEventWaiting);
-	if (!noEventWaiting)
-		LOG_MESSAGE(KEventWaiting);
-	_LIT(KTest3,"FocusChangedL: 3rd test completed");
-	LOG_MESSAGE(KTest3);
-	iMoveGroup=CProcess::NewSimpleThreadL(KThreadName,&iFirstFunction,&status);
-	User::WaitForRequest(status);
-	delete iMoveGroup;
-	TEST(TheClient->WaitForEvent());
-	TheClient->WaitForAllEventProcessingToFinish();
-
-	command=winId1|(1<<EPosShift);
-	iThreadParam.iCommand=command;
-	TheClient->WaitForRedrawsToFinish();
-	noEventWaiting=!TheClient->IsEventWaiting();
-	TEST(noEventWaiting);
-	if (!noEventWaiting)
-		LOG_MESSAGE(KEventWaiting);
-	_LIT(KTest4,"FocusChangedL: 4th test completed");
-	LOG_MESSAGE(KTest4);
-	iMoveGroup=CProcess::NewSimpleThreadL(KThreadName,&iFirstFunction,&status);
-	User::WaitForRequest(status);
-	delete iMoveGroup;
-	TEST(TheClient->WaitForEvent());
-	TheClient->WaitForAllEventProcessingToFinish();
-
-	TheClient->WaitForRedrawsToFinish();
-	noEventWaiting=!TheClient->IsEventWaiting();
-	TEST(noEventWaiting);
-	if (!noEventWaiting)
-		LOG_MESSAGE(KEventWaiting);
-	_LIT(KTest5,"FocusChangedL: 5th and last test completed");
-	LOG_MESSAGE(KTest5);
-	CleanupStack::PopAndDestroy(2,group2);
-	TheClient->Flush();
-	TEST(TheClient->WaitForEvent());
-	TheClient->WaitForAllEventProcessingToFinish();
-	CleanupStack::PopAndDestroy(2,group1);
-	}
-
-#define ALT_PRI 78
-void CTWindowTest::EventsToAllL()
-	{
-	CTClient* client1=new(ELeave) CTClient;
-	CleanupStack::PushL(client1);
-	client1->SetScreenNumber(iTest->iScreenNumber);
-	client1->ConstructL();
-	CTClient* client2=new(ELeave) CTClient;
-	CleanupStack::PushL(client2);
-	client2->SetScreenNumber(iTest->iScreenNumber);
-	client2->ConstructL();
-	CEvWindowGroup* group1a=CEvWindowGroup::NewLC(client1,this);
-	CEvWindowGroup* group1b=CEvWindowGroup::NewLC(client1,this);
-	CEvWindowGroup* group2a=CEvWindowGroup::NewLC(client2,this);
-	CEvWindowGroup* group2b=CEvWindowGroup::NewLC(client2,this);
-	/*_LIT(KLog,"Window Group Id's: %d,%d,%d,%d");
-	LOG_MESSAGE5(KLog,group1a->GroupWin()->Identifier(),group1b->GroupWin()->Identifier(),group2a->GroupWin()->Identifier(),group2b->GroupWin()->Identifier());*/
-	group1a->SendEvent(KBaseUserEvent+1);
-	group2b->SendEvent(KBaseUserEvent+2);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	TWsEvent event;
-	// Assigned random value because before PREQ1226, TWsevent's data wasn't zero initialised.
-	// In techview, following function
-	// void CEikServAppUi::HandleSystemEventL(const TWsEvent& aEvent)
-	// was relaying on TWsevent's data not be zero 
-	*(event.Int()) = 0XCCCCCCCC;
-	event.SetType(KBaseUserEvent+3);
-	group1a->SetExpectedEvent(KBaseUserEvent+3);
-	group1b->SetExpectedEvent(KBaseUserEvent+3);
-	group2a->SetExpectedEvent(KBaseUserEvent+3);
-	group2b->SetExpectedEvent(KBaseUserEvent+3);
-	TheClient->iWs.SendEventToAllWindowGroups(event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	event.SetType(KBaseUserEvent+4);
-	group1a->SetExpectedEvent(KBaseUserEvent+4);
-	group1b->SetExpectedEvent(KBaseUserEvent+4);
-	group2a->SetExpectedEvent(KBaseUserEvent+4);
-	group2b->SetExpectedEvent(KBaseUserEvent+4);
-	TheClient->iWs.SendEventToAllWindowGroups(event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	event.SetType(KBaseUserEvent+5);
-	//group1a->SetExpectedEvent(KBaseUserEvent+5);
-	group1b->SetExpectedEvent(KBaseUserEvent+5);
-	//group2a->SetExpectedEvent(KBaseUserEvent+5);
-	group2b->SetExpectedEvent(KBaseUserEvent+5);
-	TheClient->iWs.SendEventToOneWindowGroupsPerClient(event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	group1a->WinTreeNode()->SetOrdinalPosition(0);
-	client1->Flush();
-	event.SetType(KBaseUserEvent+6);
-	group1a->SetExpectedEvent(KBaseUserEvent+6);
-	group2b->SetExpectedEvent(KBaseUserEvent+6);
-	TheClient->iWs.SendEventToOneWindowGroupsPerClient(event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	group2b->WinTreeNode()->SetOrdinalPosition(6);
-	client2->Flush();
-	event.SetType(KBaseUserEvent+7);
-	group1a->SetExpectedEvent(KBaseUserEvent+7);
-	group2a->SetExpectedEvent(KBaseUserEvent+7);
-	TheClient->iWs.SendEventToOneWindowGroupsPerClient(event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	event.SetType(KBaseUserEvent+8);
-	group1a->SetExpectedEvent(KBaseUserEvent+8);
-	group1b->SetExpectedEvent(KBaseUserEvent+8);
-	group2a->SetExpectedEvent(KBaseUserEvent+8);
-	group2b->SetExpectedEvent(KBaseUserEvent+8);
-	TheClient->iWs.SendEventToAllWindowGroups(0,event);
-	group1a->WinTreeNode()->SetOrdinalPosition(0,ALT_PRI);
-	client1->Flush();
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	event.SetType(KBaseUserEvent+9);
-	group1a->SetExpectedEvent(KBaseUserEvent+9);
-	TheClient->iWs.SendEventToAllWindowGroups(ALT_PRI,event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	group2b->WinTreeNode()->SetOrdinalPosition(0,ALT_PRI);
-	client2->Flush();
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	event.SetType(KBaseUserEvent+10);
-	group1a->SetExpectedEvent(KBaseUserEvent+10);
-	group2b->SetExpectedEvent(KBaseUserEvent+10);
-	TheClient->iWs.SendEventToAllWindowGroups(ALT_PRI,event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	event.SetType(KBaseUserEvent+11);
-	group1b->SetExpectedEvent(KBaseUserEvent+11);
-	group2a->SetExpectedEvent(KBaseUserEvent+11);
-	TheClient->iWs.SendEventToAllWindowGroups(0,event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	event.SetType(KBaseUserEvent);
-	group1a->SetExpectedEvent(KBaseUserEvent);
-	group1b->SetExpectedEvent(KBaseUserEvent);
-	group2a->SetExpectedEvent(KBaseUserEvent);
-	group2b->SetExpectedEvent(KBaseUserEvent);
-	TheClient->iWs.SendEventToAllWindowGroups(event);
-	client1->WaitForAllEventProcessingToFinish();
-	client2->WaitForAllEventProcessingToFinish();
-	CleanupStack::PopAndDestroy(6,client1);
-	}
-
-void DestroyWindow(TAny* aWindow)
-	{
-	static_cast<RWindowTreeNode*>(aWindow)->Destroy();
-	}
-
-void CTWindowTest::GroupIdL()
-	{
-	const TInt numWindows=10;
-	RWindowGroup group(TheClient->iWs);
-	CleanupClosePushL(group);
-	User::LeaveIfError(group.Construct(ENullWsHandle));
-	TInt id=group.Identifier();
-	RWindowTreeNode* prevWindow=&group;
-	TInt ii;
-	for (ii=0;ii<numWindows;++ii)
-		{
-		RBlankWindow* window=new(ELeave) RBlankWindow(TheClient->iWs);
-		CleanupStack::PushL(TCleanupItem(&DestroyWindow,window));
-		User::LeaveIfError(window->Construct(*prevWindow,ENullWsHandle));
-		TInt retVal = window->WindowGroupId();		
-		TEST(retVal==id);
-		if (retVal!=id)
-			INFO_PRINTF3(_L("window->WindowGroupId() return value  - equal to: %d , Actual: %d"), id, retVal);
-		prevWindow=window;
-		}
-	CleanupStack::PopAndDestroy(numWindows+1);
-	}
-
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0495
-
-@SYMDEF				PDEF131541
-
-@SYMTestCaseDesc	Sending Events using one of the functions SendEventToWindowGroup, SendEventToAllWindowGroups (x2) 
-					and SendEventToOneWindowGroupsPerClient when an event queue is full returns an error
-
-@SYMTestPriority	Low
-
-@SYMTestStatus		Implemented
-
-@SYMTestActions		Call the functions repeatly many times and check that an error gets returned eventually
-
-@SYMTestExpectedResults		Functions return the error KErrNoMemory
-*/
-const TInt numTest=75;		//Must be at least 33
-void CTWindowTest::SaturateSendEvent()
-	{
-	const TInt id=TheClient->iGroup->GroupWin()->Identifier();
-	TWsEvent event;
-	event.SetType(KBaseUserEvent);
-	TInt ii;
-
-	TInt err=KErrNone;
-	for (ii=0; ii<=numTest && err==KErrNone;)
-		{
-		++ii;
-		err=TheClient->iWs.SendEventToWindowGroup(id,event);
-		}
-	TEST(err==KErrNoMemory);
-	if (err!=KErrNoMemory)
-		{
-		_LIT(KLog,"After %d/%d iterations SendEventToWindowGroup returned the error %d");
-		LOG_MESSAGE4(KLog,ii,numTest,err);
-		}
-	TheClient->WaitForAllEventProcessingToFinish();
-
-	err=KErrNone;
-	for (ii=0; ii<=numTest && err==KErrNone;)
-		{
-		++ii;
-		err=TheClient->iWs.SendEventToAllWindowGroups(event);
-		}
-	TEST(err==KErrNoMemory);
-	if (err!=KErrNoMemory)
-		{
-		_LIT(KLog,"After %d/%d iterations SendEventToAllWindowGroups returned the error %d");
-		LOG_MESSAGE4(KLog,ii,numTest,err);
-		}
-	TheClient->WaitForAllEventProcessingToFinish();
-	User::After(1000000);		//1sec, give other sessions a chance to respond to the events
-
-	err=KErrNone;
-	for (ii=0; ii<=numTest && err==KErrNone;)
-		{
-		++ii;
-		err=TheClient->iWs.SendEventToAllWindowGroups(0,event);
-		}
-	TEST(err==KErrNoMemory);
-	if (err!=KErrNoMemory)
-		{
-		_LIT(KLog,"After %d/%d iterations SendEventToAllWindowGroups_Priority0 returned the error %d");
-		LOG_MESSAGE4(KLog,ii,numTest,err);
-		}
-	TheClient->WaitForAllEventProcessingToFinish();
-	User::After(1000000);		//1sec, give other sessions a chance to respond to the events
-
-	err=KErrNone;
-	for (ii=0; ii<=numTest && err==KErrNone;)
-		{
-		++ii;
-		err=TheClient->iWs.SendEventToOneWindowGroupsPerClient(event);
-		}
-	TEST(err==KErrNoMemory);
-	if (err!=KErrNoMemory)
-		{
-		_LIT(KLog,"After %d/%d iterations SendEventToOneWindowGroupsPerClient returned the error %d");
-		LOG_MESSAGE4(KLog,ii,numTest,err);
-		}
-	TheClient->WaitForAllEventProcessingToFinish();
-	User::After(1000000);		//1sec, give other sessions a chance to respond to the events
-	}
-
-void CTWindowTest::TestNotSupportedFunctionality()
-    {
-    TInt err = KErrNone;
-    TSize windowSize = TSize(10,10);
-    TSize testSize = TSize();
-    
-    RWindowGroup group(TheClient->iWs);
-    RWindow window(TheClient->iWs);
-
-    err = group.Construct((TUint32)&group, EFalse);
-    TEST(err==KErrNone);
-    err = window.Construct(group,(TUint32)&window);
-    TEST(err==KErrNone);
-    
-    window.SetExtent(TPoint(0,0),windowSize);
-    window.Activate();
-    
-    testSize = window.Size();
-    TEST((testSize.iWidth==windowSize.iWidth) && (testSize.iHeight==windowSize.iHeight));
-    
-    testSize = window.SizeForEgl();
-    TEST((testSize.iWidth==windowSize.iWidth) && (testSize.iHeight==windowSize.iHeight));
-    
-    err = window.FixNativeOrientation();
-    TEST(err==KErrNotSupported);
-
-    testSize = window.Size();
-    TEST((testSize.iWidth==windowSize.iWidth) && (testSize.iHeight==windowSize.iHeight));
-    
-    testSize = window.SizeForEgl();
-    TEST((testSize.iWidth==windowSize.iWidth) && (testSize.iHeight==windowSize.iHeight));
-
-    window.Close();
-    group.Close();  
-    }
-
-void CTWindowTest::RunTestCaseL(TInt /*aCurTestCase*/)
-	{
-	_LIT(KTest1,"Window");
-	_LIT(KTest2,"DestroyWindowWithActiveGc");
-	_LIT(KTest3,"Shadow/NoAutoClear");
-	_LIT(KTest4,"Corner Tests");
-	_LIT(KTest5,"Invalid Window Functions");
-	_LIT(KTest7,"Mega-Tree");
-	_LIT(KTest8,"Tiled Window One");
-	_LIT(KTest9,"Tiled Window Two");
-	_LIT(KTest10,"Color Test");
-	_LIT(KTest11,"Invalid Window Functions2");
-	_LIT(KTest12,"Defect 1");
-	_LIT(KTest13,"Defect 2");
-	_LIT(KTest14,"Parent Deleted 1");
-	_LIT(KTest15,"Parent Deleted 2");
-	_LIT(KTest16,"Defect 3");
-	_LIT(KTest17,"Background Color");
-	_LIT(KTest18,"Focus Changed");
-	_LIT(KTest21,"Events To All");
-	_LIT(KTest22,"Error Codes");
-	_LIT(KTest23,"Group Id");
-	_LIT(KTest24,"DeleteParentWindowOnly");
-#if defined(_DEBUG)
-	_LIT(KTest25,"DuplicateWindowHandles");
-#else
-	_LIT(KTest25skipped,"DuplicateWindowHandles skipped");
-#endif
-
-	((CTWindowTestStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
-
-	_LIT(KTest26,"Saturate SendEvent");
-	_LIT(KTest27,"Not Supported Functionality");
-
-	switch(++iTest->iState)
-		{
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0029
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test window can be created and destroyed correctly
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Creates and destroys a window
-
-@SYMTestExpectedResults Window is created and destroyed without error
-*/
-		case 1:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0029"));
-			iTest->LogSubTest(KTest1);
-			CreateTestWindowL();
-			CheckAndDestroyWindows();
-			//iState=17;
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0030
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Creates and destroys window with an active gc
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Create and destroy a window with an active gc
-
-@SYMTestExpectedResults Window is created and destroyed without error
-*/
-		case 2:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0030"));
-			iTest->LogSubTest(KTest2);
-			CreateTestWindowL();
-			DestroyWindowWithActiveGc();
-			CreateTestWindowL();
-			DestroyWindowWithActiveGc2L();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0031
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test that shadow is not automatically cleared when
-					drawing a window
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Draw windows and check that the shadow is not automatically
-					cleared
-
-@SYMTestExpectedResults Screen comparison returns that the shadow was not cleared
-*/
-		case 3:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0031"));
-			//window shadowing is no longer supported. keep the test to make sure clients can still call the methods
-			iTest->LogSubTest(KTest3);
-			ShadowAutoClearTest();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0032
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test the drawing of different types of corner of
-					a window
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Draw a window with different types of corner
-
-@SYMTestExpectedResults The window is drawn correctly for each corner type
-*/
-		case 4:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0032"));
-			iTest->LogSubTest(KTest4);
-			CornerTests();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0033
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test for panics when window is sent wrong requests
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Send wrong requests to windows and deal with panic
-
-@SYMTestExpectedResults The windows panic as expected
-*/
-		case 5:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0033"));
-			iTest->LogSubTest(KTest5);
-			TestInvalidFunctionsL();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0035
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Draw 100 windows from a thread
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Draw 100 windows from the same thread
-
-@SYMTestExpectedResults The windows are all drawn without error
-*/
-		case 6:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0035"));
-			iTest->LogSubTest(KTest7);
-			CreateMegaTree();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0036
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Check that windows can be drawn in a tiled format
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Draw two windows in a tiled format and check they
-					are identical
-
-@SYMTestExpectedResults The tiled windows are identical
-*/
-		case 7:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0036"));
-
-			iTest->LogSubTest(KTest8);
-			TiledWindowTestL();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0037
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Check that windows and dialogs can be drawn in a
-					tiled format
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Draw windows and dialogs in a tiled format
-
-@SYMTestExpectedResults The windows and dialogs are drawn correctly
-*/
-		case 8:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0037"));
-			iTest->LogSubTest(KTest9);
-			TiledWindowTest2L();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0038
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Check drawing into a window with different
-					colour set ups
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Draw in a window using different colour
-					configurations
-
-@SYMTestExpectedResults The different colours are drawn correctly
-*/
-		case 9:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0038"));
-			iTest->LogSubTest(KTest10);
-			ColorTestL();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0039
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test for panics when window is sent wrong requests
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Send wrong requests to windows and deal with panic
-
-@SYMTestExpectedResults The windows panic as expected
-*/
-		case 10:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0039"));
-			iTest->LogSubTest(KTest11);
-			TestInvalidFunctions2L();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0040
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test for a defect that causes ROM to crash
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Test a defect is not present which causes the ROM
-					to crash
-
-@SYMTestExpectedResults The defect is not present
-*/
-		case 11:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0040"));
-			iTest->LogSubTest(KTest12);
-			Bug1L();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0041
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test a previous defect has not returned
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Exercise the code the defect was discovered in
-
-@SYMTestExpectedResults The defect is not present
-*/
-		case 12:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0041"));
-			iTest->LogSubTest(KTest13);
-			Bug2L();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0042
-
-@SYMDEF  			DEF081259
-					DEF115543
-
-@SYMTestCaseDesc    Test that when a parent window is deleted a panic
-					occurs
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Delete a parent window and check for a panic
-					NOTE: DEF115543 has corrected GRAPHICS-WSERV-0042, and added a lot
-					more window functions.
-
-@SYMTestExpectedResults All functions either:
-					Panic the owner thread with EWservPanicParentDeleted or
-					Get performed without accessing any NULL iParent pointers in the WSERV thread
-*/
-		case 13:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0042"));
-			iTest->LogSubTest(KTest14);
-			TestDeletedParentPanics1L();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0043
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test that when a parent window is deleted a panic
-					occurs
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Delete a parent window and check for a panic
-
-@SYMTestExpectedResults The panic occurs as expected
-*/
-		case 14:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0043"));
-			iTest->LogSubTest(KTest15);
-			TestDeletedParentPanics2L();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0044
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Check that activate then make visible and backup
-					behind a window does not panic.
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Activate then make visible and backup
-					behind a window
-
-@SYMTestExpectedResults No panic occurs
-*/
-		case 15:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0044"));
-			iTest->LogSubTest(KTest16);
-			Bug3L();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0045
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test window being drawn with the correct background
-					color when they are moved on the screen
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Move window on the screen and check it is drawn with
-					the correct background colour
-
-@SYMTestExpectedResults The background coloour is correct
-*/
-		case 16:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0045"));
-			iTest->LogSubTest(KTest17);
-			BackColorBugL();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0046
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test that the focus change is available after redraw
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Redraw and check the focus change is available
-
-@SYMTestExpectedResults The focus change is available
-*/
-		case 17:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0046"));
-			iTest->LogSubTest(KTest18);
-			FocusChangedL();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0048
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test that events can be sent to a number of window
-					groups simultaneously
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Send events to a number of window groups and check
-					that they all receive them
-
-@SYMTestExpectedResults The events and sent to the window groups correctly
-*/
-		case 18:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0048"));
-			iTest->LogSubTest(KTest21);
-			EventsToAllL();
-			break;
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0049
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Test error code when incorrectly moving a window to
-					a group.
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Try to move a window to a group and check the error
-					codes
-
-@SYMTestExpectedResults The correct error codes are returned
-*/
-		case 19:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0049"));
-			iTest->LogSubTest(KTest22);
-			ErrorCodesL();
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0050
-
-@SYMDEF  			DEF081259
-
-@SYMTestCaseDesc    Check that the correct group id is assigned to a
-					chain of windows
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Create a chain of windows in the same group and check
-					the all have the same group id
-
-@SYMTestExpectedResults The windows all have the same group id
-*/
-		case 20:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0050"));
-			iTest->LogSubTest(KTest23);
-			GroupIdL();
-			break;
-			
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0461
-
-@SYMDEF  			PDEF114190
-
-@SYMTestCaseDesc    Test window redraw queue cleanup when window is deleted in low memory conditions
-
-@SYMTestPriority    High
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Have a loop which increases the number of allocations in the server thread before failure;
-					Within the loop:
-					1) Create a parent window and a child window of the parent; 
-					2) Delete the parent window only, but not the child window; 
-					3) Create a testWindow. This new window gets added to the redraw queue which will force it 
-					reordering. This would crash WSERV due to this defect because the orphaned window (which is 
-					the previous child window) is still in the redraw queue
-					4) Delete all the windows involved;
-
-@SYMTestExpectedResults		The window redraw queue should be cleaned up when the first window is deleted;
-							WSERV should not crash. The test should pass. 
-*/		
-		case 21:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0461"));
-			iTest->LogSubTest(KTest24);
-			TestWindowDelete();
-			break;
-			
-/**
-@SYMTestCaseID		GRAPHICS-WSERV-0463
-
-@SYMDEF				DEF115601
-
-@SYMTestCaseDesc    Two RWindowGroup objects using same window client handle cause Emulator crash
-
-@SYMTestPriority    Medium
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Create two window groups with the same handle.
-
-@SYMTestExpectedResults		WSERV should panic the client thread with the code EWservPanicDuplicateHandle
-							and then destroy the window groups without crashing WSERV
-*/
-		case 22:
-#if defined(_DEBUG)
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0463"));
-			iTest->LogSubTest(KTest25);
-			TEST(iTest->TestWsPanicL(DoPanicTest6,EWservPanicDuplicateHandle,0,(TAny*)iTest->iScreenNumber,NULL));
-			iTest->CloseAllPanicWindows();
-#else
-			iTest->LogSubTest(KTest25skipped);	//Client side panic will only occur in debug builds of WServ
-#endif
-			break;
-		case 23:
-			((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0495"));
-			iTest->LogSubTest(KTest26);
-			SaturateSendEvent();
-			break;
-/**
-@SYMTestCaseID      GRAPHICS-WSERV-0655
-
-@SYMDEF             ou1cimx1#329309
-
-@SYMTestCaseDesc    Fix native orientation functionality not supported
-
-@SYMTestPriority    Medium
-
-@SYMTestStatus      Implemented
-
-@SYMTestActions     Call fucntions related to fix native orientation on a window
-
-@SYMTestExpectedResults     Fix native orientation functionality not supported
-			*/			
-        case 24:
-            ((CTWindowTestStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0655"));
-            iTest->LogSubTest(KTest27);
-            TestNotSupportedFunctionality();
-            break;			
-		default:
-            		((CTWindowTestStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
-			((CTWindowTestStep*)iStep)->CloseTMSGraphicsStep();
-			TestComplete();
-			break;
-		}
-	((CTWindowTestStep*)iStep)->RecordTestResultL();
-	}
-
-__WS_CONSTRUCT_STEP__(WindowTest)