--- 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 <hbdevicedialogsymbian.h>
-#include <hbdevicenotificationdialogsymbian.h>
-#include <hbtextresolversymbian.h>
+
+#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<AttributeContainerHelper::TContainer*>::AppendL( container);
+ RArray::AppendL( container);
//remove from cleanup
CleanupStack::Pop( 2, aAttribute);
@@ -82,7 +75,7 @@
delete container;
}
- RArray<AttributeContainerHelper::TContainer*>::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<TInt>();
- 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()