diff -r 238255e8b033 -r 84d9eb65b26f messagingapp/msgutils/unidatautils/unidatamodel/inc/ConformanceChecker.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgutils/unidatautils/unidatamodel/inc/ConformanceChecker.h Mon May 03 12:29:07 2010 +0300 @@ -0,0 +1,188 @@ +/* +* Copyright (c) 2003 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: +* +*/ + + + +#ifndef CONFORMANCECHECKER_H +#define CONFORMANCECHECKER_H + + +// INCLUDES +#include +#include + +#include +#include + + +// CONSTANTS +_LIT(KMetaTag,"meta"); +_LIT(KPercent,"%"); +_LIT(KPx,"px"); +_LIT(KMs,"ms"); +_LIT(KImage,"Image"); +_LIT(KText,"Text"); + +const TInt KUSAsciiMinCode = 0; +const TInt KUSAsciiMaxCode = 127; + +//Type for the version of the Conformance Document +enum TMmsSmilVersion + { + EMmsSmil_v2_0=2, + EMmsSmil_v3_0 + }; + + +enum TFlags + { + EAllowVideoTag=1, //Allowing video tag as media + EAllowAllAttributes=2, //Not checking the attribute name of the elements + EAllowNonMilliseconds=4, //Allows other timing specifications then 'ms' (e.g. 's') + EAllowNonUsAscii=8, //Allows other than us-ascii values for src attribute + //for media elements + EAllowMixedRegionDimensions=16, //Allows mixed region dimensions (pixel and percent) + EAllowSeqTag=32, //Allows one tag right after the tag + EAllowAnyRegionNames=64 //Allows any name for the regions + }; + + + +// CLASS DECLARATION + +/** +* Class for checking the the content of a DOM tree against the Conformance Document. +* (Checking legacy content.) +* +* @lib smileng.lib +* @since 2.0 +*/ +class CConformanceChecker : public CBase + { + + public: // Constructors and destructor + + /** + * Two-phased constructor. + * @param aStrict - value of the checking mode flag + */ + IMPORT_C static CConformanceChecker* NewL(); + + /** + * Destructor. + */ + ~CConformanceChecker(); + + public: // New functions + + /** + * Checks if the DOM tree's content is legacy content or not. + * @param aXmldoc - the root of the DOM tree + * @aVersion - the version of the Conformance Document + * @aFlags - the flags to gide the checking (combination of TFlags values) + * @return - true if the content is legacy + - false if the content is not legacy + */ + TBool Check(CMDXMLDocument* aXmldoc, TMmsSmilVersion aVersion, TInt aFlags); + + private: + + /** Checks the structure of the head element: allowed to contain only layout and meta element + * @param aHead - the root of head subtree + * @param aStrict - flag for checking mode (true strict checking, false loose checking) + * @return - true - if head has legacy structure + * - false - otherwise + */ + TBool CheckHeadStructure(CMDXMLNode* aHead); + + + /** Checks the structure of the body element: + - allowed to contain only par elements + * (one including seq element right after the body is allowed) + * @param aBody - the root of body subtree + * @return - true - if body has legacy structure + * - false - otherwise + */ + TBool CheckBodyStructure(CMDXMLNode* aBody); + + + /** Checks the content of the layout element + * - root-layout and max. 2 region elements are allowed + * @param aLayout - the root of layout subtree + * @return - true - if layout has legacy content + * - false - otherwise + */ + TBool CheckLayoutContent(CMDXMLNode* aLayout); + + + /** Checks the content of the body element + * @param aBody - the root of body subtree + * @return - true - if body has legacy content + * - false - otherwise + */ + TBool CheckBodyContent(CMDXMLNode* aBody); + + + /** Checks the content of the par element + * @param aPar - the root of par subtree + * @return - true - if par has legacy content + * - false - otherwise + */ + TBool CheckParContent(CMDXMLNode* aPar); + + + /** Checks if a descriptor is ending with 'ms' + * @param aValue - value to check + * @return - true if the ending is ms + * - false otherwise + */ + + TBool IsInMilliseconds(TDesC& aValue) const; + + + /** Checks if the given value is ending with percent or pixel + * and if this is conforming to the already set pixel and percent values. + * @param aValue - value to check, + * - should be the value of 'width', 'height', 'top', 'left' + * attributes for a region + * @param aPercent - true if the value should end with percent + * @param aPixel - true if the value should be in pixel + * @return true - if the value is not mixed (regarding aPercent,aPixel) + * false - if mixed + */ + TBool CheckMixedRegionAttribute(TDesC& aValue,TBool& aPercent,TBool& aPixel) const; + + /** Checks if the given value is exactly "Image" or "Text" and if it + * is duplicated (checking the transmitted boolean parameters). + * @param aValue - value to check, + * @param aFoundImage - true if the "Image" value will be duplicate + * @param aFoundText - true if the "Text" value will be duplicate + * @return true - if the value is "Image" or "Text" and it's not duplicated + * false - otherwise + */ + TBool CheckRegionNames(TDesC& aValue,TBool& aFoundImage,TBool& aFoundText) const; + + + private: // Data + + + TInt iFlags; //contains the flags to guide the checking + }; + +#endif // CONFORMANCECHECKER_H + +// End of File