sl@0: // Copyright (c) 2007-2010 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include sl@0: #include "testvideoplayer2.h" sl@0: sl@0: #ifdef SYMBIAN_BUILD_GCE sl@0: #include sl@0: #endif sl@0: sl@0: const TInt KSettingsAndAlignmentTest = 3; sl@0: sl@0: // sl@0: // RTestVclntPlayAviFile sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2PlayFile::Constructor sl@0: */ sl@0: RTestVclnt2PlayFile::RTestVclnt2PlayFile(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2AviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2PlayFile::NewL sl@0: */ sl@0: RTestVclnt2PlayFile* RTestVclnt2PlayFile::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2PlayFile* self = new (ELeave) RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2PlayFile::DoTestStepPreambleL sl@0: */ sl@0: TVerdict RTestVclnt2PlayFile::DoTestStepPreambleL() sl@0: { sl@0: return RTestVclnt2AviPlayerStep::DoTestStepPreambleL(); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2PlayFile::DoTestStepPostambleL sl@0: */ sl@0: TVerdict RTestVclnt2PlayFile::DoTestStepPostambleL() sl@0: { sl@0: return RTestVclnt2AviPlayerStep::DoTestStepPostambleL(); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2PlayFile::FsmL sl@0: */ sl@0: void RTestVclnt2PlayFile::FsmL(TVclntTestPlayEvents aEventCode) sl@0: { sl@0: if (FsmCheck(aEventCode)) sl@0: { sl@0: switch (aEventCode) sl@0: { sl@0: case EVPIdle: sl@0: HandleIdleL(); sl@0: break; sl@0: sl@0: case EVPOpenComplete: sl@0: HandleOpenCompleteL(); sl@0: break; sl@0: sl@0: case EVPPrepareComplete: sl@0: HandlePrepareCompleteL(); sl@0: break; sl@0: sl@0: case EVPPlayComplete: sl@0: HandlePlayCompleteL(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: void RTestVclnt2PlayFile::HandleIdleL() sl@0: { sl@0: // Open iVideoPlayer sl@0: INFO_PRINTF2(_L("iVideoPlayer2->OpenFileL() %S"), &iFilename); sl@0: iVideoPlayer2->OpenFileL(iFilename, KMmfTestAviPlayControllerUid); sl@0: PrepareState(EVPOpenComplete, KErrNone); sl@0: } sl@0: sl@0: void RTestVclnt2PlayFile::HandleOpenCompleteL() sl@0: { sl@0: // Prepare iVideoPlayer2 sl@0: INFO_PRINTF1(_L("iVideoPlayer2->Prepare()")); sl@0: iVideoPlayer2->Prepare(); sl@0: PrepareState(EVPPrepareComplete, KErrNone); sl@0: } sl@0: sl@0: void RTestVclnt2PlayFile::HandlePrepareCompleteL() sl@0: { sl@0: // Add display window using default values - ie. video extent & window clipping sl@0: // defaulted to whole window sl@0: INFO_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL()")); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: } sl@0: sl@0: void RTestVclnt2PlayFile::HandlePlayCompleteL() sl@0: { sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: void RTestVclnt2PlayFile::StartPlayback() sl@0: { sl@0: iError = KErrTimedOut; sl@0: INFO_PRINTF1(_L("iVideoPlayer2->Play()")); sl@0: PrepareState(EVPPlayComplete, KErrNone); sl@0: iVideoPlayer2->Play(); sl@0: } sl@0: sl@0: #ifdef SYMBIAN_BUILD_GCE sl@0: // sl@0: // RTestMediaClientVideoDisplay sl@0: // sl@0: sl@0: /** sl@0: * RTestMediaClientVideoDisplay::Constructor sl@0: */ sl@0: sl@0: sl@0: RTestMediaClientVideoDisplay::RTestMediaClientVideoDisplay(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2AviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestMediaClientVideoDisplay::NewL sl@0: */ sl@0: sl@0: RTestMediaClientVideoDisplay* RTestMediaClientVideoDisplay::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestMediaClientVideoDisplay* self = new (ELeave) RTestMediaClientVideoDisplay(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestMediaClientVideoDisplay::DoTestStepPreambleL sl@0: */ sl@0: sl@0: TVerdict RTestMediaClientVideoDisplay::DoTestStepPreambleL() sl@0: { sl@0: return RTestVclnt2AviPlayerStep::DoTestStepPreambleL(); sl@0: } sl@0: sl@0: /** sl@0: * RTestMediaClientVideoDisplay::DoTestStepPostambleL sl@0: */ sl@0: sl@0: TVerdict RTestMediaClientVideoDisplay::DoTestStepPostambleL() sl@0: { sl@0: return RTestVclnt2AviPlayerStep::DoTestStepPostambleL(); sl@0: } sl@0: sl@0: /** sl@0: * RTestMediaClientVideoDisplay::FsmL sl@0: */ sl@0: void RTestMediaClientVideoDisplay::FsmL(TVclntTestPlayEvents aEventCode) sl@0: { sl@0: if (FsmCheck(aEventCode)) sl@0: { sl@0: switch (aEventCode) sl@0: { sl@0: case EVPIdle: sl@0: HandleIdleL(); sl@0: break; sl@0: sl@0: case EVPOpenComplete: sl@0: HandleOpenCompleteL(); sl@0: break; sl@0: sl@0: case EVPPrepareComplete: sl@0: HandlePrepareCompleteL(); sl@0: break; sl@0: sl@0: case EVPPlayComplete: sl@0: HandlePlayCompleteL(); sl@0: break; sl@0: } sl@0: } sl@0: } sl@0: sl@0: void RTestMediaClientVideoDisplay::HandleIdleL() sl@0: { sl@0: // Open iVideoPlayer sl@0: INFO_PRINTF2(_L("iVideoPlayer2->OpenFileL() %S"), &iFilename); sl@0: iVideoPlayer2->OpenFileL(iFilename, KMmfTestAviPlayControllerUid); sl@0: PrepareState(EVPOpenComplete, KErrNone); sl@0: } sl@0: sl@0: void RTestMediaClientVideoDisplay::HandleOpenCompleteL() sl@0: { sl@0: // Prepare iVideoPlayer2 sl@0: INFO_PRINTF1(_L("iVideoPlayer2->Prepare()")); sl@0: iVideoPlayer2->Prepare(); sl@0: PrepareState(EVPPrepareComplete, KErrNone); sl@0: } sl@0: sl@0: void RTestMediaClientVideoDisplay::HandlePrepareCompleteL() sl@0: { sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: sl@0: TInt displayId = iScreen->GetScreenNumber(); sl@0: TRect clipRect = TRect(iWindow->Size()); sl@0: TRect cropRegion = clipRect; sl@0: sl@0: // ========================== sl@0: sl@0: iMediaClientVideoDisplay = CMediaClientVideoDisplay::NewL(displayId); sl@0: sl@0: RSurfaceManager surfaceManager; sl@0: User::LeaveIfError(surfaceManager.Open()); sl@0: sl@0: RSurfaceManager::TSurfaceCreationAttributesBuf bf; sl@0: RSurfaceManager::TSurfaceCreationAttributes& b=bf(); sl@0: b.iSize.iWidth = 320; sl@0: b.iSize.iHeight = 240; sl@0: b.iBuffers = 1; sl@0: b.iPixelFormat = EUidPixelFormatXRGB_8888; sl@0: b.iStride = 320 * 4; sl@0: b.iOffsetToFirstBuffer = 0; sl@0: b.iAlignment=4; sl@0: b.iContiguous=ETrue; sl@0: sl@0: TRect cropRect(0, 0, 320, 240); sl@0: TVideoAspectRatio par(1,2); sl@0: TSurfaceId surfaceId; sl@0: sl@0: User::LeaveIfError(surfaceManager.CreateSurface(bf, surfaceId)); sl@0: sl@0: iMediaClientVideoDisplay->SurfaceCreated(surfaceId, cropRect, par, cropRegion); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->SurfaceCreated()")); sl@0: sl@0: delete iMediaClientVideoDisplay; sl@0: iMediaClientVideoDisplay = NULL; sl@0: sl@0: // ================== sl@0: sl@0: iMediaClientVideoDisplay = CMediaClientVideoDisplay::NewL(displayId); sl@0: sl@0: TRect videoExtent = clipRect; sl@0: TReal32 scaleWidth(100.0f); sl@0: TReal32 scaleHeight(100.0f); sl@0: TInt horizPos(EHorizontalAlignCenter); sl@0: TInt vertPos(EVerticalAlignCenter); sl@0: sl@0: TReal32 widthPercentage(50.0f); sl@0: TReal32 heightPercentage(50.0f); sl@0: TReal32 widthP; sl@0: TReal32 heightP; sl@0: RWindow newWindow; sl@0: sl@0: // Check for invalid rotation when adding new window sl@0: INFO_PRINTF1(_L("Testing invalid rotations for AddDisplayWindowL")); sl@0: TInt err = KErrNone; sl@0: TVideoRotation rotation = static_cast(-1); sl@0: TRAP(err, iMediaClientVideoDisplay->AddDisplayWindowL(iWindow, clipRect, cropRegion, videoExtent, scaleWidth, scaleHeight, rotation, EAutoScaleBestFit, horizPos, vertPos, iWindow)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() did not leave with KErrArgument for negative rotation")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: rotation = static_cast(4); sl@0: TRAP(err, iMediaClientVideoDisplay->AddDisplayWindowL(iWindow, clipRect, cropRegion, videoExtent, scaleWidth, scaleHeight, rotation, EAutoScaleBestFit, horizPos, vertPos, iWindow)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() did not leave with KErrArgument for out of range rotation")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: rotation = EVideoRotationNone; sl@0: sl@0: // Check for invalid autoScaleType when adding new window sl@0: INFO_PRINTF1(_L("Testing invalid autoScaleType for AddDisplayWindowL")); sl@0: TAutoScaleType autoScaleType = static_cast(-1); sl@0: TRAP(err, iMediaClientVideoDisplay->AddDisplayWindowL(iWindow, clipRect, cropRegion, videoExtent, scaleWidth, scaleHeight, rotation, autoScaleType, horizPos, vertPos, iWindow)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() did not leave with KErrArgument for negative scale")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: autoScaleType = static_cast(4); sl@0: TRAP(err, iMediaClientVideoDisplay->AddDisplayWindowL(iWindow, clipRect, cropRegion, videoExtent, scaleWidth, scaleHeight, rotation, autoScaleType, horizPos, vertPos, iWindow)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() did not leave with KErrArgument for out of range scale")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: iMediaClientVideoDisplay->AddDisplayWindowL(iWindow, clipRect, cropRegion, videoExtent, scaleWidth, scaleHeight, rotation, EAutoScaleBestFit, horizPos, vertPos, iWindow); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->AddDisplayWindowL()")); sl@0: sl@0: // Check for invalid rotation when setting rotation for window sl@0: INFO_PRINTF1(_L("Testing invalid rotation for SetRotationL")); sl@0: TVideoRotation videoRotation = static_cast(-1); sl@0: TRAP(err, iMediaClientVideoDisplay->SetRotationL(*iWindow, videoRotation, cropRegion)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetRotationL(window) did not leave with KErrArgument for negative value")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: videoRotation = static_cast(4); sl@0: TRAP(err, iMediaClientVideoDisplay->SetRotationL(*iWindow, videoRotation, cropRegion)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetRotationL(window) did not leave with KErrArgument for out of range value")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: // Check for invalid rotation when setting rotation for all windows sl@0: videoRotation = static_cast(-1); sl@0: TRAP(err, iMediaClientVideoDisplay->SetRotationL(videoRotation, cropRegion)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetRotationL() did not leave with KErrArgument for negative value")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: videoRotation = static_cast(4); sl@0: TRAP(err, iMediaClientVideoDisplay->SetRotationL(videoRotation, cropRegion)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetRotationL() did not leave with KErrArgument for out of range value")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: videoRotation = EVideoRotationClockwise180; sl@0: sl@0: iMediaClientVideoDisplay->SetRotationL(*iWindow, videoRotation, cropRegion); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->SetRotationL()")); sl@0: sl@0: if (iMediaClientVideoDisplay->RotationL(*iWindow) != videoRotation) sl@0: { sl@0: ERR_PRINTF1(_L("iMediaClientVideoDisplay->RotationL() returns an unexpected value. Test aborted.")); sl@0: sl@0: iTestStepResult = EInconclusive; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->RotationL()")); sl@0: } sl@0: sl@0: iMediaClientVideoDisplay->SetScaleFactorL(*iWindow, widthPercentage, heightPercentage, cropRegion); sl@0: iMediaClientVideoDisplay->SetScaleFactorL(widthPercentage, heightPercentage, cropRegion); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->SetScaleFactorL()")); sl@0: sl@0: iMediaClientVideoDisplay->SetRotationL(EVideoRotationClockwise90, cropRegion); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->SetRotationL()")); sl@0: sl@0: iMediaClientVideoDisplay->GetScaleFactorL(*iWindow, widthP, heightP); sl@0: INFO_PRINTF3(_L("iMediaClientVideoDisplay->GetScaleFactorL() %df %df"), &widthP, &heightP); sl@0: sl@0: iMediaClientVideoDisplay->SetVideoExtentL(*iWindow, videoExtent, cropRegion); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->SetVideoExtentL()")); sl@0: sl@0: iMediaClientVideoDisplay->SetWindowClipRectL(*iWindow, clipRect, cropRegion); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->SetWindowClipRectL()")); sl@0: sl@0: // Check for invalid autoScaleType when setting autoScaleType for window sl@0: INFO_PRINTF1(_L("Testing invalid autoScaleType for SetAutoScaleL")); sl@0: autoScaleType = static_cast(-1); sl@0: TRAP(err, iMediaClientVideoDisplay->SetAutoScaleL(*iWindow, autoScaleType, horizPos, vertPos, cropRegion)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetAutoScaleL(window) did not leave with KErrArgument for negative value")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: autoScaleType = static_cast(4); sl@0: TRAP(err, iMediaClientVideoDisplay->SetAutoScaleL(*iWindow, autoScaleType, horizPos, vertPos, cropRegion)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetAutoScaleL(window) did not leave with KErrArgument for out of range value")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: // Check for invalid autoScaleType when setting autoScaleType for all windows sl@0: autoScaleType = static_cast(-1); sl@0: TRAP(err, iMediaClientVideoDisplay->SetAutoScaleL(autoScaleType, horizPos, vertPos, cropRegion)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetAutoScaleL() did not leave with KErrArgument for negative value")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: autoScaleType = static_cast(4); sl@0: TRAP(err, iMediaClientVideoDisplay->SetAutoScaleL(autoScaleType, horizPos, vertPos, cropRegion)); sl@0: if (err != KErrArgument) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetAutoScaleL() did not leave with KErrArgument for out of range value")); sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: iMediaClientVideoDisplay->SetAutoScaleL(EAutoScaleBestFit, horizPos, vertPos, cropRegion); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->SetAutoScaleL()")); sl@0: sl@0: iMediaClientVideoDisplay->RedrawWindows(cropRegion); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->RedrawWindows()")); sl@0: sl@0: iMediaClientVideoDisplay->SurfaceParametersChanged(surfaceId, cropRect, par); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->SurfaceParametersChanged()")); sl@0: sl@0: iMediaClientVideoDisplay->RemoveSurface(); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->ReplaceSurface()")); sl@0: sl@0: iMediaClientVideoDisplay->RemoveDisplayWindow(*iWindow); sl@0: INFO_PRINTF1(_L("iMediaClientVideoDisplay->RemoveDisplayWindow()")); sl@0: sl@0: surfaceManager.CloseSurface(surfaceId); sl@0: surfaceId = TSurfaceId::CreateNullId(); sl@0: surfaceManager.Close(); sl@0: sl@0: delete iMediaClientVideoDisplay; sl@0: iMediaClientVideoDisplay = NULL; sl@0: } sl@0: sl@0: void RTestMediaClientVideoDisplay::HandlePlayCompleteL() sl@0: { sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: void RTestMediaClientVideoDisplay::StartPlayback() sl@0: { sl@0: iError = KErrTimedOut; sl@0: INFO_PRINTF1(_L("iVideoPlayer2->Play()")); sl@0: PrepareState(EVPPlayComplete, KErrNone); sl@0: iVideoPlayer2->Play(); sl@0: } sl@0: sl@0: #endif sl@0: sl@0: // sl@0: // RTestVclnt2PerformActionDuringVideoPlayback sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2PerformActionDuringVideoPlayback::Constructor sl@0: */ sl@0: RTestVclnt2PerformActionDuringVideoPlayback::RTestVclnt2PerformActionDuringVideoPlayback( sl@0: const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2PerformActionDuringVideoPlayback::HandlePlayCompleteL sl@0: */ sl@0: void RTestVclnt2PerformActionDuringVideoPlayback::HandlePlayCompleteL() sl@0: { sl@0: if (iActionError != KErrNone) sl@0: { sl@0: ERR_PRINTF2(_L("Playback event left with error %d."), iActionError); sl@0: iTestStepResult = EFail; sl@0: } sl@0: else sl@0: { sl@0: iTestStepResult = EPass; sl@0: } sl@0: sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2PerformActionDuringVideoPlayback::StartPlayback sl@0: */ sl@0: void RTestVclnt2PerformActionDuringVideoPlayback::StartPlayback() sl@0: { sl@0: RTestVclnt2PlayFile::StartPlayback(); sl@0: sl@0: iActionError = KErrNone; sl@0: TRAP(iActionError, DoThisActionDuringPlaybackL(*iVideoPlayer2)); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2AddWin sl@0: // sl@0: /** sl@0: * RTestVclnt2AddWin::Constructor sl@0: */ sl@0: RTestVclnt2AddWin::RTestVclnt2AddWin(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AddWin::NewL sl@0: */ sl@0: RTestVclnt2AddWin* RTestVclnt2AddWin::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2AddWin* self = new (ELeave) RTestVclnt2AddWin(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AddWin::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2AddWin::HandlePrepareCompleteL() sl@0: { sl@0: // retrieve video size sl@0: TSize videoSize; sl@0: iVideoPlayer2->VideoFrameSizeL(videoSize); sl@0: sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0505")) == 0) sl@0: { sl@0: // create a clipping rect partially out of screen sl@0: TRect windowRect(iWindow->Size()); sl@0: windowRect.SetWidth(windowRect.Width() * 2); sl@0: sl@0: // Add the display window with a partially out of screen clipping rect sl@0: TRAPD(err, iVideoPlayer2->AddDisplayWindowL(iWs, sl@0: *iScreen, sl@0: *iWindow, sl@0: TRect(iWindow->Size()), sl@0: windowRect)); sl@0: if (err != iTestExpectedError) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() leaves with an unexpected error. Test failed.")); sl@0: sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: sl@0: return; sl@0: } sl@0: sl@0: // create a clipping rect completely out of screen sl@0: windowRect.SetRect(TPoint(0, 0), iWindow->Size()); sl@0: windowRect.Move(windowRect.Width() + 10, 0); sl@0: sl@0: // Add the display window with a completely out of screen clipping rect sl@0: TRAP(err, iVideoPlayer2->AddDisplayWindowL(iWs, sl@0: *iScreen, sl@0: *iWindow, sl@0: TRect(iWindow->Size()), sl@0: windowRect)); sl@0: if (err != iTestExpectedError) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() leaves with an unexpected error. Test failed.")); sl@0: sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: sl@0: return; sl@0: } sl@0: else sl@0: { sl@0: // Reset the expected error to KErrNone as all expected failure tests have been completed. sl@0: // Any error that appears after this should fail the test sl@0: iTestExpectedError = KErrNone; sl@0: } sl@0: sl@0: // after failing to add window display with a partially & a completely out of screen sl@0: // clipping rect, proceed to add a valid clipping rect below sl@0: } sl@0: sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0401")) == 0 || sl@0: iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0505")) == 0) sl@0: { sl@0: // shrink both the video & window size by half sl@0: TRect videoRect(videoSize); sl@0: videoRect.SetHeight(videoSize.iHeight / 2); sl@0: videoRect.SetWidth(videoSize.iWidth / 2); sl@0: sl@0: TRect windowRect(iWindow->Size()); sl@0: windowRect.SetHeight(iWindow->Size().iHeight / 2); sl@0: windowRect.SetWidth(iWindow->Size().iWidth / 2); sl@0: sl@0: // ensure the rect is within the boundary of the window sl@0: TRect finalRect(windowRect); sl@0: finalRect.Intersection(videoRect); sl@0: sl@0: // add display window using this valid clipping rect sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, finalRect, finalRect); sl@0: } sl@0: else sl@0: { sl@0: // Invalid test case sl@0: User::Panic(_L("RTestVclnt2AddWin"), KErrArgument); sl@0: } sl@0: sl@0: // Start video playback sl@0: StartPlayback(); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2RemoveWin sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2RemoveWin::Constructor sl@0: */ sl@0: RTestVclnt2RemoveWin::RTestVclnt2RemoveWin(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError, sl@0: TBool aAddBack) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError), sl@0: iAddBack(aAddBack) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2RemoveWin::NewL sl@0: */ sl@0: RTestVclnt2RemoveWin* RTestVclnt2RemoveWin::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError, TBool aAddBack) sl@0: { sl@0: RTestVclnt2RemoveWin* self = new (ELeave) RTestVclnt2RemoveWin(aTestName, aSectName, aKeyName, aExpectedError, aAddBack); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2RemoveWin::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2RemoveWin::HandlePrepareCompleteL() sl@0: { sl@0: // retrieve video size sl@0: TSize videoSize; sl@0: iVideoPlayer2->VideoFrameSizeL(videoSize); sl@0: sl@0: // shrink both the video & window size by half sl@0: TRect videoRect(videoSize); sl@0: videoRect.SetHeight(videoSize.iHeight / 2); sl@0: videoRect.SetWidth(videoSize.iWidth / 2); sl@0: sl@0: TRect windowRect(iWindow->Size()); sl@0: windowRect.SetHeight(iWindow->Size().iHeight / 2); sl@0: windowRect.SetWidth(iWindow->Size().iWidth / 2); sl@0: sl@0: // ensure the rect is within the boundary of the window sl@0: TRect finalRect(windowRect); sl@0: finalRect.Intersection(videoRect); sl@0: sl@0: // add display window using this valid clipping rect sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, finalRect, finalRect); sl@0: sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2RemoveWin::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2RemoveWin::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& aPlayer) sl@0: { sl@0: // Play the video clip using a specific display window & video clipping setting sl@0: // first sl@0: TTimeIntervalMicroSeconds duration = aPlayer.DurationL(); sl@0: sl@0: // After a quarter of the clip's duration sl@0: User::After(duration.Int64() / 4); sl@0: sl@0: // remove the original display sl@0: aPlayer.RemoveDisplayWindow(*iWindow); sl@0: sl@0: sl@0: if (iAddBack) sl@0: { sl@0: // Add the window using default values to continues sl@0: aPlayer.AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: } sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2WinPos sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2WinPos::Constructor sl@0: */ sl@0: RTestVclnt2WinPos::RTestVclnt2WinPos(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2WinPos::NewL sl@0: */ sl@0: RTestVclnt2WinPos* RTestVclnt2WinPos::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2WinPos* self = new (ELeave) RTestVclnt2WinPos(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2WinPos::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2WinPos::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& aPlayer) sl@0: { sl@0: TSize windowSize(iWindow->Size().iWidth / 2, iWindow->Size().iHeight / 2); sl@0: sl@0: // shrink the window clipping rect by half the height & width sl@0: aPlayer.SetWindowClipRectL(*iWindow, TRect(windowSize)); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2VideoExt sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2VideoExt::Constructor sl@0: */ sl@0: RTestVclnt2VideoExt::RTestVclnt2VideoExt(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2VideoExt::NewL sl@0: */ sl@0: RTestVclnt2VideoExt* RTestVclnt2VideoExt::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2VideoExt* self = new (ELeave) RTestVclnt2VideoExt(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2VideoExt::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2VideoExt::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& aPlayer) sl@0: { sl@0: TSize windowSize(iWindow->Size().iWidth / 2, iWindow->Size().iHeight / 2); sl@0: sl@0: // shrink the video extent by half the height & width sl@0: aPlayer.SetVideoExtentL(*iWindow, TRect(windowSize)); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2ClipRect sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2ClipRect::Constructor sl@0: */ sl@0: RTestVclnt2ClipRect::RTestVclnt2ClipRect(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2ClipRect::NewL sl@0: */ sl@0: RTestVclnt2ClipRect* RTestVclnt2ClipRect::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2ClipRect* self sl@0: = new (ELeave) RTestVclnt2ClipRect(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2ClipRect::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2ClipRect::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& aPlayer) sl@0: { sl@0: TRect clipRect; sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0405")) == 0) sl@0: { sl@0: // shrink the current window clipping rect by half the height & width sl@0: clipRect.Resize(iWindow->Size().iWidth / 2, iWindow->Size().iHeight / 2); sl@0: } sl@0: else if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0503")) == 0) sl@0: { sl@0: // grow the current window clipping rect by double the width sl@0: clipRect.Resize(iWindow->Size().iWidth * 2, iWindow->Size().iHeight); sl@0: } sl@0: else if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0504")) == 0) sl@0: { sl@0: // move the current window clipping rect to be out of the window sl@0: clipRect.SetSize(iWindow->Size()); sl@0: clipRect.Move(TPoint(iWindow->Size().iWidth + 1, 0)); sl@0: } sl@0: else sl@0: { sl@0: User::Panic(_L("RTestVclnt2ClipRect"), KErrArgument); sl@0: } sl@0: sl@0: // change the window clipping of the display window sl@0: TRAPD(err, aPlayer.SetWindowClipRectL(*iWindow, clipRect)); sl@0: if (err != iTestExpectedError) sl@0: { sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0503")) == 0 || sl@0: iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0504")) == 0) sl@0: { sl@0: // for negative tests, stop the test if the failure is not expected sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetWindowClipRectL() did not failed as expected. Test failed.")); sl@0: sl@0: iTestStepResult = EInconclusive; sl@0: CActiveScheduler::Stop(); sl@0: sl@0: return; sl@0: } sl@0: else sl@0: { sl@0: // fail only if error is returned for positive tests sl@0: User::LeaveIfError(err); sl@0: } sl@0: } sl@0: else sl@0: { sl@0: // Reset the expected error to KErrNone as all expected failure tests have been completed. sl@0: // Any error that appears after this should fail the test sl@0: iTestExpectedError = KErrNone; sl@0: } sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2Scale sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2Scale::Constructor sl@0: */ sl@0: RTestVclnt2Scale::RTestVclnt2Scale(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Scale::NewL sl@0: */ sl@0: RTestVclnt2Scale* RTestVclnt2Scale::NewL(const TDesC& aTestName, const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2Scale* self = new (ELeave) RTestVclnt2Scale(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Scale::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2Scale::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& aPlayer) sl@0: { sl@0: // Change the scale factor during playback sl@0: aPlayer.SetScaleFactorL(*iWindow, 150, 150); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Scale::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2Scale::HandlePrepareCompleteL() sl@0: { sl@0: // Continue to setup the video utility and then trigger playback sl@0: RTestVclnt2PerformActionDuringVideoPlayback::HandlePrepareCompleteL(); sl@0: sl@0: TReal32 scaleFactor = 50.0; sl@0: sl@0: // set scale factor to less than 100% sl@0: iVideoPlayer2->SetScaleFactorL(*iWindow, scaleFactor, scaleFactor); sl@0: sl@0: // get scale factor sl@0: TReal32 widthScale; sl@0: TReal32 heightScale; sl@0: iVideoPlayer2->GetScaleFactorL(*iWindow, widthScale, heightScale); sl@0: sl@0: if (widthScale != scaleFactor || heightScale != scaleFactor) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->GetScaleFactorL() returns unexpected values. Test aborted.")); sl@0: sl@0: iTestStepResult = EInconclusive; sl@0: CActiveScheduler::Stop(); sl@0: sl@0: return; sl@0: } sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2Viewport sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2Viewport::Constructor sl@0: */ sl@0: RTestVclnt2Viewport::RTestVclnt2Viewport(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: const TSize& aViewportSize, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError), sl@0: iViewportSize(aViewportSize) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Viewport::NewL sl@0: */ sl@0: RTestVclnt2Viewport* RTestVclnt2Viewport::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: const TSize& aViewportSize, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2Viewport* self = new (ELeave) RTestVclnt2Viewport(aTestName, sl@0: aSectName, sl@0: aKeyName, sl@0: aViewportSize, sl@0: aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: void RTestVclnt2Viewport::HandlePrepareCompleteL() sl@0: { sl@0: // retrive original video size sl@0: TSize videoSize; sl@0: iVideoPlayer2->VideoFrameSizeL(videoSize); sl@0: sl@0: // crop the top left quarter of the video sl@0: TRect cropRegion; sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0508")) == 0) sl@0: { sl@0: // Crop the right half of the video sl@0: cropRegion.SetHeight(videoSize.iHeight); sl@0: cropRegion.SetWidth(videoSize.iWidth / 2); sl@0: cropRegion.Move(cropRegion.Width(), 0); sl@0: } sl@0: else sl@0: { sl@0: cropRegion.SetWidth(iViewportSize.iWidth == -1 ? videoSize.iWidth : iViewportSize.iWidth); sl@0: cropRegion.SetHeight(iViewportSize.iHeight == -1 ? videoSize.iHeight : iViewportSize.iHeight); sl@0: } sl@0: sl@0: TRect videoExtentRect; sl@0: TRect clipRegion; sl@0: sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0508")) == 0) sl@0: { sl@0: videoExtentRect.SetRect(TPoint(0, 0), videoSize); sl@0: clipRegion.SetRect(TPoint(0, 0), videoSize); sl@0: clipRegion.SetWidth(clipRegion.Width() / 2); sl@0: clipRegion.Move(clipRegion.Width(), 0); sl@0: } sl@0: else sl@0: { sl@0: // Calculate the video extent to be exactly the same size as the cropped video picture, sl@0: // placed at the center of the window sl@0: TInt offsetX = (iWindow->Size().iWidth - cropRegion.Width()) / 2; sl@0: TInt offsetY = (iWindow->Size().iHeight - cropRegion.Height()) / 2; sl@0: videoExtentRect.SetRect(TPoint(offsetX, offsetY), cropRegion.Size()); sl@0: sl@0: // Set the window clipping region to the top vertical half of the cropped image, originating sl@0: // from the top left corner of the window sl@0: clipRegion = videoExtentRect; sl@0: clipRegion.SetHeight(videoExtentRect.Height() / 2); sl@0: } sl@0: sl@0: HandlePrepareCompleteL(cropRegion, videoExtentRect, clipRegion); sl@0: sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0508")) == 0) sl@0: { sl@0: // Align the image to the left of the window sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignLeft, 0); sl@0: } sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: } sl@0: sl@0: void RTestVclnt2Viewport::HandlePrepareCompleteL(const TRect& aCropRegion, sl@0: const TRect& aVideoExtent, sl@0: const TRect& aClipRect) sl@0: { sl@0: iVideoPlayer2->SetCropRegionL(aCropRegion); sl@0: sl@0: // get the video crop region to ensure the crop region is set sl@0: TRect currentCropRegion; sl@0: iVideoPlayer2->GetCropRegionL(currentCropRegion); sl@0: sl@0: if (currentCropRegion != aCropRegion) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->GetCropRegionL() returns an unexpected value. Test aborted.")); sl@0: sl@0: iTestStepResult = EInconclusive; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, aVideoExtent, aClipRect); sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2InvalidViewport sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2InvalidViewport::Constructor sl@0: */ sl@0: RTestVclnt2InvalidViewport::RTestVclnt2InvalidViewport(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2InvalidViewport::NewL sl@0: */ sl@0: RTestVclnt2InvalidViewport* RTestVclnt2InvalidViewport::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2InvalidViewport* self = new (ELeave) RTestVclnt2InvalidViewport(aTestName, sl@0: aSectName, sl@0: aKeyName, sl@0: aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2InvalidViewport::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2InvalidViewport::HandlePrepareCompleteL() sl@0: { sl@0: // retrive original video size sl@0: TSize videoSize; sl@0: iVideoPlayer2->VideoFrameSizeL(videoSize); sl@0: sl@0: // set the crop region to be completely out of the video image bound sl@0: TRect cropRegion; sl@0: cropRegion.SetRect(TPoint(videoSize.iWidth, videoSize.iHeight), TSize(100, 100)); sl@0: sl@0: // continue playback even if this fails sl@0: TRAPD(err, iVideoPlayer2->SetCropRegionL(cropRegion)); sl@0: if (err == iTestExpectedError) sl@0: { sl@0: // the invalid crop area is not supposed to be set sl@0: INFO_PRINTF1(_L("iVideoPlayer2->SetCropRegionL() returned expected. Test continues.")); sl@0: sl@0: // reset the expected error. Any error that appears after this should fail the test sl@0: iTestExpectedError = KErrNone; sl@0: } sl@0: else sl@0: { sl@0: // the invalid crop area is not supposed to be set sl@0: ERR_PRINTF1(_L("iVideoPlayer2->SetCropRegionL() didn't leave with expected error. Test cannot be continued.")); sl@0: sl@0: iTestStepResult = EInconclusive; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: // get the video crop region to ensure the crop region is set sl@0: TRect currentCropRegion; sl@0: iVideoPlayer2->GetCropRegionL(currentCropRegion); sl@0: sl@0: if (currentCropRegion != cropRegion) sl@0: { sl@0: // the invalid crop area is not supposed to be set sl@0: ERR_PRINTF1(_L("iVideoPlayer2->GetCropRegionL() returns an unexpected value. Test cannot be continued.")); sl@0: sl@0: iTestStepResult = EInconclusive; sl@0: CActiveScheduler::Stop(); sl@0: return; sl@0: } sl@0: sl@0: // setup the display then trigger the video to start playing sl@0: RTestVclnt2PlayFile::HandlePrepareCompleteL(); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2Rotation sl@0: // sl@0: /** sl@0: * RTestVclnt2Rotation::Constructor sl@0: */ sl@0: RTestVclnt2Rotation::RTestVclnt2Rotation(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Rotation::NewL sl@0: */ sl@0: RTestVclnt2Rotation* RTestVclnt2Rotation::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2Rotation* self = new (ELeave) RTestVclnt2Rotation(aTestName, sl@0: aSectName, sl@0: aKeyName, sl@0: aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Rotation::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2Rotation::HandlePrepareCompleteL() sl@0: { sl@0: // call parent's HandlePrepareCompleteL to finish off all preparation sl@0: RTestVclnt2PlayFile::HandlePrepareCompleteL(); sl@0: sl@0: // set the video to be displayed upside-down sl@0: TVideoRotation videoRotation(EVideoRotationClockwise180); sl@0: iVideoPlayer2->SetRotationL(*iWindow, videoRotation); sl@0: sl@0: // retrieve the rotation setting, and check if it's been properly updated sl@0: if (iVideoPlayer2->RotationL(*iWindow) != videoRotation) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->RotationL() returns an unexpected value. Test aborted.")); sl@0: sl@0: iTestStepResult = EInconclusive; sl@0: CActiveScheduler::Stop(); sl@0: sl@0: return; sl@0: } sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2Settings sl@0: // sl@0: /** sl@0: * RTestVclnt2Settings::Constructor sl@0: */ sl@0: RTestVclnt2Settings::RTestVclnt2Settings(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Settings::NewL sl@0: */ sl@0: RTestVclnt2Settings* RTestVclnt2Settings::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2Settings* self = new (ELeave) RTestVclnt2Settings(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Settings::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2Settings::HandlePrepareCompleteL() sl@0: { sl@0: // retrieve the current frame size sl@0: TSize frameSize; sl@0: iVideoPlayer2->VideoFrameSizeL(frameSize); sl@0: sl@0: TRect cropRegion(frameSize); sl@0: // shrink the crop region to half its original height sl@0: cropRegion.SetHeight(cropRegion.Height() / 2); sl@0: iVideoPlayer2->SetCropRegionL(cropRegion); sl@0: sl@0: TRect videoExtentRect; sl@0: videoExtentRect.SetWidth(cropRegion.Width()); sl@0: videoExtentRect.SetHeight(cropRegion.Height()); sl@0: sl@0: videoExtentRect.Move((iWindow->Size().iWidth - videoExtentRect.Width()) / 2, sl@0: (iWindow->Size().iHeight - videoExtentRect.Height()) / 2); sl@0: sl@0: TRect clippingRect(videoExtentRect); sl@0: clippingRect.SetWidth(clippingRect.Height() / 2); sl@0: sl@0: // add display window using this valid clipping rect sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, videoExtentRect, clippingRect); sl@0: sl@0: // Scale the movie with best fit scaling, and vertically center the picture sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleBestFit); sl@0: sl@0: // Start video playback sl@0: StartPlayback(); sl@0: } sl@0: sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2SettingsAndAlignments sl@0: // sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::Constructor sl@0: */ sl@0: RTestVclnt2SettingsAndAlignments::RTestVclnt2SettingsAndAlignments(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::NewL sl@0: */ sl@0: RTestVclnt2SettingsAndAlignments* RTestVclnt2SettingsAndAlignments::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2SettingsAndAlignments* self = new (ELeave) RTestVclnt2SettingsAndAlignments(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: TVerdict RTestVclnt2SettingsAndAlignments::DoTestStepPreambleL() sl@0: { sl@0: iCount = 0; sl@0: return RTestVclnt2PlayFile::DoTestStepPreambleL(); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2SettingsAndAlignments::HandlePrepareCompleteL() sl@0: { sl@0: TRect cropRegion; sl@0: SetCropRegionL(cropRegion); sl@0: sl@0: AddDisplayWindowL(cropRegion); sl@0: sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0418")) == 0) sl@0: { sl@0: SetContentOffsetL(); sl@0: } sl@0: else if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0419")) == 0) sl@0: { sl@0: SetContentAlignmentL(); sl@0: } sl@0: sl@0: SetScaleFactorL(); sl@0: sl@0: // Start video playback sl@0: StartPlayback(); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::HandlePlayCompleteL sl@0: */ sl@0: void RTestVclnt2SettingsAndAlignments::HandlePlayCompleteL() sl@0: { sl@0: iCount++; sl@0: sl@0: if (iCount == KSettingsAndAlignmentTest) sl@0: { sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: else sl@0: { sl@0: HandlePrepareCompleteL(); sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::SetCropRegionL sl@0: */ sl@0: void RTestVclnt2SettingsAndAlignments::SetCropRegionL(TRect& aCropRegion) sl@0: { sl@0: // retrieve the current frame size sl@0: TSize frameSize; sl@0: iVideoPlayer2->VideoFrameSizeL(frameSize); sl@0: sl@0: // Framesize is used in this case as crop region is not returning default values sl@0: aCropRegion.SetRect(TPoint(0, 0), frameSize); sl@0: sl@0: // set the crop region sl@0: switch (iCount % KSettingsAndAlignmentTest) sl@0: { sl@0: case 0: sl@0: // set the crop region to the top half of the image sl@0: aCropRegion.SetHeight(aCropRegion.Height() / 2); sl@0: iVideoPlayer2->SetCropRegionL(aCropRegion); sl@0: break; sl@0: sl@0: case 1: sl@0: // set the crop region to the left half of the image sl@0: aCropRegion.SetWidth(aCropRegion.Width() / 2); sl@0: iVideoPlayer2->SetCropRegionL(aCropRegion); sl@0: break; sl@0: sl@0: default: sl@0: // set the crop region to the bottom, right quarter of the image sl@0: aCropRegion.SetHeight(aCropRegion.Height() / 2); sl@0: aCropRegion.SetWidth(aCropRegion.Width() / 2); sl@0: aCropRegion.Move(aCropRegion.Width(), aCropRegion.Height()); sl@0: iVideoPlayer2->SetCropRegionL(aCropRegion); sl@0: break; sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::SetContentOffsetL sl@0: */ sl@0: void RTestVclnt2SettingsAndAlignments::SetContentOffsetL() sl@0: { sl@0: switch (iCount % KSettingsAndAlignmentTest) sl@0: { sl@0: case 0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, 0, 100); sl@0: break; sl@0: sl@0: case 1: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, 100, 0); sl@0: break; sl@0: sl@0: default: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, 100, 100); sl@0: break; sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::SetContentAlignmentL sl@0: */ sl@0: void RTestVclnt2SettingsAndAlignments::SetContentAlignmentL() sl@0: { sl@0: switch (iCount % KSettingsAndAlignmentTest) sl@0: { sl@0: case 0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, 0, EVerticalAlignCenter); sl@0: break; sl@0: sl@0: case 1: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignCenter, 0); sl@0: break; sl@0: sl@0: default: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignCenter, EVerticalAlignCenter); sl@0: break; sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::SetScaleFactorL sl@0: */ sl@0: void RTestVclnt2SettingsAndAlignments::SetScaleFactorL() sl@0: { sl@0: switch (iCount % KSettingsAndAlignmentTest) sl@0: { sl@0: case 0: sl@0: iVideoPlayer2->SetScaleFactorL(*iWindow, 1, 200); sl@0: break; sl@0: sl@0: case 1: sl@0: iVideoPlayer2->SetScaleFactorL(*iWindow, 200, 1); sl@0: break; sl@0: sl@0: default: sl@0: iVideoPlayer2->SetScaleFactorL(*iWindow, 200, 200); sl@0: break; sl@0: } sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SettingsAndAlignments::AddDisplayWindowL sl@0: */ sl@0: void RTestVclnt2SettingsAndAlignments::AddDisplayWindowL(const TRect& aCropRegion) sl@0: { sl@0: TRect videoExtentRect(iWindow->Size()); sl@0: TRect clippingRect(iWindow->Size()); sl@0: sl@0: switch (iCount % KSettingsAndAlignmentTest) sl@0: { sl@0: case 0: sl@0: videoExtentRect.SetWidth(aCropRegion.Width()); sl@0: if (iWindow->Size().iWidth > videoExtentRect.Width()) sl@0: { sl@0: videoExtentRect.Move((iWindow->Size().iWidth - videoExtentRect.Width()) / 2, 0); sl@0: } sl@0: clippingRect = videoExtentRect; sl@0: break; sl@0: sl@0: case 1: sl@0: videoExtentRect.SetHeight(aCropRegion.Height()); sl@0: if (iWindow->Size().iHeight > videoExtentRect.Height()) sl@0: { sl@0: videoExtentRect.Move(0, (iWindow->Size().iHeight - videoExtentRect.Height()) / 2); sl@0: } sl@0: clippingRect = videoExtentRect; sl@0: break; sl@0: sl@0: default: sl@0: clippingRect.SetHeight(clippingRect.Height() / 2); sl@0: clippingRect.SetWidth(clippingRect.Width() / 2); sl@0: clippingRect.Move(clippingRect.Width(), clippingRect.Height()); sl@0: break; sl@0: } sl@0: sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, videoExtentRect, clippingRect); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2SecDisplay sl@0: // sl@0: /** sl@0: * RTestVclnt2SecDisplay::Constructor sl@0: */ sl@0: RTestVclnt2SecDisplay::RTestVclnt2SecDisplay(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SecDisplay::NewL sl@0: */ sl@0: RTestVclnt2SecDisplay* RTestVclnt2SecDisplay::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2SecDisplay* self = new (ELeave) RTestVclnt2SecDisplay(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SecDisplay::DoTestStepPreambleL sl@0: */ sl@0: TVerdict RTestVclnt2SecDisplay::DoTestStepPreambleL() sl@0: { sl@0: TVerdict verdict = RTestVclnt2PlayFile::DoTestStepPreambleL(); sl@0: if (verdict == EPass) sl@0: { sl@0: // make a 2nd device for this session sl@0: iSecondScreen = new (ELeave) CWsScreenDevice(iWs); sl@0: User::LeaveIfError(iSecondScreen->Construct()); sl@0: } sl@0: sl@0: return verdict; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SecDisplay::DoTestStepPostambleL sl@0: */ sl@0: TVerdict RTestVclnt2SecDisplay::DoTestStepPostambleL() sl@0: { sl@0: delete iSecondScreen; sl@0: sl@0: return EPass; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2SecDisplay::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2SecDisplay::HandlePrepareCompleteL() sl@0: { sl@0: // Add display window using default values - ie. video extent & window clipping sl@0: // defaulted to whole window sl@0: INFO_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL()")); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iSecondScreen, *iWindow); sl@0: sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2CropRectPause sl@0: // sl@0: /** sl@0: * RTestVclnt2CropRectPause::Constructor sl@0: */ sl@0: RTestVclnt2CropRectPause::RTestVclnt2CropRectPause(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2CropRectPause::NewL sl@0: */ sl@0: RTestVclnt2CropRectPause* RTestVclnt2CropRectPause::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2CropRectPause* self sl@0: = new (ELeave) RTestVclnt2CropRectPause(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2CropRectPause::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2CropRectPause::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& aPlayer) sl@0: { sl@0: TRect cropRegion; sl@0: aPlayer.GetCropRegionL(cropRegion); sl@0: sl@0: // change the crop region and continue to play the clip sl@0: cropRegion.SetHeight(cropRegion.Height() / 2); sl@0: aPlayer.SetCropRegionL(cropRegion); sl@0: } sl@0: sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2Overlay sl@0: // sl@0: /** sl@0: * RTestVclnt2Overlay::Constructor sl@0: */ sl@0: RTestVclnt2Overlay::RTestVclnt2Overlay(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Overlay::NewL sl@0: */ sl@0: RTestVclnt2Overlay* RTestVclnt2Overlay::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2Overlay* self = new (ELeave) RTestVclnt2Overlay(aTestName, sl@0: aSectName, sl@0: aKeyName, sl@0: aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Overlay::DoTestStepPreambleL sl@0: */ sl@0: TVerdict RTestVclnt2Overlay::DoTestStepPreambleL() sl@0: { sl@0: TVerdict verdict = RTestVclnt2PlayFile::DoTestStepPreambleL(); sl@0: if (verdict == EPass) sl@0: { sl@0: TFontSpec fontSpec; // use default fonts sl@0: fontSpec.iHeight = 20; sl@0: sl@0: // Get a font to draw overlay text sl@0: if (iScreen->GetNearestFontToDesignHeightInPixels(iFont, fontSpec) != KErrNone) sl@0: { sl@0: // if no font can be retrieved, abort the test sl@0: ERR_PRINTF1(_L("Cannot retrieve font to perform test. Test aborted.")); sl@0: sl@0: return EInconclusive; sl@0: } sl@0: sl@0: iGc->Activate(*iWindow); sl@0: iGc->UseFont(iFont); sl@0: } sl@0: sl@0: return verdict; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Overlay::DoTestStepPostambleL sl@0: */ sl@0: TVerdict RTestVclnt2Overlay::DoTestStepPostambleL() sl@0: { sl@0: iGc->DiscardFont(); sl@0: iGc->Deactivate(); sl@0: sl@0: return RTestVclnt2PlayFile::DoTestStepPostambleL(); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Overlay::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2Overlay::HandlePrepareCompleteL() sl@0: { sl@0: TRect rect(iWindow->Size()); sl@0: TInt baseline = (rect.Height() + iFont->AscentInPixels()) >> 1; sl@0: sl@0: // Draw the overlay text if needed sl@0: iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: iGc->SetBrushColor(KRgbRed); sl@0: sl@0: iGc->SetPenStyle(CGraphicsContext::ESolidPen); sl@0: iGc->SetPenColor(KRgbBlue); sl@0: sl@0: iGc->DrawText(_L("Overlay Testing"), rect, baseline, CGraphicsContext::ELeft); sl@0: sl@0: // setup the display window and trigger the video to start playing sl@0: RTestVclnt2PlayFile::HandlePrepareCompleteL(); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2AddWin2 sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2AddWin2::Constructor sl@0: */ sl@0: RTestVclnt2AddWin2::RTestVclnt2AddWin2(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AddWin2::NewL sl@0: */ sl@0: RTestVclnt2AddWin2* RTestVclnt2AddWin2::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2AddWin2* self = new (ELeave) RTestVclnt2AddWin2(aTestName, sl@0: aSectName, sl@0: aKeyName, sl@0: aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AddWin2::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2AddWin2::HandlePrepareCompleteL() sl@0: { sl@0: // add the display window for the player to use for displaying the video sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: sl@0: // Add the same display window again sl@0: TRAPD(err, iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow)); sl@0: if (err != iTestExpectedError) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() leaves with an unexpected error. Test failed.")); sl@0: sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: sl@0: return; sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() leaves with an expected error. Test continues.")); sl@0: sl@0: // reset the expected error. Any error that appears after this should fail the test sl@0: iTestExpectedError = KErrNone; sl@0: } sl@0: sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2AddWin2WithSettings sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2AddWin2WithSettings::Constructor sl@0: */ sl@0: RTestVclnt2AddWin2WithSettings::RTestVclnt2AddWin2WithSettings(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AddWin2WithSettings::NewL sl@0: */ sl@0: RTestVclnt2AddWin2WithSettings* RTestVclnt2AddWin2WithSettings::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2AddWin2WithSettings* self = new (ELeave) RTestVclnt2AddWin2WithSettings(aTestName, sl@0: aSectName, sl@0: aKeyName, sl@0: aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AddWin2WithSettings::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2AddWin2WithSettings::HandlePrepareCompleteL() sl@0: { sl@0: TRect windowRect(iWindow->Size()); sl@0: windowRect.SetHeight(windowRect.Height() / 2); sl@0: sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, windowRect, windowRect); sl@0: sl@0: // Add the same display window again with default values sl@0: TRAPD(err, iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow)); sl@0: if (err != iTestExpectedError) sl@0: { sl@0: ERR_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() leaves with an unexpected error. Test failed.")); sl@0: sl@0: iTestStepResult = EFail; sl@0: CActiveScheduler::Stop(); sl@0: sl@0: return; sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL() leaves with an expected error. Test continues.")); sl@0: sl@0: // reset the expected error. Any error that appears after this should fail the test sl@0: iTestExpectedError = KErrNone; sl@0: } sl@0: sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2ContOffset sl@0: // sl@0: sl@0: /** sl@0: * RTestVclnt2ContOffset::Constructor sl@0: */ sl@0: RTestVclnt2ContOffset::RTestVclnt2ContOffset(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: iHeapSize = 2000000; //~2MB sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2ContOffset::NewL sl@0: */ sl@0: RTestVclnt2ContOffset* RTestVclnt2ContOffset::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2ContOffset* self = new (ELeave) RTestVclnt2ContOffset(aTestName, sl@0: aSectName, sl@0: aKeyName, sl@0: aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2ContOffset::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2ContOffset::HandlePrepareCompleteL() sl@0: { sl@0: // call parent's HandlePrepareCompleteL to finish off all preparation sl@0: RTestVclnt2PlayFile::HandlePrepareCompleteL(); sl@0: // Set the content offset before starting to play the video. sl@0: INFO_PRINTF1(_L("iVideoPlayer2->SetAutoScale()")); sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, 100, 100); sl@0: sl@0: if (iTestStepName.CompareF(_L("MM-MMF-VCLNTAVI-I-0409")) == 0) sl@0: { sl@0: // Set the content alignment after setting the content offset sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignLeft, EVerticalAlignTop); sl@0: } sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2ContOffsetAtPlay sl@0: // sl@0: /** sl@0: * RTestVclnt2ContOffsetAtPlay::Constructor sl@0: */ sl@0: RTestVclnt2ContOffsetAtPlay::RTestVclnt2ContOffsetAtPlay(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: iHeapSize = 2000000; //~2MB sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2ContOffsetAtPlay::NewL sl@0: */ sl@0: RTestVclnt2ContOffsetAtPlay* RTestVclnt2ContOffsetAtPlay::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2ContOffsetAtPlay* self = new (ELeave) RTestVclnt2ContOffsetAtPlay(aTestName, sl@0: aSectName, sl@0: aKeyName, sl@0: aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2ContOffsetAtPlay::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2ContOffsetAtPlay::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& /* aPlayer */) sl@0: { sl@0: // Change the scale factor during playback sl@0: INFO_PRINTF1(_L("iVideoPlayer2->SetAutoScale()")); sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, 10, 10); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2Align sl@0: // sl@0: /** sl@0: * RTestVclnt2Align::Constructor sl@0: */ sl@0: RTestVclnt2Align::RTestVclnt2Align(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: iHeapSize = 2000000; //~2MB sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Align::NewL sl@0: */ sl@0: RTestVclnt2Align* RTestVclnt2Align::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2Align* self = new (ELeave) RTestVclnt2Align(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Align::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2Align::HandlePrepareCompleteL() sl@0: { sl@0: // Continue to setup the video utility and then trigger playback sl@0: RTestVclnt2PlayFile::HandlePrepareCompleteL(); sl@0: // Set the content offset before starting to play the video. sl@0: INFO_PRINTF1(_L("iVideoPlayer2->SetAutoScale()")); sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignCenter, EVerticalAlignCenter); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Align::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2Align::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& /* aPlayer */) sl@0: { sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignLeft, EVerticalAlignCenter); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, TRect(10, 10, 100, 100), TRect(0, 3, 4, 220)); sl@0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignRight, EVerticalAlignCenter); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignCenter, EVerticalAlignTop); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, TRect(10, 10, 100, 100), TRect(0, 5, 5, 200)); sl@0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignLeft, EVerticalAlignTop); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignRight, EVerticalAlignTop); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, TRect(0, 0, 100, 100), TRect(0, 5, 5, 200)); sl@0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignCenter, EVerticalAlignBottom); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignLeft, EVerticalAlignBottom); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, TRect(0, 0, 100, 100), TRect(0, 5, 300, 230)); sl@0: sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleNone, EHorizontalAlignRight, EVerticalAlignBottom); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: } sl@0: sl@0: sl@0: // sl@0: // RTestVclnt2AutoScale sl@0: // sl@0: /** sl@0: * RTestVclnt2AutoScale::Constructor sl@0: */ sl@0: RTestVclnt2AutoScale::RTestVclnt2AutoScale(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: : RTestVclnt2PerformActionDuringVideoPlayback(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: iHeapSize = 2000000; //~2MB sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AutoScale::NewL sl@0: */ sl@0: RTestVclnt2AutoScale* RTestVclnt2AutoScale::NewL(const TDesC& aTestName, sl@0: const TDesC& aSectName, sl@0: const TDesC& aKeyName, sl@0: TInt aExpectedError) sl@0: { sl@0: RTestVclnt2AutoScale* self = new (ELeave) RTestVclnt2AutoScale(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AutoScale::HandlePrepareCompleteL sl@0: */ sl@0: void RTestVclnt2AutoScale::HandlePrepareCompleteL() sl@0: { sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: // Set the content offset before starting to play the video. sl@0: INFO_PRINTF1(_L("iVideoPlayer2->SetAutoScale()")); sl@0: iVideoPlayer2->SetAutoScaleL(*iWindow, EAutoScaleClip); sl@0: sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2AutoScale::DoThisActionDuringPlaybackL sl@0: */ sl@0: void RTestVclnt2AutoScale::DoThisActionDuringPlaybackL(CVideoPlayerUtility2& aPlayer) sl@0: { sl@0: aPlayer.SetAutoScaleL(*iWindow, EAutoScaleBestFit); sl@0: aPlayer.SetAutoScaleL(*iWindow, EAutoScaleNone); sl@0: aPlayer.SetAutoScaleL(*iWindow, EAutoScaleStretch); sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2OldController sl@0: // sl@0: sl@0: RTestVclnt2OldController::RTestVclnt2OldController(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2OldController::NewL sl@0: */ sl@0: RTestVclnt2OldController* RTestVclnt2OldController::NewL(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2OldController* self = new (ELeave) RTestVclnt2OldController(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: void RTestVclnt2OldController::HandleIdleL() sl@0: { sl@0: // Open iVideoPlayer using a controller that does not support surfaces. sl@0: INFO_PRINTF2(_L("iVideoPlayer2->OpenFileL() %S"), &iFilename); sl@0: iVideoPlayer2->OpenFileL(iFilename, KMmfTestAviNonGcePlayControllerUid); sl@0: PrepareState(EVPOpenComplete, KErrNone); sl@0: } sl@0: sl@0: void RTestVclnt2OldController::HandlePrepareCompleteL() sl@0: { sl@0: TRAPD(err, RTestVclnt2PlayFile::HandlePrepareCompleteL()); sl@0: sl@0: if (err != KErrNotSupported) sl@0: { sl@0: ERR_PRINTF1(_L("AddDisplay did not leave with KErrNotSupported.")); sl@0: iTestStepResult = EFail; sl@0: } sl@0: else sl@0: { sl@0: iTestStepResult = EPass; sl@0: } sl@0: sl@0: // Stop the test. sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: // sl@0: // RTestVclnt2NoFile sl@0: // sl@0: sl@0: RTestVclnt2NoFile::RTestVclnt2NoFile(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2NoFile::NewL sl@0: */ sl@0: RTestVclnt2NoFile* RTestVclnt2NoFile::NewL(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2NoFile* self = new (ELeave) RTestVclnt2NoFile(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: void RTestVclnt2NoFile::HandleIdleL() sl@0: { sl@0: iTestStepResult = EFail; sl@0: TRAPD(err, iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow)); sl@0: sl@0: if (err != iTestExpectedError) sl@0: { sl@0: ERR_PRINTF1(_L("AddDisplayWindowL did not leave with KErrNotReady.")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: sl@0: TSize windowSize = iWindow->Size(); sl@0: TRect videoExtent(-5, -5, windowSize.iWidth + 5, windowSize.iHeight + 5); sl@0: TRect windowClipRect(5, 5, windowSize.iWidth - 5, windowSize.iHeight - 5); sl@0: TRAP(err, iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, videoExtent, windowClipRect)); sl@0: sl@0: if (err != iTestExpectedError) sl@0: { sl@0: ERR_PRINTF1(_L("AddDisplayWindowL did not leave with KErrNotReady.")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: sl@0: TRAP(err, iVideoPlayer2->SetWindowClipRectL(*iWindow, windowClipRect)); sl@0: sl@0: if (err != iTestExpectedError) sl@0: { sl@0: ERR_PRINTF1(_L("SetWindowClipRectL did not leave with KErrNotReady.")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: sl@0: TRAP(err, iVideoPlayer2->SetVideoExtentL(*iWindow, videoExtent)); sl@0: sl@0: if (err != iTestExpectedError) sl@0: { sl@0: ERR_PRINTF1(_L("SetVideoExtentL did not leave with KErrNotReady.")); sl@0: User::Leave(KErrGeneral); sl@0: } sl@0: sl@0: // reset the expected error to KErrNone as any error happens after this is unexpected sl@0: iTestExpectedError = KErrNone; sl@0: sl@0: // The video should still play when we try to play the video. Perform sl@0: // the basic play test now. sl@0: RTestVclnt2PlayFile::HandleIdleL(); sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2PlayAfterRemoveWin sl@0: // sl@0: sl@0: RTestVclnt2PlayAfterRemoveWin::RTestVclnt2PlayAfterRemoveWin(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2PlayAfterRemoveWin::NewL sl@0: */ sl@0: RTestVclnt2PlayAfterRemoveWin* RTestVclnt2PlayAfterRemoveWin::NewL(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2PlayAfterRemoveWin* self = new (ELeave) RTestVclnt2PlayAfterRemoveWin(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: void RTestVclnt2PlayAfterRemoveWin::HandlePrepareCompleteL() sl@0: { sl@0: // Don't add a window. Just play the video. sl@0: StartPlayback(); sl@0: } sl@0: sl@0: void RTestVclnt2PlayAfterRemoveWin::HandlePlayCompleteL() sl@0: { sl@0: switch(iPlayAttempt) sl@0: { sl@0: case 0: sl@0: { sl@0: TSize windowSize = iWindow->Size(); sl@0: TRect videoExtent(-5, -5, windowSize.iWidth + 5, windowSize.iHeight + 5); sl@0: TRect windowClipRect(5, 5, windowSize.iWidth - 5, windowSize.iHeight - 5); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow, videoExtent, windowClipRect); sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->Play(); sl@0: PrepareState(EVPPlayComplete, KErrNone); sl@0: break; sl@0: } sl@0: case 1: sl@0: // Removing the window again should have no effect. sl@0: iVideoPlayer2->RemoveDisplayWindow(*iWindow); sl@0: iVideoPlayer2->Play(); sl@0: PrepareState(EVPPlayComplete, KErrNone); sl@0: break; sl@0: case 2: sl@0: // The previous play commands should have no effect when we try to add a sl@0: // display window and render to surfaces. Use the base class to do this. sl@0: RTestVclnt2PlayFile::HandlePrepareCompleteL(); sl@0: break; sl@0: default: sl@0: // Use the parent handler after we have tried the above play commands. sl@0: RTestVclnt2PlayFile::HandlePlayCompleteL(); sl@0: break; sl@0: } sl@0: sl@0: iPlayAttempt++; sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2NoGce sl@0: // sl@0: sl@0: RTestVclnt2NoGce::RTestVclnt2NoGce(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2NoGce::NewL sl@0: */ sl@0: RTestVclnt2NoGce* RTestVclnt2NoGce::NewL(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2NoGce* self = new (ELeave) RTestVclnt2NoGce(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: void RTestVclnt2NoGce::HandleIdleL() sl@0: { sl@0: // Open iVideoPlayer sl@0: INFO_PRINTF2(_L("iVideoPlayer2->OpenFileL() %S"), &iFilename); sl@0: iVideoPlayer2->OpenFileL(iFilename, KMmfTestAviPlayControllerUid); sl@0: PrepareState(EVPOpenComplete, KErrNotSupported); sl@0: } sl@0: sl@0: void RTestVclnt2NoGce::HandleOpenCompleteL() sl@0: { sl@0: iTestStepResult = EPass; sl@0: CActiveScheduler::Stop(); sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2Alloc sl@0: // sl@0: sl@0: RTestVclnt2Alloc::RTestVclnt2Alloc(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Alloc::NewL sl@0: */ sl@0: RTestVclnt2Alloc* RTestVclnt2Alloc::NewL(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2Alloc* self = new (ELeave) RTestVclnt2Alloc(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: TVerdict RTestVclnt2Alloc::DoTestStepPreambleL() sl@0: { sl@0: INFO_PRINTF1(_L("RTestVclnt2Alloc::DoTestStepPreambleL()")); sl@0: sl@0: // Call RTestMmfVclntAviStep::DoTestStepPreambleL instead of the immediate parent's sl@0: // DoTestStepPreambleL as there is no need for CVideoPlayerUtility setup. sl@0: // Similarly, there is no need to initialize CVideoPlayerUtility2, as it will be sl@0: // created in each alloc iteration. sl@0: return RTestMmfVclntAviStep::DoTestStepPreambleL(); sl@0: } sl@0: sl@0: TVerdict RTestVclnt2Alloc::PerformTestL() sl@0: { sl@0: iVideoPlayer2 = CVideoPlayerUtility2::NewL(*this, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality); sl@0: ResetState(); sl@0: iError = KErrNone; sl@0: TVerdict result = RTestVclnt2AviPlayerStep::DoTestStepL(); sl@0: delete iVideoPlayer2; sl@0: iVideoPlayer2 = NULL; sl@0: return result; sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2Alloc::DoTestStepL() sl@0: */ sl@0: TVerdict RTestVclnt2Alloc::DoTestStepL() sl@0: { sl@0: TVerdict allocTestStepResult = EPass; sl@0: TInt err = KErrNone; sl@0: TBool result = EFalse; sl@0: sl@0: //>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<< sl@0: if (PerformTestL() != EPass) sl@0: { sl@0: err = iError; sl@0: } sl@0: sl@0: if (err != KErrNone) sl@0: { sl@0: INFO_PRINTF2(_L("Test error, returned error code = %d"), err); sl@0: User::Leave(err); sl@0: } sl@0: else sl@0: { sl@0: //Check the iAllocTestStepResult sl@0: if (allocTestStepResult != EPass) sl@0: { sl@0: result = ETrue; sl@0: } sl@0: } sl@0: sl@0: TInt failCount = 1; sl@0: TBool completed = EFalse; sl@0: allocTestStepResult = EPass; sl@0: TBool reachedEnd = EFalse; sl@0: for(;;) sl@0: { sl@0: __UHEAP_SETFAIL(RHeap::EFailNext, failCount); sl@0: __MM_HEAP_MARK; sl@0: sl@0: //>>>>>>>>>>>>>>>>>>>>>>>>Test Method Call<<<<<<<<<<<<<<<<<<<<<<<<<< sl@0: TVerdict verdict = EFail; sl@0: TRAP(err, verdict = PerformTestL()); sl@0: if (err == KErrNone && verdict != EPass) sl@0: { sl@0: err = iError; sl@0: } sl@0: sl@0: completed = EFalse; sl@0: if (err == KErrNone) sl@0: { sl@0: TAny* testAlloc = User::Alloc(1); // when this fails, we passed through all allocs within test sl@0: if (testAlloc == NULL) sl@0: { sl@0: reachedEnd = ETrue; sl@0: failCount -= 1; sl@0: } sl@0: else sl@0: { sl@0: User::Free(testAlloc); sl@0: } sl@0: sl@0: //Check the iAllocTestStepResult sl@0: if (allocTestStepResult != EPass) sl@0: { sl@0: result = ETrue; sl@0: } sl@0: sl@0: completed = reachedEnd || result; sl@0: } sl@0: else if (err != KErrNoMemory) // bad error code sl@0: { sl@0: completed = ETrue; sl@0: result = EFail; sl@0: } sl@0: sl@0: __MM_HEAP_MARKEND; sl@0: __UHEAP_SETFAIL(RHeap::ENone, 0); sl@0: sl@0: if (completed) sl@0: { sl@0: break; // exit loop sl@0: } sl@0: sl@0: failCount++; sl@0: } sl@0: sl@0: failCount -= 1; // Failcount of 1 equates to 0 successful allocs, etc sl@0: sl@0: if (err != KErrNone || result) sl@0: { sl@0: allocTestStepResult = EFail; sl@0: TBuf<80> format; sl@0: if (result) sl@0: { sl@0: format.Format(_L(" Bad result with %d memory allocations tested\n"), failCount); sl@0: } sl@0: else sl@0: { sl@0: format.Format(_L(" Error(%d) with %d memory allocations tested\n"), err, failCount); sl@0: } sl@0: Log(format); sl@0: } sl@0: else sl@0: { sl@0: TBuf<80> format; sl@0: format.Format(_L(" Completed OK with %d memory allocations tested\n"), failCount); sl@0: Log(format); sl@0: } sl@0: sl@0: return allocTestStepResult; sl@0: } sl@0: sl@0: // sl@0: // RTestVclnt2InvalidScaleFactor sl@0: // sl@0: RTestVclnt2InvalidScaleFactor::RTestVclnt2InvalidScaleFactor(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: : RTestVclnt2PlayFile(aTestName, aSectName, aKeyName, aExpectedError) sl@0: { sl@0: } sl@0: sl@0: /** sl@0: * RTestVclnt2InvalidScaleFactor::NewL sl@0: */ sl@0: RTestVclnt2InvalidScaleFactor* RTestVclnt2InvalidScaleFactor::NewL(const TDesC& aTestName,const TDesC& aSectName,const TDesC& aKeyName, TInt aExpectedError) sl@0: { sl@0: RTestVclnt2InvalidScaleFactor* self = new (ELeave) RTestVclnt2InvalidScaleFactor(aTestName, aSectName, aKeyName, aExpectedError); sl@0: return self; sl@0: } sl@0: sl@0: void RTestVclnt2InvalidScaleFactor::HandlePrepareCompleteL() sl@0: { sl@0: INFO_PRINTF1(_L("iVideoPlayer2->AddDisplayWindowL()")); sl@0: iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow); sl@0: sl@0: // Try to scale the video to an invalid values sl@0: TRAPD(err, iVideoPlayer2->SetScaleFactorL(*iWindow, 0, 100)); sl@0: if (err != KErrArgument) sl@0: { sl@0: User::Leave(err == KErrNone ? KErrGeneral : err); sl@0: } sl@0: sl@0: TRAP(err, iVideoPlayer2->SetScaleFactorL(*iWindow, 100, -100)); sl@0: if (err != KErrArgument) sl@0: { sl@0: User::Leave(err == KErrNone ? KErrGeneral : err); sl@0: } sl@0: sl@0: // trigger the video to start playing sl@0: StartPlayback(); sl@0: }