diff -r 000000000000 -r 2f259fa3e83a lafagnosticuifoundation/cone/tef/TVWASTEP.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lafagnosticuifoundation/cone/tef/TVWASTEP.H Tue Feb 02 01:00:49 2010 +0200 @@ -0,0 +1,360 @@ +// Copyright (c) 1999-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 +*/ + +#if !defined(__TVWASTEP_H__) +#define __TVWASTEP_H__ + +#include +#include + +#include +#include + +#include +#include + +#include +#include "TMenuTestServer.h" +#include "appfwk_test_AppUi.h" + + + +/************************************************************* + ** + ** CViewActivationObserver - implements the MCoeViewActivationObserver interface + ** + *************************************************************/ + +class CViewActivationObserver : public CBase, public MCoeViewActivationObserver + { +public: + static CViewActivationObserver* NewL(TInt aObserverId); + ~CViewActivationObserver(); +private: + CViewActivationObserver(TInt aObserverId); +public: // From MCoeViewDeactivationObserver. + void HandleViewActivation (const TVwsViewId& aNewlyActivatedViewId,const TVwsViewId& aViewIdToBeDeactivated); +private: + TInt iObserverId; + }; + + + +/************************************************************* + ** + ** CViewDeactivationObserver - implements the MCoeViewDeactivationObserver interface + ** + *************************************************************/ + +class CViewDeactivationObserver : public CBase, public MCoeViewDeactivationObserver + { +public: + static CViewDeactivationObserver* NewL(TInt aObserverId); + ~CViewDeactivationObserver(); +private: + CViewDeactivationObserver(TInt aObserverId); +public: // From MCoeViewDeactivationObserver. + void HandleViewDeactivation (const TVwsViewId& aViewIdToBeDeactivated,const TVwsViewId& aNewlyActivatedViewId); +private: + TInt iObserverId; + }; + + + +/************************************************************* + ** + ** CViewActivationObserver_Notify - implements the MCoeViewActivationObserver interface for notifications only + ** + *************************************************************/ + +class CViewActivationObserver_Notify : public CBase, public MCoeViewActivationObserver + { +public: + static CViewActivationObserver_Notify* NewL(); + ~CViewActivationObserver_Notify(); +private: + CViewActivationObserver_Notify(); +public: // From MCoeViewDeactivationObserver. + void HandleViewActivation (const TVwsViewId& aNewlyActivatedViewId,const TVwsViewId& aViewIdToBeDeactivated); + }; + + + +/************************************************************* + ** + ** CViewDeactivationObserver_Notify - implements the MCoeViewDeactivationObserver interface for notifications only + ** + *************************************************************/ + +class CViewDeactivationObserver_Notify : public CBase, public MCoeViewDeactivationObserver + { +public: + static CViewDeactivationObserver_Notify* NewL(); + ~CViewDeactivationObserver_Notify(); +private: + CViewDeactivationObserver_Notify(); +public: // From MCoeViewDeactivationObserver. + void HandleViewDeactivation (const TVwsViewId& aViewIdToBeDeactivated,const TVwsViewId& aNewlyActivatedViewId); + }; + + + +/************************************************************* + ** + ** CTVwaTestControl + ** + *************************************************************/ +/** + The CTVwaTestControl class implements a test control which processes key events and therefore is suitable for testing + the control stacks of views. +*/ +class CTVwaTestControl : public CCoeControl + { +public: + CTVwaTestControl(TVwsViewId& aViewId, TInt aControlId); + void ConstructL(); + ~CTVwaTestControl(); +private: // framework + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); +private: + TVwsViewId& iViewId; + TInt iControlId; + }; + + + +/************************************************************* + ** + ** CAppUiTestControl + ** + *************************************************************/ +/** + The CAppUiTestControl class implements a test control which only processes key events. + It is designed to be put on the appUi control stack at a low priority. + It should always receive key events after the normal priority controls in the active view. +*/ +class CAppUiTestControl : public CCoeControl + { +public: + CAppUiTestControl(); + void ConstructL(); + ~CAppUiTestControl(); +private: // framework + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); +private: + }; + + +class CCoeAppUi; + + + +/************************************************************* + ** + ** CTestView + ** + *************************************************************/ +/** + The CTestView class implements the MCoeView interface, provides wrappers onto the CCoeAppUi view management methods + and provides containment for two controls which process key events and test the control stack associated with the view. +*/ +class CTestView : public CBase, public MCoeView + { +public: + // 'Stub' construction - scondary construction should be delayed until first activation + CTestView(const TVwsViewId& aViewId,CCoeAppUi& aAppUi); + + void ConstructL(); + ~CTestView(); +public: // view activation + void ActivateViewL(const TVwsViewId& aViewId); + void ActivateViewL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC16& aCustomMessage); +public: // view management + void AddToStackL(CCoeControl* aControl,TInt aPriority=ECoeStackPriorityDefault,TInt aStackingFlags=ECoeStackFlagStandard); + void RemoveFromStack(CCoeControl* aControl); + void UpdateStackedControlFlags(CCoeControl* aControl,TInt aFlags,TInt aMask); + void UpdateControlStackingFlags(); + void UpdateControlPriorityL(); +public: // From MCoeView. + TVwsViewId ViewId() const; +private: + void DoDeactivate(); + void DoActivateNarrowL(const TVwsViewId& aPrevViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage); + void DoActivateL(const TVwsViewId& aPrevViewId,TUid aCustomMessageId,const TDesC16& aCustomMessage); +private: // From MCoeView. + void ViewActivatedL(const TVwsViewId& aPrevViewId,TUid aCustomMessageId,const TDesC8& aCustomMessage); + void ViewDeactivated(); + TVwsViewIdAndMessage ViewScreenDeviceChangedL(); + void ViewConstructL(); +private: + CCoeAppUi& iAppUi; + TVwsViewId iViewId; + CTVwaTestControl* iTopControl; + CTVwaTestControl* iBottomControl; + }; + + +class CTestDriver; + + +/************************************************************* + ** + ** CTVwaTestAppUi + ** + *************************************************************/ +/** + The CTVwaTestAppUi class is an appUi that manages an array of CTestViews and provides a method to activate views passing + a Unicode message descriptor. +*/ +class CTVwaTestAppUi : public CCoeAppUi + { +public: + CTVwaTestAppUi(); + ~CTVwaTestAppUi(); + void ConstructL(CTmsTestStep* aStep, CCoeAppUi* aPrevious=NULL); +public: // view activation + void ActivateViewL(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC16& aCustomMessage); +public: // view management + void AddViewL(CTestView* aView); + void RemoveView(CTestView& aView); + CTestView* ActiveView() const; + CTestView* ViewById(const TVwsViewId& aViewId) const; +private: + TInt TestAppUiViewIndex(CTestView& aView) const; + TInt TestAppUiViewIndex(const TVwsViewId& aViewId) const; +private: // from CCoeAppUi + TKeyResponse HandleKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); +private: + CTestDriver* iDriver; + CArrayPtrFlat iAppViewArray; + CAppUiTestControl* iControl; + }; + + + + +class CPeriodic; + +/************************************************************* + ** + ** CTestDriver - runs a series of tests on timer callback + ** + *************************************************************/ + +enum TestState + { + EInvalid, + ENext, + EFinished + }; + +const TInt KTVwaStandardAppUiId=0; +const TInt KTVwaEmbeddedAppUiId=1; + +const TInt KExitTestNum=0xEEEE; + +const TInt KUpdateInterval=100000; // 0.2 seconds + +class CTestDriver : public CBase + { +public: + CTestDriver(CCoeAppUi& aAppUi, CTmsTestStep* aStep); + ~CTestDriver(); + void ConstructL(); +public: // auto test methods + TestState DoTestL(); + void RunTestL(); + static TInt UpdateTimerCallBackL(TAny* aThis); + void Exit(); +public: + CTestExecuteLogger& Logger() {return iStep->Logger();} +private: + TInt AddView(const TVwsViewId& aViewId,TInt aAppUiId=KTVwaStandardAppUiId); + TInt ActivateView(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC16& aCustomMessage,TInt aAppUiId=KTVwaStandardAppUiId); + TInt RemoveView(const TVwsViewId& aViewId,TInt aAppUiId=KTVwaStandardAppUiId); + TInt SimulateKeyEvent(const TInt aCode); + TInt NotifyActivation(); + TInt NotifyDeactivation(); + TInt RegisterAndDeregisterView(); + TInt NotifyActivationWithViewId(const TVwsViewId& aViewId); + TInt NotifyDeactivationWithViewId(const TVwsViewId& aViewId); + TInt UpdateActiveViewStackingFlags(); + TInt UpdateActiveViewPriorities(); + TInt AddApplicationView(); + TInt ActivateApplicationView(); + TInt AddViewDeactivationObserverOne(); + TInt RemoveViewDeactivationObserverOne(); + TInt AddViewDeactivationObserverTwo(); + TInt DeactivateActiveView(); + TInt AddViewActivationObserverOne(); + TInt RemoveViewActivationObserverOne(); + TInt AddViewActivationObserverTwo(); + TInt RemoveApplicationView(); + TInt SetDefaultView(const TVwsViewId& aViewId,TInt aAppUiId=KTVwaStandardAppUiId); + TInt GetDefaultView(TVwsViewId& aViewId,TInt aAppUiId=KTVwaStandardAppUiId); + TInt ActivateTopView(TInt aAppUiId=KTVwaStandardAppUiId); + TInt ConstructEmbeddedAppUi(); + TInt DestroyEmbeddedAppUi(); + TInt TestActivateViewOOM(const TVwsViewId& aViewId,TUid aCustomMessageId,const TDesC16& aCustomMessage,TInt aAppUiId=KTVwaStandardAppUiId); + TInt TestAddViewOOML(const TVwsViewId& aViewId,TInt aAppUiId=KTVwaStandardAppUiId); + TInt TestRemoveViewActivationObserverL(); +private: + inline CTVwaTestAppUi& AppUi(TInt aAppUiId=KTVwaStandardAppUiId); +private: + TInt iTestNum; + CPeriodic* iUpdateTimer; + CCoeAppUi& iAppUi; + CCoeAppUi* iAppUiEmbedded; + CViewActivationObserver* iViewActivationObserverOne; + CViewDeactivationObserver* iViewDeactivationObserverOne; + CViewActivationObserver* iViewActivationObserverTwo; + CViewDeactivationObserver* iViewDeactivationObserverTwo; + CViewActivationObserver_Notify* iViewActivationObserver_Notify; + CViewDeactivationObserver_Notify* iViewDeactivationObserver_Notify; + CTmsTestStep* iStep; + }; + +inline CTVwaTestAppUi& CTestDriver::AppUi(TInt aAppUiId) + { return (aAppUiId==KTVwaEmbeddedAppUiId) ? STATIC_CAST(CTVwaTestAppUi&,*iAppUiEmbedded) : STATIC_CAST(CTVwaTestAppUi&,iAppUi); } + + + +/************************************************************* + ** + ** CTVwaStep + ** + *************************************************************/ + +class CTVwaStep : public CTmsTestStep + { +public: + CTVwaStep(); + ~CTVwaStep(); + virtual TVerdict doTestStepL(); + void ConstructAppL(CCoeEnv* aCoe); +private: + }; + + +_LIT(KTVwaStep,"TVwa"); + +#endif +