diff -r 000000000000 -r 15bf7259bb7c uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuitetestcase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiacceltk/hitchcock/tsrc/alfperfapp/src/alfperfappsuitetestcase.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,193 @@ +/* +* Copyright (c) 2008 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: +* +*/ + + +// INCLUDES +#include + +#include +#include +#include +#include + +#include "AlfPerfApp.hrh" +#include "AlfPerfAppAppUi.h" +#include "AlfPerfAppSuiteTestCase.h" +#include "AlfPerfAppSuiteTestCaseScroll.h" + +// ============================= MEMBER FUNCTIONS ============================== + +CAlfPerfAppSuiteTestCase* CAlfPerfAppSuiteTestCase::NewL( TInt aCaseId, TInt aSequenceIndex ) + { + if ( !IsSupported( aCaseId ) ) + { + User::Leave( KErrNotSupported ); + } + + CAlfPerfAppSuiteTestCase* self = new (ELeave) CAlfPerfAppSuiteTestCase( aCaseId, aSequenceIndex ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +CAlfPerfAppSuiteTestCase::~CAlfPerfAppSuiteTestCase() + { + if ( iEnv && iControl ) + { + iControl->CancelExecution(); + iEnv->DeleteControlGroup( KAlfPerfAppSuiteControlGroup ); + } + } + +CAlfPerfAppSuiteTestCase::CAlfPerfAppSuiteTestCase( TInt aCaseId, TInt aSequenceIndex ) + :CAlfPerfAppTestCase(aSequenceIndex), iCaseId( aCaseId ) + { + + } + +void CAlfPerfAppSuiteTestCase::ConstructL() + { + + } + +void CAlfPerfAppSuiteTestCase::SetupL( + CAlfEnv& aEnv, + const TRect& /*aVisibleArea*/, + TRequestStatus& aStatus ) + { + iEnv = &aEnv; + iStatus = &aStatus; + + // Set screen orientation + CAlfPerfAppAppUi* appUi = (CAlfPerfAppAppUi*) EikonEnv()->AppUi(); + switch ( iCaseId ) + { + case EAlfPerfAppSuiteCaseScrollContinuousPortrait: + case EAlfPerfAppSuiteCaseScrollIncrementalPortrait: + appUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationPortrait ); + break; + + case EAlfPerfAppSuiteCaseScrollContinuousLandscape: + case EAlfPerfAppSuiteCaseScrollIncrementalLandscape: + appUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationLandscape ); + break; + + default: + User::Leave( KErrNotSupported ); + break; + } + + + // Create new fullscreen display + TRect rect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EApplicationWindow, + rect ); + + iEnv->SetFullScreenDrawing( ETrue ); + CAlfDisplay& display = + iEnv->NewDisplayL( rect, CAlfEnv::ENewDisplayFullScreen ); + + display.SetClearBackgroundL( CAlfDisplay::EClearWithSkinBackground ); + + // Create control group + CAlfControlGroup& group = + iEnv->NewControlGroupL( KAlfPerfAppSuiteControlGroup ); + + // Create testcase control + CAlfPerfAppSuiteTestCaseControl* control = NULL; + switch ( iCaseId ) + { + case EAlfPerfAppSuiteCaseScrollContinuousPortrait: + case EAlfPerfAppSuiteCaseScrollIncrementalPortrait: + case EAlfPerfAppSuiteCaseScrollContinuousLandscape: + case EAlfPerfAppSuiteCaseScrollIncrementalLandscape: + control = new (ELeave) CAlfPerfAppSuiteTestCaseScroll(this); + break; + + default: + User::Leave( KErrNotSupported ); + break; + } + + CleanupStack::PushL( control ); + control->ConstructL( *iEnv, iCaseId, rect ); + group.AppendL( control ); // ownership passed to control group. + iControl = control; + CleanupStack::Pop( control ); + + // Ready for showing + display.Roster().ShowL( group ); + + // ImagesLoaded() send the status completion. + } + +void CAlfPerfAppSuiteTestCase::ExecuteL( TRequestStatus& aStatus ) + { + // SetupL must have been called first. + __ASSERT_ALWAYS( iEnv, User::Invariant() ); + __ASSERT_ALWAYS( iControl, User::Invariant() ); + + iControl->StartExecuteL( aStatus ); + } + +void CAlfPerfAppSuiteTestCase::TearDown() + { + // Execution side will delete CAlfEnv, so it will delete everything + // related to this. + iEnv = NULL; + iControl = NULL; + + // Return orientation back to normal + CAlfPerfAppAppUi* appUi = (CAlfPerfAppAppUi*) EikonEnv()->AppUi(); + TRAP_IGNORE(appUi->SetOrientationL( CAknAppUiBase::EAppUiOrientationUnspecified )); + } + +void CAlfPerfAppSuiteTestCase::ImagesLoaded( TInt aErrorCode ) + { + if( iStatus ) + { + CAlfPerfAppTestCase::CompleteNow( *iStatus, aErrorCode ); + iStatus = 0; + } + } + +void CAlfPerfAppSuiteTestCase::HandleVisibleAreaChange( const TRect& aRect ) + { + if ( iEnv && iControl ) + { + if ( iEnv->DisplayCount() > 0 ) + { + iEnv->PrimaryDisplay().SetVisibleArea( aRect ); + } + iControl->SetVisibleArea( aRect ); + } + } + +TInt CAlfPerfAppSuiteTestCase::CaseID() + { + return iCaseId; + } + +TBool CAlfPerfAppSuiteTestCase::IsSupported( TInt aCaseId ) + { + return aCaseId > EAlfPerfAppSuiteMin && + aCaseId < EAlfPerfAppSuiteMax; + } + +// end of file