summaryrefslogtreecommitdiffstats
path: root/plugins/contacts/symbian/contactsmodel/tsrc/t_sec_asyncopen.h
blob: b8da4eaff785f5e2abd61cfe72f12b2b4acbc389 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
* Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
* Contact: http://www.qt-project.org/legal
* 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: 
*
*/


#include <cntdb.h>
#include <e32svr.h>
#include <cntviewbase.h>
#include "t_utils.h"

#ifndef __TSECASYNCOPEN__
#define __TSECASYNCOPEN__

// Main test conducting class for Secure Async Open Testing
class CTestConductor : public CActive
	{
public:
	static CTestConductor* NewL();
	~CTestConductor();
	
private:
	enum TTest
		{
		EAsyncOpenNamed  = 0,
		EAsyncOpenedNamed,
		EAsyncOpenDefault,
		EAsyncOpenedDefault,
		EAsyncOpenNonExistent,
		EAsyncOpenedNonExistent,
		EAsyncCancelOpenDefault,
		EAsyncCanceledOpenedDefault,
		EAsyncOpenDamaged,
		EAsyncOpenedDamaged,
#ifndef _TEST_ON_SQLITE_		
		EAsyncOpenPreviousVersion,
		EAsyncOpenedPreviousVersion,
		EOpenAsyncAndAsync,
		EOpenedAsyncAndAsync,
		EWaitState,
		EWaitedState,
		EOpenAsyncAndSync,
		EOpenedAsyncAndSync,
#endif // _TEST_ON_SQLITE_		
		ENumTests
		};	
		
	CTestConductor();
	void ConstructL();
	TInt RunError(TInt aError);
	void NextTest();
	void CopyCdbFileL(const TDesC& aFileName, const TDesC& aToFileName);
	void RunL();      // From CActive.
	void DoCancel();  // From CActive.

private:
    CContactOpenOperation* iContactOpenOperation;
	TInt iCurrentTestNumber;
	CContactDatabase* iDb;
	TInt iWaitCounter;
	TInt iTestError;
	};



// Active object to Test Async open from two threads at once
class CTester : public CActive
	{
public:
	static CTester* NewL();
	~CTester();
	
private:
	enum TTest
		{
		EAsyncOpenNamed,
		EAsyncOpenedNamed,
		ENumTests
		};	


	CTester();
	void ConstructL();
	void NextTest();
	void RunL();      // From CActive.
	void DoCancel();  // From CActive.

private:
    CContactOpenOperation* iContactOpenOperation;
    TInt iCurrentTestNumber;
	CContactDatabase* iDb;
	};


// This class (CDbOpenLauncher) creates a thread to do async and sync opens 
class CDbOpenLauncher : public CBase	
	{
public:
	static void Create(const TDesC& aName, const TDesC& aViewName);

private:
	static void DoMainL(const TDesC& aName);
	static TInt LaunchThread(TAny* aAny);	
		
	class CViewer : public CBase
		{
	public: 
		static CViewer* NewL(const TDesC& aViewName);
		~CViewer();
	private: 
		void ConstructL(const TDesC& aViewName);
		
	private:
		CContactDatabase* iDatabase;
		CTester* tester;
		
	};
			
};

#endif // __TSECASYNCOPEN__