diff -r e8c1ea2c6496 -r 8758140453c0 localisation/apparchitecture/tef/TEndTaskTestApp/EndTaskTestApp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/localisation/apparchitecture/tef/TEndTaskTestApp/EndTaskTestApp.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,214 @@ +// Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +#include +#include +#include +#include +#include "EndTaskTestApp.h" +#include "EndTaskTestAppExternalInterface.h" + +/** +Standard DLL entry point function. +Creates and returns an instance of the CApaApplication-derived class. + +@return an instance of the CApaApplication-derived class +*/ +TInt E32Main() + { + return EikStart::RunApplication( CEndTaskTestApplication::NewApplication ); + } + +/** +Default constructor +*/ +CEndTaskTestApplication::CEndTaskTestApplication() + { + } + +/** +Virtual destructor +*/ +CEndTaskTestApplication::~CEndTaskTestApplication() + { + } + +/** +@return The application's UID +*/ +TUid CEndTaskTestApplication::AppDllUid() const + { + const TUid dll = {KUidEndTaskAppUid}; + return dll; + } + +/** +@return CEndTaskTestApplication or NULL if KErrNoMemory +*/ +CApaApplication* CEndTaskTestApplication::NewApplication() + { + // As the framework has at this point not started up enough, and therefore the TRAP-harness and + // exception handlers aren’t available yet, this factory function is a non-leaving function and + // can't use the new(Eleave) operator. + return new CEndTaskTestApplication(); + } + +/** +Called by the UI framework at application start-up to create an instance of the document class. + +@leave KErrNoMemory +@return A CExampleDocument +*/ +CApaDocument* CEndTaskTestApplication::CreateDocumentL() + { + return CEndTaskTestDocument::NewL(*this); + } + +/** +Constructor +*/ +CEndTaskTestDocument::CEndTaskTestDocument(CEikApplication& aApp) : CEikDocument(aApp) + { + } + +/** +Virtual destructor +*/ +CEndTaskTestDocument::~CEndTaskTestDocument() + { + } + +/** +Factory function for this class +@return a new CEndTaskTestDocument instance. +*/ +CEndTaskTestDocument* CEndTaskTestDocument::NewL(CEikApplication& aApp) + { + return new(ELeave) CEndTaskTestDocument(aApp); + } + + +/** +Called by the UI framework to construct the application UI class. +Note that the app UI's ConstructL() is called by the UI framework. +*/ +CEikAppUi* CEndTaskTestDocument::CreateAppUiL() + { + return new(ELeave) CEndTaskTestAppUi(); + } + +/** +Constructor +*/ +CEndTaskTestAppUi::CEndTaskTestAppUi() + { + } + +/** +Virtual destructor +*/ +CEndTaskTestAppUi::~CEndTaskTestAppUi() + { + } + +/** +Second phase constructor of the application UI class. +It creates and owns a single view. The view contents are not created +until the first time view is activated. +*/ +void CEndTaskTestAppUi::ConstructL() + { + // Complete the UI framework's construction of the App UI. + BaseConstructL(CEikAppUi::ENoAppResourceFile); + + // Set higher prio to preempt test-server as soon as we have an event + User::SetPriorityControl(EFalse); + RProcess p; + p.SetPriority(EPriorityHigh); + } + +/** +Events published in externalinterface.h and utilized by T_EndTaskStep.cpp +*/ +void CEndTaskTestAppUi::HandleApplicationSpecificEventL(TInt aType,const TWsEvent& /*aEvent*/) + { + switch (aType) + { + case EEndTaskTestAppSetSystem: + static_cast(iCoeEnv)->SetSystem(ETrue); + break; + case EEndTaskTestAppSetNormal: + static_cast(iCoeEnv)->SetSystem(EFalse); + break; + case ECallEndTaskWithoutPwrMgmt: + { + TApaTaskList taskList(iEikonEnv->WsSession()); + TApaTask task = taskList.FindApp(Application()->AppDllUid()); + task.EndTask(); + break; + } + case ESimulateHackerAttack1: + { + TWsEvent event; + TApaTaskList taskList(iEikonEnv->WsSession()); + TApaTask task = taskList.FindApp(Application()->AppDllUid()); + // First variant should be sorted by CCoeAppUi::HandleWsEventL + event.SetType(EEventUser); + *(TApaSystemEvent*)(event.EventData())=EApaSystemEventSecureShutdown; + iEikonEnv->WsSession().SendEventToWindowGroup(task.WgId(), event); + break; + } + case ESimulateHackerAttack2: + { + TWsEvent event; + TApaTaskList taskList(iEikonEnv->WsSession()); + TApaTask task = taskList.FindApp(Application()->AppDllUid()); + // Second variant should be handled by wserv's Client::CommandL case EWsClOpSendEventToWindowGroup + event.SetType(EEventPowerMgmt); + *(TApaSystemEvent*)(event.EventData())=EApaSystemEventSecureShutdown; + RWsSession wsSession; + wsSession.Connect(); + wsSession.SendEventToWindowGroup(task.WgId(), event); + wsSession.Close(); + break; + } + case ESimulateHackerAttack3: + { + TWsEvent event; + // Third variant should be handled by wserv's Client::CommandL case EWsClOpSendEventToAllWindowGroup + event.SetType(EEventPowerMgmt); + *(TApaSystemEvent*)(event.EventData())=EApaSystemEventSecureShutdown; + RWsSession wsSession; + wsSession.Connect(); + wsSession.SendEventToAllWindowGroups(event); + wsSession.Close(); + break; + } + default: + break; + } + } + +void CEndTaskTestAppUi::HandleCommandL(TInt aCommand) + { + switch(aCommand) + { + case EEikCmdExit: + Exit(); + break; + default: + break; + } + }