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".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
19 @internalComponent - Internal Symbian test code
27 #include "../tlib/testbase.h"
29 #include "TGraphicsHarness.h"
34 EModeNormalCaptureWithPriority,
35 EModeWaitingForFirstNormalCapWithPriority,
36 EModeWaitingForFirstDown,
37 EModeWaitingForFirstDownWithPriority,
39 EModeKeyUpsAndDownsWithPriority,
51 TInt connIndex; // Connection that should capture this key
58 struct SCapKeyTestParams
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
69 TUint keyCode; // Expected key code
70 TUint modifier_mask;// Modifiers mask for expected modifiers
71 TUint modifiers; // Expected modifiers
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},
83 LOCAL_D SCapKeyParams capKeysWithPriority[]={
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},
95 LOCAL_D SCapKeyParams capUpAndDownKeys[]={
96 {2,EStdKeySpace,EModifierFunc|EModifierCtrl|EModifierShift,0,0},
97 {2,EStdKeyEnter,EModifierFunc|EModifierCtrl|EModifierShift,EModifierShift,0},
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},
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},
122 // Capture normal keys with priority
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},
128 // Capture ups and downs
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},
136 // Capture ups and downs
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},
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},
149 LOCAL_D SAbortKeyTests abortKeyTests[]={
150 {3,EModifierCtrl,EModifierCtrl},
151 {4,EModifierCtrl,EModifierCtrl},
152 {'z',EModifierFunc|EModifierCtrl|EModifierShift,0}
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},
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;
189 LOCAL_D TInt capKeyHandle[numCapKeys];
190 LOCAL_D TInt capKeyWithPriorityHandle[numCapKeysWithPriority];
191 LOCAL_D TInt capUpDownKeyHandle[numUpDownKeys];
192 LOCAL_D TInt capUpDownKeyWithPriorityHandle[numUpDownKeysWithPriority];
196 class CCKAbortConnection;
198 class CCKConnectionBase : public CTClient
201 CCKConnectionBase(CTCaptureKey *aTest);
207 class CCKConnection : public CCKConnectionBase
210 CCKConnection(CTCaptureKey *aTest, TInt aConnIndex);
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;}
225 class CAbortHandler : public CTEventBase
228 CAbortHandler(RWsSession *aWs, CCKAbortConnection *aConnection);
235 CCKAbortConnection *iConnection;
238 class CCKAbortConnection : public CCKConnectionBase
241 CCKAbortConnection(CTCaptureKey *aTest);
242 ~CCKAbortConnection();
244 void ReceivedAbortEvent(TInt aHandle, TKeyEvent *aKey);
247 CAbortHandler *iAbortHandler;
251 class CCKWindow : public CTWin
254 CCKWindow(CTCaptureKey *aTest, TInt aConnIndex);
255 void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc);
263 class CCKWindowGroup : public CTWindowGroup
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);
275 class CTCaptureKey : public CTWsGraphicsBase
278 CTCaptureKey(CTestStep* aStep);
281 void EndCaptureKeyTest();
282 inline TInt State() {return iState;}
283 TInt SubState() const;
286 void CapKeyPurgingL();
287 void SetUpPriorityKeyTest();
288 void CaptureWithPriorityTest();
289 void CaptureUpsAndDownsTest();
290 void CaptureUpsAndDownsWithPriorityTest();
292 void SetMode(TTestMode aMode);
293 inline TestClient* Client() {return TheClient;}
295 void CapKeyPowerOffL();
296 inline TInt ScreenNumber() {return iTest->ScreenNumber();}
298 virtual void RunTestCaseL(TInt aCurTestCase);
300 CCKConnection *iConn1;
301 CCKConnection *iConn2;
302 CCKConnection *iConn3;
303 CCKAbortConnection *iAbortConn;
310 class CTCaptureKeyStep : public CTGraphicsStep
315 //from CTGraphicsStep
316 virtual CTGraphicsBase* CreateTestL();
319 _LIT(KTCaptureKeyStep,"TCaptureKey");