--- a/stif/StifTFwIf/src/UIEngineContainer.cpp Tue Jul 06 16:05:13 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,612 +0,0 @@
-/*
-* Copyright (c) 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: CUIEngine: This object executes test cases from STIF
-* Test Framework.
-*
-*/
-
-// INCLUDE FILES
-#include <e32base.h>
-#include <e32svr.h>
-#include <stifinternal/UIEngine.h>
-#include <stifinternal/UIEngineContainer.h>
-#include "UIEnginePrinter.h"
-#include "UIEngineRunner.h"
-#include "UIEngineRemote.h"
-#include "Logging.h"
-
-
-// EXTERNAL DATA STRUCTURES
-// None
-
-// EXTERNAL FUNCTION PROTOTYPES
-// None
-
-// CONSTANTS
-// None
-
-// MACROS
-#ifdef LOGGER
-#undef LOGGER
-#endif
-#define LOGGER iUIEngine->iLogger
-
-// LOCAL CONSTANTS AND MACROS
-// None
-
-// MODULE DATA STRUCTURES
-// None
-
-// LOCAL FUNCTION PROTOTYPES
-// None
-
-// FORWARD DECLARATIONS
-// None
-
-// ==================== LOCAL FUNCTIONS =======================================
-// None
-
-// ================= MEMBER FUNCTIONS =========================================
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: CUIEngineContainer
-
- Description: Default constructor
-
- C++ default constructor can NOT contain any code, that
- might leave.
-
- Parameters: CUIEngine* aUIEngine: in: Pointer to CUIEngine interface
- TTestInfo& aTestInfo: in: Test information
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CUIEngineContainer::CUIEngineContainer( CUIEngine* aUIEngine,
- const TTestInfo& aTestInfo,
- RTestEngineServer& aTestEngineServ,
- RTestEngine& aTestEngine ) :
- iUIEngine( aUIEngine ),
- iTestInfo( aTestInfo ),
- iTestInfoPckg( iTestInfo ),
- iState( ENotStarted )
- {
- __TRACE( KPrint, ( _L( "CUIEngineContainer::CUIEngineContainer.") ) );
-
- // Get handles to test engine
- iTestEngineServ = aTestEngineServ;
- iTestEngine = aTestEngine;
-
- __ASSERT_ALWAYS( aUIEngine, User::Panic( _L("Null pointer"), KErrGeneral ) );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: ConstructL
-
- Description: Symbian OS second phase constructor
-
- Symbian OS default constructor can leave
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: Leaves if called Open method returns error
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIEngineContainer::ConstructL()
- {
- __TRACE( KPrint, ( _L( "CUIEngineContainer::ConstructL.") ) );
-
- // Open test case
- User::LeaveIfError( iTestCase.Open( iTestEngineServ, iTestInfoPckg ) );
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: NewL
-
- Description: Two-phased constructor.
-
- Parameters: CUIEngine* aUIEngine: in: pointer to CUIEngine Interface
- TTestInfo& aTestInfo: in: Test info
-
- Return Values: CUIEngineRunner* : pointer to created runner object
-
- Errors/Exceptions: Leaves if memory allocation for CUIEngineRunner fails
- Leaves if ConstructL leaves
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CUIEngineContainer* CUIEngineContainer::NewL( CUIEngine* aUIEngine,
- const TTestInfo& aTestInfo,
- RTestEngineServer& aTestEngineServ,
- RTestEngine& aTestEngine )
- {
- CUIEngineContainer* self =
- new ( ELeave ) CUIEngineContainer( aUIEngine,
- aTestInfo,
- aTestEngineServ,
- aTestEngine );
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop();
- return self;
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: ~CUIEngineContainer
-
- Description: Destructor
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-CUIEngineContainer::~CUIEngineContainer()
- {
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::~CUIEngineContainer.") ) );
-
- delete iPrinter;
- delete iRunner;
- delete iRemote;
-
- // Close test case
- iTestCase.Close();
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: StartContinerL
-
- Description: StartContinerL call CUIEngineRunner to starting test case execution
-
- Parameters: None
-
- Return Values: TInt KErrNone: Always returned KErrNone
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIEngineContainer::StartContainerL()
- {
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::StartContainerL. Running test case: %S"),
- &( iTestInfo.iTestCaseInfo.iTitle ) ) );
-
- // Start printer
- iPrinter = CUIEnginePrinter::NewL( this );
- iPrinter->StartL( iTestCase );
-
- // Start remote
- iRemote = CUIEngineRemote::NewL( this );
- iRemote->StartL( iTestCase );
-
- // Start runner
- iRunner = CUIEngineRunner::NewL( this );
- iRunner->StartL( iTestCase );
-
- // Update state of test case
- iState = ERunning;
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::StartContainerL: started") ) );
-
- return KErrNone;
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: CancelTest
-
- Description: CancelTest cancels test case execution
-
- Parameters: None
-
- Return Values: TInt KErrNone: Always returned KErrNone
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIEngineContainer::CancelTest()
- {
-
- if ( iState == ERunning || iState == EPaused )
- {
- __TRACE( KPrint, ( _L( "CUIEngineContainer::CancelTest") ) );
-
- // Cancel test case execution
- iTestCase.CancelAsyncRequest( ETestCaseRunTestCase );
-
- }
-
- return KErrNone;
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: PauseTest
-
- Description: PauseTest pauses test case execution
-
- Parameters: None
-
- Return Values: Symbian OS error: Error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIEngineContainer::PauseTest()
- {
- TInt ret(KErrNone);
-
- if ( iState == ERunning )
- {
- ret = iTestCase.Pause();
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::PauseTest. Ret = %d"), ret ) );
-
- if ( ret == KErrNone)
- {
- iState = EPaused;
- }
- }
-
- return ret;
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: ResumeTest
-
- Description: PauseTest resumes test case execution
-
- Parameters: None
-
- Return Values: Symbian OS error: Error code
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-EXPORT_C TInt CUIEngineContainer::ResumeTest()
- {
- TInt ret(KErrNone);
-
- if ( iState == EPaused )
- {
- ret = iTestCase.Resume();
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::ResumeTest. Ret = %d"), ret ) );
-
- if ( ret == KErrNone)
- {
- iState = ERunning;
- }
- }
-
- return ret;
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: TestCaseExecuted
-
- Description: TestCaseExecuted informs that test case is executed
-
- Parameters: TFullTestResult& aFullTestResult: in: Full information of
- test case execution. Includes also test case results
-
- Return Values: None
-
- Errors/Exceptions: TInt KErrNone: Always returned KErrNone
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIEngineContainer::TestCaseExecuted( TFullTestResult& aFullTestResult,
- TInt aStatus )
- {
-
- iState = EExecuted;
-
- // Set execution result
- if( ( KErrNone != aStatus ) &&
- ( aFullTestResult.iCaseExecutionResultCode == KErrNone ) &&
- ( aFullTestResult.iTestResult.iResult == KErrNone ) )
- {
- aFullTestResult.iTestResult.iResultDes.Copy(
- _L("Completed with error") );
- aFullTestResult.iCaseExecutionResultType =
- TFullTestResult::ECaseErrorFromModule;
- aFullTestResult.iCaseExecutionResultCode = aStatus;
- }
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::TestCaseExecuted.") ) );
-
- // Test execution is not completed before all prints are
- // delivered to UI.
- if( !iPrinter->IsRunning() ||
- ( aStatus != KErrNone ) ||
- ( aFullTestResult.iCaseExecutionResultCode != KErrNone ) )
- {
- // Call TestExecuted of CUIEngine interface
- iUIEngine->TestExecuted(this, aFullTestResult);
- // 1. This method is called from CUIEngineRunner::RunL() and it is
- // last operation => no other call to CUIEngineContainer class.
- // 2. TestExecuted() method takes this pointer. Inside TestExecuted()
- // will be deleted the this pointer => iUIEngine not valid anymore.
- // 1 and 2 => Do not handle any CUIEngineContainer variable here
- // because memory is not valid anymore.
- //e.g. iState = EFinished; // illegal operation here->crash
-
- }
-
- }
-
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: PrintProgress
-
- Description: PrintProgress prints information from test case
-
- Parameters: TTestProgress& aProgress: in: Progress info
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIEngineContainer::PrintProgress( TTestProgress& aProgress )
- {
- if( iState == ERunning )
- {
- // Only running cases may print
- iUIEngine->PrintProg( this, aProgress );
- }
- else
- {
- __TRACE( KPrint,
- ( _L("%S: %S"), &aProgress.iDescription, &aProgress.iText ) );
- }
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: PrintsDone
-
- Description: Signals that printing is completed
-
- Parameters: None
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIEngineContainer::PrintsDone()
- {
- if( iState == EExecuted )
- {
- // Call TestExecuted of CUIEngine interface
- iUIEngine->TestExecuted(this, iRunner->FullResult() );
- }
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: RemoteSend
-
- Description: RemoteSend forwards remote protocol messages from master
-
- Parameters:
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-void CUIEngineContainer::RemoteSend( const TDesC& aRemoteMsg,
- TInt /* aStatus */ )
- {
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::RemoteSend.") ) );
-
- // Save master id if doesn't exists already
- if( iMasterId == 0 )
- {
- CStifTFwIfProt* msg = NULL;
- TRAPD( err,
- msg = CStifTFwIfProt::NewL();
- msg->SetL( aRemoteMsg );
- );
- if( err != KErrNone )
- {
- delete msg;
- // oom
- return;
- }
- iMasterId = msg->SrcId();
- delete msg;
- }
-
- // Call AtsSend of CUIEngine interface
- iUIEngine->RemoteMsg( this, aRemoteMsg );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: GoingToReboot
-
- Description: Inform UI that phone is going to rebooted
-
- Parameters:
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIEngineContainer::GoingToReboot( TRequestStatus& aStatus )
- {
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::GoingToReboot.") ) );
-
- // Forward
- return iUIEngine->GoingToReboot( this, aStatus );
-
- }
-
-/*
--------------------------------------------------------------------------------
-
- Class: CUIEngineContainer
-
- Method: RemoteReceive
-
- Description: RemoteReceive forwards remote protocol messages to master
-
- Parameters:
-
- Return Values: None
-
- Errors/Exceptions: None
-
- Status: Draft
-
--------------------------------------------------------------------------------
-*/
-TInt CUIEngineContainer::RemoteReceive( const TDesC& aRemoteMsg )
- {
-
- __TRACE( KPrint, ( _L( "CUIEngineContainer::RemoteReceive.") ) );
-
- // Check master test case status, FIX110
- if( iState != ERunning )
- {
- __TRACE( KError, ( _L( "Master case not running") ) );
-
- return KErrNotFound;
- }
-
- HBufC8* buf = HBufC8::New( aRemoteMsg.Length() );
- if( buf == NULL )
- {
- return KErrNoMemory;
- }
-
- TPtr8 tmp = buf->Des();
- tmp.Copy( aRemoteMsg );
- TInt ret = iTestCase.NotifyRemoteMsg( tmp, EStifCmdReceive );
- delete buf;
-
- return ret;
-
- }
-
-// ================= OTHER EXPORTED FUNCTIONS =================================
-
-// End of File