fontservices/fontstore/tfs/T_fontsessioncache.cpp
author hgs
Mon, 12 Jul 2010 14:38:26 +0800
changeset 45 662fa7de7023
parent 40 91ef7621b7fc
permissions -rw-r--r--
201024_05
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
40
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     1
/*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     2
* Copyright (c) 2006-2010 Nokia Corporation and/or its subsidiary(-ies).
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     3
* All rights reserved.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     8
*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
     9
* Initial Contributors:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    11
*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    12
* Contributors:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    13
*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    14
* Description: 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    15
*
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    16
*/
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    17
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    18
/**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    19
 @file
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    20
 @test
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    21
 @internalComponent Internal Symbian test code
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    22
*/
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    23
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    24
#include "FNTSTORE.H"
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    25
#include "t_fontsessioncache.h"
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    26
#include "T_IsolatedFontStore.h"
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    27
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    28
_LIT(KWorkerProcess,"tfontsessioncacheproc");
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    29
_LIT(KSharedChunk,"TestSharedChunk_T_FontSessionCache");
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    30
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    31
const TInt KNumOfProc = 4;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    32
const TInt KRunningTime = 1000 * 1000 * 5;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    33
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    34
//Make sure font is large enough that font and session caches are used sufficiently. 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    35
const TInt KFontHeight = 250;   
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    36
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    37
// This class is a data mirror to CBitmapFont in order to check its private 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    38
// member iOpenFont. It is only used by TestOpenFontForQtL().
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    39
class CBitmapFontDummy:public CFont
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    40
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    41
public:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    42
    TFontSpec iFontSpecInTwips;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    43
    TAlgStyle iAlgStyle;        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    44
    RHeap* iHeap;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    45
    TInt iFontBitmapOffset;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    46
    COpenFont* iOpenFont; 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    47
    TUint32 iReserved;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    48
    TUint32 iUniqueFontId;     
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    49
    };
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    50
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    51
class CTFontSessionCache : public CTGraphicsBase
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    52
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    53
public:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    54
    CTFontSessionCache(CTestStep* aStep);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    55
    ~CTFontSessionCache();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    56
    TInt Base();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    57
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    58
protected:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    59
// From CTGraphicsStep
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    60
    virtual void RunTestCaseL(TInt aCurTestCase);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    61
    virtual void ConstructL();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    62
private:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    63
    void TestOpenFontForQtL();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    64
    void RunMultiWorkerProcessL();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    65
    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    66
    void FlushCaches();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    67
    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    68
private:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    69
    CTIsolatedFontStore *iIFontStore;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    70
    RHeap   *iSharedHeap;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    71
    RChunk  iChunk;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    72
    CFont *iFont;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    73
    };
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    74
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    75
CTFontSessionCache::CTFontSessionCache(CTestStep* aStep)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    76
 :  CTGraphicsBase(aStep)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    77
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    78
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    79
    }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    80
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    81
CTFontSessionCache::~CTFontSessionCache()
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    82
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    83
    iIFontStore->iFs->ReleaseFont(iFont);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    84
    delete iIFontStore;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    85
    iChunk.Close(); 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    86
    }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    87
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    88
inline TInt CTFontSessionCache::Base() 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    89
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    90
    return reinterpret_cast<TInt>(iChunk.Base());
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    91
    }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    92
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    93
void CTFontSessionCache::ConstructL()
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    94
    {
45
662fa7de7023 201024_05
hgs
parents: 40
diff changeset
    95
    User::LeaveIfError(iChunk.CreateGlobal(KNullDesC,0x10000,0x10000));
40
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    96
    iSharedHeap = UserHeap::ChunkHeap(iChunk,0x10000,0x1000,0x10000,0,EFalse,0);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    97
    if(iSharedHeap == NULL)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    98
        {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
    99
        RDebug::Print(_L("iSharedHeap = NULL"));
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   100
        User::Leave(KErrNoMemory);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   101
        }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   102
    iIFontStore = CTIsolatedFontStore::NewL(iSharedHeap);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   103
    iIFontStore->LoadRasterizersL();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   104
    iIFontStore->iFs->LoadFontsAtStartupL();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   105
    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   106
    _LIT(KTypefaceName, "DejaVu Sans Condensed");
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   107
    TFontSpec spec(KTypefaceName, KFontHeight);   
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   108
    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   109
    TInt ret = iIFontStore->iFs->GetNearestFontToDesignHeightInPixels(iFont,spec);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   110
    TEST(ret == KErrNone);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   111
 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   112
    }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   113
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   114
void CTFontSessionCache::FlushCaches()
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   115
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   116
    TText ch;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   117
    TOpenFontGlyphData *glyphData = NULL;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   118
    for (TInt sHandle = 0; sHandle < KNumOfProc; sHandle++)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   119
        {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   120
        for (ch = 'A'; ch <= 'z'; ch++)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   121
            {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   122
            static_cast<CBitmapFont*> (iFont)->Rasterize(sHandle, ch, glyphData);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   123
            }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   124
        }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   125
    }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   126
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   127
/**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   128
    @SYMTestCaseID
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   129
    TI18N-FNTSTORE-UT--4003
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   130
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   131
    @SYMTestCaseDesc
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   132
    Qt needs the last bit of iOpenFont to be set 1 as a workaround to maintain
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   133
    its compatibility across difference Symbian OS versions.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   134
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   135
    @SYMTestActions
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   136
    1. Get a CBitmapFont in the constructor
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   137
    2. Check the LSB of its iOpenFont by using CBitmapFontDummy
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   138
        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   139
    @SYMTestExpectedResults
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   140
    Test should pass
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   141
*/
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   142
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   143
void CTFontSessionCache::TestOpenFontForQtL()
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   144
    {    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   145
    TEST(reinterpret_cast<TInt>(reinterpret_cast<CBitmapFontDummy*>(iFont)->iOpenFont) & 1);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   146
    }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   147
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   148
/**
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   149
    @SYMTestCaseID
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   150
    TI18N-FNTSTORE-CIT-4002
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   151
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   152
    @SYMTestCaseDesc
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   153
    This case is to test the safty of actions over the shared heap.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   154
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   155
    @SYMTestActions
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   156
    1. Shared heap is initialised in the constructor
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   157
    2. Run rasterizing function to Flush the font caches(glyph tree and session cache).
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   158
    3. Launch KNumOfProc worker processes running with random latency at beginning, which
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   159
       is to seach the cache from different processes. The globle chunk and font handles are
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   160
       passed via process environment variables.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   161
    4. Each one lasts about 1 sec. Within duration of 5 sec, if one terminates, re-launch it.   
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   162
        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   163
    @SYMTestExpectedResults
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   164
    Test should pass without any Panic.
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   165
*/
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   166
void CTFontSessionCache::RunMultiWorkerProcessL()
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   167
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   168
    RProcess ProcArray[KNumOfProc];
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   169
    TRequestStatus *completeStatus[KNumOfProc];
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   170
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   171
    FlushCaches();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   172
    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   173
    for (TInt i = 0; i < KNumOfProc; i++)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   174
        {                    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   175
        RDebug::Print(_L(">>> Launching %d..."),i);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   176
        TInt err;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   177
        err = ProcArray[i].Create(KWorkerProcess, KNullDesC);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   178
        User::LeaveIfError(err);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   179
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   180
        TInt FontOffset = reinterpret_cast<TInt>(iFont) - Base();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   181
        ProcArray[i].SetParameter(1,iChunk);        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   182
        ProcArray[i].SetParameter(2,FontOffset);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   183
        ProcArray[i].SetParameter(3,i);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   184
        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   185
        completeStatus[i] = new(ELeave) TRequestStatus; 
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   186
        CleanupStack::PushL(completeStatus[i]);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   187
        *completeStatus[i] = KRequestPending;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   188
        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   189
        ProcArray[i].Logon(*completeStatus[i]);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   190
        ProcArray[i].Resume(); //start the process
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   191
        }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   192
      
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   193
    RTimer timer;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   194
    timer.CreateLocal();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   195
    TRequestStatus timerStatus = KRequestPending;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   196
    TTimeIntervalMicroSeconds32 timeout(KRunningTime);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   197
    timer.After(timerStatus, timeout);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   198
    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   199
    do
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   200
        {     
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   201
        User::WaitForNRequest(completeStatus, KNumOfProc);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   202
        TInt i = 0;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   203
        for(;i < KNumOfProc;i++ )
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   204
            {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   205
                if (*completeStatus[i] != KRequestPending)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   206
                {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   207
                break;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   208
                }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   209
            }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   210
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   211
        TExitType exit = ProcArray[i].ExitType();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   212
        TEST(exit == EExitKill);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   213
        TInt reason = ProcArray[i].ExitReason();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   214
        TEST (reason == 0);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   215
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   216
        RDebug::Print(_L("<<< Close %d..."), i);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   217
        ProcArray[i].Close();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   218
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   219
        RDebug::Print(_L(">>> Launching %d..."), i);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   220
        TInt err;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   221
        err = ProcArray[i].Create(KWorkerProcess, KNullDesC);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   222
        User::LeaveIfError(err);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   223
        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   224
        TInt FontOffset = reinterpret_cast<TInt>(iFont) - Base();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   225
        ProcArray[i].SetParameter(1,iChunk);        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   226
        ProcArray[i].SetParameter(2,FontOffset);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   227
        ProcArray[i].SetParameter(3,i);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   228
        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   229
        //run process 1
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   230
        *completeStatus[i] = KRequestPending;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   231
        ProcArray[i].Logon(*completeStatus[i]);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   232
        ProcArray[i].Resume(); //start the process
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   233
        }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   234
    while (timerStatus == KRequestPending);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   235
    
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   236
    for (TInt i = 0; i < KNumOfProc; i++)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   237
        {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   238
        if(*completeStatus[i] == KRequestPending)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   239
            {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   240
            User::WaitForRequest(*completeStatus[i]);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   241
            }       
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   242
        RDebug::Print(_L("<<< Tear down Close %d..."),i);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   243
        ProcArray[i].Close(); //tear down
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   244
        }        
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   245
    CleanupStack::PopAndDestroy(KNumOfProc);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   246
    }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   247
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   248
void CTFontSessionCache::RunTestCaseL( TInt aCurTestCase )
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   249
    {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   250
    ((CTFontSessionCacheStep*) iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   251
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   252
    switch (aCurTestCase)
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   253
        {
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   254
        case 1:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   255
            ((CTFontSessionCacheStep*) iStep)->SetTestStepID(_L("TI18N-FNTSTORE-UT--4003"));
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   256
            INFO_PRINTF1(_L("Test CBitmapFont::iOpenFont last bit for Qt\n"));
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   257
            TestOpenFontForQtL();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   258
            break;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   259
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   260
        case 2:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   261
            ((CTFontSessionCacheStep*) iStep)->SetTestStepID(_L("TI18N-FNTSTORE-CIT-4002"));
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   262
            INFO_PRINTF1(_L("Test GetCharacterData() in muti-process client\n"));
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   263
            RunMultiWorkerProcessL();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   264
            break;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   265
            
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   266
        case 3:
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   267
            ((CTFontSessionCacheStep*) iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   268
            ((CTFontSessionCacheStep*) iStep)->CloseTMSGraphicsStep();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   269
            TestComplete();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   270
            break;
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   271
        }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   272
    ((CTFontSessionCacheStep*)iStep)->RecordTestResultL();
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   273
    }
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   274
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   275
// --------------
91ef7621b7fc 201019_08
hgs
parents:
diff changeset
   276
__CONSTRUCT_STEP__(FontSessionCache)