--- a/securitydialogs/lockclient/src/lockaccessextension.cpp Tue Aug 31 16:04:40 2010 +0300
+++ b/securitydialogs/lockclient/src/lockaccessextension.cpp Wed Sep 01 12:19:59 2010 +0100
@@ -15,20 +15,17 @@
*
*/
+
#include "lockaccessextension.h"
#include <lockappclientserver.h>
#include <e32property.h> // P&S API
#include <apgtask.h> // TApaTask, TApaTaskList
#include <coemain.h> // CCoeEnv
-#include "../../Autolock/PubSub/securityuisprivatepskeys.h"
-#include <apgcli.h>
-#include <apacmdln.h>
+
-#include <xqservicerequest.h>
-#include <xqserviceutil.h>
-#include <xqrequestinfo.h>
-#include <xqaiwrequest.h>
-#include <xqappmgr.h>
+// Constants
+const TInt KTimesToConnectServer( 2);
+const TInt KTimeoutBeforeRetrying( 50000);
// ---------------------------------------------------------------------------
// Gets server version, needed for connection
@@ -44,8 +41,6 @@
TInt RLockAccessExtension::TryConnect( RWsSession& aWsSession )
{
TInt ret(KErrNone);
- /*
- this is the old methd. Now we use QtHighway
TApaTaskList list(aWsSession);
// check that lockapp is running
TApaTask task = list.FindApp( KLockAppUid );
@@ -67,8 +62,6 @@
RDebug::Printf( "%s %s (%u) ???? LockApp task not found=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, KLockAppUid );
ret = KErrNotReady;
}
- */
- RDEBUG("ret", ret);
return ret;
}
@@ -78,70 +71,7 @@
TInt RLockAccessExtension::EnsureConnected( )
{
TInt ret(KErrNone);
-
- // Now we use QtHighway, but nevertheless need to be sure that only 1 process is running
- // This is done because Autolock.exe should start at the beginning, but it might not be ready yet.
- // As Qthighway will start it, it's better to give time for the first one to prepare itself.
- TInt err = KErrNone;
- TInt numAttempts = 0;
- TInt numberOfInstances = 0;
- do
- {
- numberOfInstances=0;
- TFullName processName;
- TFindThread find(_L("*utolock*")); // first letter can can be uppercase or lowercase
- while( find.Next( processName ) == KErrNone )
- {
- // Autolock[100059b5]0002::Autolock in device
- // autolock.exe[100059b5]0002::Main in emulator
- RDEBUG("found process", 1);
- numberOfInstances++;
- } // end while
- RDEBUG("numberOfInstances", numberOfInstances);
- if(numberOfInstances<=0)
- {
- RDEBUG("Autolock.exe not running already. Starting.", 0 );
- RApaLsSession ls;
- User::LeaveIfError(ls.Connect());
- CleanupClosePushL(ls);
- RDEBUG("commandLine", 0);
- CApaCommandLine* commandLine = CApaCommandLine::NewLC();
- commandLine->SetExecutableNameL(_L("autolock.exe"));
- commandLine->SetCommandL(EApaCommandRun);
- // Try to launch the application.
- RDEBUG("StartApp", 0);
- TInt err = ls.StartApp(*commandLine); // this migh fail
- CleanupStack::PopAndDestroy(2); // commandLine, ls
-
- RDEBUG("Autolock.exe launched. Waiting a bit. err", err );
- User::After(1000*1000);
- RDEBUG("re-verifying Autolock.exe process.", 1 );
- }
- } while (numAttempts++ <3 && numberOfInstances<=0);
-
-
-
- TInt value = -1;
- err = KErrNone;
- numAttempts = 0;
- while( value<1 && numAttempts++ <10 ) // wait max 5 seconds
- {
- // process was started, but still not fully running. Give a bit more time
- err = RProperty::Get(KPSUidSecurityUIs, KSecurityUIsLockInitiatorUID, value);
- RDEBUG("err", err);
- RDEBUG("value", value);
- if(value<1)
- {
- RDEBUG("Autolock.exe has started but it's not fully running", value);
- User::After(5*100*1000); // half a second
- }
- }
- RDEBUG("numAttempts", numAttempts);
- /*
- this is the old method.
// we need CCoeEnv because of window group list
- const TInt KTimesToConnectServer( 2);
- const TInt KTimeoutBeforeRetrying( 50000);
CCoeEnv* coeEnv = CCoeEnv::Static( );
if ( coeEnv )
{
@@ -160,8 +90,6 @@
// No CCoeEnv
ret = KErrNotSupported;
}
- */
- RDEBUG("ret", ret);
return ret;
}
@@ -170,12 +98,10 @@
// ---------------------------------------------------------------------------
TInt RLockAccessExtension::SendMessage( TInt aMessage )
{
- RDEBUG("0", 0);
- TInt ret = KErrNone;
+ TInt ret = EnsureConnected( );
if ( ret == KErrNone )
{
- // ret = SendReceive( aMessage );
- ret = SendMessage( aMessage, -1, -1 );
+ ret = SendReceive( aMessage );
}
return ret;
}
@@ -185,14 +111,12 @@
// ---------------------------------------------------------------------------
TInt RLockAccessExtension::SendMessage( TInt aMessage, TInt aParam1 )
{
- RDEBUG("0", 0);
- TInt ret = KErrNone;
+ TInt ret = EnsureConnected( );
if ( ret == KErrNone )
{
// assign parameters to IPC argument
TIpcArgs args(aParam1);
- // ret = SendReceive( aMessage, args );
- ret = SendMessage( aMessage, aParam1, -1 );
+ ret = SendReceive( aMessage, args );
}
return ret;
}
@@ -202,82 +126,13 @@
// ---------------------------------------------------------------------------
TInt RLockAccessExtension::SendMessage( TInt aMessage, TInt aParam1, TInt aParam2 )
{
- RDEBUG("0", 0);
TInt ret = EnsureConnected( );
- RDEBUG("ret", ret);
if ( ret == KErrNone )
{
// assign parameters to IPC argument
- // TIpcArgs args( aParam1, aParam2);
- // this is the old methd. Now we use QtHighway
- // ret = SendReceive( aMessage, args );
- RDEBUG("aMessage", aMessage);
- RDEBUG("aParam1", aParam1);
- RDEBUG("aParam2", aParam2);
-
-
- { // old method. Not used any more. Kept as reference
- /*
- XQServiceRequest* mServiceRequest;
- RDEBUG("XQServiceRequest", 0);
- mServiceRequest = new XQServiceRequest("com.nokia.services.Autolock.Autolock","service(QString,QString,QString)");// use , false to make async
- RDEBUG("aMessage", 0);
- QString label;
- label = "" + QString("%1").arg(aMessage);
- *mServiceRequest << QString(label);
- RDEBUG("aParam1", 0);
- label = "" + QString("%1").arg(aParam1);
- *mServiceRequest << QString(label);
- RDEBUG("aParam2", 0);
- label = "" + QString("%1").arg(aParam2);
- *mServiceRequest << QString(label);
- int returnvalue;
- RDEBUG("send", 0);
- bool ret = mServiceRequest->send(returnvalue);
- RDEBUG("ret", ret);
- RDEBUG("returnvalue", returnvalue);
- */
- }
-
- RDEBUG("args", 0);
- QList<QVariant> args;
- args << QVariant(QString(QString::number(aMessage)));
- args << QVariant(QString(QString::number(aParam1)));
- args << QVariant(QString(QString::number(aParam2)));
-
- XQApplicationManager mAppManager;
- XQAiwRequest *request;
- RDEBUG("create", 0);
- request = mAppManager.create("com.nokia.services.Autolock", "Autolock", "service(QString,QString,QString)", false);
- // also works with create("Autolock", "service(QString,QString,QString)", false);
- if(request)
- {
- RDEBUG("got request", 0);
- }
- else
- {
- RDEBUG("not got request", 0);
- RDebug::Printf( "%s %s (%u) not got request=%x", __FILE__, __PRETTY_FUNCTION__, __LINE__, 0 );
- return KErrAbort;
- }
-
- RDEBUG("setArguments", 0);
- request->setArguments(args);
- RDEBUG("args", 0);
- int returnvalue=0;
- QVariant var = QVariant(returnvalue);
- RDEBUG("send", 0);
- bool retSend = request->send(var);
- returnvalue = var.toInt();
- RDEBUG("retSend", retSend);
- RDEBUG("returnvalue", returnvalue);
- int error = request->lastError();
- RDEBUG("error", error);
- ret = returnvalue;
-
- delete request;
+ TIpcArgs args( aParam1, aParam2);
+ ret = SendReceive( aMessage, args );
}
- RDEBUG("ret", ret);
return ret;
}