os/graphics/windowing/windowserver/test/tauto/TCapKey.H
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
     1 // Copyright (c) 1996-2010 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".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 /**
    17  @file
    18  @test
    19  @internalComponent - Internal Symbian test code
    20 */
    21 
    22 #ifndef __TCAPKEY_H__
    23 #define __TCAPKEY_H__
    24 
    25 #include <e32std.h>
    26 #include <w32std.h>
    27 #include "../tlib/testbase.h"
    28 #include "AUTO.H"
    29 #include "TGraphicsHarness.h"
    30 
    31 enum TTestMode
    32 	{
    33 	EModeNormalCapture,
    34 	EModeNormalCaptureWithPriority,
    35 	EModeWaitingForFirstNormalCapWithPriority,
    36 	EModeWaitingForFirstDown,
    37 	EModeWaitingForFirstDownWithPriority,
    38 	EModeKeyUpsAndDowns,
    39 	EModeKeyUpsAndDownsWithPriority,
    40 	EModeAbortKeys,
    41 	};
    42 enum TCapKeyRetValues
    43 	{
    44 	ECapKeyOkay,
    45 	ECapKeyRetry,
    46 	ECapKeyFail,
    47 	};
    48 
    49 struct SCapKeyParams
    50 	{
    51 	TInt connIndex;		// Connection that should capture this key
    52 	TUint keyCode;
    53 	TUint modifier_mask;
    54 	TUint modifiers;
    55 	TInt priority;
    56 	};
    57 
    58 struct SCapKeyTestParams
    59 	{
    60 	TText *txt;			// Text message telling user what to do
    61 	TInt connIndex;		// Connection that receive the key press
    62 	TUint keyCode;		// Expected key code
    63 	TUint modifier_mask;// Modifiers mask for expected modifiers
    64 	TUint modifiers;	// Expected modifiers
    65 	};
    66 
    67 struct SAbortKeyTests
    68 	{
    69 	TUint keyCode;		// Expected key code
    70 	TUint modifier_mask;// Modifiers mask for expected modifiers
    71 	TUint modifiers;	// Expected modifiers
    72 	};
    73 
    74 LOCAL_D SCapKeyParams capKeys[]={
    75 	{1,19,EModifierFunc|EModifierCtrl,EModifierFunc|EModifierCtrl,0},
    76 	{2,'b',EModifierFunc|EModifierCtrl,EModifierFunc,0},
    77 	{2,'n',EModifierFunc|EModifierCtrl,EModifierFunc,0},
    78 	{0,3,EModifierFunc|EModifierCtrl,EModifierFunc|EModifierCtrl,0},
    79 	{2,'q',0,0,0},
    80 	{2,'w',0,0,0},
    81 	};
    82 
    83 LOCAL_D SCapKeyParams capKeysWithPriority[]={
    84 	{2,'h',0,0,7},
    85 	{1,'h',EModifierFunc|EModifierCtrl|EModifierShift,0,7},
    86 	{0,'h',EModifierFunc|EModifierCtrl|EModifierShift,0,7},
    87 	{2,'j',EModifierFunc|EModifierCtrl|EModifierShift,0,6},
    88 	{1,'j',EModifierFunc|EModifierCtrl|EModifierShift,0,6},
    89 	{0,'j',EModifierFunc|EModifierCtrl|EModifierShift,0,5},
    90 	{2,'k',EModifierFunc|EModifierCtrl|EModifierShift,0,4},
    91 	{1,'k',EModifierFunc|EModifierCtrl|EModifierShift,0,3},
    92 	{0,'k',EModifierFunc|EModifierCtrl|EModifierShift,0,2},
    93 	};
    94 	
    95 LOCAL_D SCapKeyParams capUpAndDownKeys[]={
    96 	{2,EStdKeySpace,EModifierFunc|EModifierCtrl|EModifierShift,0,0},
    97 	{2,EStdKeyEnter,EModifierFunc|EModifierCtrl|EModifierShift,EModifierShift,0},
    98 	};
    99 
   100 LOCAL_D SCapKeyParams capUpAndDownKeysWithPriority[]={
   101 	{2,'H',EModifierFunc|EModifierCtrl|EModifierShift,0,7},
   102 	{1,'H',EModifierFunc|EModifierCtrl|EModifierShift,0,7},
   103 	{0,'H',EModifierFunc|EModifierCtrl|EModifierShift,0,7},
   104 	{2,'J',EModifierFunc|EModifierCtrl|EModifierShift,0,6},
   105 	{1,'J',EModifierFunc|EModifierCtrl|EModifierShift,0,6},
   106 	{0,'J',EModifierFunc|EModifierCtrl|EModifierShift,0,5},
   107 	{2,'K',EModifierFunc|EModifierCtrl|EModifierShift,0,4},
   108 	{1,'K',EModifierFunc|EModifierCtrl|EModifierShift,0,3},
   109 	{0,'K',EModifierFunc|EModifierCtrl|EModifierShift,0,2},
   110 	};
   111 	
   112 LOCAL_D SCapKeyTestParams capKeyTests[]={
   113 	{(TText *)_S("Press q"),2,'q',EModifierFunc|EModifierCtrl|EModifierShift,0},
   114 	{(TText *)_S("Press <Alt>w"),2,'w',EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc},
   115 	{(TText *)_S("Press a"),0,'a',0},
   116 	{(TText *)_S("Press <Ctrl><Alt>s"),1,19,EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc|EModifierCtrl},
   117 	{(TText *)_S("Press <Alt>n"),2,'n',EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc},
   118 	{(TText *)_S("Press <Ctrl><Alt>b"),0,2,EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc|EModifierCtrl},
   119 	{(TText *)_S("Press <Alt>d"),0,'d',EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc},
   120 	{(TText *)_S("Press <Ctrl><Alt>c"),0,3,EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc|EModifierCtrl},
   121 //
   122 // Capture normal keys with priority
   123 //
   124 	{(TText *)_S("Press h"),0,'h',EModifierFunc|EModifierCtrl|EModifierShift,0},
   125 	{(TText *)_S("Press j"),1,'j',EModifierFunc|EModifierCtrl|EModifierShift,0},
   126 	{(TText *)_S("Press k"),2,'k',EModifierFunc|EModifierCtrl|EModifierShift,0},
   127 //
   128 // Capture ups and downs
   129 //
   130 	{(TText *)_S("Press <Space>"),2,EStdKeySpace,EModifierFunc|EModifierCtrl|EModifierShift,0},
   131 	{(TText *)_S("Press <Enter>"),0,EStdKeyEnter,EModifierShift,0},
   132 	{(TText *)_S("Press <Shift><Space>"),0,EStdKeySpace,EModifierFunc|EModifierCtrl|EModifierShift,EModifierShift},
   133 	{(TText *)_S("Press <Shift><Enter>"),2,EStdKeyEnter,EModifierShift,EModifierShift},
   134 
   135 //
   136 // Capture ups and downs
   137 //
   138 	{(TText *)_S("Press H"),0,'H',EModifierFunc|EModifierCtrl|EModifierShift,0},
   139 	{(TText *)_S("Press J"),1,'J',EModifierFunc|EModifierCtrl|EModifierShift,0},
   140 	{(TText *)_S("Press K"),2,'K',EModifierFunc|EModifierCtrl|EModifierShift,0},
   141 //
   142 // Priority keys
   143 //
   144 	{(TText *)_S("Press <Ctrl>c"),0,0,0,0},
   145 	{(TText *)_S("Press <Ctrl>d"),0,0,0,0},
   146 	{(TText *)_S("Press z"),0,0,0,0},
   147 	};
   148 
   149 LOCAL_D SAbortKeyTests abortKeyTests[]={
   150 	{3,EModifierCtrl,EModifierCtrl},
   151 	{4,EModifierCtrl,EModifierCtrl},
   152 	{'z',EModifierFunc|EModifierCtrl|EModifierShift,0}
   153 	};
   154 
   155 struct SErrorCapKey
   156 	{
   157 	TInt keyCode;
   158 	TUint modifier_mask;
   159 	TUint modifiers;
   160 	TInt priority;
   161 	};
   162 
   163 LOCAL_D SErrorCapKey errorKeys[]={
   164 	{'a', EModifierFunc|EModifierShift,EModifierFunc|EModifierCtrl, 0},
   165 	{'1', 0, EModifierFunc, 0},
   166 	{3, EModifierCtrl,EModifierCtrl|EModifierShift, 0},
   167 	// @SYMPREQ 417-61800: Check that attempts to capture keys with
   168 	// EModifierLong in the modifier mask fail with KErrArgument.
   169 	{'T', EModifierLongKey, 0, 0},
   170 	{'u', EModifierLongKey|EModifierAlt, EModifierLongKey, 0},
   171 	{'V', EModifierLongKey|EModifierShift, EModifierLongKey|EModifierShift, 0},
   172 	// @SYMPREQ 417-61800: Check that attempts to capture keys with a priority
   173 	// of KMinTInt fail with KErrArgument.
   174 	{'W', 0, 0, KMinTInt},
   175 	};
   176 
   177 const TInt numCapKeys=sizeof(capKeys)/sizeof(capKeys[0]);
   178 const TInt numCapKeysWithPriority=sizeof(capKeysWithPriority)/sizeof(capKeysWithPriority[0]);
   179 const TInt numTests=sizeof(capKeyTests)/sizeof(capKeyTests[0]);
   180 const TInt numErrorKeys=sizeof(errorKeys)/sizeof(errorKeys[0]);
   181 const TInt numAbortKeyTests=sizeof(abortKeyTests)/sizeof(abortKeyTests[0]);
   182 const TInt numUpDownKeys=sizeof(capUpAndDownKeys)/sizeof(capUpAndDownKeys[0]);
   183 const TInt numUpDownKeysWithPriority=sizeof(capUpAndDownKeysWithPriority)/sizeof(capUpAndDownKeysWithPriority[0]);
   184 const TInt numUpDownKeyTests=4;
   185 const TInt numUpDownKeyWithPriorityTests=3;
   186 const TInt numCapKeyWithPriorityTests=3;
   187 const TInt numCapKeyTests=numTests-numAbortKeyTests-numUpDownKeyTests-numUpDownKeyWithPriorityTests-numCapKeyWithPriorityTests;
   188 
   189 LOCAL_D TInt capKeyHandle[numCapKeys];
   190 LOCAL_D TInt capKeyWithPriorityHandle[numCapKeysWithPriority];
   191 LOCAL_D TInt capUpDownKeyHandle[numUpDownKeys];
   192 LOCAL_D TInt capUpDownKeyWithPriorityHandle[numUpDownKeysWithPriority];
   193 
   194 class CCKWindow;
   195 class CTCaptureKey;
   196 class CCKAbortConnection;
   197 
   198 class CCKConnectionBase : public CTClient
   199 	{
   200 public:
   201 	CCKConnectionBase(CTCaptureKey *aTest);
   202 	void ConstructL();
   203 protected:
   204 	CTCaptureKey *iTest;
   205 	};
   206 
   207 class CCKConnection : public CCKConnectionBase
   208 	{
   209 public:
   210 	CCKConnection(CTCaptureKey *aTest, TInt aConnIndex);
   211 	~CCKConnection();
   212 	void ConstructL();
   213 	void CheckKeyL(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey);
   214 	void SubStateChanged();
   215 	void KeyTestL(TInt aBool);
   216 	void KeyL(const TKeyEvent &aKey,const TTime &aTime);
   217 	void CheckUpDownL(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey);
   218 	void CheckUpDownL(const TKeyEvent &aKey);
   219 	inline TInt Index() {return iConnIndex;}
   220 protected:
   221 	TInt iConnIndex;
   222 	CCKWindow *iWin;
   223 	};
   224 
   225 class CAbortHandler : public CTEventBase
   226 	{
   227 public:
   228 	CAbortHandler(RWsSession *aWs, CCKAbortConnection *aConnection);
   229 	~CAbortHandler();
   230 	void Request();
   231 protected:
   232 	void DoCancel();
   233 	void doRunL();
   234 protected:
   235 	CCKAbortConnection *iConnection;
   236 	};
   237 
   238 class CCKAbortConnection : public CCKConnectionBase
   239 	{
   240 public:
   241 	CCKAbortConnection(CTCaptureKey *aTest);
   242 	~CCKAbortConnection();
   243 	void ConstructL();
   244 	void ReceivedAbortEvent(TInt aHandle, TKeyEvent *aKey);
   245 	void Foreground();
   246 protected:
   247 	CAbortHandler *iAbortHandler;
   248 	TInt iAbortKeyIndex;
   249 	};
   250 
   251 class CCKWindow : public CTWin
   252 	{
   253 public:
   254 	CCKWindow(CTCaptureKey *aTest, TInt aConnIndex);
   255 	void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc);
   256 	void Draw();
   257 protected:
   258 	TInt iConnIndex;
   259 	CTCaptureKey *iTest;
   260 	TRgb iBack;
   261 	};
   262 
   263 class CCKWindowGroup : public CTWindowGroup
   264 	{
   265 public:
   266 	CCKWindowGroup(CTClient *aClient, CTCaptureKey *aTest);
   267 	void KeyL(const TKeyEvent &aKey,const TTime &aTime);
   268 	void KeyDownL(const TKeyEvent &aKey,const TTime &);
   269 	void KeyUpL(const TKeyEvent &aKey,const TTime &);
   270 	void CheckUpDown(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey);
   271 private:
   272 	CTCaptureKey *iTest;
   273 	};
   274 
   275 class CTCaptureKey : public CTWsGraphicsBase
   276 	{
   277 public:
   278 	CTCaptureKey(CTestStep* aStep);
   279 	~CTCaptureKey();
   280 	void ConstructL();
   281 	void EndCaptureKeyTest();
   282 	inline TInt State() {return iState;}
   283 	TInt SubState() const;
   284 	void IncSubState();
   285 	void BadParams();
   286 	void CapKeyPurgingL();
   287 	void SetUpPriorityKeyTest();
   288 	void CaptureWithPriorityTest();
   289 	void CaptureUpsAndDownsTest();
   290 	void CaptureUpsAndDownsWithPriorityTest();
   291 	TTestMode Mode();
   292 	void SetMode(TTestMode aMode);
   293 	inline TestClient* Client() {return TheClient;}
   294 	void SendEvents();
   295 	void CapKeyPowerOffL();
   296 	inline TInt ScreenNumber() {return iTest->ScreenNumber();}
   297 protected:
   298 	virtual void RunTestCaseL(TInt aCurTestCase);
   299 private:
   300 	CCKConnection *iConn1;
   301 	CCKConnection *iConn2;
   302 	CCKConnection *iConn3;
   303 	CCKAbortConnection *iAbortConn;
   304 	TSize iWinSize;
   305 	TInt iState;
   306 	TInt iSubState;
   307 	TTestMode iMode;
   308 	};
   309 
   310 class CTCaptureKeyStep : public CTGraphicsStep
   311 	{
   312 public:
   313 	CTCaptureKeyStep();
   314 protected:	
   315 	//from CTGraphicsStep
   316 	virtual CTGraphicsBase* CreateTestL();
   317 	};
   318 
   319 _LIT(KTCaptureKeyStep,"TCaptureKey");
   320 
   321 
   322 #endif