svgtopt/SVG/SVGImpl/src/SVGTestsImpl.cpp
author hgs
Wed, 03 Nov 2010 18:56:10 +0200
changeset 46 88edb906c587
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
46
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2003 Nokia Corporation and/or its subsidiary(-ies).
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:  SVG Implementation source file
hgs
parents:
diff changeset
    15
 *
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
#include "SVGTestsImpl.h"
hgs
parents:
diff changeset
    20
hgs
parents:
diff changeset
    21
hgs
parents:
diff changeset
    22
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    23
// Two phase construction:
hgs
parents:
diff changeset
    24
// - Implements the SVGTests DOM interface.
hgs
parents:
diff changeset
    25
// - Partially implemented, only those required
hgs
parents:
diff changeset
    26
//   for passing SVG Test Suite.
hgs
parents:
diff changeset
    27
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    28
CSvgTestsImpl* CSvgTestsImpl::NewL()
hgs
parents:
diff changeset
    29
    {
hgs
parents:
diff changeset
    30
    CSvgTestsImpl* self = new ( ELeave ) CSvgTestsImpl();
hgs
parents:
diff changeset
    31
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    32
    self->ConstructL();
hgs
parents:
diff changeset
    33
    CleanupStack::Pop();
hgs
parents:
diff changeset
    34
hgs
parents:
diff changeset
    35
    return self;
hgs
parents:
diff changeset
    36
    }
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    39
//
hgs
parents:
diff changeset
    40
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    41
CSvgTestsImpl* CSvgTestsImpl::NewLC()
hgs
parents:
diff changeset
    42
    {
hgs
parents:
diff changeset
    43
    CSvgTestsImpl* self = new ( ELeave ) CSvgTestsImpl();
hgs
parents:
diff changeset
    44
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
    45
    self->ConstructL();
hgs
parents:
diff changeset
    46
    return self;
hgs
parents:
diff changeset
    47
    }
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    50
//
hgs
parents:
diff changeset
    51
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    52
CSvgTestsImpl::~CSvgTestsImpl()
hgs
parents:
diff changeset
    53
    {
hgs
parents:
diff changeset
    54
    if ( iRequiredFeatures )
hgs
parents:
diff changeset
    55
		{
hgs
parents:
diff changeset
    56
        delete iRequiredFeatures;
hgs
parents:
diff changeset
    57
		iRequiredFeatures = NULL;
hgs
parents:
diff changeset
    58
		}
hgs
parents:
diff changeset
    59
    if ( iRequiredExtensions )
hgs
parents:
diff changeset
    60
		{
hgs
parents:
diff changeset
    61
        delete iRequiredExtensions;
hgs
parents:
diff changeset
    62
		iRequiredExtensions = NULL;
hgs
parents:
diff changeset
    63
		}
hgs
parents:
diff changeset
    64
    if ( iSystemLanguage )
hgs
parents:
diff changeset
    65
		{
hgs
parents:
diff changeset
    66
        delete iSystemLanguage;
hgs
parents:
diff changeset
    67
		iSystemLanguage = NULL;
hgs
parents:
diff changeset
    68
		}
hgs
parents:
diff changeset
    69
    }
hgs
parents:
diff changeset
    70
hgs
parents:
diff changeset
    71
hgs
parents:
diff changeset
    72
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    73
//
hgs
parents:
diff changeset
    74
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    75
void CSvgTestsImpl::ConstructL()
hgs
parents:
diff changeset
    76
    {
hgs
parents:
diff changeset
    77
    iRequiredFeatures = new ( ELeave ) CDesCArrayFlat( 1 );
hgs
parents:
diff changeset
    78
    iRequiredFeatures->Reset();
hgs
parents:
diff changeset
    79
    iRequiredExtensions = new ( ELeave ) CDesCArrayFlat( 1 );
hgs
parents:
diff changeset
    80
    iRequiredExtensions->Reset();
hgs
parents:
diff changeset
    81
    iSystemLanguage = new ( ELeave ) CDesCArrayFlat( 1 );
hgs
parents:
diff changeset
    82
    iSystemLanguage->Reset();
hgs
parents:
diff changeset
    83
hgs
parents:
diff changeset
    84
    iSystemLanguageEmpty = EFalse;
hgs
parents:
diff changeset
    85
    }
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
hgs
parents:
diff changeset
    88
// From MSvgTests
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    91
//
hgs
parents:
diff changeset
    92
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    93
void CSvgTestsImpl::GetRequiredFeatures( const CDesCArrayFlat*& aRequiredFeatures )
hgs
parents:
diff changeset
    94
    {
hgs
parents:
diff changeset
    95
    aRequiredFeatures = iRequiredFeatures;
hgs
parents:
diff changeset
    96
    }
hgs
parents:
diff changeset
    97
hgs
parents:
diff changeset
    98
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
    99
// function for decoding
hgs
parents:
diff changeset
   100
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   101
void CSvgTestsImpl::SetRequiredFeatures(  CDesCArrayFlat*& aRequiredFeatures )
hgs
parents:
diff changeset
   102
    {
hgs
parents:
diff changeset
   103
	if(iRequiredFeatures)
hgs
parents:
diff changeset
   104
		{
hgs
parents:
diff changeset
   105
		iRequiredFeatures->Reset();
hgs
parents:
diff changeset
   106
		delete iRequiredFeatures;
hgs
parents:
diff changeset
   107
		iRequiredFeatures= NULL;
hgs
parents:
diff changeset
   108
		}
hgs
parents:
diff changeset
   109
    iRequiredFeatures= aRequiredFeatures;
hgs
parents:
diff changeset
   110
    }
hgs
parents:
diff changeset
   111
hgs
parents:
diff changeset
   112
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   113
//
hgs
parents:
diff changeset
   114
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   115
void CSvgTestsImpl::GetRequiredExtensions( const CDesCArrayFlat*& aRequiredExtensions )
hgs
parents:
diff changeset
   116
    {
hgs
parents:
diff changeset
   117
    aRequiredExtensions = iRequiredExtensions;
hgs
parents:
diff changeset
   118
    }
hgs
parents:
diff changeset
   119
hgs
parents:
diff changeset
   120
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   121
// function for decoding
hgs
parents:
diff changeset
   122
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   123
void CSvgTestsImpl::SetRequiredExtensions(  CDesCArrayFlat*& aRequiredExtensions )
hgs
parents:
diff changeset
   124
    {
hgs
parents:
diff changeset
   125
	if(iRequiredExtensions)
hgs
parents:
diff changeset
   126
		{
hgs
parents:
diff changeset
   127
		iRequiredExtensions->Reset();
hgs
parents:
diff changeset
   128
		delete iRequiredExtensions;
hgs
parents:
diff changeset
   129
		iRequiredExtensions= NULL;
hgs
parents:
diff changeset
   130
		}
hgs
parents:
diff changeset
   131
    iRequiredExtensions= aRequiredExtensions;
hgs
parents:
diff changeset
   132
    }
hgs
parents:
diff changeset
   133
hgs
parents:
diff changeset
   134
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   135
// returns false if there was an empty string system language true otherwise
hgs
parents:
diff changeset
   136
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   137
TBool CSvgTestsImpl::GetSystemLanguage( const CDesCArrayFlat*& aSystemLanguage )
hgs
parents:
diff changeset
   138
    {
hgs
parents:
diff changeset
   139
    aSystemLanguage = iSystemLanguage;
hgs
parents:
diff changeset
   140
hgs
parents:
diff changeset
   141
    if (iSystemLanguageEmpty)
hgs
parents:
diff changeset
   142
    	{
hgs
parents:
diff changeset
   143
    		return EFalse;
hgs
parents:
diff changeset
   144
    	}
hgs
parents:
diff changeset
   145
hgs
parents:
diff changeset
   146
    return ETrue;
hgs
parents:
diff changeset
   147
hgs
parents:
diff changeset
   148
    }
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   151
// function for decoding
hgs
parents:
diff changeset
   152
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   153
void CSvgTestsImpl::SetSystemLanguage(  CDesCArrayFlat*& aSystemLanguage )
hgs
parents:
diff changeset
   154
    {
hgs
parents:
diff changeset
   155
	if(iSystemLanguage)
hgs
parents:
diff changeset
   156
		{
hgs
parents:
diff changeset
   157
		iSystemLanguage->Reset();
hgs
parents:
diff changeset
   158
		delete iSystemLanguage;
hgs
parents:
diff changeset
   159
		iSystemLanguage= NULL;
hgs
parents:
diff changeset
   160
		}
hgs
parents:
diff changeset
   161
    iSystemLanguage= aSystemLanguage;
hgs
parents:
diff changeset
   162
    }
hgs
parents:
diff changeset
   163
hgs
parents:
diff changeset
   164
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   165
//
hgs
parents:
diff changeset
   166
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   167
TBool CSvgTestsImpl::HasExtension( const TDesC& /* aExtension */ )
hgs
parents:
diff changeset
   168
    {
hgs
parents:
diff changeset
   169
    return EFalse;
hgs
parents:
diff changeset
   170
    }
hgs
parents:
diff changeset
   171
hgs
parents:
diff changeset
   172
// For use in requiredFeatures
hgs
parents:
diff changeset
   173
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   174
//
hgs
parents:
diff changeset
   175
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   176
TBool CSvgTestsImpl::HasFeature( const TDesC& aFeature )
hgs
parents:
diff changeset
   177
    {
hgs
parents:
diff changeset
   178
    // SVG Tiny Feature List
hgs
parents:
diff changeset
   179
    _LIT( KTiny, "http://www.w3.org/TR/SVGMobile/Tiny/feature#" );
hgs
parents:
diff changeset
   180
    _LIT( KBase, "base" );
hgs
parents:
diff changeset
   181
    _LIT( KInteractivity, "interactivity" );
hgs
parents:
diff changeset
   182
    _LIT( KAll, "all" );
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
    // SVG 1.1 Feature List
hgs
parents:
diff changeset
   185
    _LIT( KSVG11, "http://www.w3.org/TR/SVG11/feature#" );
hgs
parents:
diff changeset
   186
    _LIT( KCoreAttr, "CoreAttribute" );
hgs
parents:
diff changeset
   187
    _LIT( KBasicStr, "BasicStructure" );
hgs
parents:
diff changeset
   188
    _LIT( KStyle, "Style" );
hgs
parents:
diff changeset
   189
    _LIT( KPaintAttr, "PaintAttribute" );
hgs
parents:
diff changeset
   190
    _LIT( KGraphicsAttr, "BasicGraphicsAttribute" );
hgs
parents:
diff changeset
   191
    _LIT( KHyperlink, "Hyperlinking" );
hgs
parents:
diff changeset
   192
    _LIT( KXlinkAttr, "XlinkAttribute" );
hgs
parents:
diff changeset
   193
    _LIT( KCond, "ConditionalProcessing" );
hgs
parents:
diff changeset
   194
    _LIT( KShape, "Shape" );
hgs
parents:
diff changeset
   195
    _LIT( KImage, "Image" );
hgs
parents:
diff changeset
   196
    _LIT( KBasicTest, "BasicText" );
hgs
parents:
diff changeset
   197
    _LIT( KBasicFont, "BasicFont" );
hgs
parents:
diff changeset
   198
    _LIT( KDocAttr,"DocumentEventsAttribute" );
hgs
parents:
diff changeset
   199
    _LIT( KGraphEvt,"GraphicalEventsAttribute" );
hgs
parents:
diff changeset
   200
    _LIT( KAnimEvt,"AnimationEventsAttribute" );
hgs
parents:
diff changeset
   201
    _LIT( KScript, "Scripting" );
hgs
parents:
diff changeset
   202
    _LIT( KView, "View" );
hgs
parents:
diff changeset
   203
    _LIT( KAnim, "SVG-animation" );
hgs
parents:
diff changeset
   204
    _LIT( KExt, "Extensibility" );
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
    _LIT( KSVG12, "http://www.w3.org/TR/SVG12/feature#" );
hgs
parents:
diff changeset
   207
    _LIT( KAudio, "Audio");
hgs
parents:
diff changeset
   208
hgs
parents:
diff changeset
   209
    // SVG 1.2 Feature List
hgs
parents:
diff changeset
   210
    // SVG Feature List
hgs
parents:
diff changeset
   211
    _LIT( KStatic, "org.w3c.svg.static" );
hgs
parents:
diff changeset
   212
    _LIT( KDynamic, "org.w3c.svg.dynamic" );
hgs
parents:
diff changeset
   213
hgs
parents:
diff changeset
   214
    TPtrC tinybase( KTiny );
hgs
parents:
diff changeset
   215
    if( (aFeature.Length()-tinybase.Length()) > 1 )
hgs
parents:
diff changeset
   216
        {
hgs
parents:
diff changeset
   217
        TPtrC rightTiny= aFeature.Right(aFeature.Length()-tinybase.Length() );
hgs
parents:
diff changeset
   218
        if ( rightTiny.Match(KBase) != KErrNotFound)
hgs
parents:
diff changeset
   219
        return ETrue;
hgs
parents:
diff changeset
   220
        if ( rightTiny.Match(KInteractivity) != KErrNotFound)
hgs
parents:
diff changeset
   221
        return ETrue;
hgs
parents:
diff changeset
   222
        if ( rightTiny.Match(KAll) != KErrNotFound )
hgs
parents:
diff changeset
   223
        return ETrue;
hgs
parents:
diff changeset
   224
        }
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
    TPtrC svg11base( KSVG11 );
hgs
parents:
diff changeset
   227
    if( (aFeature.Length()-svg11base.Length()) > 1 )
hgs
parents:
diff changeset
   228
        {
hgs
parents:
diff changeset
   229
        TPtrC rightSvg11= aFeature.Right(aFeature.Length()-svg11base.Length() );
hgs
parents:
diff changeset
   230
    if ( rightSvg11.Match(KAnim) != KErrNotFound )
hgs
parents:
diff changeset
   231
        return ETrue;
hgs
parents:
diff changeset
   232
    if ( rightSvg11.Match(KCoreAttr) != KErrNotFound )
hgs
parents:
diff changeset
   233
        return ETrue;
hgs
parents:
diff changeset
   234
    if ( rightSvg11.Match(KBasicStr) != KErrNotFound )
hgs
parents:
diff changeset
   235
        return ETrue;
hgs
parents:
diff changeset
   236
    if ( rightSvg11.Match(KStyle) != KErrNotFound )
hgs
parents:
diff changeset
   237
        return ETrue;
hgs
parents:
diff changeset
   238
    if ( rightSvg11.Match(KPaintAttr) != KErrNotFound )
hgs
parents:
diff changeset
   239
        return ETrue;
hgs
parents:
diff changeset
   240
    if ( rightSvg11.Match(KGraphicsAttr) != KErrNotFound )
hgs
parents:
diff changeset
   241
        return ETrue;
hgs
parents:
diff changeset
   242
    if ( rightSvg11.Match(KHyperlink) != KErrNotFound )
hgs
parents:
diff changeset
   243
        return ETrue;
hgs
parents:
diff changeset
   244
    if ( rightSvg11.Match(KXlinkAttr) != KErrNotFound )
hgs
parents:
diff changeset
   245
        return ETrue;
hgs
parents:
diff changeset
   246
    if (rightSvg11.Match(KCond) != KErrNotFound )
hgs
parents:
diff changeset
   247
        return ETrue;
hgs
parents:
diff changeset
   248
    if ( rightSvg11.Match(KShape) != KErrNotFound )
hgs
parents:
diff changeset
   249
        return ETrue;
hgs
parents:
diff changeset
   250
    if ( rightSvg11.Match(KImage) != KErrNotFound )
hgs
parents:
diff changeset
   251
        return ETrue;
hgs
parents:
diff changeset
   252
    if ( rightSvg11.Match(KBasicTest) != KErrNotFound )
hgs
parents:
diff changeset
   253
        return ETrue;
hgs
parents:
diff changeset
   254
    if (rightSvg11.Match(KBasicFont) != KErrNotFound )
hgs
parents:
diff changeset
   255
        return ETrue;
hgs
parents:
diff changeset
   256
    if ( rightSvg11.Match(KDocAttr) != KErrNotFound )
hgs
parents:
diff changeset
   257
        return ETrue;
hgs
parents:
diff changeset
   258
    if ( rightSvg11.Match(KGraphEvt) != KErrNotFound )
hgs
parents:
diff changeset
   259
        return ETrue;
hgs
parents:
diff changeset
   260
    if ( rightSvg11.Match(KAnimEvt) != KErrNotFound )
hgs
parents:
diff changeset
   261
        return ETrue;
hgs
parents:
diff changeset
   262
    if ( rightSvg11.Match(KScript)!= KErrNotFound )
hgs
parents:
diff changeset
   263
        return EFalse;          // Scripting is not supported.
hgs
parents:
diff changeset
   264
    if ( rightSvg11.Match(KView) != KErrNotFound )
hgs
parents:
diff changeset
   265
        return ETrue;
hgs
parents:
diff changeset
   266
    if ( rightSvg11.Match(KAnim) != KErrNotFound )
hgs
parents:
diff changeset
   267
        return ETrue;
hgs
parents:
diff changeset
   268
    if ( rightSvg11.Match(KExt) != KErrNotFound )
hgs
parents:
diff changeset
   269
        return ETrue;
hgs
parents:
diff changeset
   270
        }
hgs
parents:
diff changeset
   271
hgs
parents:
diff changeset
   272
    TPtrC svg12base( KSVG12 );
hgs
parents:
diff changeset
   273
    if( (aFeature.Length()-svg12base.Length()) > 1 )
hgs
parents:
diff changeset
   274
        {
hgs
parents:
diff changeset
   275
        TPtrC rightSvg12= aFeature.Right(aFeature.Length()-svg12base.Length() );
hgs
parents:
diff changeset
   276
        if ( rightSvg12.Match(KAudio) != KErrNotFound )
hgs
parents:
diff changeset
   277
            {
hgs
parents:
diff changeset
   278
            return ETrue;
hgs
parents:
diff changeset
   279
            }
hgs
parents:
diff changeset
   280
        }
hgs
parents:
diff changeset
   281
hgs
parents:
diff changeset
   282
    if ( aFeature == KStatic )
hgs
parents:
diff changeset
   283
        return ETrue;
hgs
parents:
diff changeset
   284
    if ( aFeature == KDynamic )
hgs
parents:
diff changeset
   285
        return EFalse;
hgs
parents:
diff changeset
   286
    else
hgs
parents:
diff changeset
   287
        return FALSE;
hgs
parents:
diff changeset
   288
    }
hgs
parents:
diff changeset
   289
hgs
parents:
diff changeset
   290
TBool CSvgTestsImpl::HasAnyTests()
hgs
parents:
diff changeset
   291
{
hgs
parents:
diff changeset
   292
	const CDesCArrayFlat* tempTestArray = NULL;
hgs
parents:
diff changeset
   293
hgs
parents:
diff changeset
   294
	GetRequiredFeatures(tempTestArray);
hgs
parents:
diff changeset
   295
	if (tempTestArray && tempTestArray->Count() > 0)
hgs
parents:
diff changeset
   296
	{
hgs
parents:
diff changeset
   297
		return ETrue;
hgs
parents:
diff changeset
   298
	}
hgs
parents:
diff changeset
   299
hgs
parents:
diff changeset
   300
	GetSystemLanguage(tempTestArray);
hgs
parents:
diff changeset
   301
	if (tempTestArray && tempTestArray->Count() > 0)
hgs
parents:
diff changeset
   302
	{
hgs
parents:
diff changeset
   303
		return ETrue;
hgs
parents:
diff changeset
   304
	}
hgs
parents:
diff changeset
   305
hgs
parents:
diff changeset
   306
	GetRequiredExtensions(tempTestArray);
hgs
parents:
diff changeset
   307
	if (tempTestArray && tempTestArray->Count() > 0)
hgs
parents:
diff changeset
   308
	{
hgs
parents:
diff changeset
   309
		return ETrue;
hgs
parents:
diff changeset
   310
	}
hgs
parents:
diff changeset
   311
hgs
parents:
diff changeset
   312
	if (iSystemLanguageEmpty)
hgs
parents:
diff changeset
   313
	{
hgs
parents:
diff changeset
   314
		return ETrue;
hgs
parents:
diff changeset
   315
	}
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
	return EFalse;
hgs
parents:
diff changeset
   318
}
hgs
parents:
diff changeset
   319
hgs
parents:
diff changeset
   320
// Implementation
hgs
parents:
diff changeset
   321
hgs
parents:
diff changeset
   322
TBool CSvgTestsImpl::SetRequiredFeatureAttribute( const TDesC& aValue )
hgs
parents:
diff changeset
   323
{
hgs
parents:
diff changeset
   324
	TLex input( aValue );
hgs
parents:
diff changeset
   325
hgs
parents:
diff changeset
   326
    while ( !( input.Eos() ) )
hgs
parents:
diff changeset
   327
    {
hgs
parents:
diff changeset
   328
    	input.SkipSpace();
hgs
parents:
diff changeset
   329
        input.Mark();
hgs
parents:
diff changeset
   330
        input.SkipCharacters();
hgs
parents:
diff changeset
   331
        TPtrC token = input.MarkedToken();    // then extract token
hgs
parents:
diff changeset
   332
        TRAPD(error,iRequiredFeatures->AppendL( token ));
hgs
parents:
diff changeset
   333
hgs
parents:
diff changeset
   334
        if (error != KErrNone)
hgs
parents:
diff changeset
   335
        {
hgs
parents:
diff changeset
   336
        	//Error Processing
hgs
parents:
diff changeset
   337
        	return EFalse;
hgs
parents:
diff changeset
   338
        }
hgs
parents:
diff changeset
   339
    }
hgs
parents:
diff changeset
   340
hgs
parents:
diff changeset
   341
    return ETrue;
hgs
parents:
diff changeset
   342
}
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
TBool CSvgTestsImpl::SetRequiredExtensionAttribute( const TDesC& aValue )
hgs
parents:
diff changeset
   345
{
hgs
parents:
diff changeset
   346
	TLex input( aValue );
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
    if ( aValue.Length() == 0 )
hgs
parents:
diff changeset
   349
    {
hgs
parents:
diff changeset
   350
	    TRAPD(error1,iRequiredExtensions->AppendL( aValue ));
hgs
parents:
diff changeset
   351
hgs
parents:
diff changeset
   352
	    if (error1 != KErrNone)
hgs
parents:
diff changeset
   353
	    {
hgs
parents:
diff changeset
   354
        	//Error Processing
hgs
parents:
diff changeset
   355
        	return EFalse;
hgs
parents:
diff changeset
   356
	  	}
hgs
parents:
diff changeset
   357
    }
hgs
parents:
diff changeset
   358
    else
hgs
parents:
diff changeset
   359
    {
hgs
parents:
diff changeset
   360
    	while ( !( input.Eos() ) )
hgs
parents:
diff changeset
   361
        {
hgs
parents:
diff changeset
   362
        	input.SkipSpace();
hgs
parents:
diff changeset
   363
            input.Mark();
hgs
parents:
diff changeset
   364
            input.SkipCharacters();
hgs
parents:
diff changeset
   365
            TPtrC token = input.MarkedToken();    // then extract token
hgs
parents:
diff changeset
   366
            TRAPD(error,iRequiredExtensions->AppendL( token ));
hgs
parents:
diff changeset
   367
hgs
parents:
diff changeset
   368
            if (error != KErrNone)
hgs
parents:
diff changeset
   369
            {
hgs
parents:
diff changeset
   370
							//Error Processing
hgs
parents:
diff changeset
   371
							return EFalse;
hgs
parents:
diff changeset
   372
            }
hgs
parents:
diff changeset
   373
        }
hgs
parents:
diff changeset
   374
    }
hgs
parents:
diff changeset
   375
    return ETrue;
hgs
parents:
diff changeset
   376
}
hgs
parents:
diff changeset
   377
hgs
parents:
diff changeset
   378
TBool CSvgTestsImpl::SetSystemLanguageAttribute( const TDesC& aValue  )
hgs
parents:
diff changeset
   379
{
hgs
parents:
diff changeset
   380
	TLex input( aValue );
hgs
parents:
diff changeset
   381
hgs
parents:
diff changeset
   382
	iSystemLanguageEmpty = EFalse;
hgs
parents:
diff changeset
   383
hgs
parents:
diff changeset
   384
 	if ( input.Eos() )
hgs
parents:
diff changeset
   385
    {
hgs
parents:
diff changeset
   386
		iSystemLanguageEmpty = ETrue;
hgs
parents:
diff changeset
   387
    }
hgs
parents:
diff changeset
   388
    else
hgs
parents:
diff changeset
   389
    {
hgs
parents:
diff changeset
   390
    	while ( !( input.Eos() ) )
hgs
parents:
diff changeset
   391
        {
hgs
parents:
diff changeset
   392
        	input.SkipSpace();
hgs
parents:
diff changeset
   393
            input.Mark();
hgs
parents:
diff changeset
   394
            input.SkipCharacters();
hgs
parents:
diff changeset
   395
            TPtrC token = input.MarkedToken();    // then extract token
hgs
parents:
diff changeset
   396
            TRAPD(error,iSystemLanguage->AppendL( token ));
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
            if (error != KErrNone)
hgs
parents:
diff changeset
   399
            {
hgs
parents:
diff changeset
   400
							//Error Processing
hgs
parents:
diff changeset
   401
							return EFalse;
hgs
parents:
diff changeset
   402
          	}
hgs
parents:
diff changeset
   403
        }
hgs
parents:
diff changeset
   404
    }
hgs
parents:
diff changeset
   405
hgs
parents:
diff changeset
   406
    return ETrue;
hgs
parents:
diff changeset
   407
hgs
parents:
diff changeset
   408
}
hgs
parents:
diff changeset
   409
hgs
parents:
diff changeset
   410
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   411
//
hgs
parents:
diff changeset
   412
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   413
TBool CSvgTestsImpl::SetTestAttributeL( const TDesC& aPropertyName,
hgs
parents:
diff changeset
   414
                                        const TDesC& aValue )
hgs
parents:
diff changeset
   415
{
hgs
parents:
diff changeset
   416
hgs
parents:
diff changeset
   417
    _LIT( KRequiredFeatures, "requiredFeatures" );
hgs
parents:
diff changeset
   418
    _LIT( KRequiredExtensions, "requiredExtensions" );
hgs
parents:
diff changeset
   419
    _LIT( KSystemLanguage, "systemLanguage" );
hgs
parents:
diff changeset
   420
hgs
parents:
diff changeset
   421
    if (aPropertyName == KRequiredFeatures)
hgs
parents:
diff changeset
   422
    {
hgs
parents:
diff changeset
   423
    	return SetRequiredFeatureAttribute(aValue);
hgs
parents:
diff changeset
   424
    }
hgs
parents:
diff changeset
   425
    else if (aPropertyName == KRequiredExtensions)
hgs
parents:
diff changeset
   426
    {
hgs
parents:
diff changeset
   427
    	return SetRequiredExtensionAttribute(aValue);
hgs
parents:
diff changeset
   428
    }
hgs
parents:
diff changeset
   429
    else if (aPropertyName == KSystemLanguage)
hgs
parents:
diff changeset
   430
    {
hgs
parents:
diff changeset
   431
    	return SetSystemLanguageAttribute(aValue);
hgs
parents:
diff changeset
   432
    }
hgs
parents:
diff changeset
   433
	else
hgs
parents:
diff changeset
   434
	{
hgs
parents:
diff changeset
   435
		return EFalse;
hgs
parents:
diff changeset
   436
	}
hgs
parents:
diff changeset
   437
}
hgs
parents:
diff changeset
   438
hgs
parents:
diff changeset
   439
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   440
//
hgs
parents:
diff changeset
   441
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   442
CSvgTestsImpl* CSvgTestsImpl::CloneL()
hgs
parents:
diff changeset
   443
    {
hgs
parents:
diff changeset
   444
    CSvgTestsImpl* retValue = CSvgTestsImpl::NewL();
hgs
parents:
diff changeset
   445
hgs
parents:
diff changeset
   446
	CleanupStack::PushL(retValue);
hgs
parents:
diff changeset
   447
    // no need to call Reset() on any of these arrays because
hgs
parents:
diff changeset
   448
    // that already happened in the call to NewL above
hgs
parents:
diff changeset
   449
    int i;
hgs
parents:
diff changeset
   450
hgs
parents:
diff changeset
   451
    // *** copy required features
hgs
parents:
diff changeset
   452
    TInt requiredFeaturesCnt = this->iRequiredFeatures->Count();
hgs
parents:
diff changeset
   453
    for (i=0; i< requiredFeaturesCnt; i++)
hgs
parents:
diff changeset
   454
        {
hgs
parents:
diff changeset
   455
        retValue->iRequiredFeatures->AppendL(this->iRequiredFeatures->operator[](i));
hgs
parents:
diff changeset
   456
        }
hgs
parents:
diff changeset
   457
hgs
parents:
diff changeset
   458
    // *** copy required extensions
hgs
parents:
diff changeset
   459
    TInt requiredExtensionsCnt = this->iRequiredExtensions->Count();
hgs
parents:
diff changeset
   460
    for (i=0; i< requiredExtensionsCnt; i++)
hgs
parents:
diff changeset
   461
        {
hgs
parents:
diff changeset
   462
        retValue->iRequiredExtensions->AppendL(this->iRequiredExtensions->operator[](i));
hgs
parents:
diff changeset
   463
        }
hgs
parents:
diff changeset
   464
hgs
parents:
diff changeset
   465
    // *** copy system language
hgs
parents:
diff changeset
   466
    TInt systemLanguageCnt = this->iSystemLanguage->Count();
hgs
parents:
diff changeset
   467
    for (i=0; i< systemLanguageCnt; i++)
hgs
parents:
diff changeset
   468
        {
hgs
parents:
diff changeset
   469
        retValue->iSystemLanguage->AppendL(this->iSystemLanguage->operator[](i));
hgs
parents:
diff changeset
   470
        }
hgs
parents:
diff changeset
   471
	CleanupStack::Pop();
hgs
parents:
diff changeset
   472
    return retValue;
hgs
parents:
diff changeset
   473
    }