appfw/apparchitecture/tef/TESTREC/TESTREC.CPP
author William Roberts <williamr@symbian.org>
Fri, 23 Apr 2010 14:37:17 +0100
branchRCL_3
changeset 22 c82a39b81a38
parent 0 2e3d3ce01487
permissions -rw-r--r--
Rework addition of Symbian splash screen to reduce the source impact (uses SVG from Bug 2414) Notes: by using the OPTION SOURCEDIR parameter in the mifconv extension instructions, I can arrange to use the same source file name in sfimage, without having to export over the original Nokia file. This means that the name inside splashscreen.mbg is the same, which removes the need for the conditional compilation in SplashScreen.cpp, and gets rid of sf_splashscreen.mmp.

// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
// Defines a data recognizer
// Defines a test recognizer class which recognizes data type "test/plain".\n
// 
//

/**
 @file
 @internalComponent - Internal Symbian test code 
*/

#include "TESTREC.H"

/**
  
   Recognizer used as part of CommandLine tests
   
   @SYMPREQ 280 File Handle Support
 
   FunctionDesc : Constructor for the recognizer of data type "test\plain" . 
   
 */

CAppTestRecognizer::CAppTestRecognizer()
	:CApaDataRecognizerType(KUidTestTxtRecognizer,CApaDataRecognizerType::ELow)
	// Text files are low recognition - they don't have a clear signature
	{
	iCountDataTypes=1;
	}

/**
  
   Recognizer used as part of CommandLine tests
  
   @SYMPREQ 280 File Handle Support
  
   FunctionDesc : Specifies the buffer size required by the data type
  
 */
TUint CAppTestRecognizer::PreferredBufSize()
	{
	return KMaxBufferLength;
	}

/**
  
   Recognizer used as part of CommandLine tests
  
   @SYMPREQ 280 File Handle Support
   
   FunctionDesc : Returns the data type supported : test\plain
  
 */
#if defined(_DEBUG)
TDataType CAppTestRecognizer::SupportedDataTypeL(TInt aIndex) const
#else
TDataType CAppTestRecognizer::SupportedDataTypeL(TInt /*aIndex*/) const
#endif
	{
	__ASSERT_DEBUG(aIndex==0,User::Invariant());
	return TDataType(KDataTypeTestPlain);
	}

 /**
  
   Recognizer used as part of CommandLine tests
  
   @SYMPREQ 280 File Handle Support
  
   FunctionDesc :  Should recognize the data type of the file. 
   Called by the RecognizeL function.
   Checks if the first three bytes are valid uids.If yes the file is not a plain/test
   Verifies if the file extension is .test
   Checks for characters that wont be in a text file.
  
 */
void CAppTestRecognizer::DoRecognizeL(const TDesC& aName, const TDesC8& aBuffer)
	{
	TBool nameRecognized=EFalse;
    
	// check if the file has valid UIDs 
	if (aBuffer.Length() >= 16)
		{
		// if the first 3 bytes are valid UIDs,then this file is not a plain/test. 
		// Set iConfidence appropriately and exit.
		const TCheckedUid checkUid(aBuffer.Left(16));    
		if (checkUid.UidType().IsValid())
			{
			iConfidence=ENotRecognized;
			return;
			}
		}

	// Compare if the file extension is .TEST
	if (aName.Length()>4)
		{
		nameRecognized=(aName.Right(5).CompareF(KTestFileExt)==0);
		}
		
	const TInt length=Min(aBuffer.Length(), KMaxBufferLength);
	
	if (length<KMinBufferLength && !nameRecognized)
		{
		return;
		}
		
	
	// Check for characters that wont be in a text file
	TInt index;
	for (index=0; index<length; index++)
		{
		const TUint chr=aBuffer[index];
		// these are guesses of what WON'T be in a text file
		if (chr<9 || chr==11 || chr==12 || (chr>13 && chr<32))
			{
			break;
			}
		if (chr>148)
			{
			break;
			}
		}
	const TBool validChars=(index==length);
	
	if (nameRecognized)
		{
		iConfidence=validChars? EProbable : EUnlikely;
		}
	else
		{
		if (!validChars)
			{
			return;
			}
		iConfidence=EPossible;
		}
	iDataType=TDataType(KDataTypeTestPlain);
	}

/**
  
   Recognizer used as part of CommandLine tests
  
  
   @SYMPREQ 280 File Handle Support
  
   FunctionDesc : Creates an instance of the recognizer . 
   
 */

CApaDataRecognizerType* CAppTestRecognizer::CreateRecognizerL()
	{
	return new (ELeave) CAppTestRecognizer();
	}
	
/**
  
   Recognizer used as part of CommandLine tests
  
   @SYMPREQ 280 File Handle Support
  
   Desc : Implementation table specifying the implementation uid . 
   
 */
const TImplementationProxy ImplementationTable[] = 
    {
	IMPLEMENTATION_PROXY_ENTRY(KTestTxtRecognizerValue,CAppTestRecognizer::CreateRecognizerL)
	};

/**
  
   Recognizer used as part of CommandLine tests
  
   @SYMPREQ 280 File Handle Support
  
   FunctionDesc : Returns the implementation table. 
   
  
 */
EXPORT_C const TImplementationProxy* ImplementationGroupProxy(TInt& aTableCount)
    {
    aTableCount = sizeof(ImplementationTable) / sizeof(TImplementationProxy);
    return ImplementationTable;
    }