os/mm/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer_subtitles.cpp
1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/mm/mmlibs/mmfw/tsrc/mmfintegrationtest/vclntavi/src/testvideoplayer_subtitles.cpp Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,806 @@
1.4 +// Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +//
1.18 +
1.19 +#include "testvideoplayer_subtitles.h"
1.20 +
1.21 +const TUint KCacheSize = 1000000; //1MB
1.22 +const TUint KMaxCacheSize = 50000000; //50MB
1.23 +
1.24 +
1.25 +CPlayTimer* CPlayTimer::NewL(RTestVclnt2Subtitle& aTestStep)
1.26 + {
1.27 + CPlayTimer* self = new (ELeave) CPlayTimer(aTestStep);
1.28 + CleanupStack::PushL(self);
1.29 + self->ConstructL();
1.30 + CleanupStack::Pop();
1.31 + return self;
1.32 + }
1.33 +
1.34 +CPlayTimer::CPlayTimer(RTestVclnt2Subtitle& aTestStep)
1.35 + : CTimer(EPriorityHigh), iTestStep(aTestStep)
1.36 + {
1.37 + CActiveScheduler::Add(this);
1.38 + }
1.39 +
1.40 +void CPlayTimer::RunL()
1.41 + {
1.42 + iTestStep.DoDuringPlaybackActionsL();
1.43 + }
1.44 +
1.45 +TInt CPlayTimer::RunError(TInt aError)
1.46 + {
1.47 + // Tell the test to fail with error code aError.
1.48 + iTestStep.FailTest(aError);
1.49 + return KErrNone;
1.50 + }
1.51 +
1.52 +//
1.53 +// RTestVclnt2Subtitle
1.54 +//
1.55 +
1.56 +RTestVclnt2Subtitle* RTestVclnt2Subtitle::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.57 + {
1.58 + return new (ELeave) RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError);
1.59 + }
1.60 +
1.61 +RTestVclnt2Subtitle::RTestVclnt2Subtitle(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.62 + : RTestVclnt2AviPlayerStep(aTestName, aSectName, aKeyName, aExpectedError)
1.63 + {
1.64 + }
1.65 +
1.66 +void RTestVclnt2Subtitle::FailTest(TInt aError)
1.67 + {
1.68 + ERR_PRINTF2(_L("Test step failed with error %d."), aError);
1.69 + iError = aError;
1.70 + iTestStepResult = EFail;
1.71 + CActiveScheduler::Stop();
1.72 + }
1.73 +
1.74 +TVerdict RTestVclnt2Subtitle::DoTestStepPreambleL()
1.75 + {
1.76 + User::LeaveIfError(SetCacheSize());
1.77 + TVerdict result = RTestVclnt2AviPlayerStep::DoTestStepPreambleL();
1.78 +
1.79 + if (result == EPass)
1.80 + {
1.81 + iPlayTimer = CPlayTimer::NewL(*this);
1.82 + }
1.83 +
1.84 + return result;
1.85 + }
1.86 +
1.87 +TVerdict RTestVclnt2Subtitle::DoTestStepPostambleL()
1.88 + {
1.89 + User::LeaveIfError(RevertCacheSize());
1.90 +
1.91 + delete iPlayTimer;
1.92 + iPlayTimer = NULL;
1.93 + return RTestVclnt2AviPlayerStep::DoTestStepPostambleL();
1.94 + }
1.95 +
1.96 +void RTestVclnt2Subtitle::DoBeforePlaybackActionsL()
1.97 + {
1.98 + if (!iVideoPlayer2->SubtitlesAvailable())
1.99 + {
1.100 + ERR_PRINTF1(_L("SubtitlesAvailable() returned EFalse. Expected ETrue."));
1.101 + User::Leave(KErrNotSupported);
1.102 + }
1.103 +
1.104 + iVideoPlayer2->EnableSubtitlesL();
1.105 + }
1.106 +
1.107 +void RTestVclnt2Subtitle::DoDuringPlaybackActionsL()
1.108 + {
1.109 + }
1.110 +
1.111 +void RTestVclnt2Subtitle::FsmL(TVclntTestPlayEvents aEventCode)
1.112 + {
1.113 + if (FsmCheck(aEventCode))
1.114 + {
1.115 + switch (aEventCode)
1.116 + {
1.117 + case EVPIdle:
1.118 + // Open iVideoPlayer2
1.119 + LOG_CALL(iVideoPlayer2->OpenFileL(iFilename, KMmfTestAviPlayControllerUid));
1.120 + PrepareState(EVPOpenComplete, KErrNone);
1.121 + break;
1.122 +
1.123 + case EVPOpenComplete:
1.124 + // Prepare iVideoPlayer2
1.125 + LOG_CALL(iVideoPlayer2->Prepare());
1.126 + PrepareState(EVPPrepareComplete, KErrNone);
1.127 + break;
1.128 +
1.129 + case EVPPrepareComplete:
1.130 + // Add display window using default values - ie. video extent & window clipping
1.131 + // defaulted to whole window.
1.132 + LOG_CALL(iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow));
1.133 +
1.134 + // Perform any actions that the class or subclasses need before starting video playback.
1.135 + DoBeforePlaybackActionsL();
1.136 +
1.137 + // trigger the video to start playing
1.138 + iError = KErrTimedOut;
1.139 + PrepareState(EVPPlayComplete, KErrNone);
1.140 + LOG_CALL(iVideoPlayer2->Play());
1.141 +
1.142 + // Trigger a call to DoDuringPlaybackActionsL
1.143 + iPlayTimer->After(KOneSecond);
1.144 + break;
1.145 +
1.146 + case EVPPlayComplete:
1.147 + iTestStepResult = EPass;
1.148 + iPlayTimer->Cancel();
1.149 + CActiveScheduler::Stop();
1.150 + break;
1.151 + }
1.152 + }
1.153 + }
1.154 +
1.155 +TInt RTestVclnt2Subtitle::SetCacheSize()
1.156 + {
1.157 + TInt error=UserSvr::HalFunction(EHalGroupVM,EVMHalSetCacheSize,(TAny*)KCacheSize,(TAny*)KMaxCacheSize);
1.158 + TInt ret=CheckCacheError(error);
1.159 +
1.160 + return ret;
1.161 + }
1.162 +
1.163 +TInt RTestVclnt2Subtitle::CheckCacheError(TInt aError)
1.164 + {
1.165 + TInt ret=KErrNone;
1.166 + #ifdef __WINSCW__
1.167 + //Winscw does not support getting cache size. Ignoring -5 error
1.168 + if(aError!=KErrNone)
1.169 + {
1.170 + if(aError!=KErrNotSupported)
1.171 + {
1.172 + INFO_PRINTF2(_L("Could not get the cache size %d"),aError);
1.173 + ret=aError;
1.174 + }
1.175 + }
1.176 + #else
1.177 + if(aError!=KErrNone)
1.178 + {//For ARMV5 we stop for all errors
1.179 + INFO_PRINTF2(_L("Could not get the cache size %d"),aError);
1.180 + ret=aError;
1.181 + }
1.182 + #endif
1.183 + return ret;
1.184 + }
1.185 +
1.186 +TInt RTestVclnt2Subtitle::RevertCacheSize()
1.187 + {
1.188 + TUint defaultCacheSize = 0;
1.189 + //Done with the test. Setting 0 makes the cache size revert back to boot up values
1.190 + TInt error=UserSvr::HalFunction(EHalGroupVM,EVMHalSetCacheSize,(TAny*)defaultCacheSize,(TAny*)defaultCacheSize);
1.191 + return CheckCacheError(error);
1.192 + }
1.193 +
1.194 +
1.195 +//
1.196 +// RTestVclnt2SubtitleEnableDuringPlayback
1.197 +//
1.198 +
1.199 +RTestVclnt2SubtitleEnableDuringPlayback* RTestVclnt2SubtitleEnableDuringPlayback::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.200 + {
1.201 + return new (ELeave) RTestVclnt2SubtitleEnableDuringPlayback(aTestName, aSectName, aKeyName, aExpectedError);
1.202 + }
1.203 +
1.204 +RTestVclnt2SubtitleEnableDuringPlayback::RTestVclnt2SubtitleEnableDuringPlayback(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.205 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.206 + {
1.207 + }
1.208 +
1.209 +void RTestVclnt2SubtitleEnableDuringPlayback::DoBeforePlaybackActionsL()
1.210 + {
1.211 + INFO_PRINTF1(_L("Don't enable subtitles before playback; do nothing in DoBeforePlaybackActionsL()"));
1.212 + }
1.213 +
1.214 +void RTestVclnt2SubtitleEnableDuringPlayback::DoDuringPlaybackActionsL()
1.215 + {
1.216 + if (!iVideoPlayer2->SubtitlesAvailable())
1.217 + {
1.218 + ERR_PRINTF1(_L("SubtitlesAvailable() returned EFalse. Expected ETrue."));
1.219 + User::Leave(KErrNotSupported);
1.220 + }
1.221 +
1.222 + iVideoPlayer2->EnableSubtitlesL();
1.223 + }
1.224 +
1.225 +//
1.226 +// RTestVclnt2SubtitleDisableDuringPlayback
1.227 +//
1.228 +
1.229 +RTestVclnt2SubtitleDisableDuringPlayback* RTestVclnt2SubtitleDisableDuringPlayback::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.230 + {
1.231 + return new (ELeave) RTestVclnt2SubtitleDisableDuringPlayback(aTestName, aSectName, aKeyName, aExpectedError);
1.232 + }
1.233 +
1.234 +RTestVclnt2SubtitleDisableDuringPlayback::RTestVclnt2SubtitleDisableDuringPlayback(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.235 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.236 + {
1.237 + }
1.238 +
1.239 +void RTestVclnt2SubtitleDisableDuringPlayback::DoDuringPlaybackActionsL()
1.240 + {
1.241 + iVideoPlayer2->DisableSubtitles();
1.242 + }
1.243 +
1.244 +//
1.245 +// RTestVclnt2SubtitleDisableTwice
1.246 +//
1.247 +
1.248 +RTestVclnt2SubtitleDisableTwice* RTestVclnt2SubtitleDisableTwice::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.249 + {
1.250 + return new (ELeave) RTestVclnt2SubtitleDisableTwice(aTestName, aSectName, aKeyName, aExpectedError);
1.251 + }
1.252 +
1.253 +RTestVclnt2SubtitleDisableTwice::RTestVclnt2SubtitleDisableTwice(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.254 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.255 + {
1.256 + }
1.257 +
1.258 +void RTestVclnt2SubtitleDisableTwice::DoBeforePlaybackActionsL()
1.259 + {
1.260 + iVideoPlayer2->DisableSubtitles();
1.261 + }
1.262 +
1.263 +void RTestVclnt2SubtitleDisableTwice::DoDuringPlaybackActionsL()
1.264 + {
1.265 + iVideoPlayer2->DisableSubtitles();
1.266 + }
1.267 +
1.268 +//
1.269 +// RTestVclnt2SubtitleWindowClipBefore
1.270 +//
1.271 +
1.272 +RTestVclnt2SubtitleWindowClipBefore* RTestVclnt2SubtitleWindowClipBefore::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.273 + {
1.274 + return new (ELeave) RTestVclnt2SubtitleWindowClipBefore(aTestName, aSectName, aKeyName, aExpectedError);
1.275 + }
1.276 +
1.277 +RTestVclnt2SubtitleWindowClipBefore::RTestVclnt2SubtitleWindowClipBefore(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.278 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.279 + {
1.280 + }
1.281 +
1.282 +void RTestVclnt2SubtitleWindowClipBefore::DoBeforePlaybackActionsL()
1.283 + {
1.284 + RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
1.285 +
1.286 + TSize windowSize(iWindow->Size().iWidth / 2, iWindow->Size().iHeight / 2);
1.287 +
1.288 + // shrink the window clipping rect by half the height & width
1.289 + iVideoPlayer2->SetWindowClipRectL(*iWindow, TRect(windowSize));
1.290 + }
1.291 +
1.292 +//
1.293 +// RTestVclnt2SubtitleWindowClipDuring
1.294 +//
1.295 +
1.296 +RTestVclnt2SubtitleWindowClipDuring* RTestVclnt2SubtitleWindowClipDuring::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.297 + {
1.298 + return new (ELeave) RTestVclnt2SubtitleWindowClipDuring(aTestName, aSectName, aKeyName, aExpectedError);
1.299 + }
1.300 +
1.301 +RTestVclnt2SubtitleWindowClipDuring::RTestVclnt2SubtitleWindowClipDuring(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.302 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.303 + {
1.304 + }
1.305 +
1.306 +void RTestVclnt2SubtitleWindowClipDuring::DoDuringPlaybackActionsL()
1.307 + {
1.308 + TSize windowSize(iWindow->Size().iWidth / 2, iWindow->Size().iHeight / 2);
1.309 +
1.310 + // shrink the window clipping rect by half the height & width
1.311 + iVideoPlayer2->SetWindowClipRectL(*iWindow, TRect(windowSize));
1.312 + }
1.313 +
1.314 +//
1.315 +// RTestVclnt2SubtitleRotateBefore
1.316 +//
1.317 +
1.318 +RTestVclnt2SubtitleRotateBefore* RTestVclnt2SubtitleRotateBefore::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.319 + {
1.320 + return new (ELeave) RTestVclnt2SubtitleRotateBefore(aTestName, aSectName, aKeyName, aExpectedError);
1.321 + }
1.322 +
1.323 +RTestVclnt2SubtitleRotateBefore::RTestVclnt2SubtitleRotateBefore(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.324 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.325 + {
1.326 + }
1.327 +
1.328 +void RTestVclnt2SubtitleRotateBefore::DoBeforePlaybackActionsL()
1.329 + {
1.330 + RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
1.331 + iVideoPlayer2->SetRotationL(*iWindow, EVideoRotationClockwise180);
1.332 + }
1.333 +
1.334 +//
1.335 +// RTestVclnt2SubtitleRotateDuring
1.336 +//
1.337 +
1.338 +RTestVclnt2SubtitleRotateDuring* RTestVclnt2SubtitleRotateDuring::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.339 + {
1.340 + return new (ELeave) RTestVclnt2SubtitleRotateDuring(aTestName, aSectName, aKeyName, aExpectedError);
1.341 + }
1.342 +
1.343 +RTestVclnt2SubtitleRotateDuring::RTestVclnt2SubtitleRotateDuring(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.344 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.345 + {
1.346 + }
1.347 +
1.348 +void RTestVclnt2SubtitleRotateDuring::DoDuringPlaybackActionsL()
1.349 + {
1.350 + iVideoPlayer2->SetRotationL(*iWindow, EVideoRotationClockwise180);
1.351 + }
1.352 +
1.353 +//
1.354 +// RTestVclnt2SubtitleRemoveDisplayDuring
1.355 +//
1.356 +
1.357 +RTestVclnt2SubtitleRemoveDisplayDuring* RTestVclnt2SubtitleRemoveDisplayDuring::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.358 + {
1.359 + return new (ELeave) RTestVclnt2SubtitleRemoveDisplayDuring(aTestName, aSectName, aKeyName, aExpectedError);
1.360 + }
1.361 +
1.362 +RTestVclnt2SubtitleRemoveDisplayDuring::RTestVclnt2SubtitleRemoveDisplayDuring(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.363 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.364 + {
1.365 + }
1.366 +
1.367 +void RTestVclnt2SubtitleRemoveDisplayDuring::DoDuringPlaybackActionsL()
1.368 + {
1.369 + iVideoPlayer2->RemoveDisplayWindow(*iWindow);
1.370 + iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iWindow);
1.371 + }
1.372 +
1.373 +//
1.374 +// RTestVclnt2SubtitleNotAvailable
1.375 +//
1.376 +
1.377 +RTestVclnt2SubtitleNotAvailable* RTestVclnt2SubtitleNotAvailable::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.378 + {
1.379 + return new (ELeave) RTestVclnt2SubtitleNotAvailable(aTestName, aSectName, aKeyName, aExpectedError);
1.380 + }
1.381 +
1.382 +RTestVclnt2SubtitleNotAvailable::RTestVclnt2SubtitleNotAvailable(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.383 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.384 + {
1.385 + }
1.386 +
1.387 +void RTestVclnt2SubtitleNotAvailable::DoBeforePlaybackActionsL()
1.388 + {
1.389 + if (iVideoPlayer2->SubtitlesAvailable())
1.390 + {
1.391 + ERR_PRINTF1(_L("SubtitlesAvailable() returned ETrue. Expected EFalse."));
1.392 + User::Leave(KErrGeneral);
1.393 + }
1.394 +
1.395 + TRAPD(err, iVideoPlayer2->EnableSubtitlesL());
1.396 +
1.397 + if (KErrNotFound != err)
1.398 + {
1.399 + ERR_PRINTF3(_L("EnableSubtitlesL() left with %d. Expected %d."), err, KErrNotFound);
1.400 + User::Leave(KErrGeneral);
1.401 + }
1.402 + }
1.403 +
1.404 +//
1.405 +// RTestVclnt2SubtitleLanguage
1.406 +//
1.407 +
1.408 +RTestVclnt2SubtitleLanguage* RTestVclnt2SubtitleLanguage::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.409 + {
1.410 + return new (ELeave) RTestVclnt2SubtitleLanguage(aTestName, aSectName, aKeyName, aExpectedError);
1.411 + }
1.412 +
1.413 +RTestVclnt2SubtitleLanguage::RTestVclnt2SubtitleLanguage(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.414 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.415 + {
1.416 + }
1.417 +
1.418 +void RTestVclnt2SubtitleLanguage::DoBeforePlaybackActionsL()
1.419 + {
1.420 + RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
1.421 +
1.422 + TLanguage lang = ELangNone;
1.423 + TRAPD(err, lang = iVideoPlayer2->SubtitleLanguageL());
1.424 + if (KErrNone != err)
1.425 + {
1.426 + ERR_PRINTF3(_L("SubtitleLanguageL() left with %d. Expected %d."), err, KErrNone);
1.427 + User::Leave(err);
1.428 + }
1.429 + else if (ELangNone != lang)
1.430 + {
1.431 + // Languages are not supported; ELangNone should be returned.
1.432 + ERR_PRINTF3(_L("SubtitleLanguageL() returned %d. Expected %d."), lang, ELangNone);
1.433 + User::Leave(KErrGeneral);
1.434 + }
1.435 +
1.436 + TInt count = -1;
1.437 + TRAP(err, count = iVideoPlayer2->SupportedSubtitleLanguagesL().Count());
1.438 + if (KErrNone != err)
1.439 + {
1.440 + ERR_PRINTF3(_L("SupportedSubtitleLanguagesL() left with %d. Expected %d."), err, KErrNone);
1.441 + User::Leave(KErrGeneral);
1.442 + }
1.443 + if (count != 0)
1.444 + {
1.445 + ERR_PRINTF1(_L("SupportedSubtitleLanguagesL() returned a non-empty array"));
1.446 + User::Leave(KErrGeneral);
1.447 + }
1.448 +
1.449 + TRAP(err, iVideoPlayer2->SetSubtitleLanguageL(lang));
1.450 +
1.451 + if (KErrNotSupported != err)
1.452 + {
1.453 + ERR_PRINTF3(_L("SetSubtitleLanguageL() left with %d. Expected %d."), err, KErrNone);
1.454 + User::Leave(KErrGeneral);
1.455 + }
1.456 + }
1.457 +
1.458 +//
1.459 +// RTestVclnt2SubtitleRedraw
1.460 +//
1.461 +
1.462 +RTestVclnt2SubtitleRedraw* RTestVclnt2SubtitleRedraw::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError, TBool aEnableSubtitles)
1.463 + {
1.464 + return new (ELeave) RTestVclnt2SubtitleRedraw(aTestName, aSectName, aKeyName, aExpectedError, aEnableSubtitles);
1.465 + }
1.466 +
1.467 +RTestVclnt2SubtitleRedraw::RTestVclnt2SubtitleRedraw(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError, TBool aEnableSubtitles)
1.468 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError), iEnableSubtitles(aEnableSubtitles)
1.469 + {
1.470 + }
1.471 +
1.472 +void RTestVclnt2SubtitleRedraw::DoBeforePlaybackActionsL()
1.473 + {
1.474 + if (iEnableSubtitles)
1.475 + {
1.476 + // The parent class will enable subtitle support
1.477 + RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
1.478 + }
1.479 + }
1.480 +
1.481 +void RTestVclnt2SubtitleRedraw::DoDuringPlaybackActionsL()
1.482 + {
1.483 + // Redraw the whole subtitle
1.484 + iWindow->Invalidate();
1.485 + LOG_CALL(iVideoPlayer2->RedrawSubtitle(*iWindow, TRect(iWindow->Size())));
1.486 + }
1.487 +
1.488 +//
1.489 +// RTestVclnt2SubtitleRotateClipRedraw
1.490 +//
1.491 +
1.492 +RTestVclnt2SubtitleRotateClipRedraw* RTestVclnt2SubtitleRotateClipRedraw::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.493 + {
1.494 + return new (ELeave) RTestVclnt2SubtitleRotateClipRedraw(aTestName, aSectName, aKeyName, aExpectedError);
1.495 + }
1.496 +
1.497 +RTestVclnt2SubtitleRotateClipRedraw::RTestVclnt2SubtitleRotateClipRedraw(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.498 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.499 + {
1.500 + }
1.501 +
1.502 +void RTestVclnt2SubtitleRotateClipRedraw::DoBeforePlaybackActionsL()
1.503 + {
1.504 + RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
1.505 +
1.506 + iVideoPlayer2->SetRotationL(*iWindow, EVideoRotationClockwise90);
1.507 +
1.508 + // shrink the window clipping rect by half the height & width
1.509 + TSize windowSize(iWindow->Size().iWidth / 3, iWindow->Size().iHeight / 2);
1.510 + iVideoPlayer2->SetWindowClipRectL(*iWindow, TRect(windowSize));
1.511 + }
1.512 +
1.513 +void RTestVclnt2SubtitleRotateClipRedraw::DoDuringPlaybackActionsL()
1.514 + {
1.515 + // Redraw the whole subtitle
1.516 + iWindow->Invalidate();
1.517 + iVideoPlayer2->RedrawSubtitle(*iWindow, TRect(iWindow->Size()));
1.518 + }
1.519 +
1.520 +//
1.521 +// RTestVclnt2SubtitleMultipleWindows
1.522 +//
1.523 +
1.524 +RTestVclnt2SubtitleMultipleWindows* RTestVclnt2SubtitleMultipleWindows::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.525 + {
1.526 + return new (ELeave) RTestVclnt2SubtitleMultipleWindows(aTestName, aSectName, aKeyName, aExpectedError);
1.527 + }
1.528 +
1.529 +RTestVclnt2SubtitleMultipleWindows::RTestVclnt2SubtitleMultipleWindows(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.530 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.531 + {
1.532 + }
1.533 +
1.534 +TVerdict RTestVclnt2SubtitleMultipleWindows::DoTestStepPreambleL()
1.535 + {
1.536 + TVerdict result = RTestVclnt2Subtitle::DoTestStepPreambleL();
1.537 +
1.538 + if (result != EPass)
1.539 + {
1.540 + return result;
1.541 + }
1.542 +
1.543 + iSecondaryWin = new(ELeave) RWindow(iWs);
1.544 +
1.545 + // Construct an RWindow with a unique id. Use this pointer to get a unique number.
1.546 + User::LeaveIfError(iSecondaryWin->Construct(iRootWindow, ((TInt) this) + 3));
1.547 + iSecondaryWin->SetRequiredDisplayMode(EColor16MA);
1.548 + iSecondaryWin->SetExtent(TPoint(0,0), TSize(100,100));
1.549 + iSecondaryWin->SetVisible(ETrue);
1.550 + iSecondaryWin->SetBackgroundColor(TRgb(0, 0));
1.551 + iSecondaryWin->Activate();
1.552 + iSecondaryWin->BeginRedraw();
1.553 + iSecondaryWin->EndRedraw();
1.554 + iWs.Flush();
1.555 +
1.556 + return EPass;
1.557 + }
1.558 +
1.559 +TVerdict RTestVclnt2SubtitleMultipleWindows::DoTestStepPostambleL()
1.560 + {
1.561 +
1.562 + delete iVideoPlayer2;
1.563 + iVideoPlayer2 = NULL;
1.564 +
1.565 + iSecondaryWin->Close();
1.566 + delete iSecondaryWin;
1.567 + iSecondaryWin = NULL;
1.568 +
1.569 + // Base DoTestStepPostambleL
1.570 + return RTestVclnt2Subtitle::DoTestStepPostambleL();
1.571 + }
1.572 +
1.573 +void RTestVclnt2SubtitleMultipleWindows::DoBeforePlaybackActionsL()
1.574 + {
1.575 + TRAPD(err, iVideoPlayer2->AddDisplayWindowL(iWs, *iScreen, *iSecondaryWin));
1.576 +
1.577 + if (err != KErrNone)
1.578 + {
1.579 + ERR_PRINTF3(_L("Adding second display window with AddDisplayWindowL() left with %d. Expected %d."), err, KErrNone);
1.580 + User::Leave(err);
1.581 + }
1.582 +
1.583 + RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
1.584 + }
1.585 +
1.586 +//
1.587 +// RTestVclnt2SubtitleEnableTwice
1.588 +//
1.589 +
1.590 +RTestVclnt2SubtitleEnableTwice* RTestVclnt2SubtitleEnableTwice::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.591 + {
1.592 + return new (ELeave) RTestVclnt2SubtitleEnableTwice(aTestName, aSectName, aKeyName, aExpectedError);
1.593 + }
1.594 +
1.595 +RTestVclnt2SubtitleEnableTwice::RTestVclnt2SubtitleEnableTwice(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.596 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.597 + {
1.598 + }
1.599 +
1.600 +void RTestVclnt2SubtitleEnableTwice::DoBeforePlaybackActionsL()
1.601 + {
1.602 + RTestVclnt2Subtitle::DoBeforePlaybackActionsL();
1.603 +
1.604 + // Enable subtitles again
1.605 + TRAPD(err, iVideoPlayer2->EnableSubtitlesL());
1.606 +
1.607 + if (KErrInUse != err)
1.608 + {
1.609 + ERR_PRINTF3(_L("Calling EnableSubtitlesL twice left with %d. Expected %d."), err, KErrInUse);
1.610 + // Leave with KErrGeneral if err is no error. Otherwise leave with err.
1.611 + User::Leave(KErrNone == err ? KErrGeneral : err);
1.612 + }
1.613 + }
1.614 +
1.615 +//
1.616 +// RTestVclnt2SubtitleEnableDisableStress
1.617 +//
1.618 +
1.619 +RTestVclnt2SubtitleEnableDisableStress* RTestVclnt2SubtitleEnableDisableStress::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.620 + {
1.621 + return new (ELeave) RTestVclnt2SubtitleEnableDisableStress(aTestName, aSectName, aKeyName, aExpectedError);
1.622 + }
1.623 +
1.624 +RTestVclnt2SubtitleEnableDisableStress::RTestVclnt2SubtitleEnableDisableStress(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.625 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.626 + {
1.627 + // Expect subtitles to be available if this is not being run with "subtitlesUnavailable" file.
1.628 + iExpectAvailable = (aKeyName != _L("subtitleUnavailable"));
1.629 + }
1.630 +
1.631 +void RTestVclnt2SubtitleEnableDisableStress::DoBeforePlaybackActionsL()
1.632 + {
1.633 + TBool subtitlesAvail = iVideoPlayer2->SubtitlesAvailable();
1.634 +
1.635 + if (iExpectAvailable != subtitlesAvail)
1.636 + {
1.637 + ERR_PRINTF1(_L("SubtitlesAvailable() gave unexpected result"));
1.638 + User::Leave(KErrGeneral);
1.639 + }
1.640 +
1.641 + if (subtitlesAvail)
1.642 + {
1.643 + INFO_PRINTF1(_L("Enabling subtitles"));
1.644 + iVideoPlayer2->EnableSubtitlesL();
1.645 + }
1.646 + else
1.647 + {
1.648 + INFO_PRINTF1(_L("Subtitles not available"));
1.649 + }
1.650 +
1.651 + iDisableNext = ETrue;
1.652 + }
1.653 +
1.654 +void RTestVclnt2SubtitleEnableDisableStress::DoDuringPlaybackActionsL()
1.655 + {
1.656 + TBool subtitlesAvail = iVideoPlayer2->SubtitlesAvailable();
1.657 +
1.658 + if (iExpectAvailable != subtitlesAvail)
1.659 + {
1.660 + ERR_PRINTF1(_L("SubtitlesAvailable() gave unexpected result"));
1.661 + User::Leave(KErrGeneral);
1.662 + }
1.663 +
1.664 + if (iDisableNext)
1.665 + {
1.666 + INFO_PRINTF1(_L("Disabling subtitles"));
1.667 + iVideoPlayer2->DisableSubtitles();
1.668 + }
1.669 + else if (subtitlesAvail)
1.670 + {
1.671 + INFO_PRINTF1(_L("Enabling subtitles"));
1.672 + iVideoPlayer2->EnableSubtitlesL();
1.673 + }
1.674 + else
1.675 + {
1.676 + INFO_PRINTF1(_L("Subtitles not available... cannot enable"));
1.677 + }
1.678 +
1.679 + iDisableNext = !iDisableNext;
1.680 + iPlayTimer->After(KOneSecond / 4);
1.681 + }
1.682 +
1.683 +//
1.684 +// RTestVclnt2SubtitleAlloc
1.685 +//
1.686 +
1.687 +RTestVclnt2SubtitleAlloc* RTestVclnt2SubtitleAlloc::NewL(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.688 + {
1.689 + return new (ELeave) RTestVclnt2SubtitleAlloc(aTestName, aSectName, aKeyName, aExpectedError);
1.690 + }
1.691 +
1.692 +RTestVclnt2SubtitleAlloc::RTestVclnt2SubtitleAlloc(const TDesC& aTestName, const TDesC& aSectName, const TDesC& aKeyName, TInt aExpectedError)
1.693 +: RTestVclnt2Subtitle(aTestName, aSectName, aKeyName, aExpectedError)
1.694 + {
1.695 + }
1.696 +
1.697 +TVerdict RTestVclnt2SubtitleAlloc::DoTestStepPreambleL()
1.698 + {
1.699 + // Don't do the normal initialization here. It will be done before each alloc test iteration.
1.700 + return EPass;
1.701 + }
1.702 +
1.703 +TVerdict RTestVclnt2SubtitleAlloc::DoTestStepPostambleL()
1.704 + {
1.705 + // Don't do the normal cleanup here. It will be done after each alloc test iteration.
1.706 + return EPass;
1.707 + }
1.708 +
1.709 +TVerdict RTestVclnt2SubtitleAlloc::PerformTestL()
1.710 + {
1.711 + TVerdict result = EFail;
1.712 + TRAPD(err, result = RTestVclnt2Subtitle::DoTestStepPreambleL());
1.713 + if (iError != KErrNone)
1.714 + {
1.715 + err = iError;
1.716 + }
1.717 +
1.718 + if (err == KErrNone && result == EPass && iError == KErrNone)
1.719 + {
1.720 + TRAP(err, result = RTestVclnt2AviPlayerStep::DoTestStepL());
1.721 +
1.722 + if (iError != KErrNone)
1.723 + {
1.724 + err = iError;
1.725 + }
1.726 + }
1.727 +
1.728 + // Call postable function, but don't overwrite verdict from previous test call results.
1.729 + TVerdict postResult = RTestVclnt2Subtitle::DoTestStepPostambleL();
1.730 +
1.731 + if (iError != KErrNone)
1.732 + {
1.733 + err = iError;
1.734 + }
1.735 +
1.736 + User::LeaveIfError(err);
1.737 + if (EPass != result)
1.738 + {
1.739 + return result;
1.740 + }
1.741 + if (EPass != postResult)
1.742 + {
1.743 + return postResult;
1.744 + }
1.745 +
1.746 + return EPass;
1.747 + }
1.748 +
1.749 +TVerdict RTestVclnt2SubtitleAlloc::DoTestStepL()
1.750 + {
1.751 + TVerdict allocTestResult = EFail;
1.752 + TVerdict result = EFail;
1.753 +
1.754 + TRAPD(err, result = PerformTestL());
1.755 +
1.756 + if (err != KErrNone || result != EPass)
1.757 + {
1.758 + ERR_PRINTF1(_L("Failed to run test iteration without setting heap allocation failure flag"));
1.759 + return allocTestResult;
1.760 + }
1.761 +
1.762 + TBool completed = EFalse;
1.763 +
1.764 + for (TInt rate = 1; !completed; rate++)
1.765 + {
1.766 + __UHEAP_SETFAIL(RHeap::EFailNext, rate);
1.767 + __MM_HEAP_MARK;
1.768 +
1.769 + result = EFail;
1.770 + TRAPD(err, result = PerformTestL());
1.771 +
1.772 + INFO_PRINTF3(_L("Iteration %d. Alloc failed %d times"), rate, __UHEAP_CHECKFAILURE);
1.773 +
1.774 + if (__UHEAP_CHECKFAILURE == 0)
1.775 + {
1.776 + // Heap did not fail. Test should have passed with no errors.
1.777 + if (KErrNone != result)
1.778 + {
1.779 + ERR_PRINTF2(_L("Failed on iteration %d. Test failed when no heap allocation failed"), rate);
1.780 + allocTestResult = EFail;
1.781 + }
1.782 + else
1.783 + {
1.784 + INFO_PRINTF2(_L("Passed on iteration %d."), rate);
1.785 + allocTestResult = EPass;
1.786 + }
1.787 +
1.788 + completed = ETrue; // Finished iterating the test
1.789 + }
1.790 + else if ((err == KErrNone && result == EPass) || (err == KErrNoMemory))
1.791 + {
1.792 + // Continue with next iteration if (a) alloc fail was handled and no error and a pass or
1.793 + // (b) we got an out of memory error.
1.794 + INFO_PRINTF3(_L("Iteration result is %d, error is %d. Starting next iteration"), result, err);
1.795 + }
1.796 + else
1.797 + {
1.798 + ERR_PRINTF4(_L("Failed on iteration %d. Test failed with error %d. Expected %d."), rate, err, KErrNoMemory);
1.799 + completed = ETrue;
1.800 + allocTestResult = EFail;
1.801 + }
1.802 +
1.803 + __MM_HEAP_MARKEND;
1.804 + }
1.805 +
1.806 + __UHEAP_SETFAIL(RHeap::ENone, 0);
1.807 +
1.808 + return allocTestResult;
1.809 + }