diff -r bf7481649c98 -r 2717213c588a windowing/windowserver/test/tauto/TCapKey.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/test/tauto/TCapKey.H Tue Jun 22 15:21:29 2010 +0300 @@ -0,0 +1,313 @@ +// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of "Eclipse Public License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.eclipse.org/legal/epl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +/** + @file + @test + @internalComponent - Internal Symbian test code +*/ + +#ifndef __TCAPKEY_H__ +#define __TCAPKEY_H__ + +#include +#include +#include "../tlib/testbase.h" +#include "AUTO.H" +#include "TGraphicsHarness.h" + +enum TTestMode + { + EModeNormalCapture, + EModeNormalCaptureWithPriority, + EModeWaitingForFirstNormalCapWithPriority, + EModeWaitingForFirstDown, + EModeWaitingForFirstDownWithPriority, + EModeKeyUpsAndDowns, + EModeKeyUpsAndDownsWithPriority, + EModeAbortKeys, + }; +enum TCapKeyRetValues + { + ECapKeyOkay, + ECapKeyRetry, + ECapKeyFail, + }; + +struct SCapKeyParams + { + TInt connIndex; // Connection that should capture this key + TUint keyCode; + TUint modifier_mask; + TUint modifiers; + TInt priority; + }; + +struct SCapKeyTestParams + { + TText *txt; // Text message telling user what to do + TInt connIndex; // Connection that receive the key press + TUint keyCode; // Expected key code + TUint modifier_mask;// Modifiers mask for expected modifiers + TUint modifiers; // Expected modifiers + }; + +struct SAbortKeyTests + { + TUint keyCode; // Expected key code + TUint modifier_mask;// Modifiers mask for expected modifiers + TUint modifiers; // Expected modifiers + }; + +LOCAL_D SCapKeyParams capKeys[]={ + {1,19,EModifierFunc|EModifierCtrl,EModifierFunc|EModifierCtrl,0}, + {2,'b',EModifierFunc|EModifierCtrl,EModifierFunc,0}, + {2,'n',EModifierFunc|EModifierCtrl,EModifierFunc,0}, + {0,3,EModifierFunc|EModifierCtrl,EModifierFunc|EModifierCtrl,0}, + {2,'q',0,0,0}, + {2,'w',0,0,0}, + }; + +LOCAL_D SCapKeyParams capKeysWithPriority[]={ + {2,'h',0,0,7}, + {1,'h',EModifierFunc|EModifierCtrl|EModifierShift,0,7}, + {0,'h',EModifierFunc|EModifierCtrl|EModifierShift,0,7}, + {2,'j',EModifierFunc|EModifierCtrl|EModifierShift,0,6}, + {1,'j',EModifierFunc|EModifierCtrl|EModifierShift,0,6}, + {0,'j',EModifierFunc|EModifierCtrl|EModifierShift,0,5}, + {2,'k',EModifierFunc|EModifierCtrl|EModifierShift,0,4}, + {1,'k',EModifierFunc|EModifierCtrl|EModifierShift,0,3}, + {0,'k',EModifierFunc|EModifierCtrl|EModifierShift,0,2}, + }; + +LOCAL_D SCapKeyParams capUpAndDownKeys[]={ + {2,EStdKeySpace,EModifierFunc|EModifierCtrl|EModifierShift,0,0}, + {2,EStdKeyEnter,EModifierFunc|EModifierCtrl|EModifierShift,EModifierShift,0}, + }; + +LOCAL_D SCapKeyParams capUpAndDownKeysWithPriority[]={ + {2,'H',EModifierFunc|EModifierCtrl|EModifierShift,0,7}, + {1,'H',EModifierFunc|EModifierCtrl|EModifierShift,0,7}, + {0,'H',EModifierFunc|EModifierCtrl|EModifierShift,0,7}, + {2,'J',EModifierFunc|EModifierCtrl|EModifierShift,0,6}, + {1,'J',EModifierFunc|EModifierCtrl|EModifierShift,0,6}, + {0,'J',EModifierFunc|EModifierCtrl|EModifierShift,0,5}, + {2,'K',EModifierFunc|EModifierCtrl|EModifierShift,0,4}, + {1,'K',EModifierFunc|EModifierCtrl|EModifierShift,0,3}, + {0,'K',EModifierFunc|EModifierCtrl|EModifierShift,0,2}, + }; + +LOCAL_D SCapKeyTestParams capKeyTests[]={ + {(TText *)_S("Press q"),2,'q',EModifierFunc|EModifierCtrl|EModifierShift,0}, + {(TText *)_S("Press w"),2,'w',EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc}, + {(TText *)_S("Press a"),0,'a',0}, + {(TText *)_S("Press s"),1,19,EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc|EModifierCtrl}, + {(TText *)_S("Press n"),2,'n',EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc}, + {(TText *)_S("Press b"),0,2,EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc|EModifierCtrl}, + {(TText *)_S("Press d"),0,'d',EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc}, + {(TText *)_S("Press c"),0,3,EModifierFunc|EModifierCtrl|EModifierShift,EModifierFunc|EModifierCtrl}, +// +// Capture normal keys with priority +// + {(TText *)_S("Press h"),0,'h',EModifierFunc|EModifierCtrl|EModifierShift,0}, + {(TText *)_S("Press j"),1,'j',EModifierFunc|EModifierCtrl|EModifierShift,0}, + {(TText *)_S("Press k"),2,'k',EModifierFunc|EModifierCtrl|EModifierShift,0}, +// +// Capture ups and downs +// + {(TText *)_S("Press "),2,EStdKeySpace,EModifierFunc|EModifierCtrl|EModifierShift,0}, + {(TText *)_S("Press "),0,EStdKeyEnter,EModifierShift,0}, + {(TText *)_S("Press "),0,EStdKeySpace,EModifierFunc|EModifierCtrl|EModifierShift,EModifierShift}, + {(TText *)_S("Press "),2,EStdKeyEnter,EModifierShift,EModifierShift}, + +// +// Capture ups and downs +// + {(TText *)_S("Press H"),0,'H',EModifierFunc|EModifierCtrl|EModifierShift,0}, + {(TText *)_S("Press J"),1,'J',EModifierFunc|EModifierCtrl|EModifierShift,0}, + {(TText *)_S("Press K"),2,'K',EModifierFunc|EModifierCtrl|EModifierShift,0}, +// +// Priority keys +// + {(TText *)_S("Press c"),0,0,0,0}, + {(TText *)_S("Press d"),0,0,0,0}, + {(TText *)_S("Press z"),0,0,0,0}, + }; + +LOCAL_D SAbortKeyTests abortKeyTests[]={ + {3,EModifierCtrl,EModifierCtrl}, + {4,EModifierCtrl,EModifierCtrl}, + {'z',EModifierFunc|EModifierCtrl|EModifierShift,0} + }; + +struct SErrorCapKey + { + TInt keyCode; + TUint modifier_mask; + TUint modifiers; + }; + +LOCAL_D SErrorCapKey errorKeys[]={ + {'a',EModifierFunc|EModifierShift,EModifierFunc|EModifierCtrl}, + {'1',0,EModifierFunc}, + {3,EModifierCtrl,EModifierCtrl|EModifierShift}, + }; + +const TInt numCapKeys=sizeof(capKeys)/sizeof(capKeys[0]); +const TInt numCapKeysWithPriority=sizeof(capKeysWithPriority)/sizeof(capKeysWithPriority[0]); +const TInt numTests=sizeof(capKeyTests)/sizeof(capKeyTests[0]); +const TInt numErrorKeys=sizeof(errorKeys)/sizeof(errorKeys[0]); +const TInt numAbortKeyTests=sizeof(abortKeyTests)/sizeof(abortKeyTests[0]); +const TInt numUpDownKeys=sizeof(capUpAndDownKeys)/sizeof(capUpAndDownKeys[0]); +const TInt numUpDownKeysWithPriority=sizeof(capUpAndDownKeysWithPriority)/sizeof(capUpAndDownKeysWithPriority[0]); +const TInt numUpDownKeyTests=4; +const TInt numUpDownKeyWithPriorityTests=3; +const TInt numCapKeyWithPriorityTests=3; +const TInt numCapKeyTests=numTests-numAbortKeyTests-numUpDownKeyTests-numUpDownKeyWithPriorityTests-numCapKeyWithPriorityTests; + +LOCAL_D TInt capKeyHandle[numCapKeys]; +LOCAL_D TInt capKeyWithPriorityHandle[numCapKeysWithPriority]; +LOCAL_D TInt capUpDownKeyHandle[numUpDownKeys]; +LOCAL_D TInt capUpDownKeyWithPriorityHandle[numUpDownKeysWithPriority]; + +class CCKWindow; +class CTCaptureKey; +class CCKAbortConnection; + +class CCKConnectionBase : public CTClient + { +public: + CCKConnectionBase(CTCaptureKey *aTest); + void ConstructL(); +protected: + CTCaptureKey *iTest; + }; + +class CCKConnection : public CCKConnectionBase + { +public: + CCKConnection(CTCaptureKey *aTest, TInt aConnIndex); + ~CCKConnection(); + void ConstructL(); + void CheckKeyL(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey); + void SubStateChanged(); + void KeyTestL(TInt aBool); + void KeyL(const TKeyEvent &aKey,const TTime &aTime); + void CheckUpDownL(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey); + void CheckUpDownL(const TKeyEvent &aKey); + inline TInt Index() {return iConnIndex;} +protected: + TInt iConnIndex; + CCKWindow *iWin; + }; + +class CAbortHandler : public CTEventBase + { +public: + CAbortHandler(RWsSession *aWs, CCKAbortConnection *aConnection); + ~CAbortHandler(); + void Request(); +protected: + void DoCancel(); + void doRunL(); +protected: + CCKAbortConnection *iConnection; + }; + +class CCKAbortConnection : public CCKConnectionBase + { +public: + CCKAbortConnection(CTCaptureKey *aTest); + ~CCKAbortConnection(); + void ConstructL(); + void ReceivedAbortEvent(TInt aHandle, TKeyEvent *aKey); + void Foreground(); +protected: + CAbortHandler *iAbortHandler; + TInt iAbortKeyIndex; + }; + +class CCKWindow : public CTWin + { +public: + CCKWindow(CTCaptureKey *aTest, TInt aConnIndex); + void SetUpL(TPoint pos,TSize size,CTWinBase *parent, CWindowGc &aGc); + void Draw(); +protected: + TInt iConnIndex; + CTCaptureKey *iTest; + TRgb iBack; + }; + +class CCKWindowGroup : public CTWindowGroup + { +public: + CCKWindowGroup(CTClient *aClient, CTCaptureKey *aTest); + void KeyL(const TKeyEvent &aKey,const TTime &aTime); + void KeyDownL(const TKeyEvent &aKey,const TTime &); + void KeyUpL(const TKeyEvent &aKey,const TTime &); + void CheckUpDown(const SCapKeyTestParams &aKeyTest, const TKeyEvent &aKey); +private: + CTCaptureKey *iTest; + }; + +class CTCaptureKey : public CTWsGraphicsBase + { +public: + CTCaptureKey(CTestStep* aStep); + ~CTCaptureKey(); + void ConstructL(); + void EndCaptureKeyTest(); + inline TInt State() {return iState;} + TInt SubState() const; + void IncSubState(); + void BadParams(); + void CapKeyPurgingL(); + void SetUpPriorityKeyTest(); + void CaptureWithPriorityTest(); + void CaptureUpsAndDownsTest(); + void CaptureUpsAndDownsWithPriorityTest(); + TTestMode Mode(); + void SetMode(TTestMode aMode); + inline TestClient* Client() {return TheClient;} + void SendEvents(); + void CapKeyPowerOffL(); + inline TInt ScreenNumber() {return iTest->ScreenNumber();} +protected: + virtual void RunTestCaseL(TInt aCurTestCase); +private: + CCKConnection *iConn1; + CCKConnection *iConn2; + CCKConnection *iConn3; + CCKAbortConnection *iAbortConn; + TSize iWinSize; + TInt iState; + TInt iSubState; + TTestMode iMode; + }; + +class CTCaptureKeyStep : public CTGraphicsStep + { +public: + CTCaptureKeyStep(); +protected: + //from CTGraphicsStep + virtual CTGraphicsBase* CreateTestL(); + }; + +_LIT(KTCaptureKeyStep,"TCaptureKey"); + + +#endif