diff -r 9f5ae1728557 -r db3f5fa34ec7 messagingfw/wappushfw/tpush/t_release2.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingfw/wappushfw/tpush/t_release2.cpp Wed Nov 03 22:41:46 2010 +0530 @@ -0,0 +1,484 @@ +// Copyright (c) 2000-2009 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: +// T_SLMESSAGE.CPP +// +// + +#include "pushtests.h" + +#include "dummywapstack.h" +#include "pushcpoint.h" + +_LIT(KTextDoingStuff,"Doing some stuff"); +_LIT(KTextFinished,"All finished"); + +void CWapPushR2Test::RunL() + { + switch (iState) + { + case EInitialisation: + { + // Create WAP Stack passing MDummyWapStackObserver derived instance + // Create Connection Manager, once WAP stack setup + iWapStack = CDummyWapStack::NewL(*this); + iConnMan = CConnectionManager::NewL(*this); + MoveToNextState(); + return; + } + case ESendSIA: + { + // call the connection manager export which creates a + // connection-orientated connection. + _LIT8(KPushR2RemoteHost,"129.0.0.1"); + TPushConnPoint cp; + cp.iHost=KPushR2RemoteHost; + cp.iPort = KPushPortSecure; //use secure port directly + iConnMan->CMOpenConnectionL(cp); + iResponseState=ESessionConfirm; + MoveToNextState(); + iAck = EFalse; + return; + } + case EWaitForAcknowledge: + { + if (iAck) + MoveToNextState(); + return; + } + case EFinished: + { + Printf(KTextFinished); + SetPriority(EPriorityIdle); + MoveToNextState(); + return; + } + default: + // Finished + iEngine->TestCompleted(iStatus.Int()); + return; + } + }; + + +CWapPushR2Test::~CWapPushR2Test() + { + delete iConnMan; + delete iWapStack; + } + +void CWapPushR2Test::DoCancel() + { + delete iConnMan; + delete iWapStack; + iEngine->TestCompleted(KErrCancel); + } + +void CWapPushR2Test::MoveToNextState() + { + iState = (TState)(iState+1); + CompleteOwnRequest(); + } + +void CWapPushR2Test::CompleteOwnRequest() + { + TRequestStatus* stat = &iStatus; + User::RequestComplete(stat,KErrNone); + SetActive(); + } + +const TDesC& CWapPushR2Test::TestName() + { + _LIT(KTextSLMessageTest,"Release Two"); + return KTextSLMessageTest; + } + + +/** + called by DummyWapStack and returns the push message + @param CDummyWSPCLConn + @return CDummyWSPCLConn with WAP Push message +*/ +void CWapPushR2Test::DWSOUnitWaitPushL(CDummyWSPCLConn& /*aDummyCLConn*/) + { + } + +/** + display error message + @param string + @param line number +*/ +void CWapPushR2Test::DWSOError(const TDesC& aDes, TInt /*aLineNum*/) + { + iEngine->Printf(TestName(),aDes); + } + +/** + Wap Stack Server closing... +*/ +void CWapPushR2Test::DWSOServerShutDown() + { + // TO DO: + iEngine->Printf(TestName(), _L(" ServerShutDown called")); + } + +/** + Cancel pushwait operation +*/ +void CWapPushR2Test::DWSOCancelUnitWaitPush(CDummyWSPCLConn& /*aDummyCLConn */) + { + } + +void CWapPushR2Test::DWSOConnect(CDummyWSPCOConn& /*aDummyCOConn*/) + { + } + +void CWapPushR2Test::DWSOGetEventL(CDummyWSPCOConn& aDummyCOConn) + { + // only go through once + if (!iAck) + { + RWSPCOConn::TEvent event; + CDummyWSPCOTrans* dummyTransaction=NULL; + switch (iResponseState) + { + case CWapPushR2Test::ESessionConfirm: + dummyTransaction = new (ELeave) CDummyWSPCOTrans(aDummyCOConn); + event=RWSPCOConn::EConnect_cnf_s; + iResponseState=CWapPushR2Test::ETransaction; + aDummyCOConn.CompleteGetEventL(event,*dummyTransaction); + break; + case CWapPushR2Test::ETransaction: + dummyTransaction = new (ELeave) CDummyWSPCOTrans(aDummyCOConn); + CreateMultiMixedPushMsg(); //Create Hard coded test Push Msg Body and Header + dummyTransaction->SetData(iHeadersBuf, RWSPCOTrans::EPushHeaders); + dummyTransaction->SetData(iBodyBuf, RWSPCOTrans::EPushBody); + + event=RWSPCOConn::EConfirmedPush_ind_t; + aDummyCOConn.CompleteGetEventL(event,*dummyTransaction); + break; + default: + dummyTransaction = new (ELeave) CDummyWSPCOTrans(aDummyCOConn); + event=RWSPCOConn::EConfirmedPush_ind_t; + aDummyCOConn.CompleteGetEventL(event,*dummyTransaction); + break; + } + } + } + +void CWapPushR2Test::DWSOCancelGetEvent(CDummyWSPCOConn& aDummyCOConn) + { + // only go through once + if (!iAck) + aDummyCOConn.CancelGetEvent(); + } + +void CWapPushR2Test::DWSOAckTransaction(CDummyWSPCOTrans& /*aDummyCOTrans*/) + { + // only go through once + if (!iAck) + { + iAck = ETrue; + CompleteOwnRequest(); + } + } + +/** + * Hardcoded Creation of a Test Push Message + * -Todo Need to be Modified to use different + * Push messages. + */ +void CWapPushR2Test::CreatePushMsg() + { + + // create hardcoded SL test message (Julia's code) + const TUint8 KMessageHeader2[] = + { + 0xAF, //Content type "application/vnd.wap.sl" + 0x92, // Date + 0x04, // length of field + 0x39, // Monday 15 August 2000 10:41:37 GMT + 0x90, + 0x6a, + 0xd0, + 0x94, // Expires + 0x04, // length of field + 0x39, // Monday 15 August 2000 10:41:37 GMT + 0x9a, + 0x6a, + 0xd0, + 0xAF, //X-Wap-Application-ID + 0x82 // Short int - 0x02 represent x-wap-application:push.ua + }; + + + TBuf8<40> tempBuf; + TUint8 value; + + for (TInt i = 0; i < 15; i++) + { + value = KMessageHeader2[i]; + tempBuf.Append(value); + } + + iHeadersBuf.Copy(tempBuf); + tempBuf.Copy(_L8("")); + + + _LIT(LF, "\n"); + //Hard coded SL Text Msg + _LIT(KSL1stLine,""); + _LIT(KSL2ndLine,""); + _LIT(KSL4thLine,""); + _LIT(KSL7thLine,""); + + iBodyBuf.Append(KSL1stLine); + iBodyBuf.Append(LF); + iBodyBuf.Append(KSL2ndLine); + iBodyBuf.Append(LF); + iBodyBuf.Append(KSL3rdLine); + iBodyBuf.Append(LF); + iBodyBuf.Append(KSL4thLine); + iBodyBuf.Append(LF); + iBodyBuf.Append(KSL5thLine); + iBodyBuf.Append(LF); + iBodyBuf.Append(KSL6thLine); + iBodyBuf.Append(LF); + iBodyBuf.Append(KSL7thLine); + } + +/* Create a hard code Mulipart Push message. + * The Multipart Push Message Contains: + * - 1. Sl + * - 2. Slc + * - 3. Si + * - 4. Sic + * - 5. vCard + */ +void CWapPushR2Test::CreateMultiMixedPushMsg() + { + // The Multipart Header + const TUint8 KMessageHeaderMultipart[]= + { + 0xA3, //Content type "application/vnd.wap.multipart.mixed" + 0x94, // Date + 0x04, // length of field + 0x35, // Thur 23 Apr 1998 13:41:37 GMT + 0x3F, + 0x45, + 0x11, + 0xAF, //X-Wap-Application-ID + 0x82, // Short int - 0x02 represent x-wap-application:push.ua + }; + + iHeadersBuf.Copy(KMessageHeaderMultipart, sizeof(KMessageHeaderMultipart)); + + // Number of parts + const TUint8 KNumParts[] = {0x05}; + iBodyBuf.Copy(KNumParts, sizeof(KNumParts)); + + + //----- Push Message Part No.1 --------- + // SL Header with multipart code + const TUint8 KSLMultiHeader1[]= + { + 0x0A, // part 1 header size + 0x81, // part 1 body size (208) UintVar 10000001 + 0x50, // 01010000 + 0xAF, // content type application/vnd.wap.sl ... the headers: + 0x94, // Date + 0x04, // length of field + 0x35, // Thur 23 Apr 1998 13:41:37 GMT + 0x3F, + 0x45, + 0x11, + 0x3F, + 0x45, + 0x11 + }; + + // SL Body + const TUint8 KSLMultiBody1[] = "\n" \ + "\n" \ + "\n" \ + ""; + + + iBodyBuf.Append(KSLMultiHeader1, sizeof(KSLMultiHeader1)); + iBodyBuf.Append(KSLMultiBody1, sizeof(KSLMultiBody1)-1); + + + //----- Push Message Part No.2 --------- + // Slc Message with Multipart Code + const TUint8 KSLCMultipart2[]= + { + 0x0A, // part 2 header size + 0x1D, // part 2 body size + 0xB0, // content type application/vnd.wap.slc ... the headers: + 0x94, // Date + 0x04, // length of field + 0x35, // Thur 23 Apr 1998 13:41:37 GMT + 0x3F, + 0x45, + 0x11, + 0x3F, + 0x45, + 0x11, + 0x01, // Body - slc (www.schmookie.com) + 0x06, + 0x6A, + 0x00, + 0x85, + 0x09, + 0x03, + 0x6D, + 0x6D, + 0x6D, + 0x2E, + 0x73, + 0x63, + 0x68, + 0x6D, + 0x6F, + 0x6F, + 0x6B, + 0x69, + 0x65, + 0x2E, + 0x63, + 0x6F, + 0x64, + 0x65, + 0x2F, + 0x00, + 0x05, // [0x05, //xecute-low] [0x06, //execute-high] [//0x07, //cache] + 0x01 + }; + + iBodyBuf.Append(KSLCMultipart2, sizeof(KSLCMultipart2)); + + +//----- Push Message Part No.3 --------- + // Si Message with Multipart Code + const TUint8 KSIMultiHeader3[]= + { + 0x0A, // part 3 header size + 0x82 , // part 3 body size (334) UintVar 10000010 + 0x4E, // 01001110 + 0xAD, // content type application/vnd.wap.si ... the headers: + 0x94, // Date + 0x04, // length of field + 0x35, // Thur 23 Apr 1998 13:41:37 GMT + 0x3F, + 0x45, + 0x11, + 0x3F, + 0x45, + 0x11 + }; + + // Si Body + const TUint8 KSIMultiBody3[] = "\n" \ + "\n" \ + " \n" \ + " \n" \ + " This is displayed text.\n" \ + " \n" \ + " \n"; + + iBodyBuf.Append(KSIMultiHeader3, sizeof(KSIMultiHeader3)); + iBodyBuf.Append(KSIMultiBody3, sizeof(KSIMultiBody3)-1); + + +//----- Push Message Part No.4 --------- + // Sic Message with Multipart Code + const TUint8 KSiCMultipart4[]= + { + 0x0A, // part 2 header size + 0x64, // part 2 body size + 0xAE, // content type application/vnd.wap.sic ... the headers: + 0x94, // Date + 0x04, // length of field + 0x35, // Thur 23 Apr 1998 13:41:37 GMT + 0x3F, + 0x45, + 0x11, + 0x3F, + 0x45, + 0x11, + 0x01, 0x05, 0x6A, 0x12, 0x65, 0x6D, 0x61, 0x69, 0x6C, 0x2F, 0x31, 0x32, 0x33, 0x2F, 0x61, 0x62, + 0x63, 0x2E, 0x77, 0x6D, 0x6C, 0x00, 0x45, 0xC6, 0x05, 0x0D, 0x03, 0x78, 0x79, 0x7A, 0x00, 0x85, + 0x83, 0x00, 0x11, 0x03, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x78, + 0x79, 0x7A, 0x00, 0x85, 0x83, 0x00, 0x0A, 0xC3, 0x07, 0x19, 0x99, 0x06, 0x25, 0x15, 0x23, 0x15, + 0x10, 0xC3, 0x04, 0x19, 0x99, 0x06, 0x30, 0x01, 0x03, 0x20, 0x59, 0x6F, 0x75, 0x20, 0x68, 0x61, + 0x76, 0x65, 0x20, 0x34, 0x20, 0x6E, 0x65, 0x77, 0x20, 0x65, 0x6D, 0x61, 0x69, 0x6C, 0x73, 0x2E, + 0x20, 0x00, 0x01, 0x01}; + + iBodyBuf.Append(KSiCMultipart4, sizeof(KSiCMultipart4)); + + //----- Push Message Part No.5 --------- + // vCard Message + + // vCard Message with Multipart Code + const TUint8 KvCardMultiHeader5[]= + { + 0x0A, // part 3 header size + 0x83, // part 3 body size (496) UintVar 10000011 + 0x70, // 01110000 + 0x87, // content type "text/x-vCard" + 0x94, // Date + 0x04, // length of field + 0x35, // Thur 23 Apr 1998 13:41:37 GMT + 0x3F, + 0x45, + 0x11, + 0x3F, + 0x45, + 0x11 + }; + + // vCard Body + const TUint8 KvCardMultiBody5[] = "BEGIN:VCARD\r\n" \ + "VERSION:2.1\r\n" \ + "N:Wibble;Barney\r\n" \ + "FN:Barney Wibble\r\n" \ + "ORG:WibCo\r\n" \ + "TITLE:Wib Monitor\r\n" \ + "TEL;WORK;VOICE:+44 012345345\r\n" \ + "TEL;HOME;VOICE:+44 12143234\r\n" \ + "ADR;WORK;ENCODING=QUOTED-PRINTABLE:;;23 The Wibble=0D=0AWibble Street;WibbleHampton;Wibbleshire;;United Kingdom\r\n" \ + "LABEL;WORK;ENCODING=QUOTED-PRINTABLE:23 The Wibble=0D=0AWibble Street=0D=0AWibbleHampton, Wibbleshire=0D=0AUnited=Kingdom\r\n" \ + "URL:http://www.wibbleweb.wib\r\n" \ + "EMAIL;PREF;INTERNET:barney.wibble@wibco.co.uk\r\n" \ + "REV:20000322T104543Z\r\n" \ + "END:VCARD\r\n"; + + + iBodyBuf.Append(KvCardMultiHeader5, sizeof(KvCardMultiHeader5)); + iBodyBuf.Append(KvCardMultiBody5, sizeof(KvCardMultiBody5)-1); + + //-- end of Mulitipart message --- + }