--- a/contentcontrolsrv/hsccclient/hsccproviderclient/src/hsccproviderclient.cpp Fri Feb 19 23:07:29 2010 +0200
+++ b/contentcontrolsrv/hsccclient/hsccproviderclient/src/hsccproviderclient.cpp Fri Mar 12 15:43:54 2010 +0200
@@ -102,12 +102,32 @@
void CHsCcProviderClient::RunL()
{
- if ( !iStatus.Int() )
+ TInt err( iStatus.Int() );
+ HBufC8* header( NULL );
+ TPtr8 headerPtr( NULL, 0 );
+ TUint32 sender( 0 );
+ TUint32 receiver( 0 );
+ if ( !err )
+ {
+ // Read API request header
+ header = iApiHeader->AllocL();
+ CleanupStack::PushL( header );
+ headerPtr.Set( header->Des() );
+ // Read sender
+ sender = iPckgSender();
+ // Read receiver
+ receiver = iPckgReceiver();
+ }
+
+ // Receive next API request
+ WaitForApiReqL();
+
+ if ( !err )
{
// Get received message header
CCcSrvMsg* message = CCcSrvMsg::NewL();
CleanupStack::PushL( message );
- RDesReadStream stream( iApiHeaderPtr );
+ RDesReadStream stream( headerPtr );
CleanupClosePushL( stream );
message->InternalizeHeaderL( stream );
CleanupStack::PopAndDestroy( &stream );
@@ -127,54 +147,54 @@
switch ( message->MsgId() )
{
case ECcRegisterObserverNtf:
- HandleRegisterObserverNtfL( *message );
+ HandleRegisterObserverNtfL( sender, receiver, *message );
break;
case ECcUnregisterObserverNtf:
- HandleUnregisterObserverNtfL( *message );
+ HandleUnregisterObserverNtfL( sender, receiver, *message );
break;
case EHsCcWidgetListReq:
- HandleWidgetListReqL( *message );
+ HandleWidgetListReqL( sender, receiver, *message );
break;
case EHsCcAddWidgetReq:
- HandleAddWidgetReqL( *message );
+ HandleAddWidgetReqL( sender, receiver, *message );
break;
case EHsCcRemoveWidgetReq:
- HandleRemoveWidgetReqL( *message );
+ HandleRemoveWidgetReqL( sender, receiver, *message );
break;
case EHsCcViewListReq:
- HandleViewListReqL( *message );
+ HandleViewListReqL( sender, receiver, *message );
break;
case EHsCcAddViewReq:
- HandleAddViewReqL( *message );
+ HandleAddViewReqL( sender, receiver, *message );
break;
case EHsCcRemoveViewReq:
- HandleRemoveViewReqL( *message );
+ HandleRemoveViewReqL( sender, receiver, *message );
break;
case EHsCcActivateViewReq:
- HandleActivateViewReqL( *message );
+ HandleActivateViewReqL( sender, receiver, *message );
break;
case EHsCcAppListReq:
- HandleAppListReqL( *message );
+ HandleAppListReqL( sender, receiver, *message );
break;
case EHsCcActivateAppReq:
- HandleActivateAppReqL( *message );
+ HandleActivateAppReqL( sender, receiver, *message );
break;
case EHsCcActiveAppReq:
- HandleActiveAppReqL( *message );
+ HandleActiveAppReqL( sender, receiver, *message );
break;
case EHsCcActiveViewReq:
- HandleActiveViewReqL( *message );
+ HandleActiveViewReqL( sender, receiver, *message );
break;
default:
- HandleNotSupportedReqL( *message );
+ HandleNotSupportedReqL( sender, receiver, *message );
break;
}
CleanupStack::PopAndDestroy( message );
}
-
- // Receive next API request
- WaitForApiReqL();
-
+ if ( header )
+ {
+ CleanupStack::PopAndDestroy( header );
+ }
}
// -----------------------------------------------------------------------------
@@ -255,6 +275,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleRegisterObserverNtfL(
+ TUint32 /* aSender */,
+ TUint32 /* aReceiver */,
CCcSrvMsg& /* aMessage */ )
{
TUint32 observer = iPckgSender();
@@ -266,6 +288,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleUnregisterObserverNtfL(
+ TUint32 /* aSender */,
+ TUint32 /* aReceiver */,
CCcSrvMsg& /* aMessage */ )
{
TUint32 observer = iPckgSender();
@@ -284,12 +308,36 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleWidgetListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
+
+ TInt err( KErrNone );
// Get widget list
CHsContentInfoArray* widgets = CHsContentInfoArray::NewL();
CleanupStack::PushL( widgets );
- TInt err = iController.WidgetListL( *widgets );
+
+ if ( aMessage.DataSize() )
+ {
+ // Internalize message data
+ RDesReadStream dataStream( aMessage.Data() );
+ CleanupClosePushL( dataStream );
+ CHsContentInfo* info = CHsContentInfo::NewL( dataStream );
+ CleanupStack::PopAndDestroy( &dataStream );
+ CleanupStack::PushL( info );
+
+ // Get list of widgets included in the defined
+ // application configuration or view
+ err = iController.WidgetListL( *info, *widgets );
+
+ CleanupStack::PopAndDestroy( info );
+ }
+ else
+ {
+ // Get list of available widgets
+ err = iController.WidgetListL( *widgets );
+ }
// Create and send WidgetListResp
CCcSrvMsg* message = CCcSrvMsg::NewL();
@@ -309,7 +357,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( widgets );
@@ -321,6 +369,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleAddWidgetReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -352,7 +402,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -362,6 +412,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleRemoveWidgetReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -393,7 +445,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -403,6 +455,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleViewListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Get view list
@@ -428,7 +482,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( views );
@@ -440,6 +494,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleAddViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -471,7 +527,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -481,6 +537,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleRemoveViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -512,7 +570,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -522,6 +580,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleActivateViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -553,7 +613,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -563,6 +623,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleActiveViewReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Get active view
@@ -588,7 +650,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( view );
@@ -600,6 +662,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleAppListReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Get app list
@@ -624,7 +688,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( apps );
@@ -636,6 +700,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleActivateAppReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
TInt err( KErrNone );
@@ -667,7 +733,7 @@
message->SetStatus( err );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
}
@@ -677,6 +743,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleActiveAppReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Get active application info
@@ -702,7 +770,7 @@
CleanupStack::PopAndDestroy( dataBuf );
}
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
CleanupStack::PopAndDestroy( app );
@@ -713,6 +781,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::HandleNotSupportedReqL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
// Create and send NotSupportedResp
@@ -723,7 +793,7 @@
message->SetStatus( KErrNone );
message->SetData( KNullDesC8() );
- SendRespL( *message );
+ SendRespL( aReceiver, aSender, *message );
CleanupStack::PopAndDestroy( message );
@@ -759,6 +829,8 @@
// -----------------------------------------------------------------------------
//
void CHsCcProviderClient::SendRespL(
+ TUint32 aSender,
+ TUint32 aReceiver,
CCcSrvMsg& aMessage )
{
HBufC8* msgBuf = aMessage.MarshalL();
@@ -767,7 +839,9 @@
msgPtr.Set( msgBuf->Des() );
TPckgBuf<TUint32> provider( ECcHomescreen );
- iSession.Send( ECcApiResp, provider, iPckgReceiver, iPckgSender, msgPtr );
+ TPckgBuf<TUint32> sender( aSender );
+ TPckgBuf<TUint32> receiver( aReceiver );
+ iSession.Send( ECcApiResp, provider, sender, receiver, msgPtr );
CleanupStack::PopAndDestroy( msgBuf );
}