1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/graphics/windowing/windowserver/test/tauto/TPointer.CPP Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,1087 @@
1.4 +// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// Test pointer event handling
1.18 +// Coverted from TMan test code (TMPOINTR.CPP) October 2000
1.19 +//
1.20 +//
1.21 +
1.22 +/**
1.23 + @file
1.24 + @test
1.25 + @internalComponent - Internal Symbian test code
1.26 +*/
1.27 +
1.28 +#include "TPointer.H"
1.29 +
1.30 +
1.31 +//#define LOGGING
1.32 +
1.33 +#if defined(LOGGING)
1.34 + LOCAL_D TLogMessageText LogMessageText;
1.35 +#endif
1.36 +
1.37 +
1.38 +CPointerWindow::CPointerWindow(CTPointer *aTest) : CTWin(), iTest(aTest)
1.39 + {}
1.40 +
1.41 +void CPointerWindow::SetState(TInt aState)
1.42 + {
1.43 +#if defined(LOGGING)
1.44 + _LIT(KState,"CPointerWindow::SetState(%d) OldState=%d");
1.45 + LogMessageText.Format(KState,aState,iState);
1.46 + TheClient->LogMessage(LogMessageText);
1.47 +#endif
1.48 + iState=aState;
1.49 + iWin.Invalidate();
1.50 + switch(aState)
1.51 + {
1.52 + case KStateWaitingForTest1:
1.53 + case KStateWaitingForTest2:
1.54 + case KStateWaitingForTest3:
1.55 + case KStateWaitingForTest4:
1.56 + case KStateWaitingForTest5:
1.57 + case KStateWaitingForTest6:
1.58 + case KStateWaitingForTest8:
1.59 + case KStateWaitingForTest7:
1.60 + iRepeatRect=TRect();
1.61 + break;
1.62 + case KStateTesting8:
1.63 + iWin.Close();
1.64 + Client()->iWs.Flush();
1.65 + User::After(500000);
1.66 + FinishedTests();
1.67 + break;
1.68 + }
1.69 + TheClient->WaitForRedrawsToFinish();
1.70 + SendEvent();
1.71 + }
1.72 +
1.73 +void CPointerWindow::ResetTest(TInt aState)
1.74 + {
1.75 + TInt newState=KStateFinished;
1.76 + switch(aState)
1.77 + {
1.78 + case KStateTesting1:
1.79 + newState=KStateWaitingForTest1;
1.80 + break;
1.81 + case KStateTesting2:
1.82 + newState=KStateWaitingForTest2;
1.83 + break;
1.84 + case KStateTesting3:
1.85 + newState=KStateWaitingForTest3;
1.86 + break;
1.87 + case KStateTesting4:
1.88 + newState=KStateWaitingForTest4;
1.89 + break;
1.90 + case KStateTesting5:
1.91 + newState=KStateWaitingForTest5;
1.92 + break;
1.93 + case KStateTesting6:
1.94 + newState=KStateWaitingForTest6;
1.95 + break;
1.96 + case KStateTesting8:
1.97 + newState=KStateWaitingForTest8;
1.98 + break;
1.99 + case KStateTesting7:
1.100 + newState=KStateWaitingForTest7;
1.101 + break;
1.102 + }
1.103 + TheClient->iWs.PurgePointerEvents();
1.104 + SetState(newState);
1.105 + }
1.106 +
1.107 +void CPointerWindow::SetUpLD(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc)
1.108 + {
1.109 + ConstructExtLD(*parent,pos,size);
1.110 + iTl=pos;
1.111 + iSize=size;
1.112 + Activate();
1.113 + AssignGC(aGc);
1.114 + SetState(KStateWaitingForTest1);
1.115 + BaseWin()->EnableOnEvents();
1.116 + }
1.117 +
1.118 +void CPointerWindow::Draw()
1.119 + {
1.120 + iGc->Clear();
1.121 + iGc->DrawRect(Size());
1.122 + iGc->DrawRect(iRepeatRect);
1.123 + TBuf<0x80> buf;
1.124 + TBuf<0x80> buf2;
1.125 + switch(iState)
1.126 + {
1.127 + case KStateWaitingForTest1:
1.128 + {
1.129 + _LIT(Draw1,"Click anywhere in the window and hold the pointer steady");
1.130 + buf.Format(Draw1);
1.131 + }
1.132 + break;
1.133 + case KStateTesting1:
1.134 + {
1.135 + _LIT(Draw2,"Hold pointer inside the box");
1.136 + buf.Format(Draw2);
1.137 + }
1.138 + break;
1.139 + case KStateWaitingForTest2:
1.140 + {
1.141 + _LIT(Draw3,"Release the pointer then click in the window and hold the pointer steady");
1.142 + buf.Format(Draw3);
1.143 + }
1.144 + break;
1.145 + case KStateTesting2:
1.146 + {
1.147 + _LIT(Draw4,"Drag the pointer outside the box");
1.148 + buf.Format(Draw4);
1.149 + }
1.150 + break;
1.151 + case KStateWaitingForTest3:
1.152 + {
1.153 + _LIT(Draw5,"Release the pointer then click in the window and hold the pointer steady");
1.154 + buf.Format(Draw5);
1.155 + }
1.156 + break;
1.157 + case KStateTesting3:
1.158 + {
1.159 + _LIT(Draw6,"Release the pointer");
1.160 + buf.Format(Draw6);
1.161 + }
1.162 + break;
1.163 + case KStateWaitingForTest4:
1.164 + {
1.165 + _LIT(Draw7,"Click anywhere in the window and move the pointer slightly");
1.166 + buf.Format(Draw7);
1.167 + }
1.168 + break;
1.169 + case KStateTesting4:
1.170 + {
1.171 + _LIT(Draw8,"Release the pointer");
1.172 + buf.Format(Draw8);
1.173 + }
1.174 + break;
1.175 + case KStateWaitingForTest5:
1.176 + {
1.177 + _LIT(Draw9,"Click anywhere in the window and move the pointer slightly");
1.178 + buf.Format(Draw9);
1.179 + }
1.180 + break;
1.181 + case KStateTesting5:
1.182 + {
1.183 + _LIT(Draw10,"Release the pointer");
1.184 + buf.Format(Draw10);
1.185 + break;
1.186 + }
1.187 + case KStateWaitingForTest6:
1.188 + {
1.189 + _LIT(Draw11,"Click anywhere in the window");
1.190 + buf.Format(Draw11);
1.191 + }
1.192 + break;
1.193 + case KStateTesting6:
1.194 + {
1.195 + _LIT(Draw12,"Move the pointer");
1.196 + buf.Format(Draw12);
1.197 + }
1.198 + break;
1.199 + case KStateWaitingForTest8:
1.200 + {
1.201 + _LIT(Draw13,"Click anywhere in the window, and keep the pointer pressed");
1.202 + buf.Format(Draw13);
1.203 + }
1.204 + break;
1.205 + case KStateTesting8:
1.206 + buf.Format(KNullDesC);
1.207 + break;
1.208 + case KStateWaitingForTest7:
1.209 + {
1.210 + _LIT(Draw14,"Switch off and touch the center of the screen");
1.211 + buf.Format(Draw14);
1.212 + }
1.213 + break;
1.214 + case KStateTesting7:
1.215 + buf.Format(KNullDesC);
1.216 + break;
1.217 + }
1.218 + switch(iState)
1.219 + {
1.220 + case KStateTesting1:
1.221 + {
1.222 + _LIT(Repeat2,"Repeat (%d/%d), interval=%d.%d");
1.223 + buf2.Format(Repeat2,iRepeatCount,KRepeatCount,iInterval.Int()/1000000,(iInterval.Int()%1000000)/100000);
1.224 + }
1.225 + break;
1.226 + case KStateTesting2:
1.227 + case KStateTesting3:
1.228 + {
1.229 + _LIT(Repeat1,"Repeat (%d), interval=%d.%d");
1.230 + buf2.Format(Repeat1,iRepeatCount,iInterval.Int()/1000000,(iInterval.Int()%1000000)/100000);
1.231 + }
1.232 + break;
1.233 + }
1.234 + iGc->DrawText(buf,TPoint(10,20));
1.235 + iGc->DrawText(buf2,TPoint(10,40));
1.236 + }
1.237 +
1.238 +void CPointerWindow::FinishedTests()
1.239 + {
1.240 + iState=KStateFinished;
1.241 + }
1.242 +
1.243 +void CPointerWindow::StartNextRepeatTest()
1.244 + {
1.245 + iInterval=0;
1.246 + iRepeatCount=0;
1.247 + if (iState==KStateWaitingForTest4)
1.248 + User::After(TTimeIntervalMicroSeconds32(1000000));
1.249 + else if (iState==KStateWaitingForTest5)
1.250 + User::After(TTimeIntervalMicroSeconds32(1000000));
1.251 + QueueNextRepeat();
1.252 + switch(iState)
1.253 + {
1.254 + case KStateWaitingForTest1:
1.255 + SetState(KStateTesting1);
1.256 + break;
1.257 + case KStateWaitingForTest2:
1.258 + SetState(KStateTesting2);
1.259 + break;
1.260 + case KStateWaitingForTest3:
1.261 + SetState(KStateTesting3);
1.262 + break;
1.263 + case KStateWaitingForTest4:
1.264 + SetState(KStateTesting4);
1.265 + break;
1.266 + case KStateWaitingForTest5:
1.267 + SetState(KStateTesting5);
1.268 + break;
1.269 + case KStateWaitingForTest6:
1.270 + SetState(KStateTesting6);
1.271 + break;
1.272 + case KStateWaitingForTest8:
1.273 + SetState(KStateTesting8);
1.274 + break;
1.275 + case KStateWaitingForTest7:
1.276 + SetState(KStateTesting7);
1.277 + break;
1.278 + }
1.279 + }
1.280 +
1.281 +void CPointerWindow::QueueNextRepeat()
1.282 + {
1.283 + iInterval=iInterval.Int()+KRepeatIntervalIncrements;
1.284 +#if defined(LOGGING)
1.285 + /*_LIT(KRequestRepeat,"Request Repeat, State=%d, Interval=%d");
1.286 + TLogMessageText buf;
1.287 + buf.Format(KRequestRepeat,iState,iInterval.Int());
1.288 + TheClient->LogMessage(buf);*/
1.289 +#endif
1.290 + iWin.RequestPointerRepeatEvent(TTimeIntervalMicroSeconds32(iInterval),TRect(iRepeatRect));
1.291 + iPrevTime.HomeTime();
1.292 + iWin.Invalidate();
1.293 + }
1.294 +
1.295 +void CPointerWindow::PointerL(const TPointerEvent &aPointer,const TTime &aTime)
1.296 + {
1.297 +#if defined(LOGGING)
1.298 + _LIT(KPointer,"CPointerWindow::PointerL(Type=%d, Pos=(%d,%d), ParPos=(%d,%d), Mod=0x%x) State=%d");
1.299 + LogMessageText.Format(KPointer,aPointer.iType,aPointer.iPosition.iX,aPointer.iPosition.iY,aPointer.iParentPosition.iX,aPointer.iParentPosition.iY,aPointer.iModifiers,iState);
1.300 + TheClient->LogMessage(LogMessageText);
1.301 +#endif
1.302 + if (aPointer.iType==TPointerEvent::EButtonRepeat)
1.303 + {
1.304 + if (iState!=KStateTesting1 && iState!=KStateTesting2 && iState!=KStateTesting3 && iState!=KStateTesting4)
1.305 + TestFailed();
1.306 + else
1.307 + {
1.308 + TTimeIntervalMicroSeconds32 interval(I64LOW(aTime.MicroSecondsFrom(iPrevTime).Int64()));
1.309 + TBool fail1=(interval.Int()<(iInterval.Int()-KRepeatMargin) || interval.Int()>(iInterval.Int()+KRepeatMargin));
1.310 + if (fail1)
1.311 + {
1.312 + _LIT(KPointerRepeat1,"Pointer Repeat Interval, Exp=%d, Act=%d, F1=%d, F2=%d");
1.313 + TLogMessageText buf;
1.314 + TBool fail2=(interval.Int()<(iInterval.Int()-2*KRepeatMargin) || interval.Int()>(iInterval.Int()+3*KRepeatMargin));
1.315 + buf.Format(KPointerRepeat1,iInterval.Int(),interval.Int(),fail1,fail2);
1.316 + TheClient->LogMessage(buf);
1.317 + }
1.318 + if (interval.Int()<(iInterval.Int()-
1.319 + #if defined(__MARM_ARM4__)
1.320 + 2*
1.321 + #endif
1.322 + KRepeatMargin) || interval.Int()>(iInterval.Int()+
1.323 + #if defined(__MARM_ARM4__)
1.324 + 3*
1.325 + #endif
1.326 + KRepeatMargin))
1.327 + TestFailed();
1.328 + else
1.329 + {
1.330 + if (!iRepeatRect.Contains(aPointer.iPosition) ||
1.331 + aPointer.iParentPosition!=(aPointer.iPosition+iWin.InquireOffset(*Parent()->WinTreeNode())))
1.332 + TestFailed();
1.333 + else
1.334 + {
1.335 + iRepeatCount++;
1.336 + if (iState==KStateTesting1 && iRepeatCount==KRepeatCount)
1.337 + {
1.338 + QueueNextRepeat();
1.339 + Client()->iWs.Flush();
1.340 + User::After(TTimeIntervalMicroSeconds32(iRepeatCount*KRepeatIntervalIncrements));
1.341 + iWin.CancelPointerRepeatEventRequest();
1.342 + SetState(KStateWaitingForTest2);
1.343 + }
1.344 + else
1.345 + QueueNextRepeat();
1.346 + }
1.347 + }
1.348 + }
1.349 + }
1.350 + else switch(iState)
1.351 + {
1.352 + case KStateWaitingForTest1:
1.353 + case KStateWaitingForTest2:
1.354 + case KStateWaitingForTest3:
1.355 + case KStateWaitingForTest4:
1.356 + case KStateWaitingForTest8:
1.357 + if (aPointer.iType==TPointerEvent::EButton1Down)
1.358 + {
1.359 + iRepeatRect.iTl=aPointer.iPosition-TPoint(KRepeatRectXExtra,KRepeatRectYExtra);
1.360 + iRepeatRect.iBr=aPointer.iPosition+TPoint(KRepeatRectXExtra,KRepeatRectYExtra);
1.361 + StartNextRepeatTest();
1.362 + }
1.363 + break;
1.364 + case KStateWaitingForTest5:
1.365 + if (aPointer.iType==TPointerEvent::EButton1Down)
1.366 + {
1.367 + iRepeatRect.iTl=aPointer.iPosition;
1.368 + iRepeatRect.iBr=aPointer.iPosition+TPoint(1,1);
1.369 + StartNextRepeatTest();
1.370 + }
1.371 + break;
1.372 + case KStateWaitingForTest6:
1.373 + if (aPointer.iType==TPointerEvent::EButton1Down)
1.374 + {
1.375 + iRepeatRect.iTl=aPointer.iPosition+TPoint(KRepeatRectXExtra,KRepeatRectYExtra);
1.376 + iRepeatRect.iBr=aPointer.iPosition+TPoint(2*KRepeatRectXExtra,2*KRepeatRectYExtra);
1.377 + StartNextRepeatTest();
1.378 + }
1.379 + break;
1.380 + case KStateTesting1:
1.381 + {
1.382 + TBool isDrag=(aPointer.iType==TPointerEvent::EDrag);
1.383 + TestFailed(isDrag);
1.384 + if (isDrag)
1.385 + {
1.386 + iTest->SimulatePointer(TRawEvent::EButton1Down,aPointer.iPosition.iX,aPointer.iPosition.iY);
1.387 + iTest->SimulatePointer(TRawEvent::EButton1Up,aPointer.iPosition.iX,aPointer.iPosition.iY);
1.388 + }
1.389 + }
1.390 + break;
1.391 + case KStateTesting2:
1.392 + if (aPointer.iType==TPointerEvent::EDrag)
1.393 + SetState(KStateWaitingForTest3);
1.394 + else
1.395 + TestFailed();
1.396 + break;
1.397 + case KStateTesting3:
1.398 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.399 + SetState(KStateWaitingForTest4);
1.400 + else
1.401 + TestFailed();
1.402 + break;
1.403 + case KStateTesting4:
1.404 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.405 + SetState(KStateWaitingForTest5);
1.406 + else
1.407 + TestFailed();
1.408 + break;
1.409 + case KStateTesting5:
1.410 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.411 + SetState(KStateWaitingForTest6);
1.412 + else if (aPointer.iType!=TPointerEvent::EDrag)
1.413 + TestFailed();
1.414 + break;
1.415 + case KStateTesting6:
1.416 + if (aPointer.iType==TPointerEvent::EDrag)
1.417 + {
1.418 + //#if !defined(__WINS__) // Can't emulate touching dig when switched off under WINS
1.419 + // if (iTest->Digitiser())
1.420 + SetState(KStateWaitingForTest7);
1.421 + /* else
1.422 + #endif
1.423 + SetState(KStateWaitingForTest8);*/
1.424 + }
1.425 + else
1.426 + TestFailed();
1.427 + break;
1.428 + case KStateWaitingForTest7:
1.429 + if (aPointer.iType==TPointerEvent::EButton1Down || aPointer.iType==TPointerEvent::ESwitchOn)
1.430 + TestFailed();
1.431 + break;
1.432 + case KStateTesting7:
1.433 + if (aPointer.iType!=TPointerEvent::ESwitchOn)
1.434 + TestFailed();
1.435 + else
1.436 + SetState(KStateWaitingForTest8);
1.437 + break;
1.438 + case KStateTesting8:
1.439 + break;
1.440 + }
1.441 + }
1.442 +
1.443 +void CPointerWindow::TestFailed(TBool aRetest/*=EFalse*/)
1.444 + {
1.445 + if (iState!=KStateFailed)
1.446 + {
1.447 + TInt oldState=iState;
1.448 + iState=KStateFailed;
1.449 + if (iTest->TestFailed(oldState,aRetest) || aRetest)
1.450 + ResetTest(oldState);
1.451 + }
1.452 + }
1.453 +
1.454 +void CPointerWindow::WinKeyL(const TKeyEvent &aKey,const TTime &)
1.455 + {
1.456 +#if defined(LOGGING)
1.457 + _LIT(KKey,"CPointerWindow::WinKeyL(Code=%d, ScanCode=%d) State=%d");
1.458 + LogMessageText.Format(KKey,aKey.iCode,aKey.iScanCode,iState);
1.459 + TheClient->LogMessage(LogMessageText);
1.460 +#endif
1.461 + if (aKey.iCode==EKeyEscape)
1.462 + FinishedTests(); // Simply skip this test if the Escape key is pressed
1.463 + }
1.464 +
1.465 +void CPointerWindow::SwitchOn(const TTime &)
1.466 + {
1.467 +#if defined(LOGGING)
1.468 + _LIT(KOn,"CPointerWindow::SwitchOn() State=%d");
1.469 + LogMessageText.Format(KOn,iState);
1.470 + TheClient->LogMessage(LogMessageText);
1.471 +#endif
1.472 + if (iState==KStateWaitingForTest7)
1.473 + SetState(KStateTesting7);
1.474 + else
1.475 + TestFailed();
1.476 + }
1.477 +
1.478 +void CPointerWindow::SendEvent()
1.479 + {
1.480 +#if defined(LOGGING)
1.481 + _LIT(KSend,"CPointerWindow::SendEvent() State=%d");
1.482 + LogMessageText.Format(KSend,iState);
1.483 + TheClient->LogMessage(LogMessageText);
1.484 +#endif
1.485 + switch (iState)
1.486 + {
1.487 + case KStateWaitingForTest1:
1.488 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+iSize.iWidth/4,iTl.iY+iSize.iHeight/4);
1.489 + break;
1.490 + //case KStateTesting1: //Do Nothing
1.491 + // break;
1.492 + case KStateWaitingForTest2:
1.493 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+iSize.iWidth/4,iTl.iY+iSize.iHeight/4);
1.494 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+iSize.iWidth/2,iTl.iY+iSize.iHeight/4);
1.495 + break;
1.496 + case KStateTesting2:
1.497 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+5*iSize.iWidth/8,iTl.iY+iSize.iHeight/4+2);
1.498 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+3*iSize.iWidth/4,iTl.iY+iSize.iHeight/4+4);
1.499 + break;
1.500 + case KStateWaitingForTest3:
1.501 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+3*iSize.iWidth/4,iTl.iY+iSize.iHeight/4+4);
1.502 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+iSize.iWidth/4,iTl.iY+iSize.iHeight/2);
1.503 + break;
1.504 + case KStateTesting3:
1.505 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+iSize.iWidth/4,iTl.iY+iSize.iHeight/2);
1.506 + break;
1.507 + case KStateWaitingForTest4:
1.508 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+iSize.iWidth/2,iTl.iY+iSize.iHeight/2);
1.509 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/2+3,iTl.iY+iSize.iHeight/2+1);
1.510 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/2+6,iTl.iY+iSize.iHeight/2+2);
1.511 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/2+9,iTl.iY+iSize.iHeight/2+3);
1.512 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/2+12,iTl.iY+iSize.iHeight/2+4);
1.513 + break;
1.514 + case KStateTesting4:
1.515 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+iSize.iWidth/2+12,iTl.iY+iSize.iHeight/2+4);
1.516 + break;
1.517 + case KStateWaitingForTest5:
1.518 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+iSize.iWidth/2,iTl.iY+3*iSize.iHeight/4);
1.519 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/2+3,iTl.iY+3*iSize.iHeight/4+1);
1.520 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/2+6,iTl.iY+3*iSize.iHeight/4+2);
1.521 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/2+9,iTl.iY+3*iSize.iHeight/4+3);
1.522 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/2+12,iTl.iY+3*iSize.iHeight/4+4);
1.523 + break;
1.524 + case KStateTesting5:
1.525 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+iSize.iWidth/2+12,iTl.iY+3*iSize.iHeight/4+4);
1.526 + break;
1.527 + case KStateWaitingForTest6:
1.528 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+3*iSize.iWidth/4,iTl.iY+3*iSize.iHeight/4);
1.529 + break;
1.530 + case KStateTesting6:
1.531 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+3*iSize.iWidth/4+4,iTl.iY+3*iSize.iHeight/4+2);
1.532 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+3*iSize.iWidth/4+8,iTl.iY+3*iSize.iHeight/4+4);
1.533 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+3*iSize.iWidth/4+12,iTl.iY+3*iSize.iHeight/4+6);
1.534 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+3*iSize.iWidth/4+16,iTl.iY+3*iSize.iHeight/4+8);
1.535 + break;
1.536 + case KStateWaitingForTest8:
1.537 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+iSize.iWidth/2,iTl.iY+3*iSize.iHeight/4);
1.538 + break;
1.539 + case KStateTesting8:
1.540 + break;
1.541 + case KStateWaitingForTest7:
1.542 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+3*iSize.iWidth/4+16,iTl.iY+3*iSize.iHeight/4+8);
1.543 + iTest->SimulateEvent(TRawEvent::ESwitchOn);
1.544 + iTest->SimulatePointer(TRawEvent::EPointerSwitchOn,iTl.iX+iSize.iWidth/2-1,iTl.iY+iSize.iHeight/2-1);
1.545 + break;
1.546 + //case KStateTesting7: //Do Nothing
1.547 + // break;
1.548 + /*case KStateFailed:
1.549 + break;
1.550 + case KStateFinished:
1.551 + break;*/
1.552 + }
1.553 + }
1.554 +
1.555 +//
1.556 +// CGrabWindow //
1.557 +//
1.558 +
1.559 +CGrabWindow::CGrabWindow(CTPointer *aTest) : iTest(aTest)
1.560 + {
1.561 + }
1.562 +
1.563 +void CGrabWindow::SetUpLD(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc)
1.564 + {
1.565 + ConstructExtLD(*parent,pos,size);
1.566 + iTl=pos;
1.567 + iSize=size;
1.568 + Activate();
1.569 + AssignGC(aGc);
1.570 + SetState(KGrabStateWaitingForDown);
1.571 + }
1.572 +
1.573 +void CGrabWindow::Draw()
1.574 + {
1.575 + iGc->Clear();
1.576 + iGc->DrawRect(Size());
1.577 + TBuf<0x80> buf;
1.578 + switch(iState)
1.579 + {
1.580 + case KGrabStateWaitingForDown:
1.581 + case KGrabStateWaitingForDown2:
1.582 + case KGrabStateWaitingForDown5:
1.583 + {
1.584 + _LIT(Draw1,"Press the pointer inside the window");
1.585 + buf.Copy(Draw1);
1.586 + }
1.587 + break;
1.588 + case KGrabStateWaitingForDown3:
1.589 + case KGrabStateWaitingForUp3a:
1.590 + {
1.591 + _LIT(Draw2,"Press and release the pointer inside the window");
1.592 + buf.Copy(Draw2);
1.593 + }
1.594 + break;
1.595 + case KGrabStateWaitingForDragOut:
1.596 + {
1.597 + _LIT(Draw3,"Drag the pointer outside into the outside window");
1.598 + buf.Copy(Draw3);
1.599 + }
1.600 + break;
1.601 + case KGrabStateWaitingForUp:
1.602 + case KGrabStateWaitingForUp2b:
1.603 + case KGrabStateWaitingForUp5:
1.604 + {
1.605 + _LIT(Draw4,"Release the pointer");
1.606 + buf.Copy(Draw4);
1.607 + }
1.608 + break;
1.609 + case KGrabStateWaitingForDown4:
1.610 + {
1.611 + _LIT(Draw5,"Press then release the pointer");
1.612 + buf.Copy(Draw5);
1.613 + }
1.614 + break;
1.615 + default:;
1.616 + }
1.617 + iGc->DrawText(buf,TPoint(10,20));
1.618 + }
1.619 +
1.620 +void CGrabWindow::PointerL(const TPointerEvent &aPointer,const TTime&)
1.621 + {
1.622 +#if defined(LOGGING)
1.623 + _LIT(KPointer,"CGrabWindow::PointerL(Type=%d, Pos=(%d,%d), ParPos=(%d,%d), Mod=0x%x) State=%d");
1.624 + LogMessageText.Format(KPointer,aPointer.iType,aPointer.iPosition.iX,aPointer.iPosition.iY,aPointer.iParentPosition.iX,aPointer.iParentPosition.iY,aPointer.iModifiers,iState);
1.625 + TheClient->LogMessage(LogMessageText);
1.626 +#endif
1.627 + switch(iState)
1.628 + {
1.629 + case KGrabStateWaitingForDown:
1.630 + if (aPointer.iType==TPointerEvent::EButton1Down)
1.631 + SetState(KGrabStateWaitingForDragOut);
1.632 + break;
1.633 + case KGrabStateWaitingForDragOut:
1.634 + if (aPointer.iType!=TPointerEvent::EDrag)
1.635 + TestFailed();
1.636 + else
1.637 + {
1.638 + if (!TRect(Size()).Contains(aPointer.iPosition))
1.639 + SetState(KGrabStateWaitingForUp);
1.640 + }
1.641 + break;
1.642 + case KGrabStateWaitingForUp:
1.643 + if (aPointer.iType==TPointerEvent::EDrag)
1.644 + break;
1.645 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.646 + SetState(KGrabStateWaitingForDown2);
1.647 + else
1.648 + TestFailed();
1.649 + break;
1.650 + case KGrabStateWaitingForDown2:
1.651 + if (aPointer.iType!=TPointerEvent::EButton1Down)
1.652 + TestFailed();
1.653 + else
1.654 + {
1.655 + iTest->GrabWin2()->BaseWin()->ClaimPointerGrab();
1.656 + iTest->GrabWin2()->BaseWin()->ClaimPointerGrab(); // Call twice to check it's harmless
1.657 + SetState(KGrabStateWaitingForUp2a);
1.658 + }
1.659 + break;
1.660 + case KGrabStateWaitingForUp2a:
1.661 + SetState(KGrabStateWaitingForDrag2);
1.662 + break;
1.663 + case KGrabStateWaitingForDrag2:
1.664 + break;
1.665 + case KGrabStateWaitingForUp2b:
1.666 + TestFailed();
1.667 + break;
1.668 + case KGrabStateWaitingForDown3:
1.669 + if (aPointer.iType!=TPointerEvent::EButton1Down)
1.670 + TestFailed();
1.671 + else
1.672 + SetState(KGrabStateWaitingForUp3a);
1.673 + break;
1.674 + case KGrabStateWaitingForUp3a:
1.675 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.676 + {
1.677 + iTest->GrabWin2()->BaseWin()->ClaimPointerGrab();
1.678 + SetState(KGrabStateWaitingForUp3b);
1.679 + }
1.680 + break;
1.681 + case KGrabStateWaitingForUp3b:
1.682 + TestFailed();
1.683 + break;
1.684 + case KGrabStateWaitingForDown5:
1.685 + if (aPointer.iType!=TPointerEvent::EButton1Down)
1.686 + TestFailed();
1.687 + else
1.688 + {
1.689 + iTest->GrabWin2()->BaseWin()->ClaimPointerGrab(EFalse);
1.690 + SetState(KGrabStateWaitingForDrag5);
1.691 + }
1.692 + break;
1.693 + case KGrabStateWaitingForDrag5:
1.694 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.695 + TestFailed();
1.696 + break;
1.697 + case KGrabStateWaitingForUp5:
1.698 + TestFailed();
1.699 + break;
1.700 + case KGrabStateWaitingForDown4:
1.701 + iWin.Close(); // Close the window with the grab captured in it
1.702 + SetState(KGrabStateWaitingForUp4);
1.703 + break;
1.704 + case KGrabStateFinished:
1.705 + break;
1.706 + }
1.707 + }
1.708 +
1.709 +void CGrabWindow::ResetTest()
1.710 + {
1.711 + TheClient->iWs.PurgePointerEvents();
1.712 + SetState(KGrabStateWaitingForDown);
1.713 + }
1.714 +
1.715 +void CGrabWindow::Pointer2(const TPointerEvent &aPointer)
1.716 + {
1.717 + switch(iState)
1.718 + {
1.719 + case KGrabStateWaitingForDrag2:
1.720 + {
1.721 + if (aPointer.iType==TPointerEvent::EDrag)
1.722 + {
1.723 + SetState(KGrabStateWaitingForUp2b);
1.724 + }
1.725 + else
1.726 + {
1.727 + if (iTest->TestFailed(iState))
1.728 + ResetTest();
1.729 + }
1.730 + break;
1.731 + }
1.732 + case KGrabStateWaitingForUp2b:
1.733 + if (aPointer.iType==TPointerEvent::EDrag) // Harmless
1.734 + break;
1.735 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.736 + SetState(KGrabStateWaitingForDown3);
1.737 + else
1.738 + TestFailed();
1.739 + break;
1.740 + case KGrabStateWaitingForUp3b:
1.741 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.742 + SetState(KGrabStateWaitingForDown5);
1.743 + else
1.744 + TestFailed();
1.745 + break;
1.746 + case KGrabStateWaitingForUp4:
1.747 + FinishedTests();
1.748 + break;
1.749 + case KGrabStateWaitingForDrag5:
1.750 + {
1.751 + if (aPointer.iType==TPointerEvent::EDrag)
1.752 + SetState(KGrabStateWaitingForUp5);
1.753 + else if (iTest->TestFailed(iState))
1.754 + ResetTest();
1.755 + break;
1.756 + }
1.757 + case KGrabStateWaitingForUp5:
1.758 + if (aPointer.iType==TPointerEvent::EDrag) // Harmless
1.759 + break;
1.760 + if (aPointer.iType==TPointerEvent::EButton1Up)
1.761 + SetState(KGrabStateWaitingForDown4);
1.762 + else
1.763 + TestFailed();
1.764 + break;
1.765 + default:;
1.766 + }
1.767 + }
1.768 +
1.769 +void CGrabWindow::SetState(TInt aState)
1.770 + {
1.771 + iState=aState;
1.772 + if (aState!=KGrabStateWaitingForUp4)
1.773 + iWin.Invalidate();
1.774 + TheClient->WaitForRedrawsToFinish();
1.775 + SendEvent();
1.776 + }
1.777 +
1.778 +void CGrabWindow::TestFailed()
1.779 + {
1.780 +#if defined(LOGGING)
1.781 + _LIT(KFail,"CGrabWindow::TestFailed() State=%d");
1.782 + LogMessageText.Format(KFail,iState);
1.783 + TheClient->LogMessage(LogMessageText);
1.784 +#endif
1.785 + if (iState!=KStateFailed)
1.786 + {
1.787 + TInt oldState=iState;
1.788 + iState=KStateFailed;
1.789 + if (iTest->TestFailed(oldState))
1.790 + ResetTest();
1.791 + }
1.792 + }
1.793 +
1.794 +void CGrabWindow::FinishedTests()
1.795 + {
1.796 + iState=KGrabStateFinished;
1.797 + }
1.798 +
1.799 +void CGrabWindow::WinKeyL(const TKeyEvent &aKey,const TTime &)
1.800 + {
1.801 +#if defined(LOGGING)
1.802 + _LIT(KKey,"CGrabWindow::WinKeyL(Code=%d, ScanCode=%d) State=%d");
1.803 + LogMessageText.Format(KKey,aKey.iCode,aKey.iScanCode,iState);
1.804 + TheClient->LogMessage(LogMessageText);
1.805 +#endif
1.806 + if (aKey.iCode==EKeyEscape)
1.807 + FinishedTests(); // Simply skip this test if the Escape key is pressed
1.808 + }
1.809 +
1.810 +void CGrabWindow::SendEvent()
1.811 + {
1.812 + switch (iState)
1.813 + {
1.814 + case KGrabStateWaitingForDown:
1.815 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+iSize.iWidth/3,iTl.iY+iSize.iHeight/3);
1.816 + break;
1.817 + case KGrabStateWaitingForDragOut:
1.818 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+iSize.iWidth/6,iTl.iY+iSize.iHeight/6);
1.819 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+1,iTl.iY+1);
1.820 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX-10,iTl.iY-10);
1.821 + break;
1.822 + case KGrabStateWaitingForUp:
1.823 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX-8,iTl.iY-8);
1.824 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX-5,iTl.iY-5);
1.825 + break;
1.826 + case KGrabStateWaitingForDown2:
1.827 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+2*iSize.iWidth/3,iTl.iY+iSize.iHeight/3);
1.828 + break;
1.829 + /*case KGrabStateWaitingForUp2a: //Don't need to do anything for these cases
1.830 + break;
1.831 + case KGrabStateWaitingForDrag2:
1.832 + break;*/
1.833 + case KGrabStateWaitingForUp2b:
1.834 + iTest->SimulatePointer(TRawEvent::EPointerMove,iTl.iX+2*iSize.iWidth/3-3,iTl.iY+iSize.iHeight/3+3);
1.835 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+2*iSize.iWidth/3,iTl.iY+iSize.iHeight/3);
1.836 + break;
1.837 + case KGrabStateWaitingForDown3:
1.838 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+2*iSize.iWidth/3,2*iTl.iY+iSize.iHeight/3);
1.839 + break;
1.840 + case KGrabStateWaitingForUp3a:
1.841 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+2*iSize.iWidth/3,2*iTl.iY+iSize.iHeight/3);
1.842 + break;
1.843 + case KGrabStateWaitingForUp3b:
1.844 + break;
1.845 + case KGrabStateWaitingForDown4:
1.846 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+2*iSize.iWidth/5,iTl.iY+iSize.iHeight/3);
1.847 + break;
1.848 + case KGrabStateWaitingForUp4:
1.849 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+2*iSize.iWidth/5,iTl.iY+iSize.iHeight/3);
1.850 + break;
1.851 + case KGrabStateWaitingForDown5:
1.852 + iTest->SimulatePointer(TRawEvent::EButton1Down,iTl.iX+iSize.iWidth/3,2*iTl.iY+iSize.iHeight/3);
1.853 + break;
1.854 + case KGrabStateWaitingForUp5:
1.855 + iTest->SimulatePointer(TRawEvent::EButton1Up,iTl.iX+iSize.iWidth/3,2*iTl.iY+iSize.iHeight/3);
1.856 + break;
1.857 + //case KGrabStateWaitingForDrag5: //Don't need to do anything for these cases
1.858 + // break;
1.859 + /*case KStateFailed:
1.860 + break;
1.861 + case KGrabStateFinished:
1.862 + break;*/
1.863 + default:;
1.864 + }
1.865 + TheClient->iWs.Flush();
1.866 + }
1.867 +
1.868 +
1.869 +//
1.870 +// CGrabWindow2, used as part of grab tests //
1.871 +//
1.872 +
1.873 +CGrabWindow2::CGrabWindow2(CGrabWindow *aWindow) : iGrabWindow(aWindow)
1.874 + {
1.875 + }
1.876 +
1.877 +void CGrabWindow2::Draw()
1.878 + {
1.879 + iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
1.880 + iGc->SetBrushColor(TRgb::Gray4(2));
1.881 + iGc->DrawRect(Size());
1.882 + }
1.883 +
1.884 +void CGrabWindow2::PointerL(const TPointerEvent &aPointer,const TTime&)
1.885 + {
1.886 +#if defined(LOGGING)
1.887 + _LIT(KPointer,"CGrabWindow2::PointerL(Type=%d, Pos=(%d,%d), ParPos=(%d,%d), Mod=0x%x)");
1.888 + LogMessageText.Format(KPointer,aPointer.iType,aPointer.iPosition.iX,aPointer.iPosition.iY,aPointer.iParentPosition.iX,aPointer.iParentPosition.iY,aPointer.iModifiers);
1.889 + TheClient->LogMessage(LogMessageText);
1.890 +#endif
1.891 + iGrabWindow->Pointer2(aPointer);
1.892 + }
1.893 +
1.894 +//
1.895 +// CTPointTest //
1.896 +//
1.897 +
1.898 +CTPointer::CTPointer(CTestStep* aStep) : CTWsGraphicsBase(aStep)
1.899 + {
1.900 + iState = 0;
1.901 + }
1.902 +
1.903 +
1.904 +CTPointer::~CTPointer()
1.905 + {
1.906 + HAL::Set(HALData::EPenDisplayOn,iOldPointerState);
1.907 + delete iRepeatWin;
1.908 + delete iGrabWin;
1.909 + delete iGrabWin2;
1.910 + Client()->ResetFocus();
1.911 + delete iTimeOut;
1.912 + }
1.913 +
1.914 +void CTPointer::ConstructL()
1.915 + {
1.916 + iTimeOut=new(ELeave) CTimeOut();
1.917 + iTimeOut->ConstructL();
1.918 + iTimeOut->Start(KTimeOutAfter,TCallBack(CTPointer::TimeOut,this));
1.919 +
1.920 + TheClient->iWs.SetPointerCursorArea(iTest->iNormalPointerCursorArea);
1.921 + iRepeatWin=new(ELeave) CPointerWindow(this);
1.922 + TSize screenSize(Client()->iScreen->SizeInPixels());
1.923 + if (TestBase()->ConfigurationSupportsPointerEventTesting())
1.924 + {
1.925 + iRepeatWin->SetUpLD(TPoint(screenSize.iWidth/8,screenSize.iHeight/8),TSize(screenSize.iWidth*3/4,screenSize.iHeight*3/4),Client()->iGroup,*Client()->iGc);
1.926 + }
1.927 + Client()->iGroup->SetCurrentWindow(iRepeatWin);
1.928 + iNoDigitiser=EFalse;
1.929 + TInt err=HAL::Get(HALData::EPenDisplayOn,iOldPointerState);
1.930 + if (err==KErrNotSupported)
1.931 + iNoDigitiser=ETrue;
1.932 + else if (err==KErrNone)
1.933 + err=HAL::Set(HALData::EPenDisplayOn,ETrue);
1.934 + if (err==KErrNotSupported)
1.935 + iNoDigitiser=(!iOldPointerState);
1.936 + else
1.937 + {
1.938 + TEST(err==KErrNone);
1.939 + if (err!=KErrNone)
1.940 + INFO_PRINTF3(_L("HAL::Set(HALData::EPenDisplayOn,ETrue) return value - Expected: %d, Actual: %d"), KErrNone, err);
1.941 + }
1.942 +
1.943 + }
1.944 +
1.945 +TInt CTPointer::TimeOut(TAny* aTest) //static
1.946 + {
1.947 + static_cast<CTPointer*>(aTest)->TimeOut();
1.948 + return(KErrNone);
1.949 + }
1.950 +
1.951 +void CTPointer::TimeOut()
1.952 + {
1.953 + TLogMessageText buf;
1.954 + _LIT(KPointerTimeOut,"TIMEOUT: Pointer Test, %d, %S");
1.955 + buf.AppendFormat(KPointerTimeOut,iState,&(iTest->iSubTitle));
1.956 + TheClient->LogMessage(buf);
1.957 + ++iTimeOutCount;
1.958 + if (!TestFailed(-1) && iState<2)
1.959 + {
1.960 + iTimeOut->Start(KTimeOutAfter,TCallBack(CTPointer::TimeOut,this));
1.961 + }
1.962 + }
1.963 +
1.964 +TBool CTPointer::TestFailed(TInt aCase,TBool aRetry/*=EFalse*/)
1.965 + {
1.966 + _LIT(KPointerTest,": Pointer Test, %d, %S, Case %d");
1.967 + _LIT(KRetry,"Retry");
1.968 + _LIT(KFail,"FAIL");
1.969 + TLogMessageText buf;
1.970 + TInt ret=0;
1.971 + if (aRetry)
1.972 + buf.Append(KRetry);
1.973 + else
1.974 + {
1.975 + ret=1;
1.976 + buf.Append(KFail);
1.977 + }
1.978 + buf.AppendFormat(KPointerTest,iState,&(iTest->iSubTitle),aCase);
1.979 + TheClient->LogMessage(buf);
1.980 +#if !defined(DISABLE_FAIL_DIALOG)
1.981 + if (!aRetry)
1.982 + {
1.983 + __DEBUGGER();
1.984 + TRAPD(err,ret=doTestFailedL());
1.985 + }
1.986 +#endif
1.987 + switch(ret)
1.988 + {
1.989 + case 0:
1.990 + return(ETrue); // Re-try test
1.991 + case 1:
1.992 + break;
1.993 + }
1.994 + return(EFalse);
1.995 + }
1.996 +
1.997 +TInt CTPointer::doTestFailedL()
1.998 + {
1.999 + //_LIT(Failed,"Pointer repeat test failed");
1.1000 + _LIT(Retest,"Retest");
1.1001 + _LIT(Fail,"Fail");
1.1002 + CTDialog *dialog=new(ELeave) CTDialog();
1.1003 + dialog->SetNumButtons(2);
1.1004 + dialog->SetButtonText(0,Retest);
1.1005 + dialog->SetButtonText(1,Fail);
1.1006 + dialog->ConstructLD(*Client()->iGroup,*Client()->iGc);
1.1007 + dialog->SetTitle(_L("Pointer repeat test failed"));
1.1008 + dialog->SetFlags(CTDialog::EDialogWaitForButtonUp);
1.1009 + return dialog->Display();
1.1010 + }
1.1011 +
1.1012 +CGrabWindow2 *CTPointer::GrabWin2() const
1.1013 + {
1.1014 + return(iGrabWin2);
1.1015 + }
1.1016 +
1.1017 +void CTPointer::StartGrabTestL()
1.1018 + {
1.1019 + iGrabWin=new(ELeave) CGrabWindow(this);
1.1020 + iGrabWin2=new(ELeave) CGrabWindow2(iGrabWin);
1.1021 +//
1.1022 + TSize screenSize(Client()->iScreen->SizeInPixels());
1.1023 + iGrabWin2->SetUpL(TPoint(screenSize.iWidth/8,screenSize.iHeight/8),TSize(screenSize.iWidth*3/4,screenSize.iHeight*3/4),Client()->iGroup,*Client()->iGc);
1.1024 + Client()->iGroup->SetCurrentWindow(iGrabWin2);
1.1025 +//
1.1026 + iGrabWin->SetUpLD(TPoint(screenSize.iWidth/4,screenSize.iHeight/4),TSize(screenSize.iWidth/2,screenSize.iHeight/2),Client()->iGroup,*Client()->iGc);
1.1027 + Client()->iGroup->SetCurrentWindow(iGrabWin);
1.1028 +//
1.1029 + }
1.1030 +
1.1031 +
1.1032 +void CTPointer::RunTestCaseL(TInt /*aCurTestCase*/)
1.1033 + {
1.1034 + _LIT(Repeat,"Repeat tests");
1.1035 + _LIT(Grab,"Grab tests");
1.1036 +
1.1037 + iTest->iState=iState;
1.1038 +
1.1039 + if (!TestBase()->ConfigurationSupportsPointerEventTesting())
1.1040 + {
1.1041 + INFO_PRINTF1(_L("Test skipped because config does not support pointer event testing"));
1.1042 + TestComplete();
1.1043 + return;
1.1044 + }
1.1045 +
1.1046 + ((CTPointerStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
1.1047 + switch(iState)
1.1048 + {
1.1049 + case 0:
1.1050 + ((CTPointerStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
1.1051 + iTest->LogSubTest(Repeat);
1.1052 + iState++;
1.1053 + break;
1.1054 +/**
1.1055 +
1.1056 + @SYMTestCaseID GRAPHICS-WSERV-0310
1.1057 +
1.1058 + @SYMDEF DEF081259
1.1059 +
1.1060 + @SYMTestCaseDesc Test pointer event handling
1.1061 +
1.1062 + @SYMTestPriority High
1.1063 +
1.1064 + @SYMTestStatus Implemented
1.1065 +
1.1066 + @SYMTestActions Simulate pointer events and check the events are then handled correctly
1.1067 +
1.1068 + @SYMTestExpectedResults Pointer events are handled correctly
1.1069 +
1.1070 +*/
1.1071 + case 1:
1.1072 + ((CTPointerStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0310"));
1.1073 + iTest->LogSubTest(Grab);
1.1074 +
1.1075 + StartGrabTestL();
1.1076 + iState++;
1.1077 + break;
1.1078 + default:
1.1079 + ((CTPointerStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
1.1080 + ((CTPointerStep*)iStep)->CloseTMSGraphicsStep();
1.1081 + iTimeOut->Cancel();
1.1082 + if (iTimeOutCount>0) TEST(EFalse);
1.1083 + if (iTest->IsFullRomL()) User::After(5000000);
1.1084 + TestComplete();
1.1085 + }
1.1086 + ((CTPointerStep*)iStep)->RecordTestResultL();
1.1087 + }
1.1088 +
1.1089 +
1.1090 +__WS_CONSTRUCT_STEP__(Pointer)