--- a/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,4161 +0,0 @@
-/*
-* 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 CBrowserAppUi
-*
-*
-*/
-
-// INCLUDES
-#include <browser_platform_variant.hrh>
-#include <BrowserNG.rsg>
-#include <uri16.h>
-#include <uri8.h>
-#include <uriutils.h>
-#include <ApUtils.h>
-#include <StringLoader.h>
-#include <e32def.h>
-#include <aplistitemlist.h>
-#include <aplistitem.h>
-#include <apparc.h>
-#include <favouritesfile.h>
-#include <aknmessagequerydialog.h>
-#include <FeatMgr.h>
-#include <internetconnectionmanager.h>
-#include <APSettingsHandlerUi.h>
-#include <UriUtilsCommon.h>
-#include <aknnavi.h>
-#include <AiwGenericParam.h>
-#include <AknDef.h>
-#include <DocumentHandler.h>
-
-#ifdef BRDO_APP_GALLERY_SUPPORTED_FF
-#include <MGXFileManagerFactory.h>
-#include <CMGXFileManager.h>
-#endif
-
-#include <browserplugininterface.h>
-#include <oommonitorplugin.h>
-
-#include <browseroverriddensettings.h>
-#include "BrowserLauncherService.h"
-
-#include "cookiemanagerclient.h"
-
-#ifdef __SERIES60_HELP
-#include <hlplch.h>
-#endif //__SERIES60_HELP
-
-#include "BrowserAppDocument.h"
-#include <downloadedcontenthandler.h>
-#include "BrowserBmOTABinSender.h"
-#include "BrowserCommandLineParser.h"
-#include "BrowserApplication.h"
-#include "BrowserContentView.h"
-#include "BrowserContentViewContainer.h"
-#include "BrowserContentViewToolbar.h"
-#include "BrowserBookmarksView.h"
-#include "SettingsView.h"
-#include "BrowserWindowSelectionView.h"
-#include "BrowserInitialView.h"
-#include "CommonConstants.h"
-#include "BrowserDialogs.h"
-#include "BrowserDisplay.h"
-#include "BrowserCommsModel.h"
-#include "BrowserUtil.h"
-#include "BrowserPreferences.h"
-#include "SessionAndSecurity.h"
-#include "BrowserUIVariant.hrh"
-#include "BrowserWindowQueue.h"
-#include "Logger.h"
-#include <data_caging_path_literals.hrh>
-
-#include <brctldefs.h>
-#include <browserdialogsprovider.h>
-#include "BrowserSoftkeysObserver.h"
-#include "BrowserLoadObserver.h"
-#include "BrowserSpecialLoadObserver.h"
-#include "BrowserAsyncExit.h"
-#include "CommonConstants.h"
-
-
-// Dialogs Provider
-#include <browserdialogsproviderobserver.h>
-#include <brctlinterface.h>
-#include <browserdialogsprovider.h>
-
-// Multiple Windows
-#include "BrowserPopupEngine.h"
-#include "BrowserDialogsProviderProxy.h"
-#include "BrowserWindow.h"
-#include "BrowserWindowManager.h"
-#include "AknInfoPopupNoteController.h"
-
-#include "BrowserAppUi.h"
-
-#include "BrowserPushMtmObserver.h"
-
-//CONSTANTS
-const TUint KBookmarkId = 1;
-const TUint KUrlId = 4;
-_LIT8 ( KLongZeroIdString, "5" );
-const TUint KFolderId = 6;
-const TUint KLaunchFeeds = 7;
-
-const TInt KMaxNumOfOpenedWindows = 5;
-const TInt KMinNumOfOpenedWindows = 2; // must allow at least 2 windows for most use cases
-
-const TUint KDot('.');
-const TUint KSlash('/');
-_LIT( KDefaultSchema, "http://" );
-const TInt KDefaultSchemaLength = 7;
-
-// ================= MEMBER FUNCTIONS =======================
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::CBrowserAppUi()
-// -----------------------------------------------------------------------------
-//
-CBrowserAppUi::CBrowserAppUi():
-iCalledFromAnotherApp( EFalse ),
-iIsForeground( EFalse ),
-iLastViewId( KUidBrowserNullViewId ),
-iExitInProgress( EFalse ),
-iShutdownRequested( EFalse ),
-iParametrizedLaunchInProgress( 0 ),
-iExitFromEmbeddedMode( EFalse ),
-iLongZeroPressed( EFalse ),
-iStartedUp( EFalse ),
-iFeatureManager( EFalse ),
-iUserExit( EFalse ),
-iPgNotFound( EFalse ),
-iOverriddenLaunchContextId( EBrowserContextIdNormal ),
-iBrowserAlreadyRunning (EFalse)
- {
- iViewToBeActivatedIfNeeded.iUid = 0;
- iViewToReturnOnClose.iUid = 0;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::~CBrowserAppUi()
-// -----------------------------------------------------------------------------
-//
-CBrowserAppUi::~CBrowserAppUi()
- {
- LOG_ENTERFN("CBrowserAppUi::~CBrowserAppUi");
-
- SetExitInProgress( ETrue );
- if(iBrowserAsyncExit)
- {
- iBrowserAsyncExit->Cancel();
- }
- if(iIdle)
- {
- iIdle->Cancel();
- }
-
-
- if( iFeatureManager )
- {
- FeatureManager::UnInitializeLib();
- iFeatureManager = EFalse;
- }
-
- //
- delete iPushMtmObserver;
-
-#ifdef __RSS_FEEDS
- delete iFeedsClientUtilities;
- LOG_WRITE( "iFeedsClientUtilities deleted" );
-#endif //__RSS_FEEDS
-
- delete iPopupEngine;
- LOG_WRITE(" iPopupEngine deleted.");
-
- // set user exit for 'save launch param' command handling
- if ( iWindowManager )
- {
- iWindowManager->SetUserExit( iUserExit );
- }
- delete iWindowManager;
- LOG_WRITE( " iWindowManager deleted" );
-
- // Delete the inetconman after deleting window manager
- CInternetConnectionManager* inetconman = (CInternetConnectionManager*)iConnection;
- delete inetconman;
- LOG_WRITE( " inetconman deleted" );
- delete iConnStageNotifier;
- LOG_WRITE( " iConnStageNotifier deleted" );
-
- delete iPreferences;
- LOG_WRITE( " iPreferences deleted" );
- delete iCommsModel;
- LOG_WRITE( " iCommsModel deleted" );
-
- delete iLateSendUi;
- LOG_WRITE( " iLateSendUi deleted" );
-
- delete iSender;
- LOG_WRITE( " iSender deleted" );
-
- delete iIdle;
- LOG_WRITE( " iIdle deleted" );
-
- delete iRecentUrlStore;
- LOG_WRITE( " iRecentUrlStore deleted" );
-
- if ( iDoorObserver )
- {
- iDoorObserver->NotifyExit(MApaEmbeddedDocObserver::ENoChanges);
- LOG_WRITE( " NotifyExit deleted" );
- }
- delete iDialogsProvider;
- LOG_WRITE( " iDialogsProvider deleted" );
-
- TBool isStandAlone = !IsEmbeddedModeOn();
- LOG_WRITE_FORMAT( " isStandAlone: %d", isStandAlone );
-
- delete iBrowserAsyncExit;
- LOG_WRITE( " iBrowserAsyncExit deleted" );
-
- iFavouritesSess.Close();
- LOG_WRITE( " iFavouritesSess.Close() deleted" );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ConstructL()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::ConstructL()
- {
- LOG_CREATE;
- LOG_ENTERFN( "CBrowserAppUi::ConstructL" );
-PERFLOG_CREATE;
-PERFLOG_LOCAL_INIT;
-PERFLOG_STOPWATCH_START;
-
-
-#ifdef BRDO_SINGLE_CLICK_ENABLED_FF
- BaseConstructL( EAknEnableSkin | EAknEnableMSK | EAknSingleClickCompatible);
-#else
- BaseConstructL( EAknEnableSkin | EAknEnableMSK );
-#endif
- if ( !IsEmbeddedModeOn( ) )
- {
- InitBrowserL();
- LOG_WRITE( "Browser started standalone" );
- }
- else
- {
- iStartedUp = EFalse;
- LOG_WRITE( "Browser started embedded" );
- }
-
-PERFLOG_STOP_WRITE("BrowserUI::ConstructL");
-
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::InitBrowser()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::InitBrowserL()
- {
- if (!iStartedUp)
- {
- LOG_ENTERFN( "CBrowserAppUi::InitBrowser" );
-
- User::LeaveIfError( iFavouritesSess.Connect() );
-
- PERFLOG_LOCAL_INIT;
-
- PERFLOG_STOPWATCH_START;
-
- // Replace the original synchronous creation with this async
- // creation. A new method was added to the interface stub that was
- // not added to the MAHLEClientAPI (it is owned by another group).
- // // Init AHLE Interface
- // TAHLEScore adaptationSpeed;
- // TUint primarySize;
- // TUint secondarySize;
- // iAHLEClient=CAHLEInterface::NewL();
- // iAHLEClient->GetConfigurationL( primarySize, secondarySize, adaptationSpeed );
- // iAHLEClient->ReconfigureL( KAhlePrimaryStorage, secondarySize, adaptationSpeed );
-/*
- // Write to the file only if we are not below critical disk level
- if (SysUtil::DiskSpaceBelowCriticalLevelL (&rfs, aData.Length(), EDriveC))
- {
- User::Leave(KErrDiskFull);
- }
-
- TMemoryInfoV1Buf info;
- UserHal::MemoryInfo( info );
- TInt freeRamInBytes = 10*1024*1024;
- TInt dataSize = iContext->iDataPtr.Length();
- if( UserHal::MemoryInfo( info ) == KErrNone )
- freeRamInBytes = info().iFreeRamInBytes;
-
-*/
- //New constructor that just replaces the default primary storage size with this one.
- iRecentUrlStore = CRecentUrlStore::NewL();
-
- iFlashPresent = CheckFlashPresent();
- PERFLOG_STOP_WRITE("\t AhleInterface Creation + Configuration");
- BROWSER_LOG( ( _L( "AHLE Interface inited" ) ) );
-
- // Init FeatureManager
- FeatureManager::InitializeLibL();
- iFeatureManager = ETrue;
-
- // Init CommsModel
-
- PERFLOG_STOPWATCH_START;
- iCommsModel = CBrowserCommsModel::NewL();
- PERFLOG_STOP_WRITE("\t CommsModel NewL");
- BROWSER_LOG( ( _L( "CommsModel up" ) ) );
-
- CBrowserAppDocument* doc = STATIC_CAST(CBrowserAppDocument*, Document());
-
- // Creating object to hold application settings
- PERFLOG_STOPWATCH_START;
- iPreferences = CBrowserPreferences::NewL( *iCommsModel, *this, doc->GetOverriddenSettings());
- PERFLOG_STOP_WRITE("\t Preferences NewL");
- BROWSER_LOG( ( _L( "Preferences up" ) ) );
-
- PERFLOG_STOPWATCH_START;
- #ifdef BRDO_OCC_ENABLED_FF
- iConnection = CInternetConnectionManager::NewL( &iCommsModel->CommsDb(), ETrue );
- #else
- iConnection = CInternetConnectionManager::NewL( &iCommsModel->CommsDb(), EFalse );
- #endif
-
- PERFLOG_STOP_WRITE("\t ConnMan NewL");
- BROWSER_LOG( ( _L( "ConnectionManager up" ) ) );
-
-
- PERFLOG_STOPWATCH_START;
- iConnStageNotifier = CConnectionStageNotifierWCB::NewL();
- PERFLOG_STOP_WRITE("\t StageNotif NewL");
- BROWSER_LOG( ( _L( "StageNofier up" ) ) );
-
- // Starts a background processing, so it must be started early, to get
- // finished before the first send operation! Or it must be synchronized!
- PERFLOG_STOPWATCH_START;
- iLateSendUi = CIdle::NewL( CActive::EPriorityIdle );
- iLateSendUi ->Start( TCallBack( DelayedSendUiConstructL, this ) );
- PERFLOG_STOP_WRITE("\t OtaSender NewL");
-
- iHTTPSecurityIndicatorSupressed = iPreferences->HttpSecurityWarningsStatSupressed();
-
- // set AP to be a default one (for Push messages)
- SetRequestedAP( Preferences().DefaultAccessPoint() );
- // get client rect before hiding CBAs
- TRect rect = ClientRect();
- Cba()->MakeVisible( EFalse );
- //-------------------------------------------------------------------------
- // Create bookmarkview
- PERFLOG_STOPWATCH_START;
- CBrowserBookmarksView* bookmarksView = NULL;
- TInt folderUid = doc->GetFolderToOpen();
- if ( IsEmbeddedModeOn() && folderUid!= KFavouritesRootUid)
- {
- bookmarksView = CBrowserBookmarksView::NewLC( *this, *iRecentUrlStore, folderUid );
- }
- else
- {
- bookmarksView = CBrowserBookmarksView::NewLC( *this, *iRecentUrlStore );
- }
- PERFLOG_STOP_WRITE("\t BMView NewL")
-
- iBookmarksView = bookmarksView;
-
- AddViewL( bookmarksView ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop(); // bookmarksView
- BROWSER_LOG( ( _L( "Bookmarksview up" ) ) );
-
- //-------------------------------------------------------------------------
- // Create ContentView
-
- PERFLOG_STOPWATCH_START;
- CBrowserContentView* contentView =
- CBrowserContentView::NewLC( *this, rect );
- AddViewL( contentView ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop(); // contentView
- PERFLOG_STOP_WRITE("\t ContentView NewL");
- BROWSER_LOG( ( _L( "ContentView up" ) ) );
-
- //-------------------------------------------------------------------------
- // Create the Plugin Browser Engine
-
- // proxy will handle dialog events through load observer
- iDialogsProvider = CBrowserDialogsProvider::NewL( NULL);
- BROWSER_LOG( ( _L( "CBrowserDialogsProvider UP" ) ) );
-
-#ifdef __RSS_FEEDS
- iFeedsClientUtilities = CFeedsClientUtilities::NewL( *this, *this );
-
- BROWSER_LOG( ( _L("Feeds up.") ) );
-#endif //__RSS_FEEDS
-
- PERFLOG_STOPWATCH_START;
- // Is Multiple Window feature suported?
- if ( Preferences().UiLocalFeatureSupported( KBrowserMultipleWindows ) )
- {
- if (Preferences().UiLocalFeatureSupported( KBrowserMinimalMultipleWindows ))//midrange
- {
- iWindowManager = CBrowserWindowManager::NewL( *this, *contentView,
- KMinNumOfOpenedWindows );
- }
- else
- {
- iWindowManager = CBrowserWindowManager::NewL( *this, *contentView,
- KMaxNumOfOpenedWindows );
- }
- LOG_WRITE_FORMAT("WindowManager Up. Max windows number. %d",
- KMaxNumOfOpenedWindows );
-
- // bug fix for: EMBI-6NBAYM
- // Be very careful of the location to initialize the iPopupEngine before
- // PopupEngine is improved.
- iPopupEngine = CBrowserPopupEngine::NewL();
- BROWSER_LOG( ( _L( "PopupEngine up" ) ) );
- }
- else
- {
- iWindowManager = CBrowserWindowManager::NewL( *this, *contentView,
- KMinNumOfOpenedWindows );
- BROWSER_LOG( ( _L( "WindowManager Up. MWs not supported." ) ) );
- }
-
- PERFLOG_STOP_WRITE("\t WindowMgr + PopUp Engine");
- contentView->SetZoomLevelL();
- contentView->Container()->FindKeywordPane()->SetOrdinalPosition( 0 );
- contentView->Container()->GotoPane()->SetOrdinalPosition( 0 );
-
- //-------------------------------------------------------------------------
-
-
- CBrowserSettingsView* settingsView = CBrowserSettingsView::NewLC( *this );
- AddViewL( settingsView ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop(); // settingsView
- BROWSER_LOG( ( _L( "SettingsView up" ) ) );
-
- CBrowserWindowSelectionView* windowSelectionView = CBrowserWindowSelectionView::NewLC( *this );
- AddViewL( windowSelectionView ); // transfer ownership to CAknViewAppUi
- CleanupStack::Pop(); // windowSelectionView
- BROWSER_LOG( ( _L( "windowSelectionView up" ) ) );
-
- //-------------------------------------------------------------------------
-
- iIdle = CIdle::NewL( CActive::EPriorityIdle );
-
- // Create asyncronous object to call when exit requires it.
- iBrowserAsyncExit = CBrowserAsyncExit::NewL( this );
- iStartedUp = ETrue;
- iSecureSiteVisited = EFalse;
-
- iPushMtmObserver = CBrowserPushMtmObserver::NewL( this );
- iPushMtmObserver->StartObserver();
- } //if (iStartedUp)
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ProcessCommandL(TInt aCommand)
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::ProcessCommandL(TInt aCommand)
- {
- MEikAppUiFactory* appUiFactory = (iEikonEnv)->AppUiFactory();
- if (appUiFactory->MenuBar())
- {
- StopDisplayingMenuBar();
- }
- CAknViewAppUi::ProcessCommandL(aCommand);
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::HandleCommandL()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::HandleCommandL(TInt aCommand)
- {
- // Default handling for all the thingies.
- switch (aCommand)
- {
- case EEikCmdExit:
- {
- ExitBrowser ( IsAppShutterActive() );
- break;
- }
- case EAknSoftkeyExit:// closes the whole application chain if embedded browser
- case EAknCmdExit:
- {
- if ( IsEmbeddedModeOn() )
- {
- CAknEnv::RunAppShutter();
- break;
- }
- else
- {
- ExitBrowser ( ETrue ) ;
- break;
- }
- }
- //Fix for TSW error ICHV-75UFKZ
- case EWmlCmdUserExit://closes the current browser instance only
- case EWmlCmdCloseBrowser:
- {
- ExitBrowser ( ETrue );
- break;
- }
- case EWmlCmdChangeConnection :
- {
- ChangeConnectionL();
- break;
- }
- case EWmlCmdPreferences:
- {
- SetViewToBeActivatedIfNeededL( KUidBrowserSettingsViewId );
- break;
- }
- case EWmlCmdPreferencesToolbar:
- {
- SetViewToBeActivatedIfNeededL( KUidBrowserSettingsViewId, KUidSettingsGotoToolbarGroup.iUid );
- break;
- }
- case EWmlCmdFavourites:
- {
- SetViewToBeActivatedIfNeededL( KUidBrowserBookmarksViewId );
- break;
- }
- case EWmlCmdSearchWeb:
- {
- LoadSearchPageL();
- break;
- }
- case EWmlCmdReload:
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandReload +
- (TInt)TBrCtlDefs::ECommandIdBase );
- break;
- }
-#ifdef BRDO_SINGLE_CLICK_ENABLED_FF
- case EWmlCmdSetAsHomePage:
- {
- ContentView()->HandleCommandL(EWmlCmdSetAsHomePage);
- break;
- }
-#endif
- case EAknSoftkeyBack:
- case EWmlCmdBack:
- {
- HistoryLoadPrevious();
- break;
- }
- case EWmlCmdBackToFeedsView:
- {
- //Note: iPreviousView in this case will always be one of the Feeds view.
- //In general iPreviousView holds the UID of the previous view.
- SetViewToBeActivatedIfNeededL( iPreviousView );
- break;
- }
- case EWmlCmdClearTheCache:
- {
- ClearTheCacheL(ETrue, ETrue);
- break;
- }
- case EWmlCmdDeleteCookies:
- {
- DeleteCookiesL();
- TBrowserDialogs::InfoNoteL(
- R_BROWSER_OK_NOTE, R_QTN_BROWSER_NOTE_COOKIES_DELETED );
- break;
- }
-
- case EWmlCmdClearAllPrivacy:
- {
- ClearAllPrivacyL();
- break;
- }
-
- case EWmlCmdClearHistory:
- {
- ClearHistoryWithPromptL();
- break;
- }
-
- case EWmlCmdClearFormAndPasswd:
- {
- ClearFormAndPasswdDataL(ETrue);
- break;
- }
-
- case EWmlCmdLaunchHomePage:
- {
- if (!IsLaunchHomePageDimmedL())
- {
- LaunchHomePageL( /* EFalse */ );
- }
- break;
- }
- case EWmlCmdDisconnect :
- {
- DisconnectL();
- TBrowserDialogs::InfoNoteL(
- R_BROWSER_INFO_NOTE, R_WML_DISCONNECT );
- break;
- }
- case EWmlCmdCancelFetch:
- {
- if (SpecialLoadObserver().IsConnectionStarted()) // If Connection request is in processing
- { // try to Cancel.
- SpecialLoadObserver().CancelConnection();
- Connection().Disconnect();
- }
- else
- {
- CancelFetch( ETrue );
- }
- break;
- }
- case EWmlCmdPageInfo:
- {
- CSessionAndSecurity* security = CSessionAndSecurity::NewLC(*this);
- security->ShowPageInfoL();
- CleanupStack::PopAndDestroy(); // security
- break;
- }
- case EWmlCmdInfoSession:
- {
- CSessionAndSecurity* session = CSessionAndSecurity::NewLC(*this);
- session->ShowSessionInfoL();
- CleanupStack::PopAndDestroy(); // session
- break;
- }
- case EWmlCmdInfoSecurity:
- {
- CSessionAndSecurity* security = CSessionAndSecurity::NewLC(*this);
- security->ShowSecurityInfoL();
- CleanupStack::PopAndDestroy(); // security
- break;
- }
- // browser engine specific command
-#ifdef __SERIES60_HELP
-
- case EAknCmdHelp:
- {
- HlpLauncher::LaunchHelpApplicationL
- ( iEikonEnv->WsSession(), AppHelpContextL() );
- break;
- }
-
-#endif //__SERIES60_HELP
-
- case EWmlCmdForward:
- {
- HistoryLoadNext();
- break;
- }
-
- case EWmlCmdRotateDisplay:
- {
- if ( Orientation() == EAppUiOrientationPortrait )
- {
- SetOrientationL(EAppUiOrientationLandscape);
- }
- else if (Orientation() == EAppUiOrientationLandscape)
- {
- SetOrientationL(EAppUiOrientationPortrait);
- }
- else // EAppUiOrientationUnspecified
- {
- TRect rect = ApplicationRect();
- TInt width = rect.Width();
- TInt height = rect.Height();
-
- if (width > height)
- {
- SetOrientationL(EAppUiOrientationPortrait);
- }
- else
- {
- SetOrientationL(EAppUiOrientationLandscape);
- }
- }
- if(ContentView()->KeymapIsUp())
- {
- ContentView()->RedrawKeymap();
- }
- break;
- }
-
- case EWmlCmdAboutProduct:
- {
- // get version info from browser control and display it
- ShowNameAndVersionL();
- break;
- }
- case EWmlCmdProductUpdate:
- {
- /*if(!iAppUpdate)
- {
- iAppUpdate = CBrowserAppUpdate::NewL();
- }
- iAppUpdate->CheckUpdates();*/
- break;
- }
-
- //=====================================================================
- // Multiple Windows Support
- //
- case EWmlCmdSwitchWindow:
- {
- if(WindowMgr().WindowCount() > 1)
- {
- // use switch window tab view if pageoverview bitmaps are available
- if (Preferences().UiLocalFeatureSupported( KBrowserGraphicalPage ))
- {
- SetViewToBeActivatedIfNeededL( KUidBrowserWindowSelectionViewId );
- }
- else
- {
- SwitchWindowL();
- }
- }
- break;
- }
- case EWmlCmdCloseWindow:
- {
- if ( IsEmbeddedInOperatorMenu() )
- {
- ExitBrowser( ETrue );
- }
- else
- {
- CloseWindowL();
- }
- break;
- }
- case EWmlCmdAllowPopups:
- {
- // Add url to whitelist
- HBufC* url( WindowMgr().CurrentWindow()->BrCtlInterface().
- PageInfoLC( TBrCtlDefs::EPageInfoUrl ) );
- PopupEngine().AddUrlToWhiteListL( *url );
- CleanupStack::PopAndDestroy( url );
- break;
- }
- case EWmlCmdBlockPopups:
- {
- // Remove from whitelist
- HBufC* url( WindowMgr().CurrentWindow()->BrCtlInterface().
- PageInfoLC( TBrCtlDefs::EPageInfoUrl ) );
- PopupEngine().RemoveUrlFromWhiteListL( *url );
- CleanupStack::PopAndDestroy( url );
- break;
- }
- case EWmlCmdShowAnchorHref:
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandShowAnchorHref );
- break;
- }
- case EWmlCmdSaveToGallery:
- {
- SaveFocusedImageToGalleryL();
- break;
- }
- case EWmlCmdOpenToViewer:
- {
- TBrCtlImageCarrier* imageCarrier = BrCtlInterface().FocusedImageLC();
- if (imageCarrier)
- {
- CArrayFixFlat<TBrCtlImageCarrier>* imageArray = new( ELeave ) CArrayFixFlat<TBrCtlImageCarrier>(1);
- CleanupStack::PushL(imageArray);
- imageArray->AppendL(*imageCarrier);
- iDialogsProvider->DialogDisplayPageImagesL( *imageArray );
- CleanupStack::PopAndDestroy(2); // imageArray, imageCarrier
- }
- break;
- }
- case EWmlCmdSaveUrlAsBookmark:
- {
- HBufC* url = BrCtlInterface().PageInfoLC(TBrCtlDefs::EPageInfoFocusedNodeUrl);
- ContentView()->AddNewBookmarkL(EFalse, url);
- CleanupStack::PopAndDestroy(); // url
- break;
- }
- case EWmlCmdSmartLinkMakeCall:
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandSmartLinkMakeCall );
- break;
- }
- case EWmlCmdSmartLinkSendEmail:
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandSmartLinkSendEmail );
- break;
- }
- case EWmlCmdSmartLinkSendSms:
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandSmartLinkSendMessage );
- break;
- }
- case EWmlCmdSmartLinkAddToContacts:
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandSmartLinkAddToPhoneBook );
- break;
- }
- case EWmlCmdLoadFocusedImage:
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandLoadFocusedImage );
- break;
- }
- case EWmlCmdLoadImagesOnly:
- {
- iPreferences->SetAutoLoadContentL(EWmlSettingsAutoloadImagesNoFlash);
- break;
- }
- case EWmlCmdLoadImagesAndFlash:
- {
- iPreferences->SetAutoLoadContentL(EWmlSettingsAutoloadAll);
- break;
- }
- case EWmlCmdOneStepBack:
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase + (TInt)TBrCtlDefs::ECommandOneStepBack );
- break;
- }
- case EEikCmdEditPaste:
- {
- TKeyEvent keyEvent;
- keyEvent.iCode = EKeyF18; //member of TKeyCode
- keyEvent.iScanCode = EEikCmdEditPaste;
- keyEvent.iModifiers = EModifierCtrl;
- keyEvent.iRepeats = 0;
- TRAP_IGNORE( BrCtlInterface().OfferKeyEventL(keyEvent, EEventKey));
- }
- break;
- //=====================================================================
- default:
- {
- if( iStartedUp )
- {
- // pass to Browser Control
- BrCtlInterface().HandleCommandL( aCommand );
- }
- break;
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ActiveView()
-// -----------------------------------------------------------------------------
-//
-CBrowserViewBase* CBrowserAppUi::ActiveView()
- {
- TVwsViewId activeViewId;
- TInt err = GetActiveViewId( activeViewId );
-
- if ( !err )
- {
- return STATIC_CAST( CBrowserViewBase*, View(activeViewId.iViewUid) );
- }
- else
- {
- //We should not panic
- //On 3.0 wk40 it was observed that GetActiveViewId returned with KErrNotFound
- //in case Browser was in the background
- //Symbian error?
- return NULL;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SetRequestedAP()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SetRequestedAP( TInt aAp )
- {
- iRequestedAp = aAp;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::IsPageLoaded()
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::IsPageLoaded()
- {
- TBool ret( EFalse );
- TInt winCount( WindowMgr().WindowCount() );
-
- // at least 2 window -> there is a page loaded
- if( winCount > 1 )
- {
- ret = ETrue;
- }
- // 1 window with a loaded content
- else if( winCount == 1 )
- {
- // This checks to see if a dialog is launched and if that is the case, then
- // the current window is being used, hence returning true.
- if( iDialogsProvider->IsDialogLaunched() )
- {
- ret = ETrue;
- }
- else
- {
- ret = WindowMgr().IsContentExist();
- }
- }
- // else (winCount == 0), no content view -> no page loaded
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::Fetching()
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::Fetching() const
- {
- // TO DO:
- // use load obs., remove ifetchstate from this class and use from loadobs.
- // iLoadState
- //return ( iFetchState == MFetchObserver::ELoadStart );
- return ( LoadObserver().LoadState() != CBrowserLoadObserver::ELoadStateIdle );
- }
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ContentDisplayed()
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::ContentDisplayed() const
- {
- return ( LoadObserver().ContentDisplayed() );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SetContentDisplayed()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SetContentDisplayed(TBool aValue)
- {
- LoadObserver().SetContentDisplayed( aValue );
- }
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::FetchBookmarkL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::FetchBookmarkL( TInt aBookmarkUid )
- {
- SetViewToReturnOnClose( KUidBrowserBookmarksViewId );
- if ( aBookmarkUid == KFavouritesStartPageUid )
- {
- TUint defaultAp = Preferences().DefaultAccessPoint();
- if ( defaultAp != KWmlNoDefaultAccessPoint ) // There is no access point defined
- {
- CApAccessPointItem* apItem = Preferences().AllPreferencesL().iDefaultAPDetails;
- if ( apItem )
- {
- const HBufC* currentHP = apItem->ReadConstLongTextL( EApWapStartPage );
- //TPtrC currentHP(apItem->StartPage()); // Get the start page of the access point.
- TFavouritesWapAp accessPoint;
-
- FetchL( *currentHP, KNullDesC, KNullDesC, accessPoint,
- CBrowserLoadObserver::ELoadUrlTypeStartPage ); // Fetch the start page.
- }
- }
- }
- else
- {
- RFavouritesDb db;
- User::LeaveIfError( db.Open( iFavouritesSess, KBrowserBookmarks ) );
- CleanupClosePushL<RFavouritesDb>( db );
-
- CFavouritesItem* item = CFavouritesItem::NewLC();
- User::LeaveIfError( db.Get( aBookmarkUid, *item ) );
-
- FetchBookmarkL( *item );
- CleanupStack::PopAndDestroy( 2 ); // item, db
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::FetchBookmarkL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::FetchBookmarkL( const CFavouritesItem& aBookmarkItem )
- {
- SetViewToReturnOnClose( KUidBrowserBookmarksViewId );
- if ( Util::CheckBookmarkApL( *this, aBookmarkItem.WapAp()) )
- FetchL
- (
- aBookmarkItem.Url() ,
- aBookmarkItem.UserName(),
- aBookmarkItem.Password(),
- aBookmarkItem.WapAp(),
- CBrowserLoadObserver::ELoadUrlTypeOther
- );
- else
- TBrowserDialogs::ErrorNoteL( R_WML_INVALID_AP );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SetViewToBeActivatedIfNeededL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SetViewToBeActivatedIfNeededL( TUid aUid, TInt aMessageId )
- {
- CBrowserAppDocument* doc = STATIC_CAST(CBrowserAppDocument*, Document());
-
- if((iCurrentView != aUid) && (aUid != KUidBrowserSettingsViewId))
- {
- iPreviousView = iCurrentView;
- iCurrentView = aUid;
- }
-
- //Check view id validity first
- if ( aUid == KUidBrowserNullViewId )
- {
- SetLastActiveViewId( KUidBrowserBookmarksViewId );
- SetViewToBeActivatedIfNeededL( LastActiveViewId() );
- return;
- }
-
- if ( ( aUid != KUidBrowserContentViewId ) &&
- ( LastActiveViewId() == KUidBrowserContentViewId ) )
- {
- ContentView()->SetFullScreenOffL();
- }
-
- if ( iWindowManager->ContentView()->FullScreenMode() )
- {
- if ( aUid == KUidBrowserFeedsFeedViewId )
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase +
- (TInt)TBrCtlDefs::ECommandLeaveFullscreenBrowsing );
- }
-
- else if ( aUid != KUidBrowserFeedsTopicViewId &&
- aUid != KUidBrowserFeedsFolderViewId &&
- aUid != KUidBrowserBookmarksViewId )
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandIdBase +
- (TInt)TBrCtlDefs::ECommandEnterFullscreenBrowsing );
- }
- }
-
-
- if ( iIsForeground )
- {
- if ( aUid == KUidBrowserSettingsViewId )
- {
- CEikStatusPane* sp = STATIC_CAST( CAknAppUi*,
- CEikonEnv::Static()->EikAppUi() )
- ->StatusPane();
- sp->DrawNow();
- }
-
- ActivateLocalViewL( aUid, TUid::Uid( aMessageId ), KNullDesC8 );
- }
- else
- {
- iViewToBeActivatedIfNeeded = aUid;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::LastActiveViewId
-// -----------------------------------------------------------------------------
-//
-TUid CBrowserAppUi::LastActiveViewId() const
- {
- return iLastViewId;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SetLastActiveViewId
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SetLastActiveViewId( TUid aUid )
- {
-LOG_ENTERFN("CBrowserAppUi::SetLastActiveViewId");
- LOG_WRITE_FORMAT(" SetLastActiveViewId: %d", aUid);
- iLastViewId = aUid;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ExitInProgress
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::ExitInProgress() const
- {
- return iExitInProgress;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ExitInProgress
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SetExitInProgress( TBool aValue )
- {
- iExitInProgress = aValue;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::IsConnecting
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::IsConnecting() const
- {
- return ( LoadObserver().LoadState() != CBrowserLoadObserver::ELoadStateIdle );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::HandleForegroundEventL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::HandleForegroundEventL( TBool aForeground )
- {
- // Handle this event only if the browser is started up
- if ( !StartedUp() )
- {
- return;
- }
- iIsForeground = IsForeground();
- if( iIsForeground )
- {
- if (iViewToBeActivatedIfNeeded.iUid)
- {
- ActivateLocalViewL( iViewToBeActivatedIfNeeded );
- }
- else
- {
- TVwsViewId activeViewId;
- if( ( GetActiveViewId( activeViewId ) == KErrNone ) &&
- ( LastActiveViewId() != activeViewId.iViewUid ) )
- {
- // LastActiveViewId() might return with 0!
- TRAP_IGNORE( ActivateLocalViewL( LastActiveViewId() ) );
- }
- }
- }
- iViewToBeActivatedIfNeeded.iUid = 0;
- CAknViewAppUi::HandleForegroundEventL( aForeground );
-
- if( iIsForeground )
- {
- // We need to refresh the softkeys
- UpdateCbaL();
- if ( Preferences().FullScreen() == EWmlSettingsFullScreenFullScreen )
- {
- ContentView()->UpdateFullScreenL();
- }
-
- if( !Fetching() )
- {
- Display().StopProgressAnimationL();
- }
- }
-
- if (iWindowManager)
- {
- iWindowManager->SendCommandToAllWindowsL( iIsForeground
- ? (TInt)TBrCtlDefs::ECommandAppForeground + (TInt)TBrCtlDefs::ECommandIdBase
- : (TInt)TBrCtlDefs::ECommandAppBackground + (TInt)TBrCtlDefs::ECommandIdBase);
- }
-
- // if browser comes to foreground and exit is requested,
- // asyncronous exit is started
- if( iIsForeground && iExitFromEmbeddedMode && !IsEmbeddedInOperatorMenu() )
- {
- iBrowserAsyncExit->Start();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::FetchL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::FetchL(
- const TDesC& aUrl,
- const TDesC& aUsername,
- const TDesC& aPassword,
- const TFavouritesWapAp& aAccessPoint,
- CBrowserLoadObserver::TBrowserLoadUrlType aUrlType )
- {
-LOG_ENTERFN("CBrowserAppUi::FetchL");
- // Let's cancel the previous fetch if any
- if ( Fetching() )
- {
- CancelFetch();
- }
-
- // iDoNotRestoreContentFlag = EFalse;
-
- TInt toPop = 0;
- TUriParser uriParser;
- TInt err = uriParser.Parse(aUrl);
- if ( !err && aUrl.Length() )
- {
- // check url for missing scheme and add default scheme if needed
- HBufC* url = NULL;
- HBufC* resultUrlBuf = NULL;
- //find ://
- TPtrC scheme = uriParser.Extract( EUriScheme );
- // add http:// scheme as default if it is missing
- if( scheme.Length() == 0 )
- {
- //put the "http://" schema before the string
- url = HBufC::NewLC( aUrl.Length() + KDefaultSchemaLength );
- url->Des().Copy( KDefaultSchema );
- url->Des().Append( aUrl );
- ++toPop; // url
- resultUrlBuf = CreateFullUrlLC( url->Des(), aUsername, aPassword );
- LogRequestedPageToRecentUrlL( url->Des() );
- }
- else
- {
- resultUrlBuf = CreateFullUrlLC( aUrl, aUsername, aPassword );
- LogRequestedPageToRecentUrlL( aUrl );
- }
- ++toPop; // resultUrlBuf
-
-
- if ( aAccessPoint.IsNull() || aAccessPoint.IsDefault() || (!Util::IsValidAPFromParamL( *this, aAccessPoint.ApId() )) )
- {
- if ( (Preferences().AccessPointSelectionMode() == EConnectionMethod) ||
- (Preferences().AccessPointSelectionMode() == EAlwaysAsk) )
- {
- iRequestedAp = Preferences().DefaultAccessPoint();
- }
- else if ( Preferences().AccessPointSelectionMode() == EDestination )
- {
- // for bug fix MLAN-7EKFV4
- iRequestedAp = KWmlNoDefaultAccessPoint;
- }
- }
- else
- {
- iRequestedAp = aAccessPoint.ApId();
- }
-#ifndef __WINSCW__ //On WINS we don't want this dlg to come up
- //as the ConnMan will present us with a selection
- BROWSER_LOG( ( _L( "requestedAp: %d" ), iRequestedAp ) );
- // it's ok to assign in the case of EDest, since CBrCtl doesn't use the apId passed in LoadUrlL()
- TUint32 IAPid = iRequestedAp;
- TUint32 defaultSnap = iPreferences->DefaultSnapId();
- // if no AP or SNAP is defined, define it
- if( (iRequestedAp == KWmlNoDefaultAccessPoint && iPreferences->AccessPointSelectionMode() == EConnectionMethod) ||
- (defaultSnap == KWmlNoDefaultSnapId && iPreferences->AccessPointSelectionMode() == EDestination) )
- {
- StartPreferencesViewL( EShowAlwaysAsk | EShowDestinations | EShowConnectionMethods );
- }
- //Check AP and snap if it is still not defined, set always ask mode this case
- if ( (iRequestedAp == KWmlNoDefaultAccessPoint && iPreferences->AccessPointSelectionMode() == EConnectionMethod) ||
- (defaultSnap == KWmlNoDefaultSnapId && iPreferences->AccessPointSelectionMode() == EDestination) )
- {
- BROWSER_LOG( ( _L( "AP or SNAP was not added set to Always ask mode" ) ) );
- iPreferences->SetAccessPointSelectionModeL(EAlwaysAsk );
- }
- if ( iRequestedAp == KWmlNoDefaultAccessPoint )
- {
- // For all cases just set dummy id to IAPid not to let Ap engine or Ap util to leave
- // In the cases of EDest, EAA, since ap will not be used, it's ok to do so as well
- // In the case of EDest, need to preserve KWmlNoDefaultAccessPoint as the value
- // it'll be used in BrowserSpecialLoadObserver.cpp for for bug fix MLAN-7EKFV4
- if ( Preferences().AccessPointSelectionMode() != EDestination )
- {
- iRequestedAp = 2;
- }
- IAPid = 2;
- }
- else
- {
- BROWSER_LOG( ( _L( "AP added" ) ) );
- IAPid = Util::IapIdFromWapIdL( *this, iRequestedAp ); // Get currently active ap
- BROWSER_LOG( ( _L( "No AP 2" ) ) );
- }
-
-#else //we can use any numbers here
- // alr: snap on emulator should not exist; use cm mode instead?
- iRequestedAp = 2;
- TUint32 IAPid = 2;
-#endif //__WINSCW__
-
- err = KErrNone;
- BROWSER_LOG( ( _L( "Load the URL" ) ) );
-
- if ( iPreferences->SearchFeature() || iPreferences->ServiceFeature())
- {
- iSpecialSchemeinAddress = EFalse;
-
- HBufC* searchScheme = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack
- TPtr searchSchemePtr( searchScheme->Des() );
- ++toPop;
-
- HBufC* serviceScheme = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack
- TPtr serviceSchemePtr( serviceScheme->Des() );
- ++toPop;
-
- iPreferences->GetStringValueL( KBrowserSearchProviderUrl, KMaxHomePgUrlLength, searchSchemePtr );
- iPreferences->GetStringValueL( KBrowserServiceUrl, KMaxHomePgUrlLength, serviceSchemePtr );
-
- TInt err = uriParser.Parse(searchSchemePtr);
- if (!err)
- searchSchemePtr = uriParser.Extract( EUriScheme );
-
- err = uriParser.Parse(serviceSchemePtr);
- if (!err)
- serviceSchemePtr = uriParser.Extract( EUriScheme );
-
- if( scheme.Length() != 0 )
- {
- if( !scheme.Compare(serviceSchemePtr) || !scheme.Compare(searchSchemePtr) )
- {
- iSpecialSchemeinAddress = ETrue;
- TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) );
- }
- else
- {
- LoadObserver().DoStartLoad( aUrlType );
- TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) );
- }
- }
- }
- else
- {
- LoadObserver().DoStartLoad( aUrlType );
- TRAP( err, BrCtlInterface().LoadUrlL( resultUrlBuf->Des(), IAPid ) );
- }
-
- CleanupStack::PopAndDestroy(toPop); //resultUrlBuf and url if needed
- BROWSER_LOG( ( _L( "No AP 4 %d" ), err ) );
- if ( err != KErrNone )
- {
- CancelFetch();
- }
- }
-
- BROWSER_LOG( ( _L( "Check the result" ) ) );
- switch ( err )
- {
- case KErrNotFound:
- {
- (*(CBrowserBookmarksView*)View( KUidBrowserBookmarksViewId )).UpdateGotoPaneL();
- iCoeEnv->HandleError( KBrsrMalformedUrl );
- BROWSER_LOG( ( _L( "KErrNotFound" ) ) );
- break;
- }
- case KUriUtilsErrInvalidUri: // return value of TUriParser::Parse
- {
- (*(CBrowserBookmarksView*)View( KUidBrowserBookmarksViewId )).UpdateGotoPaneL();
- iCoeEnv->HandleError( KBrsrUnknownScheme );
- BROWSER_LOG( ( _L( "KUriUtilsErrInvalidUri" ) ) );
- break;
- }
- case KErrNone:
- {
- BROWSER_LOG( ( _L( "KErrNone" ) ) );
- ContentView()->ResetPreviousViewFlag();
- break;
- }
- case KErrCancel:
- {
- BROWSER_LOG( ( _L( "KErrCancel" ) ) );
- // do nothing, it is already cancelled by CancelFetch().
- break;
- }
- default:
- {
- BROWSER_LOG( ( _L( "default" ) ) );
- User::Leave( err ); // pass error code to caller
- break;
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ExitBrowser()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::ExitBrowser( TBool aUserInitiated )
- {
- LOG_ENTERFN("CBrowserAppUi::ExitBrowser");
-
- TInt err( KErrNone );
- TBool isStandAlone = !IsEmbeddedModeOn();
- BROWSER_LOG( ( _L( " isStandAlone: %d" ), isStandAlone ) );
-
- if( isStandAlone && aUserInitiated )
- {
- if( !BrCtlInterface().OkToExit() )
- {
- return;
- }
- }
-
- //If launch with parameters is in progress, do not exit now
- //as it can lead to synchronisation problems in embedded mode
- if ( iParametrizedLaunchInProgress == 1 )
- {
- BROWSER_LOG( ( _L( " iParametrizedLaunchInProgress" ) ) );
- return;
- }
-
- // Operator feature - Display confirmation note on exit only if exit is initiated by user.
- // Skip displaying exit confirmation if exit is initiated from fast swap window.
- BROWSER_LOG( ( _L( " iPreferences: %d" ), iPreferences ) );
- if ( iPreferences->QueryOnExit() && aUserInitiated )
- {
- BROWSER_LOG( ( _L( " iPreferences->QueryOnExit()" ) ) );
- TBool confirmdialog( EFalse );
- TRAP( err, confirmdialog = TBrowserDialogs::ConfirmQueryYesNoL( R_TEXT_WML_EXIT_CONFIRM ) );
- if ( !confirmdialog )
- {
- return;
- }
- }
-
- //delete attacment from mailer if existing
- CCoeEnv::Static()->FsSession().Delete( KAttachment() );
-
- BROWSER_LOG( ( _L(" iConnection: %d"), iConnection ) );
- BROWSER_LOG( ( _L(" iExitFromEmbeddedMode: %d"), iExitFromEmbeddedMode ) );
- // if browser is embedded, should not call Exit(),
- // just delete the object, otherwise leave occurs.
- if( ( IsEmbeddedInOperatorMenu() || IsEmbeddedModeOn() ) &&
- !ExitInProgress() &&
- ((LoadObserver().LoadUrlType() == CBrowserLoadObserver::ELoadUrlTypeEmbeddedBrowserWithUrl) ||
- (LoadObserver().LoadUrlType() == CBrowserLoadObserver::ELoadUrlTypeOther) ) )
- // ELoadUrlTypeEmbeddedBrowserWithUrl is typical for load via Phonebook, MMS, OperatorMenu
- // ELoadUrlTypeOther is typical via Media download since those are via GotoPane entered urls
- {
- // Simulate an escape key event in order to close any open resources (for example an open dialog)
- TKeyEvent keyEvent;
- keyEvent.iModifiers = 0;
- keyEvent.iRepeats = 0;
- keyEvent.iCode = EKeyEscape;
- keyEvent.iScanCode = EStdKeyEscape;
- TRAP_IGNORE(iCoeEnv->SimulateKeyEventL( keyEvent, EEventKey ));
-
- // force not to load Exit() when next time call this function,
- // just delete the object
- SetExitFromEmbeddedMode( ETrue );
- SetExitInProgress( ETrue );
- BROWSER_LOG( ( _L( " iBrowserAsyncExit->Start()" ) ) );
- iBrowserAsyncExit->Start();
- }
- else if( iExitFromEmbeddedMode )
- {
- BROWSER_LOG( ( _L( " delete this;" ) ) );
- if ( iConnection )
- {
- TRAP_IGNORE( SendDisconnectEventL() );
- iConnection->Disconnect();
-#ifdef __RSS_FEEDS
- BROWSER_LOG( ( _L( " iFeedsClientUtilities->DisconnectFeedsViewL()" ) ) );
- TRAP_IGNORE( iFeedsClientUtilities->DisconnectFeedsViewL() );
- //notify feeds engine to close the connection
- TRAP_IGNORE( iFeedsClientUtilities->DisconnectManualUpdateConnectionL() );
-#endif
- }
- PrepareToExit();
- Exit();
- }
- else
- {
- BROWSER_LOG( ( _L( " Exit()" ) ) );
- if ( iConnection )
- {
- TRAP_IGNORE( SendDisconnectEventL() );
- iConnection->Disconnect();
-#ifdef __RSS_FEEDS
- BROWSER_LOG( ( _L( " iFeedsClientUtilities->DisconnectFeedsViewL()" ) ) );
- TRAP_IGNORE( iFeedsClientUtilities->DisconnectFeedsViewL() );
- //notify feeds engine to close the connection
- TRAP_IGNORE( iFeedsClientUtilities->DisconnectManualUpdateConnectionL() );
-#endif
- }
- Exit();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::Display
-// -----------------------------------------------------------------------------
-//
-MDisplay& CBrowserAppUi::Display() const
- {
- CBrowserWindow *window = iWindowManager->CurrentWindow();
- __ASSERT_DEBUG( window, Util::Panic( Util::EUninitializedData ) );
- return window->Display();
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SoftkeysObserver()
-// -----------------------------------------------------------------------------
-//
-CBrowserSoftkeysObserver& CBrowserAppUi::SoftkeysObserver() const
- {
- CBrowserWindow *window = iWindowManager->CurrentWindow();
- __ASSERT_DEBUG( window, Util::Panic( Util::EUninitializedData ) );
- return window->SoftkeysObserver();
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::CommsModel
-// -----------------------------------------------------------------------------
-//
-MCommsModel& CBrowserAppUi::CommsModel() const
- {
- __ASSERT_DEBUG( iCommsModel,
- Util::Panic( Util::EUninitializedData ) );
- return *iCommsModel;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::Preferences
-// -----------------------------------------------------------------------------
-//
-MPreferences& CBrowserAppUi::Preferences() const
- {
- __ASSERT_DEBUG( iPreferences,
- Util::Panic( Util::EUninitializedData ) );
- return *iPreferences;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::Connection
-// -----------------------------------------------------------------------------
-//
-MConnection& CBrowserAppUi::Connection() const
- {
- __ASSERT_DEBUG( iConnection,
- Util::Panic( Util::EUninitializedData ) );
- return *iConnection;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::BrCtlInterface
-// -----------------------------------------------------------------------------
-CBrCtlInterface& CBrowserAppUi::BrCtlInterface() const
- {
- CBrowserWindow *window = iWindowManager->CurrentWindow();
- __ASSERT_DEBUG( window, Util::Panic( Util::EUninitializedData ) );
- return window->BrCtlInterface();
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::LoadObserver
-// -----------------------------------------------------------------------------
-//
-CBrowserLoadObserver& CBrowserAppUi::LoadObserver() const
- {
- CBrowserWindow *window = iWindowManager->CurrentWindow();
- __ASSERT_DEBUG( window, Util::Panic( Util::EUninitializedData ) );
- return window->LoadObserver();
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SpecialLoadObserver
-// -----------------------------------------------------------------------------
-//
-CBrowserSpecialLoadObserver& CBrowserAppUi::SpecialLoadObserver() const
- {
- CBrowserWindow *window = iWindowManager->CurrentWindow();
- __ASSERT_DEBUG( window, Util::Panic( Util::EUninitializedData ) );
- return window->SpecialLoadObserver();
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::DialogsProvider
-// -----------------------------------------------------------------------------
-//
-CBrowserDialogsProvider& CBrowserAppUi::DialogsProvider() const
- {
- return *iDialogsProvider;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::PopupEngine
-// -----------------------------------------------------------------------------
-//
-CBrowserPopupEngine& CBrowserAppUi::PopupEngine() const
- {
- return *iPopupEngine;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::WindowMgr()
-// -----------------------------------------------------------------------------
-//
-CBrowserWindowManager& CBrowserAppUi::WindowMgr() const
- {
- return *iWindowManager;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::IsCancelFetchAllowed
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::IsCancelFetchAllowed() const
- {
- return ETrue;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::UpdateCbaL()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::UpdateCbaL()
- {
- if( ActiveView() )
- {
- ActiveView()->UpdateCbaL();
- }
- }
-
-void CBrowserAppUi::LogAccessToRecentUrlL( CBrCtlInterface& aBrCtlInterface )
- {
- if ((ADAPTIVEBOOKMARKS)&&(!(Preferences().AdaptiveBookmarks()==EWmlSettingsAdaptiveBookmarksOff )))
- {
- HBufC* url = aBrCtlInterface.PageInfoLC( TBrCtlDefs::EPageInfoUrl );
- HBufC* name = aBrCtlInterface.PageInfoLC( TBrCtlDefs::EPageInfoTitle );
- if( url && url->Length() )
- {
- // If url is same as the one in the store delete it because the url will be rewritten
- // along with the name
- iRecentUrlStore->DeleteData(*url);
-
- TInt index;
- index = url->Des().LocateReverse(KSlash);
- // If the only difference between the url in the store and the one we are writing is a "/"
- // at the end of the url, delete the one in the store because it will be rewritten along
- // with the name
- if (index == url->Length()-1)
- {
- HBufC* urlwoslash = HBufC::NewLC( url->Length() );
- urlwoslash->Des().Copy( *url );
- urlwoslash->Des().Delete(url->Length() -1, 2);
-
- iRecentUrlStore->DeleteData(*urlwoslash);
-
- CleanupStack::PopAndDestroy(); //urlwoslash
- }
-
- if (name && name->Length())
- {
- iRecentUrlStore->SaveDataL(*url,*name);
- }
- else
- {
- if (url->Length() > KFavouritesMaxName)
- {
- // name will be the url but it needs to be compressed to fit max name length
- HBufC* cname = HBufC::NewLC(KFavouritesMaxName);
- TInt edgeStringLen = ((KFavouritesMaxName / 2) - 3);
- TPtrC cnameRight( url->Right( edgeStringLen ) );
- TPtrC cnameLeft( url->Left( edgeStringLen ));
- TPtr cnameDes = cname->Des();
-
- cnameDes.Append( cnameLeft );
- cnameDes.AppendFill( TChar(KDot),5 ); // '.....'
- cnameDes.Append( cnameRight );
- iRecentUrlStore->SaveDataL(*url,*cname);
- CleanupStack::PopAndDestroy();//cname
- }
- else
- {
- iRecentUrlStore->SaveDataL(*url,*url);
- }
- }
- }
- CleanupStack().PopAndDestroy(2); // url, name
- }
- }
-
-void CBrowserAppUi::LogRequestedPageToRecentUrlL( const TDesC& aUrl )
- {
- if ((ADAPTIVEBOOKMARKS)&&(!(Preferences().AdaptiveBookmarks()==EWmlSettingsAdaptiveBookmarksOff )))
- {
- HBufC *url = HBufC::NewLC( aUrl.Length() );
- url->Des().Copy( aUrl );
-
- if( url && url->Length() )
- {
- if (url->Length() > KFavouritesMaxName)
- {
- // name will be the url but it needs to be compressed to fit max name length
- HBufC* cname = HBufC::NewLC(KFavouritesMaxName);
- TInt edgeStringLen = ((KFavouritesMaxName / 2) - 3);
- TPtrC cnameRight( url->Right( edgeStringLen ) );
- TPtrC cnameLeft( url->Left( edgeStringLen ));
- TPtr cnameDes = cname->Des();
-
- cnameDes.Append( cnameLeft );
- cnameDes.AppendFill( TChar(KDot),5 ); // '.....'
- cnameDes.Append( cnameRight );
- iRecentUrlStore->SaveDataL(*url,*cname);
- CleanupStack::PopAndDestroy();//cname
- }
- else
- {
- iRecentUrlStore->SaveDataL(*url,*url);
- }
- }
- CleanupStack().PopAndDestroy(); // url
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SwitchWindowL()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SwitchWindowL()
- {
-LOG_ENTERFN("CBrowserAppUi::SwitchWindowL");
- CArrayFixFlat<CWindowInfo*>* windowBuf = iWindowManager->GetWindowInfoL( this );
- CleanupStack::PushL( windowBuf );
-
- // Open 'Switch Window' selection dialog
- HBufC* title = StringLoader::LoadLC( R_BROWSER_SWITCH_WINDOW_HEADER );
-
- CArrayFixFlat<TBrCtlSelectOptionData>* optDataArray = new ( ELeave )
- CArrayFixFlat<TBrCtlSelectOptionData>( KGranularityMedium );
- CleanupStack::PushL( optDataArray );
-
- TInt i( 0 );
- TInt numWindows = windowBuf->Count();
-
-LOG_WRITE_FORMAT("Window's count: %d", numWindows );
- for ( i = 0; i < numWindows; ++i )
- {
- TBrCtlSelectOptionData optData( *((*windowBuf)[i]->iWindowText),
- (*windowBuf)[i]->iCurrent,
- EFalse,
- EFalse );
- optDataArray->AppendL( optData );
- }
-
- TBool ret = DialogsProvider().DialogSelectOptionL( *title,
- ESelectTypeSingle,
- *optDataArray );
- if ( ret )
- {
- for( i = 0; i < numWindows; ++i)
- {
- if( (*optDataArray)[i].IsSelected() )
- {
- LOG_WRITE_FORMAT("Selected window: %d", (*windowBuf)[i]->iWindowId );
- iWindowManager->SwitchWindowL( (*windowBuf)[i]->iWindowId );
- break;
- }
- }
- }
- CleanupStack::PopAndDestroy( 3 ); // optDataArray, title, windowBuf
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SetCalledFromAnotherApp
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SetCalledFromAnotherApp( TBool aValue )
- {
- iCalledFromAnotherApp = aValue;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::CalledFromAnotherApp
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::CalledFromAnotherApp()
- {
- return iCalledFromAnotherApp;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::NoHomePageToBeLaunchedL
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::NoHomePageToBeLaunchedL()
- {
- LOG_ENTERFN("CBrowserAppUi::NoHomePageToBeLaunchedL");
- TWmlSettingsHomePage pgtype = iPreferences->HomePageType();
- TBool alwaysAskCase = (( Preferences().AccessPointSelectionMode() == EAlwaysAsk ) &&
- ( EWmlSettingsHomePageAccessPoint == pgtype ));
- BROWSER_LOG( ( _L( "pgtype: %d, alwaysAsk: %d" ), pgtype, alwaysAskCase ) );
-
- if( ( pgtype == EWmlSettingsHomePageBookmarks ) || alwaysAskCase )
- { // Can't load home page since set to Bookmarks or (AlwaysAsk AP and homepage set to AP homepage)
- return ETrue;
- }
- else
- {
- // now check for other cases where homepage string might be defined and will be used
- HBufC* buf = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack
- TPtr ptr( buf->Des() );
- TInt pgFound = Preferences().HomePageUrlL( ptr );
- CleanupStack::PopAndDestroy( buf );
- if (pgFound != KErrNone)
- { // no homepage string found
- return ETrue;
- }
- else
- { // homepage string was found
- return EFalse;
- }
- }
- }
-
-// CBrowserAppUi::ProcessCommandParametersL()
-// -----------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::ProcessCommandParametersL( TApaCommand aCommand,
- TFileName& /*aDocumentName*/ ,
- const TDesC8& /*aTail*/ )
- {
- LOG_ENTERFN("CBrowserAppUi::ProcessCommandParametersL");
- LOG_WRITE_FORMAT(" aCommand: %d", aCommand);
-
- // The browser is in embedded mode and it is not initialized yet
- if ( !StartedUp() )
- {
- return EFalse;
- }
-
- if ( aCommand == EApaCommandOpen )
- {
- //Startup parameters are given to browser at CBrowserAppDocument::OpenFileL().
- //- a part of shell starting (ConstructAppFromCommandLineL calls OpenFileL)
- }
-
- else if ( aCommand == EApaCommandRun )
- {
-
- if ( LastActiveViewId() == KUidBrowserNullViewId )
- {
- TBool specialSchemeInHomePageAddress = EFalse;
-
- if (NoHomePageToBeLaunchedL())
- {
- // No homepage to be launched so start browser in bookmarks view
- SetLastActiveViewId(KUidBrowserBookmarksViewId);
- }
- else if ( iPreferences->SearchFeature() || iPreferences->ServiceFeature())
- {
-
- HBufC* buf = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack
- TPtr ptr( buf->Des() );
- TInt pgFound( KErrNotFound );
- pgFound = Preferences().HomePageUrlL( ptr );
-
- HBufC* searchScheme = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack
- TPtr searchSchemePtr( searchScheme->Des() );
-
- HBufC* serviceScheme = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack
- TPtr serviceSchemePtr( serviceScheme->Des() );
-
- iPreferences->GetStringValueL( KBrowserSearchProviderUrl, KMaxHomePgUrlLength, searchSchemePtr );
- iPreferences->GetStringValueL( KBrowserServiceUrl, KMaxHomePgUrlLength, serviceSchemePtr );
-
-
- if( !ptr.Compare(serviceSchemePtr) || !ptr.Compare(searchSchemePtr) )
- {
- specialSchemeInHomePageAddress = ETrue;
- SetLastActiveViewId(KUidBrowserBookmarksViewId);
- TRAPD( err, FetchL( ptr, CBrowserLoadObserver::ELoadUrlTypeOther ) );
- }
- else
- {
- StartFetchHomePageL();
- }
- CleanupStack::PopAndDestroy( 3,buf );
- }
- else
- {
- StartFetchHomePageL();
- }
-
- if( !specialSchemeInHomePageAddress )
- {
- ActivateLocalViewL( LastActiveViewId() );
- }
- }
- }
- else if ( aCommand == EApaCommandViewActivate )
- // Get when activated from soft notification (Downloads List).
- // Must behave as in case of EApaCommandOpen, but no OpenFileL() is called.
- {
- ParseAndProcessParametersL( KNullDesC8 );
- }
- return EFalse;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::Static()
-// -----------------------------------------------------------------------------
-//
-CBrowserAppUi* CBrowserAppUi::Static()
- {
- return REINTERPRET_CAST( CBrowserAppUi*, CEikonEnv::Static()->EikAppUi() );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ParseAndProcessParametersL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::ParseAndProcessParametersL( const TDesC8& aDocumentName, TBool aDoFetch )
- {
- LOG_ENTERFN("CBrowserAppUi::ParseAndProcessParametersL");
- TInt err = KErrNone;
-
- TUid ViewToActivate = { 0 };
-
- HBufC8* params = NULL;
- TLex8 parameter(aDocumentName);
-
- // Here we check if the url contains control characters.
- TBool urlError( EFalse ); // If there is a Control caracter in the url.
- parameter.Mark(); // Save the start position in the string.
- while ( !parameter.Eos() && !urlError )
- {
- if ( parameter.Get().IsControl() )
- {
- urlError = ETrue;
- }
- }
- parameter.UnGetToMark(); // Now go back to the beginning of the string.
-
- //Check for parameter validity
- if( !parameter.Peek().IsDigit() || urlError ) //First char of aDocumentName is NOT a digit
- {
- if( ( aDocumentName.Locate( ':' ) > 0) && (!urlError) ) //There is a ":" character in aDocumentName (->probably a valid url)
- {
- //Add "4" + <space> before the given parameter to make the parameter legal for url launch
- _LIT8(KUrlId, "4 ");
- params = HBufC8::NewL(aDocumentName.Length() + 2 + 1);
- params->Des().Copy( KUrlId );
- params->Des().Append(aDocumentName);
- params->Des().ZeroTerminate();
- ViewToActivate = KUidBrowserContentViewId;
- }
- else
- {
- //Activate bookmarks view if parameters are invalid and browser is not embedded.
- // In embedded mode bookmarks are not shown, so if there is an
- // error in the url, we make the browser to pop up a
- // "Page not found" note, by defining a not existing url.
- if ( IsEmbeddedModeOn() )
- {
- params = HBufC8::NewL( 10 );
- params->Des().Copy(_L8("4 http://") );
- }
- else
- {
- params = HBufC8::NewL(aDocumentName.Length() + 1 );
- params->Des().Copy(aDocumentName);
- }
- params->Des().ZeroTerminate();
- ViewToActivate = KUidBrowserBookmarksViewId;
- }
- }
- else
- {
- params = HBufC8::NewL(aDocumentName.Length() + 1);
- params->Des().Copy(aDocumentName);
- params->Des().ZeroTerminate();
- ViewToActivate = KUidBrowserContentViewId;
- }
- CleanupStack::PushL( params );
-
- //Set view to activate if no view yet activated
- if ( LastActiveViewId() == KUidBrowserNullViewId )
- {
- SetLastActiveViewId(ViewToActivate);
- }
-
- CBrowserCommandLineParser8* command = CBrowserCommandLineParser8::NewL( *params );
- CleanupStack::PopAndDestroy( params );
- CleanupStack::PushL( command );
-
- //wait a while, contentview initializing itself
- WaitCVInit();
- switch ( command->Count() )
- {
- case 0:
- {
- SetViewToBeActivatedIfNeededL( LastActiveViewId() );
- break;
- }
- case 1:
- {
- if ( !aDocumentName.Compare( KLongZeroIdString ) )
- {
- // Long 0 is pressed and Browser is started up for the first time...
- // if no AP or SNAP is defined, define it
- TUint32 defaultAp = iPreferences->DefaultAccessPoint();
- TUint32 defaultSnap = iPreferences->DefaultSnapId();
- // AP or SNAP is not defined
- if( (defaultAp == KWmlNoDefaultAccessPoint && iPreferences->AccessPointSelectionMode() == EConnectionMethod) ||
- (defaultSnap == KWmlNoDefaultSnapId && iPreferences->AccessPointSelectionMode() == EDestination) )
- {
- StartPreferencesViewL( EShowAlwaysAsk | EShowDestinations | EShowConnectionMethods );
- }
- // If there is a homepage url then try to fetch it
- if ( !NoHomePageToBeLaunchedL() )
- {
- iLongZeroPressed = ETrue;
- FetchHomePageL();
- }
- else
- {
- ContentView()->SetFullScreenOffL();
- if ( !IsEmbeddedModeOn() )
- {
- SetLastActiveViewId( KUidBrowserBookmarksViewId );
- }
- }
- }
- SetViewToBeActivatedIfNeededL( LastActiveViewId() );
- break;
- }
- case 2:
- case 3:
- {
- // UID and wml adress and optional access point UID
-
- TUint typeId;
- TInt dataId;
- TLex8 param0( command->Param( 0 ) );
- TLex8 param1( command->Param( 1 ) );
- err = param0.Val( typeId );
- if ( !err )
- {
- BROWSER_LOG( ( _L( " typeId: %d" ), typeId ) );
-
- if ( typeId == KUrlId )
- { // FIX THIS!
- TUriParser8 uri8;
- err = uri8.Parse(command->Param(1)); // what if parsing fails?
- User::LeaveIfError(err);
- // Url decoding section was removed from here.
- HBufC* url = HBufC::NewL(command->Param(1).Length()+1);
- url->Des().Copy( command->Param(1) );
- CleanupStack::PushL(url);
- BROWSER_LOG( ( _L( " url: %S" ), url ) );
-
- TFavouritesWapAp accessPoint; // Initially "default".
- BROWSER_LOG( ( _L( " Count: %d" ), command->Count() ) );
- if ( command->Count() == 3 )
- {
- // URL Typeid, url, ap
- TUint ap;
- TLex8 param2( command->Param( 2 ) );
- err = param2.Val( ap );
- if ( !err )
- {
- BROWSER_LOG( ( _L( " ap: %d" ), ap ) );
- if (iSuppressAlwaysAsk)
- {
- // Always ask was temporarily disabled, enable it again
- iPreferences->SetAccessPointSelectionModeL(EAlwaysAsk);
-
- iSuppressAlwaysAsk = EFalse;
- }
-
- // Note: OTA Provisioning application requires the
- // KBrowserAccessPointSelectionMode key value to be
- // read directly from cenrep, rather than use the
- // cached cenrep value taken at browser initialization
- // time.
- TInt selectionMode;
-
- CRepository* repository = CRepository::NewLC( KCRUidBrowser );
- User::LeaveIfError( repository->Get( KBrowserAccessPointSelectionMode, selectionMode ) );
- CleanupStack::PopAndDestroy( repository );
-
- // If selectionMode cenrep value is always ask, then
- // temporarily change selection mode
- if ( EBrowserCenRepApSelModeAlwaysAsk == selectionMode )
- {
- iSuppressAlwaysAsk = ETrue;
- iPreferences->SetAccessPointSelectionModeL(EConnectionMethod);
- }
- accessPoint.SetApId( ap );
- SetCalledFromAnotherApp( ETrue );
- CBrowserLoadObserver::TBrowserLoadUrlType urlType =
- IsEmbeddedModeOn() ?
- CBrowserLoadObserver::ELoadUrlTypeEmbeddedBrowserWithUrl :
- CBrowserLoadObserver::ELoadUrlTypeOther;
- if( IsPageLoaded() &&
- !(WindowMgr().CurrentWindow()->HasWMLContent(EFalse)) &&
- Preferences().UiLocalFeatureSupported( KBrowserMultipleWindows ) &&
- !Preferences().UiLocalFeatureSupported( KBrowserMinimalMultipleWindows ))
- {
- // Cancel history view, mini map, toolbar or any other active control on the current window
- BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase );
- // there is already a window, so create a new one
- CBrowserWindow *win = WindowMgr().CreateWindowL( 0, &KNullDesC );
- if (win != NULL)
- {
-
- CleanupStack::PushL( win );
- WindowMgr().SwitchWindowL( win->WindowId() );
- TRAP( err, FetchL( *url,
- KNullDesC,
- KNullDesC,
- accessPoint,
- urlType ) );
- CleanupStack::Pop(); // win
- SetLastActiveViewId( KUidBrowserContentViewId );
- }
- }
- else
- {
- // Cancel history view, mini map, toolbar or any other active control on the current window
- BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase );
- TRAP( err, FetchL( *url,
- KNullDesC,
- KNullDesC,
- accessPoint,
- urlType ) );
- SetLastActiveViewId( KUidBrowserContentViewId );
- }
- }
- }
- else
- {
- // URL Typeid, url
- SetCalledFromAnotherApp( ETrue );
-
- if ( aDoFetch )
- {
- CBrowserLoadObserver::TBrowserLoadUrlType urlType =
- IsEmbeddedModeOn() ?
- CBrowserLoadObserver::ELoadUrlTypeEmbeddedBrowserWithUrl :
- CBrowserLoadObserver::ELoadUrlTypeOther;
- if( IsPageLoaded() &&
- !(WindowMgr().CurrentWindow()->HasWMLContent(EFalse)) &&
- Preferences().UiLocalFeatureSupported( KBrowserMultipleWindows ) &&
- !Preferences().UiLocalFeatureSupported( KBrowserMinimalMultipleWindows ))
- {
- // Cancel history view, mini map, toolbar or any other active control on the current window
- BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase );
- // there is already a window, so create a new one
- CBrowserWindow *win = WindowMgr().CreateWindowL( 0, &KNullDesC );
- if (win != NULL)
- {
-
- CleanupStack::PushL( win );
- WindowMgr().SwitchWindowL( win->WindowId() );
- TRAP( err, FetchL( *url,
- KNullDesC,
- KNullDesC,
- accessPoint,
- urlType ) );
- CleanupStack::Pop(); // win
- }
- }
- else
- {
- // Cancel history view, mini map, toolbar or any other active control on the current window
- BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase );
- TRAP( err, FetchL( *url,
- KNullDesC,
- KNullDesC,
- accessPoint,
- urlType ) );
- }
- }
- if (err==KErrNone)
- {
- SetLastActiveViewId(ViewToActivate);
- }
- }
- CleanupStack::PopAndDestroy(); // url
- }
- else if( typeId == KLaunchFeeds )
- {
- // Special facility to launch non-embedded into the feeds view
- if( !iBrowserAlreadyRunning )
- {
- SetOverriddenLaunchContextId(EBrowserContextIdFeeds);
- SetLastActiveViewId( KUidBrowserFeedsFolderViewId );
- }
- LaunchIntoFeedsL();
- }
- else
- {
- err = param1.Val( dataId );
- if ( !err )
- {
- switch ( typeId )
- {
- case KBookmarkId:
- {
- // Bookmark typeid, uid
- SetCalledFromAnotherApp( ETrue );
-
- if( IsPageLoaded() &&
- !(WindowMgr().CurrentWindow()->HasWMLContent(EFalse)) &&
- Preferences().UiLocalFeatureSupported( KBrowserMultipleWindows ) &&
- !Preferences().UiLocalFeatureSupported( KBrowserMinimalMultipleWindows ))
- {
- // Cancel history view, mini map, toolbar or any other active control on the current window
- BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase );
- // there is already a window, so create a new one
- CBrowserWindow *win = WindowMgr().CreateWindowL( 0, &KNullDesC );
- if (win != NULL)
- {
- CleanupStack::PushL( win );
- WindowMgr().SwitchWindowL( win->WindowId() );
- TRAP( err, FetchBookmarkL( dataId ) );
- CleanupStack::Pop(); // win
- }
- }
- else
- {
- // Cancel history view, mini map, toolbar or any other active control on the current window
- BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase );
- TRAP( err, FetchBookmarkL( dataId ) );
- }
-
- if ( err )
- {
- // Unable to fetch bookmark
- TBrowserDialogs::InfoNoteL(
- R_BROWSER_INFO_NOTE, R_WML_UNABLE_TO_FETCH_BOOKMARK );
- }
- if (err==KErrNone)
- {
- SetLastActiveViewId(ViewToActivate);
- }
-
- break;
- }
- case KFolderId:
- {
- SetCalledFromAnotherApp( EFalse );
- iIsForeground = IsForeground();
- CloseContentViewL();
- SetLastActiveViewId( KUidBrowserBookmarksViewId );
- break;
- }
- default:
- {
- // Typeid was not readable
- // TBD: error message!
- break;
- }
- }
- }
- else
- {
- // Dataid was not readable
- User::Leave( err );
- }
- }
- }
- else
- {
- // Sender Uid was not readable
- User::Leave( err );
- }
- if( !iSpecialSchemeinAddress )
- {
- SetViewToBeActivatedIfNeededL( LastActiveViewId() );
- }
- break;
- }
-
- default:
- {
- SendBrowserToBackground();
- break;
- }
- }
- CleanupStack::PopAndDestroy(); // command
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::WaitCVInit
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::WaitCVInit()
- {
- if( iParametrizedLaunchInProgress == 0 )
- {
- iParametrizedLaunchInProgress = 1;
- iIdle->Cancel();
- iIdle->Start( TCallBack( StopDelay, this ) );
- iWait.Start();
- iParametrizedLaunchInProgress = 2;
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ConnNeededStatusL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::ConnNeededStatusL( TInt aErr )
- {
- UpdateSoftKeys();
- if (iSuppressAlwaysAsk)
- {
- // Always ask was temporarily disabled, after creating the network connection, enable it again
- iPreferences->SetAccessPointSelectionModeL(EAlwaysAsk);
- iSuppressAlwaysAsk = EFalse;
- }
- if ( aErr != KErrNone )
- {
- if( iCalledFromAnotherApp )
- {
- // This function call should be replaced by ExitBrowser(ETrue)
- // so that the blank content view is not displayed.
- // SendBrowserToBackground();
- }
- // if any error, return Cancel to Kimono.
- return;
- }
-
-
-
- if ( !iConnStageNotifier->IsActive() )
- {
- TName* connectionName = Connection().ConnectionNameL();
- CleanupStack::PushL( connectionName );
- iConnStageNotifier->StartNotificationL(
- connectionName, KConnectionUninitialised, this);
- CleanupStack::PopAndDestroy(); //connectionName
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SendBrowserToBackground
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SendBrowserToBackground()
- {
- TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
-
- // Browser might be embedded.
- TUid appUid;
- if ( iEmbeddingApplicationUid != KNullUid )
- {
- appUid = iEmbeddingApplicationUid;
- }
- else
- {
- appUid = KUidBrowserApplication;
- }
- TApaTask task = taskList.FindApp( appUid );
- task.SendToBackground();
- }
-
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::CreateWindowInfoLC()
-// -----------------------------------------------------------------------------
-//
-HBufC* CBrowserAppUi::CreateWindowInfoLC( const CBrowserWindow& aWindow )
- {
- HBufC* buf = aWindow.BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoTitle );
- if( !buf || !buf->Length() )
- {
- CleanupStack::PopAndDestroy( buf );
- buf = aWindow.BrCtlInterface().PageInfoLC( TBrCtlDefs::EPageInfoUrl );
- if( !buf )
- {
-
- CleanupStack::PopAndDestroy( buf );
- buf = KNullDesC().AllocLC();
- }
- }
- return buf;
- }
-
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ConnectionStageAchievedL()
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::ConnectionStageAchievedL()
- {
- // this function is called only when network is lost
- // because we set notifier for KAgentUnconnected only
- Display().StopProgressAnimationL();
- if ( Fetching() )
- {
- CancelFetch();
- }
- //Close the uploading dialog.
- iDialogsProvider->UploadProgressNoteL(
- 0, 0, ETrue, (MBrowserDialogsProviderObserver *)this );
- //connection has been lost, so cancel the authentication dialog.
- iDialogsProvider->CancelAll();
- // SendDisconnectEventL();
- // not needed as by that point HTTPSession was already shutdown by executing disconnect menu option
- // will cause a crash when user tries to quickly reconnect right after disconnecting, as HTTP session
- // is starting to initialize, while this call is trying to close it.
- }
-
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::UpdateSoftKeys
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::UpdateSoftKeys()
- {
- TRAP_IGNORE( UpdateCbaL() );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::DeleteCookiesL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::DeleteCookiesL()
- {
- // stringPool is not needed to initialize
- RStringPool stringPool;
- RCookieManager cookieManager( stringPool );
- TInt num(0);
-
- User::LeaveIfError( cookieManager.Connect() );
- CleanupClosePushL( cookieManager );
- User::LeaveIfError( cookieManager.ClearCookies( num ) );
- CleanupStack::PopAndDestroy( &cookieManager );
-
- stringPool.Close();
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::LaunchHomePageL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::LaunchHomePageL()
- {
- LOG_ENTERFN( "CBrowserAppUi::LaunchHomePageL" );
- TWmlSettingsHomePage pgtype = iPreferences->HomePageType();
- TBool alwaysAskCase = (( Preferences().AccessPointSelectionMode() == EAlwaysAsk ) &&
- ( EWmlSettingsHomePageAccessPoint == pgtype ));
- BROWSER_LOG( ( _L( "pgtype: %d, alwaysAsk: %d" ), pgtype, alwaysAskCase ) );
-
- if( ( pgtype == EWmlSettingsHomePageBookmarks ) || alwaysAskCase )
- // Bookmarks is selected as HomePage
- // has effect only for startup, otherwise 'Home' command is not shown
- {
- ContentView()->SetFullScreenOffL();
- // view change will be done somewhere else
- SetLastActiveViewId( KUidBrowserBookmarksViewId );
- SetViewToBeActivatedIfNeededL( LastActiveViewId() );
- return;
- }
-
- HBufC* buf = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack
- TPtr ptr( buf->Des() );
- TInt pgFound( KErrNotFound );
-
- pgFound = Preferences().HomePageUrlL( ptr );
- BROWSER_LOG( ( _L( "pgFound 1: %d" ), pgFound ) );
-
-
- if( pgFound == KErrNone ) // Home page url found, fetch the url
- {
- SetLastActiveViewId( KUidBrowserContentViewId );
- FetchL( ptr );
- }
- else // Home page not found, or not defined, go to BookMarksView
- {
- TVwsViewId activeViewId;
- if( ( GetActiveViewId( activeViewId ) != KErrNone ) ||
- ( activeViewId.iViewUid == KUidBrowserContentViewId ) )
- {
- ContentView()->SetFullScreenOffL();
- }
- SetLastActiveViewId( KUidBrowserBookmarksViewId );
- SetViewToBeActivatedIfNeededL( LastActiveViewId() );
- }
- CleanupStack::PopAndDestroy( buf );
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ClearTheCacheL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::ClearTheCacheL(TBool afterQuery, TBool aShowDoneNote)
- {
- TUint32 totalBytesFlushed = BrCtlInterface().ClearCache();
- if(afterQuery || totalBytesFlushed)
- {
-
- HBufC* resultText = NULL;
- HBufC* tempText = NULL;
- TBuf<12> totalText;
-
- totalText.Num ((TInt)totalBytesFlushed);
-
- resultText = StringLoader::LoadLC( R_TEXT_WML_CACHE_EMPTIED_NOTE);
- //CleanupStack::PushL(resultText);
- tempText = HBufC::NewLC( resultText->Length() + totalText.Length() );
- //CleanupStack::PushL(tempText);
-
- tempText->Des().AppendFormat( resultText->Des(), totalBytesFlushed );
-
-
-
- if(aShowDoneNote)
- {
- TBrowserDialogs::InfoNoteL ( R_BROWSER_OK_NOTE, tempText->Des() );
- }
- CleanupStack::PopAndDestroy(2); //resultText, tempText
- }
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::ClearFormAndPasswdDataL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::ClearFormAndPasswdDataL(TBool aShowPromptAndComplete)
- {
- if (aShowPromptAndComplete)
- {
- CAknQueryDialog* query = CAknQueryDialog::NewL();
- if ( query->ExecuteLD( R_BROWSER_CLEARFORMPASSWDDATA_QUERY ) )
- {
- // call brctl to clear form and password data
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandClearAutoFormFillData +
- (TInt)TBrCtlDefs::ECommandIdBase );
-
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandClearAutoFormFillPasswordData +
- (TInt)TBrCtlDefs::ECommandIdBase );
-
- TBrowserDialogs::InfoNoteL(
- R_BROWSER_OK_NOTE, R_QTN_BROWSER_NOTE_FORM_AND_PASSWD_DATA_CLEARED );
- }
-
- }
- else
- {
- // call brctl to clear form and password data
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandClearAutoFormFillData +
- (TInt)TBrCtlDefs::ECommandIdBase );
-
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandClearAutoFormFillPasswordData +
- (TInt)TBrCtlDefs::ECommandIdBase );
-
- }
- }
-
-
-// ---------------------------------------------------------
-// CBrowserAppUi::ClearHistoryWithPromptL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::ClearHistoryWithPromptL()
- {
- CAknQueryDialog* query = CAknQueryDialog::NewL();
-
- if ( query->ExecuteLD( R_BROWSER_CLEARHISTORYDATA_QUERY ) )
- {
- ClearHistoryL();
- TBrowserDialogs::InfoNoteL( R_BROWSER_OK_NOTE,
- R_QTN_BROWSER_NOTE_HISTORY_CLEARED );
- }
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::ClearHistoryL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::ClearHistoryL()
- {
- if (iWindowManager)
- {
- iWindowManager->SendCommandToAllWindowsL(
- (TInt)TBrCtlDefs::ECommandClearHistory + (TInt)TBrCtlDefs::ECommandIdBase);
- }
- else
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandClearHistory +
- (TInt)TBrCtlDefs::ECommandIdBase );
-
- }
-
- if (!(Preferences().AdaptiveBookmarks()==EWmlSettingsAdaptiveBookmarksOff ))
- {
- // This call will ensure that the bookmarks are cleared when we are
- // outside the bookmarksview since the next call doesn't do anything in
- // that case due to the unset Container pointer.
- iRecentUrlStore->ClearData();
-
- // Below will serve for when we are called from BookmarksView to ensure
- // thorough clearing and view refresh after clearing adapt bookmarks
- iBookmarksView->HandleCommandL(EWmlCmdClearAdaptiveBookmarksNoPrompt);
- }
-
- UpdateCbaL();
-
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::ClearAllPrivacyL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::ClearAllPrivacyL()
- {
-
- CAknQueryDialog* query = CAknQueryDialog::NewL();
- if ( query->ExecuteLD( R_BROWSER_CLEARPRIVACYDATA_QUERY ) )
- {
- ClearTheCacheL(EFalse, EFalse); // false -> no prompt or info note after op
- DeleteCookiesL();
- ClearHistoryL();
- ClearFormAndPasswdDataL(EFalse); // no prompt or completed info note
-
- TBrowserDialogs::InfoNoteL(
- R_BROWSER_OK_NOTE, R_QTN_BROWSER_NOTE_CLEAR_ALL_PRIVACY_DONE );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::DisconnectL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::DisconnectL()
- {
-//#pragma message("TODO: inform LoadObserver?")
- SendDisconnectEventL();
- Connection().Disconnect();
-
-#ifdef __RSS_FEEDS
- iFeedsClientUtilities->DisconnectFeedsViewL();
- //notify feeds engine to close the connection
- iFeedsClientUtilities->DisconnectManualUpdateConnectionL();
-#endif
- }
-
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::BmOTABinSenderL()
-// -----------------------------------------------------------------------------
-//
-MBmOTABinSender& CBrowserAppUi::BmOTABinSenderL()
- {
- if (!iSender)
- {
- iLateSendUi->Cancel();
- DoConstructSendUiL();
- }
- return *iSender;
- }
-
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::ContentView()
-// -----------------------------------------------------------------------------
-//
-CBrowserContentView* CBrowserAppUi::ContentView() const
- {
- return (CBrowserContentView*)View( KUidBrowserContentViewId );
- }
-
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::FetchL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::FetchL( const TDesC& aUrl, CBrowserLoadObserver::TBrowserLoadUrlType aUrlType )
- {
- TFavouritesWapAp ap;
- ap.SetDefault();
- FetchL( aUrl, KNullDesC, KNullDesC, ap, aUrlType );
- }
-
-// TO DO: done by BaP
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::CancelFetch
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::CancelFetch( TBool aIsUserInitiated /*= EFalse*/ )
- {
- LoadObserver().DoEndLoad( aIsUserInitiated );
- TRAP_IGNORE( BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + (TInt)TBrCtlDefs::ECommandIdBase ) );
- SetContentDisplayed(ETrue);
- }
-
-
-// ----------------------------------------------------------------------------------------
-// CBrowserAppUi::HandleMessageL
-//
-// Changes the URL to another if WAP is running before Wap Url
-// is started from Desk
-// ----------------------------------------------------------------------------------------
-//
-MCoeMessageObserver::TMessageResponse CBrowserAppUi::HandleMessageL(
- TUint32 aClientHandleOfTargetWindowGroup,
- TUid aMessageUid,
- const TDesC8& aMessageParameters )
- {
- iBrowserAlreadyRunning = ETrue;
- TApaTaskList taskList( CEikonEnv::Static()->WsSession() );
- TUid wapUid = KUidBrowserApplication;
- TApaTask task = taskList.FindApp( wapUid );
- task.BringToForeground();
- if ( aMessageParameters.Compare( KLongZeroIdString ) )
- {
- ParseAndProcessParametersL( aMessageParameters );
- }
- return CAknViewAppUi::HandleMessageL(
- aClientHandleOfTargetWindowGroup,
- aMessageUid,
- aMessageParameters);
- }
-
-// ----------------------------------------------------------------------------------
-// CBrowserAppUi::UpdateNaviPaneL
-// ----------------------------------------------------------------------------------
-//
-void CBrowserAppUi::UpdateNaviPaneL( TDesC& aStatusMsg )
- {
- ContentView()->UpdateNaviPaneL( aStatusMsg );
- }
-
-// ----------------------------------------------------------------------------------
-// CBrowserAppUi::StopDelay
-// ----------------------------------------------------------------------------------
-//
-TInt CBrowserAppUi::StopDelay( TAny* aCBrowserAppUi )
- {
- __ASSERT_DEBUG(aCBrowserAppUi, Util::Panic( Util::EUninitializedData ));
-
- ((CBrowserAppUi*)aCBrowserAppUi)->DoStopDelay();
- return 0;
- }
-
-
-// ----------------------------------------------------------------------------------
-// CBrowserAppUi::DoStopDelay
-// ----------------------------------------------------------------------------------
-//
-void CBrowserAppUi::DoStopDelay()
- {
- iWait.AsyncStop();
- }
-
-// ----------------------------------------------------------------------------------
-// CBrowserAppUi::DelayedSendUiConstructL
-// ----------------------------------------------------------------------------------
-//
-/*static*/ TInt CBrowserAppUi::DelayedSendUiConstructL( TAny* aCBrowserAppUi )
- {
- __ASSERT_DEBUG(aCBrowserAppUi, Util::Panic( Util::EUninitializedData ));
- TRAP_IGNORE(
- ((CBrowserAppUi*)aCBrowserAppUi)->DoConstructSendUiL();
- );
- return KErrNone;
- }
-
-
-// ----------------------------------------------------------------------------------
-// CBrowserAppUi::DoConstructSendUiL
-// ----------------------------------------------------------------------------------
-//
-void CBrowserAppUi::DoConstructSendUiL()
- {
- __ASSERT_DEBUG(!iSender, Util::Panic( Util::EUnExpected ));
- iSender = CWmlBrowserBmOTABinSender::NewL();
- }
-
-// -----------------------------------------------------------------------------------
-// CBrowserAppUi::SetViewToReturnOnClose
-// -----------------------------------------------------------------------------------
-//
-void CBrowserAppUi::SetViewToReturnOnClose( TUid const &aUid )
- {
- iViewToReturnOnClose.iUid = aUid.iUid;
- }
-
-// -----------------------------------------------------------------------------------
-// CBrowserAppUi::CloseContentViewL
-// -----------------------------------------------------------------------------------
-//
-void CBrowserAppUi::CloseContentViewL()
- {
-LOG_ENTERFN("CBrowserAppUi::CloseContentViewL");
- CBrowserAppDocument* doc = STATIC_CAST(CBrowserAppDocument*, Document());
-
- // Close should Exit asynchronously if called from another application
- // & if not in feeds view
-#ifdef __RSS_FEEDS
- if(CalledFromAnotherApp() && (!IsEmbeddedModeOn())
- && (GetPreviousViewFromViewHistory() != KUidBrowserFeedsFolderViewId)
- && (GetPreviousViewFromViewHistory() != KUidBrowserFeedsTopicViewId)
- && (GetPreviousViewFromViewHistory() != KUidBrowserFeedsFeedViewId ))
- {
- SetExitInProgress( ETrue );
- BROWSER_LOG( ( _L( " iBrowserAsyncExit->Start()" ) ) );
- iBrowserAsyncExit->Start();
- }
-#else
- if(CalledFromAnotherApp() && !IsEmbeddedModeOn())
- {
- SetExitInProgress( ETrue );
- BROWSER_LOG( ( _L( " iBrowserAsyncExit->Start()" ) ) );
- iBrowserAsyncExit->Start();
- }
-#endif // __RSS_FEEDS
-
- else
- {
- if ( IsEmbeddedModeOn() &&
- doc->GetFolderToOpen() == KFavouritesRootUid )
- {
- ExitBrowser(ETrue);
- }
- else
- {
- if ( ContentView()->GetPreviousViewID() == KUidBrowserBookmarksViewId )
- {
- if ( GetBookmarksView()->GetAdaptiveBookmarksFolderWasActive() )
- {
- GetBookmarksView()->OpenAdaptiveBookmarksWhenActivated();
- }
- SetViewToBeActivatedIfNeededL( KUidBrowserBookmarksViewId );
- }
- else if ( IsEmbeddedModeOn())
- {
- if( !iExitInProgress )
- {
- ExitBrowser( ETrue );
- }
- }
- else
- {
- if(CalledFromAnotherApp() && (!IsEmbeddedModeOn()))
- {
- SetViewToBeActivatedIfNeededL( GetPreviousViewFromViewHistory());
- SetCalledFromAnotherApp(EFalse);
- SendBrowserToBackground();
- }
- else
- {
- SetViewToBeActivatedIfNeededL( iViewToReturnOnClose );
- }
- }
- }
- }
- }
-
-// -----------------------------------------------------------------------------------
-// CBrowserAppUi::IsEmbeddedModeOn
-// -----------------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::IsEmbeddedModeOn() const
- {
- return iEikonEnv->StartedAsServerApp();
- }
-
-// -----------------------------------------------------------------------------------
-// CBrowserAppUi::HistoryLoadPrevious
-// -----------------------------------------------------------------------------------
-//
-void CBrowserAppUi::HistoryLoadPrevious()
- {
- if( BrCtlInterface().NavigationAvailable( TBrCtlDefs::ENavigationBack ) )
- {
- TRAP_IGNORE( BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandBack +
- (TInt)TBrCtlDefs::ECommandIdBase ) );
- }
- }
-
-// -----------------------------------------------------------------------------------
-// CBrowserAppUi::HistoryLoadNext
-// -----------------------------------------------------------------------------------
-//
-void CBrowserAppUi::HistoryLoadNext()
- {
- if( BrCtlInterface().NavigationAvailable( TBrCtlDefs::ENavigationForward ) )
- {
- LoadObserver().DoStartLoad( CBrowserLoadObserver::ELoadUrlTypeOther );
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandForward +
- (TInt)TBrCtlDefs::ECommandIdBase );
- }
- }
-
-
-// ---------------------------------------------------------------------------
-// CBrowserAppUi::IsShutdownRequested
-// ---------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::IsShutdownRequested() const
- {
- return iShutdownRequested;
- }
-
-// ---------------------------------------------------------------------------
-// CBrowserAppUi::IsEmbeddedInOperatorMenu
-// ---------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::IsEmbeddedInOperatorMenu() const
- {
- const TUid KUidOperatorMenuApp = { 0x10008D5E };
- const TUid KUidVideoServicesApp = { 0x10281893 };
-
- // If the embedding application is the Operator Menu or Video Services
- if ( iEmbeddingApplicationUid == KUidOperatorMenuApp || iEmbeddingApplicationUid == KUidVideoServicesApp )
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CBrowserAppUi::IsAppShutterActive
-// ---------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::IsAppShutterActive() const
- {
- CAknAppUi* shuttingApp = CAknEnv::AppWithShutterRunning();
-
- if ( shuttingApp )
- {
- return ETrue;
- }
- else
- {
- return EFalse;
- }
- }
-
-// ---------------------------------------------------------------------------
-// CBrowserAppUi::FetchHomePage
-// --------------------------------------------------------------------------
-//
-void CBrowserAppUi::FetchHomePageL()
- {
-LOG_ENTERFN( "CBrowserAppUi::FetchHomePageL" );
- if ( !Fetching() )
- {
- UpdateSoftKeys();
-
- // If the last active view is content view, return to the bookmark view on close.
- // Otherwise if the last active view is bookmark view and we return to the appropriate view on close.
- TUid lastViewId = LastActiveViewId();
- if( lastViewId == KUidBrowserContentViewId ||
- lastViewId == KUidBrowserNullViewId )
- {
- lastViewId = KUidBrowserBookmarksViewId;
- }
- SetViewToReturnOnClose( lastViewId );
-
- if( iLongZeroPressed )
- {
- BROWSER_LOG( ( _L( " LongZeroPressed." ) ) );
-
- // There should only be one special load observer at startup
- SpecialLoadObserver().SetLongZeroStartup( iLongZeroPressed );
- iLongZeroPressed = EFalse;
- HBufC* buf = HBufC::NewLC( KMaxHomePgUrlLength );
- TPtr ptr( buf->Des() );
- TBool homePgFound( KErrNotFound );
-
- // try to read Access Points homepage
- TUint defaultAp( KWmlNoDefaultAccessPoint );
- // 'always ask' feature doesn't let to read the AP
- if( Preferences().AccessPointSelectionMode() == EConnectionMethod )
- {
- defaultAp = Preferences().DefaultAccessPoint();
- }
- if ( defaultAp != KWmlNoDefaultAccessPoint ) // There is an access point defined
- {
- CApAccessPointItem* apItem = Preferences().AllPreferencesL().iDefaultAPDetails;
- if ( apItem )
- {
- const HBufC* defaultHP = apItem->ReadConstLongTextL( EApWapStartPage );
- if ( defaultHP->Length() )
- {
- ptr.Zero();
- ptr.Append( *defaultHP );
- homePgFound = KErrNone;
- }
- }
- }
- // in case of error, read user defined home page from SD
- TInt err( KErrNone );
- if( homePgFound == KErrNotFound )
- {
- // do not let leaving
- if ((Preferences().HomePageType() == EWmlSettingsHomePageAddress)
- ||(Preferences().HomePageType() == EWmlSettingsHomePageUseCurrent))
- {
- TRAP( err, homePgFound = Preferences().HomePageUrlL( ptr, ETrue ) );
- }
- }
- // we have a url to load
- if( err == KErrNone &&
- homePgFound == KErrNone &&
- ptr.Length() > 0 )
- {
- TRAP( err, FetchL( ptr, CBrowserLoadObserver::ELoadUrlTypeOther ) );
- // in case of any error switch back to BookmarksView
- if( err != KErrNone )
- {
- ContentView()->SetFullScreenOffL();
- SetLastActiveViewId( KUidBrowserBookmarksViewId );
- }
- }
- else
- {
- // we already switched to ContentView, so change the layout back
- ContentView()->SetFullScreenOffL();
- SetLastActiveViewId( KUidBrowserBookmarksViewId );
- }
- CleanupStack::PopAndDestroy( buf );
- }
- else
- {
- // it checks HomePageSettings
- LaunchHomePageL( /* EFalse */ );
- }
- }
- }
-
-// ---------------------------------------------------------------------------
-// CBrowserAppUi::StartPreferencesViewL
-// ---------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::StartPreferencesViewL( TUint aListItems )
- {
- TBool retVal( EFalse );
- TInt retUi( KErrNone );
- TInt err(KErrNone);
-
- //start the connection dialog
- CCmApplicationSettingsUi* settings = CCmApplicationSettingsUi::NewL();
- CleanupStack::PushL( settings );
- TCmSettingSelection selection;
- // empty filter array because no filtering is wanted
- TBearerFilterArray filterArray;
- TRAP ( err, retUi = settings->RunApplicationSettingsL( selection, aListItems, filterArray ) );
- CleanupStack::PopAndDestroy(); // settings
-
- //if something has been selected
- if (retUi)
- {
- //set the selection mode
- iPreferences->SetAccessPointSelectionModeL(
- STATIC_CAST( TCmSettingSelectionMode, selection.iResult ) );
-
- //based on the chosen connection type, store the connection identifier(iapid, snap id, always ask)
- //in the preferences list
- switch ( iPreferences->AccessPointSelectionMode() )
- {
- case EConnectionMethod:
- {
- TUint32 id = iPreferences->DefaultAccessPoint();
- // CMManager gives us IAPid, need to translate to WAPid
- if (selection.iId != 0)
- {
- id = Util::WapIdFromIapIdL( *this, selection.iId );
- }
- iPreferences->SetDefaultAccessPointL( id );
- // Requested AP is preset for PushMtm
- id = iPreferences->DefaultAccessPoint();
- if( id != KWmlNoDefaultAccessPoint )
- {
- SetRequestedAP( id );
- retVal = ETrue;
- }
- break;
- }
-
- case EDestination:
- {
- TUint32 snapId = iPreferences->DefaultSnapId();
- if (selection.iId != 0)
- {
- snapId = selection.iId;
- }
- iPreferences->SetDefaultSnapId( snapId );
- if( snapId != KWmlNoDefaultSnapId )
- {
- retVal = ETrue;
- }
- break;
- }
-
- case EAlwaysAsk:
- default:
- {
- break;
- }
- }
- }
-
- // alr: is return val needed? should it be true or false in EAA and default? check how it's used
- return retVal;
- }
-// ---------------------------------------------------------------------------
-// CBrowserAppUi::AhleConnection
-// ---------------------------------------------------------------------------
-//
-CRecentUrlStore* CBrowserAppUi::RecentUrlStore()
- {
- return iRecentUrlStore;
- }
-
-// ---------------------------------------------------------------------------
-// CBrowserAppUi::SomeItemsNotSecure
-// ---------------------------------------------------------------------------
-//
-TBool CBrowserAppUi::SomeItemsNotSecure() const
- {
- return !( LoadObserver().LoadStatus( CBrowserLoadObserver::ELoadStatusAllItemIsSecure ) );
- }
-
-// ----------------------------------------------------
-// CBrowserAppUi::IsProgressShown
-// ----------------------------------------------------
-//
-TBool CBrowserAppUi::IsProgressShown() const
- {
- return iShowProgress;
- }
-
-// ----------------------------------------------------
-// CBrowserAppUi::SetProgressShown
-// ----------------------------------------------------
-//
-void CBrowserAppUi::SetProgressShown( TBool aProgressShown )
- {
- iShowProgress = aProgressShown;
- }
-
-// ----------------------------------------------------
-// CBrowserAppUi::RecognizeUiFileL
-// ----------------------------------------------------
-//
-TBool CBrowserAppUi::RecognizeUiFileL( RFile& aFile, TBuf<KMaxDataTypeLength>& aDataTypeDes )
- {
- TBool recognized = EFalse;
- HBufC8* buffer = NULL;
-
- TFileName fileName;
- User::LeaveIfError(aFile.FullName(fileName));
-
- TInt fileSize;
-
- // Read the file from the beginning into a buffer
- User::LeaveIfError(aFile.Size(fileSize));
- buffer = HBufC8::NewLC(fileSize);
- TPtr8 bufferPtr(buffer->Des());
- TInt startPos = 0;
- User::LeaveIfError(aFile.Read(startPos, bufferPtr, fileSize));
- // move the seek position back to start
- User::LeaveIfError(aFile.Seek(ESeekStart, startPos));
-
- _LIT( KDotOPML, ".opml");
- _LIT( KDotXML, ".xml");
-
- // First try the name extension
- if ( fileName.Length() >= 3 )
- {
- TInt dotPos = fileName.LocateReverse( '.' );
- if ( dotPos != KErrNotFound )
- {
- TInt extLength = fileName.Length() - dotPos;
- HBufC* ext = fileName.Right( extLength ).AllocL();
- CleanupStack::PushL( ext );
-
- // if .opml return true
- if ( ext->CompareF( KDotOPML ) == 0)
- {
- aDataTypeDes = KOPMLMimeType;
- recognized = ETrue;
- }
- else if (ext->CompareF( KDotXML ) == 0 )
- {
- _LIT8( dtd, "<opml" );
- if( bufferPtr.FindF( dtd ) != KErrNotFound )
- {
- aDataTypeDes = KOPMLMimeType;
- recognized = ETrue;
- }
- }
- CleanupStack::PopAndDestroy(); // ext
- }
- }
-
- if (!recognized)
- {
- // just check content of buffer
- _LIT8( dtd, "<opml" );
- if( (bufferPtr.Length() > 5) &&
- (bufferPtr.FindF( dtd ) != KErrNotFound ))
- {
- aDataTypeDes = KOPMLMimeType;
- recognized = ETrue;
- }
- }
-
- CleanupStack::PopAndDestroy(); //buffer
-
- return recognized;
- }
-
-
-// ---------------------------------------------------------
-// CBrowserAppUi::ConfirmUiHandlingL
-// ---------------------------------------------------------
-//
-TBool CBrowserAppUi::ConfirmUiHandlingL( TFileName& aFilename, TBuf<KMaxDataTypeLength>& aDataTypeDes )
- {
- // switch on data type desc and handle file accordingly
- if(aDataTypeDes.Compare( KOPMLMimeType ) == 0)
- {
- // Display confirmation dialog before activating feeds view
- HBufC* message = StringLoader::LoadLC(R_FEEDS_QUERY_IMPORT_NOW, aFilename);
- HBufC* lsc_yes = StringLoader::LoadLC(R_FEEDS_IMPORT_NOW_YES);
- HBufC* rsc_no = StringLoader::LoadLC(R_FEEDS_IMPORT_NOW_NO);
-
- TBool ret(iDialogsProvider->DialogConfirmL( _L(""), *message, *lsc_yes, *rsc_no ));
-
- CleanupStack::PopAndDestroy(3); //message, lsc_yes, rsc_no
-
- if(ret)
- {
- return ETrue;
- }
- }
-
- return EFalse;
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::CopyUiRFileToFileL
-// ---------------------------------------------------------
-//
-
-void CBrowserAppUi::CopyUiRFileToFileL( RFile& aFile, const TDesC& aFilepath )
- {
- //
- // copy r-file to a temporary file
- //
- RFs tempRFs;
- RFile tempRFile;
- TInt fileSize;
- HBufC8* buffer = NULL;
-
- // Connect to file server
- User::LeaveIfError(tempRFs.Connect());
- CleanupClosePushL(tempRFs);
-
- // Create the filepath to copy to
- // Replace the file if it already exists
- User::LeaveIfError(tempRFile.Replace(tempRFs, aFilepath, EFileWrite));
- CleanupClosePushL(tempRFile);
-
- // Copy the file
- User::LeaveIfError(aFile.Size(fileSize));
- buffer = HBufC8::NewLC(fileSize);
- TPtr8 bufferPtr(buffer->Des());
-
- // Read from the start of the file
- User::LeaveIfError(aFile.Read(0, bufferPtr, fileSize));
- User::LeaveIfError(tempRFile.Write(bufferPtr, fileSize));
-
- tempRFile.Close();
- tempRFs.Close();
-
- // Cleanup Buffer and file copy stuff
- CleanupStack::PopAndDestroy(3); //buffer, tempRFile, tempRFs
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::HandleUiFileL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::HandleUiFileL( TFileName& aFilepath, TBuf<KMaxDataTypeLength>& aDataTypeDes )
- {
- // switch on data type desc and handle file accordingly
- if(aDataTypeDes.Compare(KOPMLMimeType) == 0)
- {
- // Activate Content view first in order to
- // get it's BrowserControl instance ready to go
- // (as opposed to Feeds' BC instance) to be used to render
- // feeds content in case the user wants to read
- // the feed in-page.
- SetLastActiveViewId( KUidBrowserContentViewId );
- SetViewToBeActivatedIfNeededL( LastActiveViewId() );
- ActivateLocalViewL( LastActiveViewId() );
-
- // Now activate bookmarks view
- SetLastActiveViewId( KUidBrowserBookmarksViewId );
- SetViewToBeActivatedIfNeededL( LastActiveViewId() );
- ActivateLocalViewL( LastActiveViewId() );
- HandleForegroundEventL( ETrue );
-
- // wait until the content view is completely ready
- WaitCVInit();
-
- // begin import, pass to feeds view
- iFeedsClientUtilities->BeginImportOPMLFeedsFileL(aFilepath);
- }
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::HandleUiDownloadL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::HandleUiDownloadL( TFileName& aFilepath, TBuf<KMaxDataTypeLength>& aDataTypeDes )
- {
- // switch on data type desc and handle file accordingly
- if(aDataTypeDes.Compare(KOPMLMimeType) == 0)
- {
- SetLastActiveViewId( KUidBrowserFeedsFolderViewId );
- // begin import
- iFeedsClientUtilities->BeginImportOPMLFeedsFileL(aFilepath);
- // switch back to FeedsView, so change layout
- ContentView()->SetFullScreenOffL();
- }
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::LaunchIntoFeedsL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::LaunchIntoFeedsL()
-{
- if(iBrowserAlreadyRunning && (LastActiveViewId() == KUidBrowserContentViewId))
- {
- iFeedsClientUtilities->ShowFolderViewL(KUidBrowserContentViewId);
- }
- else
- {
- iFeedsClientUtilities->ShowFolderViewL();
- }
-}
-
-// ----------------------------------------------------
-// CBrowserAppUi::CreateFullUrlLC
-// ----------------------------------------------------
-//
-HBufC* CBrowserAppUi::CreateFullUrlLC(
- const TDesC& aUrl,
- const TDesC& aUsername,
- const TDesC& aPassword )
- {
- // username[:password]@server/document
- TInt lPw = aPassword.Length();
- TInt lUn = aUsername.Length();
- _LIT( KBrowserScheme, "://" );
- TInt index = aUrl.Find( KBrowserScheme );
- if( index == KErrNotFound )
- {
- index = 0; // insert at first position
- }
- else
- {
- index += 3; // insert after scheme
- }
-
- HBufC *fullUrl = HBufC::NewLC( aUrl.Length() + lUn + lPw + 3 );
- fullUrl->Des().Copy( aUrl );
- if( lPw + lUn )
- {
- fullUrl->Des().Insert( index, _L( "@" ) );
- }
- if( lPw )
- {
- fullUrl->Des().Insert( index, aPassword );
- fullUrl->Des().Insert( index, _L( ":" ) );
- }
- if( lUn )
- {
- fullUrl->Des().Insert( index, aUsername );
- }
- // insert scheme???
- fullUrl->Des().ZeroTerminate();
-
- return fullUrl;
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::HandleResourceChangeL( TInt aType )
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::HandleResourceChangeL( TInt aType )
- {
- LOG_ENTERFN("CBrowserAppUi::HandleResourceChangeL");
- LOG_WRITE_FORMAT(" aType: %d", aType);
- if( iExitInProgress )
- {
- BROWSER_LOG( ( _L(" iExitInProgress ETrue ") ) );
- return;
- }
-
- CAknViewAppUi::HandleResourceChangeL( aType );
- if ( aType == KEikDynamicLayoutVariantSwitch )
- {
- CBrowserViewBase* activeView = ActiveView( );
- if( activeView != NULL )
- {
- activeView->HandleClientRectChange();
- if (activeView != ContentView())
- {
- ContentView()->HandleClientRectChange();
- }
- }
- }
- if (aType == KEikMessageFadeAllWindows)
- {
- if (ContentView() && ContentView()->PenEnabled())
- {
- if (iCurrentView == KUidBrowserContentViewId)
- {
- ContentView()->Toolbar()->DisableToolbarL(ETrue);
- }
- }
- }
-
- if (aType == KEikMessageUnfadeWindows)
- {
- if (ContentView()&& ContentView()->PenEnabled() && !ExitInProgress())
- {
- if (iCurrentView == KUidBrowserContentViewId)
- {
- ContentView()->MakeZoomSliderVisibleL(EFalse);
- ContentView()->Toolbar()->DisableToolbarL(EFalse);
- }
- }
- }
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::ChangeConnectionL()
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::ChangeConnectionL()
- {
- TConManChangeConn change;
- // This will contain the new IAP as well, but it needs to pass the old one
- TUint32 newAp = Util::IapIdFromWapIdL( *this, RequestedAp() );
- iConnection->ChangeIapL( change, newAp );
- if( EConManDoNothing == change )
- {
- // Do nothing
- }
- else
- {
- //cancel transaction
- SendDisconnectEventL();
- /* start all */
- if( EConManCloseAndStart == change )
- {
- //close connection
- iConnection->Disconnect();
-
-#ifdef __RSS_FEEDS
- //notify feeds engine to close the connection
- iFeedsClientUtilities->DisconnectManualUpdateConnectionL();
-#endif
- }
- iConnection->SetRequestedAP( newAp );
- TInt err = iConnection->StartConnectionL( ETrue );
- if( err == KErrNone )
- {
- iConnection->ShowConnectionChangedDlg();
- }
- }
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::HandleContentL()
-// ---------------------------------------------------------
-//
-TBool CBrowserAppUi::HandleContentL( const TDesC& aFileName,
- const CAiwGenericParamList& aParamList,
- TBool& aContinue )
- {
- // Put the file name to the generic parameter list, if it is not there yet
- TInt index(0);
- aParamList.FindFirst( index, EGenericParamFile, EVariantTypeDesC );
- if ( index == KErrNotFound )
- {
- TAiwVariant paramVariant( aFileName );
- TAiwGenericParam genericParam( EGenericParamFile, paramVariant );
- CAiwGenericParamList* paramList = (CAiwGenericParamList*)&aParamList;
- paramList->AppendL( genericParam );
- }
-
- // Set EGenericParamAllowMove - we allow handlers to apply move instead
- // of copy for the file.
- aParamList.FindFirst( index, EGenericParamAllowMove, EVariantTypeAny );
- if ( index == KErrNotFound )
- {
- TBool allowMove( ETrue );
- TAiwVariant allowMoveVariant( allowMove );
- TAiwGenericParam genericParamAllowMove( EGenericParamAllowMove, allowMoveVariant );
- CAiwGenericParamList* paramList = (CAiwGenericParamList*)&aParamList;
- paramList->AppendL( genericParamAllowMove );
- }
-
- BrowserLauncherService()->DownloadFinishedL( KErrNone, aParamList );
-
- // Wait until the client sends two TBools (contentHandled & continueBrowsing).
- iClientWantsToContinue = EFalse;
- iWasContentHandled = EFalse;
-
- iLauncherServiceWait.Start();
-
- // iClientWantsToContinue and iWasContentHandled contains the results
- aContinue = iClientWantsToContinue;
- return iWasContentHandled;
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::DownloadedContentHandlerReserved1()
-// ---------------------------------------------------------
-//
-TAny* CBrowserAppUi::DownloadedContentHandlerReserved1( TAny* /*aAnyParam*/ )
- {
- return 0;
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::SetContentHandlingResult()
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::SetContentHandlingResult
- ( TBool aClientWantsToContinue, TBool aWasContentHandled )
- {
- iClientWantsToContinue = aClientWantsToContinue;
- iWasContentHandled = aWasContentHandled;
-
- // continue handling the content
- iLauncherServiceWait.AsyncStop();
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::LoadSearchPageL()
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::LoadSearchPageL()
- {
- TPtrC url = iPreferences->SearchPageUrlL();
-
- // url undefined
- if ( !url.Length() )
- {
- HBufC* query = StringLoader::LoadLC(
- R_BROWSER_QUERY_DEF_SEARCHPAGE );
- // Ask if user want to define the search web setting now
- if (
- TBrowserDialogs::DialogQueryReqL( query->Des(),
- KNullDesC,
- KNullDesC )
- )
- {
- HBufC* prompt = StringLoader::LoadLC(
- R_BROWSER_PROMPT_SEARCH_URL );
- HBufC* retBuf = HBufC::NewLC( KMaxSearchPgUrlLength );
- TPtr retString = retBuf->Des();
- retString.Copy( KNullDesC );
-
- TInt result = TBrowserDialogs::DialogPromptReqL(
- prompt->Des(),
- &retString,
- ETrue,
- KMaxSearchPgUrlLength
- );
-
- if( result ) // URL was accepted
- {
- Preferences().SetSearchPageUrlL( retString );
- url.Set( iPreferences->SearchPageUrlL() );
- }
- CleanupStack::PopAndDestroy( 2 ); // retBuf, prompt
- }
- CleanupStack::PopAndDestroy( query );
- }
-
- FetchL( url );
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::CloseWindowL()
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::CloseWindowL( TInt aWindowId )
- {
-LOG_ENTERFN("AppUi::CloseWindowL");
-
- //There are only two cases for closing window. One is user initialized and the
- //other is script initialized. For both cases, the window should be deleted.
- TBool forceDelete( ETrue );
- // this variable is useful to know if the window has a parent window which needs to be activated on closing current window
- TBool parentPresent(EFalse);
- if ( WindowMgr().CurrentWindowQue() && WindowMgr().CurrentWindowQue()->iParent )
- {
- parentPresent = ETrue;
- }
- // delete the current window by default
- if( aWindowId == 0 )
- {
- aWindowId = WindowMgr().CurrentWindow()->WindowId();
- // scripts directly pass a real windowId,
- // so if user initiated the process, we really delete the window
- forceDelete = ETrue;
- }
-
-#ifdef __RSS_FEEDS
- // If we are closing a Feeds Full Story then go back to feeds
- TBool feedsWindow(EFalse);
- CBrowserWindow* win;
- TInt err = WindowMgr().Window(aWindowId, win);
- if (err == KErrNone)
- {
- feedsWindow = win->HasFeedsContent();
- win->SetHasFeedsContent(EFalse);
- }
-#endif
-
- TInt winId = WindowMgr().DeleteWindowL( aWindowId, forceDelete );
-
-#ifdef __RSS_FEEDS
- if (feedsWindow)
- {
- SetViewToBeActivatedIfNeededL( KUidBrowserFeedsFeedViewId );
- return;
- }
-#endif
-
- if( winId > 0 ) // still remain a window to be activated
- {
- WindowMgr().SwitchWindowL( winId );
- if(CalledFromAnotherApp() && (!IsEmbeddedModeOn()) && !parentPresent)
- {
- SetCalledFromAnotherApp(EFalse);
- SendBrowserToBackground();
- }
- }
- else if( winId == 0) // last window was closed
- {
- if(CalledFromAnotherApp() && (!IsEmbeddedModeOn()))
- {
-#ifdef __RSS_FEEDS
- if ((GetPreviousViewFromViewHistory() == KUidBrowserFeedsFolderViewId) ||
- (GetPreviousViewFromViewHistory() == KUidBrowserFeedsTopicViewId) ||
- (GetPreviousViewFromViewHistory() == KUidBrowserFeedsFeedViewId))
- {
- SetViewToBeActivatedIfNeededL( GetPreviousViewFromViewHistory() );
- SetCalledFromAnotherApp(EFalse);
- SendBrowserToBackground();
- }
- else
- {
- ExitBrowser(ETrue);
- }
-#else
- ExitBrowser(ETrue);
-#endif // __RSS_FEEDS
- }
- else
- {
- ExitBrowser(ETrue);
- }
- }
- // else a background window was closed
-
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::StartProgressAnimationL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::StartProgressAnimationL()
- {
-LOG_ENTERFN("AppUi::StartProgressAnimationL");
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::StopProgressAnimationL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::StopProgressAnimationL()
- {
-LOG_ENTERFN("AppUi::StopProgressAnimationL");
- }
-
-#ifdef __RSS_FEEDS
-// ---------------------------------------------------------
-// CBrowserAppUi::FeedsClientUtilities
-// ---------------------------------------------------------
-//
-CFeedsClientUtilities& CBrowserAppUi::FeedsClientUtilities() const
- {
- return *iFeedsClientUtilities;
- }
-#endif // __RSS_FEEDS
-
-// ---------------------------------------------------------
-// CBrowserAppUi::OpenLinkInNewWindowL()
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::OpenLinkInNewWindowL( const CFavouritesItem& aBookmarkItem )
- {
- if( ( aBookmarkItem.IsItem() ) &&
- ( aBookmarkItem.Uid() != KFavouritesRSSItemUid ) )
- {
- // Check if we should/can create a new window
- // In most cases when the feature is not allowed option menu items have been dimmed.
- // In the case where a long key press on a bookmark happens we fall through to this function
- // and check the feature here. If a new window is not allowed we can open in the current window
- if( IsPageLoaded() &&
- Preferences().UiLocalFeatureSupported( KBrowserMultipleWindows ) &&
- !Preferences().UiLocalFeatureSupported( KBrowserMinimalMultipleWindows ))
- {
- // there is already a window, so create a new one
- CBrowserWindow *win = WindowMgr().CreateWindowL( 0, &KNullDesC );
- if (win != NULL)
- {
- CleanupStack::PushL( win );
- WindowMgr().SwitchWindowL( win->WindowId() );
- FetchBookmarkL( aBookmarkItem );
- CleanupStack::Pop(); // win
- }
- }
- else
- {
- // no page is loaded yet, so do not create new window
- FetchBookmarkL( aBookmarkItem );
- }
- }
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::SendDisconnectEventL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::SendDisconnectEventL()
- {
- LOG_ENTERFN("CBrowserAppUi::SendDisconnectEventL");
- SpecialLoadObserver().CancelConnection();
- CArrayFixFlat<CWindowInfo*>* windows = iWindowManager->GetWindowInfoL( this );
- if( windows )
- {
- TInt i;
-
- for ( i = 0; i < windows->Count(); i++ )
- {
- CBrowserWindow* window = NULL;
- iWindowManager->Window( windows->At( i )->iWindowId, window );
- if( window )
- {
- TInt err;
- // BROWSER_LOG( ( _L( " iConnection Connected" ) ) );
- TRAP( err, window->BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + (TInt)TBrCtlDefs::ECommandIdBase ) );
- // BROWSER_LOG( ( _L( " HandleCommandL: %d"), err ) );
- }
- }
-
- CBrowserWindow* window = NULL;
- iWindowManager->Window( windows->At( 0 )->iWindowId, window );
-
- // Close session only once
- if (window)
- {
- window->BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandDisconnect + (TInt)TBrCtlDefs::ECommandIdBase );
- }
-
- // delete the window items before deleting the array
- for( i=0; i<windows->Count(); ++i )
- delete windows->At( i );
-
- delete windows;
- }
- }
- /*
-
-// ----------------------------------------------------
-// CBrowserAppUi::IsPgNotFound
-// ----------------------------------------------------
-//
-TBool CBrowserAppUi::IsPgNotFound() const
- {
- return iPgNotFound;
- }
-*/
-// ----------------------------------------------------
-// CBrowserAppUi::HandleApplicationSpecificEventL
-// ----------------------------------------------------
-//
-void CBrowserAppUi::HandleApplicationSpecificEventL(TInt aEventType, const TWsEvent& aWsEvent)
- {
- CAknAppUi::HandleApplicationSpecificEventL(aEventType, aWsEvent);
-
- /*
- * Note: Even though we get these memory events from the system for handling OOM, and we pass them off
- * to the command handler, there is no code further down the line that actually handles them (it would
- * normally be in BrCtl). We totally ignore these events. This is because the system has too high of an OOM threshold.
- * I.e. the system may only have 6m left and think it's out of memory, however, the browser can still render
- * many pages in only 6m. So, these system events are ignored and the browser handles OOM with its own mechanism.
- * (See OOMStopper and OOMHandler)
- */
- if(aEventType == KAppOomMonitor_FreeRam )
- {
- iWindowManager->CloseAllWindowsExceptCurrent();
- // If we were really doing anything about this event, why do we not want to do it to the foreground?
- if(!iIsForeground)
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandFreeMemory + (TInt)TBrCtlDefs::ECommandIdBase);
- }
- }
- else if(aEventType == KAppOomMonitor_MemoryGood)
- {
- BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandMemoryGood + (TInt)TBrCtlDefs::ECommandIdBase);
- }
- else if ( KAknFullOrPartialForegroundGained == aEventType )
- {
- if ( iViewToBeActivatedIfNeeded.iUid )
- {
- ActivateLocalViewL( iViewToBeActivatedIfNeeded );
- }
- else
- {
- // LastActiveViewId() might return with 0!
- TRAP_IGNORE( ActivateLocalViewL( LastActiveViewId() ) );
- }
- iViewToBeActivatedIfNeeded.iUid = 0;
- }
- }
-
-// ----------------------------------------------------
-// CBrowserAppUi::OfferApplicationSpecificKeyEventL
-//
-// Use this function to handle key events that are application wide and not specific to any view
-// All views (containers) call this first and should return if key was consumed
-// As a note for future reference the red end key shows up as iCode = EKeyNo...though you would
-// think it would be EKeyEnd...
-// ----------------------------------------------------
-//
-TKeyResponse CBrowserAppUi::OfferApplicationSpecificKeyEventL(const TKeyEvent& /*aKeyEvent*/,
- TEventCode /*aType*/)
- {
- TKeyResponse result( EKeyWasNotConsumed );
-
- return result;
- }
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::GetPreviousViewFromViewHistory
-// -----------------------------------------------------------------------------
-//
-TUid CBrowserAppUi::GetPreviousViewFromViewHistory()
-{
- return iPreviousView;
-}
-
-// -----------------------------------------------------------------------------
-// CBrowserAppUi::SaveFocusedImageToGalleryL
-// -----------------------------------------------------------------------------
-//
-void CBrowserAppUi::SaveFocusedImageToGalleryL()
- {
- TBrCtlImageCarrier* imageCarrier = BrCtlInterface().FocusedImageLC();
- CDocumentHandler* docHandler = CDocumentHandler::NewLC();
- TUriParser uriParser;
- User::LeaveIfError(uriParser.Parse(imageCarrier->Url()));
- TPtrC path;
- path.Set( uriParser.Extract( EUriPath ) );
- HBufC* fileName = NULL;
- if( path.Length() )
- {
- TInt slash = path.LocateReverse( '/' );
- if( slash != KErrNotFound && slash != path.Length() )
- {
- TPtrC temp( path.Right( path.Length() - slash - 1 ) );
- if( temp.Length() )
- {
- fileName = HBufC::NewLC(temp.Length() + 4); // leave room for edding extenstion if needed
- fileName->Des().Copy(temp);
- }
- }
- }
- HBufC8* dataType8 = NULL;
- dataType8 = HBufC8::NewLC(imageCarrier->ContentType().Length());
- dataType8->Des().Copy(imageCarrier->ContentType());
- TDataType dataType(*dataType8);
- if (fileName)
- {
- TPtr fileNamePtr(fileName->Des());
- docHandler->CheckFileNameExtension(fileNamePtr, dataType);
- docHandler->SaveL(imageCarrier->RawData(), dataType, *fileName, KEntryAttNormal);
- }
- else
- {
- docHandler->SaveL(imageCarrier->RawData(), dataType, KEntryAttNormal);
- }
- if (fileName)
- {
- CleanupStack::PopAndDestroy(2); // fileName, dataType8
- }
- else
- {
- CleanupStack::PopAndDestroy(dataType8); // dataType8
- }
-
- TFileName fName;
- User::LeaveIfError(docHandler->GetPath(fName));
-
- #ifdef BRDO_APP_GALLERY_SUPPORTED_FF
-
- CMGXFileManager* mgFileManager = MGXFileManagerFactory::NewFileManagerL(CEikonEnv::Static()->FsSession());
- CleanupStack::PushL(mgFileManager);
- if( fName.Length() > 0 )
- {
- TRAP_IGNORE( mgFileManager->UpdateL( fName ) );
- }
- else
- {
- TRAP_IGNORE( mgFileManager->UpdateL() );
- }
- CleanupStack::PopAndDestroy(1); // mgFileManager
-
- #endif
-
- CleanupStack::PopAndDestroy(1); // imageCarrier
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::CheckFlashPresent
-// ---------------------------------------------------------
-//
-TBool CBrowserAppUi::CheckFlashPresent()
- {
- RImplInfoPtrArray animPluginList;
-
- TRAP_IGNORE( REComSession::ListImplementationsL( KBrowserPluginInterfaceUid,
- animPluginList ) );
-
-
- _LIT8(KFlashMimeType, "application/x-shockwave-flash");
-
- const TInt count = animPluginList.Count();
- TBool found = EFalse;
- for ( TInt i = 0; i < count; i++ )
- {
- CImplementationInformation* implInfo = animPluginList[i];
- if (( implInfo->DataType( ) ).Find( KFlashMimeType) != KErrNotFound)
- {
- found = ETrue; //flash plugin is present
- break;
- }
- }
- animPluginList.ResetAndDestroy();
-
- return found;
-
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::FlashPresent
-// ---------------------------------------------------------
-//
-TBool CBrowserAppUi::FlashPresent()
- {
- return iFlashPresent;
- }
-
-// ---------------------------------------------------------
-// CBrowserAppUi::ShowNameAndVersionL
-// ---------------------------------------------------------
-//
-void CBrowserAppUi::ShowNameAndVersionL()
-{
- HBufC* header = StringLoader::LoadLC( R_BROWSER_QUERY_BROWSER_VERSION );
- HBufC* browserVersion = BrCtlInterface().VersionInfoLC(TBrCtlDefs::EBrowserVersion);
-
- // output browser version to dialog
- CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( *browserVersion );
- CleanupStack::PushL(dlg);
- dlg->PrepareLC( R_BROWSER_PAGE_VERSION );
- CleanupStack::Pop(dlg);
- CAknPopupHeadingPane* hPane = dlg->QueryHeading();
- if ( hPane )
- {
- CleanupStack::PushL(hPane);
- hPane->SetTextL( *header );
- CleanupStack::Pop(hPane);
- }
- dlg->RunLD();
- CleanupStack::PopAndDestroy(2); // browserVersion, header
-}
-
-
-// ---------------------------------------------------------
-// CBrowserAppUi::IsLaunchHomePageDimmedL
-// ---------------------------------------------------------
-//
-TBool CBrowserAppUi::IsLaunchHomePageDimmedL()
-{
-
- // Set dimmed flag if shortcut key for launch home page is dimmed and was selected
- TBool dimmed = EFalse;
- TBool homepage = Preferences().UiLocalFeatureSupported( KBrowserUiHomePageSetting );
- if( homepage )
- {
- TWmlSettingsHomePage pgtype = Preferences().HomePageType();
- TBool alwaysAskCase = ((Preferences().AccessPointSelectionMode() == EAlwaysAsk ) &&
- ( EWmlSettingsHomePageAccessPoint == pgtype ));
-
- if (alwaysAskCase || (pgtype == EWmlSettingsHomePageBookmarks))
- {
- dimmed = ETrue;
- }
- else if (pgtype == EWmlSettingsHomePageAccessPoint)
- {
- // check to see if no home page defined on the access point
- HBufC* buf = HBufC::NewLC( KMaxHomePgUrlLength ); // cleanupstack
- TPtr ptr( buf->Des() );
- TInt pgFound = Preferences().HomePageUrlL( ptr );
- if( pgFound != KErrNone )
- {
- dimmed = ETrue;
- }
- CleanupStack::PopAndDestroy( buf );
- }
- }
- else
- {
- dimmed = ETrue;
- }
-
- return(dimmed);
-}
-
-// ---------------------------------------------------------
-// CBrowserAppUi::IsDisplayingMenuOrDialog
-// ---------------------------------------------------------
-//
-TBool CBrowserAppUi::IsDisplayingMenuOrDialog()
-{
- return CCoeAppUi::IsDisplayingMenuOrDialog();
-}
-// ---------------------------------------------------------
-// CBrowserAppUi::HandleWsEventL
-// ---------------------------------------------------------
-void CBrowserAppUi::HandleWsEventL(const TWsEvent& aEvent,
- CCoeControl* aDestination)
-{
- /**
- * We need a special handling for pointer events to handle the situation
- * when the pointer is crossing the boundaries of plugin window. Browser
- * scrolling id done using PointerMove events not a Drag.
- * When PointerMoveBuffer is ready HandlePointerBufferReadyL() is called by
- * Symbian framework. By default if Pointer Down event wasn't issued on the
- * current CoeControl Pointer Move events are not sent to this control.
- * The code below makes sure that when we entering the Content View window
- * from pluging window we are still getting move events.
- * When we are leaving Content window we are generating fake Pointer Up
- * event in order to on-demand scrollbars disapear properly. The later is a
- * hack and needs to be re-designed in such way that pluging will pass
- * pointer event back to the browser.
- */
- if (aDestination != NULL)
- {
- TInt type=aEvent.Type();
-
- switch (type)
- {
- case EEventPointerExit:
- {
-
- break;
- }
-
- case EEventPointerEnter:
- {
- if (iCurrentView == KUidBrowserContentViewId)
- {
- CCoeControl* ctrl = &(BrCtlInterface());
- ctrl->DrawableWindow()->DiscardPointerMoveBuffer();
- const TInt count = ctrl->CountComponentControls();
- for (TInt i = 0; i < count; i++)
- {
- CCoeControl* c = ctrl->ComponentControl(i);
- if (c)
- {
- c->ClaimPointerGrab(EFalse);
- }
- }
- ctrl->ClaimPointerGrab(EFalse);
- }
- break;
- }
-
- }
- }
- CAknViewAppUi::HandleWsEventL(aEvent, aDestination);
-}
-
-// ---------------------------------------------------------
-// CBrowserAppUi::HandleSystemEventL
-// ---------------------------------------------------------
-#if defined(__S60_50__)
-void CBrowserAppUi::HandleSystemEventL(const TWsEvent& aEvent)
- {
-
- /**
- * We need a special handling for System events to handle the situation
- * like when the shut down is done while download is going on.
- */
-
- switch (*(TApaSystemEvent*)(aEvent.EventData()))
- {
- case EApaSystemEventShutdown:
- // do things here
- ExitBrowser ( IsAppShutterActive() );
- break;
- default:
- break;
- }
- // call base class implementation
- CAknAppUi::HandleSystemEventL(aEvent);
- }
-#endif
-// ---------------------------------------------------------
-// CBrowserAppUi::StartFetchHomePageL
-// ---------------------------------------------------------
-void CBrowserAppUi::StartFetchHomePageL(void)
- {
-
- // There's a homepage to be launched so start in content view
- SetLastActiveViewId(KUidBrowserContentViewId);
- //wait for contentview to initialize itself
- WaitCVInit();
-
- TInt error( KErrNone );
- TRAP( error, FetchHomePageL() );
- if( error != KErrNone )
- {
- CloseContentViewL();
- }
- }
-
-// End of File