browserui/browser/BrowserAppSrc/BrowserLauncherService.cpp
branchRCL_3
changeset 48 8e6fa1719340
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/browserui/browser/BrowserAppSrc/BrowserLauncherService.cpp	Wed Sep 01 12:31:04 2010 +0100
@@ -0,0 +1,251 @@
+/*
+* Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*      Implementation of BrowserLauncherService
+*
+*
+*/
+
+// INCLUDES
+#include "BrowserLauncherService.h"
+#include <browseroverriddensettings.h>
+#include "LauncherServerCommands.hrh"
+#include "BrowserAppDocument.h"
+#include "BrowserAppUi.h"
+#include "BrowserAsyncExit.h"
+#include "logger.h"
+#include <AiwGenericParam.h>
+#include <s32mem.h>
+#include "BrowserSpecialLoadObserver.h"
+#include <mconnection.h>
+
+// -----------------------------------------------------------------------------
+// CBrowserLauncherService::~CBrowserLauncherService()
+// -----------------------------------------------------------------------------
+//
+CBrowserLauncherService::~CBrowserLauncherService()
+    {
+    LOG_ENTERFN( "CBrowserLauncherService::~CBrowserLauncherService" );
+    // The base class has no destructor, thus resources must be freed up here!
+    delete iClientBuffer; iClientBuffer = 0;
+    // Cancel outstanding asynchronous request
+    if ( iMyAsyncMessage.Handle() !=0 )
+        {
+        iMyAsyncMessage.Complete( KErrCancel );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserLauncherService::ProcessMessageSyncL()
+// -----------------------------------------------------------------------------
+//
+TInt CBrowserLauncherService::ProcessMessageSyncL( TUid /*aEmbeddingApplicationUid*/, 
+												   TBrowserOverriddenSettings /*aSettings*/, 
+												   TInt /*aFolderUid*/, 
+												   TPtrC /*aSeamlessParam*/, 
+												   TBool /*aIsContentHandlerRegistered*/ )
+    {
+    LOG_ENTERFN( "CBrowserLauncherService::ProcessMessageSyncL" );
+    
+    // Do stuff here...
+    return KErrNone;
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserLauncherService::ProcessMessageASyncL()
+// -----------------------------------------------------------------------------
+//
+void CBrowserLauncherService::ProcessMessageASyncL( TUid aEmbeddingApplicationUid, 
+													TBrowserOverriddenSettings aSettings, 
+													TInt aFolderUid, 
+													TPtrC aSeamlessParam, 
+													TBool aIsContentHandlerRegistered, 
+													TBool aIsOverridenSettings )
+    {
+    LOG_ENTERFN( "CBrowserLauncherService::ProcessMessageASyncL" );
+    
+    TBrowserOverriddenSettings* paSettings;
+    TInt seamlessParamLength = aSeamlessParam.Length();
+    HBufC8* param8 = HBufC8::NewLC( seamlessParamLength );
+        
+    // Set Browser`s document settings
+    if ( aIsOverridenSettings )
+    	{
+    	paSettings = &aSettings;
+    	iBrowserDocument->SetOverriddenSettings( paSettings );
+    	}
+    else
+        {
+        iBrowserDocument->SetOverriddenSettings( NULL );
+        }
+		
+    // Set browser document		
+    iBrowserDocument->SetFolderToOpen( aFolderUid );
+    iBrowserDocument->SetIsContentHandlerRegistered( aIsContentHandlerRegistered );
+
+    // Initialize browser
+    iBrowserAppUi->SetEmbeddingAppliacationUid( aEmbeddingApplicationUid );
+    iBrowserAppUi->InitBrowserL( );
+    				
+    // Load the specified URL
+    param8->Des().Copy( aSeamlessParam );
+
+    // If no command or URL was given open the browser with the specified bookmark
+    if ( seamlessParamLength )
+    	{
+    	iBrowserAppUi->ParseAndProcessParametersL( *param8 );			
+        iBrowserAppUi->SetViewToBeActivatedIfNeededL( iBrowserAppUi->LastActiveViewId() );
+    	}
+    else
+    	{
+    	iBrowserAppUi->ParseAndProcessParametersL( *param8, EFalse );
+    	
+        // startup content view to initialize fep/vkb
+    	iBrowserAppUi->SetLastActiveViewId( KUidBrowserContentViewId );
+    	iBrowserAppUi->SetViewToBeActivatedIfNeededL( iBrowserAppUi->LastActiveViewId() );
+       	iBrowserAppUi->ActivateLocalViewL( iBrowserAppUi->LastActiveViewId() );			
+
+    	// Now activate bookmarks view
+    	iBrowserAppUi->SetLastActiveViewId( KUidBrowserBookmarksViewId );
+       	iBrowserAppUi->SetViewToBeActivatedIfNeededL( iBrowserAppUi->LastActiveViewId() );
+    	}
+    iBrowserAppUi->ActivateLocalViewL( iBrowserAppUi->LastActiveViewId() );
+    iBrowserAppUi->HandleForegroundEventL( ETrue );
+
+	// perform special action for overridden context
+	// could later use as flag for LSK,RSK.
+	switch(aSettings.GetBrowserSetting(EBrowserOverSettingsContextId))
+		{
+			case EBrowserContextIdFeeds:
+				iBrowserAppUi->SetOverriddenLaunchContextId(EBrowserContextIdFeeds);
+				iBrowserAppUi->LaunchIntoFeedsL();	
+				break;
+			default:
+				// do nothing
+				break;
+		
+		}
+
+    CleanupStack::PopAndDestroy(); // param8
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserLauncherService::ProcessMessageSyncBufferL()
+// -----------------------------------------------------------------------------
+//    
+TInt CBrowserLauncherService::ProcessMessageSyncBufferL( )
+    {
+    LOG_ENTERFN( "CBrowserLauncherService::ProcessMessageSyncBufferL" );
+    
+    // Write iClientBuffer to  client`s address space.
+    iMySyncMessage.WriteL( 0,iClientBuffer->Des() );    
+    return KErrNone;
+    }
+	
+// -----------------------------------------------------------------------------
+// CBrowserLauncherService::ProcessBoolsL()
+// -----------------------------------------------------------------------------
+//    
+void CBrowserLauncherService::ProcessBoolsL
+    ( TBool aClientWantsToContinue, TBool aWasContentHandled )
+    {
+    LOG_ENTERFN( "CBrowserLauncherService::ProcessBoolsL" );
+    
+    iBrowserAppUi->SetContentHandlingResult( aClientWantsToContinue, aWasContentHandled );
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserLauncherService::DoBrowserExit()
+// -----------------------------------------------------------------------------
+//    
+void CBrowserLauncherService::DoBrowserExit( )
+    {
+    LOG_ENTERFN( "CBrowserLauncherService::DoBrowserExitL" );
+    
+    if ( iBrowserAppUi )
+        {
+        if ( !iBrowserAppUi->ExitInProgress() )
+            {
+            if (iBrowserAppUi->SpecialLoadObserver().IsConnectionStarted()) // If Connection request is in processing
+			    {  
+			    iBrowserAppUi->Connection().Disconnect();                                             
+			    }
+	        else
+			    {
+			    iBrowserAppUi->iBrowserAsyncExit->Start();
+			    }   
+            }        
+        iBrowserAppUi->SetBrowserLauncherService( NULL );
+        }
+    }
+        
+// -----------------------------------------------------------------------------
+// CBrowserLauncherService::DownloadFinished()
+// -----------------------------------------------------------------------------
+//
+void CBrowserLauncherService::DownloadFinishedL( TInt aReason, const CAiwGenericParamList& aParamList )
+    {
+    LOG_ENTERFN( "CBrowserLauncherService::DownloadFinishedL" );
+    
+    // This function is called by the Browser. If download is finished 
+    // write the result to the clients buffer.
+
+    // Get the size of the parameter list`s externalized size.
+    TInt parameterListExternalizedSize = aParamList.Size();
+
+    // Create the buffer to hold the externalized data.
+    HBufC8* newClientBuffer = HBufC8::NewL( parameterListExternalizedSize );
+    delete iClientBuffer; // delete the old buffer
+    iClientBuffer = newClientBuffer;
+
+    // Create Stream object, and write stream to descriptor iClientBuffer.
+    TPtr8 piClientBuffer = iClientBuffer->Des();
+    RDesWriteStream writeStream( piClientBuffer );
+
+    // Externalize parameter list into descriptor iClientBuffer.	
+    aParamList.ExternalizeL( writeStream );
+    BROWSER_LOG( ( _L( " ExternalizeL OK" ) ) );
+
+    // Close stream object.
+    writeStream.CommitL();
+    BROWSER_LOG( ( _L( " CommitL OK" ) ) );
+    writeStream.Close();
+    BROWSER_LOG( ( _L( " Close OK" ) ) );
+
+    // Complete the client with the created buffer`s size.
+    if ( aReason == KErrNone )
+        {
+        TPckg<TInt> bufferSize( iClientBuffer->Length() );
+	    TRAPD(err, iMyAsyncMessage.WriteL( 1, bufferSize ));	
+	    LOG_WRITE_FORMAT(" WriteL erro code : %d", err );
+	    User::LeaveIfError(err);
+        iMyAsyncMessage.Complete( KErrNone );
+        }
+    else
+        {
+        iMyAsyncMessage.Complete( aReason );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CBrowserLauncherService::ConstructL()
+// -----------------------------------------------------------------------------
+//
+void CBrowserLauncherService::ConstructL()
+    {
+    LOG_ENTERFN( "CBrowserLauncherService::ConstructL" );
+    iBrowserAppUi->SetBrowserLauncherService( this );
+    }
+
+// End of File