os/mm/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer_subtitles.cpp
Update contrib.
1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of "Eclipse Public License v1.0"
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #include "testvideoplayer_subtitles.h"
18 const TUint KCacheSize = 1000000; //1MB
19 const TUint KMaxCacheSize = 50000000; //50MB
22 CPlayTimer* CPlayTimer::NewL(RTestVclnt2Subtitle& aTestStep)
24 CPlayTimer* self = new (ELeave) CPlayTimer(aTestStep);
25 CleanupStack::PushL(self);
31 CPlayTimer::CPlayTimer(RTestVclnt2Subtitle& aTestStep)
32 : CTimer(EPriorityHigh), iTestStep(aTestStep)
34 CActiveScheduler::Add(this);
37 void CPlayTimer::RunL()
39 iTestStep.DoDuringPlaybackActionsL();
42 TInt CPlayTimer::RunError(TInt aError)
44 // Tell the test to fail with error code aError.
45 iTestStep.FailTest(aError);
50 // RTestVclnt2Subtitle
53 RTestVclnt2Subtitle* RTestVclnt2Subtitle::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
55 return new (ELeave) RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError);
58 RTestVclnt2Subtitle::RTestVclnt2Subtitle(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
59 : RTestVclnt2AviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError)
63 void RTestVclnt2Subtitle::FailTest(TInt aError)
65 ERR_PRINTF2(_L("Test step failed with error %d."), aError);
67 iTestStepResult = EFail;
68 CActiveScheduler::Stop();
71 TVerdict RTestVclnt2Subtitle::DoTestStepPreambleL()
73 User::LeaveIfError(SetCacheSize());
74 TVerdict result = RTestVclnt2AviPlayerStep::DoTestStepPreambleL();
78 iPlayTimer = CPlayTimer::NewL(*this);
84 TVerdict RTestVclnt2Subtitle::DoTestStepPostambleL()
86 User::LeaveIfError(RevertCacheSize());
90 return RTestVclnt2AviPlayerStep::DoTestStepPostambleL();
93 void RTestVclnt2Subtitle::DoBeforePlaybackActionsL()
95 if (!iVideoPlayer2->SubtitlesAvailable())
97 ERR_PRINTF1(_L("SubtitlesAvailable() returned EFalse. Expected ETrue."));
98 User::Leave(KErrNotSupported);
101 iVideoPlayer2->EnableSubtitlesL();
104 void RTestVclnt2Subtitle::DoDuringPlaybackActionsL()
108 void RTestVclnt2Subtitle::FsmL(TVclntTestPlayEvents aEventCode)
110 if (FsmCheck(aEventCode))
115 // Open iVideoPlayer2
116 LOG_CALL(iVideoPlayer2->OpenFileL(iFilename, KMmfTestAviPlayControllerUid));
117 PrepareState(EVPOpenComplete, KErrNone);
120 case EVPOpenComplete:
121 // Prepare iVideoPlayer2
122 LOG_CALL(iVideoPlayer2->Prepare());
123 PrepareState(EVPPrepareComplete, KErrNone);
126 case EVPPrepareComplete:
127 // Add display window using default values - ie. video extent & window clipping
128 // defaulted to whole window.
129 LOG_CALL(iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow));
131 // Perform any actions that the class or subclasses need before starting video playback.
132 DoBeforePlaybackActionsL();
134 // trigger the video to start playing
135 iError = KErrTimedOut;
136 PrepareState(EVPPlayComplete, KErrNone);
137 LOG_CALL(iVideoPlayer2->Play());
139 // Trigger a call to DoDuringPlaybackActionsL
140 iPlayTimer->After(KOneSecond);
143 case EVPPlayComplete:
144 iTestStepResult = EPass;
145 iPlayTimer->Cancel();
146 CActiveScheduler::Stop();
152 TInt RTestVclnt2Subtitle::SetCacheSize()
154 TInt error=UserSvr::HalFunction(EHalGroupVM,EVMHalSetCacheSize,(TAny*)KCacheSize,(TAny*)KMaxCacheSize);
155 TInt ret=CheckCacheError(error);
160 TInt RTestVclnt2Subtitle::CheckCacheError(TInt aError)
164 //Winscw does not support getting cache size. Ignoring -5 error
167 if(aError!=KErrNotSupported)
169 INFO_PRINTF2(_L("Could not get the cache size %d"),aError);
175 {//For ARMV5 we stop for all errors
176 INFO_PRINTF2(_L("Could not get the cache size %d"),aError);
183 TInt RTestVclnt2Subtitle::RevertCacheSize()
185 TUint defaultCacheSize = 0;
186 //Done with the test. Setting 0 makes the cache size revert back to boot up values
187 TInt error=UserSvr::HalFunction(EHalGroupVM,EVMHalSetCacheSize,(TAny*)defaultCacheSize,(TAny*)defaultCacheSize);
188 return CheckCacheError(error);
193 // RTestVclnt2SubtitleEnableDuringPlayback
196 RTestVclnt2SubtitleEnableDuringPlayback* RTestVclnt2SubtitleEnableDuringPlayback::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
198 return new (ELeave) RTestVclnt2SubtitleEnableDuringPlayback(aTestName, aSectName, aKeyName, aExpectedError);
201 RTestVclnt2SubtitleEnableDuringPlayback::RTestVclnt2SubtitleEnableDuringPlayback(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
202 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
206 void RTestVclnt2SubtitleEnableDuringPlayback::DoBeforePlaybackActionsL()
208 INFO_PRINTF1(_L("Don't enable subtitles before playback; do nothing in DoBeforePlaybackActionsL()"));
211 void RTestVclnt2SubtitleEnableDuringPlayback::DoDuringPlaybackActionsL()
213 if (!iVideoPlayer2->SubtitlesAvailable())
215 ERR_PRINTF1(_L("SubtitlesAvailable() returned EFalse. Expected ETrue."));
216 User::Leave(KErrNotSupported);
219 iVideoPlayer2->EnableSubtitlesL();
223 // RTestVclnt2SubtitleDisableDuringPlayback
226 RTestVclnt2SubtitleDisableDuringPlayback* RTestVclnt2SubtitleDisableDuringPlayback::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
228 return new (ELeave) RTestVclnt2SubtitleDisableDuringPlayback(aTestName, aSectName, aKeyName, aExpectedError);
231 RTestVclnt2SubtitleDisableDuringPlayback::RTestVclnt2SubtitleDisableDuringPlayback(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
232 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
236 void RTestVclnt2SubtitleDisableDuringPlayback::DoDuringPlaybackActionsL()
238 iVideoPlayer2->DisableSubtitles();
242 // RTestVclnt2SubtitleDisableTwice
245 RTestVclnt2SubtitleDisableTwice* RTestVclnt2SubtitleDisableTwice::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
247 return new (ELeave) RTestVclnt2SubtitleDisableTwice(aTestName, aSectName, aKeyName, aExpectedError);
250 RTestVclnt2SubtitleDisableTwice::RTestVclnt2SubtitleDisableTwice(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
251 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
255 void RTestVclnt2SubtitleDisableTwice::DoBeforePlaybackActionsL()
257 iVideoPlayer2->DisableSubtitles();
260 void RTestVclnt2SubtitleDisableTwice::DoDuringPlaybackActionsL()
262 iVideoPlayer2->DisableSubtitles();
266 // RTestVclnt2SubtitleWindowClipBefore
269 RTestVclnt2SubtitleWindowClipBefore* RTestVclnt2SubtitleWindowClipBefore::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
271 return new (ELeave) RTestVclnt2SubtitleWindowClipBefore(aTestName, aSectName, aKeyName, aExpectedError);
274 RTestVclnt2SubtitleWindowClipBefore::RTestVclnt2SubtitleWindowClipBefore(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
275 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
279 void RTestVclnt2SubtitleWindowClipBefore::DoBeforePlaybackActionsL()
281 RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
283 TSize windowSize(iWindow->Size().iWidth / 2, iWindow->Size().iHeight / 2);
285 // shrink the window clipping rect by half the height & width
286 iVideoPlayer2->SetWindowClipRectL(*iWindow, TRect(windowSize));
290 // RTestVclnt2SubtitleWindowClipDuring
293 RTestVclnt2SubtitleWindowClipDuring* RTestVclnt2SubtitleWindowClipDuring::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
295 return new (ELeave) RTestVclnt2SubtitleWindowClipDuring(aTestName, aSectName, aKeyName, aExpectedError);
298 RTestVclnt2SubtitleWindowClipDuring::RTestVclnt2SubtitleWindowClipDuring(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
299 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
303 void RTestVclnt2SubtitleWindowClipDuring::DoDuringPlaybackActionsL()
305 TSize windowSize(iWindow->Size().iWidth / 2, iWindow->Size().iHeight / 2);
307 // shrink the window clipping rect by half the height & width
308 iVideoPlayer2->SetWindowClipRectL(*iWindow, TRect(windowSize));
312 // RTestVclnt2SubtitleRotateBefore
315 RTestVclnt2SubtitleRotateBefore* RTestVclnt2SubtitleRotateBefore::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
317 return new (ELeave) RTestVclnt2SubtitleRotateBefore(aTestName, aSectName, aKeyName, aExpectedError);
320 RTestVclnt2SubtitleRotateBefore::RTestVclnt2SubtitleRotateBefore(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
321 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
325 void RTestVclnt2SubtitleRotateBefore::DoBeforePlaybackActionsL()
327 RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
328 iVideoPlayer2->SetRotationL(*iWindow, EVideoRotationClockwise180);
332 // RTestVclnt2SubtitleRotateDuring
335 RTestVclnt2SubtitleRotateDuring* RTestVclnt2SubtitleRotateDuring::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
337 return new (ELeave) RTestVclnt2SubtitleRotateDuring(aTestName, aSectName, aKeyName, aExpectedError);
340 RTestVclnt2SubtitleRotateDuring::RTestVclnt2SubtitleRotateDuring(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
341 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
345 void RTestVclnt2SubtitleRotateDuring::DoDuringPlaybackActionsL()
347 iVideoPlayer2->SetRotationL(*iWindow, EVideoRotationClockwise180);
351 // RTestVclnt2SubtitleRemoveDisplayDuring
354 RTestVclnt2SubtitleRemoveDisplayDuring* RTestVclnt2SubtitleRemoveDisplayDuring::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
356 return new (ELeave) RTestVclnt2SubtitleRemoveDisplayDuring(aTestName, aSectName, aKeyName, aExpectedError);
359 RTestVclnt2SubtitleRemoveDisplayDuring::RTestVclnt2SubtitleRemoveDisplayDuring(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
360 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
364 void RTestVclnt2SubtitleRemoveDisplayDuring::DoDuringPlaybackActionsL()
366 iVideoPlayer2->RemoveDisplayWindow(*iWindow);
367 iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow);
371 // RTestVclnt2SubtitleNotAvailable
374 RTestVclnt2SubtitleNotAvailable* RTestVclnt2SubtitleNotAvailable::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
376 return new (ELeave) RTestVclnt2SubtitleNotAvailable(aTestName, aSectName, aKeyName, aExpectedError);
379 RTestVclnt2SubtitleNotAvailable::RTestVclnt2SubtitleNotAvailable(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
380 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
384 void RTestVclnt2SubtitleNotAvailable::DoBeforePlaybackActionsL()
386 if (iVideoPlayer2->SubtitlesAvailable())
388 ERR_PRINTF1(_L("SubtitlesAvailable() returned ETrue. Expected EFalse."));
389 User::Leave(KErrGeneral);
392 TRAPD(err, iVideoPlayer2->EnableSubtitlesL());
394 if (KErrNotFound != err)
396 ERR_PRINTF3(_L("EnableSubtitlesL() left with %d. Expected %d."), err, KErrNotFound);
397 User::Leave(KErrGeneral);
402 // RTestVclnt2SubtitleLanguage
405 RTestVclnt2SubtitleLanguage* RTestVclnt2SubtitleLanguage::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
407 return new (ELeave) RTestVclnt2SubtitleLanguage(aTestName, aSectName, aKeyName, aExpectedError);
410 RTestVclnt2SubtitleLanguage::RTestVclnt2SubtitleLanguage(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
411 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
415 void RTestVclnt2SubtitleLanguage::DoBeforePlaybackActionsL()
417 RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
419 TLanguage lang = ELangNone;
420 TRAPD(err, lang = iVideoPlayer2->SubtitleLanguageL());
423 ERR_PRINTF3(_L("SubtitleLanguageL() left with %d. Expected %d."), err, KErrNone);
426 else if (ELangNone != lang)
428 // Languages are not supported; ELangNone should be returned.
429 ERR_PRINTF3(_L("SubtitleLanguageL() returned %d. Expected %d."), lang, ELangNone);
430 User::Leave(KErrGeneral);
434 TRAP(err, count = iVideoPlayer2->SupportedSubtitleLanguagesL().Count());
437 ERR_PRINTF3(_L("SupportedSubtitleLanguagesL() left with %d. Expected %d."), err, KErrNone);
438 User::Leave(KErrGeneral);
442 ERR_PRINTF1(_L("SupportedSubtitleLanguagesL() returned a non-empty array"));
443 User::Leave(KErrGeneral);
446 TRAP(err, iVideoPlayer2->SetSubtitleLanguageL(lang));
448 if (KErrNotSupported != err)
450 ERR_PRINTF3(_L("SetSubtitleLanguageL() left with %d. Expected %d."), err, KErrNone);
451 User::Leave(KErrGeneral);
456 // RTestVclnt2SubtitleRedraw
459 RTestVclnt2SubtitleRedraw* RTestVclnt2SubtitleRedraw::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError, TBool aEnableSubtitles)
461 return new (ELeave) RTestVclnt2SubtitleRedraw(aTestName, aSectName, aKeyName, aExpectedError, aEnableSubtitles);
464 RTestVclnt2SubtitleRedraw::RTestVclnt2SubtitleRedraw(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError, TBool aEnableSubtitles)
465 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError), iEnableSubtitles(aEnableSubtitles)
469 void RTestVclnt2SubtitleRedraw::DoBeforePlaybackActionsL()
471 if (iEnableSubtitles)
473 // The parent class will enable subtitle support
474 RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
478 void RTestVclnt2SubtitleRedraw::DoDuringPlaybackActionsL()
480 // Redraw the whole subtitle
481 iWindow->Invalidate();
482 LOG_CALL(iVideoPlayer2->RedrawSubtitle(*iWindow, TRect(iWindow->Size())));
486 // RTestVclnt2SubtitleRotateClipRedraw
489 RTestVclnt2SubtitleRotateClipRedraw* RTestVclnt2SubtitleRotateClipRedraw::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
491 return new (ELeave) RTestVclnt2SubtitleRotateClipRedraw(aTestName, aSectName, aKeyName, aExpectedError);
494 RTestVclnt2SubtitleRotateClipRedraw::RTestVclnt2SubtitleRotateClipRedraw(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
495 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
499 void RTestVclnt2SubtitleRotateClipRedraw::DoBeforePlaybackActionsL()
501 RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
503 iVideoPlayer2->SetRotationL(*iWindow, EVideoRotationClockwise90);
505 // shrink the window clipping rect by half the height & width
506 TSize windowSize(iWindow->Size().iWidth / 3, iWindow->Size().iHeight / 2);
507 iVideoPlayer2->SetWindowClipRectL(*iWindow, TRect(windowSize));
510 void RTestVclnt2SubtitleRotateClipRedraw::DoDuringPlaybackActionsL()
512 // Redraw the whole subtitle
513 iWindow->Invalidate();
514 iVideoPlayer2->RedrawSubtitle(*iWindow, TRect(iWindow->Size()));
518 // RTestVclnt2SubtitleMultipleWindows
521 RTestVclnt2SubtitleMultipleWindows* RTestVclnt2SubtitleMultipleWindows::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
523 return new (ELeave) RTestVclnt2SubtitleMultipleWindows(aTestName, aSectName, aKeyName, aExpectedError);
526 RTestVclnt2SubtitleMultipleWindows::RTestVclnt2SubtitleMultipleWindows(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
527 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
531 TVerdict RTestVclnt2SubtitleMultipleWindows::DoTestStepPreambleL()
533 TVerdict result = RTestVclnt2Subtitle::DoTestStepPreambleL();
540 iSecondaryWin = new(ELeave) RWindow(iWs);
542 // Construct an RWindow with a unique id. Use this pointer to get a unique number.
543 User::LeaveIfError(iSecondaryWin->Construct(iRootWindow, ((TInt) this) + 3));
544 iSecondaryWin->SetRequiredDisplayMode(EColor16MA);
545 iSecondaryWin->SetExtent(TPoint(0,0), TSize(100,100));
546 iSecondaryWin->SetVisible(ETrue);
547 iSecondaryWin->SetBackgroundColor(TRgb(0, 0));
548 iSecondaryWin->Activate();
549 iSecondaryWin->BeginRedraw();
550 iSecondaryWin->EndRedraw();
556 TVerdict RTestVclnt2SubtitleMultipleWindows::DoTestStepPostambleL()
559 delete iVideoPlayer2;
560 iVideoPlayer2 = NULL;
562 iSecondaryWin->Close();
563 delete iSecondaryWin;
564 iSecondaryWin = NULL;
566 // Base DoTestStepPostambleL
567 return RTestVclnt2Subtitle::DoTestStepPostambleL();
570 void RTestVclnt2SubtitleMultipleWindows::DoBeforePlaybackActionsL()
572 TRAPD(err, iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iSecondaryWin));
576 ERR_PRINTF3(_L("Adding second display window with AddDisplayWindowL() left with %d. Expected %d."), err, KErrNone);
580 RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
584 // RTestVclnt2SubtitleEnableTwice
587 RTestVclnt2SubtitleEnableTwice* RTestVclnt2SubtitleEnableTwice::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
589 return new (ELeave) RTestVclnt2SubtitleEnableTwice(aTestName, aSectName, aKeyName, aExpectedError);
592 RTestVclnt2SubtitleEnableTwice::RTestVclnt2SubtitleEnableTwice(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
593 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
597 void RTestVclnt2SubtitleEnableTwice::DoBeforePlaybackActionsL()
599 RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
601 // Enable subtitles again
602 TRAPD(err, iVideoPlayer2->EnableSubtitlesL());
604 if (KErrInUse != err)
606 ERR_PRINTF3(_L("Calling EnableSubtitlesL twice left with %d. Expected %d."), err, KErrInUse);
607 // Leave with KErrGeneral if err is no error. Otherwise leave with err.
608 User::Leave(KErrNone == err ? KErrGeneral : err);
613 // RTestVclnt2SubtitleEnableDisableStress
616 RTestVclnt2SubtitleEnableDisableStress* RTestVclnt2SubtitleEnableDisableStress::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
618 return new (ELeave) RTestVclnt2SubtitleEnableDisableStress(aTestName, aSectName, aKeyName, aExpectedError);
621 RTestVclnt2SubtitleEnableDisableStress::RTestVclnt2SubtitleEnableDisableStress(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
622 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
624 // Expect subtitles to be available if this is not being run with "subtitlesUnavailable" file.
625 iExpectAvailable = (aKeyName != _L("subtitleUnavailable"));
628 void RTestVclnt2SubtitleEnableDisableStress::DoBeforePlaybackActionsL()
630 TBool subtitlesAvail = iVideoPlayer2->SubtitlesAvailable();
632 if (iExpectAvailable != subtitlesAvail)
634 ERR_PRINTF1(_L("SubtitlesAvailable() gave unexpected result"));
635 User::Leave(KErrGeneral);
640 INFO_PRINTF1(_L("Enabling subtitles"));
641 iVideoPlayer2->EnableSubtitlesL();
645 INFO_PRINTF1(_L("Subtitles not available"));
648 iDisableNext = ETrue;
651 void RTestVclnt2SubtitleEnableDisableStress::DoDuringPlaybackActionsL()
653 TBool subtitlesAvail = iVideoPlayer2->SubtitlesAvailable();
655 if (iExpectAvailable != subtitlesAvail)
657 ERR_PRINTF1(_L("SubtitlesAvailable() gave unexpected result"));
658 User::Leave(KErrGeneral);
663 INFO_PRINTF1(_L("Disabling subtitles"));
664 iVideoPlayer2->DisableSubtitles();
666 else if (subtitlesAvail)
668 INFO_PRINTF1(_L("Enabling subtitles"));
669 iVideoPlayer2->EnableSubtitlesL();
673 INFO_PRINTF1(_L("Subtitles not available... cannot enable"));
676 iDisableNext = !iDisableNext;
677 iPlayTimer->After(KOneSecond / 4);
681 // RTestVclnt2SubtitleAlloc
684 RTestVclnt2SubtitleAlloc* RTestVclnt2SubtitleAlloc::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
686 return new (ELeave) RTestVclnt2SubtitleAlloc(aTestName, aSectName, aKeyName, aExpectedError);
689 RTestVclnt2SubtitleAlloc::RTestVclnt2SubtitleAlloc(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
690 : RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
694 TVerdict RTestVclnt2SubtitleAlloc::DoTestStepPreambleL()
696 // Don't do the normal initialization here. It will be done before each alloc test iteration.
700 TVerdict RTestVclnt2SubtitleAlloc::DoTestStepPostambleL()
702 // Don't do the normal cleanup here. It will be done after each alloc test iteration.
706 TVerdict RTestVclnt2SubtitleAlloc::PerformTestL()
708 TVerdict result = EFail;
709 TRAPD(err, result = RTestVclnt2Subtitle::DoTestStepPreambleL());
710 if (iError != KErrNone)
715 if (err == KErrNone && result == EPass && iError == KErrNone)
717 TRAP(err, result = RTestVclnt2AviPlayerStep::DoTestStepL());
719 if (iError != KErrNone)
725 // Call postable function, but don't overwrite verdict from previous test call results.
726 TVerdict postResult = RTestVclnt2Subtitle::DoTestStepPostambleL();
728 if (iError != KErrNone)
733 User::LeaveIfError(err);
738 if (EPass != postResult)
746 TVerdict RTestVclnt2SubtitleAlloc::DoTestStepL()
748 TVerdict allocTestResult = EFail;
749 TVerdict result = EFail;
751 TRAPD(err, result = PerformTestL());
753 if (err != KErrNone || result != EPass)
755 ERR_PRINTF1(_L("Failed to run test iteration without setting heap allocation failure flag"));
756 return allocTestResult;
759 TBool completed = EFalse;
761 for (TInt rate = 1; !completed; rate++)
763 __UHEAP_SETFAIL(RHeap::EFailNext, rate);
767 TRAPD(err, result = PerformTestL());
769 INFO_PRINTF3(_L("Iteration %d. Alloc failed %d times"), rate, __UHEAP_CHECKFAILURE);
771 if (__UHEAP_CHECKFAILURE == 0)
773 // Heap did not fail. Test should have passed with no errors.
774 if (KErrNone != result)
776 ERR_PRINTF2(_L("Failed on iteration %d. Test failed when no heap allocation failed"), rate);
777 allocTestResult = EFail;
781 INFO_PRINTF2(_L("Passed on iteration %d."), rate);
782 allocTestResult = EPass;
785 completed = ETrue; // Finished iterating the test
787 else if ((err == KErrNone && result == EPass) || (err == KErrNoMemory))
789 // Continue with next iteration if (a) alloc fail was handled and no error and a pass or
790 // (b) we got an out of memory error.
791 INFO_PRINTF3(_L("Iteration result is %d, error is %d. Starting next iteration"), result, err);
795 ERR_PRINTF4(_L("Failed on iteration %d. Test failed with error %d. Expected %d."), rate, err, KErrNoMemory);
797 allocTestResult = EFail;
803 __UHEAP_SETFAIL(RHeap::ENone, 0);
805 return allocTestResult;