diff -r b183ec05bd8c -r 19bba8228ff0 policymanagement/policyengine/policyengineserver/src/PolicyProcessor.cpp --- a/policymanagement/policyengine/policyengineserver/src/PolicyProcessor.cpp Tue Aug 31 16:04:06 2010 +0300 +++ b/policymanagement/policyengine/policyengineserver/src/PolicyProcessor.cpp Wed Sep 01 12:27:42 2010 +0100 @@ -30,19 +30,12 @@ #include "PolicyEngineServer.h" #include "PolicyEngineClientServer.h" #include "debug.h" -#include -#include -#include + +#include "PolicyEngineUi.h" + // CONSTANTS const TUid KUidPolicyEngineUi = { 0x10207817 }; -const TUint KDelimeterChar = '|'; -_LIT8( KUserAcceptMark, "A"); -enum TUserResponse - { - EUserAccept, - EUserDeny, - }; // ----------------------------------------------------------------------------- // RAttributeContainer::AppendL() @@ -62,7 +55,7 @@ container->iAttributeType = aAttributeTypes; //append to list - RArray::AppendL( container); + RArray::AppendL( container); //remove from cleanup CleanupStack::Pop( 2, aAttribute); @@ -82,7 +75,7 @@ delete container; } - RArray::Close(); + RArray::Close(); } @@ -753,24 +746,51 @@ //resolve name and fingerprint const TDesC8& name = iTrustedSession->CommonNameForSubjectL( trustedSubject, iUseEditedElements); const TDesC8& fingerPrint = iTrustedSession->FingerPrintForSubjectL( trustedSubject, iUseEditedElements); - TPtrC8 ptr = fingerPrint.Left(4); // send only first 4 digits. - - RDEBUG_2("CPolicyProcessor::fingerPrint: %S", &fingerPrint); - RDEBUG_2("CPolicyProcessor::fingerPrint: %S", &ptr); - - RDEBUG8_2("CPolicyProcessor::fingerPrint: %S", &fingerPrint); - RDEBUG8_2("CPolicyProcessor::fingerPrint: %S", &ptr); - + TUserResponse response = EUserDeny; - CProcessorClient *client = new CProcessorClient(); - TInt res = client->LaunchDialog(ptr, name); - - if(res == 0) - response = EUserAccept; - else - response = EUserDeny; + if ( name.Length() && fingerPrint.Length()) + { + //create notifier + RNotifier notifier; + CleanupClosePushL( notifier); + User::LeaveIfError( notifier.Connect() ); + + //create parameter descriptor + TBuf8<100> responseBuf; + HBufC8 * data = HBufC8::NewLC( name.Length() + fingerPrint.Length() + 1); + TPtr8 ptr = data->Des(); + ptr.Append(name); + ptr.Append(KDelimeterChar); + ptr.Append(fingerPrint.Left(4)); + //create CAsyncHandler to Auto start/stop CActiveScheduler + CASyncHandler * async = CASyncHandler::NewLC(); + notifier.StartNotifierAndGetResponse( async->GetRequestStatus(), KUidPolicyEngineUi, ptr, responseBuf); + + //Start CActiveScheduler and execute stop when request is completed + async->WaitForRequest(); + CPolicyEngineServer::SetActiveSubSession( this); + + + if ( async->GetRequestStatus() > 0) //request pending... + { + notifier.CancelNotifier( KUidPolicyEngineUi); + } + else + { + //Check response + if ( responseBuf == KUserAcceptMark) + { + RDEBUG("PolicyEngineServer: CPolicyProcessor user accept corporate policy!"); + response = EUserAccept; + } + } + + CleanupStack::PopAndDestroy( 3, ¬ifier); //notifier, data, CASyncHandler + + + } MakeBooleanResponseL( response == EUserAccept, aResponseElement); } @@ -959,185 +979,6 @@ } -// ----------------------------------------------------------------------------- -// CProcessorClient::CProcessorClient() -// ----------------------------------------------------------------------------- -// - -CProcessorClient::CProcessorClient() - : CActive(EPriorityNormal) - { - CActiveScheduler::Add( this ); - iWait = new( ELeave ) CActiveSchedulerWait; - iCompletionCode = KErrNone; - } - - -// ----------------------------------------------------------------------------- -// CProcessorClient::~CProcessorClient() -// ----------------------------------------------------------------------------- -CProcessorClient::~CProcessorClient() - { - delete iWait; - } - - -// ----------------------------------------------------------------------------- -// CProcessorClient::DataReceived() -// ----------------------------------------------------------------------------- -void CProcessorClient::DataReceived(CHbSymbianVariantMap& aData) -{ - _LIT(KResponse, "keyResponse"); - const CHbSymbianVariant* key = aData.Get(KResponse); - - if(key) - { - TInt *res = key->Value(); - iCompletionCode = *res; - iUserResponse = *res; - } -} - - -// ----------------------------------------------------------------------------- -// CProcessorClient::DeviceDialogClosed() -// ----------------------------------------------------------------------------- -void CProcessorClient::DeviceDialogClosed(TInt aCompletionCode) - { - iCompletionCode = aCompletionCode; - //iDevDialog->Cancel(); - TRequestStatus* status(&iStatus); - User::RequestComplete(status, KErrNone); - } - - -// ----------------------------------------------------------------------------- -// CProcessorClient::DoCancel() -// ----------------------------------------------------------------------------- -void CProcessorClient::DoCancel() -{ - if (iWait && iWait->IsStarted() && iWait->CanStopNow()) - { - iCompletionCode = KErrCancel; - iWait->AsyncStop(); - } -} - - -// ----------------------------------------------------------------------------- -// CProcessorClient::RunL() -// ----------------------------------------------------------------------------- -void CProcessorClient::RunL() -{ - if (iWait) - { - iWait->AsyncStop(); - } -} - - -// ----------------------------------------------------------------------------- -// CProcessorClient::LaunchDialog() -// ----------------------------------------------------------------------------- -TInt CProcessorClient::LaunchDialog(const TDesC8& aFringerPrint, - const TDesC8& aServerName) - { - _LIT(KHbNotifier,"com.nokia.hb.policymanagementdialog/1.0"); - _LIT(KFingerPrint, "fingerprint"); - _LIT(KServerdisplayname, "serverdisplayname"); - - RDEBUG_2("CPolicyProcessor::fingerPrint: %S", &aFringerPrint); - RDEBUG_2("CPolicyProcessor::fingerPrint: %S", &aServerName); - - CHbSymbianVariantMap* varMap = CHbSymbianVariantMap::NewL(); - CleanupStack::PushL(varMap); - - TBuf<10> fingerBuf; - fingerBuf.Copy(aFringerPrint); - - TInt serverNameLen = aServerName.Length(); - TBuf<50> serverName; - serverName.Copy(aServerName); - - RDEBUG_2("CPolicyProcessor::16 fingerPrint: %S", &fingerBuf); - RDEBUG_2("CPolicyProcessor::16 serverName : %S", &serverName); - - CHbSymbianVariant* fingerprintid = CHbSymbianVariant::NewL(&fingerBuf, - CHbSymbianVariant::EDes); - - CHbSymbianVariant* serverdisplayname = CHbSymbianVariant::NewL( - &serverName, CHbSymbianVariant::EDes); - - RDEBUG_2("CPolicyProcessor::fingerPrint: %S", &fingerprintid); - RDEBUG_2("CPolicyProcessor::fingerPrint: %S", &serverdisplayname); - - varMap->Add(KFingerPrint, fingerprintid); - varMap->Add(KServerdisplayname, serverdisplayname); - - iDevDialog = CHbDeviceDialogSymbian::NewL(); - TInt err1 = iDevDialog->Show(KHbNotifier, *varMap, this); - TInt err = WaitUntilDeviceDialogClosed(); - - CleanupStack::PopAndDestroy(); - - if (iDevDialog) - { - iDevDialog->Cancel(); - delete iDevDialog; - iDevDialog = NULL; - } - - if (err == 0) - { - LaunchTrustNotificationDialog(aServerName); - } - - return iUserResponse; - } - - -// ----------------------------------------------------------------------------- -// CProcessorClient::WaitUntilDeviceDialogClosed() -// ----------------------------------------------------------------------------- -TInt CProcessorClient::WaitUntilDeviceDialogClosed() - { - iCompletionCode = KErrInUse; - if (!IsActive() && iWait && !iWait->IsStarted()) - { - iStatus = KRequestPending; - SetActive(); - iWait->Start(); - } - return iCompletionCode; - } - -void CProcessorClient::LaunchTrustNotificationDialog(const TDesC8& aServerName) -{ - _LIT(KFileName, "deviceupdates_"); - _LIT(KPath, "z:/resource/qt/translations/"); - _LIT(KDialogIcon, "note_info.svg"); - - TBool result = HbTextResolverSymbian::Init(KFileName, KPath); - - if (result) { - _LIT(KTrustEstablished,"txt_device_update_dpophead_trust_established"); - _LIT(KServerID,"txt_deviceupdate_dpopinfo_trust_establised_with_1"); - - HBufC* trustEstablishedText = HbTextResolverSymbian::LoadL(KTrustEstablished); - CleanupStack::PushL(trustEstablishedText); - - HBufC* serveridbuf = HBufC::NewLC(aServerName.Length()); - TPtr serveridbufptr = serveridbuf->Des(); - serveridbufptr.Copy(aServerName); - - HBufC* serverid = HbTextResolverSymbian::LoadL(KServerID,*serveridbuf); - CleanupStack::PushL(serverid); - - CHbDeviceNotificationDialogSymbian::NotificationL(KDialogIcon, *trustEstablishedText, *serverid); - - CleanupStack::PopAndDestroy(3); //trustEstablishedText,serveridbuf,serverid - } -} // ----------------------------------------------------------------------------- // TCombiningAlgorith::TCombiningAlgorith()