|
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". |
|
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 }; |
|
161 |
|
162 LOCAL_D SErrorCapKey errorKeys[]={ |
|
163 {'a',EModifierFunc|EModifierShift,EModifierFunc|EModifierCtrl}, |
|
164 {'1',0,EModifierFunc}, |
|
165 {3,EModifierCtrl,EModifierCtrl|EModifierShift}, |
|
166 }; |
|
167 |
|
168 const TInt numCapKeys=sizeof(capKeys)/sizeof(capKeys[0]); |
|
169 const TInt numCapKeysWithPriority=sizeof(capKeysWithPriority)/sizeof(capKeysWithPriority[0]); |
|
170 const TInt numTests=sizeof(capKeyTests)/sizeof(capKeyTests[0]); |
|
171 const TInt numErrorKeys=sizeof(errorKeys)/sizeof(errorKeys[0]); |
|
172 const TInt numAbortKeyTests=sizeof(abortKeyTests)/sizeof(abortKeyTests[0]); |
|
173 const TInt numUpDownKeys=sizeof(capUpAndDownKeys)/sizeof(capUpAndDownKeys[0]); |
|
174 const TInt numUpDownKeysWithPriority=sizeof(capUpAndDownKeysWithPriority)/sizeof(capUpAndDownKeysWithPriority[0]); |
|
175 const TInt numUpDownKeyTests=4; |
|
176 const TInt numUpDownKeyWithPriorityTests=3; |
|
177 const TInt numCapKeyWithPriorityTests=3; |
|
178 const TInt numCapKeyTests=numTests-numAbortKeyTests-numUpDownKeyTests-numUpDownKeyWithPriorityTests-numCapKeyWithPriorityTests; |
|
179 |
|
180 LOCAL_D TInt capKeyHandle[numCapKeys]; |
|
181 LOCAL_D TInt capKeyWithPriorityHandle[numCapKeysWithPriority]; |
|
182 LOCAL_D TInt capUpDownKeyHandle[numUpDownKeys]; |
|
183 LOCAL_D TInt capUpDownKeyWithPriorityHandle[numUpDownKeysWithPriority]; |
|
184 |
|
185 class CCKWindow; |
|
186 class CTCaptureKey; |
|
187 class CCKAbortConnection; |
|
188 |
|
189 class CCKConnectionBase : public CTClient |
|
190 { |
|
191 public: |
|
192 CCKConnectionBase(CTCaptureKey *aTest); |
|
193 void ConstructL(); |
|
194 protected: |
|
195 CTCaptureKey *iTest; |
|
196 }; |
|
197 |
|
198 class CCKConnection : public CCKConnectionBase |
|
199 { |
|
200 public: |
|
201 CCKConnection(CTCaptureKey *aTest, TInt aConnIndex); |
|
202 ~CCKConnection(); |
|
203 void ConstructL(); |
|
204 void CheckKeyL(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey); |
|
205 void SubStateChanged(); |
|
206 void KeyTestL(TInt aBool); |
|
207 void KeyL(const TKeyEvent &aKey,const TTime &aTime); |
|
208 void CheckUpDownL(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey); |
|
209 void CheckUpDownL(const TKeyEvent &aKey); |
|
210 inline TInt Index() {return iConnIndex;} |
|
211 protected: |
|
212 TInt iConnIndex; |
|
213 CCKWindow *iWin; |
|
214 }; |
|
215 |
|
216 class CAbortHandler : public CTEventBase |
|
217 { |
|
218 public: |
|
219 CAbortHandler(RWsSession *aWs, CCKAbortConnection *aConnection); |
|
220 ~CAbortHandler(); |
|
221 void Request(); |
|
222 protected: |
|
223 void DoCancel(); |
|
224 void doRunL(); |
|
225 protected: |
|
226 CCKAbortConnection *iConnection; |
|
227 }; |
|
228 |
|
229 class CCKAbortConnection : public CCKConnectionBase |
|
230 { |
|
231 public: |
|
232 CCKAbortConnection(CTCaptureKey *aTest); |
|
233 ~CCKAbortConnection(); |
|
234 void ConstructL(); |
|
235 void ReceivedAbortEvent(TInt aHandle, TKeyEvent *aKey); |
|
236 void Foreground(); |
|
237 protected: |
|
238 CAbortHandler *iAbortHandler; |
|
239 TInt iAbortKeyIndex; |
|
240 }; |
|
241 |
|
242 class CCKWindow : public CTWin |
|
243 { |
|
244 public: |
|
245 CCKWindow(CTCaptureKey *aTest, TInt aConnIndex); |
|
246 void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); |
|
247 void Draw(); |
|
248 protected: |
|
249 TInt iConnIndex; |
|
250 CTCaptureKey *iTest; |
|
251 TRgb iBack; |
|
252 }; |
|
253 |
|
254 class CCKWindowGroup : public CTWindowGroup |
|
255 { |
|
256 public: |
|
257 CCKWindowGroup(CTClient *aClient, CTCaptureKey *aTest); |
|
258 void KeyL(const TKeyEvent &aKey,const TTime &aTime); |
|
259 void KeyDownL(const TKeyEvent &aKey,const TTime &); |
|
260 void KeyUpL(const TKeyEvent &aKey,const TTime &); |
|
261 void CheckUpDown(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey); |
|
262 private: |
|
263 CTCaptureKey *iTest; |
|
264 }; |
|
265 |
|
266 class CTCaptureKey : public CTWsGraphicsBase |
|
267 { |
|
268 public: |
|
269 CTCaptureKey(CTestStep* aStep); |
|
270 ~CTCaptureKey(); |
|
271 void ConstructL(); |
|
272 void EndCaptureKeyTest(); |
|
273 inline TInt State() {return iState;} |
|
274 TInt SubState() const; |
|
275 void IncSubState(); |
|
276 void BadParams(); |
|
277 void CapKeyPurgingL(); |
|
278 void SetUpPriorityKeyTest(); |
|
279 void CaptureWithPriorityTest(); |
|
280 void CaptureUpsAndDownsTest(); |
|
281 void CaptureUpsAndDownsWithPriorityTest(); |
|
282 TTestMode Mode(); |
|
283 void SetMode(TTestMode aMode); |
|
284 inline TestClient* Client() {return TheClient;} |
|
285 void SendEvents(); |
|
286 void CapKeyPowerOffL(); |
|
287 inline TInt ScreenNumber() {return iTest->ScreenNumber();} |
|
288 protected: |
|
289 virtual void RunTestCaseL(TInt aCurTestCase); |
|
290 private: |
|
291 CCKConnection *iConn1; |
|
292 CCKConnection *iConn2; |
|
293 CCKConnection *iConn3; |
|
294 CCKAbortConnection *iAbortConn; |
|
295 TSize iWinSize; |
|
296 TInt iState; |
|
297 TInt iSubState; |
|
298 TTestMode iMode; |
|
299 }; |
|
300 |
|
301 class CTCaptureKeyStep : public CTGraphicsStep |
|
302 { |
|
303 public: |
|
304 CTCaptureKeyStep(); |
|
305 protected: |
|
306 //from CTGraphicsStep |
|
307 virtual CTGraphicsBase* CreateTestL(); |
|
308 }; |
|
309 |
|
310 _LIT(KTCaptureKeyStep,"TCaptureKey"); |
|
311 |
|
312 |
|
313 #endif |