First public contribution.
1 // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
14 // Testing key event, capturing keys and hot keys
21 @internalComponent - Internal Symbian test code
27 #define LOGGING 1 //Uncomment this when there is a fail so that you get more logging
29 GLDEF_D ClientToKill *SecondClient=NULL;
31 GLDEF_C CTClient *CreateClientToKillL()
33 return(SecondClient=new(ELeave) ClientToKill());
36 GLDEF_C TInt ProcToKill(TAny *aScreenNumber)
39 ret=TestLibStartUp(CreateClientToKillL,(TInt)aScreenNumber);
43 CVisibleGroup::CVisibleGroup(TInt aScreenNo): iScreenNo(aScreenNo)
46 void CVisibleGroup::ConstructL()
48 User::LeaveIfError(iWs.Connect());
49 iScr=new(ELeave) CWsScreenDevice(iWs);
50 User::LeaveIfError(iScr->Construct(iScreenNo));
51 iScr->SetAppScreenMode(iMode);
52 iGroup=RWindowGroup(iWs);
53 User::LeaveIfError(iGroup.Construct(NULL,ETrue));
54 TInt id=TheClient->iGroup->GroupWin()->Identifier();
55 iGroup.SetOwningWindowGroup(id);
58 _LIT(KIds,"Window Group Id: Main=%d, 2nd Client=%d");
59 buf.Format(KIds,id,iGroup.Identifier());
65 CVisibleGroup::~CVisibleGroup()
72 void CVisibleGroup::SetMode(TInt aMode)
75 iScr->SetAppScreenMode(iMode);
79 ClientToKill::ClientToKill()
82 void ClientToKill::ConstructL()
84 CTClient::ConstructL();
86 sem.OpenGlobal(KSemaphoreName);
88 iGroup=new(ELeave) TestWindowGroup(this);
91 iScreen->SetScreenMode(0);
92 TSize screenSize=iScreen->SizeInPixels();
94 TInt winWidth=3*screenSize.iWidth/4;
95 TInt winHeight=3*screenSize.iHeight/4;
96 iTestWin=new(ELeave) TestWindow();
97 iTestWin->SetUpL(TPoint((screenSize.iWidth+4)/8,(screenSize.iHeight+4)/8),TSize(winWidth,winHeight),iGroup,*iGc);
101 _LIT(KId,"Window Group Id in 2nd Process=%d");
102 buf.Format(KId,iGroup->GroupWin()->Identifier());
105 sem.Signal(); // Signal thread fully initialised
109 ClientToKill::~ClientToKill()
117 CTKey::CTKey(CTestStep* aStep) : CTWsGraphicsBase(aStep)
123 void CTKey::ConstructL()
125 iSem.CreateGlobal(KSemaphoreName,0,KOwnerType);
126 iVisibleGroup=new(ELeave) CVisibleGroup(iTest->iScreenNumber);
127 iVisibleGroup->ConstructL();
132 delete iVisibleGroup;
134 // Set focus back to this screen as it went to primary screen when iVisibleGroup was destroyed
135 // Wserv focus handling made focus screen switch to another screen if there is no
136 // focusable window group on that particular screen.
137 TheClient->iWs.SetFocusScreen(iTest->iScreenNumber);
140 void CTKey::SendKey(TInt aScanCode)
143 keyEvent.iCode=aScanCode;
144 keyEvent.iScanCode=aScanCode;
145 keyEvent.iModifiers=0;
147 TheClient->iWs.SimulateKeyEvent(keyEvent);
148 TheClient->iWs.Flush();
151 void CTKey::SendUpDown(TInt aScanCode)
154 rawEvent.Set(TRawEvent::EKeyDown,aScanCode);
155 TheClient->iWs.SimulateRawEvent(rawEvent);
156 rawEvent.Set(TRawEvent::EKeyUp,aScanCode);
157 TheClient->iWs.SimulateRawEvent(rawEvent);
160 void CTKey::SendCtrlAltShift(TRawEvent::TType aType)
163 rawEvent.Set(aType,EStdKeyLeftFunc);
164 TheClient->iWs.SimulateRawEvent(rawEvent);
165 rawEvent.Set(aType,EStdKeyLeftCtrl);
166 TheClient->iWs.SimulateRawEvent(rawEvent);
167 rawEvent.Set(aType,EStdKeyLeftShift);
168 TheClient->iWs.SimulateRawEvent(rawEvent);
171 void CTKey::SendCtrlAltShift(TInt aScanCode)
173 SendCtrlAltShift(TRawEvent::EKeyDown);
174 SendUpDown(aScanCode);
175 SendCtrlAltShift(TRawEvent::EKeyUp);
176 TheClient->iWs.Flush();
179 void CTKey::LogWindowGroupIds()
181 CArrayFixFlat<TInt>* idList=new(ELeave) CArrayFixFlat<TInt>(5);
184 TheClient->iWs.WindowGroupList(0,idList);
186 _LIT(KWinGp,"Window Group Id's: %d");
189 buf.Format(KWinGp,(*idList)[ii]);
190 while (++ii<idList->Count())
191 buf.AppendFormat(KId,(*idList)[ii]);
196 void CTKey::SetHotKey(THotKey aType, TUint aKeyCode)
198 TheClient->iWs.SetHotKey(aType,aKeyCode-'A'+1,EFuncCtrlShift,EFuncCtrlShift);
201 void CTKey::KeyOfOrientation()
203 TInt numScreenModes = TheClient->iScreen->NumScreenModes();
204 TInt originalScreenMode = TheClient->iScreen->CurrentScreenMode();
205 if(numScreenModes >= 2)
207 //1 possible rotation of 180deg found in wsini.ini screenmode 8
208 iVisibleGroup->SetMode(numScreenModes-1);
209 TheClient->iScreen->SetScreenMode(numScreenModes-1);
210 SendCtrlAltShift('O');
211 TheClient->iWs.Flush();
212 //1 possible rotation of 90deg found in wsini.ini screenmode 7
213 iVisibleGroup->SetMode(numScreenModes-2);
214 TheClient->iScreen->SetScreenMode(numScreenModes-2);
215 SendCtrlAltShift('O');
216 TheClient->iWs.Flush();
217 //reset to original screenmode
218 iVisibleGroup->SetMode(originalScreenMode);
219 TheClient->iScreen->SetScreenMode(originalScreenMode);
223 TEST(numScreenModes>2);
224 INFO_PRINTF2(_L("numScreenModes - Expected: >2, Actual: %d"), numScreenModes);
226 TPixelsAndRotation originalSizeAndRotation;
227 TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),originalSizeAndRotation);
228 SendCtrlAltShift('O');
229 TheClient->iWs.Flush();
230 TPixelsAndRotation sizeAndRotation;
231 TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
232 TEST(sizeAndRotation.iRotation!=originalSizeAndRotation.iRotation);
233 if (sizeAndRotation.iRotation==originalSizeAndRotation.iRotation)
234 INFO_PRINTF3(_L("iRotation - Not Expected: %d, Actual: %d"), originalSizeAndRotation.iRotation, sizeAndRotation.iRotation);
235 SendCtrlAltShift('O');
236 TheClient->iWs.Flush();
239 void CTKey::CycleDisplaySize()
241 // The test does nothing if there is only one possible screen mode -> return
242 TInt numScreenModes = TheClient->iScreen->NumScreenModes();
243 if (numScreenModes<2)
245 TEST(numScreenModes>2);
246 INFO_PRINTF2(_L("numScreenModes - Expected: >2, Actual: %d"), numScreenModes);
249 //Get original screen mode and size values
250 TInt originalScreenMode = TheClient->iScreen->CurrentScreenMode();
251 TPixelsAndRotation sizeAndRotation;
252 TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
253 TSize originalScreenSize = sizeAndRotation.iPixelSize;
255 SendCtrlAltShift('U');
256 TheClient->iWs.Flush();
257 TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
258 TEST(sizeAndRotation.iPixelSize.iHeight!=originalScreenSize.iHeight && sizeAndRotation.iPixelSize.iWidth!=originalScreenSize.iWidth);
259 if (sizeAndRotation.iPixelSize.iHeight==originalScreenSize.iHeight || sizeAndRotation.iPixelSize.iWidth==originalScreenSize.iWidth)
260 INFO_PRINTF5(_L("iPixelSize - Expected: !%d !%d, Actual: %d %d"), originalScreenSize.iHeight, originalScreenSize.iWidth, sizeAndRotation.iPixelSize.iHeight, sizeAndRotation.iPixelSize.iWidth);
261 TheClient->iScreen->SetScreenMode(originalScreenMode);
262 TheClient->iWs.Flush();
265 void CTKey::KeyOfDeathL()
270 _LIT(KNum1,"Priority Zero Window Groups=%d Total=%d (Before Process Creation)");
271 buf.Format(KNum1,TheClient->iWs.NumWindowGroups(0),TheClient->iWs.NumWindowGroups());
275 CProcess* process = CProcess::NewL(CProcess::eProcessKeyTest,iTest->iScreenNumber);
276 RWindowGroup group(TheClient->iWs);
277 group.Construct(1234);
278 TheClient->Flush(); //Make sure the window group above is created before the one in the other process
279 TInt id=TheClient->iGroup->GroupWin()->Identifier();
280 group.SetOwningWindowGroup(id);
281 group.DefaultOwningWindow();
284 User::After(TTimeIntervalMicroSeconds32(100000)); //0.1 secs
285 TInt numGroups=TheClient->iWs.NumWindowGroups();
286 TInt numGroups0=TheClient->iWs.NumWindowGroups(0);
289 _LIT(KNum2,"NewWinGpId=%d Priority Zero Window Groups=%d Total=%d (After Process Creation)");
290 buf.Format(KNum2,id,numGroups0,numGroups);
292 _LIT(KLog1,"Sending Key Of Death");
297 group.SetOrdinalPosition(1); //Make sure that the window group we have just created is behind the one created by the other process (belt and braces)
298 SendCtrlAltShift('K');
299 TheClient->iWs.Flush();
301 _LIT(KLog2,"Sent Key Of Death");
308 FOREVER //On multi-core platforms need to wait for the Key of Death procedure to complete
310 numGroups2=TheClient->iWs.NumWindowGroups();
311 numGroups0b=TheClient->iWs.NumWindowGroups(0);
314 if (numGroups!=numGroups2 || numGroups0!=numGroups0b)
319 User::After(100000); //0.1secs
321 TEST(numGroups==numGroups2+1);
322 _LIT(KLog,"KeyOfDeath Num WinGps Before=%d After=%d (should be one less)");
323 if (numGroups!=numGroups2+1)
324 LOG_MESSAGE3(KLog,numGroups,numGroups2);
325 TEST(numGroups0==numGroups0b+1);
326 if (numGroups0!=numGroups0b+1)
327 LOG_MESSAGE3(KLog,numGroups0,numGroups0b);
330 TBool processDead=!process->StillAlive();
334 _LIT(KLog,"Other Thread Still Alive");
340 _LIT(KLog3,"Finished KeyOfDeath Test");
347 #define CONTRAST_UP 'A' //'a'-'a'+1
348 #define CONTRAST_DOWN 'B' //'b'-'a'+1
350 void CTKey::TestContrastL(TBool aChange)
355 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast));
356 TInt diff=aChange ? 1:0;
357 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast));
359 SendCtrlAltShift(CONTRAST_UP);
360 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
361 if ((contrast==maxContrast) && aChange)
363 TEST(newContrast==0);
365 INFO_PRINTF3(_L("newContrast==0 - Expected: %d, Actual: %d"), 0, newContrast);
369 TEST(contrast+diff==newContrast);
370 if (contrast+diff!=newContrast)
371 INFO_PRINTF3(_L("contrast+diff==newContrast - Expected: %d, Actual: %d"), contrast+diff, newContrast);
374 SendCtrlAltShift(CONTRAST_DOWN);
375 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
376 TEST(contrast==newContrast);
377 if (contrast!=newContrast)
378 INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
380 SendCtrlAltShift(CONTRAST_DOWN);
381 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
384 TEST(maxContrast==newContrast);
385 if (maxContrast!=newContrast)
386 INFO_PRINTF3(_L("maxContrast==newContrast - Expected: %d, Actual: %d"), maxContrast, newContrast);
391 TEST(contrast-diff==newContrast);
392 if (contrast-diff!=newContrast)
393 INFO_PRINTF3(_L("contrast-diff==newContrast - Expected: %d, Actual: %d"), contrast-diff, newContrast);
397 SendCtrlAltShift(CONTRAST_UP);
398 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
399 TEST(contrast==newContrast);
400 if (contrast!=newContrast)
401 INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
405 void CTKey::TestDefaultContrastL(TBool aChange)
410 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast));
411 TInt diff=aChange ? 1:0;
412 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast));
414 SendKey(EKeyIncContrast);
415 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
416 if ((contrast==maxContrast) && aChange)
418 TEST(newContrast==0);
420 INFO_PRINTF3(_L("newContrast==0 - Expected: %d, Actual: %d"), 0, newContrast);
424 TEST(contrast+diff==newContrast);
425 if (contrast+diff!=newContrast)
426 INFO_PRINTF3(_L("newContrast==contrast+diff - Expected: %d, Actual: %d"), contrast+diff, newContrast);
429 SendKey(EKeyDecContrast);
430 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
431 TEST(contrast==newContrast);
432 if (contrast!=newContrast)
433 INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
435 SendKey(EKeyDecContrast);
436 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
439 TEST(maxContrast==newContrast);
440 if (maxContrast!=newContrast)
441 INFO_PRINTF3(_L("maxContrast==newContrast - Expected: %d, Actual: %d"), maxContrast, newContrast);
445 TEST(contrast-diff==newContrast);
446 if (contrast-diff!=newContrast)
447 INFO_PRINTF3(_L("contrast-diff==newContrast - Expected: %d, Actual: %d"), contrast-diff, newContrast);
450 SendKey(EKeyIncContrast);
451 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
452 TEST(contrast==newContrast);
453 if (contrast!=newContrast)
454 INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
458 void CTKey::ContrastKeysL()
462 TInt err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast);
463 if (err==KErrNotSupported)
465 else if (err==KErrNone)
466 err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast);
467 if (err==KErrNotSupported)
471 INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)=KErrNone - Expected: %d, Actual: %d"), KErrNone, err);
474 err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayContrast,++contrast);
475 else if (contrast==maxContrast)
476 err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayContrast,--contrast);
477 if (err==KErrNotSupported)
481 INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)=KErrNone - Expected: %d, Actual: %d"), KErrNone, err);
482 TestDefaultContrastL(ETrue);
484 SetHotKey(EHotKeyIncContrast,CONTRAST_UP);
485 SetHotKey(EHotKeyDecContrast,CONTRAST_DOWN);
486 TestContrastL(ETrue);
487 TestDefaultContrastL(ETrue);
489 TheClient->iWs.ClearHotKeys(EHotKeyIncContrast);
490 TheClient->iWs.ClearHotKeys(EHotKeyDecContrast);
491 TestContrastL(EFalse);
492 TestDefaultContrastL(EFalse);
494 TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncContrast);
495 TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecContrast);
496 TestContrastL(EFalse);
497 TestDefaultContrastL(ETrue);
499 SetHotKey(EHotKeyIncContrast,CONTRAST_UP);
500 SetHotKey(EHotKeyDecContrast,CONTRAST_DOWN);
501 TestContrastL(ETrue);
502 TestDefaultContrastL(ETrue);
504 TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncContrast);
505 TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecContrast);
506 TestContrastL(EFalse);
507 TestDefaultContrastL(ETrue);
510 #define BACKLIGHT_ON 'A' //'o'-'a'+1
511 #define BACKLIGHT_OFF 'B' //'p'-'a'+1
512 #define BACKLIGHT_TOGGLE 'C' //'q'-'a'+1
513 /** Test for reaction against backlight ON/OFF/TOGGLE buttons defined above.
514 If aChange is false button presses must not affect the state of backlight.
516 void CTKey::TestBackLightL(TBool aChange)
519 SendCtrlAltShift(BACKLIGHT_ON);
520 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
521 TEST(state==aChange);
523 INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
525 SendCtrlAltShift(BACKLIGHT_TOGGLE);
526 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
529 INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
531 SendCtrlAltShift(BACKLIGHT_TOGGLE);
532 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
533 TEST(state==aChange);
535 INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
537 SendCtrlAltShift(BACKLIGHT_OFF);
538 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
541 INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
543 SendCtrlAltShift(BACKLIGHT_TOGGLE);
544 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
545 TEST(state==aChange);
547 INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
549 SendCtrlAltShift(BACKLIGHT_TOGGLE);
550 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
553 INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
557 /** Test for reaction against default backlight ON/OFF/TOGGLE buttons.
558 If aChange is false button presses must not affect the state of backlight.
560 void CTKey::TestDefaultBackLightL(TBool aChange)
563 SendKey(EKeyBacklightOn);
564 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
565 TEST(state==aChange);
567 INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
569 SendKey(EKeyBacklightToggle);
570 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
573 INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
575 SendKey(EKeyBacklightToggle);
576 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
577 TEST(state==aChange);
579 INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
581 SendKey(EKeyBacklightOff);
582 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
585 INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
587 SendKey(EKeyBacklightToggle);
588 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
589 TEST(state==aChange);
591 INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
593 SendKey(EKeyBacklightToggle);
594 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
597 INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
601 void CTKey::BackLightKeysL()
603 // Turns backlight off
605 TInt err=HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,prevState);
606 if (err==KErrNotSupported)
608 _LIT(KLog,"Cannot test BackLight Key presses as cannot read its state on screen %d");
609 LOG_MESSAGE2(KLog,iTest->iScreenNumber);
612 else if (err==KErrNone)
613 err=HAL::Set(iTest->iScreenNumber,HALData::EBacklightState,EFalse);
614 if (err==KErrNotSupported)
616 _LIT(KLog,"Cannot test BackLight Key presses as cannot set its state on screen %d");
617 LOG_MESSAGE2(KLog,iTest->iScreenNumber);
623 _LIT(KLog,"Reading or Setting BackLight state gave error %d on screen %d");
624 LOG_MESSAGE3(KLog,err,iTest->iScreenNumber);
627 // Tests that default backlight ON/OFF/TOGGLE buttons work
628 TestDefaultBackLightL(ETrue);
630 // Sets user defined backlight buttons and tests that both default and user defined buttons work
631 SetHotKey(EHotKeyBacklightOn,BACKLIGHT_ON);
632 SetHotKey(EHotKeyBacklightOff,BACKLIGHT_OFF);
633 SetHotKey(EHotKeyBacklightToggle,BACKLIGHT_TOGGLE);
634 TestBackLightL(ETrue);
635 TestDefaultBackLightL(ETrue);
637 // Calls RWsSession::ClearHotKeys and tests that both default and user defined buttons don't work
638 TheClient->iWs.ClearHotKeys(EHotKeyBacklightOn);
639 TheClient->iWs.ClearHotKeys(EHotKeyBacklightOff);
640 TheClient->iWs.ClearHotKeys(EHotKeyBacklightToggle);
641 TestBackLightL(EFalse);
642 TestDefaultBackLightL(EFalse);
644 // Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work
645 TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOn);
646 TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOff);
647 TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightToggle);
648 TestBackLightL(EFalse);
649 TestDefaultBackLightL(ETrue);
651 // Sets user defined backlight buttons and tests that both default and user defined buttons work
652 SetHotKey(EHotKeyBacklightOn,BACKLIGHT_ON);
653 SetHotKey(EHotKeyBacklightOff,BACKLIGHT_OFF);
654 SetHotKey(EHotKeyBacklightToggle,BACKLIGHT_TOGGLE);
655 TestBackLightL(ETrue);
656 TestDefaultBackLightL(ETrue);
658 // Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work
659 TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOn);
660 TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOff);
661 TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightToggle);
662 TestBackLightL(EFalse);
663 TestDefaultBackLightL(ETrue);
665 //Restores previous backlight state
666 //err=UserHal::SetBacklightOn(prevState);
667 err=HAL::Set(iTest->iScreenNumber,HALData::EBacklightState,prevState);
671 _LIT(KLog,"Failed to set BackLight state back to previous state: %d on screen %d, error code: %d");
672 LOG_MESSAGE4(KLog,prevState,iTest->iScreenNumber,err);
676 #define BRIGHTNESS_UP 'N'
677 #define BRIGHTNESS_DOWN 'J'
678 /** If aChange is true, checks that programmicaly defined brightness buttons increase and decrease brightness properly.
679 If aChange is false, checks that programmicaly defined brightness buttons don't affect brightness.
681 void CTKey::TestBrightnessL(TBool aChange)
685 TInt diff=aChange ? 1:0;
686 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness));
688 SendCtrlAltShift(BRIGHTNESS_UP);
689 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
690 TEST(brightness+diff==newBrightness);
691 if (brightness+diff!=newBrightness)
692 INFO_PRINTF3(_L("brightness+diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness+diff);
694 SendCtrlAltShift(BRIGHTNESS_DOWN);
695 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
696 TEST(brightness==newBrightness);
697 if (brightness!=newBrightness)
698 INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
700 SendCtrlAltShift(BRIGHTNESS_DOWN);
701 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
702 TEST(brightness-diff==newBrightness);
703 if (brightness-diff!=newBrightness)
704 INFO_PRINTF3(_L("brightness-diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness-diff);
706 SendCtrlAltShift(BRIGHTNESS_UP);
707 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
708 TEST(brightness==newBrightness);
709 if (brightness!=newBrightness)
710 INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
713 /** If aChange is true, checks that default brightness buttons increase and decrease brightness properly (increase/decrease by 1).
714 If aChange is false, checks that default brightness buttons don't affect brightness.
716 void CTKey::TestDefaultBrightnessL(TBool aChange)
720 TInt diff=aChange ? 1:0;
721 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness));
723 SendKey(EKeyIncBrightness);
724 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
725 TEST(brightness+diff==newBrightness);
726 if (brightness+diff!=newBrightness)
727 INFO_PRINTF3(_L("brightness+diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness+diff);
729 SendKey(EKeyDecBrightness);
730 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
731 TEST(brightness==newBrightness);
732 if (brightness!=newBrightness)
733 INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
735 SendKey(EKeyDecBrightness);
736 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
737 TEST(brightness-diff==newBrightness);
738 if (brightness-diff!=newBrightness)
739 INFO_PRINTF3(_L("brightness-diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness-diff);
741 SendKey(EKeyIncBrightness);
742 User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
743 TEST(brightness==newBrightness);
744 if (brightness!=newBrightness)
745 INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
748 void CTKey::BrightnessKeysL()
750 INFO_PRINTF1(_L("AUTO Brightness Key Test "));
752 TInt brightness=0; //To stop warning
753 // get maximum brightness and current
754 TInt err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightnessMax,maxBrightness);
755 if (err==KErrNotSupported)
757 else if (err==KErrNone)
758 err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness);
759 if (err==KErrNotSupported)
761 INFO_PRINTF1(_L(" Supported"));
764 INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness) return value - Expected: %d, Actual: %d"), KErrNone, err);
766 // sets brightness to be neither maximal nor minimal
768 err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayBrightness,++brightness);
769 else if (brightness==maxBrightness)
770 err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayBrightness,--brightness);
771 if (err==KErrNotSupported)
773 INFO_PRINTF1(_L(" Changeable"));
776 INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness) return value - Expected: %d, Actual: %d"), KErrNone, err);
778 // Test default brightness buttons increase/decrease brightness by 1
779 TestDefaultBrightnessL(ETrue);
781 // Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
782 INFO_PRINTF1(_L(" First Test"));
783 SetHotKey(EHotKeyIncBrightness,BRIGHTNESS_UP);
784 SetHotKey(EHotKeyDecBrightness,BRIGHTNESS_DOWN);
785 TestBrightnessL(ETrue);
786 TestDefaultBrightnessL(ETrue);
788 // Clear brightness buttons, test that default and program defined brightness buttons doesn't affect brightness
789 INFO_PRINTF1(_L(" Second Test"));
790 TheClient->iWs.ClearHotKeys(EHotKeyIncBrightness);
791 TheClient->iWs.ClearHotKeys(EHotKeyDecBrightness);
792 TestBrightnessL(EFalse);
793 TestDefaultBrightnessL(EFalse);
795 // Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
796 INFO_PRINTF1(_L(" Third Test"));
797 TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncBrightness);
798 TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecBrightness);
799 TestBrightnessL(EFalse);
800 TestDefaultBrightnessL(ETrue);
802 // Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
803 INFO_PRINTF1(_L(" Fourth Test"));
804 SetHotKey(EHotKeyIncBrightness,BRIGHTNESS_UP);
805 SetHotKey(EHotKeyDecBrightness,BRIGHTNESS_DOWN);
806 TestBrightnessL(ETrue);
807 TestDefaultBrightnessL(ETrue);
809 // Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
810 INFO_PRINTF1(_L(" Fifth Test"));
811 TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncBrightness);
812 TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecBrightness);
813 TestBrightnessL(EFalse);
814 TestDefaultBrightnessL(ETrue);
817 void CTKey::TestDefaultScreenSizeModeL(TInt aKeys,TBool aChange)
819 TInt screenMode=TheClient->iScreen->CurrentScreenMode();
822 for (key=0;key<aKeys;++key)
824 iVisibleGroup->SetMode(key);
825 SendKey(EKeyScreenDimension0+key);
828 retVal = TheClient->iScreen->CurrentScreenMode();
831 INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), key, retVal);
835 retVal = TheClient->iScreen->CurrentScreenMode();
836 TEST(retVal==screenMode);
837 if (retVal!=screenMode)
838 INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), screenMode, retVal);
843 #define DIMENSION0 'P'
844 #define DIMENSION1 'Q'
845 #define DIMENSION2 'R'
846 #define DIMENSION3 'N'
847 void CTKey::TestScreenSizeModeL(TInt aKeys,TBool aChange)
849 TInt screenMode=TheClient->iScreen->CurrentScreenMode();
852 for (key=0;key<aKeys;++key)
854 iVisibleGroup->SetMode(key);
858 SendCtrlAltShift(DIMENSION0);
861 SendCtrlAltShift(DIMENSION1);
864 SendCtrlAltShift(DIMENSION2);
867 SendCtrlAltShift(DIMENSION3);
870 INFO_PRINTF2(_L("Error Invalid Key: %d"),key);
878 retVal = TheClient->iScreen->CurrentScreenMode();
881 INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), key, retVal);
886 retVal = TheClient->iScreen->CurrentScreenMode();
887 TEST(retVal==screenMode);
888 if (retVal!=screenMode)
889 INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), screenMode, retVal);
895 void CTKey::ScreenSizeModeKeysL()
897 // The test does nothing if there is only one possible screen mode -> return
898 TInt numScreenModes=TheClient->iScreen->NumScreenModes();
899 if (numScreenModes<2)
902 // Use at most 4 different modes for the test
903 if (numScreenModes>4) {numScreenModes=4;}
906 TInt screenMode=TheClient->iScreen->CurrentScreenMode();
907 iVisibleGroup->SetMode(numScreenModes-1);
908 TheClient->iScreen->SetScreenMode(numScreenModes-1);
910 // Test default screen mode switch buttons
911 TestDefaultScreenSizeModeL(numScreenModes,ETrue);
913 // Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
914 SetHotKey(EHotKeyScreenDimension0,DIMENSION0);
915 SetHotKey(EHotKeyScreenDimension1,DIMENSION1);
916 SetHotKey(EHotKeyScreenDimension2,DIMENSION2);
917 SetHotKey(EHotKeyScreenDimension3,DIMENSION3);
918 TestDefaultScreenSizeModeL(numScreenModes,ETrue);
919 TestScreenSizeModeL(numScreenModes,ETrue);
921 // Clear all screen mode switch buttons. Test that default and program defined screen mode switch buttons don't affect screen modes
922 TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension0);
923 TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension1);
924 TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension2);
925 TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension3);
926 TestDefaultScreenSizeModeL(numScreenModes,EFalse);
927 TestScreenSizeModeL(numScreenModes,EFalse);
929 // Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
930 TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension0);
931 TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension1);
932 TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension2);
933 TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension3);
934 TestDefaultScreenSizeModeL(numScreenModes,ETrue);
935 TestScreenSizeModeL(numScreenModes,EFalse);
937 // Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
938 SetHotKey(EHotKeyScreenDimension0,DIMENSION0);
939 SetHotKey(EHotKeyScreenDimension1,DIMENSION1);
940 SetHotKey(EHotKeyScreenDimension2,DIMENSION2);
941 SetHotKey(EHotKeyScreenDimension3,DIMENSION3);
942 TestDefaultScreenSizeModeL(numScreenModes,ETrue);
943 TestScreenSizeModeL(numScreenModes,ETrue);
945 // Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
946 TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension0);
947 TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension1);
948 TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension2);
949 TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension3);
950 TestDefaultScreenSizeModeL(numScreenModes,ETrue);
951 TestScreenSizeModeL(numScreenModes,EFalse);
953 // Restore initial screen mode
954 iVisibleGroup->SetMode(screenMode);
955 TheClient->iScreen->SetScreenMode(screenMode);
958 void CTKey::RunTestCaseL(TInt /*aCurTestCase*/)
960 _LIT(KTest0,"KeyOfDeath");
961 _LIT(KTest1,"Contrast");
962 _LIT(KTest2,"BackLight");
963 _LIT(KTest3,"Brightness");
964 _LIT(KTest4,"Screen Size Mode");
965 ((CTKeyStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
967 _LIT(KTest5,"Orientation");
968 _LIT(KTest6,"CycleDisplaySize");
970 switch(++iTest->iState)
973 @SYMTestCaseID GRAPHICS-WSERV-0106
977 @SYMTestCaseDesc Key of Death test
979 @SYMTestPriority High
981 @SYMTestStatus Implemented
983 @SYMTestActions Creates a new client process and runs it.
984 Waits until the process is started and simulates Ctrl-Alt-Shift-K press.
985 When starts the process assumes that TAutoServer.exe exists in z:\sys\bin directory.
986 Otherwise the test will not exit a wait-state and will be aborted.
988 @SYMTestExpectedResults Checks that the process is dead after the Ctrl-Alt-Shift-K press.
989 Check also that the difference between amounts of window groups efore
990 death-key press and after death-key press is 1.
993 ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0106"));
994 iTest->LogSubTest(KTest0);
999 @SYMTestCaseID GRAPHICS-WSERV-0539
1001 ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0539"));
1002 iTest->LogSubTest(KTest1);
1006 @SYMTestCaseID GRAPHICS-WSERV-0107
1010 @SYMTestCaseDesc Test backlight
1012 @SYMTestPriority High
1014 @SYMTestStatus Implemented
1016 @SYMTestActions Does nothing if hardware attributes are not supported.
1017 1. Turns backlight off.
1018 2. Tests that default backlight ON/OFF/TOGGLE buttons work.
1019 3. Sets user defined backlight buttons and tests that both default and user defined buttons work.
1020 4. Calls RWsSession::ClearHotKeys and tests that both default and user defined buttons don't work.
1021 5. Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work.
1022 6. Sets user defined backlight buttons and tests that both default and user defined buttons work.
1023 7. Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work.
1024 8. Restores previous backlight state.
1026 @SYMTestExpectedResults Expects that actions described above give positive result.
1027 The test also checks that programmatic turn off/on doesn't fail.
1030 ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0107"));
1031 iTest->LogSubTest(KTest2);
1035 @SYMTestCaseID GRAPHICS-WSERV-0108
1039 @SYMTestCaseDesc Test brightness
1041 @SYMTestPriority High
1043 @SYMTestStatus Implemented
1045 @SYMTestActions Does nothing if hardware attributes are not supported.
1046 1. Get maximum brightness and current, test that those operations don't fail
1047 2. Sets brightness to be neither maximal nor minimal, test that those operations don't fail
1048 3. Test default brightness buttons increase/decrease brightness by 1
1049 4. Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
1050 5. Clear brightness buttons, test that default and program defined brightness buttons doesn't affect brightness
1051 6. Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
1052 7. Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
1053 8. Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
1055 @SYMTestExpectedResults Expects that actions described above give positive result.
1056 The test also checks that programmatic brightness increase and decrease doesn't fail.
1059 ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0108"));
1060 iTest->LogSubTest(KTest3);
1064 @SYMTestCaseID GRAPHICS-WSERV-0109
1068 @SYMTestCaseDesc Test screen mode switching
1070 @SYMTestPriority High
1072 @SYMTestStatus Implemented
1074 @SYMTestActions The test does nothing if there is only one possible screen mode. It uses at most 4 different modes for the test.
1075 1. Test default screen mode switch buttons
1076 2. Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
1077 3. Clear all screen mode switch buttons. Test that default and program defined screen mode switch buttons don't affect screen modes
1078 4. Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
1079 5. Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
1080 6. Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
1081 7. Restore initial screen mode
1085 @SYMTestExpectedResults Expects that actions described above give positive result.
1088 ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0109"));
1089 iTest->LogSubTest(KTest4);
1090 ScreenSizeModeKeysL();
1095 @SYMTestCaseID GRAPHICS-WSERV-0540
1097 ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0540"));
1098 iTest->LogSubTest(KTest5);
1103 @SYMTestCaseID GRAPHICS-WSERV-0541
1105 ((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0541"));
1106 iTest->LogSubTest(KTest6);
1111 ((CTKeyStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
1112 ((CTKeyStep*)iStep)->CloseTMSGraphicsStep();
1115 ((CTKeyStep*)iStep)->RecordTestResultL();
1119 __WS_CONSTRUCT_STEP__(Key)