browserui/browser/Launcher2/src/LauncherServerBase.cpp
changeset 0 84ad3b177aa3
child 24 868cceedabd3
equal deleted inserted replaced
-1:000000000000 0:84ad3b177aa3
       
     1 /*
       
     2 * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of the License "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description: 
       
    15 *      Implementation of CLauncherServerBase
       
    16 *
       
    17 *
       
    18 */
       
    19 
       
    20 
       
    21 // INCLUDES
       
    22 #include "LauncherClientService.h"
       
    23 #include "LauncherServerBase.h"
       
    24 #include "LauncherServerCommands.hrh"
       
    25 #include "BrowserOverriddenSettings.h"
       
    26 #include "BrowserLauncher.h"
       
    27 #include "BrowserAppDocument.h"
       
    28 #include "BrowserAppUi.h"
       
    29 #include "eikenv.h"
       
    30 #include "eikappui.h"
       
    31 #include "logger.h"
       
    32 
       
    33 // -----------------------------------------------------------------------------
       
    34 // CLauncherServerBase::CBrowserLauncherService()    
       
    35 // -----------------------------------------------------------------------------
       
    36 //
       
    37 EXPORT_C CLauncherServerBase::CLauncherServerBase()    
       
    38     {
       
    39     LOG_ENTERFN( "CLauncherServerBase::CLauncherServerBase" );
       
    40     
       
    41     iClientBuffer = NULL;
       
    42     CEikonEnv* browserAppEnv = CEikonEnv::Static();
       
    43     if ( browserAppEnv )
       
    44     	{
       
    45     	iBrowserAppUi = ( CBrowserAppUi* ) browserAppEnv->EikAppUi();
       
    46     	if ( iBrowserAppUi )
       
    47             {
       
    48             iBrowserDocument = ( CBrowserAppDocument* ) iBrowserAppUi->Document();
       
    49             }
       
    50     	}
       
    51     }
       
    52 	
       
    53 // -----------------------------------------------------------------------------
       
    54 // CLauncherServerBase::ServiceL()
       
    55 // -----------------------------------------------------------------------------
       
    56 //
       
    57 EXPORT_C void CLauncherServerBase::ServiceL( const RMessage2& aMessage )
       
    58     {
       
    59     LOG_ENTERFN( "CLauncherServerBase::ServiceL" );
       
    60     LOG_WRITE_FORMAT(" Function: %d", aMessage.Function());
       
    61     
       
    62     switch ( aMessage.Function() )
       
    63         {
       
    64         case ELauncherSendSync :
       
    65                 {
       
    66                 __ASSERT_DEBUG(iMySyncMessage.Handle()==0, User::Panic(_L("Launcher"),2));
       
    67                 iMySyncMessage = aMessage;
       
    68                 HandleMessageSyncL();
       
    69                 __ASSERT_DEBUG(iMySyncMessage.Handle()==0, User::Panic(_L("Launcher"),21));
       
    70                 break;
       
    71                 }
       
    72         case ELauncherSendASync :
       
    73                 {
       
    74                 __ASSERT_DEBUG(iMyAsyncMessage.Handle()==0, User::Panic(_L("Launcher"),3));
       
    75                 iMyAsyncMessage = aMessage;
       
    76                 HandleMessageASyncL();
       
    77                 __ASSERT_DEBUG(iMyAsyncMessage.Handle()!=0, User::Panic(_L("Launcher"),31));
       
    78                 break;
       
    79                 }
       
    80         case ELauncherSendASyncListen:
       
    81                 {
       
    82                 __ASSERT_DEBUG(iMyAsyncMessage.Handle()==0, User::Panic(_L("Launcher"),4));
       
    83                 iMyAsyncMessage = aMessage;
       
    84                 // Nothing else to do. It's a reinitialization, we only wanted to know the message.
       
    85                 __ASSERT_DEBUG(iMyAsyncMessage.Handle()!=0, User::Panic(_L("Launcher"),41));
       
    86                 break;
       
    87                 }
       
    88         case ELauncherSendSyncBuffer :
       
    89                 {
       
    90                 __ASSERT_DEBUG(iMySyncMessage.Handle()==0, User::Panic(_L("Launcher"),5));
       
    91                 iMySyncMessage = aMessage;
       
    92                 HandleMessageSyncBufferL();
       
    93                 __ASSERT_DEBUG(iMySyncMessage.Handle()==0, User::Panic(_L("Launcher"),51));
       
    94                 break;
       
    95                 }
       
    96         case ELauncherSendSyncBools :
       
    97                 {
       
    98                 __ASSERT_DEBUG(iMySyncMessage.Handle()==0, User::Panic(_L("Launcher"),6));
       
    99                 iMySyncMessage = aMessage;
       
   100                 HandleMessageSyncBoolsL();
       
   101                 __ASSERT_DEBUG(iMySyncMessage.Handle()==0, User::Panic(_L("Launcher"),61));
       
   102                 break;
       
   103                 }
       
   104         case ELauncherCancelReceive :
       
   105                 {
       
   106                 iMyAsyncMessage.Complete( KErrCancel );
       
   107                 HandleBrowserExit();
       
   108                 aMessage.Complete( KErrNone );
       
   109                 break;
       
   110                 }
       
   111         default:
       
   112                 {
       
   113                 CAknAppServiceBase::ServiceL( aMessage );
       
   114                 break;
       
   115                 }
       
   116         }
       
   117     }
       
   118 
       
   119 // -----------------------------------------------------------------------------
       
   120 // CLauncherServerBase::HandleMessageSyncL()
       
   121 // -----------------------------------------------------------------------------
       
   122 //
       
   123 void CLauncherServerBase::HandleMessageSyncL()
       
   124     {
       
   125     LOG_ENTERFN( "CLauncherServerBase::HandleMessageSyncL" );
       
   126     
       
   127     // Client parameters. These will be filled by function
       
   128     // UnPackLauncherDataL()...
       
   129     TUid embeddingApplicationUid;
       
   130     TBrowserOverriddenSettings settings;
       
   131     TBrowserOverriddenSettings* pSettings;	
       
   132     TInt folderUid;
       
   133     TPtrC seamlessParam;
       
   134     TBool isContentHandlerRegistered( EFalse );
       
   135     TBool isOverridenSettings( EFalse );	
       
   136 
       
   137     TInt result; // The result of the processed data.
       
   138     	
       
   139     // Read the recieved data buffer
       
   140     HBufC8* incomingDataBuffer = HBufC8::NewMaxLC( iMySyncMessage.GetDesLengthL( 0 ) );
       
   141     TPtr8 incomingDataPointer = incomingDataBuffer->Des( );
       
   142     iMySyncMessage.ReadL( 0, incomingDataPointer );
       
   143     LOG_WRITE(" ReadL OK");
       
   144     	
       
   145     // Unpack the recieved data buffer 
       
   146     pSettings = &settings;		
       
   147     TLauncherPackageUtils::UnPackLauncherDataL( embeddingApplicationUid, 
       
   148     											pSettings, 
       
   149     											folderUid, 
       
   150     											seamlessParam, 
       
   151     											incomingDataPointer, 
       
   152     											isContentHandlerRegistered, 
       
   153     											isOverridenSettings );
       
   154     											
       
   155     // Process the unpacked data.
       
   156     result = ProcessMessageSyncL( embeddingApplicationUid,
       
   157     							  settings, 
       
   158     							  folderUid, 
       
   159     							  seamlessParam, 
       
   160     							  isContentHandlerRegistered );
       
   161 
       
   162     // Cleanup, and complete the client`s request.
       
   163     CleanupStack::PopAndDestroy( ); // incomingDataBuffer	
       
   164     iMySyncMessage.Complete( result );
       
   165     }
       
   166 
       
   167 // -----------------------------------------------------------------------------
       
   168 // CLauncherServerBase::HandleMessageASyncL()
       
   169 // -----------------------------------------------------------------------------
       
   170 //
       
   171 void CLauncherServerBase::HandleMessageASyncL()
       
   172     {
       
   173     LOG_ENTERFN( "CLauncherServerBase::HandleMessageASyncL" );
       
   174     
       
   175     // Client parameters. These will be filled by function
       
   176     // UnPackLauncherDataL()...
       
   177     TUid embeddingApplicationUid;    
       
   178     TBrowserOverriddenSettings settings;
       
   179     TBrowserOverriddenSettings* pSettings;	
       
   180     TInt folderUid;
       
   181     TPtrC seamlessParam;
       
   182     TBool isContentHandlerRegistered( EFalse );
       
   183     TBool isOverridenSettings( EFalse );
       
   184         
       
   185     // Read the recieved data buffer
       
   186     HBufC8* incomingDataBuffer = HBufC8::NewMaxLC( iMyAsyncMessage.GetDesLengthL( 0 ) );
       
   187     TPtr8 incomingDataPointer = incomingDataBuffer->Des( );
       
   188     iMyAsyncMessage.ReadL( 0, incomingDataPointer );
       
   189     LOG_WRITE(" ReadL OK");
       
   190      	
       
   191     // Unpack the recieved data buffer 
       
   192     pSettings = &settings;		
       
   193     TLauncherPackageUtils::UnPackLauncherDataL( embeddingApplicationUid, 
       
   194     											pSettings, 
       
   195     											folderUid, 
       
   196     											seamlessParam, 
       
   197     											incomingDataPointer, 
       
   198     											isContentHandlerRegistered, 
       
   199     											isOverridenSettings );
       
   200 
       
   201     // Process the unpacked data.
       
   202     ProcessMessageASyncL( embeddingApplicationUid,
       
   203     					  settings, 
       
   204     					  folderUid, 
       
   205     					  seamlessParam, 
       
   206     					  isContentHandlerRegistered, 
       
   207     					  isOverridenSettings );
       
   208 
       
   209     // Cleanup.
       
   210     CleanupStack::PopAndDestroy( ); // incomingDataBuffer
       
   211     }
       
   212 
       
   213 void CLauncherServerBase::HandleMessageSyncBufferL()
       
   214     {
       
   215     LOG_ENTERFN( "CLauncherServerBase::HandleMessageSyncBufferL" );
       
   216     
       
   217     ProcessMessageSyncBufferL();
       
   218     // And complete client`s request.
       
   219     iMySyncMessage.Complete( KErrNone );
       
   220     }
       
   221 	
       
   222 void CLauncherServerBase::HandleMessageSyncBoolsL()
       
   223     {
       
   224     LOG_ENTERFN( "CLauncherServerBase::HandleMessageSyncBoolsL" );
       
   225     
       
   226     TBool clientWantsToContinue = iMySyncMessage.Int0();
       
   227     TBool wasContentHandled = iMySyncMessage.Int1();
       
   228     ProcessBoolsL( clientWantsToContinue, wasContentHandled );
       
   229     // And complete client`s request.
       
   230     iMySyncMessage.Complete( KErrNone );
       
   231     }
       
   232     
       
   233 void CLauncherServerBase::HandleBrowserExit()
       
   234     {
       
   235     LOG_ENTERFN( "CLauncherServerBase::HandleBrowserExit" );    
       
   236     DoBrowserExit( );
       
   237     }
       
   238 	
       
   239 /* Capability check will come later...
       
   240 CLauncherServerBase::CLauncherServerBase(TCapability aClientReqs = ECapability_None):iClientReqs(aClientReqs)
       
   241     {
       
   242     }
       
   243 
       
   244 CPolicyServer::TCustomResult SecurityCheckL( const RMessage2& aMsg, TInt& aAction, TSecurityInfo& aMissing)
       
   245     {
       
   246     switch (aMsg.Function())
       
   247         {
       
   248         case RLauncherClientService::EMessageId:
       
   249             return aMsg.HasCapability(iClientReqs) ? CPolicyServer::EPass : CPolicyServer::EFail;
       
   250             break;
       
   251         default:
       
   252             return CApaAppServiceBase::SecurityCheckL( aMsg, aAction, aMissing );
       
   253             break;
       
   254         }
       
   255     }
       
   256 */
       
   257 
       
   258 // End of File