mmlibs/mmfw/tsrc/mmfunittest/VCLNT/TSU_MMF_VCLNT_01/src/TestStepAllocFailVidPlayer.cpp
author hgs
Thu, 16 Sep 2010 18:57:38 +0100
changeset 58 b6dbf97aba93
parent 41 f7bf1ed8db72
permissions -rw-r--r--
2010wk36_01
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
58
b6dbf97aba93 2010wk36_01
hgs
parents: 41
diff changeset
     1
// Copyright (c) 2002-2010 Nokia Corporation and/or its subsidiary(-ies).
41
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
     2
// All rights reserved.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
     3
// This component and the accompanying materials are made available
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
     4
// under the terms of "Eclipse Public License v1.0"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
     5
// which accompanies this distribution, and is available
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
     7
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
     8
// Initial Contributors:
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
     9
// Nokia Corporation - initial contribution.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    10
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    11
// Contributors:
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    12
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    13
// Description:
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    14
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    15
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    16
// EPOC includes
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    17
#include <e32base.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    18
#include <e32hal.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    19
#include <e32test.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    20
#include <e32keys.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    21
#include <c32comm.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    22
#include <f32file.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    23
#include <etel.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    24
#include <etelmm.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    25
#include <hal.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    26
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    27
// Test system includes
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    28
#include <testframework.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    29
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    30
#include <mmf/common/mmfstandardcustomcommands.h>  
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    31
#include <mmf/common/mmfvideo.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    32
#include <mmf/server/mmfdes.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    33
#include <mmf/server/mmffile.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    34
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    35
#include <mmf/common/mmfcontroller.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    36
#include <videoplayer.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    37
#include <videorecorder.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    38
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    39
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    40
#include <videoplayer2.h>
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    41
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    42
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    43
// Specific includes for this test suite
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    44
#include "TestStepUnitMMFVidClient.h"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    45
#include "TestSuiteUnitMMFVidClient.h"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    46
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    47
// Specific includes for these test steps
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    48
#include "TestStepAllocFailVidPlayer.h"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    49
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    50
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    51
// --------------------------------------------
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    52
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    53
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    54
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    55
 * Static constructor for CTestStepOOMVidPlayerNew.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    56
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    57
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    58
 * @return	"CTestStepOOMVidPlayerNew*"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    59
 *			The constructed CTestStepOOMVidPlayerNew
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    60
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    61
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    62
CTestStepOOMVidPlayerNew* CTestStepOOMVidPlayerNew::NewL(TBool aUseSurface)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    63
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    64
	CTestStepOOMVidPlayerNew* self = new(ELeave) CTestStepOOMVidPlayerNew(aUseSurface);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    65
	return self;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    66
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    67
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    68
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    69
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    70
 * Test step constructor.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    71
 * Each test step initialises its own name.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    72
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    73
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    74
CTestStepOOMVidPlayerNew::CTestStepOOMVidPlayerNew(TBool aUseSurface) 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    75
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    76
	iTestStepResult = EPass;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    77
	// store the name of this test case
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    78
	// this is the name that is used by the script file
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    79
	iVpu2 = aUseSurface;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    80
	if (aUseSurface)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    81
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    82
		iTestStepName = _L("MM-MMF-VCLNT-U-0900-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    83
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    84
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    85
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    86
		iTestStepName = _L("MM-MMF-VCLNT-U-0100-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    87
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    88
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    89
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    90
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    91
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    92
 * Test step destructor.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    93
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    94
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    95
CTestStepOOMVidPlayerNew::~CTestStepOOMVidPlayerNew()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    96
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    97
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    98
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
    99
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   100
 * Implementation of the MVideoPlayererUtilityObserver interface functions
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   101
 **/
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   102
void CTestStepOOMVidPlayerNew::MvpuoOpenComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   103
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   104
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   105
	CActiveScheduler::Stop(); // check if asynchronous
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   106
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   107
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   108
void CTestStepOOMVidPlayerNew::MvpuoFrameReady(CFbsBitmap& /*aFrame*/, TInt /*aError*/)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   109
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   110
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   111
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   112
void CTestStepOOMVidPlayerNew::MvpuoPlayComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   113
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   114
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   115
	CActiveScheduler::Stop(); 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   116
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   117
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   118
void CTestStepOOMVidPlayerNew::MvpuoPrepareComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   119
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   120
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   121
	CActiveScheduler::Stop(); 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   122
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   123
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   124
void CTestStepOOMVidPlayerNew::MvpuoEvent(const TMMFEvent& /*aEvent*/)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   125
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   126
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   127
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   128
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   129
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   130
 * Do the test step.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   131
 * Each test step must supply an implementation for DoTestStepL.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   132
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   133
 * @return	"TVerdict"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   134
 *			The result of the test step
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   135
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   136
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   137
TVerdict CTestStepOOMVidPlayerNew::DoTestStepL()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   138
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   139
	// Printing to the console and log file
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   140
	INFO_PRINTF2(_L("%S"),&iTestStepName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   141
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   142
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   143
		INFO_PRINTF1(_L("this is an Out of Memory test of CVideoPlayerUtility object with NewL()"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   144
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   145
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   146
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   147
		INFO_PRINTF1(_L("this is an Out of Memory test of CVideoPlayerUtility2 object with NewL()"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   148
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   149
		
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   150
	TInt err = KErrNone;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   151
	iError = KErrNone; //KErrTimedOut;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   152
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   153
	TInt failCount = 1;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   154
	TBool completed = EFalse;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   155
	TBool badResult = EFalse; 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   156
	TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   157
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   158
	// N.B. we have to call HAL::Get in order to prevent a memory leak being detected
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   159
	// between the __UHEAP markers below. This is because HAL::Get allocates some memory on the 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   160
	// first call and is called in CVideoPlayerUtility::NewL (setting up direct screen access).
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   161
	// There is no method to deallocate this memory so we allocate it outside of the __UHEAP markers.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   162
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   163
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   164
		TInt address = 0;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   165
		HAL::Get(HALData::EDisplayMemoryAddress, address);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   166
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   167
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   168
	for(;;)	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   169
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   170
		InitWservL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   171
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   172
		__UHEAP_SETFAIL(RHeap::EFailNext ,failCount);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   173
		__MM_HEAP_MARK;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   174
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   175
		if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   176
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   177
			TRect rect, clipRect;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   178
			TRAP( err, (iPlayer = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal,
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   179
														EMdaPriorityPreferenceTimeAndQuality,
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   180
														iWs, *iScreen, *iWindow, rect, clipRect)));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   181
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   182
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   183
		else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   184
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   185
			TRAP( err, (iPlayer2 = CVideoPlayerUtility2::NewL(*this, EMdaPriorityNormal,
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   186
														EMdaPriorityPreferenceTimeAndQuality)));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   187
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   188
#endif			
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   189
		completed = EFalse;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   190
		if (err == KErrNone)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   191
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   192
			TAny *testAlloc = User::Alloc(1); // when this fails, we passed through all allocs within test
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   193
			if (testAlloc==NULL)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   194
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   195
				reachedEnd = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   196
				failCount--; // -= 1;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   197
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   198
			else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   199
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   200
				User::Free(testAlloc);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   201
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   202
				
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   203
			// see if valid result and break if wrong - might be premature result
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   204
				
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   205
			if ( !PlayerStateStopped() )
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   206
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   207
				badResult = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   208
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   209
				
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   210
			if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   211
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   212
				delete iPlayer;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   213
				iPlayer = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   214
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   215
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   216
			else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   217
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   218
				delete iPlayer2;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   219
				iPlayer2 = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   220
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   221
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   222
			completed = reachedEnd || badResult;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   223
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   224
		else if (err != KErrNoMemory) // bad error code
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   225
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   226
			completed = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   227
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   228
			
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   229
		__MM_HEAP_MARKEND;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   230
		__UHEAP_SETFAIL(RHeap::ENone ,0);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   231
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   232
		DeInitWserv();
58
b6dbf97aba93 2010wk36_01
hgs
parents: 41
diff changeset
   233
		User::After(2000000);
41
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   234
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   235
		if (completed)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   236
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   237
			break; // exit loop
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   238
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   239
			
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   240
		failCount++;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   241
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   242
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   243
	//failCount -= 1; // Failcount of 1 equates to 0 successful allocs, etc.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   244
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   245
	if (err != KErrNone || badResult)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   246
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   247
		if (badResult)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   248
			{	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   249
			INFO_PRINTF2(_L("  Bad result with %d memory allocations tested"), failCount);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   250
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   251
		else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   252
			{	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   253
			INFO_PRINTF3(_L("  Error(%d) with %d memory allocations tested"), err, failCount);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   254
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   255
		iTestStepResult = EFail;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   256
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   257
	else 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   258
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   259
		INFO_PRINTF2(_L("  Completed OK with %d memory allocations tested"), failCount);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   260
		iTestStepResult = EPass;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   261
		}	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   262
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   263
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   264
	INFO_PRINTF1(_L("finished with this test step"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   265
	// test steps return a result
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   266
	return iTestStepResult;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   267
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   268
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   269
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   270
// --------------------------------------------
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   271
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   272
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   273
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   274
 * Static constructor for CTestStepOOMVidPlayerOpenFile.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   275
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   276
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   277
 * @return	"CTestStepOOMVidPlayerOpenFile*"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   278
 *			The constructed CTestStepOOMVidPlayerOpenFile
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   279
 * 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   280
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   281
CTestStepOOMVidPlayerOpenFile* CTestStepOOMVidPlayerOpenFile::NewL(TBool aUseFileName, TInt aSurfaceMode)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   282
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   283
	CTestStepOOMVidPlayerOpenFile* self = new(ELeave) CTestStepOOMVidPlayerOpenFile(aUseFileName,aSurfaceMode);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   284
	return self;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   285
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   286
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   287
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   288
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   289
 * Test step constructor.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   290
 * Each test step initialises its own name.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   291
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   292
CTestStepOOMVidPlayerOpenFile::CTestStepOOMVidPlayerOpenFile(TBool aUseFileHandle, TInt aSurfaceMode) 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   293
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   294
	iTestStepResult = EPass;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   295
	iUseFileHandle = aUseFileHandle;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   296
	if (aSurfaceMode == CTestStepUnitMMFVidClient::ENotSurfaceMode)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   297
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   298
		iVpu2 = EFalse;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   299
		if (iUseFileHandle)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   300
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   301
			iTestStepName = _L("MM-MMF-VCLNT-U-0111-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   302
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   303
		else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   304
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   305
			iTestStepName = _L("MM-MMF-VCLNT-U-0101-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   306
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   307
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   308
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   309
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   310
		iVpu2 = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   311
		if (iUseFileHandle)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   312
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   313
			iTestStepName = _L("MM-MMF-VCLNT-U-0904-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   314
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   315
		else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   316
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   317
			iTestStepName = _L("MM-MMF-VCLNT-U-0901-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   318
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   319
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   320
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   321
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   322
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   323
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   324
 * Test step destructor.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   325
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   326
CTestStepOOMVidPlayerOpenFile::~CTestStepOOMVidPlayerOpenFile()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   327
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   328
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   329
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   330
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   331
 * Implementation of the MVideoRecorderUtilityObserver interface functions
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   332
 **/
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   333
void CTestStepOOMVidPlayerOpenFile::MvpuoOpenComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   334
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   335
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   336
	CActiveScheduler::Stop(); // check if asynchronous
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   337
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   338
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   339
void CTestStepOOMVidPlayerOpenFile::MvpuoFrameReady(CFbsBitmap& /*aFrame*/, TInt /*aError*/)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   340
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   341
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   342
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   343
void CTestStepOOMVidPlayerOpenFile::MvpuoPlayComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   344
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   345
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   346
	CActiveScheduler::Stop(); 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   347
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   348
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   349
void CTestStepOOMVidPlayerOpenFile::MvpuoPrepareComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   350
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   351
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   352
	CActiveScheduler::Stop(); 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   353
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   354
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   355
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   356
void CTestStepOOMVidPlayerOpenFile::MvpuoEvent(const TMMFEvent& /*aEvent*/)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   357
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   358
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   359
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   360
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   361
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   362
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   363
 * Test step Preamble.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   364
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   365
enum TVerdict CTestStepOOMVidPlayerOpenFile::DoTestStepPreambleL(void)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   366
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   367
	// Printing to the console and log file
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   368
	INFO_PRINTF2(_L("%S"),&iTestStepName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   369
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   370
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   371
		INFO_PRINTF1(_L("this is an Out of Memory test of CVideoPlayerUtility::OpenFileL()"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   372
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   373
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   374
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   375
		INFO_PRINTF1(_L("this is an Out of Memory test of CVideoPlayerUtility2::OpenFileL()"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   376
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   377
	_LIT(KFileName, "c:\\mm\\mmf\\testfiles\\vclnt\\clock.dummy");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   378
	iFileName.Set(KFileName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   379
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   380
	enum TVerdict verdict;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   381
	// this installs the scheduler
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   382
	verdict = CTestStepUnitMMFVidClient::DoTestStepPreambleL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   383
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   384
	if (verdict==EPass)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   385
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   386
		InitWservL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   387
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   388
		if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   389
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   390
			TRect rect, clipRect;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   391
			iPlayer = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality,
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   392
										iWs, *iScreen, *iWindow, rect, clipRect);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   393
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   394
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   395
		else 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   396
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   397
			iPlayer2 = CVideoPlayerUtility2::NewL(*this, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   398
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   399
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   400
		if ( !PlayerStateStopped() )
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   401
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   402
			return EInconclusive;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   403
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   404
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   405
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   406
	return verdict;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   407
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   408
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   409
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   410
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   411
 * Test step Postamble.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   412
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   413
enum TVerdict CTestStepOOMVidPlayerOpenFile::DoTestStepPostambleL(void)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   414
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   415
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   416
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   417
		delete iPlayer;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   418
		iPlayer = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   419
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   420
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   421
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   422
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   423
		delete iPlayer2;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   424
		iPlayer2 = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   425
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   426
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   427
	return CTestStepUnitMMFVidClient::DoTestStepPostambleL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   428
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   429
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   430
void CTestStepOOMVidPlayerOpenFile::OpenFileAndStartSchedulerL()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   431
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   432
	if (iUseFileHandle && !iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   433
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   434
		iPlayer->OpenFileL(iFile);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   435
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   436
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   437
	else if (iUseFileHandle && iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   438
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   439
		iPlayer2->OpenFileL(iFile);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   440
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   441
	else if (!iUseFileHandle && iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   442
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   443
		iPlayer2->OpenFileL(iFileName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   444
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   445
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   446
	else 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   447
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   448
		iPlayer->OpenFileL(iFileName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   449
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   450
	CActiveScheduler::Start();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   451
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   452
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   453
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   454
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   455
 * Do the test step.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   456
 * Each test step must supply an implementation for DoTestStepL.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   457
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   458
 * @return	"TVerdict"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   459
 *			The result of the test step
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   460
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   461
TVerdict CTestStepOOMVidPlayerOpenFile::DoTestStepL()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   462
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   463
	TInt err = KErrNone;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   464
	iError = KErrNone; //KErrTimedOut;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   465
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   466
	TInt failCount = 1;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   467
	TBool completed = EFalse;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   468
	TBool badResult = EFalse; 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   469
	TBool reachedEnd = EFalse; // Note: declare outside loop to help with debugging
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   470
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   471
	// NB We can't call __MM_HEAP_MARKEND at the end of each step because 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   472
	// something (CDirectScreenAccess ?) allocates memory during opening
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   473
	// but at least we can check it gets cleaned up when the player is deleted
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   474
	__MM_HEAP_MARK;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   475
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   476
	User::LeaveIfError(iFs.Connect());
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   477
	User::LeaveIfError(iFs.ShareProtected());
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   478
	User::LeaveIfError(iFile.Open(iFs, iFileName, EFileRead));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   479
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   480
	for(;;)	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   481
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   482
		__UHEAP_SETFAIL(RHeap::EFailNext ,failCount);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   483
		
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   484
		TRAP( err, OpenFileAndStartSchedulerL() );
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   485
		
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   486
		completed = EFalse;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   487
		if ((err == KErrNone) && (iError == KErrNone))
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   488
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   489
			TAny *testAlloc = User::Alloc(1); // when this fails, we passed through all allocs within test
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   490
			if (testAlloc==NULL)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   491
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   492
				reachedEnd = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   493
				failCount--; // -= 1;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   494
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   495
			else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   496
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   497
				User::Free(testAlloc);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   498
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   499
				
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   500
			// see if valid result and break if wrong - might be premature result
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   501
			//check possibly in another way if source is open
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   502
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   503
			if (!PlayerStateStopped() )
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   504
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   505
				badResult = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   506
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   507
			
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   508
			if(iPlayer)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   509
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   510
				iPlayer->Close();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   511
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   512
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   513
			if(iPlayer2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   514
				{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   515
				iPlayer2->Close();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   516
				}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   517
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   518
			completed = reachedEnd || badResult;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   519
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   520
		else if (((err != KErrNone) && (err != KErrNoMemory)) || 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   521
				((iError != KErrNone) && (iError != KErrNoMemory))) // bad error code
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   522
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   523
			completed = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   524
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   525
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   526
		__UHEAP_SETFAIL(RHeap::ENone ,0);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   527
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   528
		if (completed)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   529
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   530
			break; // exit loop
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   531
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   532
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   533
		failCount++;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   534
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   535
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   536
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   537
	//failCount -= 1; // Failcount of 1 equates to 0 successful allocs, etc.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   538
	delete iPlayer;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   539
	iPlayer = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   540
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   541
	iFile.Close();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   542
	iFs.Close();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   543
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   544
	__MM_HEAP_MARKEND;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   545
	if (err != KErrNone || badResult)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   546
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   547
		if (badResult)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   548
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   549
			INFO_PRINTF2(_L("  Bad result with %d memory allocations tested"), failCount);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   550
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   551
		else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   552
			{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   553
			INFO_PRINTF3(_L("  Error(%d) with %d memory allocations tested"), err, failCount);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   554
			}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   555
		iTestStepResult = EFail;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   556
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   557
			
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   558
	 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   559
	if (err == KErrNone && !badResult)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   560
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   561
		INFO_PRINTF2(_L("Test Completed OK with %d memory allocations tested"), failCount);		
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   562
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   563
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   564
	INFO_PRINTF1(_L("finished with this test step"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   565
	// test steps return a result
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   566
	return iTestStepResult;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   567
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   568
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   569
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   570
// --------------------------------------------
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   571
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   572
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   573
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   574
 * Static constructor for CTestStepOOMVidPlayerOpenDesc.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   575
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   576
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   577
 * @return	"CTestStepOOMVidPlayerOpenDesc*"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   578
 *			The constructed CTestStepOOMVidPlayerOpenDesc
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   579
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   580
CTestStepOOMVidPlayerOpenDesc* CTestStepOOMVidPlayerOpenDesc::NewL(TInt aSurfaceMode)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   581
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   582
	CTestStepOOMVidPlayerOpenDesc* self = new(ELeave) CTestStepOOMVidPlayerOpenDesc(aSurfaceMode);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   583
	return self;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   584
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   585
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   586
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   587
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   588
 * Test step constructor.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   589
 * Each test step initialises its own name.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   590
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   591
CTestStepOOMVidPlayerOpenDesc::CTestStepOOMVidPlayerOpenDesc(TInt aSurfaceMode) 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   592
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   593
	iTestStepResult = EPass;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   594
	// store the name of this test case
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   595
	// this is the name that is used by the script file
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   596
	if (aSurfaceMode == CTestStepUnitMMFVidClient::ENotSurfaceMode)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   597
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   598
		iVpu2 = EFalse;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   599
		iTestStepName = _L("MM-MMF-VCLNT-U-0102-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   600
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   601
	else 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   602
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   603
		iVpu2 = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   604
		iTestStepName = _L("MM-MMF-VCLNT-U-0902-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   605
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   606
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   607
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   608
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   609
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   610
 * Test step destructor.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   611
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   612
CTestStepOOMVidPlayerOpenDesc::~CTestStepOOMVidPlayerOpenDesc()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   613
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   614
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   615
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   616
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   617
 * Implementation of the MVideoRecorderUtilityObserver interface functions
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   618
 **/
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   619
void CTestStepOOMVidPlayerOpenDesc::MvpuoOpenComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   620
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   621
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   622
	CActiveScheduler::Stop(); // check if asynchronous
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   623
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   624
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   625
void CTestStepOOMVidPlayerOpenDesc::MvpuoFrameReady(CFbsBitmap& /*aFrame*/, TInt /*aError*/)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   626
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   627
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   628
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   629
void CTestStepOOMVidPlayerOpenDesc::MvpuoPlayComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   630
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   631
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   632
	CActiveScheduler::Stop(); // check if asynchronous
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   633
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   634
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   635
void CTestStepOOMVidPlayerOpenDesc::MvpuoPrepareComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   636
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   637
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   638
	CActiveScheduler::Stop(); 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   639
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   640
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   641
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   642
void CTestStepOOMVidPlayerOpenDesc::MvpuoEvent(const TMMFEvent& /*aEvent*/)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   643
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   644
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   645
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   646
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   647
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   648
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   649
 * Test step Preamble.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   650
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   651
enum TVerdict CTestStepOOMVidPlayerOpenDesc::DoTestStepPreambleL(void)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   652
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   653
	_LIT(KFileName, "c:\\mm\\mmf\\testfiles\\vclnt\\smallv.wav");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   654
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   655
	iFileName.Set(KFileName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   656
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   657
	TInt fSize;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   658
	iFs.Connect();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   659
	if ( iFile.Open(iFs, iFileName, EFileRead) != KErrNone )
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   660
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   661
		return EInconclusive;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   662
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   663
	iFile.Size(fSize);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   664
	// load the sound from the file to a Descriptor
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   665
	iBuf = HBufC8::NewL( fSize );
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   666
	TPtr8 des = iBuf->Des();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   667
	iFile.Read(des);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   668
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   669
	iFile.Close();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   670
	iFs.Close();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   671
	enum TVerdict verdict;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   672
	// this installs the scheduler
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   673
	verdict = CTestStepUnitMMFVidClient::DoTestStepPreambleL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   674
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   675
	return verdict;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   676
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   677
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   678
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   679
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   680
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   681
 * Test step Postamble.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   682
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   683
enum TVerdict CTestStepOOMVidPlayerOpenDesc::DoTestStepPostambleL(void)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   684
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   685
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   686
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   687
		delete iPlayer;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   688
		iPlayer = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   689
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   690
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   691
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   692
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   693
		delete iPlayer2;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   694
		iPlayer2 = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   695
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   696
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   697
	return CTestStepUnitMMFVidClient::DoTestStepPostambleL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   698
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   699
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   700
void CTestStepOOMVidPlayerOpenDesc::OpenDescAndStartSchedulerL()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   701
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   702
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   703
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   704
		iPlayer->OpenDesL(iBuf->Des());
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   705
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   706
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   707
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   708
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   709
		iPlayer2->OpenDesL(iBuf->Des());
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   710
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   711
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   712
	CActiveScheduler::Start();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   713
}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   714
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   715
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   716
 * Do the test step.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   717
 * Each test step must supply an implementation for DoTestStepL.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   718
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   719
 * @return	"TVerdict"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   720
 *			The result of the test step
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   721
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   722
TVerdict CTestStepOOMVidPlayerOpenDesc::DoTestStepL()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   723
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   724
	TInt err;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   725
	err = KErrNone;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   726
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   727
	// Printing to the console and log file
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   728
	INFO_PRINTF2(_L("%S"),&iTestStepName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   729
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   730
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   731
		INFO_PRINTF1(_L("this is an Out of Memory test of CVideoPlayerUtility::OpenDesL()"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   732
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   733
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   734
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   735
		INFO_PRINTF1(_L("this is an Out of Memory test of CVideoPlayerUtility2::OpenDesL()"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   736
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   737
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   738
	iError = KErrNone; //KErrTimedOut;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   739
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   740
	InitWservL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   741
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   742
	// N.B. we have to call HAL::Get in order to prevent a memory leak being detected
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   743
	// between the __UHEAP markers below. This is because HAL::Get allocates some memory on the 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   744
	// first call and is called in CVideoPlayerUtility::NewL (setting up direct screen access).
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   745
	// There is no method to deallocate this memory so we allocate it outside of the __UHEAP markers.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   746
	TInt address = 0;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   747
	HAL::Get(HALData::EDisplayMemoryAddress, address);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   748
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   749
	__MM_HEAP_MARK;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   750
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   751
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   752
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   753
		TRect rect, clipRect;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   754
		iPlayer = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality,
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   755
										iWs, *iScreen, *iWindow, rect, clipRect);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   756
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   757
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   758
	else 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   759
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   760
		iPlayer2 = CVideoPlayerUtility2::NewL(*this, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   761
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   762
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   763
	if (!PlayerStateStopped() )
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   764
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   765
		return EInconclusive;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   766
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   767
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   768
	TRAP(err, OpenDescAndStartSchedulerL() );
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   769
	if (err == KErrNotFound)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   770
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   771
		iTestStepResult = EInconclusive;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   772
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   773
	else if (err == KErrNotSupported)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   774
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   775
		iTestStepResult = EPass;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   776
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   777
	else if (err != KErrNone) 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   778
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   779
		return EFail;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   780
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   781
		
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   782
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   783
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   784
		delete iPlayer;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   785
		iPlayer = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   786
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   787
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   788
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   789
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   790
		delete iPlayer2;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   791
		iPlayer2 = NULL;	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   792
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   793
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   794
	__MM_HEAP_MARKEND;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   795
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   796
	DeInitWserv();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   797
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   798
	INFO_PRINTF1(_L("finished with this test step"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   799
	// test steps return a result
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   800
	return iTestStepResult;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   801
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   802
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   803
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   804
// --------------------------------------------
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   805
//
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   806
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   807
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   808
 * Static constructor for CTestStepOOMVidPlayerOpenUrl.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   809
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   810
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   811
 * @return	"CTestStepOOMVidPlayerOpenUrl*"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   812
 *			The constructed CTestStepOOMVidPlayerOpenUrl
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   813
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   814
CTestStepOOMVidPlayerOpenUrl* CTestStepOOMVidPlayerOpenUrl::NewL(TInt aSurfaceMode)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   815
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   816
	CTestStepOOMVidPlayerOpenUrl* self = new(ELeave) CTestStepOOMVidPlayerOpenUrl(aSurfaceMode);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   817
	return self;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   818
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   819
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   820
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   821
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   822
 * Test step constructor.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   823
 * Each test step initialises its own name.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   824
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   825
CTestStepOOMVidPlayerOpenUrl::CTestStepOOMVidPlayerOpenUrl(TInt aSurfaceMode) 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   826
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   827
	iTestStepResult = EPass;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   828
	// store the name of this test case
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   829
	// this is the name that is used by the script file
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   830
	if (aSurfaceMode == CTestStepUnitMMFVidClient::ENotSurfaceMode)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   831
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   832
		iVpu2 = EFalse;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   833
		iTestStepName = _L("MM-MMF-VCLNT-U-0103-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   834
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   835
	else 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   836
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   837
		iVpu2 = ETrue;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   838
		iTestStepName = _L("MM-MMF-VCLNT-U-0903-CP");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   839
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   840
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   841
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   842
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   843
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   844
 * Test step destructor.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   845
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   846
CTestStepOOMVidPlayerOpenUrl::~CTestStepOOMVidPlayerOpenUrl()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   847
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   848
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   849
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   850
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   851
 * Implementation of the MVideoRecorderUtilityObserver interface functions
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   852
 **/
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   853
void CTestStepOOMVidPlayerOpenUrl::MvpuoOpenComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   854
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   855
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   856
	CActiveScheduler::Stop(); // check if asynchronous
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   857
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   858
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   859
void CTestStepOOMVidPlayerOpenUrl::MvpuoFrameReady(CFbsBitmap& /*aFrame*/, TInt /*aError*/)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   860
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   861
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   862
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   863
void CTestStepOOMVidPlayerOpenUrl::MvpuoPlayComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   864
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   865
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   866
	CActiveScheduler::Stop(); // check if asynchronous
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   867
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   868
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   869
void CTestStepOOMVidPlayerOpenUrl::MvpuoPrepareComplete(TInt aError)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   870
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   871
	iError = aError;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   872
	CActiveScheduler::Stop(); 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   873
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   874
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   875
	
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   876
void CTestStepOOMVidPlayerOpenUrl::MvpuoEvent(const TMMFEvent& /*aEvent*/)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   877
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   878
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   879
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   880
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   881
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   882
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   883
 * Test step Preamble.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   884
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   885
enum TVerdict CTestStepOOMVidPlayerOpenUrl::DoTestStepPreambleL(void)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   886
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   887
	_LIT(KFileName, "c:\\mm\\mmf\\testfiles\\vclnt\\small2.wav");
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   888
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   889
	iFileName.Set(KFileName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   890
	enum TVerdict verdict;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   891
	// this installs the scheduler
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   892
	verdict = CTestStepUnitMMFVidClient::DoTestStepPreambleL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   893
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   894
	return verdict;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   895
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   896
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   897
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   898
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   899
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   900
 * Test step Postamble.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   901
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   902
enum TVerdict CTestStepOOMVidPlayerOpenUrl::DoTestStepPostambleL(void)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   903
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   904
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   905
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   906
		delete iPlayer;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   907
		iPlayer = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   908
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   909
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   910
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   911
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   912
		delete iPlayer2;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   913
		iPlayer2 = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   914
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   915
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   916
	return CTestStepUnitMMFVidClient::DoTestStepPostambleL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   917
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   918
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   919
void CTestStepOOMVidPlayerOpenUrl::OpenUrlAndStartSchedulerL()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   920
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   921
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   922
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   923
		iPlayer->OpenUrlL(iFileName, KUseDefaultIap, _L8("audio/wav"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   924
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   925
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   926
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   927
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   928
		iPlayer2->OpenUrlL(iFileName, KUseDefaultIap, _L8("audio/wav"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   929
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   930
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   931
	CActiveScheduler::Start();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   932
}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   933
/**
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   934
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   935
 * Do the test step.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   936
 * Each test step must supply an implementation for DoTestStepL.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   937
 *
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   938
 * @return	"TVerdict"
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   939
 *			The result of the test step
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   940
 */
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   941
TVerdict CTestStepOOMVidPlayerOpenUrl::DoTestStepL()
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   942
	{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   943
	TInt err;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   944
	err = KErrNone;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   945
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   946
	// N.B. we have to call HAL::Get in order to prevent a memory leak being detected
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   947
	// between the __UHEAP markers below. This is because HAL::Get allocates some memory on the 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   948
	// first call and is called in CVideoPlayerUtility::NewL (setting up direct screen access).
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   949
	// There is no method to deallocate this memory so we allocate it outside of the __UHEAP markers.
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   950
	TInt address = 0;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   951
	HAL::Get(HALData::EDisplayMemoryAddress, address);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   952
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   953
	__MM_HEAP_MARK;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   954
	// Printing to the console and log file
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   955
	INFO_PRINTF2(_L("%S"),&iTestStepName);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   956
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   957
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   958
		INFO_PRINTF1(_L("this is an Out of Memory test of CVideoPlayerUtility::OpenUrlL()"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   959
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   960
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   961
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   962
		INFO_PRINTF1(_L("this is an Out of Memory test of CVideoPlayerUtility2::OpenUrlL()"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   963
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   964
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   965
	iError = KErrNone; //KErrTimedOut;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   966
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   967
	InitWservL();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   968
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   969
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   970
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   971
		TRect rect, clipRect;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   972
		iPlayer = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality,
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   973
										iWs, *iScreen, *iWindow, rect, clipRect);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   974
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   975
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   976
	else 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   977
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   978
		iPlayer2 = CVideoPlayerUtility2::NewL(*this, EMdaPriorityNormal, EMdaPriorityPreferenceTimeAndQuality);
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   979
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   980
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   981
	if ( !PlayerStateStopped() )
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   982
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   983
		return EInconclusive;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   984
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   985
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   986
	TRAP(err, OpenUrlAndStartSchedulerL() );
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   987
	if (err == KErrNotFound)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   988
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   989
		iTestStepResult = EInconclusive;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   990
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   991
	else if (err == KErrNotSupported)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   992
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   993
		iTestStepResult = EPass;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   994
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   995
	else if (err != KErrNone) 
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   996
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   997
		return EFail;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   998
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
   999
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1000
	if (!iVpu2)
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1001
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1002
		delete iPlayer;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1003
		iPlayer = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1004
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1005
#ifdef SYMBIAN_BUILD_GCE
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1006
	else
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1007
		{
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1008
		delete iPlayer2;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1009
		iPlayer2 = NULL;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1010
		}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1011
#endif
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1012
	DeInitWserv();
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1013
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1014
	__MM_HEAP_MARKEND;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1015
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1016
	INFO_PRINTF1(_L("finished with this test step"));
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1017
	// test steps return a result
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1018
	return iTestStepResult;
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1019
	}
f7bf1ed8db72 2010wk27_04
hgs
parents:
diff changeset
  1020