os/graphics/windowing/windowserver/test/tauto/TKEY.CPP
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// Testing key event, capturing keys and hot keys
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
/**
sl@0
    19
 @file
sl@0
    20
 @test
sl@0
    21
 @internalComponent - Internal Symbian test code
sl@0
    22
*/
sl@0
    23
sl@0
    24
sl@0
    25
#include "TKEY.H"
sl@0
    26
sl@0
    27
#define LOGGING 1	//Uncomment this when there is a fail so that you get more logging
sl@0
    28
sl@0
    29
GLDEF_D ClientToKill *SecondClient=NULL;
sl@0
    30
sl@0
    31
GLDEF_C CTClient *CreateClientToKillL()
sl@0
    32
	{
sl@0
    33
	return(SecondClient=new(ELeave) ClientToKill());
sl@0
    34
	}
sl@0
    35
sl@0
    36
GLDEF_C TInt ProcToKill(TAny *aScreenNumber)
sl@0
    37
	{
sl@0
    38
	TInt ret=KErrNone;
sl@0
    39
	ret=TestLibStartUp(CreateClientToKillL,(TInt)aScreenNumber);
sl@0
    40
	return(ret);
sl@0
    41
	}
sl@0
    42
sl@0
    43
CVisibleGroup::CVisibleGroup(TInt aScreenNo): iScreenNo(aScreenNo)
sl@0
    44
	{}
sl@0
    45
sl@0
    46
void CVisibleGroup::ConstructL()
sl@0
    47
	{
sl@0
    48
	User::LeaveIfError(iWs.Connect());
sl@0
    49
	iScr=new(ELeave) CWsScreenDevice(iWs);
sl@0
    50
	User::LeaveIfError(iScr->Construct(iScreenNo));
sl@0
    51
	iScr->SetAppScreenMode(iMode);
sl@0
    52
	iGroup=RWindowGroup(iWs);
sl@0
    53
	User::LeaveIfError(iGroup.Construct(NULL,ETrue));
sl@0
    54
	TInt id=TheClient->iGroup->GroupWin()->Identifier();
sl@0
    55
	iGroup.SetOwningWindowGroup(id);
sl@0
    56
#if defined(LOGGING)
sl@0
    57
	TLogMessageText buf;
sl@0
    58
	_LIT(KIds,"Window Group Id: Main=%d, 2nd Client=%d");
sl@0
    59
	buf.Format(KIds,id,iGroup.Identifier());
sl@0
    60
	iWs.LogMessage(buf);
sl@0
    61
#endif
sl@0
    62
	iWs.Flush();
sl@0
    63
	}
sl@0
    64
sl@0
    65
CVisibleGroup::~CVisibleGroup()
sl@0
    66
	{
sl@0
    67
	iGroup.Close();
sl@0
    68
	delete iScr;
sl@0
    69
	iWs.Close();
sl@0
    70
	}
sl@0
    71
sl@0
    72
void CVisibleGroup::SetMode(TInt aMode)
sl@0
    73
	{
sl@0
    74
	iMode=aMode;
sl@0
    75
	iScr->SetAppScreenMode(iMode);
sl@0
    76
	iWs.Flush();
sl@0
    77
	}
sl@0
    78
sl@0
    79
ClientToKill::ClientToKill()
sl@0
    80
	{}
sl@0
    81
sl@0
    82
void ClientToKill::ConstructL()
sl@0
    83
	{
sl@0
    84
	CTClient::ConstructL();
sl@0
    85
	RSemaphore sem;
sl@0
    86
	sem.OpenGlobal(KSemaphoreName);
sl@0
    87
sl@0
    88
	iGroup=new(ELeave) TestWindowGroup(this);
sl@0
    89
	iGroup->ConstructL();
sl@0
    90
sl@0
    91
	iScreen->SetScreenMode(0);
sl@0
    92
	TSize screenSize=iScreen->SizeInPixels();
sl@0
    93
sl@0
    94
	TInt winWidth=3*screenSize.iWidth/4;
sl@0
    95
	TInt winHeight=3*screenSize.iHeight/4;
sl@0
    96
	iTestWin=new(ELeave) TestWindow();
sl@0
    97
	iTestWin->SetUpL(TPoint((screenSize.iWidth+4)/8,(screenSize.iHeight+4)/8),TSize(winWidth,winHeight),iGroup,*iGc);
sl@0
    98
sl@0
    99
#if defined(LOGGING)
sl@0
   100
	TLogMessageText buf;
sl@0
   101
	_LIT(KId,"Window Group Id in 2nd Process=%d");
sl@0
   102
	buf.Format(KId,iGroup->GroupWin()->Identifier());
sl@0
   103
	LogMessage(buf);
sl@0
   104
#endif
sl@0
   105
	sem.Signal();	// Signal thread fully initialised
sl@0
   106
	sem.Close();
sl@0
   107
	}
sl@0
   108
sl@0
   109
ClientToKill::~ClientToKill()
sl@0
   110
	{
sl@0
   111
	delete iTestWin;
sl@0
   112
	}
sl@0
   113
sl@0
   114
sl@0
   115
// CTKey
sl@0
   116
sl@0
   117
CTKey::CTKey(CTestStep* aStep) : CTWsGraphicsBase(aStep)
sl@0
   118
	{
sl@0
   119
	}
sl@0
   120
sl@0
   121
sl@0
   122
sl@0
   123
void CTKey::ConstructL()
sl@0
   124
	{
sl@0
   125
	iSem.CreateGlobal(KSemaphoreName,0,KOwnerType);
sl@0
   126
	iVisibleGroup=new(ELeave) CVisibleGroup(iTest->iScreenNumber);
sl@0
   127
	iVisibleGroup->ConstructL();
sl@0
   128
	}
sl@0
   129
sl@0
   130
CTKey::~CTKey()
sl@0
   131
	{
sl@0
   132
	delete iVisibleGroup;
sl@0
   133
	iSem.Close();
sl@0
   134
	// Set focus back to this screen as it went to primary screen when iVisibleGroup was destroyed
sl@0
   135
	// Wserv focus handling made focus screen switch to another screen if there is no
sl@0
   136
	// focusable window group on that particular screen.
sl@0
   137
	TheClient->iWs.SetFocusScreen(iTest->iScreenNumber);
sl@0
   138
	}
sl@0
   139
sl@0
   140
void CTKey::SendKey(TInt aScanCode)
sl@0
   141
	{
sl@0
   142
	TKeyEvent keyEvent;
sl@0
   143
	keyEvent.iCode=aScanCode;
sl@0
   144
	keyEvent.iScanCode=aScanCode;
sl@0
   145
	keyEvent.iModifiers=0;
sl@0
   146
	keyEvent.iRepeats=0;
sl@0
   147
	TheClient->iWs.SimulateKeyEvent(keyEvent);
sl@0
   148
	TheClient->iWs.Flush();
sl@0
   149
	}
sl@0
   150
sl@0
   151
void CTKey::SendUpDown(TInt aScanCode)
sl@0
   152
	{
sl@0
   153
	TRawEvent rawEvent;
sl@0
   154
	rawEvent.Set(TRawEvent::EKeyDown,aScanCode);
sl@0
   155
	TheClient->iWs.SimulateRawEvent(rawEvent);
sl@0
   156
	rawEvent.Set(TRawEvent::EKeyUp,aScanCode);
sl@0
   157
	TheClient->iWs.SimulateRawEvent(rawEvent);
sl@0
   158
	}
sl@0
   159
sl@0
   160
void CTKey::SendCtrlAltShift(TRawEvent::TType aType)
sl@0
   161
	{
sl@0
   162
	TRawEvent rawEvent;
sl@0
   163
	rawEvent.Set(aType,EStdKeyLeftFunc);
sl@0
   164
	TheClient->iWs.SimulateRawEvent(rawEvent);
sl@0
   165
	rawEvent.Set(aType,EStdKeyLeftCtrl);
sl@0
   166
	TheClient->iWs.SimulateRawEvent(rawEvent);
sl@0
   167
	rawEvent.Set(aType,EStdKeyLeftShift);
sl@0
   168
	TheClient->iWs.SimulateRawEvent(rawEvent);
sl@0
   169
	}
sl@0
   170
sl@0
   171
void CTKey::SendCtrlAltShift(TInt aScanCode)
sl@0
   172
	{
sl@0
   173
	SendCtrlAltShift(TRawEvent::EKeyDown);
sl@0
   174
	SendUpDown(aScanCode);
sl@0
   175
	SendCtrlAltShift(TRawEvent::EKeyUp);
sl@0
   176
	TheClient->iWs.Flush();
sl@0
   177
	}
sl@0
   178
sl@0
   179
void CTKey::LogWindowGroupIds()
sl@0
   180
	{
sl@0
   181
	CArrayFixFlat<TInt>* idList=new(ELeave) CArrayFixFlat<TInt>(5);
sl@0
   182
	if (!idList)
sl@0
   183
		return;
sl@0
   184
	TheClient->iWs.WindowGroupList(0,idList);
sl@0
   185
	TLogMessageText buf;
sl@0
   186
	_LIT(KWinGp,"Window Group Id's: %d");
sl@0
   187
	_LIT(KId,", %d");
sl@0
   188
	TInt ii=0;
sl@0
   189
	buf.Format(KWinGp,(*idList)[ii]);
sl@0
   190
	while (++ii<idList->Count())
sl@0
   191
		buf.AppendFormat(KId,(*idList)[ii]);
sl@0
   192
	LOG_MESSAGE(buf);
sl@0
   193
	delete idList;
sl@0
   194
	}
sl@0
   195
sl@0
   196
void CTKey::SetHotKey(THotKey aType, TUint aKeyCode)
sl@0
   197
	{
sl@0
   198
	TheClient->iWs.SetHotKey(aType,aKeyCode-'A'+1,EFuncCtrlShift,EFuncCtrlShift);
sl@0
   199
	}
sl@0
   200
sl@0
   201
void CTKey::KeyOfOrientation()
sl@0
   202
	{	
sl@0
   203
	TInt numScreenModes = TheClient->iScreen->NumScreenModes();
sl@0
   204
	TInt originalScreenMode = TheClient->iScreen->CurrentScreenMode();
sl@0
   205
	if(numScreenModes >= 2)
sl@0
   206
		{
sl@0
   207
		//1 possible rotation of 180deg found in wsini.ini screenmode 8
sl@0
   208
		iVisibleGroup->SetMode(numScreenModes-1);
sl@0
   209
		TheClient->iScreen->SetScreenMode(numScreenModes-1);
sl@0
   210
		SendCtrlAltShift('O');
sl@0
   211
		TheClient->iWs.Flush();
sl@0
   212
		//1 possible rotation of 90deg found in wsini.ini screenmode 7
sl@0
   213
		iVisibleGroup->SetMode(numScreenModes-2);
sl@0
   214
		TheClient->iScreen->SetScreenMode(numScreenModes-2);
sl@0
   215
		SendCtrlAltShift('O');
sl@0
   216
		TheClient->iWs.Flush();
sl@0
   217
		//reset to original screenmode
sl@0
   218
		iVisibleGroup->SetMode(originalScreenMode);
sl@0
   219
		TheClient->iScreen->SetScreenMode(originalScreenMode);
sl@0
   220
		}	
sl@0
   221
	else
sl@0
   222
		{
sl@0
   223
		TEST(numScreenModes>2);
sl@0
   224
		INFO_PRINTF2(_L("numScreenModes - Expected: >2, Actual: %d"), numScreenModes);
sl@0
   225
		}
sl@0
   226
	TPixelsAndRotation originalSizeAndRotation;
sl@0
   227
	TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),originalSizeAndRotation);
sl@0
   228
	SendCtrlAltShift('O');
sl@0
   229
	TheClient->iWs.Flush();
sl@0
   230
	TPixelsAndRotation sizeAndRotation;
sl@0
   231
	TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
sl@0
   232
	TEST(sizeAndRotation.iRotation!=originalSizeAndRotation.iRotation);
sl@0
   233
	if (sizeAndRotation.iRotation==originalSizeAndRotation.iRotation)
sl@0
   234
		INFO_PRINTF3(_L("iRotation - Not Expected: %d, Actual: %d"), originalSizeAndRotation.iRotation, sizeAndRotation.iRotation);
sl@0
   235
	SendCtrlAltShift('O');
sl@0
   236
	TheClient->iWs.Flush();
sl@0
   237
	}
sl@0
   238
sl@0
   239
void CTKey::CycleDisplaySize()
sl@0
   240
	{
sl@0
   241
	// The test does nothing if there is only one possible screen mode -> return
sl@0
   242
	TInt numScreenModes = TheClient->iScreen->NumScreenModes();
sl@0
   243
	if (numScreenModes<2)
sl@0
   244
		{
sl@0
   245
		TEST(numScreenModes>2);
sl@0
   246
		INFO_PRINTF2(_L("numScreenModes - Expected: >2, Actual: %d"), numScreenModes);
sl@0
   247
		return;
sl@0
   248
		}
sl@0
   249
	//Get original screen mode and size values
sl@0
   250
	TInt originalScreenMode = TheClient->iScreen->CurrentScreenMode();	
sl@0
   251
	TPixelsAndRotation sizeAndRotation;
sl@0
   252
	TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
sl@0
   253
	TSize originalScreenSize = sizeAndRotation.iPixelSize;
sl@0
   254
	
sl@0
   255
	SendCtrlAltShift('U');
sl@0
   256
	TheClient->iWs.Flush();
sl@0
   257
	TheClient->iScreen->GetScreenModeSizeAndRotation(TheClient->iScreen->CurrentScreenMode(),sizeAndRotation);
sl@0
   258
	TEST(sizeAndRotation.iPixelSize.iHeight!=originalScreenSize.iHeight && sizeAndRotation.iPixelSize.iWidth!=originalScreenSize.iWidth);
sl@0
   259
	if (sizeAndRotation.iPixelSize.iHeight==originalScreenSize.iHeight || sizeAndRotation.iPixelSize.iWidth==originalScreenSize.iWidth)
sl@0
   260
		INFO_PRINTF5(_L("iPixelSize - Expected: !%d !%d, Actual: %d %d"), originalScreenSize.iHeight, originalScreenSize.iWidth, sizeAndRotation.iPixelSize.iHeight, sizeAndRotation.iPixelSize.iWidth);
sl@0
   261
	TheClient->iScreen->SetScreenMode(originalScreenMode);
sl@0
   262
	TheClient->iWs.Flush();
sl@0
   263
	}
sl@0
   264
sl@0
   265
void CTKey::KeyOfDeathL()
sl@0
   266
	{
sl@0
   267
	//Key of Death
sl@0
   268
#if defined(LOGGING)
sl@0
   269
	TLogMessageText buf;
sl@0
   270
	_LIT(KNum1,"Priority Zero Window Groups=%d Total=%d (Before Process Creation)");
sl@0
   271
	buf.Format(KNum1,TheClient->iWs.NumWindowGroups(0),TheClient->iWs.NumWindowGroups());
sl@0
   272
	LOG_MESSAGE(buf);
sl@0
   273
	LogWindowGroupIds();
sl@0
   274
#endif
sl@0
   275
	CProcess* process = CProcess::NewL(CProcess::eProcessKeyTest,iTest->iScreenNumber);
sl@0
   276
	RWindowGroup group(TheClient->iWs);
sl@0
   277
	group.Construct(1234);
sl@0
   278
	TheClient->Flush();		//Make sure the window group above is created before the one in the other process
sl@0
   279
	TInt id=TheClient->iGroup->GroupWin()->Identifier();
sl@0
   280
	group.SetOwningWindowGroup(id);
sl@0
   281
	group.DefaultOwningWindow();
sl@0
   282
sl@0
   283
	iSem.Wait();
sl@0
   284
	User::After(TTimeIntervalMicroSeconds32(100000));		//0.1 secs
sl@0
   285
	TInt numGroups=TheClient->iWs.NumWindowGroups();
sl@0
   286
	TInt numGroups0=TheClient->iWs.NumWindowGroups(0);
sl@0
   287
sl@0
   288
#if defined(LOGGING)
sl@0
   289
	_LIT(KNum2,"NewWinGpId=%d Priority Zero Window Groups=%d Total=%d (After Process Creation)");
sl@0
   290
	buf.Format(KNum2,id,numGroups0,numGroups);
sl@0
   291
	LOG_MESSAGE(buf);
sl@0
   292
	_LIT(KLog1,"Sending Key Of Death");
sl@0
   293
	buf.Copy(KLog1);
sl@0
   294
	LOG_MESSAGE(buf);
sl@0
   295
	LogWindowGroupIds();
sl@0
   296
#endif
sl@0
   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)
sl@0
   298
	SendCtrlAltShift('K');
sl@0
   299
	TheClient->iWs.Flush();
sl@0
   300
#if defined(LOGGING)
sl@0
   301
	_LIT(KLog2,"Sent Key Of Death");
sl@0
   302
	buf.Copy(KLog2);
sl@0
   303
	LOG_MESSAGE(buf);
sl@0
   304
#endif
sl@0
   305
	TInt numGroups2;
sl@0
   306
	TInt numGroups0b;
sl@0
   307
	TInt tries=3;
sl@0
   308
	FOREVER		//On multi-core platforms need to wait for the Key of Death procedure to complete
sl@0
   309
		{
sl@0
   310
		numGroups2=TheClient->iWs.NumWindowGroups();
sl@0
   311
		numGroups0b=TheClient->iWs.NumWindowGroups(0);
sl@0
   312
		if (--tries==0)
sl@0
   313
			break;
sl@0
   314
		if (numGroups!=numGroups2 || numGroups0!=numGroups0b)
sl@0
   315
			{
sl@0
   316
			tries=1;
sl@0
   317
			continue;
sl@0
   318
			}
sl@0
   319
		User::After(100000);		//0.1secs
sl@0
   320
		}
sl@0
   321
	TEST(numGroups==numGroups2+1);
sl@0
   322
	_LIT(KLog,"KeyOfDeath Num WinGps Before=%d After=%d (should be one less)");
sl@0
   323
	if (numGroups!=numGroups2+1)
sl@0
   324
		LOG_MESSAGE3(KLog,numGroups,numGroups2);
sl@0
   325
	TEST(numGroups0==numGroups0b+1);
sl@0
   326
	if (numGroups0!=numGroups0b+1)
sl@0
   327
		LOG_MESSAGE3(KLog,numGroups0,numGroups0b);
sl@0
   328
	group.Close();
sl@0
   329
sl@0
   330
	TBool processDead=!process->StillAlive();
sl@0
   331
	TEST(processDead);
sl@0
   332
	if (!processDead)
sl@0
   333
		{
sl@0
   334
		_LIT(KLog,"Other Thread Still Alive");
sl@0
   335
		LOG_MESSAGE(KLog);
sl@0
   336
		}
sl@0
   337
	delete process;
sl@0
   338
sl@0
   339
#if defined(LOGGING)
sl@0
   340
	_LIT(KLog3,"Finished KeyOfDeath Test");
sl@0
   341
	buf.Copy(KLog3);
sl@0
   342
	LOG_MESSAGE(buf);
sl@0
   343
	LogWindowGroupIds();
sl@0
   344
#endif
sl@0
   345
	}
sl@0
   346
sl@0
   347
#define CONTRAST_UP 'A'		//'a'-'a'+1
sl@0
   348
#define CONTRAST_DOWN 'B'		//'b'-'a'+1
sl@0
   349
sl@0
   350
void CTKey::TestContrastL(TBool aChange)
sl@0
   351
	{
sl@0
   352
	TInt contrast=0;
sl@0
   353
	TInt newContrast=0;
sl@0
   354
	TInt maxContrast=0;
sl@0
   355
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast));
sl@0
   356
	TInt diff=aChange ? 1:0;
sl@0
   357
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast));
sl@0
   358
sl@0
   359
	SendCtrlAltShift(CONTRAST_UP);
sl@0
   360
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
sl@0
   361
	if ((contrast==maxContrast) && aChange)
sl@0
   362
		{
sl@0
   363
		TEST(newContrast==0);
sl@0
   364
		if (newContrast!=0)
sl@0
   365
			INFO_PRINTF3(_L("newContrast==0 - Expected: %d, Actual: %d"), 0, newContrast);		
sl@0
   366
		}
sl@0
   367
	else
sl@0
   368
		{
sl@0
   369
		TEST(contrast+diff==newContrast);
sl@0
   370
		if (contrast+diff!=newContrast)
sl@0
   371
			INFO_PRINTF3(_L("contrast+diff==newContrast - Expected: %d, Actual: %d"), contrast+diff, newContrast);
sl@0
   372
		}
sl@0
   373
sl@0
   374
	SendCtrlAltShift(CONTRAST_DOWN);
sl@0
   375
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
sl@0
   376
	TEST(contrast==newContrast);
sl@0
   377
	if (contrast!=newContrast)
sl@0
   378
			INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
sl@0
   379
sl@0
   380
	SendCtrlAltShift(CONTRAST_DOWN);
sl@0
   381
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
sl@0
   382
	if (contrast==0)
sl@0
   383
		{
sl@0
   384
		TEST(maxContrast==newContrast);
sl@0
   385
		if (maxContrast!=newContrast)
sl@0
   386
			INFO_PRINTF3(_L("maxContrast==newContrast - Expected: %d, Actual: %d"), maxContrast, newContrast);
sl@0
   387
sl@0
   388
		}
sl@0
   389
	else
sl@0
   390
		{
sl@0
   391
		TEST(contrast-diff==newContrast);
sl@0
   392
		if (contrast-diff!=newContrast)
sl@0
   393
			INFO_PRINTF3(_L("contrast-diff==newContrast - Expected: %d, Actual: %d"), contrast-diff, newContrast);
sl@0
   394
sl@0
   395
		}
sl@0
   396
sl@0
   397
	SendCtrlAltShift(CONTRAST_UP);
sl@0
   398
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
sl@0
   399
	TEST(contrast==newContrast);
sl@0
   400
	if (contrast!=newContrast)
sl@0
   401
		INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
sl@0
   402
sl@0
   403
	}
sl@0
   404
sl@0
   405
void CTKey::TestDefaultContrastL(TBool aChange)
sl@0
   406
	{
sl@0
   407
	TInt contrast=0;
sl@0
   408
	TInt newContrast=0;
sl@0
   409
	TInt maxContrast=0;
sl@0
   410
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast));
sl@0
   411
	TInt diff=aChange ? 1:0;
sl@0
   412
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast));
sl@0
   413
sl@0
   414
	SendKey(EKeyIncContrast);
sl@0
   415
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
sl@0
   416
	if ((contrast==maxContrast) && aChange)
sl@0
   417
		{
sl@0
   418
		TEST(newContrast==0);
sl@0
   419
		if (0!=newContrast)
sl@0
   420
			INFO_PRINTF3(_L("newContrast==0 - Expected: %d, Actual: %d"), 0, newContrast);
sl@0
   421
		}
sl@0
   422
	else
sl@0
   423
		{
sl@0
   424
		TEST(contrast+diff==newContrast);
sl@0
   425
		if (contrast+diff!=newContrast)
sl@0
   426
			INFO_PRINTF3(_L("newContrast==contrast+diff - Expected: %d, Actual: %d"), contrast+diff, newContrast);
sl@0
   427
		}
sl@0
   428
sl@0
   429
	SendKey(EKeyDecContrast);
sl@0
   430
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
sl@0
   431
	TEST(contrast==newContrast);
sl@0
   432
	if (contrast!=newContrast)
sl@0
   433
			INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
sl@0
   434
sl@0
   435
	SendKey(EKeyDecContrast);
sl@0
   436
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
sl@0
   437
	if (contrast==0)
sl@0
   438
		{
sl@0
   439
		TEST(maxContrast==newContrast);
sl@0
   440
		if (maxContrast!=newContrast)
sl@0
   441
			INFO_PRINTF3(_L("maxContrast==newContrast - Expected: %d, Actual: %d"), maxContrast, newContrast);
sl@0
   442
		}
sl@0
   443
	else
sl@0
   444
		{
sl@0
   445
		TEST(contrast-diff==newContrast);
sl@0
   446
		if (contrast-diff!=newContrast)
sl@0
   447
			INFO_PRINTF3(_L("contrast-diff==newContrast - Expected: %d, Actual: %d"), contrast-diff, newContrast);
sl@0
   448
		}
sl@0
   449
sl@0
   450
	SendKey(EKeyIncContrast);
sl@0
   451
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,newContrast));
sl@0
   452
	TEST(contrast==newContrast);
sl@0
   453
	if (contrast!=newContrast)
sl@0
   454
		INFO_PRINTF3(_L("contrast==newContrast - Expected: %d, Actual: %d"), contrast, newContrast);
sl@0
   455
sl@0
   456
	}
sl@0
   457
sl@0
   458
void CTKey::ContrastKeysL()
sl@0
   459
	{
sl@0
   460
	TInt maxContrast=0;
sl@0
   461
	TInt contrast=0;
sl@0
   462
	TInt err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrastMax,maxContrast);
sl@0
   463
	if (err==KErrNotSupported)
sl@0
   464
		return;
sl@0
   465
	else if (err==KErrNone)
sl@0
   466
		err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast);
sl@0
   467
	if (err==KErrNotSupported)
sl@0
   468
		return;
sl@0
   469
	TEST(err==KErrNone);
sl@0
   470
	if (err!=KErrNone)
sl@0
   471
		INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)=KErrNone - Expected: %d, Actual: %d"), KErrNone, err);
sl@0
   472
sl@0
   473
	if (contrast==0)
sl@0
   474
		err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayContrast,++contrast);
sl@0
   475
	else if (contrast==maxContrast)
sl@0
   476
		err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayContrast,--contrast);
sl@0
   477
	if (err==KErrNotSupported)
sl@0
   478
		return;
sl@0
   479
	TEST(err==KErrNone);
sl@0
   480
	if (err!=KErrNone)
sl@0
   481
		INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayContrast,contrast)=KErrNone - Expected: %d, Actual: %d"), KErrNone, err);
sl@0
   482
	TestDefaultContrastL(ETrue);
sl@0
   483
sl@0
   484
	SetHotKey(EHotKeyIncContrast,CONTRAST_UP);
sl@0
   485
	SetHotKey(EHotKeyDecContrast,CONTRAST_DOWN);
sl@0
   486
	TestContrastL(ETrue);
sl@0
   487
	TestDefaultContrastL(ETrue);
sl@0
   488
sl@0
   489
	TheClient->iWs.ClearHotKeys(EHotKeyIncContrast);
sl@0
   490
	TheClient->iWs.ClearHotKeys(EHotKeyDecContrast);
sl@0
   491
	TestContrastL(EFalse);
sl@0
   492
	TestDefaultContrastL(EFalse);
sl@0
   493
sl@0
   494
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncContrast);
sl@0
   495
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecContrast);
sl@0
   496
	TestContrastL(EFalse);
sl@0
   497
	TestDefaultContrastL(ETrue);
sl@0
   498
sl@0
   499
	SetHotKey(EHotKeyIncContrast,CONTRAST_UP);
sl@0
   500
	SetHotKey(EHotKeyDecContrast,CONTRAST_DOWN);
sl@0
   501
	TestContrastL(ETrue);
sl@0
   502
	TestDefaultContrastL(ETrue);
sl@0
   503
sl@0
   504
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncContrast);
sl@0
   505
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecContrast);
sl@0
   506
	TestContrastL(EFalse);
sl@0
   507
	TestDefaultContrastL(ETrue);
sl@0
   508
	}
sl@0
   509
sl@0
   510
#define BACKLIGHT_ON 'A'	//'o'-'a'+1
sl@0
   511
#define BACKLIGHT_OFF 'B'	//'p'-'a'+1
sl@0
   512
#define BACKLIGHT_TOGGLE 'C'	//'q'-'a'+1
sl@0
   513
/** Test for reaction against backlight ON/OFF/TOGGLE buttons defined above.
sl@0
   514
  If aChange is false button presses must not affect the state of backlight.
sl@0
   515
*/
sl@0
   516
void CTKey::TestBackLightL(TBool aChange)
sl@0
   517
	{
sl@0
   518
	TBool state;
sl@0
   519
	SendCtrlAltShift(BACKLIGHT_ON);
sl@0
   520
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   521
	TEST(state==aChange);
sl@0
   522
	if (state!=aChange)
sl@0
   523
		INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
sl@0
   524
sl@0
   525
	SendCtrlAltShift(BACKLIGHT_TOGGLE);
sl@0
   526
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   527
	TEST(state==EFalse);
sl@0
   528
	if (state!=EFalse)
sl@0
   529
		INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
sl@0
   530
sl@0
   531
	SendCtrlAltShift(BACKLIGHT_TOGGLE);
sl@0
   532
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   533
	TEST(state==aChange);
sl@0
   534
	if (state!=aChange)
sl@0
   535
		INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
sl@0
   536
sl@0
   537
	SendCtrlAltShift(BACKLIGHT_OFF);
sl@0
   538
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   539
	TEST(state==EFalse);
sl@0
   540
	if (state!=EFalse)
sl@0
   541
		INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
sl@0
   542
sl@0
   543
	SendCtrlAltShift(BACKLIGHT_TOGGLE);
sl@0
   544
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   545
	TEST(state==aChange);
sl@0
   546
		if (state!=aChange)
sl@0
   547
		INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
sl@0
   548
sl@0
   549
	SendCtrlAltShift(BACKLIGHT_TOGGLE);
sl@0
   550
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   551
	TEST(state==EFalse);
sl@0
   552
	if (state!=EFalse)
sl@0
   553
		INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
sl@0
   554
sl@0
   555
	}
sl@0
   556
sl@0
   557
/** Test for reaction against default backlight ON/OFF/TOGGLE buttons.
sl@0
   558
  If aChange is false button presses must not affect the state of backlight.
sl@0
   559
*/
sl@0
   560
void CTKey::TestDefaultBackLightL(TBool aChange)
sl@0
   561
	{
sl@0
   562
	TBool state;
sl@0
   563
	SendKey(EKeyBacklightOn);
sl@0
   564
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   565
	TEST(state==aChange);
sl@0
   566
	if (state!=aChange)
sl@0
   567
		INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
sl@0
   568
sl@0
   569
	SendKey(EKeyBacklightToggle);
sl@0
   570
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   571
	TEST(state==EFalse);
sl@0
   572
	if (state!=EFalse)
sl@0
   573
		INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
sl@0
   574
sl@0
   575
	SendKey(EKeyBacklightToggle);
sl@0
   576
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   577
	TEST(state==aChange);
sl@0
   578
	if (state!=aChange)
sl@0
   579
		INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
sl@0
   580
sl@0
   581
	SendKey(EKeyBacklightOff);
sl@0
   582
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   583
	TEST(state==EFalse);
sl@0
   584
	if (state!=EFalse)
sl@0
   585
		INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
sl@0
   586
sl@0
   587
	SendKey(EKeyBacklightToggle);
sl@0
   588
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   589
	TEST(state==aChange);
sl@0
   590
	if (state!=aChange)
sl@0
   591
		INFO_PRINTF3(_L("state==aChange - Expected: %d, Actual: %d"), aChange, state);
sl@0
   592
sl@0
   593
	SendKey(EKeyBacklightToggle);
sl@0
   594
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,state));
sl@0
   595
	TEST(state==EFalse);
sl@0
   596
	if (state!=EFalse)
sl@0
   597
		INFO_PRINTF3(_L("state==EFalse - Expected: %d, Actual: %d"), EFalse, state);
sl@0
   598
sl@0
   599
	}
sl@0
   600
sl@0
   601
void CTKey::BackLightKeysL()
sl@0
   602
	{
sl@0
   603
	// Turns backlight off
sl@0
   604
	TBool prevState;
sl@0
   605
	TInt err=HAL::Get(iTest->iScreenNumber,HALData::EBacklightState,prevState);
sl@0
   606
	if (err==KErrNotSupported)
sl@0
   607
		{
sl@0
   608
		_LIT(KLog,"Cannot test BackLight Key presses as cannot read its state on screen %d");
sl@0
   609
		LOG_MESSAGE2(KLog,iTest->iScreenNumber);
sl@0
   610
		return;
sl@0
   611
		}
sl@0
   612
	else if (err==KErrNone)
sl@0
   613
		err=HAL::Set(iTest->iScreenNumber,HALData::EBacklightState,EFalse);
sl@0
   614
	if (err==KErrNotSupported)
sl@0
   615
		{
sl@0
   616
		_LIT(KLog,"Cannot test BackLight Key presses as cannot set its state on screen %d");
sl@0
   617
		LOG_MESSAGE2(KLog,iTest->iScreenNumber);
sl@0
   618
		return;
sl@0
   619
		}
sl@0
   620
	TEST(err==KErrNone);
sl@0
   621
	if (err!=KErrNone)
sl@0
   622
		{
sl@0
   623
		_LIT(KLog,"Reading or Setting BackLight state gave error %d on screen %d");
sl@0
   624
		LOG_MESSAGE3(KLog,err,iTest->iScreenNumber);
sl@0
   625
		}
sl@0
   626
sl@0
   627
	// Tests that default backlight ON/OFF/TOGGLE buttons work
sl@0
   628
	TestDefaultBackLightL(ETrue);
sl@0
   629
sl@0
   630
	// Sets user defined backlight buttons and tests that both default and user defined buttons work
sl@0
   631
	SetHotKey(EHotKeyBacklightOn,BACKLIGHT_ON);
sl@0
   632
	SetHotKey(EHotKeyBacklightOff,BACKLIGHT_OFF);
sl@0
   633
	SetHotKey(EHotKeyBacklightToggle,BACKLIGHT_TOGGLE);
sl@0
   634
	TestBackLightL(ETrue);
sl@0
   635
	TestDefaultBackLightL(ETrue);
sl@0
   636
sl@0
   637
	// Calls RWsSession::ClearHotKeys and tests that both default and user defined buttons don't work
sl@0
   638
	TheClient->iWs.ClearHotKeys(EHotKeyBacklightOn);
sl@0
   639
	TheClient->iWs.ClearHotKeys(EHotKeyBacklightOff);
sl@0
   640
	TheClient->iWs.ClearHotKeys(EHotKeyBacklightToggle);
sl@0
   641
	TestBackLightL(EFalse);
sl@0
   642
	TestDefaultBackLightL(EFalse);
sl@0
   643
sl@0
   644
	// Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work
sl@0
   645
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOn);
sl@0
   646
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOff);
sl@0
   647
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightToggle);
sl@0
   648
	TestBackLightL(EFalse);
sl@0
   649
	TestDefaultBackLightL(ETrue);
sl@0
   650
sl@0
   651
	// Sets user defined backlight buttons and tests that both default and user defined buttons work
sl@0
   652
	SetHotKey(EHotKeyBacklightOn,BACKLIGHT_ON);
sl@0
   653
	SetHotKey(EHotKeyBacklightOff,BACKLIGHT_OFF);
sl@0
   654
	SetHotKey(EHotKeyBacklightToggle,BACKLIGHT_TOGGLE);
sl@0
   655
	TestBackLightL(ETrue);
sl@0
   656
	TestDefaultBackLightL(ETrue);
sl@0
   657
sl@0
   658
	// Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work
sl@0
   659
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOn);
sl@0
   660
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightOff);
sl@0
   661
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyBacklightToggle);
sl@0
   662
	TestBackLightL(EFalse);
sl@0
   663
	TestDefaultBackLightL(ETrue);
sl@0
   664
sl@0
   665
	//Restores previous backlight state
sl@0
   666
	//err=UserHal::SetBacklightOn(prevState);
sl@0
   667
	err=HAL::Set(iTest->iScreenNumber,HALData::EBacklightState,prevState);
sl@0
   668
	TEST(err==KErrNone);
sl@0
   669
	if (err!=KErrNone)
sl@0
   670
		{
sl@0
   671
		_LIT(KLog,"Failed to set BackLight state back to previous state: %d on screen %d, error code: %d");
sl@0
   672
		LOG_MESSAGE4(KLog,prevState,iTest->iScreenNumber,err);
sl@0
   673
		}
sl@0
   674
	}
sl@0
   675
sl@0
   676
#define BRIGHTNESS_UP 'N'
sl@0
   677
#define BRIGHTNESS_DOWN 'J'
sl@0
   678
/** If aChange is true, checks that programmicaly defined brightness buttons increase and decrease brightness properly.
sl@0
   679
 If aChange is false, checks that programmicaly defined brightness buttons don't affect brightness.
sl@0
   680
*/
sl@0
   681
void CTKey::TestBrightnessL(TBool aChange)
sl@0
   682
	{
sl@0
   683
	TInt brightness;
sl@0
   684
	TInt newBrightness;
sl@0
   685
	TInt diff=aChange ? 1:0;
sl@0
   686
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness));
sl@0
   687
sl@0
   688
	SendCtrlAltShift(BRIGHTNESS_UP);
sl@0
   689
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
sl@0
   690
	TEST(brightness+diff==newBrightness);
sl@0
   691
	if (brightness+diff!=newBrightness)
sl@0
   692
		INFO_PRINTF3(_L("brightness+diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness+diff);
sl@0
   693
sl@0
   694
	SendCtrlAltShift(BRIGHTNESS_DOWN);
sl@0
   695
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
sl@0
   696
	TEST(brightness==newBrightness);
sl@0
   697
	if (brightness!=newBrightness)
sl@0
   698
		INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
sl@0
   699
sl@0
   700
	SendCtrlAltShift(BRIGHTNESS_DOWN);
sl@0
   701
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
sl@0
   702
	TEST(brightness-diff==newBrightness);
sl@0
   703
	if (brightness-diff!=newBrightness)
sl@0
   704
		INFO_PRINTF3(_L("brightness-diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness-diff);
sl@0
   705
sl@0
   706
	SendCtrlAltShift(BRIGHTNESS_UP);
sl@0
   707
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
sl@0
   708
	TEST(brightness==newBrightness);
sl@0
   709
	if (brightness!=newBrightness)
sl@0
   710
		INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
sl@0
   711
	}
sl@0
   712
sl@0
   713
/** If aChange is true, checks that default brightness buttons increase and decrease brightness properly (increase/decrease by 1).
sl@0
   714
  If aChange is false, checks that default brightness buttons don't affect brightness.
sl@0
   715
*/
sl@0
   716
void CTKey::TestDefaultBrightnessL(TBool aChange)
sl@0
   717
	{
sl@0
   718
	TInt brightness;
sl@0
   719
	TInt newBrightness;
sl@0
   720
	TInt diff=aChange ? 1:0;
sl@0
   721
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness));
sl@0
   722
sl@0
   723
	SendKey(EKeyIncBrightness);
sl@0
   724
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
sl@0
   725
	TEST(brightness+diff==newBrightness);
sl@0
   726
	if (brightness+diff!=newBrightness)
sl@0
   727
		INFO_PRINTF3(_L("brightness+diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness+diff);
sl@0
   728
sl@0
   729
	SendKey(EKeyDecBrightness);
sl@0
   730
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
sl@0
   731
	TEST(brightness==newBrightness);
sl@0
   732
	if (brightness!=newBrightness)
sl@0
   733
		INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
sl@0
   734
sl@0
   735
	SendKey(EKeyDecBrightness);
sl@0
   736
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
sl@0
   737
	TEST(brightness-diff==newBrightness);
sl@0
   738
	if (brightness-diff!=newBrightness)
sl@0
   739
		INFO_PRINTF3(_L("brightness-diff==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness-diff);
sl@0
   740
sl@0
   741
	SendKey(EKeyIncBrightness);
sl@0
   742
	User::LeaveIfError(HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,newBrightness));
sl@0
   743
	TEST(brightness==newBrightness);
sl@0
   744
	if (brightness!=newBrightness)
sl@0
   745
		INFO_PRINTF3(_L("brightness==newBrightness - Expected: %d, Actual: %d"), newBrightness, brightness);
sl@0
   746
	}
sl@0
   747
sl@0
   748
void CTKey::BrightnessKeysL()
sl@0
   749
	{
sl@0
   750
	INFO_PRINTF1(_L("AUTO  Brightness Key Test "));
sl@0
   751
	TInt maxBrightness;
sl@0
   752
	TInt brightness=0;		//To stop warning
sl@0
   753
	// get maximum brightness and current
sl@0
   754
	TInt err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightnessMax,maxBrightness);
sl@0
   755
	if (err==KErrNotSupported)
sl@0
   756
		return;
sl@0
   757
	else if (err==KErrNone)
sl@0
   758
		err=HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness);
sl@0
   759
	if (err==KErrNotSupported)
sl@0
   760
		return;
sl@0
   761
	INFO_PRINTF1(_L(" Supported"));
sl@0
   762
	TEST(err==KErrNone);
sl@0
   763
	if (err!=KErrNone)
sl@0
   764
		INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness) return value - Expected: %d, Actual: %d"), KErrNone, err);
sl@0
   765
sl@0
   766
	// sets brightness to be neither maximal nor minimal
sl@0
   767
	if (brightness==0)
sl@0
   768
		err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayBrightness,++brightness);
sl@0
   769
	else if (brightness==maxBrightness)
sl@0
   770
		err=HAL::Set(iTest->iScreenNumber,HALData::EDisplayBrightness,--brightness);
sl@0
   771
	if (err==KErrNotSupported)
sl@0
   772
		return;
sl@0
   773
	INFO_PRINTF1(_L(" Changeable"));
sl@0
   774
	TEST(err==KErrNone);
sl@0
   775
	if (err!=KErrNone)
sl@0
   776
		INFO_PRINTF3(_L("HAL::Get(iTest->iScreenNumber,HALData::EDisplayBrightness,brightness) return value - Expected: %d, Actual: %d"), KErrNone, err);
sl@0
   777
sl@0
   778
	// Test default brightness buttons increase/decrease brightness by 1
sl@0
   779
	TestDefaultBrightnessL(ETrue);
sl@0
   780
sl@0
   781
	// Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
sl@0
   782
	INFO_PRINTF1(_L(" First Test"));
sl@0
   783
	SetHotKey(EHotKeyIncBrightness,BRIGHTNESS_UP);
sl@0
   784
	SetHotKey(EHotKeyDecBrightness,BRIGHTNESS_DOWN);
sl@0
   785
	TestBrightnessL(ETrue);
sl@0
   786
	TestDefaultBrightnessL(ETrue);
sl@0
   787
sl@0
   788
	// Clear brightness buttons, test that default and program defined brightness buttons doesn't affect brightness
sl@0
   789
	INFO_PRINTF1(_L(" Second Test"));
sl@0
   790
	TheClient->iWs.ClearHotKeys(EHotKeyIncBrightness);
sl@0
   791
	TheClient->iWs.ClearHotKeys(EHotKeyDecBrightness);
sl@0
   792
	TestBrightnessL(EFalse);
sl@0
   793
	TestDefaultBrightnessL(EFalse);
sl@0
   794
sl@0
   795
	// Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
sl@0
   796
	INFO_PRINTF1(_L(" Third Test"));
sl@0
   797
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncBrightness);
sl@0
   798
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecBrightness);
sl@0
   799
	TestBrightnessL(EFalse);
sl@0
   800
	TestDefaultBrightnessL(ETrue);
sl@0
   801
sl@0
   802
	// Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
sl@0
   803
	INFO_PRINTF1(_L(" Fourth Test"));
sl@0
   804
	SetHotKey(EHotKeyIncBrightness,BRIGHTNESS_UP);
sl@0
   805
	SetHotKey(EHotKeyDecBrightness,BRIGHTNESS_DOWN);
sl@0
   806
	TestBrightnessL(ETrue);
sl@0
   807
	TestDefaultBrightnessL(ETrue);
sl@0
   808
sl@0
   809
	// Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
sl@0
   810
	INFO_PRINTF1(_L(" Fifth Test"));
sl@0
   811
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyIncBrightness);
sl@0
   812
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyDecBrightness);
sl@0
   813
	TestBrightnessL(EFalse);
sl@0
   814
	TestDefaultBrightnessL(ETrue);
sl@0
   815
	}
sl@0
   816
sl@0
   817
void CTKey::TestDefaultScreenSizeModeL(TInt aKeys,TBool aChange)
sl@0
   818
	{
sl@0
   819
	TInt screenMode=TheClient->iScreen->CurrentScreenMode();
sl@0
   820
	TInt key;
sl@0
   821
	TInt retVal;
sl@0
   822
	for (key=0;key<aKeys;++key)
sl@0
   823
		{
sl@0
   824
		iVisibleGroup->SetMode(key);
sl@0
   825
		SendKey(EKeyScreenDimension0+key);
sl@0
   826
		if (aChange)
sl@0
   827
			{
sl@0
   828
			retVal = TheClient->iScreen->CurrentScreenMode();
sl@0
   829
			TEST(retVal==key);
sl@0
   830
			if (retVal!=key)
sl@0
   831
				INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), key, retVal);
sl@0
   832
			}
sl@0
   833
		else
sl@0
   834
			{
sl@0
   835
			retVal = TheClient->iScreen->CurrentScreenMode();
sl@0
   836
			TEST(retVal==screenMode);
sl@0
   837
			if (retVal!=screenMode)
sl@0
   838
				INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), screenMode, retVal);
sl@0
   839
			}
sl@0
   840
		}
sl@0
   841
	}
sl@0
   842
sl@0
   843
#define DIMENSION0 'P'
sl@0
   844
#define DIMENSION1 'Q'
sl@0
   845
#define DIMENSION2 'R'
sl@0
   846
#define DIMENSION3 'N'
sl@0
   847
void CTKey::TestScreenSizeModeL(TInt aKeys,TBool aChange)
sl@0
   848
	{
sl@0
   849
	TInt screenMode=TheClient->iScreen->CurrentScreenMode();
sl@0
   850
	TInt key;
sl@0
   851
	TInt retVal;
sl@0
   852
	for (key=0;key<aKeys;++key)
sl@0
   853
		{
sl@0
   854
		iVisibleGroup->SetMode(key);
sl@0
   855
		switch (key)
sl@0
   856
		{
sl@0
   857
		case 0:
sl@0
   858
			SendCtrlAltShift(DIMENSION0);
sl@0
   859
			break;
sl@0
   860
		case 1:
sl@0
   861
			SendCtrlAltShift(DIMENSION1);
sl@0
   862
			break;
sl@0
   863
		case 2:
sl@0
   864
			SendCtrlAltShift(DIMENSION2);
sl@0
   865
			break;
sl@0
   866
		case 3:
sl@0
   867
			SendCtrlAltShift(DIMENSION3);
sl@0
   868
			break;
sl@0
   869
		default:
sl@0
   870
			INFO_PRINTF2(_L("Error Invalid Key: %d"),key);
sl@0
   871
			TEST(EFalse);
sl@0
   872
			break;
sl@0
   873
		}
sl@0
   874
			
sl@0
   875
		
sl@0
   876
		if (aChange)
sl@0
   877
			{
sl@0
   878
			retVal = TheClient->iScreen->CurrentScreenMode();
sl@0
   879
			TEST(retVal==key);
sl@0
   880
			if (retVal!=key)
sl@0
   881
				INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), key, retVal);
sl@0
   882
	
sl@0
   883
			}
sl@0
   884
		else
sl@0
   885
			{
sl@0
   886
			retVal = TheClient->iScreen->CurrentScreenMode();
sl@0
   887
			TEST(retVal==screenMode);
sl@0
   888
			if (retVal!=screenMode)
sl@0
   889
				INFO_PRINTF3(_L("TheClient->iScreen->CurrentScreenMode() return value - Expected: %d, Actual: %d"), screenMode, retVal);
sl@0
   890
	
sl@0
   891
			}
sl@0
   892
		}
sl@0
   893
	}
sl@0
   894
sl@0
   895
void CTKey::ScreenSizeModeKeysL()
sl@0
   896
	{
sl@0
   897
	// The test does nothing if there is only one possible screen mode -> return
sl@0
   898
	TInt numScreenModes=TheClient->iScreen->NumScreenModes();
sl@0
   899
	if (numScreenModes<2)
sl@0
   900
		return;
sl@0
   901
sl@0
   902
	// Use at most 4 different modes for the test
sl@0
   903
	if (numScreenModes>4) {numScreenModes=4;}
sl@0
   904
sl@0
   905
	// Set screen mode 3
sl@0
   906
	TInt screenMode=TheClient->iScreen->CurrentScreenMode();
sl@0
   907
	iVisibleGroup->SetMode(numScreenModes-1);
sl@0
   908
	TheClient->iScreen->SetScreenMode(numScreenModes-1);
sl@0
   909
sl@0
   910
	// Test default screen mode switch buttons
sl@0
   911
	TestDefaultScreenSizeModeL(numScreenModes,ETrue);
sl@0
   912
sl@0
   913
	// Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
sl@0
   914
	SetHotKey(EHotKeyScreenDimension0,DIMENSION0);
sl@0
   915
	SetHotKey(EHotKeyScreenDimension1,DIMENSION1);
sl@0
   916
	SetHotKey(EHotKeyScreenDimension2,DIMENSION2);
sl@0
   917
	SetHotKey(EHotKeyScreenDimension3,DIMENSION3);
sl@0
   918
	TestDefaultScreenSizeModeL(numScreenModes,ETrue);
sl@0
   919
	TestScreenSizeModeL(numScreenModes,ETrue);
sl@0
   920
sl@0
   921
	// Clear all screen mode switch buttons. Test that default and program defined screen mode switch buttons don't affect screen modes
sl@0
   922
	TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension0);
sl@0
   923
	TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension1);
sl@0
   924
	TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension2);
sl@0
   925
	TheClient->iWs.ClearHotKeys(EHotKeyScreenDimension3);
sl@0
   926
	TestDefaultScreenSizeModeL(numScreenModes,EFalse);
sl@0
   927
	TestScreenSizeModeL(numScreenModes,EFalse);
sl@0
   928
sl@0
   929
	// Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
sl@0
   930
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension0);
sl@0
   931
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension1);
sl@0
   932
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension2);
sl@0
   933
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension3);
sl@0
   934
	TestDefaultScreenSizeModeL(numScreenModes,ETrue);
sl@0
   935
	TestScreenSizeModeL(numScreenModes,EFalse);
sl@0
   936
sl@0
   937
	// Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
sl@0
   938
	SetHotKey(EHotKeyScreenDimension0,DIMENSION0);
sl@0
   939
	SetHotKey(EHotKeyScreenDimension1,DIMENSION1);
sl@0
   940
	SetHotKey(EHotKeyScreenDimension2,DIMENSION2);
sl@0
   941
	SetHotKey(EHotKeyScreenDimension3,DIMENSION3);
sl@0
   942
	TestDefaultScreenSizeModeL(numScreenModes,ETrue);
sl@0
   943
	TestScreenSizeModeL(numScreenModes,ETrue);
sl@0
   944
sl@0
   945
	// Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
sl@0
   946
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension0);
sl@0
   947
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension1);
sl@0
   948
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension2);
sl@0
   949
	TheClient->iWs.RestoreDefaultHotKey(EHotKeyScreenDimension3);
sl@0
   950
	TestDefaultScreenSizeModeL(numScreenModes,ETrue);
sl@0
   951
	TestScreenSizeModeL(numScreenModes,EFalse);
sl@0
   952
sl@0
   953
	// Restore initial screen mode
sl@0
   954
	iVisibleGroup->SetMode(screenMode);
sl@0
   955
	TheClient->iScreen->SetScreenMode(screenMode);
sl@0
   956
	}
sl@0
   957
sl@0
   958
void CTKey::RunTestCaseL(TInt /*aCurTestCase*/)
sl@0
   959
	{
sl@0
   960
	_LIT(KTest0,"KeyOfDeath");
sl@0
   961
	_LIT(KTest1,"Contrast");
sl@0
   962
	_LIT(KTest2,"BackLight");
sl@0
   963
	_LIT(KTest3,"Brightness");
sl@0
   964
	_LIT(KTest4,"Screen Size Mode");
sl@0
   965
	((CTKeyStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
sl@0
   966
#ifdef _DEBUG
sl@0
   967
	_LIT(KTest5,"Orientation");
sl@0
   968
	_LIT(KTest6,"CycleDisplaySize");
sl@0
   969
#endif
sl@0
   970
	switch(++iTest->iState)
sl@0
   971
		{
sl@0
   972
/**
sl@0
   973
@SYMTestCaseID		GRAPHICS-WSERV-0106
sl@0
   974
sl@0
   975
@SYMDEF             DEF081259
sl@0
   976
sl@0
   977
@SYMTestCaseDesc    Key of Death test
sl@0
   978
sl@0
   979
@SYMTestPriority    High
sl@0
   980
sl@0
   981
@SYMTestStatus      Implemented
sl@0
   982
sl@0
   983
@SYMTestActions     Creates a new client process and runs it.
sl@0
   984
					Waits until the process is started and simulates Ctrl-Alt-Shift-K press.
sl@0
   985
					When starts the process assumes that TAutoServer.exe exists in z:\sys\bin directory.
sl@0
   986
					Otherwise the test will not exit a wait-state and will be aborted.
sl@0
   987
sl@0
   988
@SYMTestExpectedResults Checks that the process is dead after the Ctrl-Alt-Shift-K press.
sl@0
   989
					Check also that the difference between amounts of window groups efore
sl@0
   990
					death-key press and after death-key press is 1.
sl@0
   991
*/
sl@0
   992
		case 1:
sl@0
   993
			((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0106"));
sl@0
   994
			iTest->LogSubTest(KTest0);
sl@0
   995
			KeyOfDeathL();
sl@0
   996
			break;
sl@0
   997
		case 2:
sl@0
   998
/**
sl@0
   999
@SYMTestCaseID		GRAPHICS-WSERV-0539
sl@0
  1000
*/
sl@0
  1001
			((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0539"));
sl@0
  1002
			iTest->LogSubTest(KTest1);
sl@0
  1003
			ContrastKeysL();
sl@0
  1004
			break;
sl@0
  1005
/**
sl@0
  1006
@SYMTestCaseID		GRAPHICS-WSERV-0107
sl@0
  1007
sl@0
  1008
@SYMDEF             DEF081259
sl@0
  1009
sl@0
  1010
@SYMTestCaseDesc    Test backlight
sl@0
  1011
sl@0
  1012
@SYMTestPriority    High
sl@0
  1013
sl@0
  1014
@SYMTestStatus      Implemented
sl@0
  1015
sl@0
  1016
@SYMTestActions     Does nothing if hardware attributes are not supported.
sl@0
  1017
					1. Turns backlight off.
sl@0
  1018
					2. Tests that default backlight ON/OFF/TOGGLE buttons work.
sl@0
  1019
					3. Sets user defined backlight buttons and tests that both default and user defined buttons work.
sl@0
  1020
					4. Calls RWsSession::ClearHotKeys and tests that both default and user defined buttons don't work.
sl@0
  1021
					5. Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work.
sl@0
  1022
					6. Sets user defined backlight buttons and tests that both default and user defined buttons work.
sl@0
  1023
					7. Calls RWsSession::RestoreDefaultHotKey and tests that only default buttons work.
sl@0
  1024
					8. Restores previous backlight state.
sl@0
  1025
sl@0
  1026
@SYMTestExpectedResults Expects that actions described above give positive result.
sl@0
  1027
						The test also checks that programmatic turn off/on doesn't fail.
sl@0
  1028
*/
sl@0
  1029
		case 3:
sl@0
  1030
			((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0107"));
sl@0
  1031
			iTest->LogSubTest(KTest2);
sl@0
  1032
			BackLightKeysL();
sl@0
  1033
			break;
sl@0
  1034
/**
sl@0
  1035
@SYMTestCaseID		GRAPHICS-WSERV-0108
sl@0
  1036
sl@0
  1037
@SYMDEF             DEF081259
sl@0
  1038
sl@0
  1039
@SYMTestCaseDesc    Test brightness
sl@0
  1040
sl@0
  1041
@SYMTestPriority    High
sl@0
  1042
sl@0
  1043
@SYMTestStatus      Implemented
sl@0
  1044
sl@0
  1045
@SYMTestActions     Does nothing if hardware attributes are not supported.
sl@0
  1046
					1. Get maximum brightness and current, test that those operations don't fail
sl@0
  1047
					2. Sets brightness to be neither maximal nor minimal, test that those operations don't fail
sl@0
  1048
					3. Test default brightness buttons increase/decrease brightness by 1
sl@0
  1049
					4. Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
sl@0
  1050
					5. Clear brightness buttons, test that default and program defined brightness buttons doesn't affect brightness
sl@0
  1051
					6. Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
sl@0
  1052
					7. Add new inc/dec buttons, test that default and program defined brightness buttons increase/decrease brightness by 1
sl@0
  1053
					8. Restore default brightness buttons, test that only default brightness buttons increase/decrease brightness by 1
sl@0
  1054
sl@0
  1055
@SYMTestExpectedResults Expects that actions described above give positive result.
sl@0
  1056
						The test also checks that programmatic brightness increase and decrease doesn't fail.
sl@0
  1057
*/
sl@0
  1058
		case 4:
sl@0
  1059
			((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0108"));
sl@0
  1060
			iTest->LogSubTest(KTest3);
sl@0
  1061
			BrightnessKeysL();
sl@0
  1062
			break;
sl@0
  1063
/**
sl@0
  1064
@SYMTestCaseID		GRAPHICS-WSERV-0109
sl@0
  1065
sl@0
  1066
@SYMDEF             DEF081259
sl@0
  1067
sl@0
  1068
@SYMTestCaseDesc    Test screen mode switching
sl@0
  1069
sl@0
  1070
@SYMTestPriority    High
sl@0
  1071
sl@0
  1072
@SYMTestStatus      Implemented
sl@0
  1073
sl@0
  1074
@SYMTestActions     The test does nothing if there is only one possible screen mode. It uses at most 4 different modes for the test.
sl@0
  1075
					1. Test default screen mode switch buttons
sl@0
  1076
					2. Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
sl@0
  1077
					3. Clear all screen mode switch buttons. Test that default and program defined screen mode switch buttons don't affect screen modes
sl@0
  1078
					4. Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
sl@0
  1079
					5. Add new screen mode switch buttons. Test that default and program defined screen mode switch buttons switch modes.
sl@0
  1080
					6. Restore default screen mode switch buttons. Test that only default screen mode switch buttons switch screen modes
sl@0
  1081
					7. Restore initial screen mode
sl@0
  1082
sl@0
  1083
sl@0
  1084
sl@0
  1085
@SYMTestExpectedResults Expects that actions described above give positive result.
sl@0
  1086
*/
sl@0
  1087
		case 5:
sl@0
  1088
			((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0109"));
sl@0
  1089
			iTest->LogSubTest(KTest4);
sl@0
  1090
			ScreenSizeModeKeysL();
sl@0
  1091
			break;
sl@0
  1092
#ifdef _DEBUG			
sl@0
  1093
		case 6:
sl@0
  1094
/**
sl@0
  1095
@SYMTestCaseID		GRAPHICS-WSERV-0540
sl@0
  1096
*/
sl@0
  1097
			((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0540"));
sl@0
  1098
			iTest->LogSubTest(KTest5);
sl@0
  1099
			KeyOfOrientation();
sl@0
  1100
			break;
sl@0
  1101
		case 7:
sl@0
  1102
/**
sl@0
  1103
@SYMTestCaseID		GRAPHICS-WSERV-0541
sl@0
  1104
*/
sl@0
  1105
			((CTKeyStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0541"));
sl@0
  1106
			iTest->LogSubTest(KTest6);
sl@0
  1107
			CycleDisplaySize();
sl@0
  1108
			break;
sl@0
  1109
#endif		
sl@0
  1110
		default:
sl@0
  1111
			((CTKeyStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
sl@0
  1112
			((CTKeyStep*)iStep)->CloseTMSGraphicsStep();
sl@0
  1113
			TestComplete();
sl@0
  1114
		}
sl@0
  1115
	((CTKeyStep*)iStep)->RecordTestResultL();
sl@0
  1116
	}
sl@0
  1117
sl@0
  1118
sl@0
  1119
__WS_CONSTRUCT_STEP__(Key)