|
1 // Copyright (c) 2003-2009 Nokia Corporation and/or its subsidiary(-ies). |
|
2 // All rights reserved. |
|
3 // This component and the accompanying materials are made available |
|
4 // under the terms of "Eclipse Public License v1.0" |
|
5 // which accompanies this distribution, and is available |
|
6 // at the URL "http://www.eclipse.org/legal/epl-v10.html". |
|
7 // |
|
8 // Initial Contributors: |
|
9 // Nokia Corporation - initial contribution. |
|
10 // |
|
11 // Contributors: |
|
12 // |
|
13 // Description: |
|
14 // defines test classes: CTestMessageComposer |
|
15 // |
|
16 // |
|
17 #if !defined __CTESTMESSAGECOMPOSER_H__ |
|
18 #include "ctestmessagecomposer.h" |
|
19 #endif |
|
20 |
|
21 _LIT8(KUri, "http://www.connecting.nokia.com"); |
|
22 |
|
23 CTestMessageComposer* CTestMessageComposer::NewL(MTestObserver& aObserver) |
|
24 { |
|
25 CTestMessageComposer* self = new(ELeave) CTestMessageComposer(aObserver); |
|
26 CleanupStack::PushL(self); |
|
27 self->ConstructL(); |
|
28 CleanupStack::Pop(self); |
|
29 return self; |
|
30 } |
|
31 |
|
32 CTestMessageComposer::~CTestMessageComposer() |
|
33 { |
|
34 iHeaders.Close(); |
|
35 iTransaction.Close(); |
|
36 iSession.Close(); |
|
37 iMessageComposer.Close(); |
|
38 Cancel(); |
|
39 } |
|
40 |
|
41 CTestMessageComposer::CTestMessageComposer(MTestObserver& aObserver) |
|
42 : CActive(CActive::EPriorityStandard), iObserver(aObserver) |
|
43 { |
|
44 CActiveScheduler::Add(this); |
|
45 } |
|
46 |
|
47 void CTestMessageComposer::ConstructL() |
|
48 { |
|
49 iSession.OpenL(); |
|
50 iStringPool = iSession.StringPool(); |
|
51 iMessageComposer.OpenL(*this); |
|
52 TUriParser8 up; |
|
53 up.Parse(KUri); |
|
54 iTransaction = iSession.OpenTransactionL(up, *this, iSession.StringPool().StringF(HTTP::EGET,RHTTPSession::GetTable())); |
|
55 } |
|
56 |
|
57 void CTestMessageComposer::SetHeaderL(TInt aNumberofHeaders) |
|
58 { |
|
59 switch (aNumberofHeaders) |
|
60 { |
|
61 case 1: |
|
62 { |
|
63 // Open strings used in this test |
|
64 //1.Accept header---- Accept: text/html; q=0.8, text/vnd.wap.wml; q=0.2; extended=value, text/*); |
|
65 RStringF textHtml = iStringPool.StringF(HTTP::ETextHtml,RHTTPSession::GetTable()); |
|
66 RStringF textWml = iStringPool.StringF(HTTP::ETextVndWapWml,RHTTPSession::GetTable()); |
|
67 RStringF textAny = iStringPool.StringF(HTTP::ETextAny,RHTTPSession::GetTable()); |
|
68 RStringF extended = iStringPool.OpenFStringL(_L8("extended")); |
|
69 CleanupClosePushL(extended); |
|
70 RStringF extendVal = iStringPool.OpenFStringL(_L8("value")); |
|
71 CleanupClosePushL(extendVal); |
|
72 iHTTPHeaders = iTransaction.Request().GetHeaderCollection(); |
|
73 RStringF accept = iStringPool.StringF(HTTP::EAccept,RHTTPSession::GetTable()); |
|
74 THTTPHdrVal accVal(textHtml); |
|
75 THTTPHdrVal q1(THTTPHdrVal::TQConv(0.8)); |
|
76 iHTTPHeaders.SetFieldL(accept, accVal, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q1); |
|
77 accVal.SetStrF(textWml); |
|
78 q1.SetInt(THTTPHdrVal::TQConv(0.2)); |
|
79 iHTTPHeaders.SetFieldL(accept, accVal, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q1); |
|
80 q1.SetStrF(extendVal); |
|
81 iHTTPHeaders.SetFieldL(accept, accVal, extended, q1); |
|
82 accVal.SetStrF(textAny); |
|
83 iHTTPHeaders.SetFieldL(accept, accVal); |
|
84 CleanupStack::PopAndDestroy(2, &extended); |
|
85 |
|
86 //2.Accept-Charset header-- Accept-Charset: iso-8859-5, unicode-1-1; q=0.8 |
|
87 RStringF iso8859_5 = iStringPool.OpenFStringL(_L8("iso-8859-5")); |
|
88 CleanupClosePushL(iso8859_5); |
|
89 RStringF unicode1_1 = iStringPool.OpenFStringL(_L8("unicode-1-1")); |
|
90 CleanupClosePushL(unicode1_1); |
|
91 RStringF accChSet= iStringPool.StringF(HTTP::EAcceptCharset,RHTTPSession::GetTable()); |
|
92 THTTPHdrVal accChSetVal(iso8859_5); |
|
93 iHTTPHeaders.SetFieldL(accChSet, accChSetVal); |
|
94 // |
|
95 accChSetVal.SetStrF(unicode1_1); |
|
96 THTTPHdrVal q2(THTTPHdrVal::TQConv(0.8)); |
|
97 iHTTPHeaders.SetFieldL(accChSet, accChSetVal, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q2); |
|
98 CleanupStack::PopAndDestroy(2, &iso8859_5); |
|
99 |
|
100 //3.User-Agent headers-- User-Agent: CERN-LineMode/2.15 libwww/2.17b3 |
|
101 // Open strings used in this test |
|
102 RStringF ua1Str = iStringPool.OpenFStringL(_L8("CERN-LineMode/2.15")); |
|
103 CleanupClosePushL(ua1Str); |
|
104 RStringF ua2Str = iStringPool.OpenFStringL(_L8("libwww/2.17b3")); |
|
105 CleanupClosePushL(ua2Str); |
|
106 // |
|
107 RStringF uaStr = iStringPool.StringF(HTTP::EUserAgent,RHTTPSession::GetTable()); |
|
108 THTTPHdrVal uaVal(ua1Str); |
|
109 iHTTPHeaders.SetFieldL(uaStr, uaVal); // sets part 1 |
|
110 uaVal.SetStrF(ua2Str); |
|
111 iHTTPHeaders.SetFieldL(uaStr, uaVal); // sets part 2 |
|
112 CleanupStack::PopAndDestroy(2,&ua1Str); |
|
113 |
|
114 //4.Connection Header -- Connection: close, keep-alive |
|
115 RStringF otherToken = iStringPool.StringF(HTTP::EKeepAlive,RHTTPSession::GetTable()); |
|
116 RStringF connStr = iStringPool.StringF(HTTP::EConnection,RHTTPSession::GetTable()); |
|
117 THTTPHdrVal connVal(iStringPool.StringF(HTTP::EClose,RHTTPSession::GetTable())); |
|
118 iHTTPHeaders.SetFieldL(connStr, connVal); // sets part 1 |
|
119 THTTPHdrVal keepAlive(otherToken); |
|
120 iHTTPHeaders.SetFieldL(connStr, keepAlive); // sets part 2 |
|
121 |
|
122 //5.content type header-- Content-Type: text/vnd.wap.wml; charset=utf-8; transcode=yes |
|
123 RStringF textWml1 = iStringPool.StringF(HTTP::ETextVndWapWml,RHTTPSession::GetTable()); |
|
124 RStringF utf8 = iStringPool.OpenFStringL(_L8("utf-8")); |
|
125 CleanupClosePushL(utf8); |
|
126 RStringF extended1 = iStringPool.OpenFStringL(_L8("transcode")); |
|
127 CleanupClosePushL(extended1); |
|
128 RStringF extendVal1 = iStringPool.OpenFStringL(_L8("yes")); |
|
129 CleanupClosePushL(extendVal1); |
|
130 // |
|
131 RStringF contType = iStringPool.StringF(HTTP::EContentType,RHTTPSession::GetTable()); |
|
132 THTTPHdrVal ctVal(textWml1); |
|
133 THTTPHdrVal chSet(utf8); |
|
134 iHTTPHeaders.SetFieldL(contType, ctVal, iStringPool.StringF(HTTP::ECharset,RHTTPSession::GetTable()), chSet); |
|
135 chSet.SetStrF(extendVal1); |
|
136 iHTTPHeaders.SetFieldL(contType, ctVal, extended1, chSet); |
|
137 CleanupStack::PopAndDestroy(3,&utf8); |
|
138 |
|
139 //6.host type header-- Host: nokia.com |
|
140 RStringF host1Str = iStringPool.OpenFStringL(_L8("www.nokia.com")); |
|
141 CleanupClosePushL(host1Str); |
|
142 RStringF host = iStringPool.StringF(HTTP::EHost,RHTTPSession::GetTable()); |
|
143 THTTPHdrVal hostVal(host1Str); |
|
144 iHTTPHeaders.SetFieldL(host, hostVal); |
|
145 CleanupStack::PopAndDestroy(&host1Str); |
|
146 |
|
147 //7.upgrade type header-- Upgrade: HTTP/2.0, SHTTP/1.3 |
|
148 RStringF http = iStringPool.OpenFStringL(_L8("HTTP/2.0")); |
|
149 CleanupClosePushL(http); |
|
150 RStringF shttp = iStringPool.OpenFStringL(_L8("SHTTP/1.3")); |
|
151 CleanupClosePushL(shttp); |
|
152 RStringF upgradeStr = iStringPool.StringF(HTTP::EUpgrade, RHTTPSession::GetTable()); |
|
153 THTTPHdrVal val(http); |
|
154 THTTPHdrVal val2(shttp); |
|
155 |
|
156 iHTTPHeaders.SetFieldL(upgradeStr, val); |
|
157 iHTTPHeaders.SetFieldL(upgradeStr, val2); |
|
158 CleanupStack::PopAndDestroy(2); |
|
159 |
|
160 //8.Cache control -- Cache-Control: public, no-cache=\"wibble,wobble\" |
|
161 _LIT8(KPublic, "public"); |
|
162 _LIT8(KNoCache, "no-cache=\"wibble,wobble\""); |
|
163 RStringF publicStr = iStringPool.OpenFStringL(KPublic); |
|
164 CleanupClosePushL(publicStr); |
|
165 RStringF noCacheStr = iStringPool.OpenFStringL(KNoCache); |
|
166 CleanupClosePushL(noCacheStr); |
|
167 RStringF cc = iStringPool.StringF(HTTP::ECacheControl,RHTTPSession::GetTable()); |
|
168 iHTTPHeaders.SetFieldL(cc, THTTPHdrVal(publicStr)); |
|
169 iHTTPHeaders.SetFieldL(cc, THTTPHdrVal(noCacheStr)); |
|
170 CleanupStack::PopAndDestroy(2,&publicStr); |
|
171 |
|
172 //9.Authorization-- Authorization: Basic c3ltYmlhbjpmMXN5bmNtbA== |
|
173 RString basicCred = iStringPool.OpenStringL(_L8("c3ltYmlhbjpmMXN5bmNtbA==")); |
|
174 CleanupClosePushL(basicCred); |
|
175 RStringF authStr = iStringPool.StringF(HTTP::EAuthorization,RHTTPSession::GetTable()); |
|
176 THTTPHdrVal authVal(iStringPool.StringF(HTTP::EBasic,RHTTPSession::GetTable())); |
|
177 iHTTPHeaders.SetFieldL(authStr, authVal); // sets part 1 |
|
178 THTTPHdrVal credVal(basicCred); |
|
179 iHTTPHeaders.SetFieldL(authStr, credVal); // sets part 2 |
|
180 CleanupStack::PopAndDestroy(&basicCred); |
|
181 break; |
|
182 } |
|
183 |
|
184 case 2: |
|
185 { |
|
186 //1. Connection: Keep-Alive\r\n |
|
187 RStringF keep = iStringPool.StringF(HTTP::EKeepAlive,RHTTPSession::GetTable()); |
|
188 iHTTPHeaders = iTransaction.Request().GetHeaderCollection(); |
|
189 RStringF Connection= iStringPool.StringF(HTTP::EConnection,RHTTPSession::GetTable()); |
|
190 THTTPHdrVal keepalive(keep); |
|
191 iHTTPHeaders.SetFieldL(Connection,keepalive); |
|
192 |
|
193 //2.Host: 192.168.100.100\r\n |
|
194 _LIT8(KHostIp, "192.168.100.100"); |
|
195 RStringF host2Str = iStringPool.OpenFStringL(KHostIp); |
|
196 CleanupClosePushL(host2Str); |
|
197 RStringF host2= iStringPool.StringF(HTTP::EHost,RHTTPSession::GetTable()); |
|
198 THTTPHdrVal hostip(host2Str); |
|
199 iHTTPHeaders.SetFieldL(host2,hostip); |
|
200 CleanupStack::PopAndDestroy(&host2Str); |
|
201 //3.Accept: */*\r\n |
|
202 _LIT8(KAccept2, "*/*"); |
|
203 RStringF acceptall = iStringPool.OpenFStringL(KAccept2); |
|
204 CleanupClosePushL(acceptall); |
|
205 RStringF accept2= iStringPool.StringF(HTTP::EAccept,RHTTPSession::GetTable()); |
|
206 THTTPHdrVal acceptvalue(acceptall); |
|
207 iHTTPHeaders.SetFieldL(accept2,acceptvalue); |
|
208 CleanupStack::PopAndDestroy(&acceptall); |
|
209 |
|
210 //4.Accept-Charset: iso-8859-1,utf-8;q=0.7,*;q=0.7\r\n |
|
211 RStringF iso8859 = iStringPool.OpenFStringL(_L8("iso-8859-1")); |
|
212 CleanupClosePushL(iso8859); |
|
213 RStringF utf8_1 = iStringPool.OpenFStringL(_L8("utf-8")); |
|
214 CleanupClosePushL(utf8_1); |
|
215 RStringF all = iStringPool.OpenFStringL(_L8("*")); |
|
216 CleanupClosePushL(all); |
|
217 RStringF accChSet1= iStringPool.StringF(HTTP::EAcceptCharset,RHTTPSession::GetTable()); |
|
218 THTTPHdrVal accChSetVal1(iso8859); |
|
219 iHTTPHeaders.SetFieldL(accChSet1, accChSetVal1); |
|
220 accChSetVal1.SetStrF(utf8_1); |
|
221 THTTPHdrVal q3(THTTPHdrVal::TQConv(0.7)); |
|
222 iHTTPHeaders.SetFieldL(accChSet1, accChSetVal1, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q3); |
|
223 accChSetVal1.SetStrF(all); |
|
224 iHTTPHeaders.SetFieldL(accChSet1, accChSetVal1, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q3); |
|
225 CleanupStack::PopAndDestroy(3,&iso8859); |
|
226 |
|
227 //5.Accept-Encoding: gzip, deflate, x-gzip, identity; q=0.9\r\n |
|
228 RStringF gzip = iStringPool.OpenFStringL(_L8("gzip")); |
|
229 CleanupClosePushL(gzip); |
|
230 RStringF deflate = iStringPool.OpenFStringL(_L8("deflate")); |
|
231 CleanupClosePushL(deflate); |
|
232 RStringF xgzip = iStringPool.OpenFStringL(_L8("x-gzip")); |
|
233 CleanupClosePushL(xgzip); |
|
234 RStringF identity = iStringPool.OpenFStringL(_L8("identity")); |
|
235 CleanupClosePushL(identity); |
|
236 RStringF acceptencoding1= iStringPool.StringF(HTTP::EAcceptEncoding,RHTTPSession::GetTable()); |
|
237 THTTPHdrVal aevalue(gzip); |
|
238 iHTTPHeaders.SetFieldL(acceptencoding1, aevalue); |
|
239 aevalue.SetStrF(deflate); |
|
240 iHTTPHeaders.SetFieldL(acceptencoding1, aevalue); |
|
241 aevalue.SetStrF(xgzip); |
|
242 iHTTPHeaders.SetFieldL(acceptencoding1, aevalue); |
|
243 aevalue.SetStrF(identity); |
|
244 THTTPHdrVal q4(THTTPHdrVal::TQConv(0.9)); |
|
245 iHTTPHeaders.SetFieldL(acceptencoding1, aevalue, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q4); |
|
246 CleanupStack::PopAndDestroy(4,&gzip); |
|
247 |
|
248 //6.Accept-Language: en;q=1.0,bg;q=0.5,nl;q=0.5,fr;q=0.5\r\n |
|
249 RStringF en = iStringPool.OpenFStringL(_L8("en")); |
|
250 CleanupClosePushL(en); |
|
251 RStringF bg = iStringPool.OpenFStringL(_L8("bg")); |
|
252 CleanupClosePushL(bg); |
|
253 RStringF nl = iStringPool.OpenFStringL(_L8("nl")); |
|
254 CleanupClosePushL(nl); |
|
255 RStringF fr = iStringPool.OpenFStringL(_L8("fr")); |
|
256 CleanupClosePushL(fr); |
|
257 RStringF acceptlanguage1= iStringPool.StringF(HTTP::EAcceptLanguage,RHTTPSession::GetTable()); |
|
258 THTTPHdrVal alvalue(en); |
|
259 THTTPHdrVal q5(THTTPHdrVal::TQConv(1.0)); |
|
260 iHTTPHeaders.SetFieldL(acceptlanguage1, alvalue, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q5); |
|
261 THTTPHdrVal q6(THTTPHdrVal::TQConv(0.5)); |
|
262 alvalue.SetStrF(bg); |
|
263 iHTTPHeaders.SetFieldL(acceptlanguage1, alvalue, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q6); |
|
264 alvalue.SetStrF(nl); |
|
265 iHTTPHeaders.SetFieldL(acceptlanguage1, alvalue, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q6); |
|
266 alvalue.SetStrF(fr); |
|
267 iHTTPHeaders.SetFieldL(acceptlanguage1, alvalue, iStringPool.StringF(HTTP::EQ,RHTTPSession::GetTable()), q6); |
|
268 CleanupStack::PopAndDestroy(4,&en); |
|
269 |
|
270 //7.Referer: http://192.168.100.100/il/index.html\r\n |
|
271 RStringF referer = iStringPool.OpenFStringL(_L8("http://192.168.100.100/il/index.html")); |
|
272 CleanupClosePushL(referer); |
|
273 RStringF refer= iStringPool.StringF(HTTP::EReferer,RHTTPSession::GetTable()); |
|
274 THTTPHdrVal referval(referer); |
|
275 iHTTPHeaders.SetFieldL(refer,referval); |
|
276 CleanupStack::PopAndDestroy(&referer); |
|
277 |
|
278 //8.User-Agent: Mozilla/5.0 AppleWebKit/525 |
|
279 RStringF ua1Str1 = iStringPool.OpenFStringL(_L8("Mozilla/5.0")); |
|
280 CleanupClosePushL(ua1Str1); |
|
281 RStringF ua2Str2 = iStringPool.OpenFStringL(_L8("AppleWebKit/525")); |
|
282 CleanupClosePushL(ua2Str2); |
|
283 RStringF uaString = iStringPool.StringF(HTTP::EUserAgent,RHTTPSession::GetTable()); |
|
284 THTTPHdrVal uaVal1(ua1Str1); |
|
285 iHTTPHeaders.SetFieldL(uaString, uaVal1); // sets part 1 |
|
286 uaVal1.SetStrF(ua2Str2); |
|
287 iHTTPHeaders.SetFieldL(uaString, uaVal1); // sets part 2 |
|
288 CleanupStack::PopAndDestroy(2,&ua1Str1); |
|
289 break; |
|
290 } |
|
291 |
|
292 default: |
|
293 break; |
|
294 } |
|
295 } |
|
296 |
|
297 void CTestMessageComposer::StartRequest() |
|
298 { |
|
299 // Self-complete to kick-off the test. |
|
300 CompleteSelf(); |
|
301 } |
|
302 |
|
303 void CTestMessageComposer::CompleteSelf() |
|
304 { |
|
305 TRequestStatus* pStat = &iStatus; |
|
306 User::RequestComplete(pStat, KErrNone); |
|
307 SetActive(); |
|
308 } |
|
309 |
|
310 void CTestMessageComposer::DoReset() |
|
311 { |
|
312 } |
|
313 |
|
314 /* |
|
315 * Methods from CActive |
|
316 */ |
|
317 |
|
318 void CTestMessageComposer::RunL() |
|
319 { |
|
320 iHeaderIndex = 0; |
|
321 iFlag = ETrue; |
|
322 // Start the composer... |
|
323 iMessageComposer.MessageInfoAvailable(); |
|
324 } |
|
325 |
|
326 void CTestMessageComposer::DoCancel() |
|
327 { |
|
328 // Do nothing... |
|
329 } |
|
330 |
|
331 TInt CTestMessageComposer::RunError(TInt /*aError*/) |
|
332 { |
|
333 return KErrNone; |
|
334 } |
|
335 |
|
336 /* |
|
337 * Methods from MHttpMessageComposerObserver |
|
338 */ |
|
339 |
|
340 void CTestMessageComposer::StartLineL(TPtrC8& aMethod, TPtrC8& aRequestUri, TPtrC8& aVersion) |
|
341 { |
|
342 // The RFC2616 defines the Request-Line as follows - |
|
343 // |
|
344 // Request-Line = Method SP Request-URI SP HTTPVersion CRLF |
|
345 // |
|
346 // Get Method... |
|
347 iRequest = iTransaction.Request(); |
|
348 RStringF method = iStringPool.StringF(iRequest.Method()); |
|
349 aMethod.Set(method.DesC()); |
|
350 |
|
351 // Get the Request-URI... |
|
352 aRequestUri.Set(KUri); |
|
353 |
|
354 // Assume HTTP/1.1 |
|
355 aVersion.Set(iStringPool.StringF(HTTP::EHttp11, RHTTPSession::GetTable()).DesC()); |
|
356 } |
|
357 |
|
358 TInt CTestMessageComposer::NextHeaderL(TPtrC8& aHeaderName, TPtrC8& aHeaderValue) |
|
359 { |
|
360 if(iFlag) |
|
361 { |
|
362 THTTPHdrFieldIter it = iHTTPHeaders.Fields(); |
|
363 iFlag = EFalse; |
|
364 while(!it.AtEnd()) |
|
365 { |
|
366 // Get field current field. |
|
367 RStringF name = iStringPool.StringF(it()); |
|
368 CleanupClosePushL(name); |
|
369 // Get the OTA version of the field value |
|
370 TPtrC8 value; |
|
371 iRequest.GetHeaderCollection().GetRawField(name, value); |
|
372 User::LeaveIfError(iHeaders.Append(THeaderField(name.DesC(), value))); |
|
373 // Move onto next header field... |
|
374 ++it; |
|
375 CleanupStack::PopAndDestroy(&name); |
|
376 } |
|
377 } |
|
378 TInt error = ( iHeaderIndex < iHeaders.Count() ) ? KErrNone : KErrNotFound; |
|
379 if( iHeaderIndex < iHeaders.Count() ) |
|
380 { |
|
381 // Give the current header info... |
|
382 THeaderField header = iHeaders[iHeaderIndex]; |
|
383 |
|
384 aHeaderName.Set(header.iName); |
|
385 aHeaderValue.Set(header.iValue); |
|
386 |
|
387 // Loop to next header... |
|
388 ++iHeaderIndex; |
|
389 } |
|
390 else |
|
391 { |
|
392 // No more headers - change state |
|
393 iState = EPendingHasBody; |
|
394 } |
|
395 return error; |
|
396 } |
|
397 |
|
398 |
|
399 |
|
400 TInt CTestMessageComposer::NextTrailerL(TPtrC8& /*aHeaderName*/, TPtrC8& /*aHeaderValue*/) |
|
401 { |
|
402 return KErrNotFound; |
|
403 } |
|
404 |
|
405 void CTestMessageComposer::MessageComplete() |
|
406 { |
|
407 iState = EDone; |
|
408 iObserver.NotifyComplete(); |
|
409 } |
|
410 |
|
411 void CTestMessageComposer::MessageDataReadyL() |
|
412 { |
|
413 // // Get data from the composer |
|
414 TPtrC8 data; |
|
415 iMessageComposer.GetMessageData(data); |
|
416 iMessageComposer.ReleaseMessageData(); |
|
417 } |
|
418 |
|
419 TInt CTestMessageComposer::HandleComposeError(TInt /*aError*/) |
|
420 { |
|
421 return KErrNone; |
|
422 } |
|
423 |
|
424 MHTTPDataSupplier* CTestMessageComposer::HasBodyL() |
|
425 { |
|
426 iState = EPendingMessageComplete; |
|
427 return NULL; |
|
428 } |
|
429 |
|
430 void CTestMessageComposer::Reserved_MHttpMessageComposerObserver() |
|
431 { |
|
432 User::Invariant(); |
|
433 } |
|
434 |
|
435 TInt CTestMessageComposer::MHFRunError(TInt /*aError*/, RHTTPTransaction /*aTransaction*/, const THTTPEvent& /*aEvent*/) |
|
436 { |
|
437 return KErrNone; |
|
438 } |
|
439 |
|
440 void CTestMessageComposer::MHFRunL(RHTTPTransaction /*aTransaction*/, const THTTPEvent& /*aEvent*/) |
|
441 { |
|
442 } |
|
443 |