lafagnosticuifoundation/cone/tef/TVWASTEP.H
changeset 0 2f259fa3e83a
--- /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 <e32base.h>
+#include <basched.h>
+
+#include <vwsappst.h>
+#include <viewcli.h>
+
+#include <coeview.h>
+#include <coecntrl.h>
+
+#include <test/testexecutestepbase.h>
+#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<CTestView> 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
+