# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1282201076 -10800 # Node ID 4baee4f15982922c2092430a9cb61bb8b228e1d0 # Parent 5a044f6358c2803fbe773c30c60975edf29fe282 Revision: 201032 Kit: 201033 diff -r 5a044f6358c2 -r 4baee4f15982 browserplugins/browseraudiovideoplugin/inc/BavpPlugin.h --- a/browserplugins/browseraudiovideoplugin/inc/BavpPlugin.h Thu Jul 15 18:42:04 2010 +0300 +++ b/browserplugins/browseraudiovideoplugin/inc/BavpPlugin.h Thu Aug 19 09:57:56 2010 +0300 @@ -281,6 +281,7 @@ TBool iPauseState; TBool iIsForeGround; TBool iPauseInBackground; + TBool iPlayFromFile; }; /** diff -r 5a044f6358c2 -r 4baee4f15982 browserplugins/browseraudiovideoplugin/src/BavpPlugin.cpp --- a/browserplugins/browseraudiovideoplugin/src/BavpPlugin.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserplugins/browseraudiovideoplugin/src/BavpPlugin.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -46,7 +46,8 @@ iMimeType( NULL ), iPauseState ( EFalse ), iIsForeGround ( ETrue ), - iPauseInBackground (EFalse) + iPauseInBackground (EFalse), + iPlayFromFile(EFalse) { } @@ -188,6 +189,7 @@ // ----------------------------------------------------------------------------- void CBavpPlugin::OpenAndPlayFileL( const TDesC& aFilename, const HBufC* originalFileName ) { + iPlayFromFile = ETrue; Log( EFalse, _L("CBavpPlugin::OpenAndPlayFileL"), (TInt)this ); if ( !iBavpView ) @@ -261,6 +263,7 @@ // ----------------------------------------------------------------------------- void CBavpPlugin::OpenAndPlayUrlL( const TDesC& aUrl ) { + iPlayFromFile = EFalse; Log( EFalse, _L("CBavpPlugin::OpenAndPlayUrlL"), (TInt)this ); if ( iBavpController ) @@ -415,6 +418,19 @@ iBavpController->PlayL(); } break; + case EAccesPointChanged : + if (iBavpController && !iPlayFromFile) { + bool state = (iBavpController->State() == EBavpPaused || + iBavpController->State() == EBavpPlaying || + iBavpController->State() == EBavpBuffering || + iBavpController->State() == EBavpFastForwarding || + iBavpController->State() == EBavpRewinding ); + iBavpController->Stop(); + if (state) + iBavpController->PlayL(); + } + break; + default: // Not implemented break; diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/BrowserAppSrc/BrowserAppEntryPoint.cpp --- a/browserui/browser/BrowserAppSrc/BrowserAppEntryPoint.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserAppEntryPoint.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -16,7 +16,7 @@ * * */ - + #include "BrowserApplication.h" #include @@ -24,13 +24,23 @@ #include #include #include -#include +#include +#include +#include +#include +#include +#include +#include + +_LIT(KBrowserResourceFile, "BrowserNG.rsc"); + const int KFreeMemoryTarget = 6000000; + LOCAL_C CApaApplication* NewApplication( ) { - return new CBrowserApplication; + return new CBrowserApplication; } // ----------------------------------------------------------------------------- @@ -63,24 +73,110 @@ return r; } + +// --------------------------------------------------------------------------- +// GetUiUtilitiesResourceFilenameL +// --------------------------------------------------------------------------- +// +TInt GetCorrectResourceFilenameL(TFileName& aResourceFileName) + { + + TParse parse; + parse.Set(KBrowserResourceFile, &KDC_APP_RESOURCE_DIR, NULL); + aResourceFileName.Copy(parse.FullName()); + + RFs fs; + User::LeaveIfError(fs.Connect()); + CleanupClosePushL( fs ); + + // Resource File Name on C: + aResourceFileName.Insert( 0, TDriveUnit( EDriveC).Name() ); + // try to locate the localised resource + BaflUtils::NearestLanguageFile( fs, aResourceFileName ); + + // if the localised resource is found, the file name is changed to the localised name (z:\resources\webkit.r001) + if( !BaflUtils::FileExists( fs, aResourceFileName ) ) { + + aResourceFileName.Replace( 0, KMaxDriveName, TDriveUnit( EDriveZ ).Name() ); + // not found on c drive, try z try to locate the localised resource again + BaflUtils::NearestLanguageFile( fs, aResourceFileName ); + + // if file was not found this time, there is no localised resource with the name + if (!BaflUtils::FileExists( fs, aResourceFileName ) ) { + User::Leave(KErrNotFound); + } + } + CleanupStack::PopAndDestroy( &fs ); + return KErrNone; + } + +void ShowOOMDialogWithNotifierL() + { + + TFileName resourceFileName; + User::LeaveIfError(GetCorrectResourceFilenameL(resourceFileName)); + + RFs fsSession; + User::LeaveIfError(fsSession.Connect()); + CleanupClosePushL(fsSession); + + RResourceFile resFile; + resFile.OpenL(fsSession,resourceFileName ); + resFile.ConfirmSignatureL(0); + + HBufC8* dataOkButtonBuffer = resFile.AllocReadLC(R_QTN_OK_BUTTON); + HBufC8* dataOOMMessageBuffer = resFile.AllocReadLC(R_QTN_BROWSER_DIALOG_OOM); + + TPtrC16 OkButtonBuffer( ( TUint16* ) dataOkButtonBuffer->Ptr(),dataOkButtonBuffer->Length() / 2 ); + TPtrC16 OOMMessageBuffer( ( TUint16* ) dataOOMMessageBuffer->Ptr(),dataOOMMessageBuffer->Length() / 2 ); + + _LIT(KTxtEmptyLine," "); + _LIT(KTxtEmptyButton,""); + + RNotifier notifier; + TInt err = notifier.Connect(); + if(err == KErrNone) { + TInt whichbutton(-1); + TRequestStatus stat; + notifier.Notify(OOMMessageBuffer,KTxtEmptyLine,OkButtonBuffer,KTxtEmptyButton,whichbutton,stat); + User::WaitForRequest(stat); + } + + notifier.Close(); + + //this will clear OkButtonBuffer and OOMMessageBuffer + CleanupStack::PopAndDestroy(2); + resFile.Close(); + CleanupStack::PopAndDestroy(&fsSession); + + } + // ----------------------------------------------------------------------------- // E32Main // ----------------------------------------------------------------------------- GLDEF_C TInt E32Main() - { - ROomMonitorSession oomMs; - TInt result = oomMs.Connect(); - if ( result == KErrNone ) - { - result = oomMs.RequestFreeMemory( KFreeMemoryTarget ); - oomMs.Close(); + { + //Initilize memory manager... + MemoryManager::InitFastAllocator(); + + TInt freeRAM = 0; + TInt r = HAL::Get(HAL::EMemoryRAMFree, freeRAM); + + if ((r != KErrNone) || freeRAM < KFreeMemoryTarget) + { + // create clean-up stack as none is created + CTrapCleanup* cleanup=CTrapCleanup::New(); + + // Show OOM message through RNotifier ... + TRAP_IGNORE(ShowOOMDialogWithNotifierL()); + + // destroy clean-up stack + delete cleanup; + return KErrNoMemory; } - - // initialize MemmoryManager - MemoryManager::InitFastAllocator(); - // run application event loop - return EikStart::RunApplication(NewApplication); + // Run application event loop + return EikStart::RunApplication(NewApplication); } // End of File diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/BrowserAppSrc/BrowserAppUi.cpp --- a/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserAppUi.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -289,8 +289,14 @@ #else BaseConstructL( EAknEnableSkin | EAknEnableMSK ); #endif + + if ( !IsEmbeddedModeOn( ) ) { + // This is for handling low phone memory (c:) condition. Just leave in case phone memory is not sufficient. + TBool lowdisk = SysUtil::DiskSpaceBelowCriticalLevelL(&(CCoeEnv::Static()->FsSession()), KMinimumCDriveDiskSpace, EDriveC ); + if (lowdisk) User::Leave(KErrDiskFull); + #ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF InitBookmarksL(); #else @@ -531,16 +537,7 @@ void CBrowserAppUi::DelayedInitL() { LOG_ENTERFN("CBrowserAppUi::DelayedInitL"); - // Check for ciritical disk space - RFs fs; - User::LeaveIfError(fs.Connect()); - TInt drive( EDriveC ); - TBool isSpace( EFalse ); - TInt err( KErrNone ); - TRAP( err, isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL(&fs, KMinimumCDriveDiskSpace, drive )); - fs.Close(); - if (!isSpace) User::Leave(KErrDiskFull); - + // Create Favengine session User::LeaveIfError( iFavouritesSess.Connect() ); @@ -1119,6 +1116,11 @@ // TBool CBrowserAppUi::IsPageLoaded() { +#ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF + if(!iStartedUp) // ContentView/WindowMgr is not yet up => no page loaded + return EFalse; +#endif + TBool ret( EFalse ); TInt winCount( WindowMgr().WindowCount() ); @@ -1155,7 +1157,12 @@ // use load obs., remove ifetchstate from this class and use from loadobs. // iLoadState //return ( iFetchState == MFetchObserver::ELoadStart ); - return ( LoadObserver().LoadState() != CBrowserLoadObserver::ELoadStateIdle ); +#ifdef BRDO_PERF_IMPROVEMENTS_ENABLED_FF + if (!iStartedUp) // ContentView is not yet started up, so we are not fetching + return EFalse; + else +#endif + return ( LoadObserver().LoadState() != CBrowserLoadObserver::ELoadStateIdle ); } // ----------------------------------------------------------------------------- // CBrowserAppUi::ContentDisplayed() @@ -1683,7 +1690,7 @@ // if browser is embedded, should not call Exit(), // just delete the object, otherwise leave occurs. if( ( IsEmbeddedInOperatorMenu() || IsEmbeddedModeOn() ) && - !ExitInProgress() && + !ExitInProgress() && iStartedUp && ((LoadObserver().LoadUrlType() == CBrowserLoadObserver::ELoadUrlTypeEmbeddedBrowserWithUrl) || (LoadObserver().LoadUrlType() == CBrowserLoadObserver::ELoadUrlTypeOther) ) ) // ELoadUrlTypeEmbeddedBrowserWithUrl is typical for load via Phonebook, MMS, OperatorMenu @@ -1721,13 +1728,10 @@ } #endif } - if (SpecialLoadObserver().IsConnectionStarted()) + if (iStartedUp && SpecialLoadObserver().IsConnectionStarted()) { - if ( iWindowManager ) - { BROWSER_LOG( ( _L( " iWindowManager->SetUserExit( iUserExit )" ) ) ); iWindowManager->SetUserExit( iUserExit ); - } delete iWindowManager; BROWSER_LOG( ( _L( " User::Exit(KErrNone)" ) ) ); User::Exit(KErrNone); @@ -1755,7 +1759,7 @@ } #endif } - if (SpecialLoadObserver().IsConnectionStarted()) // If Connection request is in processing calling CAknAppUI::Exit() causes crash (JSAA-84RG9R) + if (iStartedUp && SpecialLoadObserver().IsConnectionStarted()) // If Connection request is in processing calling CAknAppUI::Exit() causes crash (JSAA-84RG9R) { //ensure that the params are saved in BrCtl if ( iWindowManager ) @@ -2124,6 +2128,7 @@ // The browser is in embedded mode and it is not initialized yet if ( IsEmbeddedModeOn() && !iStartedUp) { + EnableLocalScreenClearer( EFalse ); return EFalse; } @@ -2150,7 +2155,8 @@ 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() ); @@ -2321,7 +2327,7 @@ else { if (iStartedUp) - ContentView()->SetFullScreenOffL(); + ContentView()->SetFullScreenOffL(); if ( !IsEmbeddedModeOn() ) { @@ -2425,8 +2431,9 @@ } else { - // Cancel history view, mini map, toolbar or any other active control on the current window - BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase ); + // Cancel history view, mini map, toolbar or any other active control on the current window + if (iStartedUp) + BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase ); TRAP( err, FetchL( *url, KNullDesC, KNullDesC, @@ -2488,8 +2495,9 @@ } else { - // Cancel history view, mini map, toolbar or any other active control on the current window - BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase ); + // Cancel history view, mini map, toolbar or any other active control on the current window + if (iStartedUp) + BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase ); TRAP( err, FetchL( *url, KNullDesC, KNullDesC, @@ -2545,8 +2553,9 @@ } else { - // Cancel history view, mini map, toolbar or any other active control on the current window - BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase ); + // Cancel history view, mini map, toolbar or any other active control on the current window + if (iStartedUp) + BrCtlInterface().HandleCommandL( TBrCtlDefs::ECommandCancel + TBrCtlDefs::ECommandIdBase ); TRAP( err, FetchBookmarkL( dataId ) ); } @@ -3041,17 +3050,11 @@ // void CBrowserAppUi::ClearHistoryL() { - if (iWindowManager) + if (iWindowManager) { iWindowManager->SendCommandToAllWindowsL( (TInt)TBrCtlDefs::ECommandClearHistory + (TInt)TBrCtlDefs::ECommandIdBase); } - else - { - BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandClearHistory + - (TInt)TBrCtlDefs::ECommandIdBase ); - - } if (!(Preferences().AdaptiveBookmarks()==EWmlSettingsAdaptiveBookmarksOff )) { @@ -3289,7 +3292,7 @@ } else { - if ( ContentView()->GetPreviousViewID() == KUidBrowserBookmarksViewId ) + if ( iStartedUp && ContentView()->GetPreviousViewID() == KUidBrowserBookmarksViewId ) { if ( GetBookmarksView()->GetAdaptiveBookmarksFolderWasActive() ) { @@ -3412,6 +3415,9 @@ void CBrowserAppUi::FetchHomePageL() { LOG_ENTERFN( "CBrowserAppUi::FetchHomePageL" ); + if(!iStartedUp) // just in case, not done + CompleteDelayedInit(); + if ( !Fetching() ) { UpdateSoftKeys(); diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/BrowserAppSrc/BrowserContentView.cpp --- a/browserui/browser/BrowserAppSrc/BrowserContentView.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserContentView.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -1119,16 +1119,13 @@ TVwsViewId activeViewId; if ( AppUi()->GetActiveViewId( activeViewId ) == KErrNone ) { - if ( activeViewId.iViewUid == KUidBrowserContentViewId ) - { - Cba()->MakeVisible( ETrue ); - UpdateCbaL(); - if ( Layout_Meta_Data::IsLandscapeOrientation() ) - StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL); - StatusPane()->ApplyCurrentSettingsL(); - StatusPane()->MakeVisible( ETrue ); - iContainer->SetRect( ClientRect() ); - } + Cba()->MakeVisible( ETrue ); + UpdateCbaL(); + if ( Layout_Meta_Data::IsLandscapeOrientation() ) + StatusPane()->SwitchLayoutL(R_AVKON_STATUS_PANE_LAYOUT_USUAL); + StatusPane()->ApplyCurrentSettingsL(); + StatusPane()->MakeVisible( ETrue ); + iContainer->SetRect( ClientRect() ); } } @@ -1161,7 +1158,9 @@ TRAP_IGNORE( ApiProvider().Display().UpdateSecureIndicatorL( EAknIndicatorStateOff )); iContainer->SetFocus( EFalse ); - + + EnableFullScreenModeL( EFalse); + TRAP_IGNORE( ApiProvider().BrCtlInterface().HandleCommandL( (TInt)TBrCtlDefs::ECommandLoseFocus + (TInt)TBrCtlDefs::ECommandIdBase ) ); @@ -2222,8 +2221,8 @@ { iNaviDecorator = iNaviPane->CreateNavigationLabelL(_L("")); } - } - iNaviPane->PushL( *iNaviDecorator ); + iNaviPane->PushL( *iNaviDecorator ); + } } else { @@ -3166,6 +3165,9 @@ // void CBrowserContentView::EnableFullScreenModeL( TBool aEnableFullScreen ) { + if( iContentFullScreenMode == aEnableFullScreen ) + return; + TInt command( KErrNotFound ); if ( aEnableFullScreen ) { diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp --- a/browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserContentViewContainer.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -541,16 +541,12 @@ iApiProvider.BrCtlInterface().SetRect( TRect( oldRect.iTl, Size() ) ); } } - - if ( iFindKeywordPane->IsFocused() ) - { + + if ( iFindKeywordPane->IsVisible() ) iFindKeywordPane->HandleFindSizeChanged(); - } - else - { + if ( iGotoPane->IsVisible() ) iGotoPane->HandleFindSizeChanged(); - } - + } //--------------------------------------------------------------------------- diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp --- a/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserGotoPane.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -582,34 +582,38 @@ { if ( iSearchInputFrame->Rect().Contains(aPointerEvent.iPosition)) { - if ( iSearchPaneActive ) - { - iSearchEditor->HandlePointerEventL(aPointerEvent); -#ifdef BRDO_SINGLE_CLICK_ENABLED_FF - ActivateVKB(); -#endif - } - else + if ( !iSearchPaneActive ) { SetSearchPaneActiveL(); } +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF + else + { +#endif + iSearchEditor->HandlePointerEventL(aPointerEvent); +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF + } +#endif + #if defined(BRDO_SEARCH_INTEGRATION_FF) iSearchEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB); #endif } else { - if ( iGotoPaneActive ) - { - iEditor->HandlePointerEventL(aPointerEvent); -#ifdef BRDO_SINGLE_CLICK_ENABLED_FF - ActivateVKB(); -#endif - } - else + if ( !iGotoPaneActive ) { SetGotoPaneActiveL(); } +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF + else + { +#endif + iEditor->HandlePointerEventL(aPointerEvent); +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF + } +#endif + #if defined(BRDO_SEARCH_INTEGRATION_FF) iEditor->RemoveFlagFromUserFlags( CEikEdwin::EAvkonDisableVKB); #endif diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp --- a/browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserLoadObserver.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -123,6 +123,9 @@ { if(LoadStatus( ELoadStatusSecurePage )) { + ClearStatus( ELoadStatusSecurePage ); + ClearStatus( ELoadStatusAllItemIsSecure ); + SetStatus ( ELoadStatusSecurePageVisited ); UpdateSecureIndicatorL(); } ClearStatus(); diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/BrowserAppSrc/BrowserShortcutKeyMap.cpp --- a/browserui/browser/BrowserAppSrc/BrowserShortcutKeyMap.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserShortcutKeyMap.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -333,6 +333,7 @@ for(TInt i = 0; i < KNumCells; i++) { TKeymapCellData* cellData = new (ELeave) TKeymapCellData(); + CleanupStack::PushL(cellData); TInt shortcutAssign; @@ -409,8 +410,8 @@ // add to the data array iCellData.Append(cellData); - // remove keytext, linetext from stack - CleanupStack::Pop(2); + // remove cellData, keytext, linetext from stack + CleanupStack::Pop(3); } } diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/BrowserAppSrc/BrowserWindowManager.cpp --- a/browserui/browser/BrowserAppSrc/BrowserWindowManager.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/BrowserAppSrc/BrowserWindowManager.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -544,6 +544,7 @@ { // sets the window status windowQue->iStatus |= CBrowserWindowQue::EWindowDeleted; + windowQue->iWindow->BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandNotifyPluginFocusChangeEvent + (TInt)TBrCtlDefs::ECommandIdBase); windowQue->iWindow->DeactivateL(); // maintain deleted windows' count ++iDeletedWindowCount; @@ -557,6 +558,7 @@ { // sets the window status windowQue->iStatus |= CBrowserWindowQue::EWindowDeleted; + windowQue->iWindow->BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandNotifyPluginFocusChangeEvent + (TInt)TBrCtlDefs::ECommandIdBase); windowQue->iWindow->DeactivateL(); // maintain deleted windows' count ++iDeletedWindowCount; @@ -589,6 +591,7 @@ if( windowQue != iCurrentWindow ) { wdnSwitching = ETrue; + iCurrentWindow->iWindow->BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandNotifyPluginFocusChangeEvent + (TInt)TBrCtlDefs::ECommandIdBase); iCurrentWindow->iWindow->DeactivateL(); iCurrentWindow = windowQue; } @@ -597,6 +600,7 @@ //is a background redirection if(!iCurrentWindow->iWindow->IsWindowActive() && (!iContentView->IsHistoryViewUp() || wdnSwitching)) { + iCurrentWindow->iWindow->BrCtlInterface().HandleCommandL((TInt)TBrCtlDefs::ECommandNotifyPluginFocusChangeEvent + (TInt)TBrCtlDefs::ECommandIdBase); iCurrentWindow->iWindow->ActivateL( aDraw ); iContentView->UpdateCbaL(); } diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp --- a/browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserBookmarksContainer.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -743,26 +743,36 @@ { if( iGotoPane->Rect().Contains( aPointerEvent.iPosition) ) { - if( iGotoPaneActive ) - { - iGotoPane->HandlePointerEventL(aPointerEvent); - } - else + if( !iGotoPaneActive ) { SetGotoActiveL(); } +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF + else + { +#endif + iGotoPane->HandlePointerEventL(aPointerEvent); +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF + } +#endif + iGotoPane->SetVKBFlag( ETrue ); } else if( iSearchPane->Rect().Contains( aPointerEvent.iPosition) ) { - if( iSearchPaneActive ) + if( !iSearchPaneActive ) { - iSearchPane->HandlePointerEventL(aPointerEvent); + SetSearchActiveL(); } +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF else { - SetSearchActiveL(); +#endif + iSearchPane->HandlePointerEventL(aPointerEvent); +#ifndef BRDO_SINGLE_CLICK_ENABLED_FF } +#endif + iSearchPane->SetVKBFlag( ETrue ); } else diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp --- a/browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserBookmarksGotoPane.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -705,9 +705,6 @@ if(iEditor && Rect().Contains(aPointerEvent.iPosition)) { iEditor->HandlePointerEventL(aPointerEvent); -#ifdef BRDO_SINGLE_CLICK_ENABLED_FF - ActivateVkbL(); -#endif if ( !iEditing ) { SetEditingL( ETrue ); @@ -719,8 +716,8 @@ { if(aPointerEvent.iType == TPointerEvent::EButton1Down) { - // pointer outside of control - CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneCancel); + // pointer outside of control + CBrowserAppUi::Static()->ActiveView()->HandleCommandL(EWmlCmdGotoPaneCancel); } } } diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp --- a/browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserBookmarksView.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -451,6 +451,9 @@ #ifdef __RSS_FEEDS case EWmlCmdOpenFeedsFolder: { + //complete remaining startup in Browser and then proceed + if ( !ApiProvider().StartedUp() ) + ApiProvider().CompleteDelayedInit(); ApiProvider().FeedsClientUtilities().ShowFolderViewL(); break; } @@ -930,8 +933,7 @@ aRsk.setPair(EBrowserBookmarksCmdBack, R_BROWSER_BOOKMARKS_DYN_SK_TEXT_SOFTKEY_BACK); // OR, it could be exit under these conditions - if ( !ApiProvider().StartedUp() || - (!iInAdaptiveBookmarksFolder && !ApiProvider().IsPageLoaded() && !ApiProvider().Fetching()) ) + if ( (!iInAdaptiveBookmarksFolder && !ApiProvider().IsPageLoaded() && !ApiProvider().Fetching()) ) { if ( iCurrentFolder == KFavouritesRootUid ) { @@ -1215,7 +1217,7 @@ } } - if ( TheContainer()->Listbox()->CurrentItem()->IsFolder() ) + if ( TheContainer()->Listbox()->CurrentItem() && TheContainer()->Listbox()->CurrentItem()->IsFolder() ) { SetEmptyTextL(); } @@ -1360,7 +1362,7 @@ case R_GOTO_SUBMENU: { // back to page - if ( !ApiProvider().StartedUp() || (!ApiProvider().IsPageLoaded() && !ApiProvider().Fetching())) + if ( !ApiProvider().IsPageLoaded() && !ApiProvider().Fetching()) { aMenuPane->SetItemDimmed( EWmlCmdBackToPage, ETrue ); } @@ -2154,7 +2156,9 @@ } // complete remaining application launch process, aynchronously - iAsyncComplete = CIdle::NewL( CActive::EPriorityIdle ); + // complete remaining init as soon as possible, otherwise it can be dangerous (crash) + // since UI code (views) are interdependent + iAsyncComplete = CIdle::NewL( CActive::EPriorityHigh ); iAsyncComplete->Start( TCallBack( CompleteAppInitCallback, &iApiProvider ) ); return; } @@ -2244,7 +2248,8 @@ // void CBrowserBookmarksView::UpdateFavIconsL() { - Container()->Listbox()->UpdateFavIconsL(); + if ( Container() && Container()->Listbox() ) + Container()->Listbox()->UpdateFavIconsL(); } diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/FavouritesSrc/BrowserFavouritesModel.cpp --- a/browserui/browser/FavouritesSrc/BrowserFavouritesModel.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserFavouritesModel.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -794,6 +794,7 @@ } case KFavouritesNullUid: + default: { // Check first if the item added has the same name as any of the special folders @@ -831,17 +832,13 @@ else { // New item addition. - err = iDb.Add( aItem, aRenameMode == EAutoRename ); + if ( aUid == KFavouritesNullUid) + err = iDb.Add( aItem, aRenameMode == EAutoRename ); + else // Existing item update. + err = iDb.Update( aItem, aUid, aRenameMode == EAutoRename ); } break; } - - default: - { - // Existing item update. - err = iDb.Update( aItem, aUid, aRenameMode == EAutoRename ); - break; - } } CommitL(); diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp --- a/browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/FavouritesSrc/BrowserFavouritesView.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -579,7 +579,7 @@ TInt tempUid( KFavouritesNullUid ); temp = new CBrowserFavouritesListboxState; - if ( temp!=NULL ) + if ( iContainer && temp!=NULL ) { delete iSavedListboxState; iSavedListboxState = temp; diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/FeedsInc/FeedsFeedContainer.h --- a/browserui/browser/FeedsInc/FeedsFeedContainer.h Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/FeedsInc/FeedsFeedContainer.h Thu Aug 19 09:57:56 2010 +0300 @@ -78,6 +78,12 @@ */ virtual TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent, TEventCode aType); + /** + * HandlePointerEventL + * From CCoeControl + * + */ + void HandlePointerEventL(const TPointerEvent& aPointerEvent); #ifdef __SERIES60_HELP /** * Get help context for the control. diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/FeedsSrc/FeedsFeedContainer.cpp --- a/browserui/browser/FeedsSrc/FeedsFeedContainer.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/FeedsSrc/FeedsFeedContainer.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -25,7 +25,7 @@ #include #include #include - +#include #ifdef __SERIES60_HELP // Context-Sensitve Help File #include @@ -181,7 +181,14 @@ } response = iBrowserControl->OfferKeyEventL(aKeyEvent, aType); - + if(iBrowserControl->FocusedElementType() != TBrCtlDefs::EElementAnchor && iView->Toolbar() ) + { + iView->Toolbar()->SetItemDimmed(EFeedsSeeFullStory, ETrue, ETrue); + } + else + { + iView->Toolbar()->SetItemDimmed(EFeedsSeeFullStory, EFalse, ETrue); + } // now "simulate" another key event for proper handling of middle-softkey if ( (aKeyEvent.iScanCode == EStdKeyDevice3) && (aType == EEventKeyDown) ) { @@ -543,7 +550,8 @@ { iCurrentItem = 0; } - + if (iView->Toolbar()) + iView->Toolbar()->SetItemDimmed(EFeedsSeeFullStory, EFalse, ETrue); ShowFeedItemL(); } @@ -569,7 +577,8 @@ { iCurrentItem = iFeed->GetChildren().Count() - 1; } - + if (iView->Toolbar()) + iView->Toolbar()->SetItemDimmed(EFeedsSeeFullStory, EFalse, ETrue); ShowFeedItemL(); } @@ -1111,3 +1120,12 @@ } return retParamValue; } + +void CFeedsFeedContainer::HandlePointerEventL(const TPointerEvent& aPointerEvent) + { + iBrowserControl->HandlePointerEventL(aPointerEvent); + if(iBrowserControl->FocusedElementType()!= TBrCtlDefs::EElementAnchor && iView->Toolbar() ) + { + iView->Toolbar()->SetItemDimmed(EFeedsSeeFullStory, ETrue, ETrue); + } + } diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/FeedsSrc/FeedsFeedView.cpp --- a/browserui/browser/FeedsSrc/FeedsFeedView.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/FeedsSrc/FeedsFeedView.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -309,13 +309,14 @@ if ( iContainer->ItemCount() > 1 ) { Toolbar()->SetItemDimmed(EFeedsShowPrevItem, EFalse, ETrue); - Toolbar()->SetItemDimmed(EFeedsShowNextItem, EFalse, ETrue); + Toolbar()->SetItemDimmed(EFeedsShowNextItem, EFalse, ETrue); } else { Toolbar()->SetItemDimmed(EFeedsShowPrevItem, ETrue, ETrue); - Toolbar()->SetItemDimmed(EFeedsShowNextItem, ETrue, ETrue); + Toolbar()->SetItemDimmed(EFeedsShowNextItem, ETrue, ETrue); } + Toolbar()->SetItemDimmed(EFeedsSeeFullStory, EFalse, ETrue); } // --------------------------------------------------------------------------- diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/Group/BrowserNG.mmp --- a/browserui/browser/Group/BrowserNG.mmp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/Group/BrowserNG.mmp Thu Aug 19 09:57:56 2010 +0300 @@ -70,6 +70,8 @@ LIBRARY cmmanager.lib LIBRARY browserengine.lib LIBRARY edbms.lib +LIBRARY hal.lib + #ifdef BRDO_APP_GALLERY_SUPPORTED_FF LIBRARY MGXMediaFileAPI.lib diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/Launcher2/group/BrowserLauncher.mmp --- a/browserui/browser/Launcher2/group/BrowserLauncher.mmp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/Launcher2/group/BrowserLauncher.mmp Thu Aug 19 09:57:56 2010 +0300 @@ -57,7 +57,8 @@ LIBRARY eikcore.lib LIBRARY estor.lib LIBRARY servicehandler.lib -LIBRARY centralrepository.lib +LIBRARY centralrepository.lib +LIBRARY sysutil.lib #if defined( I__BROWSER_LOG_ENABLED ) LIBRARY flogger.lib diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/Launcher2/src/BrowserLauncher.cpp --- a/browserui/browser/Launcher2/src/BrowserLauncher.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/Launcher2/src/BrowserLauncher.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -29,11 +29,13 @@ #include #include #include +#include // CONSTANTS const TInt KBrowserAppUid = 0x10008D39; const TInt KBrowserSeamlessParamLength = 20; _LIT( KBookmarkStarterString, "1 " ); +const TInt KMinimumCDriveDiskSpace = 512 * 1024; // ============================ MEMBER FUNCTIONS =============================== @@ -229,7 +231,19 @@ LOG_WRITE_FORMAT(" aExitObserver: 0x%x", aExitObserver); LOG_WRITE_FORMAT(" aSettings: 0x%x", aSettings); - TInt folderUid = 0; + // Check for ciritical disk space if starts as embeded + RFs fs; + User::LeaveIfError(fs.Connect()); + TInt drive( EDriveC ); + TBool isSpace( EFalse ); + TInt err( KErrNone ); + TRAP( err, isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL(&fs, KMinimumCDriveDiskSpace, drive )); + fs.Close(); + if (!isSpace) + User::Leave(KErrDiskFull); + + + TInt folderUid = 0; TInt folderPreferredUid = 0; // keep a local ptr to aSettings diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/Launcher2/src/LauncherServerBase.cpp --- a/browserui/browser/Launcher2/src/LauncherServerBase.cpp Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/Launcher2/src/LauncherServerBase.cpp Thu Aug 19 09:57:56 2010 +0300 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * Implementation of CLauncherServerBase * * @@ -28,27 +28,30 @@ #include "eikenv.h" #include "eikappui.h" #include "logger.h" +#include + +const TInt KMinimumCDriveDiskSpace = 512 * 1024; // ----------------------------------------------------------------------------- -// CLauncherServerBase::CBrowserLauncherService() +// CLauncherServerBase::CBrowserLauncherService() // ----------------------------------------------------------------------------- // -EXPORT_C CLauncherServerBase::CLauncherServerBase() +EXPORT_C CLauncherServerBase::CLauncherServerBase() { LOG_ENTERFN( "CLauncherServerBase::CLauncherServerBase" ); - + iClientBuffer = NULL; CEikonEnv* browserAppEnv = CEikonEnv::Static(); if ( browserAppEnv ) - { - iBrowserAppUi = ( CBrowserAppUi* ) browserAppEnv->EikAppUi(); - if ( iBrowserAppUi ) + { + iBrowserAppUi = ( CBrowserAppUi* ) browserAppEnv->EikAppUi(); + if ( iBrowserAppUi ) { iBrowserDocument = ( CBrowserAppDocument* ) iBrowserAppUi->Document(); } - } + } } - + // ----------------------------------------------------------------------------- // CLauncherServerBase::ServiceL() // ----------------------------------------------------------------------------- @@ -57,7 +60,7 @@ { LOG_ENTERFN( "CLauncherServerBase::ServiceL" ); LOG_WRITE_FORMAT(" Function: %d", aMessage.Function()); - + switch ( aMessage.Function() ) { case ELauncherSendSync : @@ -122,44 +125,44 @@ void CLauncherServerBase::HandleMessageSyncL() { LOG_ENTERFN( "CLauncherServerBase::HandleMessageSyncL" ); - + // Client parameters. These will be filled by function // UnPackLauncherDataL()... TUid embeddingApplicationUid; TBrowserOverriddenSettings settings; - TBrowserOverriddenSettings* pSettings; + TBrowserOverriddenSettings* pSettings; TInt folderUid; TPtrC seamlessParam; TBool isContentHandlerRegistered( EFalse ); - TBool isOverridenSettings( EFalse ); + TBool isOverridenSettings( EFalse ); TInt result; // The result of the processed data. - + // Read the recieved data buffer HBufC8* incomingDataBuffer = HBufC8::NewMaxLC( iMySyncMessage.GetDesLengthL( 0 ) ); TPtr8 incomingDataPointer = incomingDataBuffer->Des( ); iMySyncMessage.ReadL( 0, incomingDataPointer ); LOG_WRITE(" ReadL OK"); - - // Unpack the recieved data buffer - pSettings = &settings; - TLauncherPackageUtils::UnPackLauncherDataL( embeddingApplicationUid, - pSettings, - folderUid, - seamlessParam, - incomingDataPointer, - isContentHandlerRegistered, - isOverridenSettings ); - + + // Unpack the recieved data buffer + pSettings = &settings; + TLauncherPackageUtils::UnPackLauncherDataL( embeddingApplicationUid, + pSettings, + folderUid, + seamlessParam, + incomingDataPointer, + isContentHandlerRegistered, + isOverridenSettings ); + // Process the unpacked data. result = ProcessMessageSyncL( embeddingApplicationUid, - settings, - folderUid, - seamlessParam, - isContentHandlerRegistered ); + settings, + folderUid, + seamlessParam, + isContentHandlerRegistered ); // Cleanup, and complete the client`s request. - CleanupStack::PopAndDestroy( ); // incomingDataBuffer + CleanupStack::PopAndDestroy( ); // incomingDataBuffer iMySyncMessage.Complete( result ); } @@ -170,40 +173,51 @@ void CLauncherServerBase::HandleMessageASyncL() { LOG_ENTERFN( "CLauncherServerBase::HandleMessageASyncL" ); - + + // Check for ciritical disk space if starts in embeded mode + RFs fs; + User::LeaveIfError(fs.Connect()); + TInt drive( EDriveC ); + TBool isSpace( EFalse ); + TInt err( KErrNone ); + TRAP( err, isSpace = !SysUtil::DiskSpaceBelowCriticalLevelL(&fs, KMinimumCDriveDiskSpace, drive )); + fs.Close(); + if (!isSpace) + User::Leave(KErrDiskFull); + // Client parameters. These will be filled by function // UnPackLauncherDataL()... - TUid embeddingApplicationUid; + TUid embeddingApplicationUid; TBrowserOverriddenSettings settings; - TBrowserOverriddenSettings* pSettings; + TBrowserOverriddenSettings* pSettings; TInt folderUid; TPtrC seamlessParam; TBool isContentHandlerRegistered( EFalse ); TBool isOverridenSettings( EFalse ); - + // Read the recieved data buffer HBufC8* incomingDataBuffer = HBufC8::NewMaxLC( iMyAsyncMessage.GetDesLengthL( 0 ) ); TPtr8 incomingDataPointer = incomingDataBuffer->Des( ); iMyAsyncMessage.ReadL( 0, incomingDataPointer ); LOG_WRITE(" ReadL OK"); - - // Unpack the recieved data buffer - pSettings = &settings; - TLauncherPackageUtils::UnPackLauncherDataL( embeddingApplicationUid, - pSettings, - folderUid, - seamlessParam, - incomingDataPointer, - isContentHandlerRegistered, - isOverridenSettings ); + + // Unpack the recieved data buffer + pSettings = &settings; + TLauncherPackageUtils::UnPackLauncherDataL( embeddingApplicationUid, + pSettings, + folderUid, + seamlessParam, + incomingDataPointer, + isContentHandlerRegistered, + isOverridenSettings ); // Process the unpacked data. ProcessMessageASyncL( embeddingApplicationUid, - settings, - folderUid, - seamlessParam, - isContentHandlerRegistered, - isOverridenSettings ); + settings, + folderUid, + seamlessParam, + isContentHandlerRegistered, + isOverridenSettings ); // Cleanup. CleanupStack::PopAndDestroy( ); // incomingDataBuffer @@ -212,29 +226,29 @@ void CLauncherServerBase::HandleMessageSyncBufferL() { LOG_ENTERFN( "CLauncherServerBase::HandleMessageSyncBufferL" ); - + ProcessMessageSyncBufferL(); // And complete client`s request. iMySyncMessage.Complete( KErrNone ); } - + void CLauncherServerBase::HandleMessageSyncBoolsL() { LOG_ENTERFN( "CLauncherServerBase::HandleMessageSyncBoolsL" ); - + TBool clientWantsToContinue = iMySyncMessage.Int0(); TBool wasContentHandled = iMySyncMessage.Int1(); ProcessBoolsL( clientWantsToContinue, wasContentHandled ); // And complete client`s request. iMySyncMessage.Complete( KErrNone ); } - + void CLauncherServerBase::HandleBrowserExit() { - LOG_ENTERFN( "CLauncherServerBase::HandleBrowserExit" ); + LOG_ENTERFN( "CLauncherServerBase::HandleBrowserExit" ); DoBrowserExit( ); } - + /* Capability check will come later... CLauncherServerBase::CLauncherServerBase(TCapability aClientReqs = ECapability_None):iClientReqs(aClientReqs) { diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/SrcData/BrowserNG.rss --- a/browserui/browser/SrcData/BrowserNG.rss Thu Jul 15 18:42:04 2010 +0300 +++ b/browserui/browser/SrcData/BrowserNG.rss Thu Aug 19 09:57:56 2010 +0300 @@ -20,6 +20,7 @@ #include "Browser.rss" #include "BrowserWindowSelection.rssi" #include "BrowserInitial.rssi" +#include #ifdef __RSS_FEEDS #include "Feeds.rssi" #endif // __RSS_FEEDS @@ -34,3 +35,7 @@ RESOURCE TBUF r_qtn_browser_keyword_find_no_matches { buf = qtn_browser_keyword_find_no_matches; } RESOURCE TBUF r_qtn_browser_keyword_find_wraparound { buf = qtn_browser_keyword_find_wraparound; } RESOURCE TBUF r_qtn_browser_keyword_find_all_content_searched { buf = qtn_browser_keyword_find_all_content_searched; } + +// Misc dialogs +RESOURCE TBUF r_qtn_browser_dialog_oom { buf=qtn_memlo_ram_out_of_mem; } +RESOURCE TBUF r_qtn_OK_button { buf= text_softkey_ok; } diff -r 5a044f6358c2 -r 4baee4f15982 browserui/browser/help/data/xhtml.zip Binary file browserui/browser/help/data/xhtml.zip has changed