diff -r bf7481649c98 -r 7f25ef56562d windowing/windowserver/tman/TPASSWRD.CPP --- a/windowing/windowserver/tman/TPASSWRD.CPP Fri Jun 11 14:58:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,429 +0,0 @@ -// 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: -// Test Wserv password features -// -// - -#include -#include -#include "W32STD.H" -#include "../tlib/testbase.h" -#include "TMAN.H" - -//#define LOG_TESTS - -#define THE_PASSWORD _L("pass") - -enum TPasswordState - { - ENotStarted, - EWaitForSwitchOff, - EWaitForEnter, - EWaitForA, - EWaitForSwitchOff2, - EWaitForSwitchOff3, - EWaitForSwitchOff4, - EWaitForSwitchOff5, - EWaitForEnter2, - EPasswordFinished, - }; - -class CPasswordTest; - -class CPasswordWindowGroup : public CTWindowGroup - { -public: - CPasswordWindowGroup(CTClient *aClient, CPasswordTest *aTest); - void ConstructL(); - void PasswordL(const TTime &aTime); - void KeyL(const TKeyEvent &aKey,const TTime &aTime); - void SwitchOn(const TTime &aTime); -private: - CPasswordTest *iTest; - }; - -class CPasswordWindowGroup2 : public CTWindowGroup - { -public: - CPasswordWindowGroup2(CTClient *aClient, CPasswordTest *aTest); - void ConstructL(); - void KeyL(const TKeyEvent &aKey,const TTime &aTime); -private: - CPasswordTest *iTest; - }; - -class CPasswordWindow : public CTWin - { -public: - CPasswordWindow(CPasswordTest *aTest); - void Draw(); -private: - CPasswordTest *iTest; - }; - -class CPasswordTest : public CTestBase - { -public: - CPasswordTest(); - ~CPasswordTest(); - TestState DoTestL(); - void ConstructL(); - void Fail(TInt aWhere); - void EnterKeyPressed(TPasswordState aNewState); - void SwitchOn(); - void TestComplete(TPasswordState aNewState); - void PasswordMsgReceivedL(); - TPasswordState PasswordState() const; - void SetPassState(TPasswordState aPassState); - void StartMainPasswordTestL(); - void StartOnceADayPasswordTestL(); - void TurnOffAndOn(); -private: - CPasswordWindowGroup *iGroup; - CPasswordWindowGroup2 *iGroup2; - CPasswordWindow *iPassWin; - CTBlankWindow *iBlankWin; - TSize iWinSize; - TInt iState; - TPasswordState iPassState; - TBool iPasswordTestFailed; - }; - -GLDEF_C CTestBase *CreatePasswordTest() - { - return(new(ELeave) CPasswordTest()); - } - -// - -CPasswordWindowGroup::CPasswordWindowGroup(CTClient *aClient, CPasswordTest *aTest) : - CTWindowGroup(aClient), - iTest(aTest) - { - __DECLARE_NAME(_S("CPasswordWindowGroup")); - } - -void CPasswordWindowGroup::ConstructL() - { - CTWindowGroup::ConstructL(); - GroupWin()->EnableOnEvents(); - } - -void CPasswordWindowGroup::SwitchOn(const TTime &) - { - iTest->SwitchOn(); - } - -void CPasswordWindowGroup::KeyL(const TKeyEvent &aKey,const TTime &) - { - if (aKey.iCode==EKeyEscape) - iTest->TestComplete(EPasswordFinished); - switch(iTest->PasswordState()) - { - case EWaitForEnter: - if (aKey.iCode==EKeyEnter) - iTest->EnterKeyPressed(EWaitForA); - break; - case EWaitForEnter2: - if (aKey.iCode==EKeyEnter) - iTest->TestComplete(EPasswordFinished); - break; - default:; - } - } - -void CPasswordWindowGroup::PasswordL(const TTime &) - { - iTest->TestL(iGroupWin.OrdinalPosition()==0); - iTest->PasswordMsgReceivedL(); - } - -// - -CPasswordWindowGroup2::CPasswordWindowGroup2(CTClient *aClient, CPasswordTest *aTest) : - CTWindowGroup(aClient), - iTest(aTest) - { - __DECLARE_NAME(_S("CPasswordWindowGroup")); - } - -void CPasswordWindowGroup2::ConstructL() - { - CTWindowGroup::ConstructL(); - iGroupWin.CaptureKey('a',0,0); - } - -void CPasswordWindowGroup2::KeyL(const TKeyEvent &aKey,const TTime &) - { - if (iTest->PasswordState()!=EPasswordFinished) - { - if (iTest->PasswordState()!=EWaitForA) - { - #if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(KBadKey,"Bad Key Code=%d(%c) Scan=%d(%c) Rep=%d"); - buf.AppendFormat(KBadKey,aKey.iCode,aKey.iCode,aKey.iScanCode,aKey.iScanCode,aKey.iRepeats); - Client()->LogMessage(buf); - #endif - if (aKey.iRepeats==0) - iTest->Fail(1); - } - else - { - if (aKey.iCode!='a') - iTest->Fail(2); - iTest->TestComplete(EWaitForSwitchOff2); - } - } - } - -// - -CPasswordWindow::CPasswordWindow(CPasswordTest *aTest) : - iTest(aTest) - { - } - -void CPasswordWindow::Draw() - { - iGc->Clear(); - switch(iTest->PasswordState()) - { - case EWaitForSwitchOff: - iGc->DrawText(_L("Please wait, turning off & on [1]"),TPoint(10,20)); - break; - case EWaitForSwitchOff2: - iGc->DrawText(_L("Please wait, turning off & on [2]"),TPoint(10,20)); - break; - case EWaitForSwitchOff3: - iGc->DrawText(_L("Please wait, turning off & on [3]"),TPoint(10,20)); - break; - case EWaitForSwitchOff4: - iGc->DrawText(_L("Please wait, turning off & on [4]"),TPoint(10,20)); - break; - case EWaitForSwitchOff5: - iGc->DrawText(_L("Please wait, turning off & on [5]"),TPoint(10,20)); - break; - case EWaitForEnter: - iGc->DrawText(_L("Try the key of death, then..."),TPoint(10,20)); - iGc->DrawText(_L("Press 'a', then..."),TPoint(10,40)); - iGc->DrawText(_L("Press Enter"),TPoint(10,60)); - break; - case EWaitForEnter2: - iGc->DrawText(_L("Press Enter"),TPoint(10,20)); - break; - case EWaitForA: - iGc->DrawText(_L("Press 'a'"),TPoint(10,20)); - case EPasswordFinished: - break; - default:; - } - } - -// - -CPasswordTest::CPasswordTest() : CTestBase(_L("Password")) - {} - -CPasswordTest::~CPasswordTest() - { - delete iBlankWin; - delete iPassWin; - delete iGroup; - delete iGroup2; - } - -#if defined(LOG_TESTS) -void CPasswordTest::Fail(TInt aWhere) -#else -void CPasswordTest::Fail(TInt /*aWhere*/) -#endif - { -#if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(KFailed,"Password Failed at %d (%d,%d)"); - buf.AppendFormat(KFailed,aWhere,iState,iPassState); - Client()->LogMessage(buf); -#endif - iPasswordTestFailed=ETrue; - Request(); - } - -void CPasswordTest::TurnOffAndOn() - { -/*#if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(KSettingTime,"Setting Off Timer"); - buf.Append(KSettingTime); - Client()->LogMessage(buf); -#endif*/ - RTimer timer; - timer.CreateLocal(); - TTime time; - time.HomeTime(); - time+=TTimeIntervalSeconds(7); // For some reason the O/S won't switch off for less than 6 seconds - TRequestStatus status; - timer.At(status,time); - UserHal::SwitchOff(); - User::WaitForRequest(status); -#if !defined(__WINS__) - TRawEvent event; - event.Set(TRawEvent::ESwitchOn); - UserSvr::AddEvent(event); -#endif -/*#if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(KTimerOff,"Timer Gone Off (P=%d,S=%d)"); - buf.AppendFormat(KTimerOff,iState,iPassState); - Client()->LogMessage(buf); -#endif*/ - } - -TPasswordState CPasswordTest::PasswordState() const - { - return(iPassState); - } - -void CPasswordTest::SetPassState(TPasswordState aPassState) - { - iPassState=aPassState; - iPassWin->DrawNow(); - Client()->iWs.Flush(); -/*#if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(PassTestState,"Password Test(%d), State=%d"); - buf.AppendFormat(PassTestState,iState,aPassState); - Client()->LogMessage(buf); -#endif*/ - switch(aPassState) - { - case EWaitForSwitchOff: - case EWaitForSwitchOff2: - case EWaitForSwitchOff3: - case EWaitForSwitchOff4: - case EWaitForSwitchOff5: - TurnOffAndOn(); - break; - default:; - } - } - -void CPasswordTest::SwitchOn() - { -/*#if defined(LOG_TESTS) - TLogMessageText buf; - _LIT(KTimerOff,"Switch On (P=%d,S=%d)"); - buf.AppendFormat(KTimerOff,iState,iPassState); - Client()->LogMessage(buf); -#endif*/ - switch (iPassState) - { - case EWaitForSwitchOff: - SetPassState(EWaitForEnter); - break; - case EWaitForSwitchOff2: - SetPassState(EWaitForSwitchOff3); - break; - case EWaitForSwitchOff3: - SetPassState(EWaitForSwitchOff4); - break; - case EWaitForSwitchOff4: - { - SetPassState(EWaitForSwitchOff5); - TTime time; - time.HomeTime(); - time+=TTimeIntervalHours(24); - User::SetHomeTime(time); - } - break; - case EWaitForSwitchOff5: - SetPassState(EWaitForEnter2); - break; - default:; - } - } - -void CPasswordTest::PasswordMsgReceivedL() - { - TestL(iPassWin->BaseWin()->OrdinalPosition()==0); - if (iPassState==EWaitForSwitchOff3 || iPassState==EWaitForSwitchOff4) - Fail(3); - } - -void CPasswordTest::EnterKeyPressed(TPasswordState aNewState) - { - iPassWin->BaseWin()->SetOrdinalPosition(-1); - SetPassState(aNewState); - Client()->iWs.PasswordEntered(); - } - -void CPasswordTest::TestComplete(TPasswordState aNewState) - { - Request(); - SetPassState(aNewState); - iPassState=aNewState; - } - -void CPasswordTest::ConstructL() - { - iGroup2=new(ELeave) CPasswordWindowGroup2(Client(),this); - iGroup2->ConstructL(); - iGroup=new(ELeave) CPasswordWindowGroup(Client(),this); - iGroup->ConstructL(); - iPassWin=new(ELeave) CPasswordWindow(this); - iPassWin->ConstructL(*iGroup); - iPassWin->AssignGC(*Client()->iGc); - iPassWin->Activate(); - iBlankWin=new(ELeave) CTBlankWindow(); - iBlankWin->ConstructL(*iGroup); - iBlankWin->SetVisible(EFalse); - iBlankWin->Activate(); - iState=ENotStarted; - } - -void CPasswordTest::StartMainPasswordTestL() - { - if (iPassWin->BaseWin()->PasswordWindow(EPasswordAlways)!=KErrNone) - { - DisplayDialog(_L("Can't do password tests"),_L("Password window"),_L("already exists"), Client()->iGroup->GroupWin()); - AbortL(); - } - SetPassState(EWaitForSwitchOff); - } - -void CPasswordTest::StartOnceADayPasswordTestL() - { - TestL(iPassWin->BaseWin()->PasswordWindow(EPasswordOnceADay)==KErrNone); - } - -TestState CPasswordTest::DoTestL() - { - if (iPasswordTestFailed) - TestL(ETrue); - switch(iState) - { - case 0: - LogSubTest(_L("Password 1"),1); - StartMainPasswordTestL(); - iState++; - return(EContinue); - case 1: - LogSubTest(_L("Password 2"),2); - StartOnceADayPasswordTestL(); - iState++; - return(EContinue); - default: - return(EFinished); - } - }