# HG changeset patch # User Pat Downey # Date 1246632880 -3600 # Node ID 10e98eab6f850e8f1deab0039ff2a1a2d0803bb7 # Parent 7c90e61320152080c287ae3a07fd559f820f4166 Revision: 200919 Kit: 200925 diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/browserdialogsprovider/Group/browserdialogsprovider.mmp --- a/browserutilities/browserdialogsprovider/Group/browserdialogsprovider.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/browserdialogsprovider/Group/browserdialogsprovider.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -31,7 +31,11 @@ START RESOURCE ../SrcData/BrowserDialogsProvider.rss HEADER TARGETPATH RESOURCE_FILES_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END USERINCLUDE ../Inc diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/browsertelservice/group/BrowserTelService.mmp --- a/browserutilities/browsertelservice/group/BrowserTelService.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/browsertelservice/group/BrowserTelService.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -28,7 +28,11 @@ VENDORID VID_DEFAULT CAPABILITY CAP_GENERAL_DLL -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif START RESOURCE ../data/browsertelservice.rss HEADER diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/connectionmanager/Group/ConnectionManager.mmp --- a/browserutilities/connectionmanager/Group/ConnectionManager.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/connectionmanager/Group/ConnectionManager.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -48,7 +48,11 @@ SOURCE ConnManKeyAbsorber.cpp SOURCE ConnManLogger.cpp -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif LIBRARY ESock.lib LIBRARY AknNotify.lib diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/connectionmanager/Src/InternetConnectionManager.cpp --- a/browserutilities/connectionmanager/Src/InternetConnectionManager.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/connectionmanager/Src/InternetConnectionManager.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -1359,7 +1359,8 @@ if(iConnected) { // this is a connection closed event - iConnection.Close(); + CLOG_WRITE( "ConnectionStageAchievedL() Stoping the connection instead of closing" ); + iConnection.Stop(); iConnected = EFalse; if( !iSilentMode ) diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp --- a/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrClntSubSession.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -1395,6 +1395,10 @@ iAttribs->AppendL( attrib ); CleanupStack::Pop( attrib ); } + attrib = CDefaultAttrib::NewL( EDlAttrActiveDownload, iMoIndex ); + CleanupStack::PushL( attrib ); + iAttribs->AppendL( attrib ); + CleanupStack::Pop( attrib ); HBufC8* buf = TDMgrUtils::PackedAttributesL( iAttribs ); iAttribs->ResetAndDestroy(); diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrSrvObject.cpp --- a/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrSrvObject.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrSrvObject.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -503,6 +503,11 @@ iAttribs->AppendL( attrib ); CleanupStack::Pop( attrib ); } + iDownload->GetIntAttributeL( EDlAttrActiveDownload, value ); + attrib = CDefaultAttrib::NewL( EDlAttrActiveDownload, value ); + CleanupStack::PushL( attrib ); + iAttribs->AppendL( attrib ); + CleanupStack::Pop( attrib ); HBufC8* buf = TDMgrUtils::PackedAttributesL( iAttribs ); iAttribs->ResetAndDestroy(); diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp --- a/browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrServEng/Group/HttpDMServEng.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -68,7 +68,11 @@ SOURCE DownloadDataServ.cpp SOURCE BuffStorage.cpp -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif LIBRARY Euser.lib LIBRARY http.lib diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/downloadmgr/DownloadMgrServEng/Inc/HttpDownload.h --- a/browserutilities/downloadmgr/DownloadMgrServEng/Inc/HttpDownload.h Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrServEng/Inc/HttpDownload.h Fri Jul 03 15:54:40 2009 +0100 @@ -864,6 +864,11 @@ void AppendHeadersL( TPtr8& aBuf, CArrayPtrFlat* aHeaders ); /** + * Get the size of Http headers + */ + TInt GetHttpHeadersSize(CArrayPtrFlat* aHeaders ); + + /** * Add the given header in the header array * @return None. Leaves on error. */ diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpDownload.cpp --- a/browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpDownload.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrServEng/Src/HttpDownload.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -59,6 +59,7 @@ const TInt KMaxHeaderOfMultipart = 32000; const TInt KRespSizeForRecognition = 1024; //for THttpProgressState EHttpContTypeRecognitionAvail const TInt KMinDataSizeToSend = (32*1024); //for Browser Control to call NewDownloadL +const TInt KErrCodHttpDownloadPaused = -20045; //Error code set by the CodHandler if the download is paused by the client _LIT8( KHttpScheme, "http" ); _LIT8( KHttpsScheme, "https" ); @@ -2440,7 +2441,19 @@ if( iProgState != EHttpProgMovingContentFile ) { - TriggerEvent( iDlState, aValue ? EHttpDlProgProgressive : EHttpDlProgNonProgressive); + if (aValue && iDlState == EHttpDlMultipleMOCompleted ) + { + /* + if the file size is small, by the time the music player is launched, DMgr already triggered EHttpDlCompleted. + So if the download state is EHttpDlMultipleMOCompleted, we need to trigger EHttpDlCompleted so that music player understands download is completed already + This is needed to ensure backward compatibility + */ + TriggerEvent( EHttpDlCompleted, EHttpDlProgProgressive); + } + else + { + TriggerEvent( iDlState, aValue ? EHttpDlProgProgressive : EHttpDlProgNonProgressive); + } } } else @@ -3187,7 +3200,12 @@ iLastError = EGeneral; } } - TriggerEvent( EHttpDlFailed, EHttpProgNone ); + + //if the client pauses the download, Codhandler sets error code to KErrCodHttpDownloadPaused. In that case, no need to trigger EHttpDlFailed Event + if ( result != KErrCodHttpDownloadPaused ) + { + TriggerEvent( EHttpDlFailed, EHttpProgNone ); + } } } } @@ -3998,6 +4016,16 @@ CLOG_WRITE("5"); + + TInt size = GetHttpHeadersSize(iResponseHeaders)+ GetHttpHeadersSize(iRequestHeaders)+ + GetHttpHeadersSize(iEntityHeaders)+ GetHttpHeadersSize(iGeneralHeaders) + newInfoPtr.Size(); + + + if(size >= bufSz) + { + User::LeaveIfError( KErrArgument ); + } + AppendHeadersL( newInfoPtr, iResponseHeaders ); AppendHeadersL( newInfoPtr, iRequestHeaders ); AppendHeadersL( newInfoPtr, iEntityHeaders ); @@ -6150,7 +6178,7 @@ if( iSilentMode ) { if( !((aDlState == EHttpDlInprogress && aProgState == EHttpStarted) - || aDlState == EHttpDlMultipleMOCompleted || aDlState == EHttpDlFailed )) + || aDlState == EHttpDlMultipleMOCompleted || aDlState == EHttpDlFailed || aDlState == EHttpDlCompleted )) // See EDlAttrSilent { return; @@ -6513,6 +6541,35 @@ } // ----------------------------------------------------------------------------- +// CHttpDownload::GetHttpHeadersSize +// ----------------------------------------------------------------------------- +// +TInt CHttpDownload::GetHttpHeadersSize(CArrayPtrFlat* aHeaders ) + { + TInt headers = aHeaders->Count(); + CLOG_WRITE_1("Headers: %d", headers); + + HBufC8* fieldName = NULL; + HBufC8* fieldRawData = NULL; + + TInt size = 0; + + for( TInt i = 0; i < headers; ++i ) + { + fieldName = (*aHeaders)[i]->FieldName(); + fieldRawData = (*aHeaders)[i]->FieldRawData(); + + size = size + fieldName->Size() + fieldRawData->Size(); + + CLOG_WRITE8_1( "Size = %S:", size ); + } + + return size; + + } + + +// ----------------------------------------------------------------------------- // CHttpDownload::AddHeaderL // ----------------------------------------------------------------------------- // diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/downloadmgr/DownloadMgrUiLib/Data/DownloadMgrUiLib.rss --- a/browserutilities/downloadmgr/DownloadMgrUiLib/Data/DownloadMgrUiLib.rss Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Data/DownloadMgrUiLib.rss Fri Jul 03 15:54:40 2009 +0100 @@ -310,8 +310,7 @@ RESOURCE TBUF r_dmul_download_content_saved_to_gallery { buf = qtn_browser_downloads_content_saved_to_gallery; } RESOURCE TBUF r_dmul_download_content_saved_to_downloads_folder { buf = qtn_dl_saved_to_folder; } -RESOURCE TBUF r_dmul_download_file_saved { buf = qtn_browser_downloads_file_saved; } -RESOURCE TBUF r_dmul_download_files_saved { buf = qtn_browser_downloads_files_saved; } + RESOURCE MENU_BAR r_dmul_downloadslist_menubar { @@ -386,23 +385,6 @@ }; } - -RESOURCE AIW_INTEREST r_dmul_filemanager_aiw_interest - { - items= - { - AIW_CRITERIA_ITEM - { - id = KAiwCmdEdit; - serviceCmd = KAiwCmdEdit; - contentType = "*"; - serviceClass = KAiwClassBase; - defaultProvider = 0x200110F9; // The service UID - maxProviders = 1; - } - }; - } - RESOURCE TBUF r_dmul_download_del_conf { buf = qtn_query_common_conf_delete; } RESOURCE TBUF r_dmul_download_can_conf { buf = qtn_browser_downloads_query_cancel; } @@ -482,6 +464,35 @@ RESOURCE TBUF r_dmul_cancel_button { buf = text_softkey_cancel; } RESOURCE TBUF r_dmul_ok_button { buf = text_softkey_accept; } +// ----------------------------------------------------------------------------- +// +// For Gallery removal Changes +// +// ----------------------------------------------------------------------------- +// + +RESOURCE TBUF r_dmul_download_file_saved { buf = qtn_browser_downloads_file_saved; } +RESOURCE TBUF r_dmul_download_files_saved { buf = qtn_browser_downloads_files_saved; } + +RESOURCE AIW_INTEREST r_dmul_filemanager_aiw_interest + { + items= + { + AIW_CRITERIA_ITEM + { + id = KAiwCmdEdit; + serviceCmd = KAiwCmdEdit; + contentType = "*"; + serviceClass = KAiwClassBase; + defaultProvider = 0x200110F9; // The service UID + maxProviders = 1; + } + }; + } + // End of File + + + diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp --- a/browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Group/DownloadMgrUiLib.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -33,7 +33,11 @@ START RESOURCE ../Data/DownloadMgrUiLib.rss HEADER -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif TARGETPATH RESOURCE_FILES_DIR END // RESOURCE diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp --- a/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/downloadmgr/DownloadMgrUiLib/Src/CDownloadsListArray.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -109,8 +109,11 @@ CLOG_WRITE(" iSavedToGalleryString OK"); iSavedToDownloadsFolderString= iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_CONTENT_SAVED_TO_DOWNLOADS_FOLDER); CLOG_WRITE(" iSavedToGalleryDownload OK"); - iFileSavedString = iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_FILE_SAVED ); - iFilesSavedString = iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_FILES_SAVED ); + + #ifndef BRDO_APP_GALLERY_SUPPORTED_FF + iFileSavedString = iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_FILE_SAVED ); + iFilesSavedString = iCoeEnv.AllocReadResourceL( R_DMUL_DOWNLOAD_FILES_SAVED ); + #endif iNullDesC = KNullDesC().AllocL(); @@ -188,10 +191,14 @@ iSavedToGalleryString = 0; delete iSavedToDownloadsFolderString; iSavedToDownloadsFolderString=0; - delete iFileSavedString; - iFileSavedString = 0; - delete iFilesSavedString; - iFilesSavedString = 0; + + #ifndef BRDO_APP_GALLERY_SUPPORTED_FF + delete iFileSavedString; + iFileSavedString = 0; + delete iFilesSavedString; + iFilesSavedString = 0; + #endif + delete iNullDesC; iNullDesC = 0; iApaLsSess.Close(); diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/feedsengine/FeedsServer/Server/inc/FeedsDatabase.h --- a/browserutilities/feedsengine/FeedsServer/Server/inc/FeedsDatabase.h Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/feedsengine/FeedsServer/Server/inc/FeedsDatabase.h Fri Jul 03 15:54:40 2009 +0100 @@ -81,6 +81,29 @@ TBool FeedIdFromUrlL(const TDesC& aFeedUrl, TInt aFolderListId, TInt& aFeedId); /** + * Returns the feed id of the feed with the given entry id. + * + * @since 7.1 + * @param aEntryId The feed's folder item id + * @param aFolderListId The folder list ID of the feed. + * @param aFeedId The resulting FolderListTable feed id. + * @return ETrue if the feed was resolved. + */ + + TBool CFeedsDatabase::FeedIdFromEntryId(const TInt& aEntryId, TInt aFolderListId, TInt& aFeedId); + + /** + * Returns the feed id of the entry id with the given feed. + * + * @since 7.1 + * @param aFeedId The resulting FolderListTable feed id. + * @param aFolderListId The folder list ID of the feed. + * @param aEntryId The feed's folder item id + * @return ETrue if the feed was resolved. + */ + TBool CFeedsDatabase::EntryIdFromFeedId(const TInt& aFeedId, TInt aFolderListId, TInt& aEntryId); + + /** * Return the folder list ID of the feed with the given feed-id. * * @since 3.2 @@ -1007,11 +1030,16 @@ * @return void */ void GenerateNewFeedFolderTitleL( - const TInt &aFolderListId, - const TInt &aParentEntryId, - const TDesC& aTitle, - TDes& aNewFeedTitle - ); + const TInt &aFolderListId, + const TInt &aParentEntryId, + const TDesC& aTitle, + TDes& aNewFeedTitle + ); + + inline void SetIsFolderTableUpdateNeeded (TBool aIsFolderTableUpdateNeeded) + { + iIsFolderTableUpdateNeeded = aIsFolderTableUpdateNeeded; + } private: // Data TLeakTracker iLeakTracker; @@ -1045,11 +1073,13 @@ TInt iSettingsTableRefCount; TInt iNextAvailableFeedId; - - RArray iDeleteFolderArray; // This array will be populated when session calls delete - CFeedsServer* iFeedsServer; - - + + RArray iDeleteFolderArray; // This array will be populated when session calls delete + CFeedsServer* iFeedsServer; + + TBool iIsFolderTableUpdateNeeded; + + friend class CImportFeedsTask; friend class CFeedsServerSession; }; diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/feedsengine/FeedsServer/Server/src/FeedsDatabase.cpp --- a/browserutilities/feedsengine/FeedsServer/Server/src/FeedsDatabase.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/feedsengine/FeedsServer/Server/src/FeedsDatabase.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -297,7 +297,7 @@ // ----------------------------------------------------------------------------- // CFeedsDatabase::CFeedsDatabase(CFeedsServer* aFeedsServer): - iLeakTracker(CLeakTracker::EFeedsDatabase),iFeedsServer(aFeedsServer) + iLeakTracker(CLeakTracker::EFeedsDatabase),iFeedsServer(aFeedsServer),iIsFolderTableUpdateNeeded(EFalse) { } @@ -1407,7 +1407,7 @@ { TBool isFolder; // TInt folderListId; - + // Update the title in the folder list table. iFolderListTable.GetL(); iFolderListTable.UpdateL(); @@ -1431,24 +1431,27 @@ // } - UseFeedTableLC(RDbTable::EUpdatable); - TDbSeekKey seekKey((TUint16) feedId); - - if (iFeedTable.SeekL(seekKey)) - { - iFeedTable.GetL(); - iFeedTable.UpdateL(); - } - else - { - User::Leave(KErrCorrupt); - } - iFeedTable.SetColL(iFeedColSet->ColNo(KTitle_100MaxLen), aTitle.Left(K100MaxLen)); - WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KFeedUrl), aUrl); + UseFeedTableLC(RDbTable::EUpdatable); + TDbSeekKey seekKey((TUint16) feedId); + + if (iFeedTable.SeekL(seekKey)) + { + iFeedTable.GetL(); + iFeedTable.UpdateL(); + } + else + { + User::Leave(KErrCorrupt); + } + iFeedTable.SetColL(iFeedColSet->ColNo(KTitle_100MaxLen), aTitle.Left(K100MaxLen)); + if (aUrl.Length() > 0) + { + WriteLongTextL(iFeedTable, iFeedColSet->ColNo(KFeedUrl), aUrl); + } iFeedTable.SetColL(iFeedColSet->ColNo(KAutoUpdateFreq), aFreq); - iFeedTable.PutL(); - CleanupStack::PopAndDestroy(/*feed table*/); - // Set the feed id. + iFeedTable.PutL(); + CleanupStack::PopAndDestroy(/*feed table*/); + // Set the feed id. //iFolderListTable.SetColL(iFolderListColSet->ColNo(KFeedId), feedId); } @@ -2781,7 +2784,14 @@ iFeedTable.SetColL(iFeedColSet->ColNo(KUnreadCount), unreadCount); iFeedTable.PutL(); - + + if (iIsFolderTableUpdateNeeded) + { + //update the folder table. + TInt entryId; + EntryIdFromFeedId(aFeedId, aFolderListId, entryId); + FolderItemUpdateL(entryId, title, KNullDesC, KAutoUpdatingOff); + } } @@ -4381,6 +4391,96 @@ CleanupStack::PopAndDestroy(/* iFeedTable */); } +// ----------------------------------------------------------------------------- +// CFeedsDatabase::FeedIdFromEntryId +// +// Returns the feed id of the feed with the given entry id. +// ----------------------------------------------------------------------------- +// +TBool CFeedsDatabase::FeedIdFromEntryId(const TInt& aEntryId, TInt aFolderListId, TInt& aFeedId) + { + RDbView view; + TBool found = EFalse; + HBufC* query = NULL; + + // Create a view given this select... + // SELECT FeedId FROM FeedTable WHERE FeedUrl = 'aFeedUrl' AND FolderListId = aFolderListId + _LIT(KQuery, "SELECT FeedId FROM FolderListTable WHERE FolderItemId = %d AND FolderListId = %d"); + + query = HBufC::NewLC( KQuery().Length() + KIntLength + KIntLength ); + + query->Des().Format( KQuery, aEntryId, aFolderListId ); + + User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(*query), RDbView::EReadOnly)); + CleanupClosePushL(view); + + CDbColSet* colSet = view.ColSetL(); + CleanupStack::PushL(colSet); + + // Search for the feed. + if (view.Evaluate() >= 0) + { + if (view.FirstL()) + { + // Get the feed id. + view.GetL(); + aFeedId = view.ColUint16(colSet->ColNo(KFeedId)); + found = ETrue; + } + } + + CleanupStack::PopAndDestroy(colSet); + CleanupStack::PopAndDestroy(/*view*/); + CleanupStack::PopAndDestroy(query); + + return found; + } + +// ----------------------------------------------------------------------------- +// CFeedsDatabase::EntryIdFromFeedId +// +// Returns the feed id of the feed with the given entry id. +// ----------------------------------------------------------------------------- +// +TBool CFeedsDatabase::EntryIdFromFeedId(const TInt& aFeedId, TInt aFolderListId, TInt& aEntryId) + { + RDbView view; + TBool found = EFalse; + HBufC* query = NULL; + + // Create a view given this select... + // SELECT FeedId FROM FeedTable WHERE FeedUrl = 'aFeedUrl' AND FolderListId = aFolderListId + _LIT(KQuery, "SELECT FolderItemId FROM FolderListTable WHERE FeedId = %d AND FolderListId = %d"); + + query = HBufC::NewLC( KQuery().Length() + KIntLength + KIntLength ); + + query->Des().Format( KQuery, aFeedId, aFolderListId ); + + User::LeaveIfError(view.Prepare(iDatabase, TDbQuery(*query), RDbView::EReadOnly)); + CleanupClosePushL(view); + + CDbColSet* colSet = view.ColSetL(); + CleanupStack::PushL(colSet); + + // Search for the feed. + if (view.Evaluate() >= 0) + { + if (view.FirstL()) + { + // Get the feed id. + view.GetL(); + aEntryId = view.ColUint16(colSet->ColNo(KFolderItemId)); + found = ETrue; + } + } + + CleanupStack::PopAndDestroy(colSet); + CleanupStack::PopAndDestroy(/*view*/); + CleanupStack::PopAndDestroy(query); + + return found; + } + #if defined(_DEBUG) // ----------------------------------------------------------------------------- // CFeedsDatabase::DebugPrintTables diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/feedsengine/FeedsServer/Server/src/FeedsServerSession.cpp --- a/browserutilities/feedsengine/FeedsServer/Server/src/FeedsServerSession.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/feedsengine/FeedsServer/Server/src/FeedsServerSession.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -619,7 +619,9 @@ TPckg typePkg(type); TInt folderListId = KNoFolderListId; const TInt KAutoUpdatingOff = 0; - iCurrentRequest = 1; + const TInt KRootFolderId = 0; + + iCurrentRequest = 1; // Note: The a packed feed is made up of two buffers, a buffer of tokens // and a string table buffer. The tokens define the structure of the // feed where the string table contains the feed's data. This @@ -679,7 +681,10 @@ //Gyanendra TODO // should create entry into database if (!iFeedsServer.iFeedsDatabase->FeedIdFromUrlL(feedUrl, folderListId, feedId)) { - feedId = iFeedsServer.iFeedsDatabase->CommitFeedL(folderListId,KNullDesC,feedUrl, KAutoUpdatingOff); + //Find feed id from folder id + iFeedsServer.iFeedsDatabase->SetIsFolderTableUpdateNeeded(ETrue); + TInt entryId = iFeedsServer.iFeedsDatabase->FolderItemAddL(folderListId, feedUrl, feedUrl, EFalse, KRootFolderId, KAutoUpdatingOff); + iFeedsServer.iFeedsDatabase->FeedIdFromEntryId(entryId, folderListId, feedId); updateNeeded = ETrue; } } diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/feedsengine/FeedsServer/Server/src/UpdateFeedTask.cpp --- a/browserutilities/feedsengine/FeedsServer/Server/src/UpdateFeedTask.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/feedsengine/FeedsServer/Server/src/UpdateFeedTask.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -195,12 +195,12 @@ iObserver.Completed(iPackedFeed, *iUrl,iFeedId, err); iPackedFeed = NULL; } - + // The load failed, exit cleanly. else { // Pass the status to the observer. - iObserver.Completed(NULL, *iUrl,iFeedId, aStatusCode); + iObserver.Completed(NULL, *iUrl,iFeedId, ((aStatusCode == KErrNone)? KErrCorrupt:aStatusCode)); } } diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/feedsengine/FeedsServer/UrlHandler/src/HttpHandler.cpp --- a/browserutilities/feedsengine/FeedsServer/UrlHandler/src/HttpHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/feedsengine/FeedsServer/UrlHandler/src/HttpHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -135,41 +135,44 @@ // Create the transaction. iTransaction = iSession.OpenTransactionL(uriParser, *this, - iSession.StringPool().StringF(HTTP::EGET, RHTTPSession::GetTable())); + iSession.StringPool().StringF(HTTP::EGET, RHTTPSession::GetTable())); // TODO: Set the headers if any. - //++PK Add UA header code - - iUserAgentHeader = iTransaction.Request().GetHeaderCollection(); - - CUserAgent* tWebUtilsStandardUA = CUserAgent::NewL(); + //++PK Add UA header code + + iUserAgentHeader = iTransaction.Request().GetHeaderCollection(); + + CUserAgent* tWebUtilsStandardUA = CUserAgent::NewL(); CleanupStack::PushL(tWebUtilsStandardUA); - - HBufC8* tWebUtilsStandardUAHeaderValue = tWebUtilsStandardUA->UserAgentL(); - - RStringF tStringValue = iSession.StringPool().OpenFStringL(*tWebUtilsStandardUAHeaderValue); - - THTTPHdrVal tHeaderValue( tStringValue ); - - RStringF tStringUA = iSession.StringPool().StringF(HTTP::EUserAgent, RHTTPSession::GetTable()); - - iUserAgentHeader.SetFieldL( tStringUA, tStringValue ); - - //++PK + + HBufC8* tWebUtilsStandardUAHeaderValue = tWebUtilsStandardUA->UserAgentL(); + CleanupStack::PushL(tWebUtilsStandardUAHeaderValue); + + RStringF tStringValue = iSession.StringPool().OpenFStringL(*tWebUtilsStandardUAHeaderValue); + + THTTPHdrVal tHeaderValue( tStringValue ); + + RStringF tStringUA = iSession.StringPool().StringF(HTTP::EUserAgent, RHTTPSession::GetTable()); + + iUserAgentHeader.SetFieldL( tStringUA, tStringValue ); + + //++PK // Submit the request. - iTransaction.SubmitL(); + iTransaction.SubmitL(); // If the connection is available it is safe to tell to the observer // to display progress indicators (i.e. a wait-dialog). if (iHttpConnection->IsConnected()) { iObserver->StartWait(); - + // Start the inactive connection timer as well. iTimer->Start(KTimerPeriod, KTimerPeriod, iTimerState); iLastActivity.HomeTime(); } + tStringValue.Close(); + CleanupStack::PopAndDestroy(tWebUtilsStandardUAHeaderValue); CleanupStack::PopAndDestroy(tWebUtilsStandardUA); CleanupStack::PopAndDestroy(url); } diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/feedsengine/group/FeedsApp.mmp --- a/browserutilities/feedsengine/group/FeedsApp.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/feedsengine/group/FeedsApp.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -36,7 +36,11 @@ START RESOURCE ../data/FeedsApp.rss HEADER TARGETPATH APP_RESOURCE_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END // Client UI sources diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/group/bld.inf --- a/browserutilities/group/bld.inf Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/group/bld.inf Fri Jul 03 15:54:40 2009 +0100 @@ -24,7 +24,9 @@ #include "../browsertelservice/group/bld.inf" #include "../favouritesengine/group/bld.inf" #include "../feedsengine/group/bld.inf" +#ifdef BRDO_MULTIPART_PARSER_FF #include "../multipartparser/group/bld.inf" +#endif #include "../schemehandler/group/bld.inf" #include "../webutils/group/bld.inf" #include "../aiwbrowserprovider/group/bld.inf" diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/multipartparser/group/bld.inf --- a/browserutilities/multipartparser/group/bld.inf Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/multipartparser/group/bld.inf Fri Jul 03 15:54:40 2009 +0100 @@ -16,8 +16,9 @@ */ #include +#include "../../../web_plat/browser_platform_api/inc/Browser_platform_variant.hrh" -#include "../../../web_plat/browser_platform_api/inc/Browser_platform_variant.hrh" +#ifdef BRDO_MULTIPART_PARSER_FF PRJ_PLATFORMS DEFAULT @@ -28,3 +29,4 @@ PRJ_MMPFILES ./MultipartParser.mmp +#endif \ No newline at end of file diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/schemehandler/SchemeApp/group/SchemeApp.mmp --- a/browserutilities/schemehandler/SchemeApp/group/SchemeApp.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/schemehandler/SchemeApp/group/SchemeApp.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -47,7 +47,11 @@ START RESOURCE ../data/SchemeApp.rss HEADER TARGETPATH APP_RESOURCE_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END // RESOURCE USERINCLUDE ../inc diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/webutils/conf/webutils.confml Binary file browserutilities/webutils/conf/webutils.confml has changed diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/webutils/conf/webutils.confml.bak Binary file browserutilities/webutils/conf/webutils.confml.bak has changed diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/webutils/conf/webutils_101F8731.crml Binary file browserutilities/webutils/conf/webutils_101F8731.crml has changed diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/webutils/src/CUserAgent.cpp --- a/browserutilities/webutils/src/CUserAgent.cpp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/webutils/src/CUserAgent.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -30,9 +30,8 @@ #define KPlaceHolderMozillaVer _L("Mozilla/5.0") -#define KPlaceHolderSecurity _L("U;") -#define KPlaceHolderComponent _L("AppleWebKit/525 (KHTML, like Gecko) Version/3.0 Safari/525") -#define KPlaceHolderBrowserName _L("WicKed") +#define KPlaceHolderComponent _L("AppleWebKit/525 (KHTML, like Gecko) Version/3.0") +#define KPlaceHolderBrowserName _L("BrowserNG") #define KPlaceHolderSlash _L("/") #define KPlaceHolderSymbianOS _L("SymbianOS") @@ -199,6 +198,7 @@ { LOG_ENTERFN("CUserAgent::ReadUserAgentStringL()"); TInt retCode (KErrNotReady); + TBuf<64> ignoreConfig(0); // If the string queried already, dont read again if(iUAStrQueried) @@ -215,33 +215,35 @@ User::Leave(KErrNotReady); } - /* ---------------- Read default UA string ---------------- */ - LOG_WRITE("Reading default UA string from cenrep."); if(!iBrowserCenrepStr) { iBrowserCenrepStr = HBufC::NewL(KMaxUserAgentStringLength); } TPtr tempPtr = iBrowserCenrepStr->Des(); - - retCode = iRepository->Get(EDefaultUserAgentString, tempPtr); - if(retCode != KErrNone) - { - LOG_WRITE_FORMAT("Error: Reading default UA string from cenrep failed! (%d)",retCode); - LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()"); - User::Leave(retCode); + retCode = iRepository->Get(KWebUtilsIgnoreConfig, ignoreConfig); + if(retCode != KErrNone || ignoreConfig == _L("0")) + {/* ---------------- Read default UA string ---------------- */ + LOG_WRITE("Reading default UA string from cenrep."); + + retCode = iRepository->Get(EDefaultUserAgentString, tempPtr); + if(retCode != KErrNone) + { + LOG_WRITE_FORMAT("Error: Reading default UA string from cenrep failed! (%d)",retCode); + LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()"); + User::Leave(retCode); + } + + if(!IsUAStringEmpty(tempPtr)) + { + LOG_WRITE("Successfully read default UA string from cenrep, can use this as UA string"); + + iUAStrQueried = TRUE; + + LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()"); + return; + } } - - if(!IsUAStringEmpty(tempPtr)) - { - LOG_WRITE("Successfully read default UA string from cenrep, can use this as UA string"); - - iUAStrQueried = TRUE; - - LOG_LEAVEFN("CUserAgent::ReadUserAgentDataL()"); - return; - } - ReadAndCreateUAStringL(tempPtr); LOG_WRITE("Successfully created a new UA string."); @@ -269,6 +271,9 @@ void CUserAgent::ReadMMSUserAgentStringL() { + + // MMS UA Format: ; + LOG_ENTERFN("CUserAgent::ReadMMSUserAgentStringL()"); TInt retCode (KErrNotReady); @@ -315,13 +320,27 @@ } /* ---------------- Read all variant fragments and build a UA string ---------------- */ - ReadAndCreateUAStringL(tempPtr); + GetMMSFragmentsL(); + tempPtr.Append(iMMSHardwareType); + tempPtr.Append(KSpaceChar); + tempPtr.Append(iMMSS60Version); + tempPtr.Append(KSpaceChar); + tempPtr.Append(iMMSMIDPVersion); + tempPtr.Append(KSpaceChar); + tempPtr.Append(iMMSCLDCVersion); + + if(!IsUAStringEmpty(tempPtr)) + { + LOG_WRITE("Successfully created a new MMS UA string."); + } + else + { + LOG_WRITE("Failed to create a new MMS UA string...Exiting anyway"); + } - LOG_WRITE("Successfully created a new MMS UA string."); - iMMSUAStrQueried = TRUE; - LOG_LEAVEFN("CUserAgent::ReadMMSUserAgentStringL()"); - return; + LOG_LEAVEFN("CUserAgent::ReadMMSUserAgentStringL()"); + return; } // --------------------------------------------------------- @@ -346,35 +365,37 @@ // --------------------------------------------------------- void CUserAgent::GetFragmentsL() { - -#ifdef BRDO_BROWSER_50_FF - TInt osExtFailed(0); - TRAP(osExtFailed, GetFragmentsFromOSExtL()); -#endif - if(iSymbianVersion.Length() <= 0) { - LOG_WRITE("Reading SymbianVersion from osext extended api or cenrep."); - User::LeaveIfError(GetCenRepFragment(ESymbianOSVersion, iSymbianVersion)); + LOG_WRITE("Reading SymbianVersion from cenrep."); + GetCenRepFragment(ESymbianOSVersion, iSymbianVersion); } - if(iS60Version.Length() <= 0) { - LOG_WRITE("Reading S60Version from osext extended api or cenrep."); - User::LeaveIfError(GetCenRepFragment(ES60Version, iS60Version)); + LOG_WRITE("Reading S60Version from cenrep."); + GetCenRepFragment(ES60Version, iS60Version); } - if(iHardwareType.Length() <= 0) { - LOG_WRITE("Reading HardwareVersion from osext extended api or cenrep."); - User::LeaveIfError(GetCenRepFragment(EHardwareType, iHardwareType)); + LOG_WRITE("Reading HardwareVersion from cenrep."); + GetCenRepFragment(EHardwareType, iHardwareType); + if(iHardwareType.Length() > 0) + { iHardwareType.Append(KPlaceHolderSemiColon); + } } - if(iMIDPCLDCVersion.Length() <= 0) { - LOG_WRITE("Reading MIDPCLDCVersion from osext extended api or cenrep."); - User::LeaveIfError(GetCenRepFragment(EMIDP_CLDCVersion, iMIDPCLDCVersion)); + LOG_WRITE("Reading MIDPCLDCVersion from cenrep."); + GetCenRepFragment(EMIDP_CLDCVersion, iMIDPCLDCVersion); } + //Only for 5.0 and above as 3.2 does not support OSExt APIs. + #ifdef BRDO_BROWSER_50_FF + if(iSymbianVersion.Length() <= 0 || iS60Version.Length() <= 0 || iHardwareType.Length() <= 0) + { + LOG_WRITE("Read from CenRep Failed... trying osext extended api"); + GetFragmentsFromOSExtL(); + } + #endif } // --------------------------------------------------------- @@ -385,36 +406,33 @@ { GetFragmentsL(); - // - // Mozilla/5.0 ( U; [en]; ) AppleWebKit/413 (KHTML, like Gecko) Safari/413 - // - + // Mozilla/5.0 ( ) AppleWebKit/413 (KHTML, like Gecko) BrowserName/Version + aUAStringPtr.Copy(KPlaceHolderMozillaVer); aUAStringPtr.Append(KSpaceChar); - - aUAStringPtr.Append(KPlaceHolderOpen); - - aUAStringPtr.Append(iSymbianVersion); - aUAStringPtr.Append(KSpaceChar); - - aUAStringPtr.Append(KPlaceHolderSecurity); + if(iSymbianVersion.Length() > 0 || iS60Version.Length() > 0 || iHardwareType.Length() > 0 || iMIDPCLDCVersion.Length() > 0) + { + aUAStringPtr.Append(KPlaceHolderOpen); + + aUAStringPtr.Append(iSymbianVersion); + aUAStringPtr.Append(KSpaceChar); + + aUAStringPtr.Append(iS60Version); + aUAStringPtr.Append(KSpaceChar); + + aUAStringPtr.Append(iHardwareType); + aUAStringPtr.Append(KSpaceChar); + + aUAStringPtr.Append(iMIDPCLDCVersion); + aUAStringPtr.Append(KSpaceChar); + + aUAStringPtr.Append(KPlaceHolderClose); + } aUAStringPtr.Append(KSpaceChar); - - aUAStringPtr.Append(iS60Version); - aUAStringPtr.Append(KSpaceChar); - - aUAStringPtr.Append(iHardwareType); - - aUAStringPtr.Append(KSpaceChar); - aUAStringPtr.Append(iMIDPCLDCVersion); - aUAStringPtr.Append(KSpaceChar); - aUAStringPtr.Append(KPlaceHolderClose); + aUAStringPtr.Append(KPlaceHolderComponent); aUAStringPtr.Append(KSpaceChar); aUAStringPtr.Append(iBrowserNameAndVersionStr->Des()); - - aUAStringPtr.Append(KSpaceChar); - aUAStringPtr.Append(KPlaceHolderComponent); } // --------------------------------------------------------- @@ -712,11 +730,63 @@ // ------------------------------------------------------------------------------- void CUserAgent::GetBrowserNameAndVersionL() { + TInt ret(0); + TBuf<64> BrowserName(0); TInt length = KMaxBrowserVersionStringLength + KMaxBrowserNameLength; iBrowserNameAndVersionStr = HBufC::NewL( length); - - iBrowserNameAndVersionStr->Des().Append(KPlaceHolderBrowserName); + + ret = iRepository->Get(KWebUtilsBrowserName, BrowserName); + if(ret != KErrNone) + { + LOG_WRITE("Error: Reading default Browser Name from cenrep failed!"); + iBrowserNameAndVersionStr->Des().Append(KPlaceHolderBrowserName); + } + else + { + iBrowserNameAndVersionStr->Des().Append(BrowserName); + } iBrowserNameAndVersionStr->Des().Append(KPlaceHolderSlash); iBrowserNameAndVersionStr->Des().Append( *iBrowserVersionStr ); } + +// --------------------------------------------------------- +// CUserAgent::GetFragmentsL() +// Gets all required fragments from OSExt APIs/CenRep +// --------------------------------------------------------- +void CUserAgent::GetMMSFragmentsL() + { + if(iMMSHardwareType.Length() <= 0) + { + LOG_WRITE("Reading HardwareVersion from cenrep."); + iRepository->Get(KWebUtilsMMSUsrAg2, iMMSHardwareType); + if(iMMSHardwareType.Length() > 0) + { iMMSHardwareType.Append(KPlaceHolderSemiColon); + } + } + if(iMMSS60Version.Length() <= 0) + { + LOG_WRITE("Reading S60Version from cenrep."); + iRepository->Get(KWebUtilsMMSUsrAg3, iMMSS60Version); + } + if(iMMSMIDPVersion.Length() <= 0) + { + LOG_WRITE("Reading MIDPCLDCVersion from cenrep."); + iRepository->Get(KWebUtilsMMSUsrAg4, iMMSMIDPVersion); + } + if(iMMSCLDCVersion.Length() <= 0) + { + LOG_WRITE("Reading MIDPCLDCVersion from cenrep."); + iRepository->Get(KWebUtilsMMSUsrAg5, iMMSCLDCVersion); + } + //Only for 5.0 and above as 3.2 does not support OSExt APIs. + #ifdef BRDO_BROWSER_50_FF + if(iMMSS60Version.Length() <= 0 || iMMSHardwareType.Length() <= 0) + { + LOG_WRITE("Read from CenRep Failed... trying osext extended api"); + GetFragmentsFromOSExtL(); + iMMSHardwareType = iHardwareType; + iMMSS60Version = iS60Version; + } + #endif + } // End of file diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/webutils/tsrc/public/adv/group/WebUtilsBCTest.mmp --- a/browserutilities/webutils/tsrc/public/adv/group/WebUtilsBCTest.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/webutils/tsrc/public/adv/group/WebUtilsBCTest.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -57,7 +57,11 @@ LIBRARY webutils.lib LIBRARY Centralrepository.lib -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif /* START WINS diff -r 7c90e6132015 -r 10e98eab6f85 browserutilities/xmlparser/group/XMLInterface.mmp --- a/browserutilities/xmlparser/group/XMLInterface.mmp Fri May 08 08:25:06 2009 +0300 +++ b/browserutilities/xmlparser/group/XMLInterface.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -61,7 +61,11 @@ LIBRARY charconv.lib LIBRARY cxmlparser.lib -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif /* START WINS ?wins_specific_information diff -r 7c90e6132015 -r 10e98eab6f85 codhandler/codui/group/CodUi.mmp --- a/codhandler/codui/group/CodUi.mmp Fri May 08 08:25:06 2009 +0300 +++ b/codhandler/codui/group/CodUi.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -46,7 +46,11 @@ START RESOURCE ../data/CodUi.rss HEADER TARGETPATH RESOURCE_FILES_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END USERINCLUDE ../inc diff -r 7c90e6132015 -r 10e98eab6f85 codhandler/codui/src/CodDownloadImpl.cpp --- a/codhandler/codui/src/CodDownloadImpl.cpp Fri May 08 08:25:06 2009 +0300 +++ b/codhandler/codui/src/CodDownloadImpl.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -207,7 +207,7 @@ if(iDownloadPaused) { - iEng->Start(aParams,&iStatus); + iEng->Start(iParams,&iStatus); SetActive(); iState = ELoad; iProgress.iState = TCodDownloadProgress::EInProgress; diff -r 7c90e6132015 -r 10e98eab6f85 codhandler/codviewer/group/CodViewer.mmp --- a/codhandler/codviewer/group/CodViewer.mmp Fri May 08 08:25:06 2009 +0300 +++ b/codhandler/codviewer/group/CodViewer.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -35,7 +35,11 @@ START RESOURCE ../data/CodViewer.rss HEADER TARGETPATH APP_RESOURCE_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END SYSTEMINCLUDE ../../CodEng/inc diff -r 7c90e6132015 -r 10e98eab6f85 codhandler/ddviewer/group/DdViewer.mmp --- a/codhandler/ddviewer/group/DdViewer.mmp Fri May 08 08:25:06 2009 +0300 +++ b/codhandler/ddviewer/group/DdViewer.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -35,7 +35,11 @@ START RESOURCE ../data/DdViewer.rss HEADER TARGETPATH APP_RESOURCE_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END SYSTEMINCLUDE ../../CodEng/inc diff -r 7c90e6132015 -r 10e98eab6f85 codhandler/roapapp/group/RoapApp.mmp --- a/codhandler/roapapp/group/RoapApp.mmp Fri May 08 08:25:06 2009 +0300 +++ b/codhandler/roapapp/group/RoapApp.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -43,7 +43,11 @@ START RESOURCE ../data/RoapApp.rss HEADER TARGETPATH APP_RESOURCE_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END USERINCLUDE ../inc diff -r 7c90e6132015 -r 10e98eab6f85 codhandler/roapapp/src/RoapAppUi.cpp --- a/codhandler/roapapp/src/RoapAppUi.cpp Fri May 08 08:25:06 2009 +0300 +++ b/codhandler/roapapp/src/RoapAppUi.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -49,14 +49,10 @@ #ifdef __SERIES60_HELP // Context-Sensitve Help File -#include +#include #endif // __SERIES60_HELP -//#include "browser.hlp.hrh" // replace with DRMUI.hlp.hrh when ready // ================= CONSTANTS ======================= -/// For launching more info DRM_HLP_REGISTRATION -_LIT(KDRM_HLP_REGISTRATION,"DRM_HLP_REGISTRATION"); - /// Temp file directory: _LIT( KRoapTempFilePath, "c:\\system\\temp\\" ); @@ -377,7 +373,7 @@ { TInt err( KErrNone ); CRoapAppUi* self = static_cast(aPtr); - TRAP( err, self->LaunchHelpL( KDRM_HLP_REGISTRATION ) ); // KOSS_HLP_SAVED_PAGES for testing + TRAP( err, self->LaunchHelpL( KDRM_HLP_REGISTRATION ) ); return err; } @@ -987,3 +983,4 @@ CLOG(( 2, _L("<- CRoapAppUi::HandleDMgrEventL") )); } + diff -r 7c90e6132015 -r 10e98eab6f85 web_plat/browser_platform_api/group/bld.inf --- a/web_plat/browser_platform_api/group/bld.inf Fri May 08 08:25:06 2009 +0300 +++ b/web_plat/browser_platform_api/group/bld.inf Fri Jul 03 15:54:40 2009 +0100 @@ -23,5 +23,8 @@ PRJ_EXPORTS ../inc/Browser_platform_variant.hrh MW_LAYER_PLATFORM_EXPORT_PATH(Browser_platform_variant.hrh) +#ifdef BRDO_ADDED_EXPORT_LOCATION +../inc/Browser_platform_variant.hrh BRDO_ADDED_EXPORT_LOCATION(Browser_platform_variant.hrh) +#endif PRJ_MMPFILES diff -r 7c90e6132015 -r 10e98eab6f85 web_plat/browser_platform_api/inc/Browser_platform_variant.hrh --- a/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh Fri May 08 08:25:06 2009 +0300 +++ b/web_plat/browser_platform_api/inc/Browser_platform_variant.hrh Fri Jul 03 15:54:40 2009 +0100 @@ -1,5 +1,5 @@ /* -* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* Copyright (c) 2008 - 2009 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" @@ -26,12 +26,57 @@ #ifndef BROWSER_PLATFORM_VARIANT_HRH #define BROWSER_PLATFORM_VARIANT_HRH -/* NOTE: + +/* +* Establish which platform we are building on. +* If required, un-comment correct platform macro as +* described below +* +*/ - Format of browser domain feature flags: +#if defined(__S60_32__) +// +// this is the only supported platform that comes with unambiguous platform version flag +#define __PLATFORM_VERSION_32__ +// +#else +// manually edit the following lines to enable definition for +// whichever platform is in use +// +// un-comment following line for 5.0/5250 platforms +//#define __PLATFORM_VERSION_50__ +// +// un-comment following line for 5.1/TB9.1 platforms +#define __PLATFORM_VERSION_51__ +// +// un-comment following line for 5.2/TB9.2 platforms +//#define __PLATFORM_VERSION_52__ +// +#endif + - "BRDO_" | feature/component name | "_FF" +/* +* +* Define Browser Version +* +*/ + +#define BRDO_APP_VERSION_MAJOR 7 +#define BRDO_APP_VERSION_MINOR 2 +#define BRDO_APP_VERSION BRDO_APP_VERSION_MAJOR##_##BRDO_APP_VERSION_MINOR + +/* +* +* Define feature flags +* +* Format of browser domain feature flags: +* +* "BRDO_" | feature/component name | "_FF" +* +* Define default value of the flag in section below, and then modify it +* by platform as it varies from that default. +* */ // Defines Language InterWork and SAPI availability @@ -68,12 +113,20 @@ // Gallery App is not present #undef BRDO_APP_GALLERY_SUPPORTED_FF + +// Defines if MultipartParser should be built +#define BRDO_MULTIPART_PARSER_FF + +// Additional export location - to adapt to new header export location +#undef BRDO_ADDED_EXPORT_LOCATION + + /* * =================== * S60 3.23 * =================== */ -#if defined(__S60_32__) +#if defined(__PLATFORM_VERSION_32__) // Defines Language InterWork and SAPI availability #undef BRDO_LIW_FF @@ -95,13 +148,6 @@ // Gallery App is present #define BRDO_APP_GALLERY_SUPPORTED_FF -// Missing from ProductVariant.hrh -#ifndef LANGUAGE_IDS -#define LANGUAGE_IDS LANG sc -#endif - -#define BRDO_APP_VERSION_MAJOR 7 -#define BRDO_APP_VERSION_MINOR 1 // Missing from 3.23 platform_paths.hrh @@ -112,50 +158,52 @@ #define APP_LAYER_LOC_EXPORT_PATH(exported) APP_LAYER_PUBLIC_EXPORT_PATH(##exported) - - /* * =================== * S60 5.0 * =================== */ -#elif defined(__S60_50__) +#elif defined(__PLATFORM_VERSION_50__) // Defines must accumulate versions. ie for 5.01 you must define BRDO_BROWSER_50_FF and BRDO_BROWSER_501_FF(To be reviewed) // The assumption is that anything that worked in 3.2 will work in 5.0 and 5.01. For anything doesn't work // in 3.2 but works in 5.0 and above, that code should be behind the BRDO_BROWSER_50_FF flag. #define BRDO_BROWSER_50_FF -#define BRDO_APP_VERSION_MAJOR 7 -#define BRDO_APP_VERSION_MINOR 0 +#if __GNUC__ >= 3 +#define BRDO_ADDED_EXPORT_LOCATION(exported) MW_LAYER_DOMAIN_EXPORT_PATH(../../platform/mw/exported) +#else +#define BRDO_ADDED_EXPORT_LOCATION(exported) MW_LAYER_DOMAIN_EXPORT_PATH(../../platform/mw/##exported) +#endif + +#define APP_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../libc) +#define APP_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../ecom) +#define APP_LAYER_HTTP_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../http) +#define APP_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../connect) +#define APP_LAYER_SWI_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../swi) +#define APP_LAYER_OSKERNEL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../kernel) +#define APP_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../push) +#define APP_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../stdapis) + +#define MW_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../libc) +#define MW_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../ecom) +#define MW_LAYER_HTTP_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../http) +#define MW_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../connect) +#define MW_LAYER_SWI_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../swi) +#define MW_LAYER_OSKERNEL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../kernel) +#define MW_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../push) +#define MW_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(../stdapis) + /* * =================== * S60 5.1 * =================== */ -#else // until __S60_51__ is defined +#elif defined(__PLATFORM_VERSION_51__) #define BRDO_BROWSER_50_FF - -#define BRDO_APP_VERSION_MAJOR 7 -#define BRDO_APP_VERSION_MINOR 2 - -#endif // S60 VERSION ID's - - -#define BRDO_APP_VERSION BRDO_APP_VERSION_MAJOR##_##BRDO_APP_VERSION_MINOR - -// Generic run-time definitions -- see WmlBrowserBuild.h for similar feature related definitions - -// Browser Update - Independent Application Delivery -#if defined( KFeatureIdIAUpdate ) -// Defines flag for activating changes to update Browser application - from the Browser application -#define BRDO_BROWSER_UPDATE_UI_FF FeatureManager::FeatureSupported( KFeatureIdIAUpdate ) -#else -#define BRDO_BROWSER_UPDATE_UI_FF 0 -#endif // KFeatureIdIAUpdate - +#define BRDO_BROWSER_51_FF #define APP_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(libc) #define APP_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(ecom) @@ -175,4 +223,53 @@ #define MW_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(push) #define MW_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) + +/* +* =================== +* S60 5.2 +* =================== +*/ +#elif defined(__PLATFORM_VERSION_52__) + +#define BRDO_BROWSER_50_FF +#define BRDO_BROWSER_51_FF +#define BRDO_BROWSER_52_FF + +// BrDo MultipartParser not used from S60 5.2 onward +//#undef BRDO_MULTIPART_PARSER_FF - TODO: un-comment this line for week21 release + +#define APP_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(libc) +#define APP_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(ecom) +#define APP_LAYER_HTTP_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(http) +#define APP_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(connect) +#define APP_LAYER_SWI_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(swi) +#define APP_LAYER_OSKERNEL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(kernel) +#define APP_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(push) +#define APP_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) + +#define MW_LAYER_LIBC_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(libc) +#define MW_LAYER_ECOM_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(ecom) +#define MW_LAYER_HTTP_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(http) +#define MW_LAYER_CONNECT_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(connect) +#define MW_LAYER_SWI_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(swi) +#define MW_LAYER_OSKERNEL_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(kernel) +#define MW_LAYER_PUSH_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(push) +#define MW_LAYER_STDAPIS_SYSTEMINCLUDE SYSTEMINCLUDE OS_LAYER_PUBLIC_EXPORT_PATH(stdapis) + + +#endif // PLATFORM VERSION ID's + + + +// Generic run-time definitions -- see WmlBrowserBuild.h for similar feature related definitions + +// Browser Update - Independent Application Delivery +#if defined( KFeatureIdIAUpdate ) +// Defines flag for activating changes to update Browser application - from the Browser application +#define BRDO_BROWSER_UPDATE_UI_FF FeatureManager::FeatureSupported( KFeatureIdIAUpdate ) +#else +#define BRDO_BROWSER_UPDATE_UI_FF 0 +#endif // KFeatureIdIAUpdate + + #endif // BROWSER_PLATFORM_VARIANT_HRH diff -r 7c90e6132015 -r 10e98eab6f85 web_plat/group/bld.inf --- a/web_plat/group/bld.inf Fri May 08 08:25:06 2009 +0300 +++ b/web_plat/group/bld.inf Fri Jul 03 15:54:40 2009 +0100 @@ -15,6 +15,7 @@ * */ +#include "../browser_platform_api/inc/Browser_platform_variant.hrh" #include "../aiw_browser_provider_api/group/bld.inf" @@ -26,7 +27,9 @@ #include "../download_mgr_client_api_extn/group/bld.inf" #include "../feeds_engine_api/group/bld.inf" #include "../launcher_api/group/bld.inf" +#ifdef BRDO_MULTIPART_PARSER_FF #include "../multipart_parser_api/group/bld.inf" +#endif #include "../recent_url_store_api/group/bld.inf" #include "../rt_gesturehelper_api/group/bld.inf" #include "../scheme_handler_plugin_api/group/bld.inf" diff -r 7c90e6132015 -r 10e98eab6f85 web_plat/multipart_parser_api/group/bld.inf --- a/web_plat/multipart_parser_api/group/bld.inf Fri May 08 08:25:06 2009 +0300 +++ b/web_plat/multipart_parser_api/group/bld.inf Fri Jul 03 15:54:40 2009 +0100 @@ -15,10 +15,11 @@ * */ - #include #include "../../../web_plat/browser_platform_api/inc/Browser_platform_variant.hrh" +#ifdef BRDO_MULTIPART_PARSER_FF + PRJ_PLATFORMS DEFAULT @@ -27,3 +28,5 @@ ../inc/MultipartParser.h MW_LAYER_PLATFORM_EXPORT_PATH(MultipartParser.h) PRJ_MMPFILES + +#endif diff -r 7c90e6132015 -r 10e98eab6f85 web_plat/scheme_handler_plugin_api/group/bld.inf --- a/web_plat/scheme_handler_plugin_api/group/bld.inf Fri May 08 08:25:06 2009 +0300 +++ b/web_plat/scheme_handler_plugin_api/group/bld.inf Fri Jul 03 15:54:40 2009 +0100 @@ -29,6 +29,10 @@ ../inc/SchemeHandler.inl MW_LAYER_PLATFORM_EXPORT_PATH(SchemeHandler.inl) ../inc/SchemeDefs.hrh MW_LAYER_PLATFORM_EXPORT_PATH(SchemeDefs.hrh) +#ifdef BRDO_ADDED_EXPORT_LOCATION +../inc/SchemeDefs.hrh BRDO_ADDED_EXPORT_LOCATION(SchemeDefs.hrh) +#endif + PRJ_MMPFILES diff -r 7c90e6132015 -r 10e98eab6f85 web_plat/webutils_api/inc/CUserAgent.h --- a/web_plat/webutils_api/inc/CUserAgent.h Fri May 08 08:25:06 2009 +0300 +++ b/web_plat/webutils_api/inc/CUserAgent.h Fri Jul 03 15:54:40 2009 +0100 @@ -110,45 +110,50 @@ bool IsUAStringEmpty(const TPtr &aUAString); TInt GetCenRepFragment(TUserAgentStringKeys aFragmentType, TDes& fragmentValue); - void GetFragmentsL(); - void ReadAndCreateUAStringL(TPtr &aUAStringPtr); - - + void GetFragmentsL(); + void GetMMSFragmentsL(); + void ReadAndCreateUAStringL(TPtr &aUAStringPtr); + + #ifdef BRDO_BROWSER_50_FF - void GetFragmentsFromOSExtL(); - TInt GetOSExtFragment(TUserAgentStringKeys aFragmentType, TDes& fragmentValue, RFs& fs); - /** + void GetFragmentsFromOSExtL(); + TInt GetOSExtFragment(TUserAgentStringKeys aFragmentType, TDes& fragmentValue, RFs& fs); + /** * Gets the Version Values from osext layer / central repository */ - TInt GetOSVersion(TDes& aValue, RFs& aFs); - TInt GetS60Version(TDes& aValue, RFs& aFs); - TInt GetVersion(const SysVersionInfo::TVersionInfoType aType, TDes& aValue); - TInt GetHardwareVersion(TDes& aHardwareType, RFs& aFs); -#endif //#ifdef BRDO_BROWSER_50_FF + TInt GetOSVersion(TDes& aValue, RFs& aFs); + TInt GetS60Version(TDes& aValue, RFs& aFs); + TInt GetVersion(const SysVersionInfo::TVersionInfoType aType, TDes& aValue); + TInt GetHardwareVersion(TDes& aHardwareType, RFs& aFs); +#endif //#ifdef BRDO_BROWSER_50_FF - void GetBrowserVersionL(); - void GetBrowserNameAndVersionL(); - - private: //data + void GetBrowserVersionL(); + void GetBrowserNameAndVersionL(); + + private: //data - CRepository* iRepository; + CRepository* iRepository; + + TBool iUAStrQueried; + TBool iMMSUAStrQueried; + TBool iURLUAProfQueried; - TBool iUAStrQueried; - TBool iMMSUAStrQueried; - TBool iURLUAProfQueried; + HBufC* iBrowserCenrepStr; + HBufC* iMMSCenrepStr; + HBufC* iUAProfURL; + HBufC* iUAProfURL3G; + + TBuf<64> iSymbianVersion; + TBuf<64> iS60Version; + TBuf<64> iMIDPCLDCVersion; + TBuf<64> iHardwareType; + TBuf<64> iMMSS60Version; + TBuf<64> iMMSMIDPVersion; + TBuf<64> iMMSCLDCVersion; + TBuf<64> iMMSHardwareType; - HBufC* iBrowserCenrepStr; - HBufC* iMMSCenrepStr; - HBufC* iUAProfURL; - HBufC* iUAProfURL3G; - - TBuf<64> iSymbianVersion; - TBuf<64> iS60Version; - TBuf<64> iMIDPCLDCVersion; - TBuf<64> iHardwareType; - - HBufC* iBrowserVersionStr; - HBufC* iBrowserNameAndVersionStr; + HBufC* iBrowserVersionStr; + HBufC* iBrowserNameAndVersionStr; }; diff -r 7c90e6132015 -r 10e98eab6f85 web_plat/webutils_api/inc/WebUtilsInternalCRKeys.h --- a/web_plat/webutils_api/inc/WebUtilsInternalCRKeys.h Fri May 08 08:25:06 2009 +0300 +++ b/web_plat/webutils_api/inc/WebUtilsInternalCRKeys.h Fri Jul 03 15:54:40 2009 +0100 @@ -74,5 +74,11 @@ // Browser Version SVN Rev const TUint32 KWebUtilsBrowserVersionSVNRev = 0x00000011; +// Browser Name +const TUint32 KWebUtilsBrowserName = 0x00000012; + +// Ignore product program config when TRUE +const TUint32 KWebUtilsIgnoreConfig = 0x00000013; + #endif // WEBUTILSINTERNALCRKEYS_H diff -r 7c90e6132015 -r 10e98eab6f85 web_pub/browser_control_api/tsrc/group/BrCtlApiTest.mmp --- a/web_pub/browser_control_api/tsrc/group/BrCtlApiTest.mmp Fri May 08 08:25:06 2009 +0300 +++ b/web_pub/browser_control_api/tsrc/group/BrCtlApiTest.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -54,6 +54,10 @@ // component under test LIBRARY browserengine.lib -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif // End of File diff -r 7c90e6132015 -r 10e98eab6f85 web_pub/download_mgr_client_api/tsrc/group/DownloadMgrClientApiTest.mmp --- a/web_pub/download_mgr_client_api/tsrc/group/DownloadMgrClientApiTest.mmp Fri May 08 08:25:06 2009 +0300 +++ b/web_pub/download_mgr_client_api/tsrc/group/DownloadMgrClientApiTest.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -42,6 +42,10 @@ LIBRARY euser.lib efsrv.lib downloadmgr.lib esock.lib LIBRARY stiftestinterface.lib -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif // End of File diff -r 7c90e6132015 -r 10e98eab6f85 web_pub/favourites_engine_api/tsrc/group/FavouritesEngineTest.mmp --- a/web_pub/favourites_engine_api/tsrc/group/FavouritesEngineTest.mmp Fri May 08 08:25:06 2009 +0300 +++ b/web_pub/favourites_engine_api/tsrc/group/FavouritesEngineTest.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -51,6 +51,10 @@ LIBRARY euser.lib efsrv.lib favouritesengine.lib estor.lib LIBRARY stiftestinterface.lib -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif // End of File diff -r 7c90e6132015 -r 10e98eab6f85 webengine/device/group/Device.mmp --- a/webengine/device/group/Device.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/device/group/Device.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -33,7 +33,11 @@ OPTION CW -warn noempty,nounused,nounwanted,nopedantic OPTION ARMCC --diag_suppress 111,177,1293,1,1299,830,550,427 --fpmode fast -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif VENDORID VID_DEFAULT CAPABILITY CAP_GENERAL_DLL diff -r 7c90e6132015 -r 10e98eab6f85 webengine/device/inc/DeviceBridge.h --- a/webengine/device/inc/DeviceBridge.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/device/inc/DeviceBridge.h Fri Jul 03 15:54:40 2009 +0100 @@ -49,6 +49,7 @@ inline virtual void* Device( void* exec ) = 0; inline virtual ~MDeviceBridge() {}; inline virtual void SetUid( const TUint& aValue) = 0; + virtual void Clear() = 0; }; /** @@ -94,6 +95,7 @@ * @return none */ void SetUid( const TUint& aValue); + void Clear(); private: diff -r 7c90e6132015 -r 10e98eab6f85 webengine/device/src/DeviceBridge.cpp --- a/webengine/device/src/DeviceBridge.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/device/src/DeviceBridge.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -57,11 +57,23 @@ // TDeviceBridge::~TDeviceBridge() { + Clear(); + } + +// ---------------------------------------------------------------------------- +// TDeviceBridge::Clear +// +// +// ---------------------------------------------------------------------------- +// +void TDeviceBridge::Clear() + { if ( m_device ) { m_device->Close(); KJS::Collector::unprotect(m_device); } + m_device = NULL; } // ---------------------------------------------------------------------------- diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/DerivedSources/WebCore/HTMLNames.cpp --- a/webengine/osswebengine/DerivedSources/WebCore/HTMLNames.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/DerivedSources/WebCore/HTMLNames.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -41,6 +41,302 @@ using namespace WebCore; +static bool initialized = false; + +static const char *xhtmlNSString = "http://www.w3.org/1999/xhtml"; +// Tags +static const char *aTagString = "a"; +static const char *abbrTagString = "abbr"; +static const char *acronymTagString = "acronym"; +static const char *addressTagString = "address"; +static const char *appletTagString = "applet"; +static const char *areaTagString = "area"; +static const char *bTagString = "b"; +static const char *baseTagString = "base"; +static const char *basefontTagString = "basefont"; +static const char *bdoTagString = "bdo"; +static const char *bgsoundTagString = "bgsound"; +static const char *bigTagString = "big"; +static const char *blockquoteTagString = "blockquote"; +static const char *bodyTagString = "body"; +static const char *brTagString = "br"; +static const char *buttonTagString = "button"; +static const char *canvasTagString = "canvas"; +static const char *captionTagString = "caption"; +static const char *centerTagString = "center"; +static const char *citeTagString = "cite"; +static const char *codeTagString = "code"; +static const char *colTagString = "col"; +static const char *colgroupTagString = "colgroup"; +static const char *ddTagString = "dd"; +static const char *delTagString = "del"; +static const char *dfnTagString = "dfn"; +static const char *dirTagString = "dir"; +static const char *divTagString = "div"; +static const char *dlTagString = "dl"; +static const char *dtTagString = "dt"; +static const char *emTagString = "em"; +static const char *embedTagString = "embed"; +static const char *fieldsetTagString = "fieldset"; +static const char *fontTagString = "font"; +static const char *formTagString = "form"; +static const char *frameTagString = "frame"; +static const char *framesetTagString = "frameset"; +static const char *headTagString = "head"; +static const char *h1TagString = "h1"; +static const char *h2TagString = "h2"; +static const char *h3TagString = "h3"; +static const char *h4TagString = "h4"; +static const char *h5TagString = "h5"; +static const char *h6TagString = "h6"; +static const char *hrTagString = "hr"; +static const char *htmlTagString = "html"; +static const char *iTagString = "i"; +static const char *iframeTagString = "iframe"; +static const char *imageTagString = "image"; +static const char *imgTagString = "img"; +static const char *inputTagString = "input"; +static const char *insTagString = "ins"; +static const char *isindexTagString = "isindex"; +static const char *kbdTagString = "kbd"; +static const char *keygenTagString = "keygen"; +static const char *labelTagString = "label"; +static const char *layerTagString = "layer"; +static const char *legendTagString = "legend"; +static const char *liTagString = "li"; +static const char *linkTagString = "link"; +static const char *listingTagString = "listing"; +static const char *mapTagString = "map"; +static const char *marqueeTagString = "marquee"; +static const char *menuTagString = "menu"; +static const char *metaTagString = "meta"; +static const char *nobrTagString = "nobr"; +static const char *noembedTagString = "noembed"; +static const char *noframesTagString = "noframes"; +static const char *nolayerTagString = "nolayer"; +static const char *noscriptTagString = "noscript"; +static const char *objectTagString = "object"; +static const char *olTagString = "ol"; +static const char *optgroupTagString = "optgroup"; +static const char *optionTagString = "option"; +static const char *pTagString = "p"; +static const char *paramTagString = "param"; +static const char *plaintextTagString = "plaintext"; +static const char *preTagString = "pre"; +static const char *qTagString = "q"; +static const char *sTagString = "s"; +static const char *sampTagString = "samp"; +static const char *scriptTagString = "script"; +static const char *selectTagString = "select"; +static const char *smallTagString = "small"; +static const char *spanTagString = "span"; +static const char *strikeTagString = "strike"; +static const char *strongTagString = "strong"; +static const char *styleTagString = "style"; +static const char *subTagString = "sub"; +static const char *supTagString = "sup"; +static const char *tableTagString = "table"; +static const char *tbodyTagString = "tbody"; +static const char *tdTagString = "td"; +static const char *textareaTagString = "textarea"; +static const char *tfootTagString = "tfoot"; +static const char *thTagString = "th"; +static const char *theadTagString = "thead"; +static const char *titleTagString = "title"; +static const char *trTagString = "tr"; +static const char *ttTagString = "tt"; +static const char *uTagString = "u"; +static const char *ulTagString = "ul"; +static const char *varTagString = "var"; +static const char *wbrTagString = "wbr"; +static const char *xmpTagString = "xmp"; +// Attributes +static const char *abbrAttrString = "abbr"; +static const char *accept_charsetAttrString = "accept_charset"; +static const char *acceptAttrString = "accept"; +static const char *accesskeyAttrString = "accesskey"; +static const char *actionAttrString = "action"; +static const char *alignAttrString = "align"; +static const char *alinkAttrString = "alink"; +static const char *altAttrString = "alt"; +static const char *archiveAttrString = "archive"; +static const char *autocompleteAttrString = "autocomplete"; +static const char *autosaveAttrString = "autosave"; +static const char *axisAttrString = "axis"; +static const char *backgroundAttrString = "background"; +static const char *behaviorAttrString = "behavior"; +static const char *bgcolorAttrString = "bgcolor"; +static const char *bgpropertiesAttrString = "bgproperties"; +static const char *borderAttrString = "border"; +static const char *bordercolorAttrString = "bordercolor"; +static const char *cellpaddingAttrString = "cellpadding"; +static const char *cellspacingAttrString = "cellspacing"; +static const char *charAttrString = "char"; +static const char *challengeAttrString = "challenge"; +static const char *charoffAttrString = "charoff"; +static const char *charsetAttrString = "charset"; +static const char *checkedAttrString = "checked"; +static const char *cellborderAttrString = "cellborder"; +static const char *citeAttrString = "cite"; +static const char *classAttrString = "class"; +static const char *classidAttrString = "classid"; +static const char *clearAttrString = "clear"; +static const char *codeAttrString = "code"; +static const char *codebaseAttrString = "codebase"; +static const char *codetypeAttrString = "codetype"; +static const char *colorAttrString = "color"; +static const char *colsAttrString = "cols"; +static const char *colspanAttrString = "colspan"; +static const char *compactAttrString = "compact"; +static const char *compositeAttrString = "composite"; +static const char *contentAttrString = "content"; +static const char *contenteditableAttrString = "contenteditable"; +static const char *coordsAttrString = "coords"; +static const char *ctiAttrString = "cti"; +static const char *dataAttrString = "data"; +static const char *datetimeAttrString = "datetime"; +static const char *declareAttrString = "declare"; +static const char *deferAttrString = "defer"; +static const char *dirAttrString = "dir"; +static const char *directionAttrString = "direction"; +static const char *directkeyAttrString = "directkey"; +static const char *disabledAttrString = "disabled"; +static const char *emailAttrString = "email"; +static const char *enctypeAttrString = "enctype"; +static const char *faceAttrString = "face"; +static const char *forAttrString = "for"; +static const char *frameAttrString = "frame"; +static const char *frameborderAttrString = "frameborder"; +static const char *headersAttrString = "headers"; +static const char *heightAttrString = "height"; +static const char *hiddenAttrString = "hidden"; +static const char *hrefAttrString = "href"; +static const char *hreflangAttrString = "hreflang"; +static const char *hspaceAttrString = "hspace"; +static const char *http_equivAttrString = "http_equiv"; +static const char *idAttrString = "id"; +static const char *incrementalAttrString = "incremental"; +static const char *ismapAttrString = "ismap"; +static const char *keytypeAttrString = "keytype"; +static const char *labelAttrString = "label"; +static const char *langAttrString = "lang"; +static const char *languageAttrString = "language"; +static const char *leftAttrString = "left"; +static const char *leftmarginAttrString = "leftmargin"; +static const char *linkAttrString = "link"; +static const char *longdescAttrString = "longdesc"; +static const char *loopAttrString = "loop"; +static const char *lowsrcAttrString = "lowsrc"; +static const char *marginheightAttrString = "marginheight"; +static const char *marginwidthAttrString = "marginwidth"; +static const char *maxAttrString = "max"; +static const char *maxlengthAttrString = "maxlength"; +static const char *mayscriptAttrString = "mayscript"; +static const char *mediaAttrString = "media"; +static const char *methodAttrString = "method"; +static const char *minAttrString = "min"; +static const char *multipleAttrString = "multiple"; +static const char *nameAttrString = "name"; +static const char *nohrefAttrString = "nohref"; +static const char *noresizeAttrString = "noresize"; +static const char *noshadeAttrString = "noshade"; +static const char *nowrapAttrString = "nowrap"; +static const char *objectAttrString = "object"; +static const char *onabortAttrString = "onabort"; +static const char *onbeforecopyAttrString = "onbeforecopy"; +static const char *onbeforecutAttrString = "onbeforecut"; +static const char *onbeforepasteAttrString = "onbeforepaste"; +static const char *onbeforeunloadAttrString = "onbeforeunload"; +static const char *onblurAttrString = "onblur"; +static const char *onchangeAttrString = "onchange"; +static const char *onclickAttrString = "onclick"; +static const char *oncontextmenuAttrString = "oncontextmenu"; +static const char *oncopyAttrString = "oncopy"; +static const char *oncutAttrString = "oncut"; +static const char *ondblclickAttrString = "ondblclick"; +static const char *ondragAttrString = "ondrag"; +static const char *ondragendAttrString = "ondragend"; +static const char *ondragenterAttrString = "ondragenter"; +static const char *ondragleaveAttrString = "ondragleave"; +static const char *ondragoverAttrString = "ondragover"; +static const char *ondragstartAttrString = "ondragstart"; +static const char *ondropAttrString = "ondrop"; +static const char *onerrorAttrString = "onerror"; +static const char *onfocusAttrString = "onfocus"; +static const char *oninputAttrString = "oninput"; +static const char *onkeydownAttrString = "onkeydown"; +static const char *onkeypressAttrString = "onkeypress"; +static const char *onkeyupAttrString = "onkeyup"; +static const char *onloadAttrString = "onload"; +static const char *onmousedownAttrString = "onmousedown"; +static const char *onmousemoveAttrString = "onmousemove"; +static const char *onmouseoutAttrString = "onmouseout"; +static const char *onmouseoverAttrString = "onmouseover"; +static const char *onmouseupAttrString = "onmouseup"; +static const char *onmousewheelAttrString = "onmousewheel"; +static const char *onpasteAttrString = "onpaste"; +static const char *onresetAttrString = "onreset"; +static const char *onresizeAttrString = "onresize"; +static const char *onscrollAttrString = "onscroll"; +static const char *onsearchAttrString = "onsearch"; +static const char *onselectAttrString = "onselect"; +static const char *onselectstartAttrString = "onselectstart"; +static const char *onsubmitAttrString = "onsubmit"; +static const char *onunloadAttrString = "onunload"; +static const char *pagexAttrString = "pagex"; +static const char *pageyAttrString = "pagey"; +static const char *placeholderAttrString = "placeholder"; +static const char *plainAttrString = "plain"; +static const char *pluginpageAttrString = "pluginpage"; +static const char *pluginspageAttrString = "pluginspage"; +static const char *pluginurlAttrString = "pluginurl"; +static const char *precisionAttrString = "precision"; +static const char *profileAttrString = "profile"; +static const char *promptAttrString = "prompt"; +static const char *readonlyAttrString = "readonly"; +static const char *relAttrString = "rel"; +static const char *resultsAttrString = "results"; +static const char *revAttrString = "rev"; +static const char *rowsAttrString = "rows"; +static const char *rowspanAttrString = "rowspan"; +static const char *rulesAttrString = "rules"; +static const char *schemeAttrString = "scheme"; +static const char *scopeAttrString = "scope"; +static const char *scrollamountAttrString = "scrollamount"; +static const char *scrolldelayAttrString = "scrolldelay"; +static const char *scrollingAttrString = "scrolling"; +static const char *selectedAttrString = "selected"; +static const char *shapeAttrString = "shape"; +static const char *sizeAttrString = "size"; +static const char *soundstartAttrString = "soundstart"; +static const char *spanAttrString = "span"; +static const char *srcAttrString = "src"; +static const char *standbyAttrString = "standby"; +static const char *startAttrString = "start"; +static const char *styleAttrString = "style"; +static const char *summaryAttrString = "summary"; +static const char *tabindexAttrString = "tabindex"; +static const char *tableborderAttrString = "tableborder"; +static const char *targetAttrString = "target"; +static const char *telbookAttrString = "telbook"; +static const char *textAttrString = "text"; +static const char *titleAttrString = "title"; +static const char *topAttrString = "top"; +static const char *topmarginAttrString = "topmargin"; +static const char *truespeedAttrString = "truespeed"; +static const char *typeAttrString = "type"; +static const char *usemapAttrString = "usemap"; +static const char *valignAttrString = "valign"; +static const char *valueAttrString = "value"; +static const char *valuetypeAttrString = "valuetype"; +static const char *versionAttrString = "version"; +static const char *viewsourceAttrString = "viewsource"; +static const char *vlinkAttrString = "vlink"; +static const char *volumeAttrString = "volume"; +static const char *vspaceAttrString = "vspace"; +static const char *widthAttrString = "width"; +static const char *wrapAttrString = "wrap"; + DEFINE_GLOBAL(AtomicString, xhtmlNamespaceURI, "http://www.w3.org/1999/xhtml") // Tags DEFINE_GLOBAL(QualifiedName, aTag, nullAtom, "a", xhtmlNamespaceURI); @@ -646,7 +942,6 @@ void init() { - static bool initialized = false; if (initialized) return; initialized = true; @@ -654,118 +949,10 @@ // Use placement new to initialize the globals. AtomicString::init(); - AtomicString xhtmlNS("http://www.w3.org/1999/xhtml"); + AtomicString xhtmlNS(xhtmlNSString); // Namespace new ((void*)&xhtmlNamespaceURI) AtomicString(xhtmlNS); - - // Tags - const char *aTagString = "a"; - const char *abbrTagString = "abbr"; - const char *acronymTagString = "acronym"; - const char *addressTagString = "address"; - const char *appletTagString = "applet"; - const char *areaTagString = "area"; - const char *bTagString = "b"; - const char *baseTagString = "base"; - const char *basefontTagString = "basefont"; - const char *bdoTagString = "bdo"; - const char *bgsoundTagString = "bgsound"; - const char *bigTagString = "big"; - const char *blockquoteTagString = "blockquote"; - const char *bodyTagString = "body"; - const char *brTagString = "br"; - const char *buttonTagString = "button"; - const char *canvasTagString = "canvas"; - const char *captionTagString = "caption"; - const char *centerTagString = "center"; - const char *citeTagString = "cite"; - const char *codeTagString = "code"; - const char *colTagString = "col"; - const char *colgroupTagString = "colgroup"; - const char *ddTagString = "dd"; - const char *delTagString = "del"; - const char *dfnTagString = "dfn"; - const char *dirTagString = "dir"; - const char *divTagString = "div"; - const char *dlTagString = "dl"; - const char *dtTagString = "dt"; - const char *emTagString = "em"; - const char *embedTagString = "embed"; - const char *fieldsetTagString = "fieldset"; - const char *fontTagString = "font"; - const char *formTagString = "form"; - const char *frameTagString = "frame"; - const char *framesetTagString = "frameset"; - const char *headTagString = "head"; - const char *h1TagString = "h1"; - const char *h2TagString = "h2"; - const char *h3TagString = "h3"; - const char *h4TagString = "h4"; - const char *h5TagString = "h5"; - const char *h6TagString = "h6"; - const char *hrTagString = "hr"; - const char *htmlTagString = "html"; - const char *iTagString = "i"; - const char *iframeTagString = "iframe"; - const char *imageTagString = "image"; - const char *imgTagString = "img"; - const char *inputTagString = "input"; - const char *insTagString = "ins"; - const char *isindexTagString = "isindex"; - const char *kbdTagString = "kbd"; - const char *keygenTagString = "keygen"; - const char *labelTagString = "label"; - const char *layerTagString = "layer"; - const char *legendTagString = "legend"; - const char *liTagString = "li"; - const char *linkTagString = "link"; - const char *listingTagString = "listing"; - const char *mapTagString = "map"; - const char *marqueeTagString = "marquee"; - const char *menuTagString = "menu"; - const char *metaTagString = "meta"; - const char *nobrTagString = "nobr"; - const char *noembedTagString = "noembed"; - const char *noframesTagString = "noframes"; - const char *nolayerTagString = "nolayer"; - const char *noscriptTagString = "noscript"; - const char *objectTagString = "object"; - const char *olTagString = "ol"; - const char *optgroupTagString = "optgroup"; - const char *optionTagString = "option"; - const char *pTagString = "p"; - const char *paramTagString = "param"; - const char *plaintextTagString = "plaintext"; - const char *preTagString = "pre"; - const char *qTagString = "q"; - const char *sTagString = "s"; - const char *sampTagString = "samp"; - const char *scriptTagString = "script"; - const char *selectTagString = "select"; - const char *smallTagString = "small"; - const char *spanTagString = "span"; - const char *strikeTagString = "strike"; - const char *strongTagString = "strong"; - const char *styleTagString = "style"; - const char *subTagString = "sub"; - const char *supTagString = "sup"; - const char *tableTagString = "table"; - const char *tbodyTagString = "tbody"; - const char *tdTagString = "td"; - const char *textareaTagString = "textarea"; - const char *tfootTagString = "tfoot"; - const char *thTagString = "th"; - const char *theadTagString = "thead"; - const char *titleTagString = "title"; - const char *trTagString = "tr"; - const char *ttTagString = "tt"; - const char *uTagString = "u"; - const char *ulTagString = "ul"; - const char *varTagString = "var"; - const char *wbrTagString = "wbr"; - const char *xmpTagString = "xmp"; - new ((void*)&aTag) QualifiedName(nullAtom, aTagString, xhtmlNS); new ((void*)&abbrTag) QualifiedName(nullAtom, abbrTagString, xhtmlNS); new ((void*)&acronymTag) QualifiedName(nullAtom, acronymTagString, xhtmlNS); @@ -871,192 +1058,7 @@ new ((void*)&varTag) QualifiedName(nullAtom, varTagString, xhtmlNS); new ((void*)&wbrTag) QualifiedName(nullAtom, wbrTagString, xhtmlNS); new ((void*)&xmpTag) QualifiedName(nullAtom, xmpTagString, xhtmlNS); - // Attributes - const char *abbrAttrString = "abbr"; - const char *accept_charsetAttrString = "accept_charset"; - const char *acceptAttrString = "accept"; - const char *accesskeyAttrString = "accesskey"; - const char *actionAttrString = "action"; - const char *alignAttrString = "align"; - const char *alinkAttrString = "alink"; - const char *altAttrString = "alt"; - const char *archiveAttrString = "archive"; - const char *autocompleteAttrString = "autocomplete"; - const char *autosaveAttrString = "autosave"; - const char *axisAttrString = "axis"; - const char *backgroundAttrString = "background"; - const char *behaviorAttrString = "behavior"; - const char *bgcolorAttrString = "bgcolor"; - const char *bgpropertiesAttrString = "bgproperties"; - const char *borderAttrString = "border"; - const char *bordercolorAttrString = "bordercolor"; - const char *cellpaddingAttrString = "cellpadding"; - const char *cellspacingAttrString = "cellspacing"; - const char *charAttrString = "char"; - const char *challengeAttrString = "challenge"; - const char *charoffAttrString = "charoff"; - const char *charsetAttrString = "charset"; - const char *checkedAttrString = "checked"; - const char *cellborderAttrString = "cellborder"; - const char *citeAttrString = "cite"; - const char *classAttrString = "class"; - const char *classidAttrString = "classid"; - const char *clearAttrString = "clear"; - const char *codeAttrString = "code"; - const char *codebaseAttrString = "codebase"; - const char *codetypeAttrString = "codetype"; - const char *colorAttrString = "color"; - const char *colsAttrString = "cols"; - const char *colspanAttrString = "colspan"; - const char *compactAttrString = "compact"; - const char *compositeAttrString = "composite"; - const char *contentAttrString = "content"; - const char *contenteditableAttrString = "contenteditable"; - const char *coordsAttrString = "coords"; - const char *ctiAttrString = "cti"; - const char *dataAttrString = "data"; - const char *datetimeAttrString = "datetime"; - const char *declareAttrString = "declare"; - const char *deferAttrString = "defer"; - const char *dirAttrString = "dir"; - const char *directionAttrString = "direction"; - const char *directkeyAttrString = "directkey"; - const char *disabledAttrString = "disabled"; - const char *emailAttrString = "email"; - const char *enctypeAttrString = "enctype"; - const char *faceAttrString = "face"; - const char *forAttrString = "for"; - const char *frameAttrString = "frame"; - const char *frameborderAttrString = "frameborder"; - const char *headersAttrString = "headers"; - const char *heightAttrString = "height"; - const char *hiddenAttrString = "hidden"; - const char *hrefAttrString = "href"; - const char *hreflangAttrString = "hreflang"; - const char *hspaceAttrString = "hspace"; - const char *http_equivAttrString = "http_equiv"; - const char *idAttrString = "id"; - const char *incrementalAttrString = "incremental"; - const char *ismapAttrString = "ismap"; - const char *keytypeAttrString = "keytype"; - const char *labelAttrString = "label"; - const char *langAttrString = "lang"; - const char *languageAttrString = "language"; - const char *leftAttrString = "left"; - const char *leftmarginAttrString = "leftmargin"; - const char *linkAttrString = "link"; - const char *longdescAttrString = "longdesc"; - const char *loopAttrString = "loop"; - const char *lowsrcAttrString = "lowsrc"; - const char *marginheightAttrString = "marginheight"; - const char *marginwidthAttrString = "marginwidth"; - const char *maxAttrString = "max"; - const char *maxlengthAttrString = "maxlength"; - const char *mayscriptAttrString = "mayscript"; - const char *mediaAttrString = "media"; - const char *methodAttrString = "method"; - const char *minAttrString = "min"; - const char *multipleAttrString = "multiple"; - const char *nameAttrString = "name"; - const char *nohrefAttrString = "nohref"; - const char *noresizeAttrString = "noresize"; - const char *noshadeAttrString = "noshade"; - const char *nowrapAttrString = "nowrap"; - const char *objectAttrString = "object"; - const char *onabortAttrString = "onabort"; - const char *onbeforecopyAttrString = "onbeforecopy"; - const char *onbeforecutAttrString = "onbeforecut"; - const char *onbeforepasteAttrString = "onbeforepaste"; - const char *onbeforeunloadAttrString = "onbeforeunload"; - const char *onblurAttrString = "onblur"; - const char *onchangeAttrString = "onchange"; - const char *onclickAttrString = "onclick"; - const char *oncontextmenuAttrString = "oncontextmenu"; - const char *oncopyAttrString = "oncopy"; - const char *oncutAttrString = "oncut"; - const char *ondblclickAttrString = "ondblclick"; - const char *ondragAttrString = "ondrag"; - const char *ondragendAttrString = "ondragend"; - const char *ondragenterAttrString = "ondragenter"; - const char *ondragleaveAttrString = "ondragleave"; - const char *ondragoverAttrString = "ondragover"; - const char *ondragstartAttrString = "ondragstart"; - const char *ondropAttrString = "ondrop"; - const char *onerrorAttrString = "onerror"; - const char *onfocusAttrString = "onfocus"; - const char *oninputAttrString = "oninput"; - const char *onkeydownAttrString = "onkeydown"; - const char *onkeypressAttrString = "onkeypress"; - const char *onkeyupAttrString = "onkeyup"; - const char *onloadAttrString = "onload"; - const char *onmousedownAttrString = "onmousedown"; - const char *onmousemoveAttrString = "onmousemove"; - const char *onmouseoutAttrString = "onmouseout"; - const char *onmouseoverAttrString = "onmouseover"; - const char *onmouseupAttrString = "onmouseup"; - const char *onmousewheelAttrString = "onmousewheel"; - const char *onpasteAttrString = "onpaste"; - const char *onresetAttrString = "onreset"; - const char *onresizeAttrString = "onresize"; - const char *onscrollAttrString = "onscroll"; - const char *onsearchAttrString = "onsearch"; - const char *onselectAttrString = "onselect"; - const char *onselectstartAttrString = "onselectstart"; - const char *onsubmitAttrString = "onsubmit"; - const char *onunloadAttrString = "onunload"; - const char *pagexAttrString = "pagex"; - const char *pageyAttrString = "pagey"; - const char *placeholderAttrString = "placeholder"; - const char *plainAttrString = "plain"; - const char *pluginpageAttrString = "pluginpage"; - const char *pluginspageAttrString = "pluginspage"; - const char *pluginurlAttrString = "pluginurl"; - const char *precisionAttrString = "precision"; - const char *profileAttrString = "profile"; - const char *promptAttrString = "prompt"; - const char *readonlyAttrString = "readonly"; - const char *relAttrString = "rel"; - const char *resultsAttrString = "results"; - const char *revAttrString = "rev"; - const char *rowsAttrString = "rows"; - const char *rowspanAttrString = "rowspan"; - const char *rulesAttrString = "rules"; - const char *schemeAttrString = "scheme"; - const char *scopeAttrString = "scope"; - const char *scrollamountAttrString = "scrollamount"; - const char *scrolldelayAttrString = "scrolldelay"; - const char *scrollingAttrString = "scrolling"; - const char *selectedAttrString = "selected"; - const char *shapeAttrString = "shape"; - const char *sizeAttrString = "size"; - const char *soundstartAttrString = "soundstart"; - const char *spanAttrString = "span"; - const char *srcAttrString = "src"; - const char *standbyAttrString = "standby"; - const char *startAttrString = "start"; - const char *styleAttrString = "style"; - const char *summaryAttrString = "summary"; - const char *tabindexAttrString = "tabindex"; - const char *tableborderAttrString = "tableborder"; - const char *targetAttrString = "target"; - const char *telbookAttrString = "telbook"; - const char *textAttrString = "text"; - const char *titleAttrString = "title"; - const char *topAttrString = "top"; - const char *topmarginAttrString = "topmargin"; - const char *truespeedAttrString = "truespeed"; - const char *typeAttrString = "type"; - const char *usemapAttrString = "usemap"; - const char *valignAttrString = "valign"; - const char *valueAttrString = "value"; - const char *valuetypeAttrString = "valuetype"; - const char *versionAttrString = "version"; - const char *viewsourceAttrString = "viewsource"; - const char *vlinkAttrString = "vlink"; - const char *volumeAttrString = "volume"; - const char *vspaceAttrString = "vspace"; - const char *widthAttrString = "width"; - const char *wrapAttrString = "wrap"; + accept_charsetAttrString = "accept-charset"; http_equivAttrString = "http-equiv"; @@ -1247,5 +1249,308 @@ new ((void*)&wrapAttr) QualifiedName(nullAtom, wrapAttrString, nullAtom); } -} } +void remove() +{ + + xhtmlNSString = ""; + aTagString = ""; + abbrTagString = ""; + + acronymTagString = ""; + addressTagString = ""; + appletTagString = ""; + areaTagString = ""; + bTagString = ""; + baseTagString = ""; + basefontTagString = ""; + bdoTagString = ""; + bgsoundTagString = ""; + bigTagString = ""; + blockquoteTagString = ""; + bodyTagString = ""; + brTagString = ""; + buttonTagString = ""; + canvasTagString = ""; + captionTagString = ""; + centerTagString = ""; + citeTagString = ""; + codeTagString = ""; + colTagString = ""; + colgroupTagString = ""; + ddTagString = ""; + delTagString = ""; + dfnTagString = ""; + dirTagString = ""; + divTagString = ""; + dlTagString = ""; + dtTagString = ""; + emTagString = ""; + embedTagString = ""; + fieldsetTagString = ""; + fontTagString = ""; + formTagString = ""; + frameTagString = ""; + framesetTagString = ""; + headTagString = ""; + h1TagString = ""; + h2TagString = ""; + h3TagString = ""; + h4TagString = ""; + h5TagString = ""; + h6TagString = ""; + hrTagString = ""; + htmlTagString = ""; + iTagString = ""; + iframeTagString = ""; + imageTagString = ""; + imgTagString = ""; + inputTagString = ""; + insTagString = ""; + isindexTagString = ""; + kbdTagString = ""; + keygenTagString = ""; + labelTagString = ""; + layerTagString = ""; + legendTagString = ""; + liTagString = ""; + linkTagString = ""; + listingTagString = ""; + mapTagString = ""; + marqueeTagString = ""; + menuTagString = ""; + metaTagString = ""; + nobrTagString = ""; + noembedTagString = ""; + noframesTagString = ""; + nolayerTagString = ""; + noscriptTagString = ""; + objectTagString = ""; + olTagString = ""; + optgroupTagString = ""; + optionTagString = ""; + pTagString = ""; + paramTagString = ""; + plaintextTagString = ""; + preTagString = ""; + qTagString = ""; + sTagString = ""; + sampTagString = ""; + scriptTagString = ""; + selectTagString = ""; + smallTagString = ""; + spanTagString = ""; + strikeTagString = ""; + strongTagString = ""; + styleTagString = ""; + subTagString = ""; + supTagString = ""; + tableTagString = ""; + tbodyTagString = ""; + tdTagString = ""; + textareaTagString = ""; + tfootTagString = ""; + thTagString = ""; + theadTagString = ""; + titleTagString = ""; + trTagString = ""; + ttTagString = ""; + uTagString = ""; + ulTagString = ""; + varTagString = ""; + wbrTagString = ""; + xmpTagString = ""; + abbrAttrString = ""; + accept_charsetAttrString = ""; + acceptAttrString = ""; + accesskeyAttrString = ""; + actionAttrString = ""; + alignAttrString = ""; + alinkAttrString = ""; + altAttrString = ""; + archiveAttrString = ""; + autocompleteAttrString = ""; + autosaveAttrString = ""; + axisAttrString = ""; + backgroundAttrString = ""; + behaviorAttrString = ""; + bgcolorAttrString = ""; + bgpropertiesAttrString = ""; + borderAttrString = ""; + bordercolorAttrString = ""; + cellpaddingAttrString = ""; + cellspacingAttrString = ""; + charAttrString = ""; + challengeAttrString = ""; + charoffAttrString = ""; + charsetAttrString = ""; + checkedAttrString = ""; + cellborderAttrString = ""; + citeAttrString = ""; + classAttrString = ""; + classidAttrString = ""; + clearAttrString = ""; + codeAttrString = ""; + codebaseAttrString = ""; + codetypeAttrString = ""; + colorAttrString = ""; + colsAttrString = ""; + colspanAttrString = ""; + compactAttrString = ""; + compositeAttrString = ""; + contentAttrString = ""; + contenteditableAttrString = ""; + coordsAttrString = ""; + ctiAttrString = ""; + dataAttrString = ""; + datetimeAttrString = ""; + declareAttrString = ""; + deferAttrString = ""; + dirAttrString = ""; + directionAttrString = ""; + directkeyAttrString = ""; + disabledAttrString = ""; + emailAttrString = ""; + enctypeAttrString = ""; + faceAttrString = ""; + forAttrString = ""; + frameAttrString = ""; + frameborderAttrString = ""; + headersAttrString = ""; + heightAttrString = ""; + hiddenAttrString = ""; + hrefAttrString = ""; + hreflangAttrString = ""; + hspaceAttrString = ""; + http_equivAttrString = ""; + idAttrString = ""; + incrementalAttrString = ""; + ismapAttrString = ""; + keytypeAttrString = ""; + labelAttrString = ""; + langAttrString = ""; + languageAttrString = ""; + leftAttrString = ""; + leftmarginAttrString = ""; + linkAttrString = ""; + longdescAttrString = ""; + loopAttrString = ""; + lowsrcAttrString = ""; + marginheightAttrString = ""; + marginwidthAttrString = ""; + maxAttrString = ""; + maxlengthAttrString = ""; + mayscriptAttrString = ""; + mediaAttrString = ""; + methodAttrString = ""; + minAttrString = ""; + multipleAttrString = ""; + nameAttrString = ""; + nohrefAttrString = ""; + noresizeAttrString = ""; + noshadeAttrString = ""; + nowrapAttrString = ""; + objectAttrString = ""; + onabortAttrString = ""; + onbeforecopyAttrString = ""; + onbeforecutAttrString = ""; + onbeforepasteAttrString = ""; + onbeforeunloadAttrString = ""; + onblurAttrString = ""; + onchangeAttrString = ""; + onclickAttrString = ""; + oncontextmenuAttrString = ""; + oncopyAttrString = ""; + oncutAttrString = ""; + ondblclickAttrString = ""; + ondragAttrString = ""; + ondragendAttrString = ""; + ondragenterAttrString = ""; + ondragleaveAttrString = ""; + ondragoverAttrString = ""; + ondragstartAttrString = ""; + ondropAttrString = ""; + onerrorAttrString = ""; + onfocusAttrString = ""; + oninputAttrString = ""; + onkeydownAttrString = ""; + onkeypressAttrString = ""; + onkeyupAttrString = ""; + onloadAttrString = ""; + onmousedownAttrString = ""; + onmousemoveAttrString = ""; + onmouseoutAttrString = ""; + onmouseoverAttrString = ""; + onmouseupAttrString = ""; + onmousewheelAttrString = ""; + onpasteAttrString = ""; + onresetAttrString = ""; + onresizeAttrString = ""; + onscrollAttrString = ""; + onsearchAttrString = ""; + onselectAttrString = ""; + onselectstartAttrString = ""; + onsubmitAttrString = ""; + onunloadAttrString = ""; + pagexAttrString = ""; + pageyAttrString = ""; + placeholderAttrString = ""; + plainAttrString = ""; + pluginpageAttrString = ""; + pluginspageAttrString = ""; + pluginurlAttrString = ""; + precisionAttrString = ""; + profileAttrString = ""; + promptAttrString = ""; + readonlyAttrString = ""; + relAttrString = ""; + resultsAttrString = ""; + revAttrString = ""; + rowsAttrString = ""; + rowspanAttrString = ""; + rulesAttrString = ""; + schemeAttrString = ""; + scopeAttrString = ""; + scrollamountAttrString = ""; + scrolldelayAttrString = ""; + scrollingAttrString = ""; + selectedAttrString = ""; + shapeAttrString = ""; + sizeAttrString = ""; + soundstartAttrString = ""; + spanAttrString = ""; + srcAttrString = ""; + standbyAttrString = ""; + startAttrString = ""; + styleAttrString = ""; + summaryAttrString = ""; + tabindexAttrString = ""; + tableborderAttrString = ""; + targetAttrString = ""; + telbookAttrString = ""; + textAttrString = ""; + titleAttrString = ""; + topAttrString = ""; + topmarginAttrString = ""; + truespeedAttrString = ""; + typeAttrString = ""; + usemapAttrString = ""; + valignAttrString = ""; + valueAttrString = ""; + valuetypeAttrString = ""; + versionAttrString = ""; + viewsourceAttrString = ""; + vlinkAttrString = ""; + volumeAttrString = ""; + vspaceAttrString = ""; + widthAttrString = ""; + wrapAttrString = ""; + + AtomicString::remove(); + + initialized = false; +} //remove() + +} //HTMLNames + +} //WebCore diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/DerivedSources/WebCore/HTMLNames.h --- a/webengine/osswebengine/DerivedSources/WebCore/HTMLNames.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/DerivedSources/WebCore/HTMLNames.h Fri Jul 03 15:54:40 2009 +0100 @@ -340,6 +340,7 @@ void init(); +void remove(); } } #endif diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/DerivedSources/WebCore/XMLNames.cpp --- a/webengine/osswebengine/DerivedSources/WebCore/XMLNames.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/DerivedSources/WebCore/XMLNames.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -48,6 +48,13 @@ DEFINE_GLOBAL(QualifiedName, langAttr, nullAtom, "lang", xmlNamespaceURI); DEFINE_GLOBAL(QualifiedName, spaceAttr, nullAtom, "space", xmlNamespaceURI); +static bool initialized = false; +// Attributes +static const char *xmlNSString = "http://www.w3.org/XML/1998/namespace"; +static const char *baseAttrString = "base"; +static const char *langAttrString = "lang"; +static const char *spaceAttrString = "space"; + WebCore::QualifiedName** getXMLAttrs(size_t* size) { @@ -62,7 +69,6 @@ void init() { - static bool initialized = false; if (initialized) return; initialized = true; @@ -70,20 +76,30 @@ // Use placement new to initialize the globals. AtomicString::init(); - AtomicString xmlNS("http://www.w3.org/XML/1998/namespace"); + AtomicString xmlNS(xmlNSString); // Namespace new ((void*)&xmlNamespaceURI) AtomicString(xmlNS); - // Attributes - const char *baseAttrString = "base"; - const char *langAttrString = "lang"; - const char *spaceAttrString = "space"; - new ((void*)&baseAttr) QualifiedName(nullAtom, baseAttrString, xmlNS); new ((void*)&langAttr) QualifiedName(nullAtom, langAttrString, xmlNS); new ((void*)&spaceAttr) QualifiedName(nullAtom, spaceAttrString, xmlNS); } +void remove() +{ + if( initialized ) { + xmlNamespaceURI.~AtomicString(); + baseAttr.~QualifiedName(); + langAttr.~QualifiedName(); + spaceAttr.~QualifiedName(); + } + xmlNSString = ""; + baseAttrString = ""; + langAttrString = ""; + spaceAttrString = ""; + initialized = false; +} + } } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/DerivedSources/WebCore/XMLNames.h --- a/webengine/osswebengine/DerivedSources/WebCore/XMLNames.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/DerivedSources/WebCore/XMLNames.h Fri Jul 03 15:54:40 2009 +0100 @@ -48,6 +48,7 @@ #endif void init(); +void remove(); } } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/JavaScriptCore.pri --- a/webengine/osswebengine/JavaScriptCore/JavaScriptCore.pri Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -# JavaScriptCore - Qt4 build info -VPATH += $$PWD - -INCLUDEPATH += tmp -INCLUDEPATH += $$PWD $$PWD/kjs $$PWD/bindings $$PWD/bindings/c $$PWD/wtf -DEFINES -= KJS_IDENTIFIER_HIDE_GLOBALS -qt-port:INCLUDEPATH += $$PWD/bindings/qt -qt-port:DEFINES += BUILDING_QT__ -gtk-port:DEFINES += BUILDING_GTK__ - -win32-msvc*: INCLUDEPATH += $$PWD/os-win32 - -include(pcre/pcre.pri) - -LUT_FILES += \ - kjs/date_object.cpp \ - kjs/number_object.cpp \ - kjs/string_object.cpp \ - kjs/array_object.cpp \ - kjs/math_object.cpp \ - kjs/regexp_object.cpp - -KEYWORDLUT_FILES += \ - kjs/keywords.table - -KJSBISON += \ - kjs/grammar.y - -gtk-port: SOURCES += wtf/TCSystemAlloc.cpp - -SOURCES += \ - wtf/Assertions.cpp \ - wtf/HashTable.cpp \ - wtf/FastMalloc.cpp \ - bindings/NP_jsobject.cpp \ - bindings/npruntime.cpp \ - bindings/runtime_array.cpp \ - bindings/runtime.cpp \ - bindings/runtime_method.cpp \ - bindings/runtime_object.cpp \ - bindings/runtime_root.cpp \ - bindings/c/c_class.cpp \ - bindings/c/c_instance.cpp \ - bindings/c/c_runtime.cpp \ - bindings/c/c_utility.cpp \ - API/JSBase.cpp \ - API/JSCallbackConstructor.cpp \ - API/JSCallbackFunction.cpp \ - API/JSCallbackObject.cpp \ - API/JSClassRef.cpp \ - API/JSContextRef.cpp \ - API/JSObjectRef.cpp \ - API/JSStringRef.cpp \ - API/JSValueRef.cpp \ - kjs/DateMath.cpp \ - kjs/JSWrapperObject.cpp \ - kjs/PropertyNameArray.cpp \ - kjs/array_object.cpp \ - kjs/bool_object.cpp \ - kjs/collector.cpp \ - kjs/CommonIdentifiers.cpp \ - kjs/Context.cpp \ - kjs/date_object.cpp \ - kjs/debugger.cpp \ - kjs/dtoa.cpp \ - kjs/error_object.cpp \ - kjs/ExecState.cpp \ - kjs/fpconst.cpp \ - kjs/function.cpp \ - kjs/function_object.cpp \ - kjs/identifier.cpp \ - kjs/internal.cpp \ - kjs/interpreter.cpp \ - kjs/JSImmediate.cpp \ - kjs/JSLock.cpp \ - kjs/lexer.cpp \ - kjs/list.cpp \ - kjs/lookup.cpp \ - kjs/math_object.cpp \ - kjs/nodes.cpp \ - kjs/nodes2string.cpp \ - kjs/number_object.cpp \ - kjs/object.cpp \ - kjs/object_object.cpp \ - kjs/operations.cpp \ - kjs/Parser.cpp \ - kjs/property_map.cpp \ - kjs/property_slot.cpp \ - kjs/regexp.cpp \ - kjs/regexp_object.cpp \ - kjs/scope_chain.cpp \ - kjs/string_object.cpp \ - kjs/ustring.cpp \ - kjs/value.cpp - -qt-port:SOURCES += \ - bindings/qt/qt_class.cpp \ - bindings/qt/qt_instance.cpp \ - bindings/qt/qt_runtime.cpp - - -# GENERATOR 1-A: LUT creator -lut.output = tmp/${QMAKE_FILE_BASE}.lut.h -lut.commands = perl $$PWD/kjs/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} -lut.depend = ${QMAKE_FILE_NAME} -lut.input = LUT_FILES -lut.CONFIG += no_link -QMAKE_EXTRA_COMPILERS += lut - -# GENERATOR 1-B: particular LUT creator (for 1 file only) -keywordlut.output = tmp/lexer.lut.h -keywordlut.commands = perl $$PWD/kjs/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} -keywordlut.depend = ${QMAKE_FILE_NAME} -keywordlut.input = KEYWORDLUT_FILES -keywordlut.CONFIG += no_link -QMAKE_EXTRA_COMPILERS += keywordlut - -# GENERATOR 2: bison grammar -kjsbison.output = tmp/${QMAKE_FILE_BASE}.cpp -kjsbison.commands = bison -d -p kjsyy ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_BASE}.tab.c && $(MOVE) ${QMAKE_FILE_BASE}.tab.c ${QMAKE_FILE_OUT} && $(MOVE) ${QMAKE_FILE_BASE}.tab.h tmp/${QMAKE_FILE_BASE}.h -kjsbison.depend = ${QMAKE_FILE_NAME} -kjsbison.input = KJSBISON -kjsbison.variable_out = GENERATED_SOURCES -kjsbison.dependency_type = TYPE_C -kjsbison.CONFIG = target_predeps -kjsbison.clean = ${QMAKE_FILE_OUT} tmp/${QMAKE_FILE_BASE}.h -QMAKE_EXTRA_COMPILERS += kjsbison diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/bindings/c/c_class.cpp --- a/webengine/osswebengine/JavaScriptCore/bindings/c/c_class.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/bindings/c/c_class.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -53,8 +53,25 @@ } typedef HashMap ClassesByIsAMap; +typedef HashMap::iterator ClassesByIsAMapIt; static ClassesByIsAMap* classesByIsA = 0; +struct cleanupClassesByIsA { + ~cleanupClassesByIsA() { + if( classesByIsA ) { + ClassesByIsAMapIt end = classesByIsA->end(); + for( ClassesByIsAMapIt it=classesByIsA->begin(); it!=end; ++it ) { + CClass* obj = (*it).second; + delete obj; + } + classesByIsA->clear(); + delete classesByIsA; + classesByIsA = 0; + } + } +}; +struct cleanupClassesByIsA cleanupClassIsAHash; + CClass* CClass::classForIsA(NPClass* isa) { if (!classesByIsA) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/bindings/npruntime.cpp --- a/webengine/osswebengine/JavaScriptCore/bindings/npruntime.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/bindings/npruntime.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -41,14 +41,26 @@ typedef HashMap, PrivateIdentifier*> StringIdentifierMap; +static StringIdentifierMap* stringIdentifierMap = 0; + static StringIdentifierMap* getStringIdentifierMap() { - static StringIdentifierMap* stringIdentifierMap = 0; if (!stringIdentifierMap) stringIdentifierMap = new StringIdentifierMap; return stringIdentifierMap; } +struct cleanupStringIdentifier { + ~cleanupStringIdentifier() { + if( stringIdentifierMap ) { + stringIdentifierMap->clear(); + delete stringIdentifierMap; + stringIdentifierMap = 0; + } + } +}; +struct cleanupStringIdentifier cleanup; + typedef HashMap IntIdentifierMap; static IntIdentifierMap* getIntIdentifierMap() diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/bindings/testbindings.pro --- a/webengine/osswebengine/JavaScriptCore/bindings/testbindings.pro Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,8 +0,0 @@ -QT -= gui - -include(../../WebKit.pri) -INCLUDEPATH += .. ../kjs . -qt-port:INCLUDEPATH += bindings/qt - -SOURCES += testqtbindings.cpp - diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/CommonIdentifiers.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/CommonIdentifiers.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/CommonIdentifiers.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -34,9 +34,18 @@ { } +static CommonIdentifiers* sharedInstance=0; + +struct cleanupCommonIdentifiers { + ~cleanupCommonIdentifiers() { + delete sharedInstance; + sharedInstance=0; + } +}; +struct cleanupCommonIdentifiers cleanupIdentifiers; + CommonIdentifiers* CommonIdentifiers::shared() { - static CommonIdentifiers* sharedInstance; if (!sharedInstance) { JSLock lock; sharedInstance = new CommonIdentifiers; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/Parser.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/Parser.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/Parser.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -36,9 +36,19 @@ int Parser::sid = 0; -static RefPtr* progNode; +static RefPtr* progNode = 0; static HashSet* nodeCycles; +struct cleanupProgNode { + ~cleanupProgNode() { + if( progNode ) { + delete progNode; + progNode=0; + } + } +}; +static cleanupProgNode cleanProgNode; + void Parser::noteNodeCycle(Node *node) { if (!nodeCycles) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/collector.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/collector.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/collector.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -79,7 +79,7 @@ const size_t MIN_ARRAY_SIZE = 14; const size_t GROWTH_FACTOR = 2; const size_t LOW_WATER_FACTOR = 4; -const size_t ALLOCATIONS_PER_COLLECTION = 4000; +const size_t ALLOCATIONS_PER_COLLECTION = 1000; enum OperationInProgress { NoOperation, Allocation, Collection }; @@ -102,6 +102,7 @@ for(int i=0; iclassInfo()->className ) { - static const Identifier* parsePropertyName = new Identifier("parse"); - static const Identifier* UTCPropertyName = new Identifier("UTC"); + if(!parsePropertyName) + parsePropertyName = new Identifier("parse"); + if(!UTCPropertyName) + UTCPropertyName = new Identifier("UTC"); putDirect(exec->propertyNames().prototype, dateProto, DontEnum|DontDelete|ReadOnly); putDirectFunction(new DateObjectFuncImp(exec, funcProto, DateObjectFuncImp::Parse, 1, *parsePropertyName), DontEnum); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/function_object.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/function_object.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/function_object.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -36,12 +36,28 @@ using namespace KJS; +static const Identifier* applyPropertyName = 0; +static const Identifier* callPropertyName = 0; + +struct cleanupStaticFunctionObject { + ~cleanupStaticFunctionObject() + { + delete applyPropertyName; + delete callPropertyName; + + applyPropertyName = 0; + callPropertyName = 0; + } +}; +static cleanupStaticFunctionObject deleteStaticFunctionObject; // ------------------------------ FunctionPrototype ------------------------- FunctionPrototype::FunctionPrototype(ExecState *exec) { - static const Identifier* applyPropertyName = new Identifier("apply"); - static const Identifier* callPropertyName = new Identifier("call"); + if(!applyPropertyName) + applyPropertyName = new Identifier("apply"); + if(!callPropertyName) + callPropertyName = new Identifier("call"); putDirect(exec->propertyNames().length, jsNumber(0), DontDelete | ReadOnly | DontEnum); putDirectFunction(new FunctionProtoFunc(exec, this, FunctionProtoFunc::ToString, 0, exec->propertyNames().toString), DontEnum); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/identifier.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/identifier.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/identifier.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -51,6 +51,17 @@ typedef HashSet IdentifierTable; static IdentifierTable *table; +struct cleanupIdentifier { + ~cleanupIdentifier() { + if( table ) { + table->clear(); + delete table; + table=0; + } + } +}; +static cleanupIdentifier cleanIdentifier; + static inline IdentifierTable& identifierTable() { ASSERT(JSLock::lockCount() > 0); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/interpreter.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/interpreter.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/interpreter.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -80,12 +80,26 @@ Interpreter* Interpreter::s_hook = 0; typedef HashMap InterpreterMap; +static InterpreterMap* map = 0; static inline InterpreterMap &interpreterMap() { - static InterpreterMap* map = new InterpreterMap; + if(!map ) + map = new InterpreterMap; return* map; } +struct cleanupInterpreterMap { + ~cleanupInterpreterMap() { + if(map) + { + map->clear(); + delete map; + map = NULL; + } + } +}; +static cleanupInterpreterMap deleteInterpreterMap; + EXPORT Interpreter::Interpreter(JSObject* globalObject) : m_globalExec(this, 0) @@ -145,7 +159,11 @@ // This was the last interpreter s_hook = 0; } + interpreterMap().remove(m_globalObject); + + // It's likely that destroying the interpreter has created a lot of garbage. + Collector::collect(); } EXPORT diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/lexer.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/lexer.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/lexer.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -60,6 +60,14 @@ static Lexer* currLexer = 0; +struct cleanupLexer { + ~cleanupLexer() { + delete currLexer; + currLexer=0; + } +}; +static cleanupLexer clearLexer; + static bool isDecimalDigit(int); Lexer::Lexer() diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/list.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/list.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/list.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -323,10 +323,23 @@ return copy; } +static List* staticEmptyList = 0; + +struct listCleaner { + ~listCleaner() { + delete staticEmptyList; + staticEmptyList = 0; + } +}; + +static listCleaner cleanList; const List& List::empty() { - static List* staticEmptyList = new List; + if(!staticEmptyList) + { + staticEmptyList = new List; + } return *staticEmptyList; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/nodes.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/nodes.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/nodes.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -114,6 +114,21 @@ static HashSet* newNodes; static HashCountedSet* nodeExtraRefCounts; +struct cleanupNodes { + ~cleanupNodes() { + if(nodeExtraRefCounts) + nodeExtraRefCounts->clear(); + delete nodeExtraRefCounts; + nodeExtraRefCounts = NULL; + + if(newNodes) + newNodes->clear(); + delete newNodes; + newNodes = NULL; + } +}; +static cleanupNodes deletenodeExtraRefCounts; + Node::Node() { #ifndef NDEBUG diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/object_object.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/object_object.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/object_object.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -28,18 +28,34 @@ using namespace KJS; + static const Identifier* hasOwnPropertyPropertyName = 0; + static const Identifier* propertyIsEnumerablePropertyName = 0; + static const Identifier* isPrototypeOfPropertyName = 0; + static const Identifier* defineGetterPropertyName = 0; + static const Identifier* defineSetterPropertyName = 0; + static const Identifier* lookupGetterPropertyName = 0; + static const Identifier* lookupSetterPropertyName = 0; + + // ------------------------------ ObjectPrototype -------------------------------- ObjectPrototype::ObjectPrototype(ExecState* exec, FunctionPrototype* funcProto) : JSObject() // [[Prototype]] is null { - static const Identifier* hasOwnPropertyPropertyName = new Identifier("hasOwnProperty"); - static const Identifier* propertyIsEnumerablePropertyName = new Identifier("propertyIsEnumerable"); - static const Identifier* isPrototypeOfPropertyName = new Identifier("isPrototypeOf"); - static const Identifier* defineGetterPropertyName = new Identifier("__defineGetter__"); - static const Identifier* defineSetterPropertyName = new Identifier("__defineSetter__"); - static const Identifier* lookupGetterPropertyName = new Identifier("__lookupGetter__"); - static const Identifier* lookupSetterPropertyName = new Identifier("__lookupSetter__"); + if(!hasOwnPropertyPropertyName) + hasOwnPropertyPropertyName = new Identifier("hasOwnProperty"); + if(!propertyIsEnumerablePropertyName) + propertyIsEnumerablePropertyName = new Identifier("propertyIsEnumerable"); + if(!isPrototypeOfPropertyName) + isPrototypeOfPropertyName = new Identifier("isPrototypeOf"); + if(!defineGetterPropertyName) + defineGetterPropertyName = new Identifier("__defineGetter__"); + if(!defineSetterPropertyName) + defineSetterPropertyName = new Identifier("__defineSetter__"); + if(!lookupGetterPropertyName) + lookupGetterPropertyName = new Identifier("__lookupGetter__"); + if(!lookupSetterPropertyName) + lookupSetterPropertyName = new Identifier("__lookupSetter__"); putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ToString, 0, exec->propertyNames().toString), DontEnum); putDirectFunction(new ObjectProtoFunc(exec, funcProto, ObjectProtoFunc::ToLocaleString, 0, exec->propertyNames().toLocaleString), DontEnum); @@ -192,3 +208,26 @@ return construct(exec, args); } +struct cleanupStaticObjectObject { + ~cleanupStaticObjectObject() + { + delete hasOwnPropertyPropertyName; + delete propertyIsEnumerablePropertyName; + delete isPrototypeOfPropertyName; + delete defineGetterPropertyName; + delete defineSetterPropertyName; + delete lookupGetterPropertyName; + delete lookupSetterPropertyName; + + hasOwnPropertyPropertyName = 0; + propertyIsEnumerablePropertyName = 0; + isPrototypeOfPropertyName = 0; + defineGetterPropertyName = 0; + defineSetterPropertyName = 0; + lookupGetterPropertyName = 0; + lookupSetterPropertyName = 0; + + } +}; +static cleanupStaticObjectObject deleteStaticObjectObject; + diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/regexp_object.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/regexp_object.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/regexp_object.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -43,13 +43,31 @@ const ClassInfo RegExpPrototype::info = {"RegExpPrototype", 0, 0, 0}; + static const Identifier* execPropertyName = 0; + static const Identifier* testPropertyName = 0; + + + struct cleanupStaticRegexpObject { + ~cleanupStaticRegexpObject() + { + delete execPropertyName; + delete testPropertyName; + + execPropertyName = 0; + testPropertyName = 0; + } + }; + static cleanupStaticRegexpObject deleteStaticRegexpObject; + RegExpPrototype::RegExpPrototype(ExecState *exec, ObjectPrototype *objProto, FunctionPrototype *funcProto) : JSObject(objProto) { - static const Identifier* execPropertyName = new Identifier("exec"); - static const Identifier* testPropertyName = new Identifier("test"); + if(!execPropertyName) + execPropertyName = new Identifier("exec"); + if(!testPropertyName) + testPropertyName = new Identifier("test"); putDirectFunction(new RegExpProtoFunc(exec, funcProto, RegExpProtoFunc::Exec, 0, *execPropertyName), DontEnum); putDirectFunction(new RegExpProtoFunc(exec, funcProto, RegExpProtoFunc::Test, 0, *testPropertyName), DontEnum); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/testkjs.pro --- a/webengine/osswebengine/JavaScriptCore/kjs/testkjs.pro Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,31 +0,0 @@ -TEMPLATE = app -TARGET = testkjs -DESTDIR = .. -SOURCES = testkjs.cpp -QT -= gui -DEFINES -= KJS_IDENTIFIER_HIDE_GLOBALS -INCLUDEPATH += $$PWD/.. $$PWD $$PWD/../bindings $$PWD/../bindings/c $$PWD/../wtf -qt-port:DEFINES += BUILDING_QT__ -#qt-port:LIBS += -L$$OUTPUT_DIR/lib -lQtWebKit -gtk-port { - QMAKE_CXXFLAGS += $$system(icu-config --cppflags) - LIBS += $$system(icu-config --ldflags) -} -QMAKE_RPATHDIR += $$OUTPUT_DIR/lib - -isEmpty(OUTPUT_DIR):OUTPUT_DIR=$$PWD/../.. -include($$OUTPUT_DIR/config.pri) - -include($$PWD/../JavaScriptCore.pri) - -# Hack! Fix this. -SOURCES -= API/JSBase.cpp \ - API/JSCallbackConstructor.cpp \ - API/JSCallbackFunction.cpp \ - API/JSCallbackObject.cpp \ - API/JSClassRef.cpp \ - API/JSContextRef.cpp \ - API/JSObjectRef.cpp \ - API/JSStringRef.cpp \ - API/JSValueRef.cpp - diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/ustring.cpp --- a/webengine/osswebengine/JavaScriptCore/kjs/ustring.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/ustring.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -909,14 +909,21 @@ return statBuffer; } -#ifdef KJS_DEBUG_MEM +struct cleanupUString { + ~cleanupUString() { + UString::globalClear(); + } +}; +static cleanupUString clearGlobal; + +//#ifdef KJS_DEBUG_MEM void UString::globalClear() { delete [] statBuffer; statBuffer = 0; statBufferSize = 0; } -#endif +//#endif EXPORT UString &UString::operator=(const char *c) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/kjs/ustring.h --- a/webengine/osswebengine/JavaScriptCore/kjs/ustring.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/JavaScriptCore/kjs/ustring.h Fri Jul 03 15:54:40 2009 +0100 @@ -218,7 +218,7 @@ /** * Destructor. */ - ~UString() {} + ~UString() {m_rep=0;} /** * Constructs a string from an int. @@ -377,12 +377,12 @@ * Static instance of a null string. */ static const UString &null(); -#ifdef KJS_DEBUG_MEM +//#ifdef KJS_DEBUG_MEM /** * Clear statically allocated resources. */ static void globalClear(); -#endif +//#endif Rep* rep() const { return m_rep.get(); } UString(PassRefPtr r) : m_rep(r) { ASSERT(m_rep); } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/pcre/dftables.pro --- a/webengine/osswebengine/JavaScriptCore/pcre/dftables.pro Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,15 +0,0 @@ -TEMPLATE = app -CONFIG += console -CONFIG -= app_bundle qt -SOURCES = dftables.c -TARGET = dftables -DESTDIR = tmp - -INCLUDEPATH += $$PWD/../wtf - -gtk-port { - DEFINES += BUILDING_GTK__ BUILDING_CAIRO__ -} else { - DEFINES += BUILDING_QT__ -} - diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/JavaScriptCore/pcre/pcre.pri --- a/webengine/osswebengine/JavaScriptCore/pcre/pcre.pri Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -# Perl Compatible Regular Expressions - Qt4 build info -VPATH += $$PWD -INCLUDEPATH += $$PWD $$OUTPUT_DIR/JavaScriptCore/kjs/tmp - -SOURCES += \ - pcre_get.c \ - pcre_refcount.c \ - pcre_ucp_findchar.c \ - pcre_compile.c \ - pcre_globals.c \ - pcre_config.c \ - pcre_version.c \ - pcre_info.c \ - pcre_study.c \ - pcre_exec.c \ - pcre_xclass.c \ - pcre_tables.c \ - pcre_maketables.c \ - pcre_try_flipped.c \ - pcre_ord2utf8.c \ - pcre_fullinfo.c - -CTGENFILE += \ - dftables.c - - -# GENERATOR: "chartables.c": compile and execute the chartables generator (and add it to sources) -ctgen.output = tmp/chartables.c -ctgen.commands = $$OUTPUT_DIR/JavaScriptCore/pcre/tmp/dftables ${QMAKE_FILE_OUT} -ctgen.input = CTGENFILE -ctgen.CONFIG += target_predeps no_link -ctgen.variable_out = GENERATED_SOURCES -ctgen.dependency_type = TYPE_C -ctgen.clean = ${QMAKE_FILE_OUT} tmp/${QMAKE_FILE_BASE} -QMAKE_EXTRA_COMPILERS += ctgen diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/MemoryManager/Group/MemManTest.mmp --- a/webengine/osswebengine/MemoryManager/Group/MemManTest.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/MemoryManager/Group/MemManTest.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -88,5 +88,8 @@ STATICLIBRARY kwq.lib KHTML.lib -LANGUAGE_IDS - +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp --- a/webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/MemoryManager/Src/MemoryManager.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -31,6 +31,17 @@ // initializing a global memory pool. static CMemoryPool *s_pool = 0; +struct cleanupMemoryPool { + ~cleanupMemoryPool() { + if(s_pool) + { + delete s_pool; + s_pool = NULL; + } + } +}; +static cleanupMemoryPool deleteMemoryPool; + //----------------------------------------------------------------------------- // Pool() - a utility function for accessing the right memory pool //----------------------------------------------------------------------------- diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/WebCore.pro --- a/webengine/osswebengine/WebCore/WebCore.pro Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1561 +0,0 @@ -# -*- Mode:makefile -*- -# WebCore - qmake build info -CONFIG += building-libs -# do not use implicit rules in nmake Makefiles to avoid the clash -# of API/Node.c and dom/Node.cpp -CONFIG += no_batch -include($$PWD/../WebKit.pri) -gtk-port:LIBS -= -lWebKitGtk - -TEMPLATE = lib -qt-port:TARGET = QtWebKit -gtk-port:TARGET = WebKitGtk -OBJECTS_DIR = tmp -OBJECTS_DIR_WTR = $$OBJECTS_DIR/ -win32-*: OBJECTS_DIR_WTR ~= s|/|\| -INCLUDEPATH += tmp $$OUTPUT_DIR/WebCore/tmp - -DESTDIR = $$OUTPUT_DIR/lib -DEPENDPATH += css dom loader editing history html \ - loader page platform platform/graphics rendering xml - -include($$OUTPUT_DIR/config.pri) - -CONFIG -= warn_on -*-g++*:QMAKE_CXXFLAGS += -Wreturn-type -fno-strict-aliasing -#QMAKE_CXXFLAGS += -Wall -Wno-undef -Wno-unused-parameter - -contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols -unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions - -linux-*: DEFINES += HAVE_STDINT_H -freebsd-*: DEFINES += HAVE_PTHREAD_NP_H - -# PRE-BUILD: make the required config.h file -#config_h.target = config.h -#config_h.commands = cp config.h.qmake config.h -#config_h.depends = config.h.qmake -#QMAKE_EXTRA_TARGETS += config_h -#PRE_TARGETDEPS += config.h - -DEFINES += BUILD_WEBKIT - -win32-*: DEFINES += ENABLE_ICONDATABASE=0 - -# Pick up 3rdparty libraries from INCLUDE/LIB just like with MSVC -win32-g++ { - TMPPATH = $$quote($$(INCLUDE)) - QMAKE_INCDIR_POST += $$split(TMPPATH,";") - TMPPATH = $$quote($$(LIB)) - QMAKE_LIBDIR_POST += $$split(TMPPATH,";") -} - -# Optional components (look for defs in config.h and included files!) -!contains(DEFINES, ENABLE_ICONDATABASE=.): DEFINES += ENABLE_ICONDATABASE=1 -!contains(DEFINES, ENABLE_XPATH=.): DEFINES += ENABLE_XPATH=1 -gtk-port:!contains(DEFINES, ENABLE_XSLT=.): DEFINES += ENABLE_XSLT=1 -#!contains(DEFINES, ENABLE_XBL=.): DEFINES += ENABLE_XBL=1 -qt-port: !contains(DEFINES, ENABLE_SVG=.): DEFINES += ENABLE_SVG=1 -gtk-port:DEFINES += ENABLE_SVG=1 - -DEFINES += WTF_CHANGES=1 - -include($$PWD/../JavaScriptCore/JavaScriptCore.pri) - -#INCLUDEPATH += $$PWD/../JavaScriptCore -#LIBS += -L$$OUTPUT_DIR/lib -lJavaScriptCore - -qt-port { -!win32-* { - LIBS += -L$$OUTPUT_DIR/WebKit/qt/Plugins - LIBS += -lqtwebico -} - -INCLUDEPATH += \ - $$PWD/platform/qt \ - $$PWD/platform/network/qt \ - $$PWD/platform/graphics/qt \ - $$PWD/platform/graphics/svg/qt \ - $$PWD/loader/qt \ - $$PWD/page/qt \ - $$PWD/../WebKit/qt/WebCoreSupport \ - $$PWD/../WebKit/qt/Api - -DEPENDPATH += editing/qt history/qt loader/qt page/qt \ - platform/graphics/qt ../WeKitQt/Api ../WebKit/qt/WebCoreSupport - - DEFINES += WTF_USE_JAVASCRIPTCORE_BINDINGS=1 -} - -gtk-port { - INCLUDEPATH += \ - $$PWD/platform/graphics/svg/cairo \ - $$PWD/platform/image-decoders/bmp \ - $$PWD/platform/image-decoders/gif \ - $$PWD/platform/image-decoders/ico \ - $$PWD/platform/image-decoders/jpeg \ - $$PWD/platform/image-decoders/png \ - $$PWD/platform/image-decoders/xbm - - DEPENDPATH += platform/graphics/gdk \ - platform/gdk \ - loader/gdk \ - page/gdk \ - platform/graphics/cairo \ - platform/graphics/svg/cairo \ - platform/network/curl \ - ../WebKit/gtk/Api \ - ../WebKit/gtk/WebCoreSupport -} - -INCLUDEPATH += $$PWD \ - $$PWD/ForwardingHeaders \ - $$PWD/.. \ - $$PWD/../JavaScriptCore/kjs \ - $$PWD/../JavaScriptCore/bindings \ - $$PWD/platform \ - $$PWD/platform/network \ - $$PWD/platform/graphics \ - $$PWD/platform/graphics/svg \ - $$PWD/platform/graphics/svg/filters \ - $$PWD/loader $$PWD/loader/icon \ - $$PWD/css \ - $$PWD/dom \ - $$PWD/page \ - $$PWD/bridge \ - $$PWD/editing \ - $$PWD/rendering \ - $$PWD/history \ - $$PWD/xml \ - $$PWD/html \ - $$PWD/bindings/js \ - $$PWD/ksvg2 $$PWD/ksvg2/css $$PWD/ksvg2/svg $$PWD/ksvg2/misc $$PWD/ksvg2/events \ - $$PWD/platform/image-decoders - -QT += network xml - -FEATURE_DEFINES_JAVASCRIPT = LANGUAGE_JAVASCRIPT=1 - -TOKENIZER = $$PWD/css/tokenizer.flex - -DOCTYPESTRINGS = $$PWD/html/DocTypeStrings.gperf - -CSSBISON = $$PWD/css/CSSGrammar.y - -HTML_NAMES = $$PWD/html/HTMLTagNames.in - -XML_NAMES = $$PWD/xml/xmlattrs.in - -ENTITIES_GPERF = $$PWD/html/HTMLEntityNames.gperf - -COLORDAT_GPERF = $$PWD/platform/ColorData.gperf - -WALDOCSSPROPS = $$PWD/css/CSSPropertyNames.in - -WALDOCSSVALUES = $$PWD/css/CSSValueKeywords.in - -SVGCSSPROPERTIES = $$PWD/ksvg2/css/CSSPropertyNames.in - -SVGCSSVALUES = $$PWD/ksvg2/css/CSSValueKeywords.in - -STYLESHEETS_EMBED = $$PWD/css/html4.css - -LUT_FILES += \ - bindings/js/JSDOMExceptionConstructor.cpp \ - bindings/js/JSEventTargetNode.cpp \ - bindings/js/JSXMLHttpRequest.cpp \ - bindings/js/JSXSLTProcessor.cpp \ - bindings/js/kjs_css.cpp \ - bindings/js/kjs_events.cpp \ - bindings/js/kjs_navigator.cpp \ - bindings/js/kjs_window.cpp - -LUT_TABLE_FILES += \ - bindings/js/JSHTMLInputElementBase.cpp - -IDL_BINDINGS += \ - css/Counter.idl \ - css/CSSCharsetRule.idl \ - css/CSSFontFaceRule.idl \ - css/CSSImportRule.idl \ - css/CSSMediaRule.idl \ - css/CSSPageRule.idl \ - css/CSSPrimitiveValue.idl \ - css/CSSRule.idl \ - css/CSSRuleList.idl \ - css/CSSStyleDeclaration.idl \ - css/CSSStyleRule.idl \ - css/CSSStyleSheet.idl \ - css/CSSValue.idl \ - css/CSSValueList.idl \ - css/MediaList.idl \ - css/Rect.idl \ - css/StyleSheet.idl \ - dom/Attr.idl \ - dom/CharacterData.idl \ - dom/CDATASection.idl \ - dom/Comment.idl \ - dom/DocumentFragment.idl \ - dom/Document.idl \ - dom/DocumentType.idl \ - dom/DOMImplementation.idl \ - dom/Element.idl \ - dom/Entity.idl \ - dom/EntityReference.idl \ - dom/Event.idl \ -# dom/EventListener.idl \ -# dom/EventTarget.idl \ - dom/KeyboardEvent.idl \ - dom/MouseEvent.idl \ - dom/MutationEvent.idl \ - dom/NamedNodeMap.idl \ - dom/Node.idl \ - dom/NodeFilter.idl \ - dom/NodeIterator.idl \ - dom/NodeList.idl \ - dom/Notation.idl \ - dom/OverflowEvent.idl \ - dom/ProcessingInstruction.idl \ - dom/RangeException.idl \ - dom/Range.idl \ - dom/Text.idl \ - dom/TextEvent.idl \ - dom/TreeWalker.idl \ - dom/UIEvent.idl \ - dom/WheelEvent.idl \ - html/CanvasGradient.idl \ - html/CanvasPattern.idl \ - html/CanvasRenderingContext2D.idl \ - html/HTMLAnchorElement.idl \ - html/HTMLAppletElement.idl \ - html/HTMLAreaElement.idl \ - html/HTMLBaseElement.idl \ - html/HTMLBaseFontElement.idl \ - html/HTMLBlockquoteElement.idl \ - html/HTMLBodyElement.idl \ - html/HTMLBRElement.idl \ - html/HTMLButtonElement.idl \ - html/HTMLCanvasElement.idl \ - html/HTMLCollection.idl \ - html/HTMLDirectoryElement.idl \ - html/HTMLDivElement.idl \ - html/HTMLDListElement.idl \ - html/HTMLDocument.idl \ - html/HTMLElement.idl \ - html/HTMLEmbedElement.idl \ - html/HTMLFieldSetElement.idl \ - html/HTMLFontElement.idl \ - html/HTMLFormElement.idl \ - html/HTMLFrameElement.idl \ - html/HTMLFrameSetElement.idl \ - html/HTMLHeadElement.idl \ - html/HTMLHeadingElement.idl \ - html/HTMLHRElement.idl \ - html/HTMLHtmlElement.idl \ - html/HTMLIFrameElement.idl \ - html/HTMLImageElement.idl \ - html/HTMLInputElement.idl \ - html/HTMLIsIndexElement.idl \ - html/HTMLLabelElement.idl \ - html/HTMLLegendElement.idl \ - html/HTMLLIElement.idl \ - html/HTMLLinkElement.idl \ - html/HTMLMapElement.idl \ - html/HTMLMarqueeElement.idl \ - html/HTMLMenuElement.idl \ - html/HTMLMetaElement.idl \ - html/HTMLModElement.idl \ - html/HTMLObjectElement.idl \ - html/HTMLOListElement.idl \ - html/HTMLOptGroupElement.idl \ - html/HTMLOptionElement.idl \ - html/HTMLOptionsCollection.idl \ - html/HTMLParagraphElement.idl \ - html/HTMLParamElement.idl \ - html/HTMLPreElement.idl \ - html/HTMLQuoteElement.idl \ - html/HTMLScriptElement.idl \ - html/HTMLSelectElement.idl \ - html/HTMLStyleElement.idl \ - html/HTMLTableCaptionElement.idl \ - html/HTMLTableCellElement.idl \ - html/HTMLTableColElement.idl \ - html/HTMLTableElement.idl \ - html/HTMLTableRowElement.idl \ - html/HTMLTableSectionElement.idl \ - html/HTMLTextAreaElement.idl \ - html/HTMLTitleElement.idl \ - html/HTMLUListElement.idl \ - page/BarInfo.idl \ - page/DOMSelection.idl \ - page/DOMWindow.idl \ - page/History.idl \ - page/Screen.idl \ - xml/DOMParser.idl \ - xml/XMLSerializer.idl - - -SOURCES += \ - bindings/js/GCController.cpp \ - bindings/js/JSAttrCustom.cpp \ - bindings/js/JSCanvasRenderingContext2DCustom.cpp \ - bindings/js/JSCSSRuleCustom.cpp \ - bindings/js/JSCSSStyleDeclarationCustom.cpp \ - bindings/js/JSCSSValueCustom.cpp \ - bindings/js/JSCustomXPathNSResolver.cpp \ - bindings/js/JSDocumentCustom.cpp \ - bindings/js/JSDOMExceptionConstructor.cpp \ - bindings/js/JSDOMWindowCustom.cpp \ - bindings/js/JSElementCustom.cpp \ - bindings/js/JSEventCustom.cpp \ - bindings/js/JSEventTargetNode.cpp \ - bindings/js/JSHTMLAppletElementCustom.cpp \ - bindings/js/JSHTMLCollectionCustom.cpp \ - bindings/js/JSHTMLDocumentCustom.cpp \ - bindings/js/JSHTMLElementCustom.cpp \ - bindings/js/JSHTMLElementWrapperFactory.cpp \ - bindings/js/JSHTMLEmbedElementCustom.cpp \ - bindings/js/JSHTMLFormElementCustom.cpp \ - bindings/js/JSHTMLFrameElementCustom.cpp \ - bindings/js/JSHTMLFrameSetElementCustom.cpp \ - bindings/js/JSHTMLIFrameElementCustom.cpp \ - bindings/js/JSHTMLInputElementBase.cpp \ - bindings/js/JSHTMLObjectElementCustom.cpp \ - bindings/js/JSHTMLOptionElementConstructor.cpp \ - bindings/js/JSHTMLOptionsCollectionCustom.cpp \ - bindings/js/JSHTMLSelectElementCustom.cpp \ - bindings/js/JSNamedNodeMapCustom.cpp \ - bindings/js/JSNamedNodesCollection.cpp \ - bindings/js/JSNodeCustom.cpp \ - bindings/js/JSNodeFilterCondition.cpp \ - bindings/js/JSNodeFilterCustom.cpp \ - bindings/js/JSNodeIteratorCustom.cpp \ - bindings/js/JSNodeListCustom.cpp \ - bindings/js/JSStyleSheetCustom.cpp \ - bindings/js/JSTreeWalkerCustom.cpp \ - bindings/js/JSXMLHttpRequest.cpp \ - bindings/js/JSXSLTProcessor.cpp \ - bindings/js/kjs_binding.cpp \ - bindings/js/kjs_css.cpp \ - bindings/js/kjs_dom.cpp \ - bindings/js/kjs_events.cpp \ - bindings/js/kjs_html.cpp \ - bindings/js/kjs_navigator.cpp \ - bindings/js/kjs_proxy.cpp \ - bindings/js/kjs_window.cpp \ - css/CSSBorderImageValue.cpp \ - css/CSSCharsetRule.cpp \ - css/CSSComputedStyleDeclaration.cpp \ - css/CSSCursorImageValue.cpp \ - css/CSSFontFaceRule.cpp \ - css/CSSHelper.cpp \ - css/CSSImageValue.cpp \ - css/CSSImportRule.cpp \ - css/CSSInheritedValue.cpp \ - css/CSSInitialValue.cpp \ - css/CSSMediaRule.cpp \ - css/CSSMutableStyleDeclaration.cpp \ - css/CSSPageRule.cpp \ - css/CSSParser.cpp \ - css/CSSPrimitiveValue.cpp \ - css/CSSProperty.cpp \ - css/CSSRule.cpp \ - css/CSSRuleList.cpp \ - css/CSSSelector.cpp \ - css/CSSStyleDeclaration.cpp \ - css/CSSStyleRule.cpp \ - css/CSSStyleSelector.cpp \ - css/CSSStyleSheet.cpp \ - css/CSSValueList.cpp \ - css/FontFamilyValue.cpp \ - css/FontValue.cpp \ - css/MediaFeatureNames.cpp \ - css/MediaList.cpp \ - css/MediaQuery.cpp \ - css/MediaQueryEvaluator.cpp \ - css/MediaQueryExp.cpp \ - css/ShadowValue.cpp \ - css/StyleBase.cpp \ - css/StyleList.cpp \ - css/StyleSheet.cpp \ - css/StyleSheetList.cpp \ - dom/Attr.cpp \ - dom/Attribute.cpp \ - dom/BeforeTextInsertedEvent.cpp \ - dom/BeforeUnloadEvent.cpp \ - dom/CDATASection.cpp \ - dom/CharacterData.cpp \ - dom/ChildNodeList.cpp \ - dom/Clipboard.cpp \ - dom/ClipboardEvent.cpp \ - dom/Comment.cpp \ - dom/ContainerNode.cpp \ - dom/CSSMappedAttributeDeclaration.cpp \ - dom/Document.cpp \ - dom/DocumentFragment.cpp \ - dom/DocumentType.cpp \ - dom/DOMImplementation.cpp \ - dom/EditingText.cpp \ - dom/Element.cpp \ - dom/Entity.cpp \ - dom/EntityReference.cpp \ - dom/Event.cpp \ - dom/EventNames.cpp \ - dom/EventTarget.cpp \ - dom/EventTargetNode.cpp \ - dom/KeyboardEvent.cpp \ - dom/MappedAttribute.cpp \ - dom/MouseEvent.cpp \ - dom/MouseRelatedEvent.cpp \ - dom/MutationEvent.cpp \ - dom/NamedAttrMap.cpp \ - dom/NamedMappedAttrMap.cpp \ - dom/NameNodeList.cpp \ - dom/Node.cpp \ - dom/NodeFilterCondition.cpp \ - dom/NodeFilter.cpp \ - dom/NodeIterator.cpp \ - dom/NodeList.cpp \ - dom/Notation.cpp \ - dom/OverflowEvent.cpp \ - dom/Position.cpp \ - dom/PositionIterator.cpp \ - dom/ProcessingInstruction.cpp \ - dom/QualifiedName.cpp \ - dom/Range.cpp \ - dom/RegisteredEventListener.cpp \ - dom/StyledElement.cpp \ - dom/StyleElement.cpp \ - dom/Text.cpp \ - dom/TextEvent.cpp \ - dom/Traversal.cpp \ - dom/TreeWalker.cpp \ - dom/UIEvent.cpp \ - dom/UIEventWithKeyState.cpp \ - dom/WheelEvent.cpp \ - dom/XMLTokenizer.cpp \ - editing/AppendNodeCommand.cpp \ - editing/ApplyStyleCommand.cpp \ - editing/BreakBlockquoteCommand.cpp \ - editing/CommandByName.cpp \ - editing/CompositeEditCommand.cpp \ - editing/CreateLinkCommand.cpp \ - editing/DeleteButtonController.cpp \ - editing/DeleteButton.cpp \ - editing/DeleteFromTextNodeCommand.cpp \ - editing/DeleteSelectionCommand.cpp \ - editing/EditCommand.cpp \ - editing/Editor.cpp \ - editing/FormatBlockCommand.cpp \ - editing/htmlediting.cpp \ - editing/HTMLInterchange.cpp \ - editing/IndentOutdentCommand.cpp \ - editing/InsertIntoTextNodeCommand.cpp \ - editing/InsertLineBreakCommand.cpp \ - editing/InsertListCommand.cpp \ - editing/InsertNodeBeforeCommand.cpp \ - editing/InsertParagraphSeparatorCommand.cpp \ - editing/InsertTextCommand.cpp \ - editing/JoinTextNodesCommand.cpp \ - editing/JSEditor.cpp \ - editing/markup.cpp \ - editing/MergeIdenticalElementsCommand.cpp \ - editing/ModifySelectionListLevel.cpp \ - editing/MoveSelectionCommand.cpp \ - editing/RemoveCSSPropertyCommand.cpp \ - editing/RemoveNodeAttributeCommand.cpp \ - editing/RemoveNodeCommand.cpp \ - editing/RemoveNodePreservingChildrenCommand.cpp \ - editing/ReplaceSelectionCommand.cpp \ - editing/SelectionController.cpp \ - editing/Selection.cpp \ - editing/SetNodeAttributeCommand.cpp \ - editing/SmartReplace.cpp \ - editing/SplitElementCommand.cpp \ - editing/SplitTextNodeCommand.cpp \ - editing/SplitTextNodeContainingElementCommand.cpp \ - editing/TextIterator.cpp \ - editing/TypingCommand.cpp \ - editing/UnlinkCommand.cpp \ - editing/VisiblePosition.cpp \ - editing/visible_units.cpp \ - editing/WrapContentsInDummySpanCommand.cpp \ - history/BackForwardList.cpp \ - history/CachedPage.cpp \ - history/HistoryItem.cpp \ - history/PageCache.cpp \ - html/CanvasGradient.cpp \ - html/CanvasPattern.cpp \ - html/CanvasRenderingContext2D.cpp \ - html/CanvasStyle.cpp \ - html/FormDataList.cpp \ - html/HTMLAnchorElement.cpp \ - html/HTMLAppletElement.cpp \ - html/HTMLAreaElement.cpp \ - html/HTMLBaseElement.cpp \ - html/HTMLBaseFontElement.cpp \ - html/HTMLBlockquoteElement.cpp \ - html/HTMLBodyElement.cpp \ - html/HTMLBRElement.cpp \ - html/HTMLButtonElement.cpp \ - html/HTMLCanvasElement.cpp \ - html/HTMLCollection.cpp \ - html/HTMLDirectoryElement.cpp \ - html/HTMLDivElement.cpp \ - html/HTMLDListElement.cpp \ - html/HTMLDocument.cpp \ - html/HTMLElement.cpp \ - html/HTMLElementFactory.cpp \ - html/HTMLEmbedElement.cpp \ - html/HTMLFieldSetElement.cpp \ - html/HTMLFontElement.cpp \ - html/HTMLFormCollection.cpp \ - html/HTMLFormElement.cpp \ - html/HTMLFrameElementBase.cpp \ - html/HTMLFrameElement.cpp \ - html/HTMLFrameOwnerElement.cpp \ - html/HTMLFrameSetElement.cpp \ - html/HTMLGenericFormElement.cpp \ - html/HTMLHeadElement.cpp \ - html/HTMLHeadingElement.cpp \ - html/HTMLHRElement.cpp \ - html/HTMLHtmlElement.cpp \ - html/HTMLIFrameElement.cpp \ - html/HTMLImageElement.cpp \ - html/HTMLImageLoader.cpp \ - html/HTMLInputElement.cpp \ - html/HTMLIsIndexElement.cpp \ - html/HTMLKeygenElement.cpp \ - html/HTMLLabelElement.cpp \ - html/HTMLLegendElement.cpp \ - html/HTMLLIElement.cpp \ - html/HTMLLinkElement.cpp \ - html/HTMLMapElement.cpp \ - html/HTMLMarqueeElement.cpp \ - html/HTMLMenuElement.cpp \ - html/HTMLMetaElement.cpp \ - html/HTMLModElement.cpp \ - html/HTMLNameCollection.cpp \ - html/HTMLObjectElement.cpp \ - html/HTMLOListElement.cpp \ - html/HTMLOptGroupElement.cpp \ - html/HTMLOptionElement.cpp \ - html/HTMLOptionsCollection.cpp \ - html/HTMLParagraphElement.cpp \ - html/HTMLParamElement.cpp \ - html/HTMLParser.cpp \ - html/HTMLParserErrorCodes.cpp \ - html/HTMLPlugInElement.cpp \ - html/HTMLPreElement.cpp \ - html/HTMLQuoteElement.cpp \ - html/HTMLScriptElement.cpp \ - html/HTMLSelectElement.cpp \ - html/HTMLStyleElement.cpp \ - html/HTMLTableCaptionElement.cpp \ - html/HTMLTableCellElement.cpp \ - html/HTMLTableColElement.cpp \ - html/HTMLTableElement.cpp \ - html/HTMLTablePartElement.cpp \ - html/HTMLTableRowElement.cpp \ - html/HTMLTableSectionElement.cpp \ - html/HTMLTextAreaElement.cpp \ - html/HTMLTextFieldInnerElement.cpp \ - html/HTMLTitleElement.cpp \ - html/HTMLTokenizer.cpp \ - html/HTMLUListElement.cpp \ - html/HTMLViewSourceDocument.cpp \ - loader/Cache.cpp \ - loader/CachedCSSStyleSheet.cpp \ - loader/CachedImage.cpp \ - loader/CachedResourceClientWalker.cpp \ - loader/CachedResource.cpp \ - loader/CachedScript.cpp \ - loader/CachedXSLStyleSheet.cpp \ - loader/DocLoader.cpp \ - loader/DocumentLoader.cpp \ - loader/FormState.cpp \ - loader/FrameLoader.cpp \ - loader/FTPDirectoryDocument.cpp \ - loader/FTPDirectoryParser.cpp \ - loader/icon/IconLoader.cpp \ - loader/ImageDocument.cpp \ - loader/loader.cpp \ - loader/MainResourceLoader.cpp \ - loader/NavigationAction.cpp \ - loader/NetscapePlugInStreamLoader.cpp \ - loader/PluginDocument.cpp \ - loader/ProgressTracker.cpp \ - loader/Request.cpp \ - loader/ResourceLoader.cpp \ - loader/SubresourceLoader.cpp \ - loader/TextDocument.cpp \ - loader/TextResourceDecoder.cpp \ - page/BarInfo.cpp \ - page/Chrome.cpp \ - page/ContextMenuController.cpp \ - page/DOMSelection.cpp \ - page/DOMWindow.cpp \ - page/DragController.cpp \ - page/EventHandler.cpp \ - page/FocusController.cpp \ - page/Frame.cpp \ - page/FrameTree.cpp \ - page/FrameView.cpp \ - page/History.cpp \ - page/InspectorController.cpp \ - page/MouseEventWithHitTestResults.cpp \ - page/Page.cpp \ - page/Screen.cpp \ - page/Settings.cpp \ - platform/Arena.cpp \ - platform/ArrayImpl.cpp \ - platform/AtomicString.cpp \ - platform/Base64.cpp \ - platform/BidiContext.cpp \ - platform/ContextMenu.cpp \ - platform/CString.cpp \ - platform/DeprecatedCString.cpp \ - platform/DeprecatedPtrListImpl.cpp \ - platform/DeprecatedString.cpp \ - platform/DeprecatedStringList.cpp \ - platform/DeprecatedValueListImpl.cpp \ - platform/DragData.cpp \ - platform/DragImage.cpp \ - platform/FileChooser.cpp \ - platform/FontFamily.cpp \ - platform/graphics/AffineTransform.cpp \ - platform/graphics/BitmapImage.cpp \ - platform/graphics/Color.cpp \ - platform/graphics/FloatPoint3D.cpp \ - platform/graphics/FloatPoint.cpp \ - platform/graphics/FloatRect.cpp \ - platform/graphics/FloatSize.cpp \ - platform/graphics/GraphicsContext.cpp \ - platform/graphics/GraphicsTypes.cpp \ - platform/graphics/ImageBuffer.cpp \ - platform/graphics/Image.cpp \ - platform/graphics/IntRect.cpp \ - platform/graphics/Path.cpp \ - platform/graphics/PathTraversalState.cpp \ - platform/graphics/Pen.cpp \ - platform/KURL.cpp \ - platform/Logging.cpp \ - platform/MIMETypeRegistry.cpp \ - platform/network/AuthenticationChallenge.cpp \ - platform/network/Credential.cpp \ - platform/network/FormData.cpp \ - platform/network/HTTPParsers.cpp \ - platform/network/ProtectionSpace.cpp \ - platform/network/ResourceHandle.cpp \ - platform/network/ResourceRequestBase.cpp \ - platform/network/ResourceResponse.cpp \ - platform/RegularExpression.cpp \ - platform/ScrollBar.cpp \ -# platform/SearchPopupMenu.cpp \ - platform/SecurityOrigin.cpp \ - platform/SegmentedString.cpp \ - platform/SharedBuffer.cpp \ - platform/String.cpp \ - platform/StringImpl.cpp \ - platform/TextCodec.cpp \ - platform/TextCodecLatin1.cpp \ - platform/TextCodecUTF16.cpp \ - platform/TextDecoder.cpp \ - platform/TextEncoding.cpp \ - platform/TextEncodingRegistry.cpp \ - platform/TextStream.cpp \ - platform/Timer.cpp \ - platform/Widget.cpp \ - rendering/AutoTableLayout.cpp \ - rendering/bidi.cpp \ - rendering/break_lines.cpp \ - rendering/CounterNode.cpp \ - rendering/EllipsisBox.cpp \ - rendering/FixedTableLayout.cpp \ - rendering/HitTestResult.cpp \ - rendering/InlineBox.cpp \ - rendering/InlineFlowBox.cpp \ - rendering/InlineTextBox.cpp \ - rendering/LayoutState.cpp \ - rendering/ListMarkerBox.cpp \ - rendering/RenderApplet.cpp \ - rendering/RenderArena.cpp \ - rendering/RenderBlock.cpp \ - rendering/RenderBox.cpp \ - rendering/RenderBR.cpp \ - rendering/RenderButton.cpp \ - rendering/RenderContainer.cpp \ - rendering/RenderCounter.cpp \ - rendering/RenderFieldset.cpp \ - rendering/RenderFileUploadControl.cpp \ - rendering/RenderFlexibleBox.cpp \ - rendering/RenderFlow.cpp \ - rendering/RenderFrame.cpp \ - rendering/RenderFrameSet.cpp \ - rendering/RenderHTMLCanvas.cpp \ - rendering/RenderImage.cpp \ - rendering/RenderInline.cpp \ - rendering/RenderLayer.cpp \ - rendering/RenderLegend.cpp \ - rendering/RenderListBox.cpp \ - rendering/RenderListItem.cpp \ - rendering/RenderListMarker.cpp \ - rendering/RenderMenuList.cpp \ - rendering/RenderObject.cpp \ - rendering/RenderPart.cpp \ - rendering/RenderPartObject.cpp \ - rendering/RenderReplaced.cpp \ - rendering/RenderSlider.cpp \ - rendering/RenderStyle.cpp \ - rendering/RenderTableCell.cpp \ - rendering/RenderTableCol.cpp \ - rendering/RenderTable.cpp \ - rendering/RenderTableRow.cpp \ - rendering/RenderTableSection.cpp \ - rendering/RenderTextControl.cpp \ - rendering/RenderText.cpp \ - rendering/RenderTextFragment.cpp \ - rendering/RenderTheme.cpp \ - rendering/RenderTreeAsText.cpp \ - rendering/RenderView.cpp \ - rendering/RenderWidget.cpp \ - rendering/RenderWordBreak.cpp \ - rendering/RootInlineBox.cpp \ - rendering/SVGRenderTreeAsText.cpp \ - xml/DOMParser.cpp \ - xml/NativeXPathNSResolver.cpp \ - xml/XMLHttpRequest.cpp \ - xml/XMLSerializer.cpp \ - xml/XPathEvaluator.cpp \ - xml/XPathExpression.cpp \ - xml/XPathExpressionNode.cpp \ - xml/XPathFunctions.cpp \ - xml/XPathNamespace.cpp \ - xml/XPathNodeSet.cpp \ - xml/XPathNSResolver.cpp \ - xml/XPathParser.cpp \ - xml/XPathPath.cpp \ - xml/XPathPredicate.cpp \ - xml/XPathResult.cpp \ - xml/XPathStep.cpp \ - xml/XPathUtil.cpp \ - xml/XPathValue.cpp \ - xml/XPathVariableReference.cpp \ - xml/XSLImportRule.cpp \ - xml/XSLStyleSheet.cpp \ - xml/XSLTExtensions.cpp \ - xml/XSLTProcessor.cpp - -gtk-port { - SOURCES += \ - platform/GlyphPageTreeNode.cpp \ - platform/GlyphWidthMap.cpp \ - platform/FontCache.cpp \ - platform/Font.cpp \ - platform/FontData.cpp \ - platform/FontFallbackList.cpp -} - -qt-port { - - HEADERS += \ - $$PWD/platform/qt/QWebPopup.h \ - $$PWD/platform/qt/MenuEventProxy.h \ - $$PWD/platform/qt/SharedTimerQt.h \ - $$PWD/../WebKit/qt/Api/qwebframe.h \ - $$PWD/../WebKit/qt/Api/qwebpage.h \ - $$PWD/../WebKit/qt/Api/qwebnetworkinterface.h \ - $$PWD/../WebKit/qt/Api/qwebnetworkinterface_p.h \ - $$PWD/../WebKit/qt/Api/qwebobjectplugin.h \ - $$PWD/../WebKit/qt/Api/qwebobjectplugin_p.h \ - $$PWD/../WebKit/qt/Api/qwebobjectpluginconnector.h \ - $$PWD/../WebKit/qt/Api/qwebhistoryinterface.h \ - $$PWD/../WebKit/qt/Api/qcookiejar.h \ - $$PWD/../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.h - - SOURCES += \ - page/qt/DragControllerQt.cpp \ - page/qt/EventHandlerQt.cpp \ - page/qt/FrameQt.cpp \ - loader/qt/DocumentLoaderQt.cpp \ - platform/graphics/qt/AffineTransformQt.cpp \ - platform/graphics/qt/ColorQt.cpp \ - platform/graphics/qt/FloatPointQt.cpp \ - platform/graphics/qt/FloatRectQt.cpp \ - platform/graphics/qt/GraphicsContextQt.cpp \ - platform/graphics/qt/IconQt.cpp \ - platform/graphics/qt/ImageBufferQt.cpp \ - platform/graphics/qt/ImageDecoderQt.cpp \ - platform/graphics/qt/ImageQt.cpp \ - platform/graphics/qt/ImageSourceQt.cpp \ - platform/graphics/qt/IntPointQt.cpp \ - platform/graphics/qt/IntRectQt.cpp \ - platform/graphics/qt/IntSizeQt.cpp \ - platform/graphics/qt/PathQt.cpp \ - platform/network/qt/ResourceHandleQt.cpp \ - editing/qt/EditorQt.cpp \ - history/qt/CachedPageQt.cpp \ - platform/qt/ClipboardQt.cpp \ - platform/qt/ContextMenuItemQt.cpp \ - platform/qt/ContextMenuQt.cpp \ - platform/qt/CookieJarQt.cpp \ - platform/qt/CursorQt.cpp \ - platform/qt/DragDataQt.cpp \ - platform/qt/DragImageQt.cpp \ - platform/qt/FileChooserQt.cpp \ - platform/qt/FileSystemQt.cpp \ - platform/qt/FontQt.cpp \ - platform/qt/Localizations.cpp \ - platform/qt/MIMETypeRegistryQt.cpp \ - platform/qt/PasteboardQt.cpp \ - platform/qt/PlatformKeyboardEventQt.cpp \ - platform/qt/PlatformMouseEventQt.cpp \ - platform/qt/PlatformScreenQt.cpp \ - platform/qt/PlatformScrollBarQt.cpp \ - platform/qt/PlugInInfoStoreQt.cpp \ - platform/qt/PopupMenuQt.cpp \ - platform/qt/QWebPopup.cpp \ - platform/qt/RenderThemeQt.cpp \ - platform/qt/ScrollViewQt.cpp \ - platform/qt/SearchPopupMenuQt.cpp \ - platform/qt/SharedTimerQt.cpp \ - platform/qt/SoundQt.cpp \ - platform/qt/StringQt.cpp \ - platform/qt/TemporaryLinkStubs.cpp \ - platform/qt/TextBoundaries.cpp \ - platform/qt/TextBreakIteratorQt.cpp \ - platform/qt/TextCodecQt.cpp \ - platform/qt/ThreadingQt.cpp \ - platform/qt/WheelEventQt.cpp \ - platform/qt/WidgetQt.cpp \ - ../WebKit/qt/WebCoreSupport/ChromeClientQt.cpp \ - ../WebKit/qt/WebCoreSupport/ContextMenuClientQt.cpp \ - ../WebKit/qt/WebCoreSupport/DragClientQt.cpp \ - ../WebKit/qt/WebCoreSupport/EditorClientQt.cpp \ - ../WebKit/qt/WebCoreSupport/EditCommandQt.cpp \ - ../WebKit/qt/WebCoreSupport/FrameLoaderClientQt.cpp \ - ../WebKit/qt/WebCoreSupport/InspectorClientQt.cpp \ - ../WebKit/qt/Api/qwebframe.cpp \ - ../WebKit/qt/Api/qwebnetworkinterface.cpp \ - ../WebKit/qt/Api/qcookiejar.cpp \ - ../WebKit/qt/Api/qwebpage.cpp \ - ../WebKit/qt/Api/qwebpagehistory.cpp \ - ../WebKit/qt/Api/qwebsettings.cpp \ - ../WebKit/qt/Api/qwebobjectplugin.cpp \ - ../WebKit/qt/Api/qwebobjectpluginconnector.cpp \ - ../WebKit/qt/Api/qwebhistoryinterface.cpp - - unix: SOURCES += platform/qt/SystemTimeQt.cpp - else: SOURCES += platform/win/SystemTimeWin.cpp -} - -gtk-port { - HEADERS += \ - ../WebCore/platform/gtk/ClipboardGtk.h \ - ../WebKit/gtk/Api/webkitgtkdefines.h \ - ../WebKit/gtk/Api/webkitgtkframe.h \ - ../WebKit/gtk/Api/webkitgtkglobal.h \ - ../WebKit/gtk/Api/webkitgtknetworkrequest.h \ - ../WebKit/gtk/Api/webkitgtkpage.h \ - ../WebKit/gtk/Api/webkitgtkprivate.h \ - ../WebKit/gtk/Api/webkitgtksettings.h \ - ../WebKit/gtk/WebCoreSupport/ChromeClientGtk.h \ - ../WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.h \ - ../WebKit/gtk/WebCoreSupport/DragClientGtk.h \ - ../WebKit/gtk/WebCoreSupport/EditorClientGtk.h \ - ../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.h \ - ../WebKit/gtk/WebCoreSupport/InspectorClientGtk.h - SOURCES += \ - platform/StringTruncator.cpp \ - platform/TextCodecICU.cpp \ - platform/TextBreakIteratorICU.cpp \ - page/gtk/EventHandlerGtk.cpp \ - page/gtk/FrameGtk.cpp \ - page/gtk/DragControllerGtk.cpp \ - loader/gtk/DocumentLoaderGtk.cpp \ - platform/gtk/ClipboardGtk.cpp \ - platform/gtk/CookieJarGtk.cpp \ - platform/gtk/CursorGtk.cpp \ - platform/gtk/ContextMenuGtk.cpp \ - platform/gtk/ContextMenuItemGtk.cpp \ - platform/gtk/DragDataGtk.cpp \ - platform/gtk/DragImageGtk.cpp \ - platform/gtk/FileChooserGtk.cpp \ - platform/gtk/FileSystemGtk.cpp \ - platform/gtk/FontCacheGtk.cpp \ - platform/gtk/FontDataGtk.cpp \ - platform/gtk/FontGtk.cpp \ - platform/gtk/FontPlatformDataGtk.cpp \ - platform/gtk/GlyphPageTreeNodeGtk.cpp \ - platform/gtk/KeyEventGtk.cpp \ - platform/gtk/LocalizedStringsGtk.cpp \ - platform/gtk/LoggingGtk.cpp \ - platform/gtk/MIMETypeRegistryGtk.cpp \ - platform/gtk/MouseEventGtk.cpp \ - platform/gtk/PasteboardGtk.cpp \ - platform/gtk/PlatformScreenGtk.cpp \ - platform/gtk/PlatformScrollBarGtk.cpp \ - platform/gtk/PopupMenuGtk.cpp \ - platform/gtk/RenderThemeGtk.cpp \ - platform/gtk/SearchPopupMenuGtk.cpp \ - platform/gtk/ScrollViewGtk.cpp \ - platform/gtk/SharedTimerLinux.cpp \ - platform/gtk/SoundGtk.cpp \ - platform/gtk/SystemTimeLinux.cpp \ - platform/gtk/TemporaryLinkStubs.cpp \ - platform/gtk/WheelEventGtk.cpp \ - platform/gtk/WidgetGtk.cpp \ - platform/graphics/gtk/IconGtk.cpp \ - platform/graphics/gtk/ImageGtk.cpp \ - platform/network/curl/ResourceHandleCurl.cpp \ - platform/network/curl/ResourceHandleManager.cpp \ - platform/graphics/cairo/AffineTransformCairo.cpp \ - platform/graphics/cairo/GraphicsContextCairo.cpp \ - platform/graphics/cairo/ImageBufferCairo.cpp \ - platform/graphics/cairo/ImageCairo.cpp \ - platform/graphics/cairo/ImageSourceCairo.cpp \ - platform/graphics/cairo/PathCairo.cpp \ - platform/image-decoders/gif/GIFImageDecoder.cpp \ - platform/image-decoders/gif/GIFImageReader.cpp \ - platform/image-decoders/png/PNGImageDecoder.cpp \ - platform/image-decoders/jpeg/JPEGImageDecoder.cpp \ - platform/image-decoders/bmp/BMPImageDecoder.cpp \ - platform/image-decoders/ico/ICOImageDecoder.cpp \ - platform/image-decoders/xbm/XBMImageDecoder.cpp \ - ../WebKit/gtk/Api/webkitgtkframe.cpp \ - ../WebKit/gtk/Api/webkitgtkglobal.cpp \ - ../WebKit/gtk/Api/webkitgtknetworkrequest.cpp \ - ../WebKit/gtk/Api/webkitgtkpage.cpp \ - ../WebKit/gtk/Api/webkitgtkprivate.cpp \ - ../WebKit/gtk/Api/webkitgtksettings.cpp \ - ../WebKit/gtk/WebCoreSupport/ChromeClientGtk.cpp \ - ../WebKit/gtk/WebCoreSupport/ContextMenuClientGtk.cpp \ - ../WebKit/gtk/WebCoreSupport/DragClientGtk.cpp \ - ../WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp \ - ../WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp \ - ../WebKit/gtk/WebCoreSupport/InspectorClientGtk.cpp -} - -contains(DEFINES, ENABLE_ICONDATABASE=1) { - qt-port: INCLUDEPATH += $$[QT_INSTALL_PREFIX]/src/3rdparty/sqlite/ - LIBS += -lsqlite3 - SOURCES += \ - loader/icon/IconDatabase.cpp \ - loader/icon/IconRecord.cpp \ - loader/icon/PageURLRecord.cpp \ - loader/icon/SQLDatabase.cpp \ - loader/icon/SQLStatement.cpp \ - loader/icon/SQLTransaction.cpp -} else { - SOURCES += \ - loader/icon/IconDatabaseNone.cpp -} - -contains(DEFINES, ENABLE_XPATH=1) { - FEATURE_DEFINES_JAVASCRIPT += ENABLE_XPATH=1 - - XPATHBISON = $$PWD/xml/XPathGrammar.y - - IDL_BINDINGS += \ - xml/XPathNSResolver.idl \ - xml/XPathExpression.idl \ - xml/XPathResult.idl \ - xml/XPathEvaluator.idl -} - -unix:!mac:CONFIG += link_pkgconfig - -contains(DEFINES, ENABLE_XSLT=1) { - FEATURE_DEFINES_JAVASCRIPT += ENABLE_XSLT=1 - PKGCONFIG += libxml-2.0 libxslt - - macx { - INCLUDEPATH += /usr/include/libxml2 - LIBS += -lxml2 -lxslt - } - - win32-msvc* { - LIBS += -llibxml2 -llibxslt - } -} - -contains(DEFINES, ENABLE_XBL=1) { - FEATURE_DEFINES_JAVASCRIPT += ENABLE_XBL=1 -} - -contains(DEFINES, ENABLE_SVG=1) { - FEATURE_DEFINES_JAVASCRIPT += ENABLE_SVG=1 - - DEPENDPATH += ksvg2/css ksvg2/events ksvg2/misc ksvg2/svg platform/graphics/svg - qt-port { - DEPENDPATH += platform/graphics/svg/qt - } - - gtk-port { - DEPENDPATH += platform/graphics/svg/cairo - } - - SVG_NAMES = $$PWD/ksvg2/svg/svgtags.in - - XLINK_NAMES = $$PWD/ksvg2/misc/xlinkattrs.in - - IDL_BINDINGS += ksvg2/events/SVGZoomEvent.idl \ - ksvg2/svg/SVGAElement.idl \ - ksvg2/svg/SVGAngle.idl \ - ksvg2/svg/SVGAnimateColorElement.idl \ - ksvg2/svg/SVGAnimatedAngle.idl \ - ksvg2/svg/SVGAnimatedBoolean.idl \ - ksvg2/svg/SVGAnimatedEnumeration.idl \ - ksvg2/svg/SVGAnimatedInteger.idl \ - ksvg2/svg/SVGAnimatedLength.idl \ - ksvg2/svg/SVGAnimatedLengthList.idl \ - ksvg2/svg/SVGAnimatedNumber.idl \ - ksvg2/svg/SVGAnimatedNumberList.idl \ - ksvg2/svg/SVGAnimatedPreserveAspectRatio.idl \ - ksvg2/svg/SVGAnimatedRect.idl \ - ksvg2/svg/SVGAnimatedString.idl \ - ksvg2/svg/SVGAnimatedTransformList.idl \ - ksvg2/svg/SVGAnimateElement.idl \ - ksvg2/svg/SVGAnimateTransformElement.idl \ - ksvg2/svg/SVGAnimationElement.idl \ - ksvg2/svg/SVGCircleElement.idl \ - ksvg2/svg/SVGClipPathElement.idl \ - ksvg2/svg/SVGColor.idl \ - ksvg2/svg/SVGComponentTransferFunctionElement.idl \ - ksvg2/svg/SVGCursorElement.idl \ - ksvg2/svg/SVGDefsElement.idl \ - ksvg2/svg/SVGDescElement.idl \ - ksvg2/svg/SVGDocument.idl \ - ksvg2/svg/SVGElement.idl \ - ksvg2/svg/SVGElementInstance.idl \ - ksvg2/svg/SVGElementInstanceList.idl \ - ksvg2/svg/SVGEllipseElement.idl \ - ksvg2/svg/SVGFEBlendElement.idl \ - ksvg2/svg/SVGFEColorMatrixElement.idl \ - ksvg2/svg/SVGFEComponentTransferElement.idl \ - ksvg2/svg/SVGFECompositeElement.idl \ - ksvg2/svg/SVGFEDiffuseLightingElement.idl \ - ksvg2/svg/SVGFEDisplacementMapElement.idl \ - ksvg2/svg/SVGFEDistantLightElement.idl \ - ksvg2/svg/SVGFEFloodElement.idl \ - ksvg2/svg/SVGFEFuncAElement.idl \ - ksvg2/svg/SVGFEFuncBElement.idl \ - ksvg2/svg/SVGFEFuncGElement.idl \ - ksvg2/svg/SVGFEFuncRElement.idl \ - ksvg2/svg/SVGFEGaussianBlurElement.idl \ - ksvg2/svg/SVGFEImageElement.idl \ - ksvg2/svg/SVGFEMergeElement.idl \ - ksvg2/svg/SVGFEMergeNodeElement.idl \ - ksvg2/svg/SVGFEOffsetElement.idl \ - ksvg2/svg/SVGFEPointLightElement.idl \ - ksvg2/svg/SVGFESpecularLightingElement.idl \ - ksvg2/svg/SVGFESpotLightElement.idl \ - ksvg2/svg/SVGFETileElement.idl \ - ksvg2/svg/SVGFETurbulenceElement.idl \ - ksvg2/svg/SVGFilterElement.idl \ - ksvg2/svg/SVGForeignObjectElement.idl \ - ksvg2/svg/SVGGElement.idl \ - ksvg2/svg/SVGGradientElement.idl \ - ksvg2/svg/SVGImageElement.idl \ - ksvg2/svg/SVGLength.idl \ - ksvg2/svg/SVGLengthList.idl \ - ksvg2/svg/SVGLinearGradientElement.idl \ - ksvg2/svg/SVGLineElement.idl \ - ksvg2/svg/SVGMarkerElement.idl \ - ksvg2/svg/SVGMaskElement.idl \ - ksvg2/svg/SVGMatrix.idl \ - ksvg2/svg/SVGMetadataElement.idl \ - ksvg2/svg/SVGNumber.idl \ - ksvg2/svg/SVGNumberList.idl \ - ksvg2/svg/SVGPaint.idl \ - ksvg2/svg/SVGPathElement.idl \ - ksvg2/svg/SVGPathSegArcAbs.idl \ - ksvg2/svg/SVGPathSegArcRel.idl \ - ksvg2/svg/SVGPathSegClosePath.idl \ - ksvg2/svg/SVGPathSegCurvetoCubicAbs.idl \ - ksvg2/svg/SVGPathSegCurvetoCubicRel.idl \ - ksvg2/svg/SVGPathSegCurvetoCubicSmoothAbs.idl \ - ksvg2/svg/SVGPathSegCurvetoCubicSmoothRel.idl \ - ksvg2/svg/SVGPathSegCurvetoQuadraticAbs.idl \ - ksvg2/svg/SVGPathSegCurvetoQuadraticRel.idl \ - ksvg2/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl \ - ksvg2/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl \ - ksvg2/svg/SVGPathSeg.idl \ - ksvg2/svg/SVGPathSegLinetoAbs.idl \ - ksvg2/svg/SVGPathSegLinetoHorizontalAbs.idl \ - ksvg2/svg/SVGPathSegLinetoHorizontalRel.idl \ - ksvg2/svg/SVGPathSegLinetoRel.idl \ - ksvg2/svg/SVGPathSegLinetoVerticalAbs.idl \ - ksvg2/svg/SVGPathSegLinetoVerticalRel.idl \ - ksvg2/svg/SVGPathSegList.idl \ - ksvg2/svg/SVGPathSegMovetoAbs.idl \ - ksvg2/svg/SVGPathSegMovetoRel.idl \ - ksvg2/svg/SVGPatternElement.idl \ - ksvg2/svg/SVGPoint.idl \ - ksvg2/svg/SVGPointList.idl \ - ksvg2/svg/SVGPolygonElement.idl \ - ksvg2/svg/SVGPolylineElement.idl \ - ksvg2/svg/SVGPreserveAspectRatio.idl \ - ksvg2/svg/SVGRadialGradientElement.idl \ - ksvg2/svg/SVGRectElement.idl \ - ksvg2/svg/SVGRect.idl \ - ksvg2/svg/SVGRenderingIntent.idl \ - ksvg2/svg/SVGScriptElement.idl \ - ksvg2/svg/SVGSetElement.idl \ - ksvg2/svg/SVGStopElement.idl \ - ksvg2/svg/SVGStringList.idl \ - ksvg2/svg/SVGStyleElement.idl \ - ksvg2/svg/SVGSVGElement.idl \ - ksvg2/svg/SVGSwitchElement.idl \ - ksvg2/svg/SVGSymbolElement.idl \ - ksvg2/svg/SVGTextContentElement.idl \ - ksvg2/svg/SVGTextElement.idl \ - ksvg2/svg/SVGTextPositioningElement.idl \ - ksvg2/svg/SVGTitleElement.idl \ - ksvg2/svg/SVGTransform.idl \ - ksvg2/svg/SVGTransformList.idl \ - ksvg2/svg/SVGTRefElement.idl \ - ksvg2/svg/SVGTSpanElement.idl \ - ksvg2/svg/SVGUnitTypes.idl \ - ksvg2/svg/SVGUseElement.idl \ - ksvg2/svg/SVGViewElement.idl - - SOURCES += \ -# TODO: this-one-is-not-auto-added! FIXME! tmp/SVGElementFactory.cpp \ - bindings/js/JSSVGElementWrapperFactory.cpp \ - bindings/js/JSSVGMatrixCustom.cpp \ - bindings/js/JSSVGPathSegCustom.cpp \ - bindings/js/JSSVGPathSegListCustom.cpp \ - bindings/js/JSSVGPointListCustom.cpp \ - ksvg2/css/SVGCSSParser.cpp \ - ksvg2/css/SVGCSSStyleSelector.cpp \ - ksvg2/css/SVGRenderStyle.cpp \ - ksvg2/css/SVGRenderStyleDefs.cpp \ - ksvg2/events/JSSVGLazyEventListener.cpp \ - ksvg2/events/SVGZoomEvent.cpp \ - ksvg2/misc/KCanvasRenderingStyle.cpp \ - ksvg2/misc/PointerEventsHitRules.cpp \ - ksvg2/misc/SVGDocumentExtensions.cpp \ - ksvg2/misc/SVGImageLoader.cpp \ - ksvg2/misc/SVGTimer.cpp \ - ksvg2/misc/TimeScheduler.cpp \ - ksvg2/svg/ColorDistance.cpp \ - ksvg2/svg/SVGAElement.cpp \ - ksvg2/svg/SVGAngle.cpp \ - ksvg2/svg/SVGAnimateColorElement.cpp \ - ksvg2/svg/SVGAnimatedPathData.cpp \ - ksvg2/svg/SVGAnimatedPoints.cpp \ - ksvg2/svg/SVGAnimateElement.cpp \ - ksvg2/svg/SVGAnimateMotionElement.cpp \ - ksvg2/svg/SVGAnimateTransformElement.cpp \ - ksvg2/svg/SVGAnimationElement.cpp \ - ksvg2/svg/SVGCircleElement.cpp \ - ksvg2/svg/SVGClipPathElement.cpp \ - ksvg2/svg/SVGColor.cpp \ - ksvg2/svg/SVGComponentTransferFunctionElement.cpp \ - ksvg2/svg/SVGCursorElement.cpp \ - ksvg2/svg/SVGDefsElement.cpp \ - ksvg2/svg/SVGDescElement.cpp \ - ksvg2/svg/SVGDocument.cpp \ - ksvg2/svg/SVGElement.cpp \ - ksvg2/svg/SVGElementInstance.cpp \ - ksvg2/svg/SVGElementInstanceList.cpp \ - ksvg2/svg/SVGEllipseElement.cpp \ - ksvg2/svg/SVGExternalResourcesRequired.cpp \ - ksvg2/svg/SVGFEBlendElement.cpp \ - ksvg2/svg/SVGFEColorMatrixElement.cpp \ - ksvg2/svg/SVGFEComponentTransferElement.cpp \ - ksvg2/svg/SVGFECompositeElement.cpp \ - ksvg2/svg/SVGFEDiffuseLightingElement.cpp \ - ksvg2/svg/SVGFEDisplacementMapElement.cpp \ - ksvg2/svg/SVGFEDistantLightElement.cpp \ - ksvg2/svg/SVGFEFloodElement.cpp \ - ksvg2/svg/SVGFEFuncAElement.cpp \ - ksvg2/svg/SVGFEFuncBElement.cpp \ - ksvg2/svg/SVGFEFuncGElement.cpp \ - ksvg2/svg/SVGFEFuncRElement.cpp \ - ksvg2/svg/SVGFEGaussianBlurElement.cpp \ - ksvg2/svg/SVGFEImageElement.cpp \ - ksvg2/svg/SVGFELightElement.cpp \ - ksvg2/svg/SVGFEMergeElement.cpp \ - ksvg2/svg/SVGFEMergeNodeElement.cpp \ - ksvg2/svg/SVGFEOffsetElement.cpp \ - ksvg2/svg/SVGFEPointLightElement.cpp \ - ksvg2/svg/SVGFESpecularLightingElement.cpp \ - ksvg2/svg/SVGFESpotLightElement.cpp \ - ksvg2/svg/SVGFETileElement.cpp \ - ksvg2/svg/SVGFETurbulenceElement.cpp \ - ksvg2/svg/SVGFilterElement.cpp \ - ksvg2/svg/SVGFilterPrimitiveStandardAttributes.cpp \ - ksvg2/svg/SVGFitToViewBox.cpp \ - ksvg2/svg/SVGForeignObjectElement.cpp \ - ksvg2/svg/SVGGElement.cpp \ - ksvg2/svg/SVGGradientElement.cpp \ - ksvg2/svg/SVGImageElement.cpp \ - ksvg2/svg/SVGLangSpace.cpp \ - ksvg2/svg/SVGLength.cpp \ - ksvg2/svg/SVGLengthList.cpp \ - ksvg2/svg/SVGLinearGradientElement.cpp \ - ksvg2/svg/SVGLineElement.cpp \ - ksvg2/svg/SVGLocatable.cpp \ - ksvg2/svg/SVGMarkerElement.cpp \ - ksvg2/svg/SVGMaskElement.cpp \ - ksvg2/svg/SVGMetadataElement.cpp \ - ksvg2/svg/SVGMPathElement.cpp \ - ksvg2/svg/SVGNumberList.cpp \ - ksvg2/svg/SVGPaint.cpp \ - ksvg2/svg/SVGParserUtilities.cpp \ - ksvg2/svg/SVGPathElement.cpp \ - ksvg2/svg/SVGPathSegArc.cpp \ - ksvg2/svg/SVGPathSegClosePath.cpp \ - ksvg2/svg/SVGPathSegCurvetoCubic.cpp \ - ksvg2/svg/SVGPathSegCurvetoCubicSmooth.cpp \ - ksvg2/svg/SVGPathSegCurvetoQuadratic.cpp \ - ksvg2/svg/SVGPathSegCurvetoQuadraticSmooth.cpp \ - ksvg2/svg/SVGPathSegLineto.cpp \ - ksvg2/svg/SVGPathSegLinetoHorizontal.cpp \ - ksvg2/svg/SVGPathSegLinetoVertical.cpp \ - ksvg2/svg/SVGPathSegList.cpp \ - ksvg2/svg/SVGPathSegMoveto.cpp \ - ksvg2/svg/SVGPatternElement.cpp \ - ksvg2/svg/SVGPointList.cpp \ - ksvg2/svg/SVGPolyElement.cpp \ - ksvg2/svg/SVGPolygonElement.cpp \ - ksvg2/svg/SVGPolylineElement.cpp \ - ksvg2/svg/SVGPreserveAspectRatio.cpp \ - ksvg2/svg/SVGRadialGradientElement.cpp \ - ksvg2/svg/SVGRectElement.cpp \ - ksvg2/svg/SVGScriptElement.cpp \ - ksvg2/svg/SVGSetElement.cpp \ - ksvg2/svg/SVGStopElement.cpp \ - ksvg2/svg/SVGStringList.cpp \ - ksvg2/svg/SVGStylable.cpp \ - ksvg2/svg/SVGStyledElement.cpp \ - ksvg2/svg/SVGStyledLocatableElement.cpp \ - ksvg2/svg/SVGStyledTransformableElement.cpp \ - ksvg2/svg/SVGStyleElement.cpp \ - ksvg2/svg/SVGSVGElement.cpp \ - ksvg2/svg/SVGSwitchElement.cpp \ - ksvg2/svg/SVGSymbolElement.cpp \ - ksvg2/svg/SVGTests.cpp \ - ksvg2/svg/SVGTextContentElement.cpp \ - ksvg2/svg/SVGTextElement.cpp \ - ksvg2/svg/SVGTextPositioningElement.cpp \ - ksvg2/svg/SVGTitleElement.cpp \ - ksvg2/svg/SVGTransformable.cpp \ - ksvg2/svg/SVGTransform.cpp \ - ksvg2/svg/SVGTransformDistance.cpp \ - ksvg2/svg/SVGTransformList.cpp \ - ksvg2/svg/SVGTRefElement.cpp \ - ksvg2/svg/SVGTSpanElement.cpp \ - ksvg2/svg/SVGURIReference.cpp \ - ksvg2/svg/SVGUseElement.cpp \ - ksvg2/svg/SVGViewElement.cpp \ - ksvg2/svg/SVGZoomAndPan.cpp \ - platform/graphics/svg/filters/SVGFEBlend.cpp \ - platform/graphics/svg/filters/SVGFEColorMatrix.cpp \ - platform/graphics/svg/filters/SVGFEComponentTransfer.cpp \ - platform/graphics/svg/filters/SVGFEComposite.cpp \ - platform/graphics/svg/filters/SVGFEConvolveMatrix.cpp \ - platform/graphics/svg/filters/SVGFEDiffuseLighting.cpp \ - platform/graphics/svg/filters/SVGFEDisplacementMap.cpp \ - platform/graphics/svg/filters/SVGFEFlood.cpp \ - platform/graphics/svg/filters/SVGFEGaussianBlur.cpp \ - platform/graphics/svg/filters/SVGFEImage.cpp \ - platform/graphics/svg/filters/SVGFEMerge.cpp \ - platform/graphics/svg/filters/SVGFEMorphology.cpp \ - platform/graphics/svg/filters/SVGFEOffset.cpp \ - platform/graphics/svg/filters/SVGFESpecularLighting.cpp \ - platform/graphics/svg/filters/SVGFETurbulence.cpp \ - platform/graphics/svg/filters/SVGFilterEffect.cpp \ - platform/graphics/svg/filters/SVGLightSource.cpp \ - platform/graphics/svg/SVGImage.cpp \ - platform/graphics/svg/SVGPaintServer.cpp \ - platform/graphics/svg/SVGPaintServerGradient.cpp \ - platform/graphics/svg/SVGPaintServerLinearGradient.cpp \ - platform/graphics/svg/SVGPaintServerPattern.cpp \ - platform/graphics/svg/SVGPaintServerRadialGradient.cpp \ - platform/graphics/svg/SVGPaintServerSolid.cpp \ - platform/graphics/svg/SVGResourceClipper.cpp \ - platform/graphics/svg/SVGResource.cpp \ - platform/graphics/svg/SVGResourceFilter.cpp \ - platform/graphics/svg/SVGResourceMarker.cpp \ - platform/graphics/svg/SVGResourceMasker.cpp \ - rendering/RenderForeignObject.cpp \ - rendering/RenderPath.cpp \ - rendering/RenderSVGBlock.cpp \ - rendering/RenderSVGContainer.cpp \ - rendering/RenderSVGGradientStop.cpp \ - rendering/RenderSVGHiddenContainer.cpp \ - rendering/RenderSVGImage.cpp \ - rendering/RenderSVGInline.cpp \ - rendering/RenderSVGInlineText.cpp \ - rendering/RenderSVGText.cpp \ - rendering/RenderSVGTSpan.cpp \ - rendering/SVGInlineFlowBox.cpp \ - rendering/SVGInlineTextBox.cpp \ - rendering/SVGRootInlineBox.cpp - -qt-port:SOURCES += \ - platform/graphics/svg/qt/RenderPathQt.cpp \ - platform/graphics/svg/qt/SVGPaintServerGradientQt.cpp \ - platform/graphics/svg/qt/SVGPaintServerLinearGradientQt.cpp \ - platform/graphics/svg/qt/SVGPaintServerPatternQt.cpp \ - platform/graphics/svg/qt/SVGPaintServerQt.cpp \ - platform/graphics/svg/qt/SVGPaintServerRadialGradientQt.cpp \ - platform/graphics/svg/qt/SVGPaintServerSolidQt.cpp \ - platform/graphics/svg/qt/SVGResourceClipperQt.cpp \ - platform/graphics/svg/qt/SVGResourceFilterQt.cpp \ - platform/graphics/svg/qt/SVGResourceMaskerQt.cpp - -gtk-port:SOURCES += \ - platform/graphics/svg/cairo/RenderPathCairo.cpp \ - platform/graphics/svg/cairo/SVGPaintServerCairo.cpp \ - platform/graphics/svg/cairo/SVGPaintServerGradientCairo.cpp \ - platform/graphics/svg/cairo/SVGPaintServerPatternCairo.cpp \ - platform/graphics/svg/cairo/SVGPaintServerSolidCairo.cpp \ - platform/graphics/svg/cairo/SVGResourceClipperCairo.cpp \ - platform/graphics/svg/cairo/SVGResourceMaskerCairo.cpp - - # GENERATOR 5-C: - svgnames_a.output = tmp/SVGNames.cpp - svgnames_a.commands = perl $$PWD/ksvg2/scripts/make_names.pl --tags $$PWD/ksvg2/svg/svgtags.in --attrs $$PWD/ksvg2/svg/svgattrs.in --namespace SVG --cppNamespace WebCore --namespaceURI 'http://www.w3.org/2000/svg' --factory --attrsNullNamespace --preprocessor \"$${QMAKE_MOC} -E\" --output tmp - svgnames_a.input = SVG_NAMES - svgnames_a.dependency_type = TYPE_C - svgnames_a.CONFIG = target_predeps - svgnames_a.variable_out = GENERATED_SOURCES - svgnames_a.clean = ${QMAKE_FILE_OUT} tmp/SVGNames.h - QMAKE_EXTRA_COMPILERS += svgnames_a - svgnames_b.output = tmp/SVGElementFactory.cpp - svgnames_b.commands = @echo -n '' - svgnames_b.input = SVG_NAMES - svgnames_b.depends = tmp/SVGNames.cpp - svgnames_b.CONFIG = target_predeps - svgnames_b.variable_out = GENERATED_SOURCES - svgnames_b.clean += tmp/SVGElementFactory.h ${QMAKE_FILE_OUT} - QMAKE_EXTRA_COMPILERS += svgnames_b - - # GENERATOR 5-D: - xlinknames.output = tmp/XLinkNames.cpp - xlinknames.commands = perl $$PWD/ksvg2/scripts/make_names.pl --attrs $$PWD/ksvg2/misc/xlinkattrs.in --namespace XLink --cppNamespace WebCore --namespaceURI 'http://www.w3.org/1999/xlink' --preprocessor \"$${QMAKE_MOC} -E\" --output tmp - xlinknames.input = XLINK_NAMES - xlinknames.dependency_type = TYPE_C - xlinknames.CONFIG = target_predeps - xlinknames.variable_out = GENERATED_SOURCES - xlinknames.clean = ${QMAKE_FILE_OUT} tmp/XLinkNames.h - QMAKE_EXTRA_COMPILERS += xlinknames -} - - -# GENERATOR 1: IDL compiler -idl.output = tmp/JS${QMAKE_FILE_BASE}.cpp -idl.variable_out = GENERATED_SOURCES -idl.input = IDL_BINDINGS -idl.commands = perl -I$$PWD/bindings/scripts $$PWD/bindings/scripts/generate-bindings.pl --defines \"$${FEATURE_DEFINES_JAVASCRIPT}\" --generator JS --include $$PWD/dom --include $$PWD/html --include $$PWD/xml --include $$PWD/ksvg2/svg --outputdir tmp --preprocessor \"$${QMAKE_MOC} -E\" ${QMAKE_FILE_NAME} -idl.CONFIG += target_predeps -idl.clean = tmp/JS${QMAKE_FILE_BASE}.h ${QMAKE_FILE_OUT} -QMAKE_EXTRA_COMPILERS += idl - -# GENERATOR 2-A: LUT creator -#lut.output = tmp/${QMAKE_FILE_BASE}.lut.h -#lut.commands = perl $$PWD/../JavaScriptCore/kjs/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} -#lut.depend = ${QMAKE_FILE_NAME} -#lut.input = LUT_FILES -#lut.CONFIG += no_link -#QMAKE_EXTRA_COMPILERS += lut - -# GENERATOR 2-B: like JavaScriptCore/LUT Generator, but rename output -luttable.output = tmp/${QMAKE_FILE_BASE}Table.cpp -luttable.commands = perl $$PWD/../JavaScriptCore/kjs/create_hash_table ${QMAKE_FILE_NAME} -i > ${QMAKE_FILE_OUT} -luttable.depend = ${QMAKE_FILE_NAME} -luttable.input = LUT_TABLE_FILES -luttable.CONFIG += no_link -luttable.dependency_type = TYPE_C -QMAKE_EXTRA_COMPILERS += luttable - -# GENERATOR 3: tokenizer (flex) -tokenizer.output = tmp/${QMAKE_FILE_BASE}.cpp -tokenizer.commands = flex -t < ${QMAKE_FILE_NAME} | perl $$PWD/css/maketokenizer > ${QMAKE_FILE_OUT} -tokenizer.dependency_type = TYPE_C -tokenizer.input = TOKENIZER -tokenizer.CONFIG += target_predeps no_link -QMAKE_EXTRA_COMPILERS += tokenizer - -# GENERATOR 4: CSS grammar -cssbison.output = tmp/${QMAKE_FILE_BASE}.cpp -cssbison.commands = perl $$PWD/css/makegrammar.pl ${QMAKE_FILE_NAME} tmp/${QMAKE_FILE_BASE} -cssbison.depend = ${QMAKE_FILE_NAME} -cssbison.input = CSSBISON -cssbison.CONFIG = target_predeps -cssbison.dependency_type = TYPE_C -cssbison.variable_out = GENERATED_SOURCES -cssbison.clean = ${QMAKE_FILE_OUT} tmp/${QMAKE_FILE_BASE}.h -QMAKE_EXTRA_COMPILERS += cssbison -#PRE_TARGETDEPS += tmp/CSSGrammar.cpp -grammar_h_dep.target = tmp/CSSParser.o -grammar_h_dep.depends = tmp/CSSGrammar.cpp tmp/HTMLNames.cpp -QMAKE_EXTRA_TARGETS += grammar_h_dep - -# GENERATOR 5-A: -htmlnames.output = tmp/HTMLNames.cpp -htmlnames.commands = perl $$PWD/ksvg2/scripts/make_names.pl --tags $$PWD/html/HTMLTagNames.in --attrs $$PWD/html/HTMLAttributeNames.in --namespace HTML --namespacePrefix xhtml --cppNamespace WebCore --namespaceURI 'http://www.w3.org/1999/xhtml' --attrsNullNamespace --preprocessor \"$${QMAKE_MOC} -E\" --output tmp -htmlnames.input = HTML_NAMES -htmlnames.dependency_type = TYPE_C -htmlnames.CONFIG = target_predeps -htmlnames.variable_out = GENERATED_SOURCES -htmlnames.clean = ${QMAKE_FILE_OUT} tmp/HTMLNames.h -QMAKE_EXTRA_COMPILERS += htmlnames - -# GENERATOR 5-B: -xmlnames.output = tmp/XMLNames.cpp -xmlnames.commands = perl $$PWD/ksvg2/scripts/make_names.pl --attrs $$PWD/xml/xmlattrs.in --namespace XML --cppNamespace WebCore --namespaceURI 'http://www.w3.org/XML/1998/namespace' --preprocessor \"$${QMAKE_MOC} -E\" --output tmp -xmlnames.input = XML_NAMES -xmlnames.dependency_type = TYPE_C -xmlnames.CONFIG = target_predeps -xmlnames.variable_out = GENERATED_SOURCES -xmlnames.clean = ${QMAKE_FILE_OUT} tmp/XMLNames.h -QMAKE_EXTRA_COMPILERS += xmlnames - -# GENERATOR 6-A: -cssprops.output = tmp/CSSPropertyNames.c -cssprops.input = WALDOCSSPROPS -cssprops.commands = $(COPY_FILE) ${QMAKE_FILE_NAME} tmp && cd tmp && perl $$PWD/css/makeprop.pl && $(DEL_FILE) ${QMAKE_FILE_BASE}.strip ${QMAKE_FILE_BASE}.in ${QMAKE_FILE_BASE}.gperf -cssprops.CONFIG = target_predeps no_link -cssprops.clean = ${QMAKE_FILE_OUT} tmp/CSSPropertyNames.h -QMAKE_EXTRA_COMPILERS += cssprops - -# GENERATOR 6-B: -cssvalues.output = tmp/CSSValueKeywords.c -cssvalues.input = WALDOCSSVALUES -cssvalues.commands = $(COPY_FILE) ${QMAKE_FILE_NAME} tmp && cd tmp && perl $$PWD/css/makevalues.pl && $(DEL_FILE) CSSValueKeywords.in CSSValueKeywords.strip CSSValueKeywords.gperf -cssvalues.CONFIG = target_predeps no_link -cssvalues.clean = ${QMAKE_FILE_OUT} tmp/CSSValueKeywords.h -QMAKE_EXTRA_COMPILERS += cssvalues - -# GENERATOR 7-A: -svgcssproperties.output = tmp/ksvgcssproperties.h -svgcssproperties.input = SVGCSSPROPERTIES -svgcssproperties.commands = $(COPY_FILE) ${QMAKE_FILE_IN} ${QMAKE_VAR_OBJECTS_DIR_WTR}ksvgcssproperties.in && cd tmp && perl $$PWD/ksvg2/scripts/cssmakeprops -n SVG -f ksvgcssproperties.in && $(DEL_FILE) ksvgcssproperties.in ksvgcssproperties.gperf -svgcssproperties.CONFIG = target_predeps no_link -svgcssproperties.clean = ${QMAKE_FILE_OUT} tmp/ksvgcssproperties.c -QMAKE_EXTRA_COMPILERS += svgcssproperties - -# GENERATOR 7-B: -svgcssvalues.output = tmp/ksvgcssvalues.h -svgcssvalues.input = SVGCSSVALUES -svgcssvalues.commands = perl -ne \"print lc\" $$PWD/ksvg2/css/CSSValueKeywords.in > tmp/ksvgcssvalues.in && cd tmp && perl $$PWD/ksvg2/scripts/cssmakevalues -n SVG -f ksvgcssvalues.in && $(DEL_FILE) ksvgcssvalues.in ksvgcssvalues.gperf -svgcssvalues.CONFIG = target_predeps no_link -svgcssvalues.clean = ${QMAKE_FILE_OUT} tmp/ksvgcssvalues.c tmp/CSSValueKeywords.h -QMAKE_EXTRA_COMPILERS += svgcssvalues - -# GENERATOR 8-A: -entities.output = tmp/HTMLEntityNames.c -entities.commands = gperf -a -L ANSI-C -C -G -c -o -t --key-positions="*" -N findEntity -D -s 2 < $$PWD/html/HTMLEntityNames.gperf > tmp/HTMLEntityNames.c -entities.input = ENTITIES_GPERF -entities.dependency_type = TYPE_C -entities.CONFIG = target_predeps no_link -entities.clean = ${QMAKE_FILE_OUT} -QMAKE_EXTRA_COMPILERS += entities - -# GENERATOR 8-B: -doctypestrings.output = tmp/${QMAKE_FILE_BASE}.cpp -doctypestrings.input = DOCTYPESTRINGS -doctypestrings.commands = perl -e \"print \'$${LITERAL_HASH}include \';\" > ${QMAKE_FILE_OUT} && echo // bogus >> ${QMAKE_FILE_OUT} && gperf -CEot -L ANSI-C --key-positions="*" -N findDoctypeEntry -F ,PubIDInfo::eAlmostStandards,PubIDInfo::eAlmostStandards < ${QMAKE_FILE_NAME} >> ${QMAKE_FILE_OUT} -doctypestrings.dependency_type = TYPE_C -doctypestrings.CONFIG += target_predeps no_link -doctypestrings.clean = ${QMAKE_FILE_OUT} -QMAKE_EXTRA_COMPILERS += doctypestrings - -# GENERATOR 8-C: -colordata.output = tmp/ColorData.c -colordata.commands = perl -e \"print \'$${LITERAL_HASH}include \';\" > ${QMAKE_FILE_OUT} && echo // bogus >> ${QMAKE_FILE_OUT} && gperf -CDEot -L ANSI-C --key-positions="*" -N findColor -D -s 2 < ${QMAKE_FILE_NAME} >> ${QMAKE_FILE_OUT} -colordata.input = COLORDAT_GPERF -colordata.CONFIG = target_predeps no_link -QMAKE_EXTRA_COMPILERS += colordata - -# GENERATOR 9: -stylesheets.output = tmp/UserAgentStyleSheetsData.cpp -stylesheets.commands = perl $$PWD/css/make-css-file-arrays.pl --preprocessor \"$${QMAKE_MOC} -E\" tmp/UserAgentStyleSheets.h tmp/UserAgentStyleSheetsData.cpp $$PWD/css/html4.css $$PWD/css/quirks.css $$PWD/css/svg.css $$PWD/css/view-source.css -stylesheets.input = STYLESHEETS_EMBED -stylesheets.CONFIG = target_predeps -stylesheets.variable_out = GENERATED_SOURCES -stylesheets.clean = ${QMAKE_FILE_OUT} tmp/UserAgentStyleSheets.h -QMAKE_EXTRA_COMPILERS += stylesheets - -# GENERATOR 10: XPATH grammar -xpathbison.output = tmp/${QMAKE_FILE_BASE}.cpp -xpathbison.commands = bison -d -p xpathyy ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_BASE}.tab.c && $(MOVE) ${QMAKE_FILE_BASE}.tab.c tmp/${QMAKE_FILE_BASE}.cpp && $(MOVE) ${QMAKE_FILE_BASE}.tab.h tmp/${QMAKE_FILE_BASE}.h -xpathbison.depend = ${QMAKE_FILE_NAME} -xpathbison.input = XPATHBISON -xpathbison.CONFIG = target_predeps -xpathbison.dependency_type = TYPE_C -xpathbison.variable_out = GENERATED_SOURCES -xpathbison.clean = ${QMAKE_FILE_OUT} tmp/${QMAKE_FILE_BASE}.h -QMAKE_EXTRA_COMPILERS += xpathbison - -qt-port { - target.path = $$[QT_INSTALL_LIBS] - include($$PWD/../WebKit/qt/Api/headers.pri) - headers.files = $$WEBKIT_API_HEADERS - headers.path = $$[QT_INSTALL_HEADERS]/QtWebKit - prf.files = $$PWD/../WebKit/qt/Api/qtwebkit.prf - prf.path = $$[QT_INSTALL_PREFIX]/mkspecs/features - - - win32-* { - DLLDESTDIR = $$OUTPUT_DIR/bin - - dlltarget.commands = $(COPY_FILE) $(DESTDIR)$(TARGET) $$[QT_INSTALL_BINS] - dlltarget.CONFIG = no_path - INSTALLS += dlltarget - } - - - INSTALLS += target headers prf - - unix { - CONFIG += create_pc create_prl - QMAKE_PKGCONFIG_LIBDIR = $$target.path - QMAKE_PKGCONFIG_INCDIR = $$headers.path - QMAKE_PKGCONFIG_DESTDIR = pkgconfig - lib_replace.match = $$DESTDIR - lib_replace.replace = $$[QT_INSTALL_LIBS] - QMAKE_PKGCONFIG_INSTALL_REPLACE += lib_replace - } -} - -gtk-port { - isEmpty(WEBKIT_LIB_DIR):WEBKIT_LIB_DIR=$$[QT_INSTALL_LIBS] - isEmpty(WEBKIT_INC_DIR):WEBKIT_INC_DIR=$$[QT_INSTALL_HEADERS]/WebKitGtk - - target.path = $$WEBKIT_LIB_DIR - include($$PWD/../WebKit/gtk/Api/headers.pri) - headers.files = $$WEBKIT_API_HEADERS - headers.path = $$WEBKIT_INC_DIR - INSTALLS += target headers - - unix { - CONFIG += create_pc create_prl - QMAKE_PKGCONFIG_LIBDIR = $$target.path - QMAKE_PKGCONFIG_INCDIR = $$headers.path - QMAKE_PKGCONFIG_DESTDIR = pkgconfig - lib_replace.match = $$DESTDIR - lib_replace.replace = $$[QT_INSTALL_LIBS] - QMAKE_PKGCONFIG_INSTALL_REPLACE += lib_replace - } - - GENMARSHALS = ../WebKit/gtk/Api/webkitgtk-marshal.list - GENMARSHALS_PREFIX = webkit_marshal - - # - # integrate glib-genmarshal as additional compiler - # - QMAKE_GENMARSHAL_CC = glib-genmarshal - glib-genmarshal.commands = $${QMAKE_GENMARSHAL_CC} --prefix=$${GENMARSHALS_PREFIX} ${QMAKE_FILE_IN} --header --body >${QMAKE_FILE_OUT} - glib-genmarshal.output = $$OUT_PWD/${QMAKE_FILE_BASE}.h - glib-genmarshal.input = GENMARSHALS - glib-genmarshal.CONFIG = no_link - glib-genmarshal.variable_out = PRE_TARGETDEPS - glib-genmarshal.name = GENMARSHALS - QMAKE_EXTRA_UNIX_COMPILERS += glib-genmarshal -} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/bindings/js/kjs_proxy.cpp --- a/webengine/osswebengine/WebCore/bindings/js/kjs_proxy.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/bindings/js/kjs_proxy.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -54,6 +54,7 @@ ASSERT(!m_script || !m_script->context()); if (m_script) { + ((JSDOMWindow*)m_globalObject)->clear(); m_script = 0; // It's likely that destroying the interpreter has created a lot of garbage. @@ -151,10 +152,10 @@ // Build the global object - which is a Window instance JSLock lock; - JSObject* globalObject = new JSDOMWindow(m_frame->domWindow()); - + m_globalObject = new JSDOMWindow(m_frame->domWindow()); + // Create a KJS interpreter for this frame - m_script = new ScriptInterpreter(globalObject, m_frame); + m_script = new ScriptInterpreter(m_globalObject, m_frame); String userAgent = m_frame->loader()->userAgent(m_frame->document() ? m_frame->document()->URL() : KURL()); if (userAgent.find("Microsoft") >= 0 || userAgent.find("MSIE") >= 0) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/bindings/js/kjs_proxy.h --- a/webengine/osswebengine/WebCore/bindings/js/kjs_proxy.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/bindings/js/kjs_proxy.h Fri Jul 03 15:54:40 2009 +0100 @@ -26,6 +26,8 @@ namespace KJS { class JSValue; class ScriptInterpreter; + class JSObject; + } namespace WebCore { @@ -61,6 +63,7 @@ RefPtr m_script; Frame* m_frame; int m_handlerLineno; + KJS::JSObject* m_globalObject; }; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/bindings/js/symbian/kjs_console.h --- a/webengine/osswebengine/WebCore/bindings/js/symbian/kjs_console.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/bindings/js/symbian/kjs_console.h Fri Jul 03 15:54:40 2009 +0100 @@ -91,7 +91,7 @@ { public: ConsoleFunc(ExecState *exec, int aFuncType); - virtual ~ConsoleFunc() {} + virtual ~ConsoleFunc() {delete d;} //From JSObject public: diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/css/CSSImageValue.cpp --- a/webengine/osswebengine/WebCore/css/CSSImageValue.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/css/CSSImageValue.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -59,7 +59,7 @@ m_image = loader->requestImage(getStringValue()); else // FIXME: Should find a way to make these images sit in their own memory partition, since they are user agent images. - m_image = static_cast(cache()->requestResource(0, CachedResource::ImageResource, KURL(getStringValue().deprecatedString()), 0, 0)); + m_image = static_cast(cache()->requestResource(0, CachedResource::ImageResource, KURL(getStringValue().deprecatedString()), String())); if (m_image) m_image->ref(this); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/css/cssstyleselector.cpp --- a/webengine/osswebengine/WebCore/css/cssstyleselector.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/css/cssstyleselector.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -22,7 +22,6 @@ * Boston, MA 02110-1301, USA. */ -#include "config.h" #include "CSSStyleSelector.h" #include "CSSBorderImageValue.h" @@ -225,6 +224,14 @@ static CSSStyleSelector::Encodedurl *currentEncodedURL = 0; static PseudoState pseudoState; +struct defaultStyleNACleaner { + ~defaultStyleNACleaner() { + delete CSSStyleSelector::styleNotYetAvailable; + CSSStyleSelector::styleNotYetAvailable = 0; + } +}; +struct defaultStyleNACleaner styleNACleaner; + CSSStyleSelector::CSSStyleSelector(Document* doc, const String& userStyleSheet, StyleSheetList *styleSheets, bool _strictParsing) { init(); @@ -3626,7 +3633,15 @@ if (id == CSS_VAL_NONE) appearance = NoAppearance; else +#if PLATFORM ( SYMBIAN ) + { + if (id == CSS_VAL_SEARCHFIELD) + id = CSS_VAL_TEXTFIELD; +#endif appearance = EAppearance(id - CSS_VAL_CHECKBOX + 1); +#if PLATFORM ( SYMBIAN ) + } +#endif style->setAppearance(appearance); return; } @@ -4990,4 +5005,46 @@ return m_selectorAttrs.contains(attrname.impl()); } +#if PLATFORM(SYMBIAN) +void CSSStyleSelector::deleteDefaultStyle() +{ + delete defaultStyle; + defaultStyle = 0; + delete defaultQuirksStyle; + defaultQuirksStyle = 0; + delete defaultPrintStyle; + defaultPrintStyle = 0; + delete defaultViewSourceStyle; + defaultViewSourceStyle = 0; + + defaultSheet->deref(); +// delete defaultSheet; +// defaultSheet = 0; + + // styleNotYetAvailable->deref(); + //goes to overridden delete operator but calls destructor + delete styleNotYetAvailable; + //release cell allocated because overridder delete does not do that. + free(styleNotYetAvailable); + styleNotYetAvailable = 0; + + quirksSheet->deref(); + // delete quirksSheet; + // quirksSheet = 0; + + viewSourceSheet->deref(); + // delete viewSourceSheet; + // viewSourceSheet = 0; + +#if ENABLE(SVG) + svgSheet->deref(); + // delete svgSheet; + // svgSheet = 0; +#endif + + //*currentEncodedURL->deref(); //static CSSStyleSelector::Encodedurl *currentEncodedURL = 0; + pseudoState = PseudoUnknown; +} +#endif + } // namespace WebCore diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/css/cssstyleselector.h --- a/webengine/osswebengine/WebCore/css/cssstyleselector.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/css/cssstyleselector.h Fri Jul 03 15:54:40 2009 +0100 @@ -24,6 +24,7 @@ #ifndef CSSStyleSelector_h #define CSSStyleSelector_h +#include "config.h" #include "DeprecatedString.h" #include "RenderStyle.h" #include @@ -92,6 +93,11 @@ static void loadDefaultStyle(); +#if PLATFORM(SYMBIAN) + static void deleteDefaultStyle(); +#endif + + void initElementAndPseudoState(Element* e); void initForStyleResolve(Element* e, RenderStyle* parentStyle); RenderStyle *styleForElement(Element*, RenderStyle* parentStyle=0, bool allowSharing=true, bool resolveForRootDefault=false); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/dom/Document.cpp --- a/webengine/osswebengine/WebCore/dom/Document.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/dom/Document.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -253,6 +253,17 @@ DeprecatedPtrList* Document::changedDocuments = 0; +struct cleanupChangedDocuments { + ~cleanupChangedDocuments() { + if(Document::changedDocuments) + { + delete Document::changedDocuments; + Document::changedDocuments = NULL; + } + } +}; +static cleanupChangedDocuments deleteChangedDocuments; + // FrameView might be 0 Document::Document(DOMImplementation* impl, Frame* frame, bool isXHTML) : ContainerNode(0) @@ -821,10 +832,28 @@ void Document::addElementById(const AtomicString& elementId, Element* element) { - if (!m_elementsById.contains(elementId.impl())) - m_elementsById.set(elementId.impl(), element); - else - m_duplicateIds.add(elementId.impl()); +typedef HashMap::iterator iterator; + if (!m_duplicateIds.contains(elementId.impl())) { + // Fast path. The ID is not already in m_duplicateIds, so we assume that it's + // also not already in m_elementsById and do an add. If that add succeeds, we're done. + pair addResult = m_elementsById.add(elementId.impl(), element); + if (addResult.second) + return; + // The add failed, so this ID was already cached in m_elementsById. + // There are multiple elements with this ID. Remove the m_elementsById + // cache for this ID so getElementById searches for it next time it is called. + m_elementsById.remove(addResult.first); + m_duplicateIds.add(elementId.impl()); + } else { + // There are multiple elements with this ID. If it exists, remove the m_elementsById + // cache for this ID so getElementById searches for it next time it is called. + iterator cachedItem = m_elementsById.find(elementId.impl()); + if (cachedItem != m_elementsById.end()) { + m_elementsById.remove(cachedItem); + m_duplicateIds.add(elementId.impl()); + } + } + m_duplicateIds.add(elementId.impl()); } void Document::removeElementById(const AtomicString& elementId, Element* element) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/dom/Element.cpp --- a/webengine/osswebengine/WebCore/dom/Element.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/dom/Element.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -24,6 +24,8 @@ #include "config.h" #include "Element.h" +#include "Chrome.h" +#include "ChromeClient.h" #include "CSSStyleSelector.h" #include "Document.h" #include "Editor.h" @@ -994,8 +996,9 @@ if (!supportsFocus()) return; - if (Page* page = doc->page()) + if (Page* page = doc->page()) { page->focusController()->setFocusedNode(this, doc->frame()); + } if (!isFocusable()) { createRareData()->m_needsFocusAppearanceUpdateSoonAfterAttach = true; @@ -1004,6 +1007,11 @@ cancelFocusAppearanceUpdate(); updateFocusAppearance(restorePreviousSelection); + + if (Page* page = doc->page()) { + // must be last thing we do here + page->chrome()->client()->focusedElementChanged(this); + } } void Element::updateFocusAppearance(bool restorePreviousSelection) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/dom/QualifiedName.cpp --- a/webengine/osswebengine/WebCore/dom/QualifiedName.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/dom/QualifiedName.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -139,7 +139,7 @@ return; #endif - if (m_impl->hasOneRef()) + if (m_impl->hasOneRef() && gNameCache ) gNameCache->remove(m_impl); m_impl->deref(); } @@ -173,4 +173,13 @@ } } +void QualifiedName::cleanup() +{ + if( gNameCache ) { + gNameCache->clear(); + delete gNameCache; + gNameCache=NULL; + } } + +} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/dom/QualifiedName.h --- a/webengine/osswebengine/WebCore/dom/QualifiedName.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/dom/QualifiedName.h Fri Jul 03 15:54:40 2009 +0100 @@ -64,7 +64,7 @@ // Init routine for globals static void init(); - + static void cleanup(); private: void ref() { m_impl->ref(); } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/dom/StyledElement.cpp --- a/webengine/osswebengine/WebCore/dom/StyledElement.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/dom/StyledElement.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -67,9 +67,27 @@ //typedef HashMap MappedAttributeDecls; typedef MappedAttributeKey* MappedAttributeKeyPtr; typedef HashMap MappedAttributeDecls; +typedef HashMap::iterator MappedAttributeDeclsIterator; static MappedAttributeDecls* mappedAttributeDecls = 0; +struct mappedAttributeCleaner { + ~mappedAttributeCleaner() { + if( mappedAttributeDecls ) { + MappedAttributeDeclsIterator end = mappedAttributeDecls->end(); + for (MappedAttributeDeclsIterator it = mappedAttributeDecls->begin(); it != end; ++it) + { + MappedAttributeKey* obj = (*it).first; + delete obj; + } + mappedAttributeDecls->clear(); + delete mappedAttributeDecls; + mappedAttributeDecls = 0; + } + } +}; +struct mappedAttributeCleaner mappedAttribute; + CSSMappedAttributeDeclaration* StyledElement::getMappedAttributeDecl(MappedAttributeEntry entryType, Attribute* attr) { if (!mappedAttributeDecls) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/dom/XMLTokenizer.cpp --- a/webengine/osswebengine/WebCore/dom/XMLTokenizer.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/dom/XMLTokenizer.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -427,9 +427,9 @@ globalDocLoader = docLoader; } +static bool didInit = false; static xmlParserCtxtPtr createStringParser(xmlSAXHandlerPtr handlers, void* userData) { - static bool didInit = false; if (!didInit) { xmlInitParser(); xmlRegisterInputCallbacks(matchFunc, openFunc, readFunc, closeFunc); @@ -445,8 +445,18 @@ xmlSwitchEncoding(parser, BOMHighByte == 0xFF ? XML_CHAR_ENCODING_UTF16LE : XML_CHAR_ENCODING_UTF16BE); return parser; } + #endif +void XMLTokenizer::cleanupXMLStringParser() +{ +#ifndef USE_QXMLSTREAM + if( didInit ) { + xmlCleanupParser(); + } +#endif +} + // -------------------------------- XMLTokenizer::XMLTokenizer(Document* _doc, FrameView* _view) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/dom/XMLTokenizer.h --- a/webengine/osswebengine/WebCore/dom/XMLTokenizer.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/dom/XMLTokenizer.h Fri Jul 03 15:54:40 2009 +0100 @@ -116,7 +116,8 @@ int lineNumber() const; int columnNumber() const; - + + static void cleanupXMLStringParser(); private: void initializeParserContext(); void setCurrentNode(Node*); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/html/HTMLElementFactory.cpp --- a/webengine/osswebengine/WebCore/html/HTMLElementFactory.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/html/HTMLElementFactory.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -396,6 +396,16 @@ gFunctionMap->set(tag.localName().impl(), func); } +struct cleanupFuncMap { + ~cleanupFuncMap() { + if( gFunctionMap ) { + gFunctionMap->clear(); + delete gFunctionMap; + gFunctionMap=0; + } + } +}; +static cleanupFuncMap cleanup; static void createFunctionMap() { // Create the table. diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/html/HTMLImageLoader.cpp --- a/webengine/osswebengine/WebCore/html/HTMLImageLoader.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/html/HTMLImageLoader.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -104,7 +104,7 @@ if (!attr.isEmpty()) { if (m_loadManually) { doc->docLoader()->setAutoLoadImages(false); - newImage = new CachedImage(doc->docLoader(), parseURL(attr), false /* not for cache */); + newImage = new CachedImage(parseURL(attr)); newImage->setLoading(true); newImage->setDocLoader(doc->docLoader()); doc->docLoader()->m_docResources.set(newImage->url(), newImage); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/html/HTMLInputElement.cpp --- a/webengine/osswebengine/WebCore/html/HTMLInputElement.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/html/HTMLInputElement.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -1175,7 +1175,7 @@ String key = static_cast(evt)->keyIdentifier(); - if (key == "U+0020") { + if (key == "U+0020" || key == "U+000020") { switch (inputType()) { case BUTTON: case CHECKBOX: @@ -1206,7 +1206,6 @@ if (key == "Enter") { switch (inputType()) { case BUTTON: - case CHECKBOX: case HIDDEN: case ISINDEX: case PASSWORD: @@ -1223,7 +1222,9 @@ // Simulate mouse click for enter for these types of elements. clickElement = true; break; + case CHECKBOX: case RADIO: + clickElement = true; break; // Don't do anything for enter on a radio button. } } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/Cache.cpp --- a/webengine/osswebengine/WebCore/loader/Cache.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/Cache.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -20,7 +20,6 @@ Boston, MA 02110-1301, USA. */ -#include "config.h" #include "Cache.h" #include "CachedCSSStyleSheet.h" @@ -44,9 +43,22 @@ static const double cMinDelayBeforeLiveDecodedPrune = 1; // Seconds. static const float cTargetPrunePercentage = .95f; // Percentage of capacity toward which we prune, to avoid immediately pruning again. +#if PLATFORM(SYMBIAN) +static Cache* staticCache; +static bool staticCacheInit = false; +#endif + Cache* cache() { +#if PLATFORM(SYMBIAN) + if (!staticCacheInit) + { + staticCache = new Cache; + staticCacheInit = true; + } +#else static Cache* staticCache = new Cache; +#endif return staticCache; } @@ -61,23 +73,23 @@ { } -static CachedResource* createResource(CachedResource::Type type, DocLoader* docLoader, const KURL& url, const String* charset, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true) +static CachedResource* createResource(CachedResource::Type type, const KURL& url, const String& charset) { switch (type) { case CachedResource::ImageResource: // User agent images need to null check the docloader. No other resources need to. - return new CachedImage(docLoader, url.url(), true /* for cache */); + return new CachedImage(url.url()); case CachedResource::CSSStyleSheet: - return new CachedCSSStyleSheet(docLoader, url.url(), *charset, skipCanLoadCheck, sendResourceLoadCallbacks); + return new CachedCSSStyleSheet(url.url(), charset); case CachedResource::Script: - return new CachedScript(docLoader, url.url(), *charset); + return new CachedScript(url.url(), charset); #if ENABLE(XSLT) case CachedResource::XSLStyleSheet: - return new CachedXSLStyleSheet(docLoader, url.url()); + return new CachedXSLStyleSheet(url.url()); #endif #if ENABLE(XBL) case CachedResource::XBLStyleSheet: - return new CachedXBLDocument(docLoader, url.url()); + return new CachedXBLDocument(url.url()); #endif default: break; @@ -87,9 +99,9 @@ } #if PRELOAD_SCANNER_ENABLED -CachedResource* Cache::requestResource(DocLoader* docLoader, CachedResource::Type type, const KURL& url, const String* charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks, bool isPreload) +CachedResource* Cache::requestResource(DocLoader* docLoader, CachedResource::Type type, const KURL& url, const String& charset, bool isPreload) #else -CachedResource* Cache::requestResource(DocLoader* docLoader, CachedResource::Type type, const KURL& url, const String* charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks) +CachedResource* Cache::requestResource(DocLoader* docLoader, CachedResource::Type type, const KURL& url, const String& charset) #endif { // FIXME: Do we really need to special-case an empty URL? @@ -105,7 +117,7 @@ if (isPreload && !resource->isPreloaded()) return 0; #endif - if (!skipCanLoadCheck && FrameLoader::restrictAccessToLocal() && !FrameLoader::canLoad(*resource, docLoader->doc())) { + if (FrameLoader::restrictAccessToLocal() && !FrameLoader::canLoad(*resource, docLoader->doc())) { Document* doc = docLoader->doc(); if(doc) FrameLoader::reportLocalLoadFailed(doc->page(), resource->url()); @@ -113,7 +125,7 @@ return 0; } } else { - if (!skipCanLoadCheck && FrameLoader::restrictAccessToLocal() && !FrameLoader::canLoad(url, docLoader->doc())) { + if (FrameLoader::restrictAccessToLocal() && !FrameLoader::canLoad(url, docLoader->doc())) { Document* doc = docLoader->doc(); #if PRELOAD_SCANNER_ENABLED if(doc && !isPreload) @@ -126,9 +138,14 @@ } // The resource does not exist. Create it. - resource = createResource(type, docLoader, url, charset, skipCanLoadCheck, sendResourceLoadCallbacks); + resource = createResource(type, url, charset); ASSERT(resource); - ASSERT(resource->inCache()); + + // Pretend the resource is in the cache, to prevent it from being deleted during the load() call. + // FIXME: CachedResource should just use normal refcounting instead. + resource->setInCache(true); + resource->load(docLoader); + if (!disabled()) { m_resources.set(url.url(), resource); // The size will be added in later once the resource is loaded and calls back to us with the new size. @@ -161,6 +178,26 @@ return resource; } +CachedCSSStyleSheet* Cache::requestUserCSSStyleSheet(DocLoader* docLoader, const String& url, const String& charset) +{ + if (CachedResource* existing = m_resources.get(url)) + return existing->type() == CachedResource::CSSStyleSheet ? static_cast(existing) : 0; + + CachedCSSStyleSheet* userSheet = new CachedCSSStyleSheet(url, charset); + + // Pretend the resource is in the cache, to prevent it from being deleted during the load() call. + // FIXME: CachedResource should just use normal refcounting instead. + userSheet->setInCache(true); + // Don't load incrementally, skip load checks, don't send resource load callbacks. + userSheet->load(docLoader, false, true, false); + if (!disabled()) + m_resources.set(url, userSheet); + else + userSheet->setInCache(false); + + return userSheet; +} + CachedResource* Cache::resourceForURL(const String& url) { return m_resources.get(url); @@ -302,6 +339,7 @@ // Remove from the appropriate LRU list. removeFromLRUList(resource); removeFromLiveDecodedResourcesList(resource); + removeFromLiveResourcesSize(resource); // Notify all doc loaders that might be observing this object still that it has been // extracted from the set of resources. @@ -313,7 +351,8 @@ int delta = -static_cast(resource->size()); if (delta) adjustSize(resource->referenced(), delta); - } + } else + ASSERT(m_resources.get(resource->url()) != resource); if (resource->canDelete()) delete resource; @@ -652,6 +691,13 @@ } } } + +void Cache::deleteStaticCache() +{ + delete staticCache; + staticCacheInit = false; +} + #endif } // namespace WebCore diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/Cache.h --- a/webengine/osswebengine/WebCore/loader/Cache.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/Cache.h Fri Jul 03 15:54:40 2009 +0100 @@ -27,6 +27,7 @@ #ifndef Cache_h #define Cache_h +#include "config.h" #include "CachePolicy.h" #include "CachedResource.h" #include "PlatformString.h" @@ -39,6 +40,7 @@ namespace WebCore { +class CachedCSSStyleSheet; class CachedResource; class DocLoader; class KURL; @@ -94,11 +96,12 @@ // Request resources from the cache. A load will be initiated and a cache object created if the object is not // found in the cache. #if PRELOAD_SCANNER_ENABLED - CachedResource* requestResource(DocLoader*, CachedResource::Type, const KURL& url, const String* charset = 0, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true, bool isPreload = false); + CachedResource* requestResource(DocLoader*, CachedResource::Type, const KURL& url, const String& charset, bool isPreload = false); #else - CachedResource* requestResource(DocLoader*, CachedResource::Type, const KURL& url, const String* charset = 0, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true); + CachedResource* requestResource(DocLoader*, CachedResource::Type, const KURL& url, const String& charset); #endif + CachedCSSStyleSheet* requestUserCSSStyleSheet(DocLoader*, const String& url, const String& charset); // Sets the cache's memory capacities, in bytes. These will hold only approximately, // since the decoded cost of resources like scripts and stylesheets is not known. // - minDeadBytes: The maximum number of bytes that dead resources should consume when the cache is under pressure. @@ -148,11 +151,24 @@ #if PLATFORM(SYMBIAN) void clearImages(); + static void deleteStaticCache(); #endif private: Cache(); + +#if PLATFORM(SYMBIAN) + ~Cache() { + typedef HashMap::iterator ResourceIt; + ResourceIt endIt = m_resources.end(); + for(ResourceIt it=m_resources.begin();it != endIt; ++it) { + CachedResource* res = (*it).second;; + delete res; + } + } +#else ~Cache(); // Not implemented to make sure nobody accidentally calls delete -- WebCore does not delete singletons. +#endif LRUList* lruListFor(CachedResource*); void resourceAccessed(CachedResource*); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.cpp --- a/webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -37,15 +37,13 @@ namespace WebCore { -CachedCSSStyleSheet::CachedCSSStyleSheet(DocLoader* dl, const String& url, const String& charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks) - : CachedResource(url, CSSStyleSheet, true, sendResourceLoadCallbacks) +CachedCSSStyleSheet::CachedCSSStyleSheet(const String& url, const String& charset) + : CachedResource(url, CSSStyleSheet) , m_decoder(new TextResourceDecoder("text/css", charset)) { // Prefer text/css but accept any type (dell.com serves a stylesheet // as text/html; see ). setAccept("text/css,*/*;q=0.1"); - cache()->loader()->load(dl, this, false, skipCanLoadCheck, sendResourceLoadCallbacks); - m_loading = true; } CachedCSSStyleSheet::~CachedCSSStyleSheet() diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.h --- a/webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedCSSStyleSheet.h Fri Jul 03 15:54:40 2009 +0100 @@ -39,7 +39,7 @@ class CachedCSSStyleSheet : public CachedResource { public: - CachedCSSStyleSheet(DocLoader*, const String& URL, const String& charset, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true); + CachedCSSStyleSheet(const String& URL, const String& charset); virtual ~CachedCSSStyleSheet(); const String& sheet() const { return m_sheet; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedImage.cpp --- a/webengine/osswebengine/WebCore/loader/CachedImage.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedImage.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -48,20 +48,15 @@ namespace WebCore { -CachedImage::CachedImage(DocLoader* docLoader, const String& url, bool forCache) - : CachedResource(url, ImageResource, forCache) +CachedImage::CachedImage(const String& url) + : CachedResource(url, ImageResource) { m_image = 0; m_status = Unknown; - if (!docLoader || docLoader->autoLoadImages()) { - m_loading = true; - cache()->loader()->load(docLoader, this, true); - } else - m_loading = false; } CachedImage::CachedImage(Image* image) - : CachedResource(String(), ImageResource, false /* not for cache */) + : CachedResource(String(), ImageResource) { m_image = image; m_status = Cached; @@ -73,6 +68,14 @@ delete m_image; } +void CachedImage::load(DocLoader* docLoader) +{ + if (!docLoader || docLoader->autoLoadImages()) + CachedResource::load(docLoader, true, false, true); + else + m_loading = false; +} + void CachedImage::ref(CachedResourceClient* c) { CachedResource::ref(c); @@ -92,10 +95,12 @@ static Image* brokenImage() { - static Image* brokenImage; - if (!brokenImage) - brokenImage = Image::loadPlatformResource("missingImage"); - return brokenImage; + static OwnPtr brokenImage; + if (!brokenImage) { + brokenImage.set(Image::loadPlatformResource("missingImage")); + } + Image* ret = brokenImage.get(); + return ret; } static Image* nullImage() @@ -297,6 +302,7 @@ { setDecodedSize(size_); notifyObservers(); + checkNotify(); } void CachedImage::setMimeType(const String& mime_) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedImage.h --- a/webengine/osswebengine/WebCore/loader/CachedImage.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedImage.h Fri Jul 03 15:54:40 2009 +0100 @@ -38,10 +38,12 @@ friend class Cache; public: - CachedImage(DocLoader*, const String& url, bool forCache); + CachedImage(const String& url); CachedImage(Image*); virtual ~CachedImage(); + virtual void load(DocLoader* docLoader); + Image* image() const; bool canRender() const { return !errorOccurred() && imageSize().width() > 0 && imageSize().height() > 0; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedResource.cpp --- a/webengine/osswebengine/WebCore/loader/CachedResource.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedResource.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -35,15 +35,16 @@ namespace WebCore { -CachedResource::CachedResource(const String& URL, Type type, bool forCache, bool sendResourceLoadCallbacks) +CachedResource::CachedResource(const String& URL, Type type) : m_lastDecodedAccessTime(0) - , m_sendResourceLoadCallbacks(sendResourceLoadCallbacks) + , m_sendResourceLoadCallbacks(true) #if PRELOAD_SCANNER_ENABLED , m_preloadCount(0) , m_preloadResult(PreloadNotReferenced) , m_requestedFromNetworkingLayer(false) #endif - , m_inCache(forCache) + , m_inCache(false) + , m_loading(false) , m_docLoader(0) { m_url = URL; @@ -74,6 +75,7 @@ { ASSERT(!inCache()); ASSERT(!m_deleted); + ASSERT(cache()->resourceForURL(url()) != this); #ifndef NDEBUG m_deleted = true; #endif @@ -82,6 +84,13 @@ m_docLoader->removeCachedResource(this); } +void CachedResource::load(DocLoader* docLoader, bool incremental, bool skipCanLoadCheck, bool sendResourceLoadCallbacks) +{ + m_sendResourceLoadCallbacks = sendResourceLoadCallbacks; + cache()->loader()->load(docLoader, this, incremental, skipCanLoadCheck, sendResourceLoadCallbacks); + m_loading = true; +} + void CachedResource::finish() { m_status = Cached; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedResource.h --- a/webengine/osswebengine/WebCore/loader/CachedResource.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedResource.h Fri Jul 03 15:54:40 2009 +0100 @@ -34,6 +34,7 @@ class Cache; class CachedResourceClient; +class CacheHandleBase; class DocLoader; class Request; @@ -64,8 +65,10 @@ Cached // regular case }; - CachedResource(const String& URL, Type, bool forCache = true, bool sendResourceLoadCallbacks = false); + CachedResource(const String& URL, Type); virtual ~CachedResource(); + virtual void load(DocLoader* docLoader) { load(docLoader, false, false, true); } + void load(DocLoader*, bool incremental, bool skipCanLoadCheck, bool sendResourceLoadCallbacks); virtual void setEncoding(const String&) { } virtual void data(PassRefPtr data, bool allDataReceived) = 0; @@ -87,7 +90,7 @@ PreloadResult preloadResult() const { return m_preloadResult; } void setRequestedFromNetworkingLayer() { m_requestedFromNetworkingLayer = true; } #endif - virtual void allReferencesRemoved() {}; + virtual void allReferencesRemoved() {} unsigned count() const { return m_clients.size(); } @@ -144,7 +147,7 @@ bool treatAsLocal() const { return m_shouldTreatAsLocal; } bool sendResourceLoadCallbacks() const { return m_sendResourceLoadCallbacks; } - virtual void destroyDecodedData() {}; + virtual void destroyDecodedData() {} void setDocLoader(DocLoader* docLoader) { m_docLoader = docLoader; } #if PRELOAD_SCANNER_ENABLED diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedScript.cpp --- a/webengine/osswebengine/WebCore/loader/CachedScript.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedScript.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -37,23 +37,24 @@ namespace WebCore { -CachedScript::CachedScript(DocLoader* dl, const String& url, const String& charset) +CachedScript::CachedScript(const String& url, const String& charset) : CachedResource(url, Script) , m_encoding(charset) + , m_decodedDataDeletionTimer(this, &CachedScript::decodedDataDeletionTimerFired) { // It's javascript we want. // But some websites think their scripts are // and refuse to serve them if we only accept application/x-javascript. setAccept("*/*"); - // load the file - cache()->loader()->load(dl, this, false); - m_loading = true; + if (!m_encoding.isValid()) m_encoding = Latin1Encoding(); } CachedScript::~CachedScript() { + destroyDecodedData(); + m_decodedDataDeletionTimer.stop(); } void CachedScript::ref(CachedResourceClient* c) @@ -70,15 +71,25 @@ m_encoding = encoding; } +void CachedScript::allReferencesRemoved() +{ + destroyDecodedData(); +} + +const String& CachedScript::script() +{ + if (!m_script && m_data) { + m_script = m_encoding.decode(m_data->data(), encodedSize()); + setDecodedSize(m_script.length() * sizeof(UChar)); + } + m_decodedDataDeletionTimer.startOneShot(0); + return m_script; +} + void CachedScript::data(PassRefPtr data, bool allDataReceived) { - if (!allDataReceived) - return; - m_data = data; setEncodedSize(m_data.get() ? m_data->size() : 0); - if (m_data.get()) - m_script = m_encoding.decode(m_data->data(), encodedSize()); m_loading = false; checkNotify(); } @@ -100,4 +111,15 @@ checkNotify(); } +void CachedScript::destroyDecodedData() +{ + m_script = String(); + setDecodedSize(0); } + +void CachedScript::decodedDataDeletionTimerFired(Timer*) +{ + destroyDecodedData(); +} + +} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedScript.h --- a/webengine/osswebengine/WebCore/loader/CachedScript.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedScript.h Fri Jul 03 15:54:40 2009 +0100 @@ -30,6 +30,7 @@ #include "CachedResource.h" #include "TextEncoding.h" +#include "Timer.h" namespace WebCore { @@ -37,12 +38,13 @@ class CachedScript : public CachedResource { public: - CachedScript(DocLoader*, const String& URL, const String& charset); + CachedScript(const String& url, const String& charset); virtual ~CachedScript(); - const String& script() const { return m_script; } + const String& script(); virtual void ref(CachedResourceClient*); + virtual void allReferencesRemoved(); virtual void setEncoding(const String&); virtual void data(PassRefPtr data, bool allDataReceived); @@ -51,10 +53,13 @@ virtual bool schedule() const { return false; } void checkNotify(); + virtual void destroyDecodedData(); private: + void decodedDataDeletionTimerFired(Timer*); String m_script; TextEncoding m_encoding; + Timer m_decodedDataDeletionTimer; }; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedXBLDocument.cpp --- a/webengine/osswebengine/WebCore/loader/CachedXBLDocument.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedXBLDocument.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -40,15 +40,12 @@ namespace WebCore { -CachedXBLDocument::CachedXBLDocument(DocLoader* dl, const String &url) +CachedXBLDocument::CachedXBLDocument(const String &url) : CachedResource(url, XBL), m_document(0) { // It's XML we want. setAccept("text/xml, application/xml, application/xhtml+xml, text/xsl, application/rss+xml, application/atom+xml"); - // Load the file - Cache::loader()->load(dl, this, false); - m_loading = true; m_decoder = new TextResourceDecoder("application/xml"); } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/CachedXBLDocument.h --- a/webengine/osswebengine/WebCore/loader/CachedXBLDocument.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/CachedXBLDocument.h Fri Jul 03 15:54:40 2009 +0100 @@ -41,7 +41,7 @@ #if ENABLE(XBL) class CachedXBLDocument : public CachedResource { public: - CachedXBLDocument(DocLoader*, const String& url); + CachedXBLDocument(const String& url); virtual ~CachedXBLDocument(); XBL::XBLDocument* document() const { return m_document; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/DocLoader.cpp --- a/webengine/osswebengine/WebCore/loader/DocLoader.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/DocLoader.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -62,6 +62,7 @@ for (HashMap::iterator it = m_docResources.begin(); it != end; ++it) it->second->setDocLoader(0); m_cache->removeDocLoader(this); + m_reloadedURLs.clear(); } void DocLoader::checkForReload(const KURL& fullURL) @@ -99,7 +100,7 @@ CachedImage* DocLoader::requestImage(const String& url) { - CachedImage* resource = static_cast(requestResource(CachedResource::ImageResource, url)); + CachedImage* resource = static_cast(requestResource(CachedResource::ImageResource, url, String())); if (autoLoadImages() && resource && resource->stillNeedsLoad()) { resource->setLoading(true); cache()->loader()->load(this, resource, true); @@ -107,50 +108,39 @@ return resource; } -CachedCSSStyleSheet* DocLoader::requestCSSStyleSheet(const String& url, const String& charset, bool isUserStyleSheet) +CachedCSSStyleSheet* DocLoader::requestCSSStyleSheet(const String& url, const String& charset) { - // FIXME: Passing true for "skipCanLoadCheck" here in the isUserStyleSheet case won't have any effect - // if this resource is already in the cache. It's theoretically possible that what's in the cache already - // is a load that failed because of the canLoad check. Probably not an issue in practice. - CachedCSSStyleSheet *sheet = static_cast(requestResource(CachedResource::CSSStyleSheet, url, &charset, isUserStyleSheet, !isUserStyleSheet)); - - // A user style sheet can outlive its DocLoader so don't store any pointers to it - if (sheet && isUserStyleSheet) { - sheet->setDocLoader(0); - m_docResources.remove(sheet->url()); - } - - return sheet; + return static_cast(requestResource(CachedResource::CSSStyleSheet, url, charset)); } CachedCSSStyleSheet* DocLoader::requestUserCSSStyleSheet(const String& url, const String& charset) { - return requestCSSStyleSheet(url, charset, true); + return cache()->requestUserCSSStyleSheet(this, url, charset); } CachedScript* DocLoader::requestScript(const String& url, const String& charset) { - return static_cast(requestResource(CachedResource::Script, url, &charset)); + return static_cast(requestResource(CachedResource::Script, url, charset)); } #if ENABLE(XSLT) CachedXSLStyleSheet* DocLoader::requestXSLStyleSheet(const String& url) { - return static_cast(requestResource(CachedResource::XSLStyleSheet, url)); + return static_cast(requestResource(CachedResource::XSLStyleSheet, url, String())); } #endif #if ENABLE(XBL) CachedXBLDocument* DocLoader::requestXBLDocument(const String& url) { - return static_cast(requestResource(CachedResource::XBL, url)); + return static_cast(requestResource(CachedResource::XBL, url, String())); } #endif #if PRELOAD_SCANNER_ENABLED -CachedResource* DocLoader::requestResource(CachedResource::Type type, const String& url, const String* charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks, bool isPreload) +CachedResource* DocLoader::requestResource(CachedResource::Type type, const String& url, const String& charset, bool isPreload) #else -CachedResource* DocLoader::requestResource(CachedResource::Type type, const String& url, const String* charset, bool skipCanLoadCheck, bool sendResourceLoadCallbacks) +CachedResource* DocLoader::requestResource(CachedResource::Type type, const String& url, const String& charset) #endif { KURL fullURL = m_doc->completeURL(url.deprecatedString()); @@ -170,9 +160,9 @@ checkForReload(fullURL); #if PRELOAD_SCANNER_ENABLED - CachedResource* resource = cache()->requestResource(this, type, fullURL, charset, skipCanLoadCheck, sendResourceLoadCallbacks, isPreload); + CachedResource* resource = cache()->requestResource(this, type, fullURL, charset, isPreload); #else - CachedResource* resource = cache()->requestResource(this, type, fullURL, charset, skipCanLoadCheck, sendResourceLoadCallbacks); + CachedResource* resource = cache()->requestResource(this, type, fullURL, charset); #endif if (resource) { m_docResources.set(resource->url(), resource); @@ -276,7 +266,7 @@ void DocLoader::preload(CachedResource::Type type, const String& url) { String encoding = (type == CachedResource::Script || type == CachedResource::CSSStyleSheet) ? m_doc->frame()->loader()->encoding() : String(); - CachedResource* resource = requestResource(type, url, &encoding, true); + CachedResource* resource = requestResource(type, url, encoding, true); if (!resource || m_preloads.contains(resource)) return; resource->increasePreloadCount(); @@ -294,11 +284,17 @@ ListHashSet::iterator end = m_preloads.end(); for (ListHashSet::iterator it = m_preloads.begin(); it != end; ++it) { CachedResource* res = *it; - if (res->canDelete() && !res->inCache()) + res->decreasePreloadCount(); + if (res->canDelete()) + { + if(res->inCache()) + cache()->remove(res); + else delete res; + } else if (res->preloadResult() == CachedResource::PreloadNotReferenced) cache()->remove(res); - res->decreasePreloadCount(); + } m_preloads.clear(); } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/DocLoader.h --- a/webengine/osswebengine/WebCore/loader/DocLoader.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/DocLoader.h Fri Jul 03 15:54:40 2009 +0100 @@ -56,7 +56,7 @@ ~DocLoader(); CachedImage* requestImage(const String& url); - CachedCSSStyleSheet* requestCSSStyleSheet(const String& url, const String& charset, bool isUserStyleSheet = false); + CachedCSSStyleSheet* requestCSSStyleSheet(const String& url, const String& charset); CachedCSSStyleSheet* requestUserCSSStyleSheet(const String& url, const String& charset); CachedScript* requestScript(const String& url, const String& charset); @@ -102,9 +102,9 @@ private: #if PRELOAD_SCANNER_ENABLED - CachedResource* requestResource(CachedResource::Type, const String& url, const String* charset = 0, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true, bool isPreload = false); + CachedResource* requestResource(CachedResource::Type, const String& url, const String& charset, bool isPreload = false); #else - CachedResource* requestResource(CachedResource::Type, const String& url, const String* charset = 0, bool skipCanLoadCheck = false, bool sendResourceLoadCallbacks = true); + CachedResource* requestResource(CachedResource::Type, const String& url, const String& charset); #endif void checkForReload(const KURL&); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/DocumentLoader.cpp --- a/webengine/osswebengine/WebCore/loader/DocumentLoader.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/DocumentLoader.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -154,6 +154,7 @@ DocumentLoader::~DocumentLoader() { ASSERT(!m_frame || frameLoader()->activeDocumentLoader() != this || !frameLoader()->isLoading()); + m_mainResourceData = 0; } PassRefPtr DocumentLoader::mainResourceData() const diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/TextResourceDecoder.cpp --- a/webengine/osswebengine/WebCore/loader/TextResourceDecoder.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/TextResourceDecoder.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -279,6 +279,7 @@ TextResourceDecoder::~TextResourceDecoder() { + m_buffer.clear(); } void TextResourceDecoder::setEncoding(const TextEncoding& encoding, EncodingSource source) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp --- a/webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/loader/icon/IconDatabase.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -40,6 +40,7 @@ #include "SQLStatement.h" #include "SQLTransaction.h" #include "SystemTime.h" +#include "WebKitUtilsSqlite.h" #if PLATFORM(WIN_OS) #include @@ -230,6 +231,31 @@ for (; i != end; ++i) delete (*i).second; m_iconURLToRecordMap.clear(); + + HashMap::iterator recordIter = m_pageURLToRecordMap.begin(); + HashMap::iterator recordEnd = m_pageURLToRecordMap.end(); + String recordString; + for (; recordIter != recordEnd; ++recordIter) { + recordString = (*recordIter).first; + recordString = String(); + } + m_pageURLToRecordMap.clear(); + + HashSet::iterator retainedIter = m_retainedPageURLs.begin(); + HashSet::iterator retainedEnd = m_retainedPageURLs.end(); + String* retainedString; + for (; retainedIter != retainedEnd; ++retainedIter) { + retainedString = retainedIter.get(); + *retainedString = String(); + } + m_retainedPageURLs.clear(); + + delete m_client; + delete sharedIconDatabase; + m_syncLock.~Mutex(); + m_urlAndIconLock.~Mutex(); + m_pendingSyncLock.~Mutex(); + m_pendingReadingLock.~Mutex(); #endif } @@ -989,7 +1015,9 @@ ASSERT_ICON_SYNC_THREAD(); LOG(IconDatabase, "(THREAD) IconDatabase sync thread started"); - + // Create the Symbian SQL TLS + sqlite3SymbianLibInit(); + #ifndef NDEBUG double startTime = currentTime(); #endif @@ -1784,6 +1812,10 @@ #endif m_syncThreadRunning = false; + // Cleanup SQL TLS that was created from sqlite3SymbianLibInit() in iconDatabaseSyncThread() + sqlite3SymbianLibFinalize(); + // Cleanup STDLIB TLS + CloseSTDLIB(); return 0; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/page/ChromeClient.h --- a/webengine/osswebengine/WebCore/page/ChromeClient.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/page/ChromeClient.h Fri Jul 03 15:54:40 2009 +0100 @@ -26,6 +26,7 @@ namespace WebCore { + class Element; class FloatRect; class Frame; class HitTestResult; @@ -106,6 +107,7 @@ #if PLATFORM(SYMBIAN) virtual void setElementVisibilityChanged(bool visibility) = 0; virtual bool elementVisibilityChanged() = 0; + virtual void focusedElementChanged(Element*) = 0; #endif }; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/page/EventHandler.cpp --- a/webengine/osswebengine/WebCore/page/EventHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/page/EventHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -1469,6 +1469,11 @@ keyDownEvent.setIsAutoRepeat(false); bool result = !node->dispatchKeyEvent(keyDownEvent); + + //***** FL added from r12765 *****// + if (initialKeyEvent.isKeyDown()) + return result; + //**********// // Focus may have change during the keyDown handling, so refetch node node = eventTargetNodeForDocument(m_frame->document()); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/page/Frame.cpp --- a/webengine/osswebengine/WebCore/page/Frame.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/page/Frame.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -176,13 +176,13 @@ { setView(0); loader()->clearRecordedFormValues(); + loader()->closeURL(); + loader()->cancelAndClear(); #if PLATFORM(MAC) || PLATFORM(SYMBIAN) setBridge(0); #endif - loader()->cancelAndClear(); - // FIXME: We should not be doing all this work inside the destructor ASSERT(!d->m_lifeSupportTimer.isActive()); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/page/Page.cpp --- a/webengine/osswebengine/WebCore/page/Page.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/page/Page.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -18,7 +18,7 @@ * Boston, MA 02110-1301, USA. */ -#include "config.h" + #include "Page.h" #include "Chrome.h" @@ -235,4 +235,18 @@ m_inLowQualityInterpolationMode = mode; } +#if PLATFORM(SYMBIAN) +void deletePageStaticData() +{ + delete allPages; + allPages = NULL; + delete frameNamespaces; + frameNamespaces = NULL; + +#ifndef NDEBUG + PageCounter::count = 0; +#endif +} +#endif + } // namespace WebCore diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/page/Page.h --- a/webengine/osswebengine/WebCore/page/Page.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/page/Page.h Fri Jul 03 15:54:40 2009 +0100 @@ -21,6 +21,8 @@ #ifndef Page_h #define Page_h +#include "config.h" + #include "BackForwardList.h" #include "Chrome.h" #include "ContextMenuController.h" @@ -146,6 +148,10 @@ #endif }; +#if PLATFORM(SYMBIAN) + void deletePageStaticData(); +#endif + } // namespace WebCore #endif // Page_h diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/AtomicString.cpp --- a/webengine/osswebengine/WebCore/platform/AtomicString.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/AtomicString.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -38,6 +38,7 @@ namespace WebCore { static HashSet* stringTable; +static bool initialized = false; struct CStringTranslator { @@ -170,7 +171,9 @@ void AtomicString::remove(StringImpl* r) { - stringTable->remove(r); + if( stringTable ) { + stringTable->remove(r); + } } StringImpl* AtomicString::add(const KJS::Identifier& str) @@ -203,27 +206,45 @@ return m_string.deprecatedString(); } +static const char *textAtomStr = "#text"; +static const char *commentAtomStr = "#comment"; +static const char *starAtomStr = "*"; + DEFINE_GLOBAL(AtomicString, nullAtom) DEFINE_GLOBAL(AtomicString, emptyAtom, "") -DEFINE_GLOBAL(AtomicString, textAtom, "#text") -DEFINE_GLOBAL(AtomicString, commentAtom, "#comment") -DEFINE_GLOBAL(AtomicString, starAtom, "*") +DEFINE_GLOBAL(AtomicString, textAtom, textAtomStr) +DEFINE_GLOBAL(AtomicString, commentAtom, commentAtomStr) +DEFINE_GLOBAL(AtomicString, starAtom, starAtomStr) void AtomicString::init() { - static bool initialized; if (!initialized) { stringTable = new HashSet; // Use placement new to initialize the globals. new ((void*)&nullAtom) AtomicString; new ((void*)&emptyAtom) AtomicString(""); - new ((void*)&textAtom) AtomicString("#text"); - new ((void*)&commentAtom) AtomicString("#comment"); - new ((void*)&starAtom) AtomicString("*"); + new ((void*)&textAtom) AtomicString(textAtomStr); + new ((void*)&commentAtom) AtomicString(commentAtomStr); + new ((void*)&starAtom) AtomicString(starAtomStr); initialized = true; } } +void AtomicString::remove() +{ + // Cleanup the string table array + if( stringTable ) + { + stringTable->clear(); + delete stringTable; + stringTable = NULL; + } + textAtomStr = ""; + commentAtomStr = ""; + starAtomStr = ""; + initialized = false; } + +} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/AtomicString.h --- a/webengine/osswebengine/WebCore/platform/AtomicString.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/AtomicString.h Fri Jul 03 15:54:40 2009 +0100 @@ -78,6 +78,7 @@ bool isEmpty() const { return m_string.isEmpty(); } static void remove(StringImpl*); + static void remove(); #ifdef __OBJC__ AtomicString(NSString* s) : m_string(add(String(s).impl())) { } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/DeprecatedString.cpp --- a/webengine/osswebengine/WebCore/platform/DeprecatedString.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/DeprecatedString.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -117,6 +117,21 @@ DeprecatedStringData *DeprecatedString::shared_null = 0; DeprecatedStringData **DeprecatedString::shared_null_handle = 0; +void DeprecatedString::deleteSharedNull() + { + delete shared_null; + shared_null=0; + freeHandle(shared_null_handle); + } + +struct cleanupSharedNull { + ~cleanupSharedNull() + { + DeprecatedString::deleteSharedNull(); + } +}; +struct cleanupSharedNull cleanSharedNull; + // ------------------------------------------------------------------------- // Utility functions // ------------------------------------------------------------------------- diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/DeprecatedString.h --- a/webengine/osswebengine/WebCore/platform/DeprecatedString.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/DeprecatedString.h Fri Jul 03 15:54:40 2009 +0100 @@ -289,7 +289,8 @@ DeprecatedString(const QString&); operator QString() const; #endif - + static void deleteSharedNull(); + static DeprecatedString fromLatin1(const char *); static DeprecatedString fromLatin1(const char *, int len); static DeprecatedString fromUtf8(const char *); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/DeprecatedValueListImpl.cpp --- a/webengine/osswebengine/WebCore/platform/DeprecatedValueListImpl.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/DeprecatedValueListImpl.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -122,6 +122,7 @@ DeprecatedValueListImpl::~DeprecatedValueListImpl() { + d=0; } void DeprecatedValueListImpl::clear() diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/FontCache.cpp --- a/webengine/osswebengine/WebCore/platform/FontCache.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/FontCache.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -33,6 +33,7 @@ #include "FontFallbackList.h" #include "FontPlatformData.h" #include "StringHash.h" +#include "staticobjectscontainer.h" #include namespace WebCore { @@ -99,9 +100,28 @@ }; typedef HashMap FontPlatformDataCache; +typedef HashMap::iterator FontPlatformDataCacheIterator; static FontPlatformDataCache* gFontPlatformDataCache = 0; +struct cleanupFontDataCache { + ~cleanupFontDataCache() { + if( gFontPlatformDataCache ) + { + FontPlatformDataCacheIterator end = gFontPlatformDataCache->end(); + for (FontPlatformDataCacheIterator it = gFontPlatformDataCache->begin(); it != end; ++it) + { + FontPlatformData* obj = (*it).second; + delete obj; + } + gFontPlatformDataCache->clear(); + delete gFontPlatformDataCache; + gFontPlatformDataCache=0; + } + } +}; +static cleanupFontDataCache cleanFontDataCache; + static const AtomicString& alternateFamilyName(const AtomicString& familyName) { #if PLATFORM(SYMBIAN) @@ -138,7 +158,6 @@ { if (!gFontPlatformDataCache) { gFontPlatformDataCache = new FontPlatformDataCache; - platformInit(); } FontPlatformDataCacheKey key(familyName, fontDescription.computedPixelSize(), fontDescription.bold(), fontDescription.italic(), @@ -197,7 +216,7 @@ }; typedef HashMap FontDataCache; - +typedef HashMap::iterator FontDataCacheIterator; static FontDataCache* gFontDataCache = 0; FontData* FontCache::getCachedFontData(const FontPlatformData* platformData) @@ -217,6 +236,19 @@ return result; } +void FontCache::deleteFontDataCache() +{ + if( gFontDataCache ) { + FontDataCacheIterator end = gFontDataCache->end(); + for (FontDataCacheIterator it = gFontDataCache->begin(); it != end; ++it) { + FontData* obj = (*it).second; + delete obj; + } + } + delete gFontDataCache; + gFontDataCache = NULL; +} + const FontData* FontCache::getFontData(const Font& font, int& familyIndex) { FontPlatformData* result = 0; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/FontCache.h --- a/webengine/osswebengine/WebCore/platform/FontCache.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/FontCache.h Fri Jul 03 15:54:40 2009 +0100 @@ -60,7 +60,8 @@ static const AtomicString& systemFontFamilyName( const AtomicString& familyName ); static FontPlatformData* getDeviceDefaultFont(float size); #endif - + static void deleteFontDataCache(); + private: static FontPlatformData* getCachedFontPlatformData(const FontDescription&, const AtomicString& family, bool checkingAlternateName = false); static FontData* getCachedFontData(const FontPlatformData*); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/MimeTypeRegistry.cpp --- a/webengine/osswebengine/WebCore/platform/MimeTypeRegistry.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/MimeTypeRegistry.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -44,7 +44,28 @@ static WTF::HashSet* supportedImageResourceMIMETypes; static WTF::HashSet* supportedImageMIMETypes; static WTF::HashSet* supportedNonImageMIMETypes; - + +struct cleanupMimeTypes { + ~cleanupMimeTypes() { + if( supportedImageResourceMIMETypes ) { + supportedImageResourceMIMETypes->clear(); + delete supportedImageResourceMIMETypes; + supportedImageResourceMIMETypes = 0; + } + if( supportedImageMIMETypes ) { + supportedImageMIMETypes->clear(); + delete supportedImageMIMETypes; + supportedImageMIMETypes = 0; + } + if( supportedNonImageMIMETypes ) { + supportedNonImageMIMETypes->clear(); + delete supportedNonImageMIMETypes; + supportedNonImageMIMETypes = 0; + } + } +}; +struct cleanupMimeTypes cleanMimeTypes; + #if PLATFORM(CG) extern String getMIMETypeForUTI(const String& uti); #endif diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/PlatformKeyboardEvent.h --- a/webengine/osswebengine/WebCore/platform/PlatformKeyboardEvent.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/PlatformKeyboardEvent.h Fri Jul 03 15:54:40 2009 +0100 @@ -63,6 +63,9 @@ String unmodifiedText() const { return m_unmodifiedText; } String keyIdentifier() const { return m_keyIdentifier; } bool isKeyUp() const { return m_isKeyUp; } + //***** FL added from r12765 *****// + bool isKeyDown() const { return m_isKeyDown; } + //**********// bool isAutoRepeat() const { return m_autoRepeat; } void setIsAutoRepeat(bool in) { m_autoRepeat = in; } int WindowsKeyCode() const { return m_WindowsKeyCode; } @@ -99,6 +102,9 @@ String m_unmodifiedText; String m_keyIdentifier; bool m_isKeyUp; + //***** FL added from r12765 *****// + bool m_isKeyDown; + //**********// bool m_autoRepeat; int m_WindowsKeyCode; bool m_isKeypad; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/RegularExpression.cpp --- a/webengine/osswebengine/WebCore/platform/RegularExpression.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/RegularExpression.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -134,6 +134,7 @@ RegularExpression::~RegularExpression() { + d=0; } RegularExpression &RegularExpression::operator=(const RegularExpression &re) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/TextEncodingRegistry.cpp --- a/webengine/osswebengine/WebCore/platform/TextEncodingRegistry.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/TextEncodingRegistry.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -23,7 +23,7 @@ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -#include "config.h" + #include "TextEncodingRegistry.h" #include "PlatformString.h" @@ -248,4 +248,15 @@ return !didExtendTextCodecMaps; } +#if PLATFORM(SYMBIAN) +void deleteEncodingMaps() +{ + delete textEncodingNameMap; + textEncodingNameMap = NULL; + delete textCodecMap; + textCodecMap = NULL; + didExtendTextCodecMaps = false; +} +#endif + } // namespace WebCore diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/TextEncodingRegistry.h --- a/webengine/osswebengine/WebCore/platform/TextEncodingRegistry.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/TextEncodingRegistry.h Fri Jul 03 15:54:40 2009 +0100 @@ -26,6 +26,7 @@ #ifndef TextEncodingRegistry_h #define TextEncodingRegistry_h +#include "config.h" #include #include @@ -48,6 +49,10 @@ // Only TextEncoding should use this function directly. bool noExtendedTextEncodingNameUsed(); +#if PLATFORM(SYMBIAN) + void deleteEncodingMaps(); +#endif + } #endif // TextEncodingRegistry_h diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/Timer.cpp --- a/webengine/osswebengine/WebCore/platform/Timer.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/Timer.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -49,6 +49,16 @@ static Vector* timerHeap; static HashSet* timersReadyToFire; +struct timerCleaner { + ~timerCleaner() { + if( timerHeap ) { + delete timerHeap; + timerHeap = 0; + } + } +}; +struct timerCleaner cleanTimer; + // ---------------- // Class to represent elements in the heap when calling the standard library heap algorithms. diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/graphics/symbian/ImageSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/graphics/symbian/ImageSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/graphics/symbian/ImageSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -60,7 +60,7 @@ namespace WebCore { -CMaskedBitmap* loadAknIcon(int id, float sizeAdjust); +CMaskedBitmap* loadAknIconL(int id, float sizeAdjust); void FrameData::clear() { @@ -126,9 +126,26 @@ BitmapImage::~BitmapImage() { + //find if m_maskedbitmap is in m_frames so it wont get deleted twice + for(TInt i=0; im_id,data->m_sizeAdjust); + CMaskedBitmap* bm = NULL; + TRAP_IGNORE(bm = loadAknIconL(data->m_id,data->m_sizeAdjust)); if (bm) { BitmapImage* im = new BitmapImage(bm); return im; @@ -325,6 +343,7 @@ void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dst, const FloatRect& src, CompositeOperator op) { WebCoreGraphicsContext* context = ctxt->platformContext(); + if (!context) { return; } @@ -348,28 +367,37 @@ _LIT( KBrowserSvgFile, "webkiticons.mif" ); #endif +static HBufC* iconFileNameBuf = NULL; +struct cleanupIconFileName { + ~cleanupIconFileName() { + delete iconFileNameBuf; + iconFileNameBuf = NULL; + } +}; +struct cleanupIconFileName cleanIconFileName; + TPtrC iconFileName() { - static HBufC* filename = 0; - if (!filename) { + if (!iconFileNameBuf) { TFileName mbmDrive; TParse parse; Dll::FileName( mbmDrive ); Dll::FileName( mbmDrive ); parse.Set( mbmDrive, NULL, NULL ); mbmDrive = parse.Drive(); - filename = HBufC::New( KMaxFileName ); - filename->Des().Append( mbmDrive ); - filename->Des().Append( KDC_APP_BITMAP_DIR ); - filename->Des().Append( KBrowserSvgFile ); + iconFileNameBuf = HBufC::New( KMaxFileName ); + iconFileNameBuf->Des().Append( mbmDrive ); + iconFileNameBuf->Des().Append( KDC_APP_BITMAP_DIR ); + iconFileNameBuf->Des().Append( KBrowserSvgFile ); } - return *filename; + return *iconFileNameBuf; } -CMaskedBitmap* loadAknIcon(int id, float sizeAdjust) +CMaskedBitmap* loadAknIconL(int id, float sizeAdjust) { CEikonEnv* eikEnv = CEikonEnv::Static(); CWsScreenDevice& screenDev = *eikEnv->ScreenDevice(); + CMaskedBitmap* result = NULL; int dpi = screenDev.VerticalTwipsToPixels(KTwipsPerInch); int px = (int)10*sizeAdjust; @@ -386,19 +414,20 @@ CFbsBitmap* bitmap=0; CFbsBitmap* mask=0; MAknsSkinInstance* skin = AknsUtils::SkinInstance(); - TRAPD(error, AknsUtils::CreateIconL( skin, + + AknsUtils::CreateIconLC( skin, KAknsIIDDefault, bitmap, mask, iconFileName(), id, - id+1)); - if (error!=KErrNone) - return 0; + id+1); AknIconUtils::SetSize(bitmap,TSize(px,px)); //rect.Rect().Size()); AknIconUtils::SetSize(mask,TSize(px,px)); //rect.Rect().Size()); - return new CMaskedBitmap(bitmap,mask); + result = new (ELeave) CMaskedBitmap(bitmap,mask); + CleanupStack::Pop( 2 );//bitmap, mask + return result; } CMaskedBitmap* BitmapImage::getMaskedBitmap() @@ -406,8 +435,7 @@ if (m_maskedBitmap) return m_maskedBitmap; - m_maskedBitmap = m_source.createFrameAtIndex(0); - return m_maskedBitmap; + return m_source.createFrameAtIndex(0); } void BitmapImage::drawPattern(GraphicsContext* ctxt, const FloatRect& srcRect, const AffineTransform& patternTransform, diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp --- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -106,8 +106,14 @@ void ReceivedFinished::RunL() { + m_done = true; + /* + * this callback will call deRef on HttpConnection which + * will delete ReceivedFinished object since it's a + * member of HttpConnection. Therefore this call has to + * the last one. + */ m_callback(m_ctx, m_error); - m_done = true; } TInt ReceivedFinished::RunError(TInt aError) @@ -426,6 +432,32 @@ THTTPHdrVal hdrVal; RHTTPHeaders httpHeaders = m_transaction->Response().GetHeaderCollection(); RStringPool stringPool = m_transaction->Session().StringPool(); + + THTTPHdrFieldIter it = httpHeaders.Fields(); + + HBufC8* headerStr; + TBool isRefresh = EFalse; + TPtrC8 headerValue; ; + while( it.AtEnd() == EFalse ) + { + // Get name of next header field + RStringTokenF fieldName = it(); + RStringF fieldNameStr = stringPool.StringF( fieldName ); + httpHeaders.GetRawField( fieldNameStr, headerValue ); + headerStr = HBufC8::NewLC( fieldNameStr.DesC().Length() ); + TPtr8 headerPtr( headerStr->Des() ); + headerPtr.Copy( fieldNameStr.DesC() ); + if (equalIgnoringCase(headerPtr, "refresh")) + { + isRefresh = ETrue; + CleanupStack::PopAndDestroy(); // headerStr + break; + } + + CleanupStack::PopAndDestroy(); // headerStr + ++it; + } + const TStringTable& stringTable = RHTTPSession::GetTable(); if( httpHeaders.GetField( stringPool.StringF( HTTP::EContentType, stringTable ), 0, hdrVal) == KErrNone ) { @@ -456,11 +488,19 @@ //HTTP status text response.setHTTPStatusText(((m_transaction->Response()).StatusText().DesC())); + + if (m_contentType && m_contentType->Length()) { response.setHTTPHeaderField("Content-Type", *m_contentType); } - - TPtrC8 result; + + // Add Refresh field only when Refresh existed in recieved header. + if (isRefresh) + { + response.setHTTPHeaderField("Refresh",headerValue); + } + + TPtrC8 result; if( httpHeaders.GetRawField( stringPool.StringF( HTTP::EContentDisposition, stringTable ), result) == KErrNone ) response.setHTTPHeaderField("Content-Disposition", result); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp --- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpRequestHeaderManager.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -114,6 +114,8 @@ m_AcceptLangStr = NULL; delete m_InstalledLangBuf; m_InstalledLangBuf = NULL; + delete m_CharsetBuf; + m_CharsetBuf = NULL; } //----------------------------------------------------------------------------- @@ -418,8 +420,9 @@ TPtrC8 userSelectedLangPtr(userSelectedLangString.DesC()); // TInt xtraDataPerLang = KCommaSeperator().Length() + KLangStrLen + KQHalfValue().Length(); - TInt reqdBufSize = userSelectedLangPtr.Length() + - ((systemEpocLanguageCodes->Count()-1) * xtraDataPerLang); + TInt reqdBufSize = ((userSelectedLangPtr.Length() + xtraDataPerLang) + * (systemEpocLanguageCodes->Count())); + delete m_InstalledLangBuf; m_InstalledLangBuf = NULL; m_InstalledLangBuf = HBufC8::NewL(reqdBufSize); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp --- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -71,6 +71,8 @@ m_httpDownload = NULL; delete m_SelfDownloadContentHandler; m_SelfDownloadContentHandler = NULL; + delete m_SelfDownloadContentTypes; + m_SelfDownloadContentTypes = NULL; m_ClientAcceptHeaders.ResetAndDestroy(); m_ClientAcceptHeaders.Close(); closeHttpSession(); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -40,6 +40,15 @@ static CResourceHandleManager* s_self = 0; +struct cleanupHandleManager { + ~cleanupHandleManager() { + if(s_self){ + delete s_self; + s_self = 0; + } + } +}; +static cleanupHandleManager deleteResourceHandleManager; CResourceHandleManager::CResourceHandleManager() { @@ -131,7 +140,7 @@ int needed = std::max(contentLength, std::max(client->receivedDataBufferSize(), data.Length())); OOM_PRE_CHECK(needed<<2, needed<<1, "CResourceHandleManager::receiveData()") client->didReceiveData(resource, (const char*)data.Ptr(), data.Length(), data.Length()); - OOM_POST_CHECK_FAILED(client->didFail(resource, ResourceError(String(), KErrNoMemory, String(), String()));) + OOM_POST_CHECK_FAILED(connection->handleError(KErrNoMemory);) } } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.h --- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceHandleManagerSymbian.h Fri Jul 03 15:54:40 2009 +0100 @@ -39,7 +39,7 @@ int add(ResourceHandle*); void cancel(ResourceHandle*); - + virtual ~CResourceHandleManager(); public : void receivedResponse(ResourceHandle* resource, ResourceResponse& response, MUrlConnection* connection); void receivedData(ResourceHandle* resource, const TDesC8&, int contentLength, MUrlConnection* connection); @@ -47,7 +47,7 @@ private: CResourceHandleManager(); - virtual ~CResourceHandleManager(); + }; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp --- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -95,6 +95,11 @@ connection->download(handle, request, response); } +static void cleanupConnection( TAny* connection ) +{ + delete (ResolvedConnection*) connection; +} + MUrlConnection* ResourceLoaderDelegate::checkLinkResolverL(ResourceHandle* handle, Frame* frame) { CBrCtl* brctl = control(frame); @@ -117,9 +122,10 @@ } } connection = new (ELeave) ResolvedConnection(handle, frame); - CleanupStack::PushL(connection); + TCleanupItem cleaner( cleanupConnection, connection ); + CleanupStack::PushL(cleaner); TBool ret = brctl->brCtlLinkResolver()->ResolveLinkL(url->Des(), currentUrlPtr, *connection); - CleanupStack::Pop(); // connection + CleanupStack::Pop(); // cleaner( connection ) if (!ret) { delete connection; connection = NULL; @@ -141,10 +147,11 @@ } } connection = new (ELeave) ResolvedConnection(handle, frame); - CleanupStack::PushL(connection); + TCleanupItem cleaner( cleanupConnection, connection ); + CleanupStack::PushL(cleaner); TBool ret = brctl->brCtlLinkResolver()->ResolveEmbeddedLinkL(url->Des(), currentUrlPtr, ELoadContentTypeAny, *connection); - CleanupStack::Pop(); // connection + CleanupStack::Pop(); // cleaner( connection ) if (!ret) { delete connection; connection = NULL; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/network/symbian/UrlConnection.h --- a/webengine/osswebengine/WebCore/platform/network/symbian/UrlConnection.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/network/symbian/UrlConnection.h Fri Jul 03 15:54:40 2009 +0100 @@ -39,6 +39,7 @@ virtual WebCore::ResourceHandle* handle() { return m_handle; } virtual int totalContentSize() = 0; virtual void setDefersLoading(bool /*defers*/) {} + virtual void handleError(int error) {}; public: // data WebCore::ResourceHandle* m_handle; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/FontCacheSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -133,6 +133,7 @@ } iFontCache.clear(); delete [] iSupportedNames; + iDeviceDefaultFont = ""; } const AtomicString& PlatformFontCache::SystemFontFamily( const AtomicString& familyName ) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/FontDataSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -56,7 +56,8 @@ void FontData::platformDestroy() { - StaticObjectsContainer::instance()->fontCache()->ReleaseFont( m_font.Font() ); + // Do Nothing. m_font is owned by the Font Cache + // and maybe shared with other FontData instances } FontData* FontData::smallCapsFontData(const FontDescription& fontDescription) const diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/FontSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/FontSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/FontSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -11,7 +11,7 @@ * * Contributors: * -* Description: +* Description: * */ @@ -51,14 +51,14 @@ } TextRun end(run.characters() + from, to - from); - float w = floatWidthForComplexText(end, style); - + float w = floatWidthForComplexText(end, style); + FloatRect rect(b + point.x(), point.y(), w, h); return rect; } -void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run, const TextStyle& style, const FloatPoint& point, int from, int to) const +void Font::drawComplexText(GraphicsContext* graphicsContext, const TextRun& run, const TextStyle& style, const FloatPoint& point, int from, int to) const { PlatformFontCache* cache = StaticObjectsContainer::instance()->fontCache(); CFont* font = cache->zoomedFont(m_fontDescription, cache->fontZoomFactor()); @@ -74,28 +74,28 @@ TPoint startPos = point; if (from) { - + // the text run before the selection TextRun leftRun(run.characters(), from); // the selection start point startPos.iX += floatWidthForComplexText(leftRun, style); } - + TPtrC str( (const TUint16*)(run.characters() + from), to - from); - + TInt numSpaces(0); TInt indexOfFirstNonRegularSpace(-1); TInt strLength(str.Length()); - + // a) search for nbsp and similar // b) count the spaces for word spacing for( TInt n = 0; nDes()); if (isSmallCaps()) { // proper small caps implementation would use smaller font, but that get complicated @@ -128,43 +128,41 @@ // and replace them with regular spaces. otherwise they show up as boxes. if (indexOfFirstNonRegularSpace > -1) { for(; indexOfFirstNonRegularSpaceWrapText(xForm(width(run)), *font ); - bitgc.DrawText( bidiText->DisplayText(),xForm(startPos)); - delete bidiText; + bitgc.DrawText( bidiText->DisplayText(),xForm(startPos)); + delete bidiText; } else{ - bitgc.DrawText( newStr, xForm(startPos) ); + bitgc.DrawText( newStr, xForm(startPos) ); } - + if (graphicsContext && StaticObjectsContainer::instance()->pictograph()) StaticObjectsContainer::instance()->pictograph()->DrawPictographsInText(graphicsContext->platformContext(), bitgc, *font, newStr, startPos ); - + delete text; } - + }else { bitgc.DrawText( str, xForm(startPos) ); - if (graphicsContext && StaticObjectsContainer::instance()->pictograph()) + if (graphicsContext && StaticObjectsContainer::instance()->pictograph()) StaticObjectsContainer::instance()->pictograph()->DrawPictographsInText(graphicsContext->platformContext(), bitgc, *font, str, startPos ); } - + bitgc.DiscardFont(); } inline float floatWidthForComplexTextSymbian(const Font* f, const TextRun& run, const TextStyle& style, int maxWidth, int& chars){ const CFont& font( f->primaryFont()->platformData() ); TPtrC str( (const TUint16*)(run.characters()), run.length()); - + TInt numSpaces(0); TInt indexOfFirstNonRegularSpace(-1); TInt strLength(str.Length()); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_globals.h --- a/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_globals.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_globals.h Fri Jul 03 15:54:40 2009 +0100 @@ -36,6 +36,7 @@ XMLPUBFUN void XMLCALL xeSetTLS(void* ptr); XMLPUBFUN xmlGlobalStatePtr XMLCALL xeGetTLS(); +XMLPUBFUN void XMLCALL xecleanTLS(); //#if defined (XMLENGINE_USE_DOMSTRINGARGUMENT) XMLPUBFUN void XMLCALL xeCleanupDOMStringConverter(); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_parser.c --- a/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_parser.c Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/Libxml2/Libxml2_parser.c Fri Jul 03 15:54:40 2009 +0100 @@ -12412,22 +12412,23 @@ void xmlCleanupParser(void) { - if (!xmlParserInitialized) - return; - - xmlCleanupCharEncodingHandlers(); -#ifdef LIBXML_CATALOG_ENABLED - xmlCatalogCleanup(); -#endif - xmlCleanupInputCallbacks(); -#ifdef LIBXML_OUTPUT_ENABLED - xmlCleanupOutputCallbacks(); -#endif - xmlCleanupGlobals(); - xmlResetLastError(); - xmlCleanupThreads(); /* must be last if called not from the main thread */ - xmlCleanupMemory(); - xmlParserInitialized = 0; + if (xmlParserInitialized) + { + xmlCleanupCharEncodingHandlers(); + #ifdef LIBXML_CATALOG_ENABLED + xmlCatalogCleanup(); + #endif + xmlCleanupInputCallbacks(); + #ifdef LIBXML_OUTPUT_ENABLED + xmlCleanupOutputCallbacks(); + #endif + xmlCleanupGlobals(); + xmlResetLastError(); + xmlCleanupThreads(); /* must be last if called not from the main thread */ + xmlCleanupMemory(); + xmlParserInitialized = 0; + } + xecleanTLS(); } /************************************************************************ diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/Libxml2/XmlEnglibxml2dll.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/Libxml2/XmlEnglibxml2dll.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/Libxml2/XmlEnglibxml2dll.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -54,3 +54,10 @@ { return STATIC_CAST(xmlGlobalStatePtr, Dll::Tls()); } + +void xecleanTLS() +{ + xmlGlobalStatePtr gs = xeGetTLS(); + delete gs; + xeSetTLS(NULL); +} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/OOMHandler.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/OOMHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/OOMHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -64,7 +64,7 @@ OOMHandler::~OOMHandler() { MemoryManager::RemoveCollector(this); - MemoryManager::AddStopper(this); + MemoryManager::RemoveStopper(this); } TUint OOMHandler::Collect(TUint aRequired) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/PlatformKeyEventSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/PlatformKeyEventSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/PlatformKeyEventSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -661,6 +661,9 @@ PlatformKeyboardEvent::PlatformKeyboardEvent( TKeyEvent event, TEventCode eventCode, bool forceAutoRepeat ) : m_keyIdentifier(KeyIdentifierForKeyEvent(event.iCode)) , m_isKeyUp( eventCode == EEventKeyUp ) + //***** FL added from r12765 *****// + , m_isKeyDown( eventCode == EEventKeyDown ) + //**********// , m_autoRepeat(event.iRepeats>0 || forceAutoRepeat ) , m_WindowsKeyCode(WindowsKeyCodeForKeyEvent(event)) , m_shiftKey( event.iModifiers & EModifierShift ) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -15,125 +15,26 @@ * */ - -#include "config.h" +#include "RenderThemeSymbian.h" +#include "staticobjectscontainer.h" +// implement Symbian theme here -#include "RenderTheme.h" -#include "Event.h" -#include "Document.h" -#include "Image.h" -#include "GraphicsContext.h" -#include <../bidi.h> -#include -#include "RenderBox.h" -#include -#include "WebCoreGraphicsContext.h" -#include "MaskedBitmap.h" -#include "BitmapImage.h" -#include "WebCoreWidget.h" -// implement Symbian theme here + namespace WebCore { -enum { - ECheckBoxOn, - ECheckBoxOff, - ERadioOn, - ERadioOff, - ESelectArrow -}; - -class RenderThemeSymbian : public RenderTheme -{ -public: - RenderThemeSymbian(); - // A method asking if the theme's controls actually care about redrawing when hovered. - bool supportsHover(const RenderStyle*) const { return true; } - - void setCheckboxSize(RenderStyle*) const; - void setRadioSize(RenderStyle*) const; - - void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const; - void adjustMenuListStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const; - void adjustMenuListButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const; - - bool paintCheckbox(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); - bool paintButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); - bool paintMenuListButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); - bool paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); - bool paintRadio(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); - bool paintTextField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); - bool paintTextArea(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); - - - bool isControlStyled(const RenderStyle*, const BorderData&, - const BackgroundLayer&, const Color&) const; - bool controlSupportsTints(const RenderObject*) const; - void systemFont(int propId, FontDescription&) const; - - Color platformActiveSelectionBackgroundColor() const; - Color platformInactiveSelectionBackgroundColor() const; - Color platformActiveSelectionForegroundColor() const; - Color platformInactiveSelectionForegroundColor() const; - - void addIntrinsicMargins(RenderStyle*) const; - void close(); - bool supportsFocus(EAppearance) const; - void paintButtonDecorations(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); - - bool supportsFocusRing(const RenderStyle*) const; - void scaleImage(int type, int scalingFactor); - void scaleImageL(int type, int scalingFactor); - - void cancel(); - void run(); - - Image* m_checkBoxOn; - Image* m_checkBoxOff; - Image* m_scaledCheckBoxOn; - Image* m_scaledCheckBoxOff; - int m_scalingForCheckBoxOn; - int m_scalingForCheckBoxOff; - - Image* m_radioButtonOn; - Image* m_radioButtonOff; - Image* m_scaledRadioOn; - Image* m_scaledRadioOff; - int m_scalingForRadioOn; - int m_scalingForRadioOff; - - Image* m_selectArrow; - Image* m_scaledSelectArrow; - int m_scalingForSelectArrow; - - CBitmapScaler* m_bitmapScaler; - CActiveSchedulerWait* m_asw; -}; - RenderTheme* theme() { - static RenderThemeSymbian symbianTheme; - return &symbianTheme; + return StaticObjectsContainer::instance()->theme(); } + + MScrollView* scrollView(const RenderObject::PaintInfo& i) { return &(i.context->platformContext()->view()); } -class SyncScaler : public CActive -{ -public: - SyncScaler(); - ~SyncScaler(); - void init(); - void RunL(); - void DoCancel(); - TInt RunError(TInt aError); - int m_error; -}; - SyncScaler::SyncScaler() : CActive (CActive::EPriorityHigh) { CActiveScheduler::Add(this); @@ -194,6 +95,48 @@ m_asw = NULL; } +RenderThemeSymbian::~RenderThemeSymbian() +{ +RDebug::Printf("RenderThemeSymbian::~RenderThemeSymbian"); + + delete m_checkBoxOn; + m_checkBoxOn = 0; + + delete m_checkBoxOff; + m_checkBoxOff = 0; + + delete m_scaledCheckBoxOn; + m_scaledCheckBoxOn = 0; + + delete m_scaledCheckBoxOff; + m_scaledCheckBoxOff = 0; + + delete m_radioButtonOn; + m_radioButtonOn = 0; + + delete m_radioButtonOff; + m_radioButtonOff = 0; + + delete m_scaledRadioOn; + m_scaledRadioOn = 0; + + delete m_scaledRadioOff; + m_scaledRadioOff = 0; + + delete m_selectArrow; + m_selectArrow = 0; + + delete m_scaledSelectArrow; + m_scaledSelectArrow = 0; + + delete m_bitmapScaler; + m_bitmapScaler = 0; + + delete m_asw; + m_asw = 0; +} + + void RenderThemeSymbian::systemFont(int propId, FontDescription& fontDescription) const { } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebCore/platform/symbian/RenderThemeSymbian.h Fri Jul 03 15:54:40 2009 +0100 @@ -0,0 +1,131 @@ +/* +* Copyright (c) 2006 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: +* +*/ +#ifndef __RENDERTHEMESYMBIAN_H__ +#define __RENDERTHEMESYMBIAN_H__ + +#include "config.h" + +#include "RenderTheme.h" +#include "Event.h" +#include "Document.h" +#include "Image.h" +#include "GraphicsContext.h" +#include <../bidi.h> +#include +#include "RenderBox.h" +#include +#include "WebCoreGraphicsContext.h" +#include "MaskedBitmap.h" +#include "BitmapImage.h" +#include "WebCoreWidget.h" + +// implement Symbian theme here + +namespace WebCore { + +enum { + ECheckBoxOn, + ECheckBoxOff, + ERadioOn, + ERadioOff, + ESelectArrow +}; + +class RenderThemeSymbian : public RenderTheme +{ +public: + RenderThemeSymbian(); + virtual ~RenderThemeSymbian(); + // A method asking if the theme's controls actually care about redrawing when hovered. + bool supportsHover(const RenderStyle*) const { return true; } + + void setCheckboxSize(RenderStyle*) const; + void setRadioSize(RenderStyle*) const; + + void adjustButtonStyle(CSSStyleSelector*, RenderStyle*, Element*) const; + void adjustTextFieldStyle(CSSStyleSelector*, RenderStyle*, Element*) const; + void adjustMenuListStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const; + void adjustMenuListButtonStyle(CSSStyleSelector* selector, RenderStyle* style, Element* e) const; + + bool paintCheckbox(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); + bool paintButton(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); + bool paintMenuListButton(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); + bool paintMenuList(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); + bool paintRadio(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); + bool paintTextField(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); + bool paintTextArea(RenderObject*, const RenderObject::PaintInfo&, const IntRect&); + + + bool isControlStyled(const RenderStyle*, const BorderData&, + const BackgroundLayer&, const Color&) const; + bool controlSupportsTints(const RenderObject*) const; + void systemFont(int propId, FontDescription&) const; + + Color platformActiveSelectionBackgroundColor() const; + Color platformInactiveSelectionBackgroundColor() const; + Color platformActiveSelectionForegroundColor() const; + Color platformInactiveSelectionForegroundColor() const; + + void addIntrinsicMargins(RenderStyle*) const; + void close(); + bool supportsFocus(EAppearance) const; + void paintButtonDecorations(RenderObject* o, const RenderObject::PaintInfo& i, const IntRect& r); + + bool supportsFocusRing(const RenderStyle*) const; + void scaleImage(int type, int scalingFactor); + void scaleImageL(int type, int scalingFactor); + + void cancel(); + void run(); + + Image* m_checkBoxOn; + Image* m_checkBoxOff; + Image* m_scaledCheckBoxOn; + Image* m_scaledCheckBoxOff; + int m_scalingForCheckBoxOn; + int m_scalingForCheckBoxOff; + + Image* m_radioButtonOn; + Image* m_radioButtonOff; + Image* m_scaledRadioOn; + Image* m_scaledRadioOff; + int m_scalingForRadioOn; + int m_scalingForRadioOff; + + Image* m_selectArrow; + Image* m_scaledSelectArrow; + int m_scalingForSelectArrow; + + CBitmapScaler* m_bitmapScaler; + CActiveSchedulerWait* m_asw; +}; + + +class SyncScaler : public CActive +{ +public: + SyncScaler(); + ~SyncScaler(); + void init(); + void RunL(); + void DoCancel(); + TInt RunError(TInt aError); + int m_error; +}; + +} +#endif// !__RENDERTHEMESYMBIAN_H__ diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -35,8 +35,25 @@ #include "WebCannedImages.h" #include "OOMHandler.h" #include "SharedTimer.h" +#include "TextEncodingRegistry.h" +#include "CSSStyleSelector.h" +#include "RenderStyle.h" +#include "Page.h" +#include "Cache.h" +#include "StreamingTextCodecSymbian.h" +#include "HTMLNames.h" +#include "XMLNames.h" +#include "FontCache.h" +#include "RenderThemeSymbian.h" +#include "qualifiedname.h" +#include "XMLTokenizer.h" #include +#include "WidgetEngineBridge.h" +#if defined(BRDO_LIW_FF) +#include "DeviceBridge.h" +#endif + const TInt KLowResolutionDpi = 130; const TInt KMediumResolutionDpi = 200; @@ -60,6 +77,7 @@ ,m_oomHandler(0) ,m_fullScreenMode(false) ,m_pluginFullscreen(false) + ,m_symbianTheme(NULL) { // Check the device resolution CEikonEnv* eikEnv = CEikonEnv::Static(); @@ -83,7 +101,11 @@ StaticObjectsContainer::~StaticObjectsContainer() { + // Run KJS collector to cleanup any remaining references + // This must be run before Cache::deleteStaticCache to properly free resources + KJS::Collector::collect(); delete m_oomHandler; + FontCache::deleteFontDataCache(); delete m_fontCache; delete m_formFillController; delete m_pictograph; @@ -94,8 +116,27 @@ delete m_cannedimg; delete m_cursor; delete m_pluginhandler; + delete m_symbianTheme; gInstance = NULL; + deletePageStaticData(); + CSSStyleSelector::deleteDefaultStyle(); + deleteEncodingMaps(); + RenderStyle::deleteDefaultRenderStyle(); + Cache::deleteStaticCache(); + TextCodecSymbian::deleteStatAvailCharsets(); + QualifiedName::cleanup(); + XMLNames::remove(); + // HTMLNames::remove() will destroy the AtomicString table + // All other atomic string destruction must be done before this call + // + HTMLNames::remove(); + XMLTokenizer::cleanupXMLStringParser(); shutdownSharedTimer(); + m_widgetLibrary.Close(); +#if defined(BRDO_LIW_FF) + m_deviceLibrary.Close(); +#endif + CloseSTDLIB(); } StaticObjectsContainer* StaticObjectsContainer::instance() @@ -198,6 +239,40 @@ return m_pluginhandler; } +#if defined(BRDO_LIW_FF) +MDeviceBridge* StaticObjectsContainer::getDeviceBridgeL() +{ + MDeviceBridge* device(NULL); + + if( !m_deviceLibrary.Handle() ) { + _LIT( KDeviceDLLName, "jsdevice.dll" ); + User::LeaveIfError( m_deviceLibrary.Load(KDeviceDLLName) ); + } + + TLibraryFunction device_entry = m_deviceLibrary.Lookup(1); + if (device_entry) { + device = (MDeviceBridge*) device_entry(); + } + return device; +} +#endif + +MWidgetEngineBridge* StaticObjectsContainer::getWidgetEngineBridgeL() +{ + MWidgetEngineBridge* widget(NULL); + + if( !m_widgetLibrary.Handle() ) { + _LIT( KBrowserWidgetEngineName, "widgetengine.dll" ); + User::LeaveIfError( m_widgetLibrary.Load(KBrowserWidgetEngineName) ); + } + + TLibraryFunction entry = m_widgetLibrary.Lookup(1); + if (entry) { + widget = (MWidgetEngineBridge*) entry(); + } + return widget; +} + CBrCtl* StaticObjectsContainer::brctl() const { if (m_activeBrCtls.size() > 0) @@ -236,6 +311,13 @@ bool StaticObjectsContainer::fullScreenMode(void){ return m_fullScreenMode; } + +RenderTheme* StaticObjectsContainer::theme() +{ + if(!m_symbianTheme) + m_symbianTheme = new RenderThemeSymbian(); + return m_symbianTheme; +} } // END OF FILE diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.h --- a/webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/StaticObjectsContainer.h Fri Jul 03 15:54:40 2009 +0100 @@ -19,6 +19,7 @@ #ifndef __STATICOBJECTCONTAINER_H__ #define __STATICOBJECTCONTAINER_H__ +#include #include #include #include @@ -34,9 +35,12 @@ class PluginHandler; class WebCannedImages; class CBrCtl; +class MWidgetEngineBridge; +class MDeviceBridge; namespace WebCore { - +class RenderThemeSymbian; +class RenderTheme; typedef enum { ELowScreenResolution, @@ -68,7 +72,12 @@ PluginHandler* pluginHandler(); void setPluginFullscreen(bool val) { m_pluginFullscreen = val; } bool isPluginFullscreen() { return m_pluginFullscreen; } - +#if defined(BRDO_LIW_FF) + MDeviceBridge* getDeviceBridgeL(); +#endif + MWidgetEngineBridge* getWidgetEngineBridgeL(); + RenderTheme* theme(); + virtual ~StaticObjectsContainer(); void ref(CBrCtl& brctl); @@ -101,6 +110,11 @@ OOMHandler* m_oomHandler; bool m_fullScreenMode; bool m_pluginFullscreen; + RLibrary m_widgetLibrary; +#if defined(BRDO_LIW_FF) + RLibrary m_deviceLibrary; +#endif + RenderThemeSymbian* m_symbianTheme; }; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -254,6 +254,12 @@ } +void TextCodecSymbian::deleteStatAvailCharsets() +{ + delete s_availableCharsets; + s_availableCharsets = 0; +} + } // END OF FILE diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.h --- a/webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/StreamingTextCodecSymbian.h Fri Jul 03 15:54:40 2009 +0100 @@ -35,6 +35,8 @@ virtual String decode(const char*, size_t length, bool flush = false); virtual CString encode(const UChar*, size_t length, bool allowEntities = false); + + static void deleteStatAvailCharsets(); private: bool initializeConverter(); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/TextBreakIteratorSymbian.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/TextBreakIteratorSymbian.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/TextBreakIteratorSymbian.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -165,44 +165,55 @@ return -1; } +static WordBreakIteratorSymbian *wordIterator = 0; +static CharBreakIteratorSymbian *charIterator = 0; +static LineBreakIteratorSymbian *lineIterator = 0; +struct cleanupIterators { + ~cleanupIterators() { + delete wordIterator; + wordIterator = NULL; + delete charIterator; + charIterator = NULL; + delete lineIterator; + lineIterator = NULL; + } +}; +static cleanupIterators deleteBreakIterator; TextBreakIterator* wordBreakIterator(const UChar* string, int length) { - static WordBreakIteratorSymbian *iterator = 0; - if (!iterator) - iterator = new WordBreakIteratorSymbian; + if (!wordIterator) + wordIterator = new WordBreakIteratorSymbian; - iterator->string = string; - iterator->length = length; - iterator->currentPos = 0; + wordIterator->string = string; + wordIterator->length = length; + wordIterator->currentPos = 0; - return iterator; + return wordIterator; } TextBreakIterator* characterBreakIterator(const UChar* string, int length) { - static CharBreakIteratorSymbian *iterator = 0; - if (!iterator) - iterator = new CharBreakIteratorSymbian; + if (!charIterator) + charIterator = new CharBreakIteratorSymbian; - iterator->string = string; - iterator->length = length; - iterator->currentPos = 0; + charIterator->string = string; + charIterator->length = length; + charIterator->currentPos = 0; - return iterator; + return charIterator; } TextBreakIterator* lineBreakIterator(const UChar* string, int length) { - static LineBreakIteratorSymbian *iterator = 0; - if (!iterator) - iterator = new LineBreakIteratorSymbian; + if (!lineIterator) + lineIterator = new LineBreakIteratorSymbian; - iterator->string = string; - iterator->length = length; - iterator->currentPos = 0; + lineIterator->string = string; + lineIterator->length = length; + lineIterator->currentPos = 0; - return iterator; + return lineIterator; } TextBreakIterator* sentenceBreakIterator(const UChar*, int) @@ -244,3 +255,5 @@ } + + diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp --- a/webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/platform/symbian/bitmap/MaskedBitmap.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -644,6 +644,7 @@ return iScaledBitmap; delete iScaledBitmap; + iScaledBitmap = NULL; iScaledBitmap = CMaskedBitmap::NewL(); CFbsBitmap& bmp = iScaledBitmap->BitmapModifyable(); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/rendering/RenderBox.cpp --- a/webengine/osswebengine/WebCore/rendering/RenderBox.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/rendering/RenderBox.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -54,6 +54,17 @@ typedef WTF::HashMap OverrideSizeMap; static OverrideSizeMap* gOverrideSizeMap = 0; +struct cleanOverridSizeMap { + ~cleanOverridSizeMap() { + if( gOverrideSizeMap ) { + gOverrideSizeMap->clear(); + delete gOverrideSizeMap; + gOverrideSizeMap = 0; + } + } +}; +struct cleanOverridSizeMap cleanOSizeMap; + RenderBox::RenderBox(Node* node) : RenderObject(node) , m_width(0) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/rendering/RenderStyle.cpp --- a/webengine/osswebengine/WebCore/rendering/RenderStyle.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/rendering/RenderStyle.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -19,7 +19,6 @@ * */ -#include "config.h" #include "RenderStyle.h" #include "CSSStyleSelector.h" @@ -1443,4 +1442,15 @@ return noneList; } +#if PLATFORM(SYMBIAN) +void RenderStyle::deleteDefaultRenderStyle() +{ + //goes to overridden delete operator but calls destructor + delete defaultStyle; + //release cell allocated because overridder delete does not do that. + free(defaultStyle); + defaultStyle = NULL; } +#endif + +} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/rendering/RenderStyle.h --- a/webengine/osswebengine/WebCore/rendering/RenderStyle.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/rendering/RenderStyle.h Fri Jul 03 15:54:40 2009 +0100 @@ -27,6 +27,7 @@ #ifndef RenderStyle_h #define RenderStyle_h +#include "config.h" /* * WARNING: * -------- @@ -1911,9 +1912,11 @@ static bool initialVisuallyOrdered() { return false; } static float initialTextStrokeWidth() { return 0; } static unsigned short initialColumnCount() { return 1; } + #if PLATFORM(SYMBIAN) static const AtomicString& initialWapInputFormat() { return nullAtom; } static bool initialWapInputRequired() { return false; } + static void deleteDefaultRenderStyle(); #endif // Keep these at the end. diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/rendering/RenderWidget.cpp --- a/webengine/osswebengine/WebCore/rendering/RenderWidget.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/rendering/RenderWidget.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -41,12 +41,27 @@ using namespace EventNames; +static HashMap* staticWidgetRendererMap; + static HashMap& widgetRendererMap() { - static HashMap* staticWidgetRendererMap = new HashMap; + if( !staticWidgetRendererMap ) { + staticWidgetRendererMap = new HashMap; + } return *staticWidgetRendererMap; } +struct renderMapCleaner { + ~renderMapCleaner() { + if( staticWidgetRendererMap ) { + staticWidgetRendererMap->clear(); + delete staticWidgetRendererMap; + staticWidgetRendererMap = 0; + } + } +}; +struct renderMapCleaner renderMapClean; + RenderWidget::RenderWidget(Node* node) : RenderReplaced(node) , m_widget(0) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/rendering/RootInlineBox.cpp --- a/webengine/osswebengine/WebCore/rendering/RootInlineBox.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/rendering/RootInlineBox.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -38,6 +38,17 @@ typedef WTF::HashMap EllipsisBoxMap; static EllipsisBoxMap* gEllipsisBoxMap = 0; +struct EllipsisBoxCleanup { + ~EllipsisBoxCleanup() { + if( gEllipsisBoxMap ) { + gEllipsisBoxMap->clear(); + delete gEllipsisBoxMap; + gEllipsisBoxMap = 0; + } + } +}; +struct EllipsisBoxCleanup ellipsisCleaner; + void* RootInlineBox::Overflow::operator new(size_t sz, RenderArena* renderArena) throw() { return renderArena->allocate(sz); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebCore/rendering/bidi.cpp --- a/webengine/osswebengine/WebCore/rendering/bidi.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebCore/rendering/bidi.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -95,6 +95,19 @@ static bool previousLineBrokeCleanly = true; static int numSpaces; +struct cleanupMidpoints { + ~cleanupMidpoints() { + if(smidpoints) + { + smidpoints->clear(); + delete smidpoints; + smidpoints = 0; + } + } +}; +static cleanupMidpoints deleteMidPoints; + + static int getBPMWidth(int childValue, Length cssUnit) { if (!cssUnit.isIntrinsicOrAuto()) diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit.pri --- a/webengine/osswebengine/WebKit.pri Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,64 +0,0 @@ -# Include file to make it easy to include WebKit into Qt projects - - -isEmpty(OUTPUT_DIR) { - CONFIG(release):OUTPUT_DIR=$$PWD/WebKitBuild/Release - CONFIG(debug):OUTPUT_DIR=$$PWD/WebKitBuild/Debug -} - -!gtk-port:CONFIG += qt-port -qt-port:DEFINES += BUILDING_QT__=1 -qt-port:!building-libs { - QMAKE_LIBDIR = $$OUTPUT_DIR/lib $$QMAKE_LIBDIR - LIBS += -lQtWebKit -} -gtk-port:CONFIG += link_pkgconfig -gtk-port:PKGCONFIG += cairo cairo-ft gdk-2.0 gtk+-2.0 libcurl -gtk-port:DEFINES += BUILDING_GTK__=1 BUILDING_CAIRO__ -gtk-port:LIBS += -L$$OUTPUT_DIR/lib -lWebKitGtk $$system(icu-config --ldflags) -ljpeg -lpng -gtk-port:QMAKE_CXXFLAGS += $$system(icu-config --cppflags) - -DEFINES += USE_SYSTEM_MALLOC -CONFIG(release) { - DEFINES += NDEBUG -} - -BASE_DIR = $$PWD -qt-port:INCLUDEPATH += \ - $$PWD/WebKit/qt/Api -gtk-port:INCLUDEPATH += \ - $$BASE_DIR/WebCore/platform/gtk \ - $$BASE_DIR/WebCore/platform/network/curl \ - $$BASE_DIR/WebCore/platform/graphics/cairo \ - $$BASE_DIR/WebCore/loader/gtk \ - $$BASE_DIR/WebCore/page/gtk \ - $$BASE_DIR/WebKit/gtk/Api \ - $$BASE_DIR/WebKit/gtk/WebCoreSupport -INCLUDEPATH += \ - $$BASE_DIR/JavaScriptCore/ \ - $$BASE_DIR/JavaScriptCore/kjs \ - $$BASE_DIR/JavaScriptCore/bindings \ - $$BASE_DIR/JavaScriptCore/bindings/c \ - $$BASE_DIR/JavaScriptCore/wtf \ - $$BASE_DIR/JavaScriptCore/ForwardingHeaders \ - $$BASE_DIR/WebCore \ - $$BASE_DIR/WebCore/ForwardingHeaders \ - $$BASE_DIR/WebCore/platform \ - $$BASE_DIR/WebCore/platform/network \ - $$BASE_DIR/WebCore/platform/graphics \ - $$BASE_DIR/WebCore/loader \ - $$BASE_DIR/WebCore/page \ - $$BASE_DIR/WebCore/css \ - $$BASE_DIR/WebCore/dom \ - $$BASE_DIR/WebCore/bridge \ - $$BASE_DIR/WebCore/editing \ - $$BASE_DIR/WebCore/rendering \ - $$BASE_DIR/WebCore/history \ - $$BASE_DIR/WebCore/xml \ - $$BASE_DIR/WebCore/html - - -macx { - INCLUDEPATH += /usr/include/libxml2 - LIBS += -lxml2 -lxslt -} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit.pro --- a/webengine/osswebengine/WebKit.pro Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,17 +0,0 @@ -TEMPLATE = subdirs -CONFIG += ordered -!gtk-port:CONFIG += qt-port -qt-port:!win32-*:SUBDIRS += WebKit/qt/Plugins -SUBDIRS += \ - JavaScriptCore/pcre/dftables.pro \ - WebCore \ - JavaScriptCore/kjs/testkjs.pro - -qt-port { - SUBDIRS += WebKit/qt/QtLauncher - - !win32-*: SUBDIRS += WebKitTools/DumpRenderTree/qt/DumpRenderTree.pro -} - -gtk-port:SUBDIRS += \ - WebKitTools/GtkLauncher diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/gtk/Api/headers.pri --- a/webengine/osswebengine/WebKit/gtk/Api/headers.pri Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,7 +0,0 @@ -WEBKIT_API_HEADERS = $$PWD/webkitgtkdefines.h \ - $$PWD/webkitgtkframe.h \ - $$PWD/webkitgtkframedata.h \ - $$PWD/webkitgtkglobal.h \ - $$PWD/webkitgtknetworkrequest.h \ - $$PWD/webkitgtkpage.h \ - $$PWD/webkitgtksettings.h diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/qt/Api/headers.pri --- a/webengine/osswebengine/WebKit/qt/Api/headers.pri Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -WEBKIT_API_HEADERS = $$PWD/qcookiejar.h \ - $$PWD/qwebframe.h \ - $$PWD/qwebkitglobal.h \ - $$PWD/qwebnetworkinterface.h \ - $$PWD/qwebobjectplugin.h \ - $$PWD/qwebobjectpluginconnector.h \ - $$PWD/qwebpage.h \ - $$PWD/qwebpagehistory.h \ - $$PWD/qwebsettings.h \ - $$PWD/qwebhistoryinterface.h diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/qt/Plugins/Plugins.pro --- a/webengine/osswebengine/WebKit/qt/Plugins/Plugins.pro Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -TEMPLATE = lib -TARGET = qtwebico -CONFIG += static plugin -HEADERS += ICOHandler.h -SOURCES += ICOHandler.cpp - -include(../../WebKit.pri) - -contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols -unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/qt/QtLauncher/QtLauncher.pro --- a/webengine/osswebengine/WebKit/qt/QtLauncher/QtLauncher.pro Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,9 +0,0 @@ -TEMPLATE = app -SOURCES += main.cpp -CONFIG -= app_bundle -DESTDIR = ../../../bin - -include(../../../WebKit.pri) - -macx:QT+=xml network -QMAKE_RPATHDIR = $$OUTPUT_DIR/lib $$QMAKE_RPATHDIR diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/group/JavaScriptCore/JavaScriptCore.mmp --- a/webengine/osswebengine/WebKit/s60/group/JavaScriptCore/JavaScriptCore.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/group/JavaScriptCore/JavaScriptCore.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -23,7 +23,11 @@ #include #include -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif CAPABILITY CAP_GENERAL_DLL VENDORID VID_DEFAULT diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/group/webcore/platform/platform.mmp --- a/webengine/osswebengine/WebKit/s60/group/webcore/platform/platform.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/group/webcore/platform/platform.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -28,7 +28,11 @@ START RESOURCE ../../../data/webkit.rss HEADER TARGETPATH RESOURCE_FILES_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END START BITMAP webkit.mbm diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp --- a/webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/group/webkit/webkit.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -51,6 +51,7 @@ SOURCE WebScrollingDecelerator.cpp SOURCE WebScrollingDeceleratorGH.cpp SOURCE WebScrollbarDrawer.cpp +SOURCE WebSprite.cpp SOURCEPATH ../../FormControls SOURCE WebFormFill.cpp diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp --- a/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -23,6 +23,8 @@ #include "WebUtil.h" #include "Document.h" #include "Frame.h" +#include "HitTestRequest.h" +#include "HitTestResult.h" #include "HTMLNames.h" #include "FrameTree.h" #include "BrCtlDefs.h" @@ -38,6 +40,7 @@ #include "FocusController.h" #include "RenderListBox.h" #include "HTMLSelectElement.h" +#include "HTMLInputElement.h" using namespace WebCore; using namespace HTMLNames; @@ -75,6 +78,28 @@ } } +void WebTabbedNavigation::updateCursorPosition(const TPoint& pos) +{ + m_focusPosition = pos; + WebFrame* frame = StaticObjectsContainer::instance()->webCursor()->getFrameAtPoint(pos); + TPoint point(frame->frameView()->viewCoordsInFrameCoords(pos)); + + Element* node = core(frame)->document()->elementFromPoint(point.iX, point.iY); + if (node->isFocusable() && !node->hasTagName(iframeTag) && !node->hasTagName(frameTag)) + m_webView->page()->focusController()->setFocusedNode(node, core(frame)); + else + m_webView->page()->focusController()->setFocusedNode(NULL, core(frame)); + m_selectedElementRect.SetRect(pos.iX, pos.iY, pos.iX + 1, pos.iY + 1); +} + +void WebTabbedNavigation::focusedElementChanged(Element* element) +{ + m_initializedForPage = true; + m_firstNavigationOnPage = false; + m_node = element; + m_selectedElementRect = element->getRect().Rect(); + m_focusPosition = StaticObjectsContainer::instance()->webCursor()->position(); +} bool WebTabbedNavigation::navigate(int horizontalDir, int verticalDir) { @@ -181,6 +206,16 @@ m_focusPosition = selectedPoint; selectedRect = newRect; m_selectedElementRect = selectedRect; + + int x, y; + selectedNode->renderer()->absolutePosition(x, y); + Vector rects; + selectedNode->renderer()->absoluteRects(rects, x, y); + WebFrameView* fv = kit(selectedNode->document()->frame())->frameView(); + if (rects.size() > 0) { + selectedPoint = TPoint(rects[0].x(), rects[0].y()); + selectedPoint = fv->frameCoordsInViewCoords(selectedPoint); + } StaticObjectsContainer::instance()->webCursor()->updatePositionAndElemType(selectedPoint); // special handling for Select-Multi if (m_webView->focusedElementType() == TBrCtlDefs::EElementSelectMultiBox) { @@ -218,6 +253,16 @@ m_webView->mainFrame()->frameView()->scrollTo(contentPos + TPoint(horizontalDir * m_webView->Rect().Width() / KScrollWhenNotFound, verticalDir * m_webView->Rect().Height() / KScrollWhenNotFound)); TPoint diff(m_webView->mainFrame()->frameView()->contentPos() - contentPos); if (diff.iX || diff.iY) { + Frame* focusedFrame = m_webView->page()->focusController()->focusedFrame(); + if (focusedFrame == NULL) focusedFrame = m_webView->page()->mainFrame(); + Node* focusNode = focusedFrame->document()->focusedNode(); + if (focusNode) { + TRect selectedRect = focusNode->getRect().Rect(); + selectedRect = TRect(kit(focusedFrame)->frameView()->frameCoordsInViewCoords(selectedRect.iTl), + kit(focusedFrame)->frameView()->frameCoordsInViewCoords(selectedRect.iBr)); + if (!selectedRect.Intersects(kit(focusedFrame)->frameView()->visibleRect())) + m_webView->page()->focusController()->setFocusedNode(NULL,0); + } m_selectedElementRect.Move(diff); m_focusPosition = oldFocusPoint + diff; m_node = NULL; @@ -289,6 +334,7 @@ int WebTabbedNavigation::distanceFunction(int horizontalDir, int verticalDir, TRect& rect, TPoint& point) { + // Based on http://www.w3.org/TR/WICD/#focus-navigation TReal x, y, euclidianDistance; int sameAxisDist, otherAxisDist, overlap; @@ -306,6 +352,10 @@ int top = max(m_selectedElementRect.iTl.iY, rect.iTl.iY); int bottom = std::min(m_selectedElementRect.iBr.iY, rect.iBr.iY); overlap = bottom - top; + if (overlap == rect.Height()) { + euclidianDistance = (euclidianDistance * rect.Height()) / m_selectedElementRect.Height(); + otherAxisDist = 0; + } } } else { // vertical @@ -316,10 +366,14 @@ int top = max(m_selectedElementRect.iTl.iX, rect.iTl.iX); int bottom = std::min(m_selectedElementRect.iBr.iX, rect.iBr.iX); overlap = bottom - top; + if (overlap == rect.Width()) { + euclidianDistance = (euclidianDistance * rect.Width()) / m_selectedElementRect.Width(); + otherAxisDist = 0; + } } } long ed, o; Math::Int(ed, euclidianDistance); Math::Int(o, sqrt(overlap)); - return ed + sameAxisDist + 2 * otherAxisDist + o; + return ed + sameAxisDist + 2 * otherAxisDist - o; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.h --- a/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.h Fri Jul 03 15:54:40 2009 +0100 @@ -21,6 +21,10 @@ #include class WebView; +namespace WebCore { + class Element; + class Node; +}; class WebTabbedNavigation { public: @@ -30,6 +34,8 @@ bool navigate(int horizontalDir, int verticalDir); void clear(); void initializeForPage(); + void updateCursorPosition(const TPoint& pos); + void focusedElementChanged(WebCore::Element* element); private: bool selectNode(int horizontalDir, int verticalDir, TRect& selectedRect, TRect& newNodeRect, TPoint& selectedPoint, TPoint& newFocusPoint); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/misc/WebUtil.cpp --- a/webengine/osswebengine/WebKit/s60/misc/WebUtil.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/misc/WebUtil.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -256,8 +256,6 @@ if (!f || !f->document() || !f->document()->renderer()) return imglist; - CleanupStack::PushL(imglist); - Document* doc = f->document(); FrameView* v = doc->view(); IntRect r1 = wf_.frameView()->topView()->mainFrame()->frameView()->rect(); @@ -308,13 +306,12 @@ } if (!imgexists) - imglist->AppendL(tImg); + TRAP_IGNORE( imglist->AppendL(tImg) ); } } } } } - CleanupStack::Pop(imglist); return imglist; } @@ -326,7 +323,6 @@ if (!f || !f->document()) return linkList; - CleanupStack::PushL(linkList); for (Node *n = f->document(); n; n = n->traverseNextNode()) { if (n->isElementNode() && n->hasTagName(linkTag)) { @@ -339,11 +335,10 @@ String title = e->getAttribute(titleAttr); TBrCtlSubscribeTo item(title.des(), href.des(), 0); - linkList->AppendL(item); + TRAP_IGNORE( linkList->AppendL(item) ); } } } - CleanupStack::Pop(linkList); return linkList; } @@ -467,27 +462,37 @@ void addOneMenuItemAfter(CEikMenuPane& menuPane, unsigned int after, int command, int resourceId, unsigned int commandBase) { CEikMenuPaneItem::SData item; - HBufC* buf = StringLoader::LoadLC(resourceId); + HBufC* buf = NULL; + TRAP_IGNORE( buf = StringLoader::LoadL(resourceId)); + if(buf == NULL) + { + return; + } item.iText.Copy(*buf); - CleanupStack::PopAndDestroy(); // buf + delete buf; buf = NULL; item.iCommandId = command + commandBase; item.iFlags = 0; item.iCascadeId = 0; - menuPane.AddMenuItemL(item, after); + TRAP_IGNORE( menuPane.AddMenuItemL(item, after) ); } void insertOneMenuItem(CEikMenuPane& menuPane, int command, int resourceId, unsigned int commandBase) { CEikMenuPaneItem::SData item; - HBufC* buf = StringLoader::LoadLC(resourceId); + HBufC* buf = NULL; + TRAP_IGNORE( buf = StringLoader::LoadL(resourceId)); + if(buf == NULL) + { + return; + } item.iText.Copy(*buf); - CleanupStack::PopAndDestroy(); // buf + delete buf; buf = NULL; item.iCommandId = command + commandBase; item.iFlags = 0; item.iCascadeId = 0; - menuPane.InsertMenuItemL(item, 0); + TRAP_IGNORE( menuPane.InsertMenuItemL(item, 0) ); } int textMultiplier(int fontLevel, int originalSize) @@ -601,7 +606,7 @@ url.append(telbook); url.append(numberNameSeparator); url.append(email); - handleSpecialSchemeL(url, webView->brCtl()); + TRAP_IGNORE( handleSpecialSchemeL(url, webView->brCtl()) ); } } } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/NpnImplementation.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -301,6 +301,7 @@ // NPError NpnGetValue(NPP aInstance, NPNVariable aVariable, void *aRetValue) { + TInt err = NPERR_NO_ERROR; switch (aVariable) { @@ -354,9 +355,11 @@ if (windowObject) { void **v = (void **)aRetValue; *v = windowObject; - return NPERR_NO_ERROR; } - return NPERR_GENERIC_ERROR; + else { + err = NPERR_GENERIC_ERROR; + } + break; } case NPNVDOMWindow: case NPNVxDisplay: // Unix only: Returns the current Display @@ -377,11 +380,14 @@ default: + { *((TBool*) aRetValue) = EFalse; + err = NPERR_INVALID_PARAM; + } break; } // end of switch - return NPERR_NO_ERROR; + return err; } @@ -462,7 +468,7 @@ { NPBool* isFullScreen = (NPBool*)aSetValue; PluginWin* pluginWin = (PluginWin*)aInstance->ndata; - pluginWin->TogleScreenMode(*isFullScreen); + pluginWin->ToggleScreenMode(*isFullScreen); break; } case NPPVPluginZoom: diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -533,43 +533,50 @@ // ----------------------------------------------------------------------------- // TInt PluginHandler::findPlugin(const TDesC& mimeType) -{ + { LOAD_PLUGINS - - HBufC* newMimeType = NULL; - _LIT(KSeparator, "*"); - TInt pluginIndex; + + TInt bufSize( KMimeTypeLength > mimeType.Length() ? KMimeTypeLength : mimeType.Length() ); + HBufC* newMimeType = HBufC::New(bufSize); + if( newMimeType == NULL ) + { + return KErrNoMemory; + } + _LIT(KSeparator, "*"); + TInt pluginIndex; TInt mimeIndex; - if (mimeType.FindF(KMimeTypeAudio) != KErrNotFound){ - newMimeType = HBufC::NewLC(KMimeTypeLength); + if( mimeType.FindF(KMimeTypeAudio) != KErrNotFound ) + { newMimeType->Des().Copy(KMimeTypeAudio); - newMimeType->Des().Append(KSeparator); - } - else if (mimeType.FindF(KMimeTypeVideo) != KErrNotFound){ - newMimeType = HBufC::NewLC(KMimeTypeLength); + newMimeType->Des().Append(KSeparator); + } + else if ( mimeType.FindF(KMimeTypeVideo) != KErrNotFound ) + { newMimeType->Des().Copy(KMimeTypeVideo); - newMimeType->Des().Append(KSeparator); - } - else{ - newMimeType = HBufC::NewLC(mimeType.Length()); - newMimeType = mimeType.AllocL(); - } - CleanupStack::Pop(); //pop newMimeType - - for (pluginIndex = 0; pluginIndex < m_pluginInfoArray.Count(); pluginIndex++) { + newMimeType->Des().Append(KSeparator); + } + else + { + newMimeType->Des().Copy(mimeType); + } + + for (pluginIndex = 0; pluginIndex < m_pluginInfoArray.Count(); pluginIndex++) + { for (mimeIndex = 0; mimeIndex < m_pluginInfoArray[pluginIndex]->m_mimeTypes.Count(); - mimeIndex++) { - if (!m_pluginInfoArray[pluginIndex]->m_mimeTypes[mimeIndex]->CompareF(*newMimeType)) { + mimeIndex++) + { + if (!m_pluginInfoArray[pluginIndex]->m_mimeTypes[mimeIndex]->CompareF(*newMimeType)) + { delete newMimeType; - return m_pluginInfoArray[pluginIndex]->m_handle; + return m_pluginInfoArray[pluginIndex]->m_handle; + } } } + delete newMimeType; + return KErrNotFound; } - delete newMimeType; - return KErrNotFound; -} // ----------------------------------------------------------------------------- // PluginHandler::findPluginByExtension diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/PluginLoader.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginLoader.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginLoader.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -423,20 +423,20 @@ // Method to return transaction Id, using the request url // ----------------------------------------------------------------------------- TInt CPluginLoader::GetTransactionId( const TDesC8& aRequestUrl ) + { + for (TInt i = 0;i < iPluginLoadDataArray->Count(); i++) { - for (TInt i = 0;i < iPluginLoadDataArray->Count(); i++) + CPluginLoadData& loadData = iPluginLoadDataArray->At(i); + if (loadData.RequestUrl()) { - CPluginLoadData& loadData = iPluginLoadDataArray->At(i); - if (loadData.RequestUrlL()) - { - if (aRequestUrl.Compare(*loadData.RequestUrlL()) == 0) - { - return loadData.TransactionId(); - } - } + if (aRequestUrl.Compare(*loadData.RequestUrl()) == 0) + { + return loadData.TransactionId(); + } } + } return KErrNotFound; - } + } // ----------------------------------------------------------------------------- // CPluginLoader::GetCompleteError @@ -553,17 +553,16 @@ TBool CPluginLoader::SaveResponseHeader( TInt aTrId, CUrlResponseHeaderInfo& aResponseHeader ) { - for (TInt i = 0;i < iPluginLoadDataArray->Count(); i++) - { - CPluginLoadData& loadData = iPluginLoadDataArray->At(i); - if (loadData.TransactionId() == aTrId) + for (TInt i = 0;i < iPluginLoadDataArray->Count(); i++) { - loadData.SetRequestUrlL(aResponseHeader.RequestUrl()); - return ETrue; + CPluginLoadData& loadData = iPluginLoadDataArray->At(i); + if (loadData.TransactionId() == aTrId) + { + TRAPD( error, loadData.SetRequestUrlL(aResponseHeader.RequestUrl()) ); + return error == KErrNone; + } } - } - - return EFalse; + return EFalse; } // ----------------------------------------------------------------------------- diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/PluginLoader.h --- a/webengine/osswebengine/WebKit/s60/plugins/PluginLoader.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginLoader.h Fri Jul 03 15:54:40 2009 +0100 @@ -329,12 +329,12 @@ void SetRequestUrlL(const TDesC8& aRequestUrl); /** - * RequestUrlL + * RequestUrl * Return the request url * @since 3.1 * @return void */ - HBufC8* RequestUrlL() { return iRequestUrl; } + HBufC8* RequestUrl() { return iRequestUrl; } /** * SetURLLoader diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/PluginPlayer.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginPlayer.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginPlayer.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -130,13 +130,12 @@ DrawNow(); // not sure why we need this for bavp m_plugin->SetRect( TRect( TPoint(x,y), m_orgrect.Size() ) ); - m_plugin->setPluginFocusL(ETrue); - + TRAP_IGNORE( m_plugin->setPluginFocusL(ETrue) ); } void PluginPlayer::stop() { - m_plugin->setPluginFocusL(EFalse); + TRAP_IGNORE( m_plugin->setPluginFocusL(EFalse) ); m_plugin->SetParent( m_orgparent ); m_plugin->SetRect( TRect( m_orgrect.iTl, m_orgrect.Size() ) ); m_plugin->makeVisible( EFalse ); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -306,24 +306,28 @@ // ---------------------------------------------------------------------------- void PluginSkin::pluginFocusChanged(TBool focus) { - //Trigger Webview to notify all plugins about current view set to foreground/background for playing/pausing swf files (resp.) - control(m_frame)->webView()->notifyPlugins(focus); if (control(m_frame)->webView()->pageFullScreenHandler() && !control(m_frame)->webView()->pageFullScreenHandler()->isFullScreenMode()) return; if (focus && !m_flashContent) { + TRAP_IGNORE( control(m_frame)->webView()->LeaveFullscreenBrowsingL(); - control(m_frame)->webView()->notifyFullscreenModeChangeL( EFalse ); + control(m_frame)->webView()->notifyFullscreenModeChangeL( EFalse ); + ); } else if (focus) { + TRAP_IGNORE( control(m_frame)->webView()->pageFullScreenHandler()->showEscBtnL(); + ); } else { + TRAP_IGNORE( control(m_frame)->webView()->pageFullScreenHandler()->hideEscBtnL(); + ); } } @@ -460,20 +464,22 @@ // Set right soft key m_frame->frameView()->topView()->brCtl()->updateDefaultSoftkeys(); pluginHandler->setActivePlugin(this); + pluginHandler->setPluginToActivate(NULL); } } else { m_active = ETrue; pluginHandler->setActivePlugin(this); - m_frame->frameView()->topView()->openPluginPlayer(m_pluginwin); + TRAP_IGNORE( m_frame->frameView()->topView()->openPluginPlayerL(m_pluginwin)); consumed = ETrue; m_active = EFalse; pluginHandler->setActivePlugin(NULL); } } else { if ( m_pluginSupported ) { - NetscapePlugInStreamLoaderClient* pluginloader = NetscapePlugInStreamLoaderClient::NewL(*m_url, this, core(m_frame)); + NetscapePlugInStreamLoaderClient* pluginloader = NULL; + TRAP_IGNORE( pluginloader = NetscapePlugInStreamLoaderClient::NewL(*m_url, this, core(m_frame))); if (pluginloader) { pluginloader->start(); } @@ -619,18 +625,6 @@ } -// ----------------------------------------------------------------------------- -// PluginSkin::ViewFocusChanged -// From MViewFocusObserver -// Callback from the view when the focus changes -// ----------------------------------------------------------------------------- -void PluginSkin::viewFocusChanged(TBool focused) - { - if (m_pluginwin) - { - m_pluginwin->viewFocusChanged(focused); - } - } // ----------------------------------------------------------------------------- // PluginSkin::PositionChanged @@ -997,15 +991,6 @@ return apId; } -void PluginSkin::handlePluginForeground(TBool focus) -{ - // Send Plugin Visible/Invisible event - if (m_pluginwin) - { - m_pluginwin->NotifyPluginVisible(focus); - } -} - TPluginLoadMode PluginSkin::GetLoadMode(const TDesC* aWindowType) { diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h --- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h Fri Jul 03 15:54:40 2009 +0100 @@ -379,8 +379,6 @@ void playPluginContent(const TDesC8& aRequestUrl) {}; - void viewFocusChanged(TBool focused); - void positionChanged(); void stopPluginContent(const TDesC8& aRequestUrl) {}; @@ -430,7 +428,6 @@ * @return Bool. */ TBool RunScript(); - void handlePluginForeground(TBool focus); private: // private member data void setPluginWinClipedRect(); TRect frameVisibleRect() const; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -227,8 +227,6 @@ void PluginWin::processEventL( TPluginEventType eventType, TBool& consumed ) { - CBrCtl* brCtl = control(m_pluginskin->frame()); - WebView* view = brCtl->webView(); consumed = EFalse; switch ( eventType ) { @@ -239,7 +237,6 @@ m_notifier->NotifyL( MPluginNotifier::EPluginActivated, (void*) &pt ); } consumed = ETrue; - view->setPluginActivated(true); //Setting pluginactivated flag in webview setPluginFocusL( ETrue ); break; @@ -249,7 +246,6 @@ m_notifier->NotifyL( MPluginNotifier::EPluginDeactivated, (void*) 0 ); } consumed = ETrue; - view->setPluginActivated(false); setPluginFocusL( EFalse ); break; @@ -420,42 +416,6 @@ { } -// ----------------------------------------------------------------------------- -// PluginWin::ViewFocusChanged -// -// Invoked by CCoeControl to WebKitView to PluginWin when the Browser focus -// changes. This method notifies all plugins of thier current focus state. -// NOTES: -// iBrowserBackground means that the browser app is not top application, -// such as when bookmarks, idle screen, or another app/view is in foreground. -// aFocused is true if browser has focus and false if browser is out of focus -// and a plugin has taken focus. -// ----------------------------------------------------------------------------- -void PluginWin::viewFocusChanged( TBool focused ) -{ -if (m_notifier) - { - if (focused) - { - // The browser brings back the focus, and so are plugins. - HandleGainingForeground(); - } - else - { - // The browser doesn't have focus and this plugin focus state is... - if ( m_pluginfocus ) - { - // This plugin is selected to be activate, so the focus is on this plugin now. - HandleGainingForeground(); - } - else - { - // The focus on the plugin is cancelled. This happens when deactivate the selected plugin - HandleLosingForeground(); - } - } - } -} // ----------------------------------------------------------------------------- // PluginWin::SetPluginFocusL @@ -575,18 +535,6 @@ } } -// ----------------------------------------------------------------------------- -// PluginWin::FocusChanged -// -// virtual function from CCoeControl for plugin win -// ----------------------------------------------------------------------------- -// -void PluginWin::FocusChanged(TDrawNow aDrawNow) -{ - if(m_pluginfocus) { - m_pluginskin->pluginFocusChanged(IsFocused()); - } -} // ----------------------------------------------------------------------------- // @@ -725,11 +673,13 @@ } } -void PluginWin::TogleScreenMode(bool aFullScreen) +void PluginWin::ToggleScreenMode(bool aFullScreen) { m_fullscreen = aFullScreen; CBrCtl* brCtl = control(m_pluginskin->frame()); - + WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); + + cursor->cursorUpdate(!aFullScreen && !AknLayoutUtils::PenEnabled()); StaticObjectsContainer::instance()->setPluginFullscreen(aFullScreen); brCtl->reportStateChanged(TBrCtlDefs::EStatePluginFullScreen, m_fullscreen); } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/plugins/PluginWin.h --- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.h Fri Jul 03 15:54:40 2009 +0100 @@ -106,13 +106,6 @@ */ TInt refreshPlugin(CFbsBitGc& bitmapContext); - /** - * ViewFocusChanged - invoked when WebKitView gains or loses focus - * - * @since 3.1 - * @return void - */ - void viewFocusChanged(TBool focused); /** * ResizePluginRect @@ -288,13 +281,6 @@ */ void Draw(const TRect& rect) const; - /** - * FocusChanged - * From CCoeControl - * - */ - void FocusChanged(TDrawNow aDrawNow); - public: //From MCoeForegroundObserver /** @@ -488,7 +474,7 @@ HBufC8* PluginDataUrl(); - void TogleScreenMode(bool aFullScreen); + void ToggleScreenMode(bool aFullScreen); void PlayPausePluginL (); void HandlePointerEventFromPluginL(const TPointerEvent& aEvent); TBool HandleGesture(const RT_GestureHelper::TGestureEvent& aEvent); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.cpp --- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -54,6 +54,11 @@ m_visibility = false; } +void WebChromeClient::chromeDestroyed() +{ + delete this; +} + FloatRect WebChromeClient::windowRect() { notImplemented(); return FloatRect(); } FloatRect WebChromeClient::pageRect() { notImplemented(); return FloatRect(); } float WebChromeClient::scaleFactor() { notImplemented(); return 1.0; } @@ -72,7 +77,9 @@ } if (name) { bool userGesture = frame->scriptProxy()->interpreter()->wasRunByUserGesture(); + TRAP_IGNORE( newBrCtl = m_webView->brCtl()->getWindowL(*name, userGesture); + ); delete name; if (newBrCtl) { page = newBrCtl->webView()->page(); @@ -136,6 +143,14 @@ void WebChromeClient::addMessageToConsole(const WebCore::String& message, MessageLevel messageLevel, unsigned int line, const WebCore::String& sourceURL) { + TRAP_IGNORE( + addMessageToConsoleL(message, messageLevel, line, sourceURL); + ); +} + +void WebChromeClient::addMessageToConsoleL(const WebCore::String& message, MessageLevel messageLevel, unsigned int line, const WebCore::String& sourceURL) +{ + RFs fsSession; User::LeaveIfError( fsSession.Connect()); @@ -337,4 +352,8 @@ void WebChromeClient::addToDirtyRegion(const IntRect&){} void WebChromeClient::scrollBackingStore(int dx, int dy, const IntRect& scrollViewRect, const IntRect& clipRect){} +void WebChromeClient::focusedElementChanged(Element* element) +{ + m_webView->focusedElementChanged(element); +} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.h --- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebChromeClient.h Fri Jul 03 15:54:40 2009 +0100 @@ -38,7 +38,7 @@ WebView *webView() { return m_webView; } virtual ~WebChromeClient() { } - virtual void chromeDestroyed() {} + virtual void chromeDestroyed(); virtual void setWindowRect(const WebCore::FloatRect&) {} virtual WebCore::FloatRect windowRect(); @@ -106,6 +106,11 @@ bool elementVisibilityChanged() { return m_visibility; } + virtual void focusedElementChanged(WebCore::Element*); + +protected: // new functions + void addMessageToConsoleL(const WebCore::String& aMessage, WebCore::MessageLevel aMessageLevel, unsigned int aLine, const WebCore::String& aSourceURL); + private: WebView *m_webView; void GetDateAndTimeL(TDes& date, TDes& time) const; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webcoresupport/WebContextMenuClient.cpp --- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebContextMenuClient.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebContextMenuClient.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -23,7 +23,11 @@ using namespace WebCore; -void WebContextMenuClient::contextMenuDestroyed() { notImplemented(); } +void WebContextMenuClient::contextMenuDestroyed() +{ + delete this; +} + PlatformMenuDescription WebContextMenuClient::getCustomMenuFromDefaultItems(ContextMenu*) { notImplemented(); return 0; } void WebContextMenuClient::contextMenuItemSelected(ContextMenuItem*, const ContextMenu*) { notImplemented(); } void WebContextMenuClient::downloadURL(const KURL& url) { notImplemented(); } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webcoresupport/WebDragClient.cpp --- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebDragClient.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebDragClient.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -31,5 +31,8 @@ void WebDragClient::startDrag(DragImageRef dragImage, const IntPoint& dragImageOrigin, const IntPoint& eventPos, Clipboard*, Frame*, bool linkDrag) { notImplemented(); } DragImageRef WebDragClient::createDragImageForLink(KURL&, const String& label, Frame*) { notImplemented(); return 0; } -void WebDragClient::dragControllerDestroyed() { notImplemented(); } +void WebDragClient::dragControllerDestroyed() +{ + delete this; +} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp --- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -287,7 +287,7 @@ //----------------------------------------------------------------------------- void WebEditorClient::pageDestroyed() { - notImplemented(); + delete this; } //----------------------------------------------------------------------------- diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp --- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebFrameLoaderClient.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -140,8 +140,11 @@ if (isWMLContent(m_response.mimeType())) { // call the WmlDispatcher Headers routine to set the WML flag if (! m_WmlContentListener) { - m_WmlContentListener = CWmlDispatcher::NewL(brctl(m_webFrame), core(m_webFrame) ); - brctl(m_webFrame)->setWmlDispatcher(m_WmlContentListener); + TRAPD(err, m_WmlContentListener = CWmlDispatcher::NewL(brctl(m_webFrame), core(m_webFrame) )); + if((err == KErrNone) && (m_WmlContentListener != NULL)) + { + brctl(m_webFrame)->setWmlDispatcher(m_WmlContentListener); + } } TRAPD(err,m_WmlContentListener->HeadersL( 0, m_response )); } @@ -160,7 +163,7 @@ } if (!core(m_webFrame)->ownerElement()) { - brctl(m_webFrame)->settings()->setTabbedNavigation(!(brctl(m_webFrame)->capabilities()&TBrCtlDefs::ECapabilityCursorNavigation)); + brctl(m_webFrame)->settings()->setNavigationType((brctl(m_webFrame)->capabilities()&TBrCtlDefs::ECapabilityCursorNavigation) ? SettingsContainer::NavigationTypeCursor : SettingsContainer::NavigationTypeTabbed); StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true); m_webFrame->frameView()->topView()->tabbedNavigation()->clear(); } @@ -270,10 +273,12 @@ [download _setOriginatingURL:originalURL]; */ StaticObjectsContainer::instance()->resourceLoaderDelegate()->download(handle, request, response); + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventNewUrlContentArrived, 0, 0 ); // must send this for progress bar to go away brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventUrlLoadingFinished, 0, 0 ); brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventContentFinished, 0, 0 ); brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventLoadFinished, 0, 0 ); + ); } void WebFrameLoaderClient::assignIdentifierToInitialRequest(unsigned long identifier, DocumentLoader*, const ResourceRequest&) @@ -535,7 +540,9 @@ [webView _didChangeValueForKey:_WebMainFrameIconKey]; */ + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventFaviconAvailable, 0, 0 ); + ); notImplemented(); } @@ -551,7 +558,9 @@ implementations.didStartProvisionalLoadForFrameFunc(frameLoadDelegate, @selector(webView:didStartProvisionalLoadForFrame:), webView, m_webFrame.get()); } */ + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventNewContentStart, 0, 0 ); + ); notImplemented(); } @@ -565,7 +574,9 @@ implementations.didReceiveTitleForFrameFunc(frameLoadDelegate, @selector(webView:didReceiveTitle:forFrame:), webView, title, m_webFrame.get()); } */ + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventTitleAvailable, 0, 0 ); + ); notImplemented(); } @@ -584,7 +595,9 @@ implementations.didCommitLoadForFrameFunc(frameLoadDelegate, @selector(webView:didCommitLoadForFrame:), webView, m_webFrame.get()); } */ + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventTitleAvailable, 0, 0 ); + ); } void WebFrameLoaderClient::dispatchDidFailProvisionalLoad(const ResourceError& error) @@ -604,7 +617,9 @@ m_WmlContentListener->HandleError(0,error.errorCode()); } // + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventLoadError, 0, 0 ); + ); notImplemented(); } @@ -627,7 +642,9 @@ m_WmlContentListener->HandleError(0,error.errorCode()); } // + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventLoadError, 0, 0 ); + ); m_webFrame->frameView()->topView()->pageLoadFinished(); notImplemented(); } @@ -672,7 +689,9 @@ implementations.didFirstLayoutInFrameFunc(frameLoadDelegate, @selector(webView:didFirstLayoutInFrame:), webView, m_webFrame.get()); } */ + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventNewContentDisplayed, 0, 0 ); + ); } Frame* WebFrameLoaderClient::dispatchCreatePage() @@ -834,7 +853,9 @@ void WebFrameLoaderClient::postProgressStartedNotification() { // [[NSNotificationCenter defaultCenter] postNotificationName:WebViewProgressStartedNotification object:getWebView(m_webFrame.get())]; + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventUrlLoadingStart, 0, 0 ); + ); total_bytes = 0; #ifdef PERF_REGRESSION_LOG wkDebug()<<"Load started"<page()->progress()->estimatedProgress(); + TRAP_IGNORE( brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventNewUrlContentArrived, total_bytes / estimatedProgress, 0 ); brctl(m_webFrame)->HandleBrowserLoadEventL(TBrCtlDefs::EEventMoreUrlContentArrived, total_bytes, 0 ); + ); } void WebFrameLoaderClient::postProgressFinishedNotification() @@ -907,7 +930,9 @@ void WebFrameLoaderClient::committedLoad(DocumentLoader* loader, const char* data, int length) { if (brctl(m_webFrame)->wmlMode()) { + TRAP_IGNORE( m_WmlContentListener->ResponseL( data, length ); + ); return; } m_webFrame->bridge()->receivedData(data, length, m_response.textEncodingName()); @@ -1116,7 +1141,9 @@ void WebFrameLoaderClient::frameLoadCompleted() { if (brctl(m_webFrame)->wmlMode()) { + TRAP_IGNORE( m_WmlContentListener->CompleteL( 0, 0 ); + ); return; } /* @@ -1373,8 +1400,9 @@ void WebFrameLoaderClient::windowObjectCleared() const { - // [m_webFrame->_private->bridge windowObjectCleared]; - notImplemented(); + if (m_webFrame && !m_webFrame->parentFrame()) { + m_webFrame->frameView()->topView()->windowObjectCleared(); + } } void WebFrameLoaderClient::didPerformFirstNavigation() const diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webcoresupport/WebInspectorClient.cpp --- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebInspectorClient.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebInspectorClient.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -26,9 +26,8 @@ { /* [[m_windowController.get() webView] close]; +*/ delete this; -*/ - notImplemented(); } Page* WebInspectorClient::createPage() diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp --- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -284,110 +284,6 @@ void CBrCtl::Draw(const TRect& aRect) const { - if (m_webView->isPluginFullscreen()) return; //don't draw if in plugin fullscreen mode - - if (!(m_capabilities & TBrCtlDefs::ECapabilityDisplayScrollBar) - || (getMainScrollbarWidth() == 0) - || AknLayoutUtils::PenEnabled()) { //touch screen scrollbar is drawn - return; //by WebScrollbarDrawer - } - CWindowGc& gc = SystemGc(); - TRect rect(Rect()); - int documentHeight = (m_displayHeight > m_documentHeight) ? m_displayHeight : m_documentHeight; - int documentWidth = (m_displayWidth > m_documentWidth) ? m_displayWidth : m_documentWidth; - gc.SetDrawMode(CGraphicsContext::EDrawModePEN); - if (AknLayoutUtils::LayoutMirrored()) { - // rtl - if (m_hasHorizontalScrollbar) { - TRect vertical(0, 0, KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth); - TRect horizontal(KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth, rect.Width(), rect.Height()); - TRect verticalThumb(0, (m_displayPosY * m_displayHeight) / documentHeight, - KMainScrollbarWidth, (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight); - TRect horizontalThumb(KMainScrollbarWidth + (m_displayPosX * m_displayWidth) / documentWidth, rect.Height() - KMainScrollbarWidth, - KMainScrollbarWidth + (m_displayPosX * m_displayWidth + m_displayWidth * m_displayWidth) / documentWidth, rect.Height()); - TRect corner(0, rect.Height() - KMainScrollbarWidth, KMainScrollbarWidth, rect.Height()); - vertical.Intersection(aRect); - horizontal.Intersection(aRect); - if (!(vertical.IsEmpty() || horizontal.IsEmpty())) { - gc.SetBrushStyle(CGraphicsContext::ESolidBrush); - gc.SetBrushColor(KGray); - gc.SetPenStyle(CGraphicsContext::ESolidPen); - gc.SetPenSize(TSize(1, 1)); - gc.SetPenColor(KBlack); - gc.DrawRect(vertical); - gc.DrawRect(horizontal); - gc.SetBrushColor(KDarkGray); - gc.DrawRect(verticalThumb); - gc.DrawRect(horizontalThumb); - gc.SetBrushColor(KWhite); - gc.SetPenColor(KWhite); - gc.DrawRect(corner); - } - } - else { - TRect vertical(0, 0, KMainScrollbarWidth, rect.Height()); - TRect verticalThumb(0, (m_displayPosY * m_displayHeight) / documentHeight, - KMainScrollbarWidth, (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight); - vertical.Intersection(aRect); - if (!vertical.IsEmpty()) { - gc.SetBrushStyle(CGraphicsContext::ESolidBrush); - gc.SetBrushColor(KGray); - gc.SetPenStyle(CGraphicsContext::ESolidPen); - gc.SetPenSize(TSize(1, 1)); - gc.SetPenColor(KBlack); - gc.DrawRect(vertical); - gc.SetBrushColor(KDarkGray); - gc.DrawRect(verticalThumb); - } - } - } - else { - // ltr - if (m_hasHorizontalScrollbar) { - TRect vertical(rect.Width() - KMainScrollbarWidth, 0, rect.Width(), rect.Height() - KMainScrollbarWidth); - TRect horizontal(0, rect.Height() - KMainScrollbarWidth, rect.Width() - KMainScrollbarWidth, rect.Height()); - TRect verticalThumb(rect.Width() - KMainScrollbarWidth, (m_displayPosY * m_displayHeight) / documentHeight, - rect.Width(), (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight); - TRect horizontalThumb((m_displayPosX * m_displayWidth) / documentWidth, rect.Height() - KMainScrollbarWidth, - (m_displayPosX * m_displayWidth + m_displayWidth * m_displayWidth) / documentWidth, rect.Height()); - TRect corner(rect.Width() - KMainScrollbarWidth, rect.Height() - KMainScrollbarWidth, rect.Width(), rect.Height()); - vertical.Intersection(aRect); - horizontal.Intersection(aRect); - if (!(vertical.IsEmpty() || horizontal.IsEmpty())) { - gc.SetBrushStyle(CGraphicsContext::ESolidBrush); - gc.SetBrushColor(KGray); - gc.SetPenStyle(CGraphicsContext::ESolidPen); - gc.SetPenSize(TSize(1, 1)); - gc.SetPenColor(KBlack); - gc.DrawRect(vertical); - gc.DrawRect(horizontal); - gc.SetBrushColor(KDarkGray); - gc.DrawRect(verticalThumb); - gc.DrawRect(horizontalThumb); - gc.SetBrushColor(KWhite); - gc.SetPenColor(KWhite); - gc.DrawRect(corner); - } - } - else - { - TRect vertical(rect.Width() - KMainScrollbarWidth, 0, rect.Width(), rect.Height()); - TRect verticalThumb(rect.Width() - KMainScrollbarWidth, (m_displayPosY * m_displayHeight) / documentHeight, - rect.Width(), (m_displayPosY * m_displayHeight + m_displayHeight * m_displayHeight) / documentHeight); - vertical.Intersection(aRect); - if (!vertical.IsEmpty()) { - gc.SetBrushStyle(CGraphicsContext::ESolidBrush); - gc.SetBrushColor(KGray); - gc.SetPenStyle(CGraphicsContext::ESolidPen); - gc.SetPenSize(TSize(1, 1)); - gc.SetPenColor(KBlack); - gc.DrawRect(vertical); - gc.SetBrushColor(KDarkGray); - gc.DrawRect(verticalThumb); - } - } - } - } @@ -548,9 +444,9 @@ m_webView = WebView::NewL(*aParent, this); m_historyHandler = HistoryHandler::initWithHandle(this); m_settingsContainer = new (ELeave) SettingsContainer(m_webView, m_historyHandler->historyController()); - m_settingsContainer->setTabbedNavigation(!(capabilities()&TBrCtlDefs::ECapabilityCursorNavigation)); + m_settingsContainer->setNavigationType((capabilities()&TBrCtlDefs::ECapabilityCursorNavigation) ? SettingsContainer::NavigationTypeCursor : SettingsContainer::NavigationTypeTabbed); - m_usrAgnt = CUserAgent::NewL(); + m_usrAgnt = CUserAgent::NewL(); if (m_brCtlLayoutObserver == NULL) { @@ -1078,9 +974,6 @@ TUid aCharsetUid) { const TText* charset = charsetForUid(aCharsetUid.iUid); - if (charset == NULL) { - charset = _S("iso-8859-1"); - } HBufC8* url = HBufC8::NewLC(aUrl.Length()); url->Des().Copy(aUrl); @@ -1852,7 +1745,7 @@ // void CBrCtl::SizeChanged() { - if (m_webView->isPluginFullscreen()) return; + if (StaticObjectsContainer::instance()->isPluginFullscreen()) return; TRect adjustedRect( Rect() ); TBool callDoLayout = EFalse; TInt scrollBarWidth = getMainScrollbarWidth(); @@ -2122,7 +2015,14 @@ if (m_brCtlWindowObserver) { newBrctl = m_brCtlWindowObserver->FindWindowL(windowName); if (!newBrctl) - newBrctl = m_brCtlWindowObserver->OpenWindowL(emptyUrl, &windowName, userGesture, 0); + { + if(StaticObjectsContainer::instance()->isPluginFullscreen()) + { + PluginSkin* plugin=m_webView->mainFrame()->focusedPlugin(); + plugin->deActivate(); + } + newBrctl = m_brCtlWindowObserver->OpenWindowL(emptyUrl, &windowName, userGesture, 0); + } } return static_cast(newBrctl); } @@ -2475,7 +2375,6 @@ int CBrCtl::getMainScrollbarWidth() const { - //return (AknLayoutUtils::PenEnabled() ? 0 : KMainScrollbarWidth); return 0; } @@ -2486,6 +2385,9 @@ } return m_brCtlDownloadObserver; } + + + void CBrCtl::HandlePointerBufferReadyL() { m_webView->HandlePointerBufferReadyL(); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/SettingsContainer.h --- a/webengine/osswebengine/WebKit/s60/webview/SettingsContainer.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/SettingsContainer.h Fri Jul 03 15:54:40 2009 +0100 @@ -28,11 +28,12 @@ class SettingsContainer { public: + enum NavigationType { NavigationTypeCursor, NavigationTypeTabbed, NavigationTypeNone }; SettingsContainer(WebView* view, HistoryControllerInterface* historyProvider); unsigned int brctlSetting(TBrCtlDefs::TBrCtlSettings setting); void setBrctlSetting(TBrCtlDefs::TBrCtlSettings setting, unsigned int value); - void setTabbedNavigation(bool on_) { m_tabbedNaviOn = on_; } - bool getTabbedNavigation() const { return m_tabbedNaviOn; } + void setNavigationType(NavigationType type) { m_navigationType = type; } + NavigationType getNavigationType() const { return m_navigationType; } private: void updatePageSetting(TBrCtlDefs::TBrCtlSettings setting); @@ -46,7 +47,7 @@ unsigned int brctlSettings[TBrCtlDefs::ESettingsMaxEnum]; WebView* m_webView; HistoryControllerInterface* m_historyController; - bool m_tabbedNaviOn; + NavigationType m_navigationType; }; #endif // __WEBDOCUMENTLOADER_H__ diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebCannedImages.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebCannedImages.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebCannedImages.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -21,10 +21,8 @@ #include "WebCannedImages.h" #include #include "../../bidi.h" -#include #include #include -#include #include #ifdef __BROWSER_SDK diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebCannedImages.h --- a/webengine/osswebengine/WebKit/s60/webview/WebCannedImages.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebCannedImages.h Fri Jul 03 15:54:40 2009 +0100 @@ -26,7 +26,6 @@ #include #include -#include // CONSTANTS diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebCursor.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -117,8 +117,10 @@ // ----------------------------------------------------------------------------- WebCursor::~WebCursor() { - m_sprite.Close(); + delete m_sprite; delete m_transarrowmask; + if ( m_transtimer ) + m_transtimer->Cancel(); delete m_transtimer; } @@ -139,7 +141,7 @@ if (!m_view) { m_view = &view; - constructSprite(); + TRAP_IGNORE( constructSpriteL() ); } m_view = &view; setOpaqueUntil(KTransparencyTime); @@ -147,9 +149,9 @@ } // ----------------------------------------------------------------------------- -// WebCursor::constructSprite +// WebCursor::constructSpriteL // ----------------------------------------------------------------------------- -void WebCursor::constructSprite() +void WebCursor::constructSpriteL() { //tot:fixme @@ -180,17 +182,10 @@ delete gc; CleanupStack::PopAndDestroy(); ///////////////////////////////// - m_sprite = RWsSprite(m_view->ControlEnv()->WsSession()); - RWindowTreeNode *window = (RDrawableWindow* )m_view->brCtl()->CCoeControlParent()->DrawableWindow(); - m_sprite.Construct(*window,TPoint(KInitialOffset,KInitialOffset),ESpriteNoChildClip); - - TSpriteMember spriteMem; - spriteMem.iBitmap = 0; - spriteMem.iMaskBitmap = 0; - spriteMem.iInvertMask = ETrue; - - m_sprite.AppendMember(spriteMem); - m_sprite.Activate(); + + CCoeControl* parent = static_cast(m_view); + TPoint pos = TPoint(KInitialOffset,KInitialOffset); + m_sprite = CWebSprite::NewL(parent, pos, m_arrow.m_img, m_arrow.m_msk, ETrue); } // ----------------------------------------------------------------------------- @@ -198,24 +193,25 @@ // ----------------------------------------------------------------------------- void WebCursor::setCursor(CursorTypes type) { - m_sprite.SetPosition( m_pos ); + m_type = type; - if (m_visible && !(m_view->brCtl()->settings()->getTabbedNavigation())) { - TSpriteMember spriteMem; + if (m_visible && (m_view->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeCursor)) { + CFbsBitmap* img = NULL; + CFbsBitmap* msk = NULL; switch( type ) { case PointerCursor: default: { - spriteMem.iBitmap = m_waiton ? m_wait.m_img : m_arrow.m_img; - spriteMem.iMaskBitmap = m_waiton ? m_wait.m_img : + img = m_waiton ? m_wait.m_img : m_arrow.m_img; + msk = m_waiton ? m_wait.m_img : (m_transparent && m_transcount > KTransparencyMoveThreshold ? m_transarrowmask : m_arrow.m_msk); break; } case HandCursor: { - spriteMem.iBitmap = m_hand.m_img; - spriteMem.iMaskBitmap = m_hand.m_msk; + img = m_hand.m_img; + msk = m_hand.m_msk; break; } case IBeamCursor: @@ -232,27 +228,25 @@ } else*/ { - spriteMem.iBitmap = m_ibeam.m_img; - spriteMem.iMaskBitmap = m_ibeam.m_msk; + img = m_ibeam.m_img; + msk = m_ibeam.m_msk; } break; } case SelectMultiCursor: { - spriteMem.iBitmap = m_selectMulti.m_img; - spriteMem.iMaskBitmap = m_selectMulti.m_msk; + img = m_selectMulti.m_img; + msk = m_selectMulti.m_msk; break; } } - spriteMem.iOffset = KCursorOffset; - spriteMem.iInvertMask = ETrue; - m_sprite.UpdateMember( 0, spriteMem ); - } else { - TSpriteMember spriteMem; - spriteMem.iBitmap = 0; - spriteMem.iMaskBitmap = 0; - spriteMem.iInvertMask = ETrue; - m_sprite.UpdateMember( 0, spriteMem ); + TPoint pos = m_pos + KCursorOffset; + + m_sprite->Update(pos, img, msk); + + } + else { + m_sprite->Hide(); } } @@ -264,7 +258,7 @@ if (!m_view || !m_view->brCtl()->settings()) return; if ( m_view->showCursor() ) { - m_visible = visible && (!m_view->brCtl()->settings()->getTabbedNavigation() || m_view->focusedElementType() == TBrCtlDefs::EElementSelectMultiBox); // check for tabbedNavigation here because it is called from so many places. + m_visible = visible && ((m_view->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeCursor)|| m_view->focusedElementType() == TBrCtlDefs::EElementSelectMultiBox); // check for tabbedNavigation here because it is called from so many places. } resetTransparency(); @@ -279,7 +273,7 @@ else if ( elType == TBrCtlDefs::EElementSmartLinkTel || elType == TBrCtlDefs::EElementSmartLinkEmail ) type = IBeamCursor; - else if ( elType == TBrCtlDefs::EElementSelectMultiBox && m_view->brCtl()->settings()->getTabbedNavigation() ) + else if ( elType == TBrCtlDefs::EElementSelectMultiBox && m_view->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed) type = SelectMultiCursor; else type = HandCursor; @@ -713,7 +707,7 @@ void WebCursor::updatePositionAndElemType(const TPoint& pt) { m_pos = pt; - m_sprite.SetPosition(pt); + m_sprite->SetPos(pt); WebFrame* frame = getFrameAtPoint(pt); TBrCtlDefs::TBrCtlElementType elType; TRect r; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebCursor.h --- a/webengine/osswebengine/WebKit/s60/webview/WebCursor.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebCursor.h Fri Jul 03 15:54:40 2009 +0100 @@ -21,6 +21,7 @@ #include #include "WebCoreWidget.h" #include "WebCannedImages.h" +#include "WebSprite.h" #include namespace WebCore { @@ -34,6 +35,7 @@ class CWindowGc; class WebFrame; class CFbsBitmap; +class CWebSprite; class WebCursor : public CBase { @@ -46,7 +48,7 @@ const TPoint& position() const { return m_pos; } const TRect& nodeRect() const { return m_nodeRect; } - void setPosition(const TPoint& pt) { m_pos = pt; m_sprite.SetPosition(pt);} + void setPosition(const TPoint& pt) { m_pos = pt;} void updatePositionAndElemType(const TPoint& pt); void setCurrentView(WebView& view); void offsetCursor(const TPoint& offset); @@ -66,11 +68,11 @@ void scrollAndMoveCursor(int dir, int scrollRange, bool auto); WebFrame* getFrameUnderCursor(); bool navigableNodeUnderCursor(WebFrame& webFrame, TPoint& aPoint, TBrCtlDefs::TBrCtlElementType& aElType, TRect& aFocusRect) const; + WebFrame* getFrameAtPoint(const TPoint& viewPos_); private: void moveCursor(int lr,int tb, int scrollRange); - WebFrame* getFrameAtPoint(const TPoint& viewPos_); bool determineCursorPosition(WebFrame& webFrame, TBrCtlDefs::TBrCtlElementType& aElType, TRect& aFocusRect, TRect& aSearchRect, TPoint& aCursorPosition, bool aInitialize); void increaseSearchRect(int lr,int tb,TRect& aRect); @@ -85,7 +87,7 @@ WebCursor(); void ConstructL(); TRect calcSearchRect(int lr, int tb, int scrollRange); - void constructSprite(); + void constructSpriteL(); TPoint m_pos; @@ -103,7 +105,8 @@ WebView* m_view; bool m_visible; - RWsSprite m_sprite; + + CWebSprite* m_sprite; bool m_waiton; int m_flipcounter; bool m_transparent; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebFrameView.h --- a/webengine/osswebengine/WebKit/s60/webview/WebFrameView.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebFrameView.h Fri Jul 03 15:54:40 2009 +0100 @@ -75,7 +75,7 @@ // accessors WebFrame* frame() const { return m_frame.get(); } - WebView* topView() const { return m_topView.get(); } + WebView* topView() const { return m_topView; } void setWebFrame(WebFrame*); void setTopView(WebView*); TPoint contentPos() { return m_contentPos; } @@ -107,7 +107,7 @@ WebFrameView& operator=(const WebFrameView&); // not implemented RefPtr m_frame; // the frame associated with this view - RefPtr m_topView; // the top drawable view + WebView* m_topView; // the top drawable view WebFrameView* m_parent; // the parent view TRect m_frameRect; // the location and size of this frame in its parent frame diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -41,7 +41,7 @@ { WebPageFullScreenHandler* self = new (ELeave) WebPageFullScreenHandler( webView ); CleanupStack::PushL(self); - self->constructL(); + self->ConstructL(); CleanupStack::Pop(); //self return self; } @@ -52,8 +52,7 @@ // might leave. // ----------------------------------------------------------------------------- // -WebPageFullScreenHandler::WebPageFullScreenHandler(WebView& webView) -: m_webView(&webView), m_spriteVisible(EFalse), m_tappedOnSprite(EFalse) +WebPageFullScreenHandler::WebPageFullScreenHandler(WebView& webView) : m_webView(&webView) { } @@ -62,8 +61,12 @@ // The constructor that can contain code that might leave. // ----------------------------------------------------------------------------- // -void WebPageFullScreenHandler::constructL() +void WebPageFullScreenHandler::ConstructL() { + m_buttonIcon = StaticObjectsContainer::instance()->webCannedImages()->getImage(WebCannedImages::EImageEscFullScreen); + TPoint pos = CalculatePosition(); + BaseConstructL(m_webView, pos, m_buttonIcon.m_img, m_buttonIcon.m_msk, ETrue); + Hide(); } // ----------------------------------------------------------------------------- @@ -75,6 +78,17 @@ } +TPoint WebPageFullScreenHandler::CalculatePosition() +{ + TPoint pos = m_webView->Rect().iBr; + TSize iconSize = m_buttonIcon.m_img->SizeInPixels(); + + pos -= iconSize; + pos -= TPoint(KFullScreenButtonBuff, KFullScreenButtonBuff); + //pos -= m_webView->PositionRelativeToScreen(); + return pos; +} + //------------------------------------------------------------------------------- // WebPageFullScreenHandler::showEscBtnL // Draws the full screen button on the screen @@ -82,10 +96,8 @@ void WebPageFullScreenHandler::showEscBtnL() { - if (AknLayoutUtils::PenEnabled() && !m_spriteVisible) { - constructSprite(); - SizeChanged(); - AddWsObserverToControl(); + if (AknLayoutUtils::PenEnabled()) { + Show(); } } @@ -96,9 +108,8 @@ void WebPageFullScreenHandler::hideEscBtnL() { - if (AknLayoutUtils::PenEnabled() && m_spriteVisible) { - destructSprite(); - m_eventMonitor->RemoveObserver(this); + if (AknLayoutUtils::PenEnabled()) { + Hide(); } } @@ -109,12 +120,9 @@ void WebPageFullScreenHandler::SizeChanged(void) { - if (AknLayoutUtils::PenEnabled() && m_spriteVisible) { - m_pos = m_webView->Rect().iBr; - TPoint point (m_webView->PositionRelativeToScreen()); - m_pos -= TSize( KFullScreenButtonWidth + KFullScreenButtonBuff, - KFullScreenButtonHeight - point.iY + KFullScreenButtonBuff); - m_sprite.SetPosition(m_pos); + if (AknLayoutUtils::PenEnabled()) { + TPoint pos = CalculatePosition(); + SetPos(pos); } } @@ -129,101 +137,23 @@ } -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::HitRegionContains -// Defines a control's hit region -//------------------------------------------------------------------------------- - -TBool WebPageFullScreenHandler::HitRegionContains(const TPoint& aPoint) -{ - TRect spriteRect (m_pos, TSize(KFullScreenButtonHeight, KFullScreenButtonWidth)); - return spriteRect.Contains(aPoint); -} - - -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::destructSprite -// close/hide sprite for time being -//------------------------------------------------------------------------------- - -void WebPageFullScreenHandler::destructSprite() +void WebPageFullScreenHandler::HandlePointerEventL(const TPointerEvent& aPointerEvent) { - m_sprite.Close(); - m_spriteVisible = EFalse; -} - -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::constructSprite -// Show/create sprite at m_pos -//------------------------------------------------------------------------------- + switch (aPointerEvent.iType) + { + case TPointerEvent::EButton1Down: + m_isTouchDown = ETrue; + break; -void WebPageFullScreenHandler::constructSprite() -{ - m_sprite = RWsSprite(m_webView->brCtl()->CCoeControlParent()->ControlEnv()->WsSession()); - m_sprite.Construct(m_webView->brCtl()->CCoeControlParent()->ControlEnv()->RootWin(), m_pos, ESpriteNoShadows); - TCannedImageData cannedImage = StaticObjectsContainer::instance()->webCannedImages()->getImage(WebCannedImages::EImageEscFullScreen); - - TSpriteMember spriteMem; - spriteMem.iBitmap = cannedImage.m_img; - spriteMem.iMaskBitmap = cannedImage.m_msk; //masked bitmap still of the canned image need to be changed - - m_sprite.AppendMember(spriteMem); - m_sprite.Activate(); - - m_spriteVisible = ETrue; + case TPointerEvent::EButton1Up: + { + if (m_isTouchDown) { + Hide(); + m_webView->notifyFullscreenModeChangeL( false ); + } + m_isTouchDown = EFalse; + } + break; + } } -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::HandleWsEventL -// check if click region hits sprite -//------------------------------------------------------------------------------- - -void WebPageFullScreenHandler::HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination) -{ - if (!aDestination) return; - - if(aEvent.Type() == EEventPointer) - { - switch (aEvent.Pointer()->iType) - { - case TPointerEvent::EButton1Down: - if (m_spriteVisible) - { - TPoint point (aDestination->PositionRelativeToScreen()); - m_tappedOnSprite = HitRegionContains(aEvent.Pointer()->iPosition + point); - } - break; - - case TPointerEvent::EButton1Up: - { - TPoint point (aDestination->PositionRelativeToScreen()); - if (m_spriteVisible && m_tappedOnSprite && - HitRegionContains(aEvent.Pointer()->iPosition + point)) - { - hideEscBtnL(); - m_webView->notifyFullscreenModeChangeL( false ); - } - m_tappedOnSprite = EFalse; - } - break; - - } - } -} - - -//------------------------------------------------------------------------------- -// WebPageFullScreenHandler::AddWsObserverToControl -// register for events from WSession -//------------------------------------------------------------------------------- - -void WebPageFullScreenHandler::AddWsObserverToControl() -{ - m_eventMonitor = ((CAknAppUi*)m_webView->ControlEnv()->AppUi())->EventMonitor(); - - if(m_eventMonitor) - { - m_eventMonitor->AddObserverL(this); - m_eventMonitor->Enable(ETrue); - } -} diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.h --- a/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.h Fri Jul 03 15:54:40 2009 +0100 @@ -24,7 +24,9 @@ #include #include #include -#include +#include "WebSprite.h" +#include "WebCannedImages.h" + // MACROS // FORWARD DECLARATIONS @@ -32,7 +34,8 @@ class WebFrame; // CLASS DECLARATION -class WebPageFullScreenHandler: public CBase, public MAknWsEventObserver { +class WebPageFullScreenHandler: public CWebSprite +{ public: // Constructor and destructor /** @@ -55,14 +58,10 @@ /** * By default Symbian 2nd phase constructor is private. **/ - void constructL(); + void ConstructL(); - TBool HitRegionContains(const TPoint& aPoint); - void HandleWsEventL(const TWsEvent& aEvent,CCoeControl* aDestination); - void AddWsObserverToControl(); - void constructSprite(); - void destructSprite(); - + TPoint CalculatePosition(); + public: // New functions @@ -94,17 +93,14 @@ **/ void SizeChanged(void); - + void HandlePointerEventL(const TPointerEvent& aPointerEvent); private: // Pointer to owning view WebView* m_webView; // not owned - CAknWsEventMonitor* m_eventMonitor; // not owned - RWsSprite m_sprite; - TBool m_spriteVisible; - TBool m_tappedOnSprite; - TPoint m_pos; + TBool m_isTouchDown; + TCannedImageData m_buttonIcon; }; #endif //WEBPAGEFULLSCREENHANDLER_H diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -251,10 +251,7 @@ { m_scrollTimer->Cancel(); if (m_scrollableView.m_scrollingElement) { - if (m_scrollableView.m_scrollingElement) { - m_scrollableView.m_scrollingElement->deref(); - m_scrollableView.m_scrollingElement = NULL; - } + clearScrollingElement(); } else { if (m_lastMoveEventTime != 0) @@ -281,10 +278,11 @@ } void WebPageScrollHandler::setupScrolling(const TPoint& aNewPosition) -{ +{ if (m_lastPosition == TPoint(0, 0)) { m_lastPosition = aNewPosition; } + if(m_lastPosition == aNewPosition) return; // no displacement -- means no need for scrolling @@ -305,19 +303,31 @@ m_webView->setViewIsScrolling(true); m_webView->toggleRepaintTimer(false); } +} -} +void WebPageScrollHandler::clearScrollingElement() +{ + if (m_scrollableView.m_scrollingElement) { + m_scrollableView.m_scrollingElement->deref(); + m_scrollableView.m_scrollingElement = NULL; + } +} void WebPageScrollHandler::scrollContent() { TPoint scrollDelta = m_lastPosition - m_currentPosition; - + scrollContent(scrollDelta); +} + +void WebPageScrollHandler::scrollContent(TPoint& aScrollDelta) +{ if(!m_scrollableView.activeFrameView()) return; - int absX = Abs(scrollDelta.iX); - int absY = Abs(scrollDelta.iY); + + int absX = Abs(aScrollDelta.iX); + int absY = Abs(aScrollDelta.iY); if(absX || absY) //move only if necessary { @@ -331,8 +341,8 @@ { case ScrollDirectionX: //scroll in X dir { - scrollDelta.iY = 0; - scrollDelta.iX *= 100; + aScrollDelta.iY = 0; + aScrollDelta.iX *= 100; //Fallback to XY state if the current position is out of bounds TPoint boundaryCheckpoint = m_focalPoint - m_currentPosition; if(Abs(boundaryCheckpoint.iY) > KScrollDirectionBoundary) @@ -341,8 +351,8 @@ } case ScrollDirectionY: //scroll in Y dir { - scrollDelta.iX = 0; - scrollDelta.iY *= 100; + aScrollDelta.iX = 0; + aScrollDelta.iY *= 100; //Fallback to XY state if the current position is out of bounds TPoint boundaryCheckpoint = m_focalPoint - m_currentPosition; if(Abs(boundaryCheckpoint.iX) > KScrollDirectionBoundary) @@ -351,8 +361,8 @@ } case ScrollDirectionXY: //scroll in XY { - scrollDelta.iX *= 100; - scrollDelta.iY *= 100; + aScrollDelta.iX *= 100; + aScrollDelta.iY *= 100; m_scrollDirectionState = ScrollDirectionUnassigned; break; } @@ -360,17 +370,16 @@ if (m_scrollableView.m_scrollingElement) { bool shouldScrollVertically = false; bool shouldScrollHorizontally = false; - //WebFrameView* mfv = m_webView->mainFrame()->frameView(); WebFrame* frame = kit(m_scrollableView.m_scrollingElement->document()->frame()); - IntPoint currPoint = frame->frameView()->viewCoordsInFrameCoords(m_currentPosition); RenderObject* render = m_scrollableView.m_scrollingElement->renderer(); __ASSERT_DEBUG(render->isScrollable(), User::Panic(_L(""), KErrGeneral)); - if (scrollDelta.iY) - shouldScrollVertically = !render->scroll(ScrollDown, ScrollByPixel, frame->frameView()->toDocCoords(scrollDelta).iY / 100); - if (scrollDelta.iX) - shouldScrollHorizontally = !render->scroll(ScrollRight, ScrollByPixel, frame->frameView()->toDocCoords(scrollDelta).iX / 100); + if (aScrollDelta.iY) + shouldScrollVertically = !render->scroll(ScrollDown, ScrollByPixel, frame->frameView()->toDocCoords(aScrollDelta).iY / 100); + if (aScrollDelta.iX) + shouldScrollHorizontally = !render->scroll(ScrollRight, ScrollByPixel, frame->frameView()->toDocCoords(aScrollDelta).iX / 100); + TPoint scrollPos = frame->frameView()->contentPos(); - TPoint newscrollDelta = frame->frameView()->toDocCoords(scrollDelta); + TPoint newscrollDelta = frame->frameView()->toDocCoords(aScrollDelta); m_currentNormalizedPosition += newscrollDelta; if (shouldScrollHorizontally) { @@ -379,21 +388,25 @@ if (shouldScrollVertically) { scrollPos.iY = m_currentNormalizedPosition.iY/100; } - frame->frameView()->scrollTo(scrollPos); + + + if (shouldScrollVertically || shouldScrollHorizontally){ + if (m_scrollableView.m_frameView->needScroll(scrollPos)) { + frame->frameView()->scrollTo(scrollPos); + updateScrollbars(scrollPos, newscrollDelta); + core(frame)->sendScrollEvent(); + } + } + else { + m_webView->syncRepaint(); + } m_lastPosition = m_currentPosition; m_currentNormalizedPosition.iX = frame->frameView()->contentPos().iX * 100; m_currentNormalizedPosition.iY = frame->frameView()->contentPos().iY * 100; - if (shouldScrollVertically || shouldScrollHorizontally) - updateScrollbars(scrollPos, newscrollDelta); - currPoint = frame->frameView()->viewCoordsInFrameCoords(m_currentPosition); - if (shouldScrollHorizontally || shouldScrollVertically) { - core(frame)->sendScrollEvent(); - m_webView->DrawNow(); - } } else { TPoint scrollPos; - TPoint newscrollDelta = m_scrollableView.m_frameView->toDocCoords(scrollDelta); + TPoint newscrollDelta = m_scrollableView.m_frameView->toDocCoords(aScrollDelta); m_currentNormalizedPosition += newscrollDelta; scrollPos.iX = m_currentNormalizedPosition.iX/100; scrollPos.iY = m_currentNormalizedPosition.iY/100; @@ -406,6 +419,7 @@ m_currentNormalizedPosition.iY = m_scrollableView.contentPos().iY * 100; } else { + m_scrollableView.m_frameView->scrollTo(scrollPos); m_lastPosition = m_currentPosition; #ifndef BRDO_USE_GESTURE_HELPER @@ -420,7 +434,7 @@ bool WebPageScrollHandler::calculateScrollableFrameView(const TPoint& aNewPosition) { - if (calculateScrollableElement(aNewPosition)) return true; + calculateScrollableElement(aNewPosition); //First figure out the direction we are scrolling bool x_r = false; @@ -634,19 +648,11 @@ else { m_scrollTimer->Cancel(); m_lastPosition = TPoint(0, 0); - if (m_scrollableView.m_scrollingElement) { - if (m_scrollableView.m_scrollingElement) { - m_scrollableView.m_scrollingElement->deref(); - m_scrollableView.m_scrollingElement = NULL; - } - } - else { - decelDoesScrollbars = startDeceleration(aEvent); + decelDoesScrollbars = startDeceleration(aEvent); - if (m_webView->viewIsScrolling()) { - Frame* frame = m_webView->page()->focusController()->focusedOrMainFrame(); - frame->bridge()->sendScrollEvent(); - } + if (m_webView->viewIsScrolling()) { + Frame* frame = m_webView->page()->focusController()->focusedOrMainFrame(); + frame->bridge()->sendScrollEvent(); } if (!decelDoesScrollbars) { diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.h --- a/webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPageScrollHandler.h Fri Jul 03 15:54:40 2009 +0100 @@ -124,6 +124,13 @@ * @since 5.0 * param * return + */ + void clearScrollingElement(); + + /** + * @since 5.0 + * param + * return */ WebFrameView* currentScrollingFrameView() { return m_scrollableView.m_frameView;} @@ -132,6 +139,13 @@ * param * return */ + WebCore::Element* currentScrollingElement() { return m_scrollableView.m_scrollingElement;} + + /** + * @since 5.0 + * param + * return + */ void updateScrolling(const TPointerEvent& pointerEvent); /** @@ -140,6 +154,14 @@ * return */ void scrollContent(); + + /** + * @since 5.0 + * param + * return + */ + void scrollContent(TPoint& scrollDelta); + /** * @since 5.0 * param diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -54,6 +54,7 @@ #include "ChromeClient.h" #include "FocusController.h" #include "WebTabbedNavigation.h" +#include "SettingsContainer.h" #include "PluginHandler.h" #include "WebKitLogger.h" @@ -295,7 +296,8 @@ { m_highlightPos = TPoint(-1,-1); m_highlightedNode = NULL; - + PluginHandler* pluginHandler = WebCore::StaticObjectsContainer::instance()->pluginHandler(); + pluginHandler->setPluginToActivate(NULL); m_webview->pageScrollHandler()->handleTouchUpGH(aEvent); } @@ -306,17 +308,11 @@ { TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType(); TPoint curPos = aEvent.CurrentPos(); - + PluginHandler* pluginHandler = WebCore::StaticObjectsContainer::instance()->pluginHandler(); + pluginHandler->setPluginToActivate(NULL); m_buttonDownTimer.stop(); HandleHighlightChange(curPos); - if (elType == TBrCtlDefs::EElementActivatedObjectBox) { - PluginSkin* plugin = m_webview->mainFrame()->focusedPlugin(); - if (plugin) { - plugin->deActivate(); - } - } - m_webview->pageScrollHandler()->handleScrollingGH(aEvent); } @@ -350,6 +346,20 @@ else if (aPointerEvent.iType == TPointerEvent::EButton1Up) { m_webview->GetContainerWindow().DisablePointerMoveBuffer(); } + if (m_webview->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) { + TPointerEvent event; + event.iPosition = aPointerEvent.iPosition; + event.iModifiers = 0; + event.iType = aPointerEvent.iType; + + if (event.iType == TPointerEvent::EDrag) event.iType = TPointerEvent::EMove; + m_webview->sendMouseEventToEngine(event.iType, event.iPosition, core(m_webview->mainFrame())); + return; + } + } + + if (m_webview->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed) { + m_webview->tabbedNavigation()->updateCursorPosition(aPointerEvent.iPosition); } #ifdef BRDO_USE_GESTURE_HELPER diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebPopupDrawer.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebPopupDrawer.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPopupDrawer.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -82,10 +82,13 @@ User::Leave(KErrArgument); } m_textToDraw = textToDraw.AllocL(); + CleanupStack::PushL(m_textToDraw); m_removePopupPeriodic = CPeriodic::NewL( CActive::EPriorityLow ); + CleanupStack::PushL(m_removePopupPeriodic); m_removePopupPeriodic->Start( KPopupTimeout, 0, TCallBack( &removePopupCallback, this ) ); sizeChangedL(); constructSprite(); + CleanupStack::Pop(2, m_textToDraw); //m_removePopupPeriodic, m_textToDraw } // ----------------------------------------------------------------------------- @@ -105,6 +108,10 @@ delete m_spriteMaskBitmapDevice; delete m_spriteMaskBitmapContext; delete m_spriteMaskBitmap; + delete m_icon; + delete m_spriteBitmapDevice; + delete m_spriteBitmapContext; + delete m_spriteBitmap; } // ----------------------------------------------------------------------------- @@ -231,8 +238,10 @@ delete m_spriteBitmap; m_spriteBitmap = NULL; m_spriteBitmap = new (ELeave) CFbsBitmap; + CleanupStack::PushL(m_spriteBitmap); User::LeaveIfError( m_spriteBitmap->Create( m_size, EColor16MA ) ); m_spriteBitmapDevice = CFbsBitmapDevice::NewL( m_spriteBitmap ); + CleanupStack::PushL(m_spriteBitmapDevice); User::LeaveIfError( m_spriteBitmapDevice->CreateContext( m_spriteBitmapContext ) ); //mask delete m_spriteMaskBitmapDevice; @@ -242,8 +251,10 @@ delete m_spriteMaskBitmap; m_spriteMaskBitmap = NULL; m_spriteMaskBitmap = new (ELeave) CFbsBitmap; + CleanupStack::PushL(m_spriteMaskBitmap); User::LeaveIfError( m_spriteMaskBitmap->Create( m_size, EGray2 ) ); m_spriteMaskBitmapDevice = CFbsBitmapDevice::NewL( m_spriteMaskBitmap ); + CleanupStack::PushL(m_spriteMaskBitmapDevice); User::LeaveIfError( m_spriteMaskBitmapDevice->CreateContext( m_spriteMaskBitmapContext ) ); TRect r( TPoint( 0, 0 ), m_spriteMaskBitmap->SizeInPixels()); m_spriteMaskBitmapContext->SetBrushStyle( CGraphicsContext::ESolidBrush ); @@ -276,6 +287,8 @@ } m_spriteBitmapContext->DiscardFont(); } + + CleanupStack::Pop(4, m_spriteBitmap); } void WebPopupDrawer::constructSprite() diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -27,10 +27,12 @@ #include "BrCtl.h" #include "StaticObjectsContainer.h" #include "WebSurface.h" +#include "WebSprite.h" #include "WebKitLogger.h" -const int KScrollbarWidth = 15; +const int KMinScrollbarWidth = 10; +const int KMaxScrollbarWidth = 15; const TUint32 KMinScrollBarTransparency = 150; const int KScrollBarFadeInterval = 30000; const TInt32 KScrollBarTransparencyStep = 10; @@ -60,8 +62,8 @@ WebScrollbarDrawer::WebScrollbarDrawer(): m_webView(NULL), m_scrollBarTransparency(KMinScrollBarTransparency), - m_scrollBarWidth(KScrollbarWidth), - m_dX(0), m_dY(0) + m_scrollBarWidth(KMinScrollbarWidth), + m_dX(0), m_dY(0), m_spriteV(NULL), m_spriteH(NULL) { } @@ -74,7 +76,9 @@ } delete m_scrollBarFader; - removeBitmaps(); + removeBitmaps(); + delete m_spriteV; + delete m_spriteH; } @@ -97,13 +101,33 @@ m_scrollBarTransparency = KMinScrollBarTransparency; m_dY = 0.0; m_dX = 0.0; + m_rectVThum = TRect(); + m_rectHThum = TRect(); + m_rect.SetRect(m_webView->brCtl()->Rect().iTl, + m_webView->brCtl()->Rect().Size()); + m_scrollBarWidth = Max(0.04 * Min(m_rect.Width(), m_rect.Height()), KMinScrollbarWidth); calculateBitmapRects(); err = SetupBitmaps(); - + if (err == KErrNone) { - constructSprite(m_spriteV, m_rectVThum.iTl, m_scrollBarV, m_scrollBarVMask); - constructSprite(m_spriteH, m_rectHThum.iTl, m_scrollBarH, m_scrollBarHMask); + if (!m_spriteV) { + m_spriteV = CWebSprite::NewL(m_webView, m_rectVThum.iTl, m_scrollBarV, m_scrollBarVMask, ETrue); + } + else { + m_spriteV->SetBitmap(m_scrollBarV, m_scrollBarVMask, ETrue); + m_spriteV->SetPos(m_rectVThum.iTl); + } + + if (!m_spriteH) { + m_spriteH = CWebSprite::NewL(m_webView, m_rectHThum.iTl, m_scrollBarH, m_scrollBarHMask, ETrue); + } + else { + m_spriteH->SetBitmap(m_scrollBarH, m_scrollBarHMask, ETrue); + m_spriteH->SetPos(m_rectHThum.iTl); + } + m_spriteV->Hide(); + m_spriteH->Hide(); } return err; @@ -144,8 +168,17 @@ void WebScrollbarDrawer::clearSprites() { - m_spriteV.Close(); - m_spriteH.Close(); + if (m_spriteV) { + m_spriteV->Hide(); + m_spriteV->Update(NULL, NULL); + + } + + if (m_spriteH) { + m_spriteH->Hide(); + m_spriteH->Update(NULL, NULL); + + } } void WebScrollbarDrawer::fade() @@ -166,34 +199,35 @@ if (m_hasVScroll) { drawThumbMask(m_gcVMask, m_rectVThum); - updateSprite(m_spriteV, m_scrollBarV, m_scrollBarVMask); + if (m_spriteV) { + m_spriteV->Update(m_scrollBarV, m_scrollBarVMask); + } } if (m_hasHScroll) { drawThumbMask(m_gcHMask, m_rectHThum); - updateSprite(m_spriteH, m_scrollBarH, m_scrollBarHMask); + if (m_spriteH) { + m_spriteH->Update(m_scrollBarH, m_scrollBarHMask); + } } } } +TBool WebScrollbarDrawer::canRedraw() +{ + return ((m_webView && m_spriteV && m_spriteH) && + (m_spriteV->IsShown() || m_spriteH->IsShown())); +} + void WebScrollbarDrawer::redrawScrollbar() { - if (m_webView) { - TInt err = KErrNone; - calculateBitmapRects(); - removeBitmaps(); - err = SetupBitmaps(); - if (err == KErrNone) { - m_spriteV.SetPosition(m_rectVThum.iTl); - updateSprite(m_spriteV, m_scrollBarV, m_scrollBarVMask); - m_spriteH.SetPosition(m_rectHThum.iTl); - updateSprite(m_spriteH, m_scrollBarH, m_scrollBarHMask); - } - else { - clearSprites(); - } + if (canRedraw()) { + clearSprites(); + removeBitmaps(); + InitScrollbar(m_webView); } } + void WebScrollbarDrawer::drawScrollbar(WebView* view) { TPoint p = TPoint(1,1); @@ -219,15 +253,30 @@ InitScrollbar(view); } + /* + * According to spec vertical scrollbar is always visible + * even if user is not scrolling in vertical direction + * Horizontal scrollbar is shown only if user scroll in + * horizontal direction. If content height < screen height + * vertical scrollbar is not shown. The same for horizontal one. + */ if (!m_hasHScroll) { //set it only once - m_hasHScroll = (scrollPos.iX != 0) && (m_displayWidth < m_docWidth); + m_hasHScroll = (Abs(scrollPos.iX) > 1) && (m_displayWidth < m_docWidth); + if (m_hasHScroll) { + m_spriteH->Update(m_rectHThum.iTl, m_scrollBarH, m_scrollBarHMask); + + } } if (!m_hasVScroll) { //set it only once - m_hasVScroll = (scrollPos.iY != 0) && (m_displayHeight < m_docHeight); + m_hasVScroll = ( (Abs(scrollPos.iY) > 1) || (Abs(scrollPos.iX) > 1) ) && + (m_displayHeight < m_docHeight); + if (m_hasVScroll) { + m_spriteV->Update(m_rectVThum.iTl, m_scrollBarV, m_scrollBarVMask); + } } - if ((scrollPos.iY != 0) && (m_displayHeight < m_docHeight)) { + if (m_hasVScroll) { m_dY += m_zoomFactor * ((float)scrollPos.iY * (float)m_displayHeight ) / (float)m_docHeight / 100; if (m_rectVThum.iTl.iY + m_dY < m_rectV.iTl.iY) { @@ -247,12 +296,12 @@ m_dY = 0.0; } - m_spriteV.SetPosition(m_rectVThum.iTl); - updateSprite(m_spriteV, m_scrollBarV, m_scrollBarVMask); + m_spriteV->SetPos(m_rectVThum.iTl); + //m_spriteV->Update(m_rectVThum.iTl, m_scrollBarV, m_scrollBarVMask); } - if ((scrollPos.iX != 0) && (m_displayWidth < m_docWidth)) { + if (m_hasHScroll) { m_dX = m_zoomFactor * ((float)scrollPos.iX * (float)m_displayWidth ) / (float)m_docWidth / 100; if (m_rectHThum.iTl.iX + m_dX < m_rectH.iTl.iX) { @@ -271,39 +320,11 @@ m_rectHThum.Move(m_dX, 0); } - m_spriteH.SetPosition(m_rectHThum.iTl); - updateSprite(m_spriteH, m_scrollBarH, m_scrollBarHMask); - } - - - + m_spriteH->SetPos(m_rectHThum.iTl); + //m_spriteH->Update(m_rectHThum.iTl, m_scrollBarH, m_scrollBarHMask); + } } -void WebScrollbarDrawer::constructSprite(RWsSprite& sprite, TPoint& pos, - CFbsBitmap* bitmap, CFbsBitmap* bitmapMask) -{ - sprite = RWsSprite(m_webView->brCtl()->CCoeControlParent()->ControlEnv()->WsSession()); - RDrawableWindow *window = (RDrawableWindow* )m_webView->brCtl()->CCoeControlParent()->DrawableWindow(); - sprite.Construct(*window, pos, ESpriteNoChildClip); - - TSpriteMember spriteMem; - spriteMem.iBitmap = 0;//bitmap; - spriteMem.iMaskBitmap = 0;//bitmapMask; - spriteMem.iInvertMask = EFalse; - - sprite.AppendMember(spriteMem); - sprite.Activate(); -} - -void WebScrollbarDrawer::updateSprite(RWsSprite& sprite, CFbsBitmap* bitmap, - CFbsBitmap* bitmapMask) -{ - TSpriteMember spriteMem; - spriteMem.iBitmap = bitmap; - spriteMem.iMaskBitmap = bitmapMask; - spriteMem.iInvertMask = ETrue; - sprite.UpdateMember(0, spriteMem); -} TInt WebScrollbarDrawer::createBitmap(CFbsBitmap*& bm, CFbsBitGc*& gc, CFbsBitmapDevice*& dev, TRect& rect) @@ -314,11 +335,13 @@ err = KErrNoMemory; } if (err == KErrNone) { - bm->Create(rect.Size(), EColor256); + err = bm->Create(rect.Size(), EColor256); } - TRAP(err, dev = CFbsBitmapDevice::NewL(bm)); + if (err == KErrNone) { + TRAP(err, dev = CFbsBitmapDevice::NewL(bm)); + } if (err == KErrNone && dev != NULL) { - err = dev->CreateContext(gc); + err = dev->CreateContext(gc); } if (err != KErrNone) { delete dev; @@ -348,8 +371,9 @@ TInt WebScrollbarDrawer::SetupBitmaps() { - TInt err = KErrNone; - if (!m_scrollBarV) { + // if rect is empty don't create bitmap + TInt err = (m_rectVThum != TRect(0,0,0,0)) ? KErrNone : KErrNotReady; + if (!m_scrollBarV && err == KErrNone) { err = createBitmap(m_scrollBarV, m_gcV, m_devV, m_rectVThum); } @@ -362,6 +386,11 @@ drawThumbMask(m_gcVMask, m_rectVThum); } + // if rect is empty don't create bitmap + if (err == KErrNotReady || KErrNone) { + err = (m_rectHThum != TRect(0,0,0,0)) ? KErrNone : KErrNotReady; + } + if (!m_scrollBarH && err == KErrNone) { err = createBitmap(m_scrollBarH, m_gcH, m_devH, m_rectHThum); } @@ -375,6 +404,9 @@ drawThumbMask(m_gcHMask, m_rectHThum); } + if (err == KErrNotReady) { + err = KErrNone; + } return err; } @@ -382,8 +414,6 @@ void WebScrollbarDrawer::calculateBitmapRects() { m_zoomFactor = ((float)m_webView->scalingFactor() / 100); - m_rect.SetRect(m_webView->brCtl()->Rect().iTl, - m_webView->brCtl()->Rect().Size()); int delta = 0; int posX = m_zoomFactor * m_webView->mainFrame()->frameView()->contentPos().iX; int posY = m_zoomFactor * m_webView->mainFrame()->frameView()->contentPos().iY; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.h --- a/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.h Fri Jul 03 15:54:40 2009 +0100 @@ -27,6 +27,7 @@ class WebView; +class CWebSprite; class WebScrollbarDrawer: public CBase { @@ -46,10 +47,6 @@ private: WebScrollbarDrawer(); void ConstructL(); - void constructSprite(RWsSprite& sprite, TPoint& pos, - CFbsBitmap* bitmap, CFbsBitmap* bitmapMask); - void updateSprite(RWsSprite& sprite, CFbsBitmap* bitmap, - CFbsBitmap* bitmapMask); TInt InitScrollbar(WebView* view); TInt SetupBitmaps(); @@ -62,11 +59,12 @@ void removeBitmaps(); void clearSprites(); void calculateBitmapRects(); + TBool canRedraw(); private: WebView* m_webView; - RWsSprite m_spriteV; - RWsSprite m_spriteH; + CWebSprite* m_spriteV; + CWebSprite* m_spriteH; TRect m_rect; int m_scrollBarTransparency; CPeriodic* m_scrollBarFader; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollingDeceleratorGH.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -163,27 +163,25 @@ TPoint cpos = scrollingView->contentPos(); dist = scrollingView->toDocCoords(dist); TPoint pos = m_startPos + dist; - - if ((vx * m_initSpeed.iX < 0) || (vy * m_initSpeed.iY < 0) || (vx + vy == 0) || - (m_numscrollsteps > 1 && !scrollingView->needScroll(pos))) { + + WebPageScrollHandler* handler = m_webView.pageScrollHandler(); + + if ((vx * m_initSpeed.iX < 0) || (vy * m_initSpeed.iY < 0) || (vx + vy == 0) || + (m_numscrollsteps > 1 && !scrollingView->needScroll(pos) && + !handler->currentScrollingElement())) { if (m_scrollbarDrawer) { m_scrollbarDrawer->fadeScrollbar(); } m_decelTimer->Cancel(); + handler->clearScrollingElement(); m_webView.setViewIsScrolling(false); m_webView.toggleRepaintTimer(true); } else { - scrollingView->scrollTo(pos); - if (m_scrollbarDrawer) { - TPoint scrollDelta = pos - m_lastPos; - scrollDelta.iX *= 100; - scrollDelta.iY *= 100; - m_webView.pageScrollHandler()->updateScrollbars(pos, scrollDelta); - } + TPoint scrollDelta = pos - m_lastPos; + handler->scrollContent(scrollDelta); m_lastPos = pos; - } - + } } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebSprite.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebKit/s60/webview/WebSprite.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -0,0 +1,376 @@ +/* +* Copyright (c) 2006 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: Handles the viewing of a single frame. If the page is not frame +* enabled, this class is used as the single view. If frame +* enabled, there is one instance of this class for each frame. +* +*/ + +#include "../../bidi.h" +#include +#include +#include "WebSprite.h" + + +/* + * CWebSprite class serves as a replacement for Symbian RWsSprite + * in the cases when transparent window is possible (platform supports it). + * It's a window owning CCoeControl which window gets highest priority and + * smallest ordinal number. That allows to CWebSprite be on top of all windows + * in the same window group. The movement is restricted by boundaries of the + * parent CCoeControl window or Root Window if parent is NULL. + * Only one bitmap is supported, so animation is not possible. + * If platform doesn't support window transparency CWebSprite acts as wrapper + * around RWsSprite. + */ + +// ====================================================================== +// CWebSprite::NewL +// ====================================================================== +CWebSprite* CWebSprite::NewL(TPoint& aPos, CFbsBitmap* aBitmap, + CFbsBitmap* aMask, TBool aInvertMask) + { + CWebSprite* self = new(ELeave)CWebSprite(NULL, aBitmap, aMask, aInvertMask); + CleanupStack::PushL(self); + self->ConstructL(aPos); + CleanupStack::Pop(); + return self; + } + +// ====================================================================== +// CWebSprite::NewL +// ====================================================================== +CWebSprite* CWebSprite::NewL(CCoeControl* aParent, TPoint& aPos, + CFbsBitmap* aBitmap, CFbsBitmap* aMask, + TBool aInvertMask) + { + CWebSprite* self = new(ELeave)CWebSprite(aParent, aBitmap, aMask, aInvertMask); + CleanupStack::PushL(self); + self->ConstructL(aParent, aPos); + CleanupStack::Pop(); + return self; + } + +// ====================================================================== +// CWebSprite::BaseConstructL +// ====================================================================== +void CWebSprite::BaseConstructL(TPoint& aPos, CFbsBitmap* aBitmap, + CFbsBitmap* aMask, TBool aInvertMask) + { + iBitmap = aBitmap; + iMask = aMask; + iInvertMask = aInvertMask; + iParent = NULL; + ConstructL(aPos); + } + +// ====================================================================== +// CWebSprite::BaseConstructL +// ====================================================================== +void CWebSprite::BaseConstructL(CCoeControl* aParent, TPoint& aPos, + CFbsBitmap* aBitmap, CFbsBitmap* aMask, + TBool aInvertMask) + { + iBitmap = aBitmap; + iMask = aMask; + iInvertMask = aInvertMask; + iParent = aParent; + ConstructL(aParent, aPos); + } + +// ====================================================================== +// CWebSprite::CWebSprite() +// ====================================================================== +CWebSprite::CWebSprite() + { + } + +// ====================================================================== +// CWebSprite::CWebSprite() +// ====================================================================== +CWebSprite::CWebSprite(CCoeControl* aParent, CFbsBitmap* aBitmap, + CFbsBitmap* aMask, TBool aInvertMask) : + iParent(aParent), iBitmap(aBitmap), iMask(aMask), + iInvertMask(aInvertMask), iWin(NULL) + { + } + +// ====================================================================== +// CWebSprite::ConstructL +// ====================================================================== +void CWebSprite::ConstructL(TPoint& aPos) + { + ConstructL(NULL, aPos); + } + +// ====================================================================== +// CWebSprite::ConstructL +// ====================================================================== +void CWebSprite::ConstructL(CCoeControl* aParent, TPoint& aPos) + { + TInt err = KErrNone; + if (aParent) + { + CreateWindowL(aParent); + } + else + { + CreateWindowL(); + } + + iWin = &(Window()); + iWin->SetRequiredDisplayMode(EColor16MA); + err = iWin->SetTransparencyAlphaChannel(); + if (err != KErrNone) + { + // Transparency is not possible - close window and use sprites + CloseWindow(); + iWin = NULL; + } + + if (iWin) + { + iWin->SetOrdinalPosition(0, KPasswordWindowGroupPriority - 1); + iWin->SetBackgroundColor(TRgb(0,0)); + if (iBitmap) + { + init(aPos, iBitmap->SizeInPixels()); + ActivateL(); + } + else + { + SetPosition(aPos); + Hide(); + } + } + else + { + MakeVisible(EFalse); + CreateSprite(aPos); + } + } + +// ====================================================================== +// CWebSprite::CreateSprite +// ====================================================================== +void CWebSprite::CreateSprite(TPoint& aPos) + { + /* + * We should come here only if iWin is NULL since it will mean that + * transparent windowis not possible and we are using sprite + */ + RWindowTreeNode* window = iParent ? static_cast(iParent->DrawableWindow()) : + static_cast(&(ControlEnv()->RootWin())); + iSprite = RWsSprite(ControlEnv()->WsSession()); + iSprite.Construct(*window, aPos, ESpriteNoChildClip); + + TSpriteMember spriteMem; + spriteMem.iBitmap = iBitmap; + spriteMem.iMaskBitmap = iMask; + spriteMem.iInvertMask = iInvertMask; + + iSprite.AppendMember(spriteMem); + iSprite.Activate(); + } + +// ====================================================================== +// CWebSprite::UpdateSprite +// ====================================================================== +void CWebSprite::UpdateSprite() + { + /* + * We should come here only if iWin is NULL since it will mean that + * transparent windowis not possible and we are using sprite + */ + TSpriteMember spriteMem; + spriteMem.iBitmap = iBitmap; + spriteMem.iMaskBitmap = iMask; + spriteMem.iInvertMask = iInvertMask; + + iSprite.UpdateMember(0, spriteMem); + } + +// ====================================================================== +// CWebSprite::init +// ====================================================================== +void CWebSprite::init(TPoint& aPos, TSize aSize) + { + if (iWin) + { // we have a window - let's set position and size + SetPosition(aPos); + SetSizeWithoutNotification(aSize); + } + } + +// ====================================================================== +// CWebSprite::Draw +// ====================================================================== +void CWebSprite::Draw(const TRect& aRect) const + { + if (IsActivated() && iBitmap) + { + CWindowGc& gc = SystemGc(); + gc.Clear(aRect); + Window().SetOrdinalPosition(0, KPasswordWindowGroupPriority - 1); + TPoint pt = TPoint(0,0); + TRect rect = TRect(pt, iBitmap->SizeInPixels()); + gc.BitBltMasked(pt, iBitmap, rect, iMask, iInvertMask); + } + } + +// ====================================================================== +// CWebSprite::SetBitmap +// ====================================================================== +void CWebSprite::SetBitmap(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask) + { + iBitmap = aBitmap; + iMask = aMask; + iInvertMask = aInvertMask; + + if(iWin && aBitmap) + { + TPoint pos = Position(); + init(pos, aBitmap->SizeInPixels()); + } + } + +// ====================================================================== +// CWebSprite::Update +// ====================================================================== +void CWebSprite::Update(const TPoint& aPos, CFbsBitmap* aBitmap, + CFbsBitmap* aMask) + { + SetPos(aPos); + Update(aBitmap, aMask); + } + +// ====================================================================== +// CWebSprite::Update +// ====================================================================== +void CWebSprite::Update(CFbsBitmap* aBitmap, CFbsBitmap* aMask) + { + TInt err = KErrNone; + if(iWin && aBitmap) // if we have a window and bitmap check if we need + { // to finish initialization + if (!IsActivated() || !iBitmap) // if control wasn't activated + { // or bitmap was reset last time to NULL, + TPoint pos = Position(); // because somebody wanted to reuse this control, + init(pos, aBitmap->SizeInPixels()); // we will try to initialize the control. + TRAP(err, ActivateL()); + } + } + + if (err == KErrNone) + { + iBitmap = aBitmap; + iMask = aMask; + } + else + { + iBitmap = NULL; + iMask = NULL; + } + + if (!iWin) + { + UpdateSprite(); + } + else if (iBitmap) + { + Show(); + DrawNow(); + } + } + +// ====================================================================== +// CWebSprite::Update +// ====================================================================== +void CWebSprite::Update(CFbsBitmap* aBitmap, CFbsBitmap* aMask, + TBool aInvertMask) + { + iInvertMask = aInvertMask; + Update(aBitmap, aMask); + } + +// ====================================================================== +// CWebSprite::Show +// ====================================================================== +void CWebSprite::Show() + { + if (iWin) + { + MakeVisible(ETrue); + } + else + { + UpdateSprite(); + } + } + +// ====================================================================== +// CWebSprite::Hide +// ====================================================================== +void CWebSprite::Hide() + { + if (iWin) + { + MakeVisible(EFalse); + } + else + { + Update(NULL, NULL); + } + } + +// ====================================================================== +// CWebSprite::~CWebSprite +// ====================================================================== +CWebSprite::~CWebSprite() + { + if (!iWin) + { + iSprite.Close(); + } + } + +// ====================================================================== +// CWebSprite::SetPos +// ====================================================================== +void CWebSprite::SetPos(const TPoint& aPos) + { + if (!iWin) + { + iSprite.SetPosition(aPos); + } + else + { + TPoint pos = Position(); + if (pos != aPos) + { + CCoeControl::SetPosition(aPos); + } + } + } + + +// ====================================================================== +// CWebSprite::IsShown +// ====================================================================== +TBool CWebSprite::IsShown() + { + // if it's a window owning CoeControl just return IsVisible() + // otherwise check if bitmap != NULL and if it's not then + // sprite is shown. + return (iWin && IsVisible()) || iBitmap != NULL; + } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebSprite.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebKit/s60/webview/WebSprite.h Fri Jul 03 15:54:40 2009 +0100 @@ -0,0 +1,74 @@ +/* +* Copyright (c) 2006 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: Handles the viewing of a single frame. If the page is not frame +* enabled, this class is used as the single view. If frame +* enabled, there is one instance of this class for each frame. +* +*/ + +#ifndef WEBSPRITE_H_ +#define WEBSPRITE_H_ + +#include +#include +#include + +class CFbsBitmap; + + +NONSHARABLE_CLASS(CWebSprite) : public CCoeControl +{ + public: + static CWebSprite* NewL(TPoint& aPos, CFbsBitmap* aBitmap, CFbsBitmap* aMask, + TBool aInvertMask); + static CWebSprite* NewL(CCoeControl* aParent, TPoint& aPos, CFbsBitmap* aBitmap, + CFbsBitmap* aMask, TBool aInvertMask); + CWebSprite(); + virtual ~CWebSprite(); + + void Update(const TPoint& aPos, CFbsBitmap* aBitmap, CFbsBitmap* aMask); + void Update(CFbsBitmap* aBitmap, CFbsBitmap* aMask); + void Update(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask); + void SetBitmap(CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask); + void Hide(); + void Show(); + void Draw(const TRect& aRect) const; + void SetPos(const TPoint& aPos); + TPoint GetPos() { return Position(); } + TBool IsShown(); + + protected: + void BaseConstructL(TPoint& aPos, CFbsBitmap* aBitmap, CFbsBitmap* aMask, + TBool aInvertMask); + void BaseConstructL(CCoeControl* aParent, TPoint& aPos, CFbsBitmap* aBitmap, + CFbsBitmap* aMask, TBool aInvertMask); + private: + CWebSprite(CCoeControl* aParent, CFbsBitmap* aBitmap, CFbsBitmap* aMask, TBool aInvertMask); + void ConstructL(TPoint& aPos); + void ConstructL(CCoeControl* aParent, TPoint& aPos); + void init(TPoint& aPos, TSize aSize); + void CreateSprite(TPoint& aPos); + void UpdateSprite(); + + private: + CFbsBitmap* iBitmap; + CFbsBitmap* iMask; + TBool iInvertMask; + + RWsSprite iSprite; + RWindow* iWin; + CCoeControl* iParent; +}; + +#endif /* WEBSPRITE_H_ */ diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebView.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebView.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebView.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -59,6 +59,7 @@ #include "PluginSkin.h" #include "PluginWin.h" #include "PluginPlayer.h" +#include "WebKitLogger.h" #include "Page.h" @@ -83,6 +84,10 @@ #include "WidgetExtension.h" #include "Cache.h" #include "RenderWidget.h" +#include "HTMLNames.h" +#include "HTMLInputElement.h" + +using namespace HTMLNames; #include #include @@ -98,6 +103,7 @@ const int KRepaintDelayLoading = 500*1000; // dont do repaints more often than this during loading (0.5s) const int KRepaintDelayComplete = 100*1000; // faster updates after load so dynamic scripts etc have better frame rate (0.1s) +const int KRepaintDelayNavNone = 70*1000; const int KNormalScrollRange = 60; const int KPanningStartSpeed = 30; @@ -185,7 +191,6 @@ , m_pageFullScreenHandler(NULL) , m_viewIsScrolling(false) , m_ptrbuffer(0) -, m_pluginActivated(false) , m_showCursor(false) , m_allowRepaints(true) { @@ -200,6 +205,8 @@ delete m_pageZoomHandler; m_pageZoomHandler = NULL; + m_zoomLevelArray.Close(); + // prevent frameViews to access members when topView is // closing down. m_isClosing = true; @@ -229,6 +236,8 @@ delete m_tabbedNavigation; delete m_userAgent; delete m_pageFullScreenHandler; + delete m_bridge; + delete m_frameView; } // ----------------------------------------------------------------------------- @@ -242,7 +251,7 @@ CCoeControl::MakeVisible(ETrue); - WebFrameView *frameView = new WebFrameView(); + m_frameView = new WebFrameView(); m_page = new Page(new WebChromeClient(this), new WebContextMenuClient(), new WebEditorClient(this), new WebDragClient(), new WebInspectorClient()); m_page->backForwardList()->setCapacity(0); m_page->setGroupName("com.s60.browser"); @@ -261,8 +270,8 @@ m_tabbedNavigation = new WebTabbedNavigation(this); - WebFrameBridge* bridge = new WebFrameBridge(); - bridge->initMainFrameWithPage(m_page, "", frameView); + m_bridge = new WebFrameBridge(); + m_bridge->initMainFrameWithPage(m_page, "", m_frameView); // Create and offscreen device and context m_bitmapdevice = CFbsBitmapDevice::NewL( StaticObjectsContainer::instance()->webSurface()->offscreenBitmap() ); @@ -364,7 +373,7 @@ //------------------------------------------------------------------------------- void WebView::Draw( const TRect& rect ) const { - if (m_pluginFullscreen) return; + if (StaticObjectsContainer::instance()->isPluginFullscreen()) return; CWindowGc& gc = SystemGc(); CEikBorderedControl::Draw( rect ); @@ -549,7 +558,7 @@ return; } - if (isPluginFullscreen()) return; + if (StaticObjectsContainer::instance()->isPluginFullscreen()) return; CFbsBitGc& gc = m_webcorecontext->gc(); gc.Reset(); @@ -561,6 +570,15 @@ layoutPending = f->view()->layoutPending(); f = f->tree()->traverseNext(); } + + if (layoutPending && m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) { + Frame* f = m_page->mainFrame(); + while ( f ) { + f->view()->layout(); + f = f->tree()->traverseNext(); + } + layoutPending = false; + } if (!layoutPending) { bool needsDraw = false; m_repaints.Tidy(); @@ -588,8 +606,11 @@ // tot:fixme TBool complete = iWebkitControl->IsProgressComplete(); && CImageRendererFactory::Instance()->DecodeCount()==0; TBool complete = ETrue; + int timeout = complete ? KRepaintDelayComplete : KRepaintDelayLoading; + if (complete && m_brctl->settings() && m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) + timeout = KRepaintDelayNavNone; if ( !m_pageZoomHandler->isActive() && m_allowRepaints){ - m_repainttimer->Start(complete ? KRepaintDelayComplete : KRepaintDelayLoading, + m_repainttimer->Start(timeout, 0, TCallBack( &doRepaintCb, this ) ); } // need to draw formfill popup here. @@ -633,15 +654,23 @@ //------------------------------------------------------------------------------- void WebView::collectOffscreenbitmapL(CFbsBitmap& snapshot) { - - (snapshot).Create(m_brctl->Size(), StaticObjectsContainer::instance()->webSurface()->displayMode()); - + if ( snapshot.Handle() == 0) { + // Create bitmap only once + (snapshot).Create(m_brctl->Size(), StaticObjectsContainer::instance()->webSurface()->displayMode()); + } CFbsBitmapDevice* device = CFbsBitmapDevice::NewL( &snapshot); CleanupStack::PushL(device); WebCoreGraphicsContext* gc = WebCoreGraphicsContext::NewL( device, &snapshot, mainFrame()->frameView()); CleanupStack::PushL(gc); - + + if( snapshot.Handle() != 0 ){ + // Clear previous offscreen bitmap + // frameView->draw might clear the bitmap. + gc->gc().Clear(); + } else if (snapshot.SizeInPixels()!=m_brctl->Size()){ + snapshot.Resize(m_brctl->Size()); + } mainFrame()->frameView()->draw( *gc, mainFrame()->frameView()->visibleRect() ); CleanupStack::PopAndDestroy(2); @@ -673,34 +702,40 @@ void WebView::pageLoadFinished() { + if (m_brctl->settings()) { + switch (m_brctl->settings()->getNavigationType()) { + case SettingsContainer::NavigationTypeTabbed: + m_tabbedNavigation->initializeForPage(); + break; + case SettingsContainer::NavigationTypeNone: + break; + case SettingsContainer::NavigationTypeCursor: + { - if (m_brctl->settings() && m_brctl->settings()->getTabbedNavigation()) { - m_tabbedNavigation->initializeForPage(); - } - else { + // Temp solution to fix a problem with scrolling large pages: + // if user starts scrolling while loading a page - at the end of the load we should not restore + // the content position from the history controller + // As of now scroll events are not passed to WebCore and this will be changed in future + // then this code should be replaces with the commented one below - // Temp solution to fix a problem with scrolling large pages: - // if user starts scrolling while loading a page - at the end of the load we should not restore - // the content position from the history controller - // As of now scroll events are not passed to WebCore and this will be changed in future - // then this code should be replaces with the commented one below + TPoint ptInit(0,0); + TPoint ptFromHistory = m_brctl->historyHandler()->historyController()->currentEntryPosition(); + TPoint ptCurr = mainFrame()->frameView()->contentPos(); - TPoint ptInit(0,0); - TPoint ptFromHistory = m_brctl->historyHandler()->historyController()->currentEntryPosition(); - TPoint ptCurr = mainFrame()->frameView()->contentPos(); - - if ( ptCurr != ptFromHistory ) { - if ( ptInit == ptCurr ) { - mainFrame()->frameView()->scrollTo(ptFromHistory); - } - else { - m_brctl->historyHandler()->historyController()->updateCurrentEntryPositionIfNeeded(); + if ( ptCurr != ptFromHistory ) { + if ( ptInit == ptCurr ) { + mainFrame()->frameView()->scrollTo(ptFromHistory); + } + else { + m_brctl->historyHandler()->historyController()->updateCurrentEntryPositionIfNeeded(); + } + } + /* + if ( !core(mainFrame())->view()->wasScrolledByUser()) + mainFrame()->frameView()->scrollTo(m_brctl->historyHandler()->historyController()->currentEntryPosition());*/ + break; } } - /* - if ( !core(mainFrame())->view()->wasScrolledByUser()) - mainFrame()->frameView()->scrollTo(m_brctl->historyHandler()->historyController()->currentEntryPosition());*/ - } if (FrameLoadTypeStandard == core( mainFrame())->loader()->loadType()){ @@ -787,6 +822,8 @@ return rv; } + + bool WebView::isNaviKey(const TKeyEvent& keyevent) { return ( keyevent.iCode == EKeyUpArrow // North @@ -800,24 +837,26 @@ || keyevent.iCode == EStdKeyDevice13 // : Extra KeyEvent supports diagonal event simulator wedge || keyevent.iCode == EKeyLeftArrow // West || keyevent.iCode == EKeyLeftUpArrow // Northwest - || keyevent.iCode == EStdKeyDevice10); + || keyevent.iCode == EStdKeyDevice10); } bool WebView::handleEditable(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame ) { bool consumed = false; + if (eventcode == EEventKeyDown) + return false; consumed = frame->eventHandler()->keyEvent(PlatformKeyboardEvent(keyevent,eventcode)); // exit input on up/down key // EXCEPT on touch-enabled devices. We'll just consume in that case if ( !consumed && isNaviKey(keyevent) ) { if (m_webfeptexteditor->validateTextFormat() ) { setFocusNone(); - } + } else { consumed = true; } } - + return consumed; } @@ -836,23 +875,23 @@ event.iPosition = pos; event.iModifiers = 0; event.iType = eventType; - + switch (eventType) { case TPointerEvent::EButton1Down: { frame->eventHandler()->handleMousePressEvent(PlatformMouseEvent(event)); break; } - - case TPointerEvent::EButton1Up: + + case TPointerEvent::EButton1Up: { frame->eventHandler()->handleMouseReleaseEvent(PlatformMouseEvent(event)); break; } - + case TPointerEvent::EMove: { - frame->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event)); + frame->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event)); break; } }; @@ -875,49 +914,62 @@ bool consumed = false; TKeyEvent oldKeyEvent(m_currentEventKey); + oldKeyEvent.iCode = keyevent.iCode; + TEventCode oldKeyCode = m_currentEventCode; bool downEventConsumed = false; - if (m_currentEventCode == EEventKeyDown && - keyevent.iCode != EKeyDevice3 ){ - sendKeyEventToEngine(oldKeyEvent, EEventKeyDown, frame); - } m_currentEventKey = keyevent; m_currentEventCode = eventcode; - if (keyevent.iCode == EKeyDevice3) { - // pass it to webcore - sendMouseEventToEngine(TPointerEvent::EButton1Down, - cursor->position(), frame); - // mimic ccb's behavior of onFocus - setFocusedNode(frame); + if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) { + consumed = handleInputElement(keyevent, eventcode, frame); + if (!consumed) + consumed = sendKeyEventToEngine(keyevent, eventcode, frame); + } + else { + if (keyevent.iCode == EKeyDevice3) { + // pass it to webcore + sendMouseEventToEngine(TPointerEvent::EButton1Down, + cursor->position(), frame); + + // mimic ccb's behavior of onFocus + setFocusedNode(frame); - // Toolbar is activated on long key press only if the element - // type is EElementNone during EEventKeyDown and EEventKey. - // This prevents toolbar from popping up in DHTML pages. Also, - // toolbar is activated when the user is not in fast scroll - // mode, or in page overview mode, or on wml page. - if ( ( m_focusedElementType == TBrCtlDefs::EElementNone || - m_focusedElementType == TBrCtlDefs::EElementBrokenImage ) && - keyevent.iRepeats && !m_brctl->wmlMode() ) { - launchToolBarL(); - } - consumed = true; + // Toolbar is activated on long key press only if the element + // type is EElementNone during EEventKeyDown and EEventKey. + // This prevents toolbar from popping up in DHTML pages. Also, + // toolbar is activated when the user is not in fast scroll + // mode, or in page overview mode, or on wml page. + if ( ( m_focusedElementType == TBrCtlDefs::EElementNone || + m_focusedElementType == TBrCtlDefs::EElementBrokenImage ) && + keyevent.iRepeats && !m_brctl->wmlMode() ) { + launchToolBarL(); + } + consumed = true; + } + else if (isNaviKey(keyevent)) { + + if (oldKeyCode == EEventKeyDown){ + // Keydown event is automatically generated before each keypress event, but in this case + // we don't send a keypress event, so send a keydown event explicitly. + downEventConsumed = sendKeyEventToEngine(oldKeyEvent, EEventKeyDown, frame); + } + + + if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed) { + consumed = downEventConsumed || handleTabbedNavigation(keyevent, eventcode); + } + else { + consumed = handleKeyNavigation(keyevent, eventcode, frame); + } + } // if (m_brctl->settings()->getNavigationType() + else { // Not an arrow key.. + // activate hovered input element by just start typing + consumed = handleInputElement(keyevent, eventcode, frame); + } + if (!consumed && !(m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed && isNaviKey(keyevent))) { + consumed = sendKeyEventToEngine(keyevent, eventcode, frame); + } } - else if (isNaviKey(keyevent)) { - if (m_brctl->settings()->getTabbedNavigation()) { - consumed = downEventConsumed || handleTabbedNavigation(keyevent, eventcode); - } - else { - consumed = handleKeyNavigation(keyevent, eventcode, frame); - } - } // if (m_brctl->settings()->getTabbedNavigation() - else { // Not an arrow key.. - // activate hovered input element by just start typing - consumed = handleInputElement(keyevent, eventcode, frame); - } - - if (!consumed) { - consumed = sendKeyEventToEngine(keyevent, eventcode, frame); - } return consumed; } @@ -925,15 +977,22 @@ bool WebView::handleInputElement(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) { WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); - if (m_focusedElementType == TBrCtlDefs::EElementInputBox || - m_focusedElementType == TBrCtlDefs::EElementSelectBox || - m_focusedElementType == TBrCtlDefs::EElementSelectMultiBox || + bool sendMousedEvent = false; + if (m_focusedElementType == TBrCtlDefs::EElementInputBox || m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) { - + sendMousedEvent = true; + } + else if (m_focusedElementType == TBrCtlDefs::EElementSelectBox || + m_focusedElementType == TBrCtlDefs::EElementSelectMultiBox) { + if (m_brctl->settings()->getNavigationType() != SettingsContainer::NavigationTypeNone || keyevent.iCode == EKeyDevice3) { + sendMousedEvent = true; + } + } + if (sendMousedEvent) { sendMouseEventToEngine(TPointerEvent::EButton1Down, cursor->position(), frame); sendMouseEventToEngine(TPointerEvent::EButton1Up, cursor->position(), frame); - - if (m_focusedElementType == TBrCtlDefs::EElementInputBox || + + if (m_focusedElementType == TBrCtlDefs::EElementInputBox || m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) { if (!m_fepTimer) { m_fepTimer = new WebCore::Timer(this, &WebView::fepTimerFired); @@ -944,8 +1003,9 @@ } m_keyevent = keyevent; m_eventcode = eventcode; + return true; } - return true; + return false; // not input element } @@ -960,7 +1020,7 @@ if (!cursor->isVisible()) { cursor->cursorUpdate(true); } - + m_savedPosition = mainFrame()->frameView()->contentPos(); cursor->scrollAndMoveCursor(keyevent.iCode, m_scrollingSpeed, fastscroll); updateScrollbars(); @@ -975,7 +1035,7 @@ if (!fastscroll) { sendMouseEventToEngine(TPointerEvent::EMove, cursor->position(), frame); } - + consumed = true; return consumed; } @@ -984,7 +1044,7 @@ bool WebView::handleMinimapNavigation() { int scrollingTime = millisecondsScrolled(); - if (!AknLayoutUtils::PenEnabled() && m_pageScalerEnabled && + if (!AknLayoutUtils::PenEnabled() && m_pageScalerEnabled && m_pageScaler && !isSmallPage() && m_brctl->settings()->brctlSetting(TBrCtlDefs::ESettingsPageOverview) && (scrollingTime > KPanningPageScalerStart || m_pageScaler->Visible())) { @@ -1051,6 +1111,7 @@ bool consumed = false; TInt delay = 2 * KCursorInitialDelay; WebCursor* cursor = StaticObjectsContainer::instance()->webCursor(); + m_fastScrollTimer->Cancel(); m_scrollingSpeed = KNormalScrollRange*100/scalingFactor(); @@ -1064,38 +1125,42 @@ } m_pageScrollHandler->scrollbarDrawer()->fadeScrollbar(delay); - if ( (keyevent.iScanCode == EStdKeyDevice3) || - (keyevent.iScanCode == EStdKeyEnter) ) { - // pass it to webcore - - if (m_focusedElementType == TBrCtlDefs::EElementInputBox || + if ( (keyevent.iScanCode == EStdKeyDevice3) || + (keyevent.iScanCode == EStdKeyEnter) ) { + // pass it to webcore + + if (m_focusedElementType == TBrCtlDefs::EElementInputBox || m_focusedElementType == TBrCtlDefs::EElementTextAreaBox) { setEditable(true); } - sendMouseEventToEngine(TPointerEvent::EButton1Up, cursor->position(), frame); - consumed = true; + if (m_brctl->settings()->getNavigationType() != SettingsContainer::NavigationTypeNone) { + sendMouseEventToEngine(TPointerEvent::EButton1Up, cursor->position(), frame); + consumed = true; + } } - if (!consumed) { - sendKeyEventToEngine(keyevent, eventcode, frame); - } - m_currentEventKey = KNullKeyEvent; - m_currentEventCode = EEventNull; + + if (!consumed) { + + TKeyEvent correctedKeyEvent(keyevent); + correctedKeyEvent.iCode = m_currentEventKey.iCode; + sendKeyEventToEngine(correctedKeyEvent, eventcode, frame); + } + m_currentEventKey = KNullKeyEvent; + m_currentEventCode = EEventNull; return consumed; } -bool WebView::sendKeyEventToEngine(const TKeyEvent& keyevent, +bool WebView::sendKeyEventToEngine(const TKeyEvent& keyevent, TEventCode eventcode, Frame* frame) { bool consumed = frame->eventHandler()->keyEvent(PlatformKeyboardEvent(keyevent,eventcode)); - - if (!consumed && eventcode == EEventKey && + if (!consumed && eventcode == EEventKey && (m_brctl->capabilities() & TBrCtlDefs::ECapabilityAccessKeys)) { - TKeyEvent ke = keyevent; TChar c(ke.iCode); // Not consumed by WebCore, is alphanumeric and does not have any modifier - if (c.IsAlphaDigit() && + if (c.IsAlphaDigit() && !(ke.iModifiers & (EModifierCtrl | EModifierAlt | EModifierShift))) { ke.iModifiers = EModifierCtrl; frame->eventHandler()->keyEvent(PlatformKeyboardEvent(ke,EEventKeyDown)); @@ -1130,12 +1195,12 @@ if (!coreFrame) return EKeyWasNotConsumed; coreFrame = page()->focusController()->focusedOrMainFrame(); - + // edit events if (m_isEditable) { consumed = handleEditable(keyevent, eventcode, coreFrame); } - + // scroll events if (!consumed) { switch( eventcode ) { @@ -1162,6 +1227,8 @@ (displayPosY * scalingFactor()) / 100, (documentWidth * scalingFactor()) / 100, Rect().Width(), (displayPosX * scalingFactor()) / 100); } + + void WebView::updateScrollbars() { TPoint scrollDelta = mainFrame()->frameView()->contentPos() - m_savedPosition; @@ -1177,6 +1244,7 @@ } } + void WebView::openPageViewL() { // don't show pageview if we are in lite mode @@ -1404,28 +1472,6 @@ void WebView::FocusChanged(TDrawNow aDrawNow) { -if (m_isPluginsVisible && !m_pluginActivated) { - Frame* coreFrame =core(mainFrame()); - MWebCoreObjectWidget* view = NULL; - TBool focus(IsFocused()); - for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) { - PassRefPtr objects = frame->document()->objects(); - for (Node* n = objects->firstItem(); n; n = objects->nextItem()) { - view = widget(n); - if (view) { - static_cast(view)->viewFocusChanged(focus); - } - } - - PassRefPtr embeds = frame->document()->embeds(); - for (Node* n = embeds->firstItem(); n; n = embeds->nextItem()) { - view = widget(n); - if (view) { - static_cast(view)->viewFocusChanged(focus); - } - } - } - } if (m_pageFullScreenHandler && m_pageFullScreenHandler->isFullScreenMode()) { if (IsFocused()) m_pageFullScreenHandler->showEscBtnL(); else m_pageFullScreenHandler->hideEscBtnL(); @@ -1447,9 +1493,11 @@ if (m_pageFullScreenHandler) { m_pageFullScreenHandler->SizeChanged(); } - if (m_viewIsScrolling) { + + if (m_pageScrollHandler) { m_pageScrollHandler->scrollbarDrawer()->redrawScrollbar(); } + } TSize WebView::maxBidiSize() const @@ -1582,9 +1630,9 @@ { if (!m_findKeyword) { WebFrame* frame = mainFrame()->findFrameWithSelection(); - if (frame) { - frame->clearSelection(); - } + if(frame) { + frame->clearSelection(); + } return TBrCtlDefs::EFindNoMatches; } return search(*m_findKeyword, forward, true); @@ -1681,8 +1729,12 @@ TPtr8 ptr((TUint8 *)m_ptrbuffer,256*sizeof(TPoint)); TInt numPnts = Window().RetrievePointerMoveBuffer(ptr); - - for (int i = 0; i < numPnts; i++) { + int i = 0; + if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) { + if (numPnts > 20) + i = numPnts - 20; + } + for (; i < numPnts; i++) { TPointerEvent pe; pe.iType = TPointerEvent::EDrag; pe.iPosition = m_ptrbuffer[i]; @@ -1703,9 +1755,12 @@ { if (name == "navigation") { if (value == "tabbed") { - m_brctl->settings()->setTabbedNavigation(true); + m_brctl->settings()->setNavigationType(SettingsContainer::NavigationTypeTabbed); StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true); } + else if (value == "none") { + m_brctl->settings()->setNavigationType(SettingsContainer::NavigationTypeNone); + } } } @@ -1884,7 +1939,7 @@ //------------------------------------------------------------------------------- void WebView::resetZoomLevel(void) { - if( m_widgetextension && m_widgetextension->IsWidgetPublising()) { + if( m_widgetextension ) { return ; } if (m_historyLoad) { @@ -1962,8 +2017,10 @@ { m_minZoomLevel = newMinZoomLevel; if (m_pageZoomHandler->isActive()) { + TRAP_IGNORE( m_pageZoomHandler->hideZoomSliderL(); m_pageZoomHandler->showZoomSliderL(); + ); } else { UpdateZoomArray(); //for non-touch @@ -2097,25 +2154,25 @@ // Double Tap Zooming: it toggles between default, maxiZoomLevel. // Depending on the current zoom level: - // A. If the current is already the max, it zooms to the max + // A. If the current is already the max, it zooms to the max // B. If the current is bigger than/equal to the default zoom level zooms to the default, it zooms to the max - // C. Otherwise it zooms to the default level first. + // C. Otherwise it zooms to the default level first. // For the mobile pages, such as google.com and cnn.com, minimum zoom level equals // to the default zoom level. Zooming is only possible between default and maximum // zoom level, double tap only won't reach logic C // - // For both mobile and non-mobile pages, it creates the same end user double tap - // experiences - + // For both mobile and non-mobile pages, it creates the same end user double tap + // experiences + if (m_currentZoomLevel == m_maxZoomLevel ) { - zoomLevel = KZoomLevelDefaultValue; + zoomLevel = KZoomLevelDefaultValue; } else if (m_currentZoomLevel >= KZoomLevelDefaultValue ) { zoomLevel = m_maxZoomLevel; - } + } else { - zoomLevel = KZoomLevelDefaultValue; - } + zoomLevel = KZoomLevelDefaultValue; + } // move the content WebFrameView* view = mainFrame()->frameView(); @@ -2139,11 +2196,11 @@ } //------------------------------------------------------------------------------- -// WebView::openPluginPlayer +// WebView::openPluginPlayerL // Called when user clicks a plugin which is able to accept user input, // this feature is only used in US build //------------------------------------------------------------------------------- -void WebView::openPluginPlayer(PluginWin* plugin) +void WebView::openPluginPlayerL(PluginWin* plugin) { if (!m_pluginplayer) { PluginSkin* pluginskin = mainFrame()->focusedPlugin(); @@ -2194,6 +2251,8 @@ #endif } + //Widgets dont need memory cache for dead objects. hence set it to 0 + cache()->setCapacities(0, 0, 0); return m_widgetextension; } @@ -2327,7 +2386,7 @@ } //------------------------------------------------------------------------------- -// WebView::notifyFullscreenModeChangeL +// WebView::nootifyFullscreenModeChangeL //------------------------------------------------------------------------------- void WebView::notifyFullscreenModeChangeL(bool mode) { @@ -2389,32 +2448,6 @@ void WebView::setRedirectWithLockedHistory(bool value) { m_redirectWithLockedHistory = value; } -//------------------------------------------------------------------------------- -// WebView::notifyPlugins -// Webview notifies plugins to handle play/pause of .swf files when user switches to menu/another application -//------------------------------------------------------------------------------- -void WebView::notifyPlugins(TBool focus) -{ - Frame* coreFrame =core(mainFrame()); - MWebCoreObjectWidget* view = NULL; - for (Frame* frame = coreFrame; frame; frame = frame->tree()->traverseNext(coreFrame)) { - PassRefPtr objects = frame->document()->objects(); - for (Node* n = objects->firstItem(); n; n = objects->nextItem()) { - view = widget(n); - if (view) { - static_cast(view)->handlePluginForeground(focus); - } - } - - PassRefPtr embeds = frame->document()->embeds(); - for (Node* n = embeds->firstItem(); n; n = embeds->nextItem()) { - view = widget(n); - if (view) { - static_cast(view)->handlePluginForeground(focus); - } - } - } -} void WebView::setFastScrollingMode(bool fastScrolling) @@ -2519,4 +2552,56 @@ StaticObjectsContainer::instance()->webCursor()->setCursorVisible(showCursor); } +void WebView::focusedElementChanged(Element* element) +{ + Frame* frame = element->document()->frame(); + WebFrameView* fv = kit(frame)->frameView(); + if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed || m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeNone) { + if (!element || !element->document() ||!element->renderer()) return; + if (element->hasTagName(textareaTag) || (element->hasTagName(inputTag) && (reinterpret_cast(element))->isTextField())) { + TPoint point = TRect(element->getRect()).iTl; + point = fv->frameCoordsInViewCoords(point); + StaticObjectsContainer::instance()->webCursor()->setPosition(point); + TPointerEvent event; + event.iPosition = StaticObjectsContainer::instance()->webCursor()->position(); + event.iModifiers = 0; + event.iType = TPointerEvent::EMove; + core(mainFrame())->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event)); + + } + else { + int x, y; + element->renderer()->absolutePosition(x, y); + Vector rects; + element->renderer()->absoluteRects(rects, x, y); + TPoint point; + if (rects.size() > 0) { + point = TPoint(rects[0].x(), rects[0].y()); + point = fv->frameCoordsInViewCoords(point); + StaticObjectsContainer::instance()->webCursor()->setPosition(point); + TPointerEvent event; + event.iPosition = StaticObjectsContainer::instance()->webCursor()->position(); + event.iModifiers = 0; + event.iType = TPointerEvent::EMove; + core(mainFrame())->eventHandler()->handleMouseMoveEvent(PlatformMouseEvent(event)); + } + } + + if (m_brctl->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed) { + m_tabbedNavigation->focusedElementChanged(element); + } + // onload event on the first page could happen before the view becomes visible + m_savedCursorPosition = StaticObjectsContainer::instance()->webCursor()->position(); + m_focusedElementType = nodeTypeB(element, frame); + } +} + +void WebView::windowObjectCleared() const +{ + if (m_widgetextension) { + WebView* that = const_cast(this); + that->m_widgetextension->windowObjectCleared(); + } +} + // END OF FILE diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WebView.h --- a/webengine/osswebengine/WebKit/s60/webview/WebView.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebView.h Fri Jul 03 15:54:40 2009 +0100 @@ -22,7 +22,7 @@ // INCLUDES #include #include -#include "platform/Shared.h" +#include "platform\Shared.h" #include "BrCtlDefs.h" #include "PageScaler.h" #include "Timer.h" @@ -64,6 +64,8 @@ class WebPageZoomHandler; class WebPointerEventHandler; class WebPageFullScreenHandler; +class WebFrameView; +class WebFrameBridge; class WebView : public CEikBorderedControl, public WebCore::Shared, private MPageScalerCallback, public MOOMStopper { @@ -184,7 +186,7 @@ PluginPlayer* pluginPlayer() { return m_pluginplayer; } void closePluginPlayer(); - void openPluginPlayer(PluginWin* plugin); + void openPluginPlayerL(PluginWin* plugin); void setAccessPointId(TUint32 apid) {m_apid = apid;} TUint32 accessPointId() { return m_apid; } @@ -384,7 +386,6 @@ TBool TouchScrolling() ; CCoeControl& PageControlView(); - void notifyPlugins(TBool focus); protected: // From CCoeControl @@ -454,24 +455,27 @@ bool handleInputElement(const TKeyEvent& keyevent, TEventCode eventcode, WebCore::Frame* frame); bool handleEventKeyL(const TKeyEvent& keyevent, TEventCode eventcode, WebCore::Frame* frame); void setFocusedNode(WebCore::Frame* frame); - void sendMouseEventToEngine(TPointerEvent::TType eventType, TPoint pos, WebCore::Frame* frame); + bool handleEventKeyUp(const TKeyEvent& keyevent, TEventCode eventcode, WebCore::Frame* frame); bool handleEditable(const TKeyEvent& keyevent, TEventCode eventcode, WebCore::Frame* frame ); bool isNaviKey(const TKeyEvent& keyevent); public: + void sendMouseEventToEngine(TPointerEvent::TType eventType, TPoint pos, WebCore::Frame* frame); void fepTimerFired(WebCore::Timer*); void fepVKBTimerFired(WebCore::Timer*); bool isClosing() const { return m_isClosing; } void synchRequestPending(bool); bool isSynchRequestPending() const { return m_synchRequestPending; } - void setPluginFullscreen(bool val) { m_pluginFullscreen = val; } - bool isPluginFullscreen() { return m_pluginFullscreen; } - void setPluginActivated(bool option) {m_pluginActivated = option;} TInt getWidgetId(); + void focusedElementChanged(WebCore::Element* element); + void windowObjectCleared() const; + private: - WebCore::Page* m_page; - CBrCtl* m_brctl; + WebCore::Page* m_page; + WebFrameView* m_frameView; + WebFrameBridge* m_bridge; + CBrCtl* m_brctl; RRegion m_repaints; CPeriodic* m_repainttimer; WebCoreGraphicsContext* m_webcorecontext; // owned @@ -544,9 +548,7 @@ // synchronous requests bool m_synchRequestPending; - bool m_pluginFullscreen; //Indicates any plugin is activated/deactivated - bool m_pluginActivated; bool m_showCursor; bool m_allowRepaints; }; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WidgetExtension.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WidgetExtension.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WidgetExtension.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -69,44 +69,31 @@ CWidgetExtension::~CWidgetExtension() { delete m_widgetengine; - m_widgetLibrary.Close(); #if defined(BRDO_LIW_FF) delete m_deviceBridge; - m_deviceLibrary.Close(); #endif } void CWidgetExtension::ConstructL(MWidgetCallback& aWidgetCallback) { if (!m_widgetengine) { - _LIT( KBrowserWidgetEngineName, "widgetengine.dll" ); - User::LeaveIfError( m_widgetLibrary.Load(KBrowserWidgetEngineName) ); - TLibraryFunction entry = m_widgetLibrary.Lookup(1); - if (!entry) { + + m_widgetengine = WebCore::StaticObjectsContainer::instance()->getWidgetEngineBridgeL(); + if(!m_widgetengine) { User::Leave(KErrNotFound); } - m_widgetengine = (MWidgetEngineBridge*) entry(); + m_widgetcallback = &aWidgetCallback; - if (m_widgetengine) { - AddJSExtension(_L("widget"),m_widgetengine->Widget(*m_widgetcallback, *this)); - AddJSExtension(_L("menu"),m_widgetengine->Menu(*m_widgetcallback, *this)); - AddJSExtension(_L("MenuItem"),m_widgetengine->MenuItem(*m_widgetcallback, *this)); - } #if defined(BRDO_LIW_FF) // device for SAPI - _LIT( KDeviceDLLName, "jsdevice.dll" ); - User::LeaveIfError( m_deviceLibrary.Load(KDeviceDLLName) ); - TLibraryFunction device_entry = m_deviceLibrary.Lookup(1); - if (!device_entry) { + + m_deviceBridge = WebCore::StaticObjectsContainer::instance()->getDeviceBridgeL(); + if (!m_deviceBridge) { User::Leave(KErrNotFound); } - m_deviceBridge = (MDeviceBridge*) device_entry(); - - if (m_deviceBridge) { - AddJSExtension(_L("device"), m_deviceBridge->Device(0)); - } + #endif if (m_webview && m_webview->page()) { @@ -224,10 +211,38 @@ void CWidgetExtension::setTabbednavigation(bool aOn) { - m_webview->brCtl()->settings()->setTabbedNavigation(aOn); + m_webview->brCtl()->settings()->setNavigationType(aOn ? SettingsContainer::NavigationTypeTabbed : SettingsContainer::NavigationTypeCursor); + WebCore::StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true); +} + +void CWidgetExtension::setNavigationType(const TDesC& aType) +{ + if (aType.Compare(_L("cursor")) == 0) + m_webview->brCtl()->settings()->setNavigationType(SettingsContainer::NavigationTypeCursor); + else if (aType.Compare(_L("tabbed")) == 0) + m_webview->brCtl()->settings()->setNavigationType(SettingsContainer::NavigationTypeTabbed); + else if (aType.Compare(_L("none")) == 0) + m_webview->brCtl()->settings()->setNavigationType(SettingsContainer::NavigationTypeNone); WebCore::StaticObjectsContainer::instance()->webCursor()->cursorUpdate(true); } +void CWidgetExtension::windowObjectCleared() +{ + if (m_widgetengine) { + m_widgetengine->Clear(); + AddJSExtension(_L("widget"),m_widgetengine->Widget(*m_widgetcallback, *this)); + AddJSExtension(_L("menu"),m_widgetengine->Menu(*m_widgetcallback, *this)); + AddJSExtension(_L("MenuItem"),m_widgetengine->MenuItem(*m_widgetcallback, *this)); + } + +#if defined(BRDO_LIW_FF) + if (m_deviceBridge) { + m_deviceBridge->Clear(); + AddJSExtension(_L("device"), m_deviceBridge->Device(0)); + m_deviceBridge->SetUid( iWidgetId); + } +#endif +} //END OF FILE diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/WidgetExtension.h --- a/webengine/osswebengine/WebKit/s60/webview/WidgetExtension.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WidgetExtension.h Fri Jul 03 15:54:40 2009 +0100 @@ -66,13 +66,14 @@ void setLeftSoftKeyLabel(const TDesC& aText); void setTabbednavigation(bool aOn); bool IsWidgetPublising(){ return m_isWidgetPublishing;} + void setNavigationType(const TDesC& aType); + void windowObjectCleared(); private: void AddJSExtension(const TDesC& id, void* obj); CWidgetExtension(WebView& aWebKitView); void ConstructL(MWidgetCallback& aWidgetCallback); - RLibrary m_widgetLibrary; WebView* m_webview; MWidgetEngineBridge* m_widgetengine; @@ -81,7 +82,6 @@ bool m_isWidgetPublishing; #if defined(BRDO_LIW_FF) - RLibrary m_deviceLibrary; MDeviceBridge* m_deviceBridge; #endif }; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKit/s60/webview/webview_api_test/tsrc/group/WebViewApiTest.mmp --- a/webengine/osswebengine/WebKit/s60/webview/webview_api_test/tsrc/group/WebViewApiTest.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/webview_api_test/tsrc/group/WebViewApiTest.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -30,7 +30,11 @@ /* Remove comments and replace 0x00000000 with correct secure id */ // SECUREID 0x00000000 -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif DEFFILE WebViewApiTest.def diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/WebKitTools/GtkLauncher/GtkLauncher.pro --- a/webengine/osswebengine/WebKitTools/GtkLauncher/GtkLauncher.pro Fri May 08 08:25:06 2009 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,10 +0,0 @@ -TEMPLATE = app -SOURCES += main.cpp -CONFIG -= app_bundle - -BASE_DIR = $$PWD/../.. - -include(../../WebKit.pri) - - -QMAKE_RPATHDIR += $$OUTPUT_DIR/lib diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/cache/conf/httpcachemanager.confml Binary file webengine/osswebengine/cache/conf/httpcachemanager.confml has changed diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/cache/inc/HttpCacheLookupTable.h --- a/webengine/osswebengine/cache/inc/HttpCacheLookupTable.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/cache/inc/HttpCacheLookupTable.h Fri Jul 03 15:54:40 2009 +0100 @@ -94,6 +94,14 @@ * @param * @return */ + TInt RemoveByPosition( TInt aPos ); + + /** + * + * @since 3.1 + * @param + * @return + */ TInt RemoveAll(); /** @@ -144,6 +152,14 @@ */ void MergeL( CHttpCacheLookupTable* aHttpCacheLookupTable, RFs aRfs ); + /** + * + * @since 7.1 + * @param + * @return + */ + void FindCacheEntryIndex( const CHttpCacheEntry& aCacheEntry, TInt* aIndex ); + private: /** diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/cache/src/HttpCacheHandler.cpp --- a/webengine/osswebengine/cache/src/HttpCacheHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/cache/src/HttpCacheHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -681,7 +681,7 @@ iStreamHandler->Detach( *entry ); // Clear the flushed cache buffer, we were using for incoming body - entry->SetCacheBufferL( KBufferSizeZero ); + TRAP_IGNORE( entry->SetCacheBufferL( KBufferSizeZero ) ); } } else if( entry->State() == CHttpCacheEntry::ECacheDestroyed ) @@ -1003,16 +1003,40 @@ CArrayPtrFlat* evictedList = iEvictionHandler->EvictL( aSize ); if ( evictedList && evictedList->Count() ) { - // destroy items + // Delete entry items marked for eviction CHttpCacheEntry* entry; - for( TInt i = 0; i < evictedList->Count(); i++ ) + for ( TInt i = 0; i < evictedList->Count(); i++ ) { - // entry = evictedList->At( i ); - if( entry ) + + if ( entry ) { - // destroy - iLookupTable->Remove( entry->Url() ); + // Handle removing valid and invalid entries. Check entry + // for validity, and if in lookup table. It has been + // found that the evictList can have invalid entries in it. + // These invalid entries are not in the lookup table. + TInt lookupTableIndex( -1 ); + iLookupTable->FindCacheEntryIndex( *entry, &lookupTableIndex ); + + TInt sizeBody = entry->BodySize(); + if ( sizeBody == 0 && lookupTableIndex >= 0 ) + { + // This is an empty body cache entry that exists + // in the lookup table, remove it from file system and + // lookup table. + // Use CreateNewFilesL() to open file handles, so we can delete + // the files associated with the cache entry. We don't check + // return value of RemoveByPosition(), because we already + // checked for index in FindCacheEntryIndex(). + iStreamHandler->CreateNewFilesL( *entry ); + iStreamHandler->EraseCacheFile( *entry ); + iLookupTable->RemoveByPosition( lookupTableIndex ); + } + else if ( lookupTableIndex >= 0 ) + { + // Remove valid entries that are found in lookup table + iLookupTable->Remove( entry->Url() ); + } } } @@ -1029,6 +1053,8 @@ #endif ok = EFalse; } + + // Cleanup the evicted list, including any invalid entries delete evictedList; } return ok; @@ -1212,9 +1238,14 @@ } if( ret == KErrNone ) { - CleanupClosePushL( readStream ); - aLookupTable->InternalizeL( readStream, iDirectory->Des() ); - CleanupStack::PopAndDestroy(1); // readStream + TRAPD ( err, aLookupTable->InternalizeL( readStream, iDirectory->Des() ) ); + readStream.Close(); + if ( err != KErrNone ) + { + // In case Bad Things Happen (TM), do RemoveAllL() which clears this cache's + // in-memory data structures + saves an updated lookup table to disk replacing the old one. + TRAP_IGNORE( RemoveAllL() ); + } } } @@ -1232,7 +1263,9 @@ RFileWriteStream writeStream; // Don't get notified about own changes - iHttpCacheObserver->Cancel(); + if ( iHttpCacheObserver ) + iHttpCacheObserver->Cancel(); + TInt ret = KErrNone; TInt tryCount = 0; for (tryCount = 0; tryCount < 5; tryCount++) @@ -1256,7 +1289,9 @@ writeStream.CommitL(); CleanupStack::PopAndDestroy(); // writeStream } - iHttpCacheObserver->StartObserver(); + + if ( iHttpCacheObserver ) + iHttpCacheObserver->StartObserver(); } // ----------------------------------------------------------------------------- @@ -1327,7 +1362,9 @@ void CHttpCacheHandler::UpdateLookupTable() { TRAP_IGNORE(UpdateLookupTableL()); - iHttpCacheObserver->StartObserver(); + + if ( iHttpCacheObserver ) + iHttpCacheObserver->StartObserver(); } // ----------------------------------------------------------------------------- diff -r 7c90e6132015 -r 10e98eab6f85 webengine/osswebengine/cache/src/HttpCacheLookupTable.cpp --- a/webengine/osswebengine/cache/src/HttpCacheLookupTable.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/osswebengine/cache/src/HttpCacheLookupTable.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -233,6 +233,27 @@ } // ----------------------------------------------------------------------------- +// CHttpCacheLookupTable::RemoveByPosition +// +// ----------------------------------------------------------------------------- +// +TInt CHttpCacheLookupTable::RemoveByPosition( TInt aPos ) + { + TInt status( KErrNotFound ); + + if ( Valid( aPos ) ) + { + CHttpCacheEntry* entry = iEntries->At( aPos ); + SetDeleted( aPos ); + delete entry; + iCount--; + status = KErrNone; + } + + return status; + } + +// ----------------------------------------------------------------------------- // CHttpCacheLookupTable::EraseCacheEntry // // ----------------------------------------------------------------------------- @@ -350,21 +371,26 @@ CHttpCacheEntry* entry = CHttpCacheEntry::NewLC( KNullDesC8, *iEvictionHandler ); // read it err = entry->Internalize( aReadStream ); - // leave only on no memory - if( err == KErrNone ) + + if ( err == KErrNone && entry->BodySize() > 0 ) { - // insert to the table + // cacheEntry is valid, insert into the table InsertL( entry ); contentSize += entry->HeaderSize(); contentSize += entry->BodySize(); } else if ( err == KErrNoMemory ) { + // Only leave if no memory User::Leave( KErrNoMemory ); } - else + else if ( entry->BodySize() == 0 ) { - // suggestions + // This is an empty cache entry, remove it from file system. + // Use CreateNewFilesL() to open file handles, so we can delete + // the files associated with the cache entry. + iStreamHandler->CreateNewFilesL( *entry ); + iStreamHandler->EraseCacheFile( *entry ); } // takes ownership @@ -690,8 +716,7 @@ // // ----------------------------------------------------------------------------- // -TBool CHttpCacheLookupTable::Valid( - TInt aPos ) +TBool CHttpCacheLookupTable::Valid( TInt aPos ) { return( BoundaryCheck( aPos ) && !Empty( aPos ) && !Deleted( aPos ) ); } @@ -701,8 +726,7 @@ // // ----------------------------------------------------------------------------- // -TBool CHttpCacheLookupTable::Empty( - TInt aPos ) +TBool CHttpCacheLookupTable::Empty( TInt aPos ) { return( BoundaryCheck( aPos ) && iEntries->At( aPos ) == NULL ); } @@ -809,4 +833,30 @@ } } } + +// ----------------------------------------------------------------------------- +// CHttpCacheLookupTable::FindCacheEntryIndex +// +// ----------------------------------------------------------------------------- +// +void CHttpCacheLookupTable::FindCacheEntryIndex( + const CHttpCacheEntry& aCacheEntry, + TInt* aIndex ) + { + *aIndex = -1; + for ( TInt i = 0; i < iEntries->Count(); i++ ) + { + CHttpCacheEntry* entry = iEntries->At( i ); + + if ( entry == &aCacheEntry ) + { + if ( aIndex ) + { + *aIndex = i; + } + break; + } + } + } + // End of File diff -r 7c90e6132015 -r 10e98eab6f85 webengine/webkitutils/HistoryProvider/HistoryController.cpp --- a/webengine/webkitutils/HistoryProvider/HistoryController.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/webkitutils/HistoryProvider/HistoryController.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -56,7 +56,7 @@ HistoryController::~HistoryController() { - clearHistoryList(); + m_historyStack.ResetAndDestroy(); } /** @@ -229,6 +229,7 @@ delete deadEntry; } } + m_currentIndex = (m_currentIndex != -1) ? 0: m_currentIndex ; m_tempCurrentIndex = m_currentIndex; m_historyLoadOffset = 0; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/webkitutils/HistoryProvider/HistoryEntry.cpp --- a/webengine/webkitutils/HistoryProvider/HistoryEntry.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/webkitutils/HistoryProvider/HistoryEntry.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -149,8 +149,10 @@ } if (m_thumbnailBuf) { RBufWriteStream stream(*m_thumbnailBuf); + CleanupClosePushL(stream); TRAPD(err, thumbnail->ExternalizeRectangleL(stream, area)); stream.Close(); + CleanupStack::PopAndDestroy(); //stream if (err) { delete m_thumbnailBuf; m_thumbnailBuf = 0; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/webkitutils/ToolBar/ToolBar.cpp --- a/webengine/webkitutils/ToolBar/ToolBar.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/webkitutils/ToolBar/ToolBar.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -523,7 +523,10 @@ // ---------------------------------------------------------------------------- CToolBar::~CToolBar() { - iToolBarCallback->SetAndUpdateCursorPosition(iOrigCursorPos); + if( iToolBarCallback ) + { + iToolBarCallback->SetAndUpdateCursorPosition(iOrigCursorPos); + } if (iButtonArray != NULL) { iButtonArray->ResetAndDestroy(); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/webkitutils/ToolBar/ToolBarButton.cpp --- a/webengine/webkitutils/ToolBar/ToolBarButton.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/webkitutils/ToolBar/ToolBarButton.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -843,53 +843,84 @@ TRect boundingRect(TPoint(0,0),TSize(w,h)); //mask - iToolTipMask = new (ELeave) CFbsBitmap; - User::LeaveIfError( iToolTipMask->Create( TSize(w,h), EColor16MA ) ); - iToolTipMaskDevice = CFbsBitmapDevice::NewL( iToolTipMask ); - User::LeaveIfError( iToolTipMaskDevice->CreateContext( iToolTipMaskContext ) ); - iToolTipMaskContext->SetPenColor(KRgbBlack); - iToolTipMaskContext->SetBrushColor(KRgbBlack); - iToolTipMaskContext->SetBrushStyle(CGraphicsContext::ESolidBrush); - iToolTipMaskContext->SetPenStyle(CGraphicsContext::ESolidPen); - iToolTipMaskContext->DrawRoundRect(boundingRect,TSize(4,4)); - - //bitmap - iToolTipBitmap = new (ELeave) CFbsBitmap; - User::LeaveIfError( iToolTipBitmap->Create( TSize(w,h), EColor16MA ) ); - iToolTipBitmapDevice = CFbsBitmapDevice::NewL( iToolTipBitmap ); - User::LeaveIfError( iToolTipBitmapDevice->CreateContext( iToolTipBitmapContext ) ); - iToolTipBitmapContext->SetPenColor(KRgbBlack); - iToolTipBitmapContext->SetBrushColor(TRgb(0xfa,0xfa,0xd2)); - iToolTipBitmapContext->SetBrushStyle(CGraphicsContext::ESolidBrush); - iToolTipBitmapContext->SetPenStyle(CGraphicsContext::ESolidPen); - iToolTipBitmapContext->DrawRoundRect(boundingRect,TSize(4,4)); + TRAP( err, + { + iToolTipMask = new (ELeave) CFbsBitmap; + if(KErrNone == iToolTipMask->Create( TSize(w,h), EColor16MA )) + { + iToolTipMaskDevice = CFbsBitmapDevice::NewL( iToolTipMask ); + User::LeaveIfError( iToolTipMaskDevice->CreateContext( iToolTipMaskContext ) ); + } + } + ); + if( KErrNone != err) + { + delete iToolTipMask; + iToolTipMask = NULL; + delete iToolTipMaskDevice; + iToolTipMaskDevice = NULL; + } + else + { + iToolTipMaskContext->SetPenColor(KRgbBlack); + iToolTipMaskContext->SetBrushColor(KRgbBlack); + iToolTipMaskContext->SetBrushStyle(CGraphicsContext::ESolidBrush); + iToolTipMaskContext->SetPenStyle(CGraphicsContext::ESolidPen); + iToolTipMaskContext->DrawRoundRect(boundingRect,TSize(4,4)); - //add text - iToolTipBitmapContext->SetPenColor(KRgbBlack); - iToolTipBitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush); - - iToolTipBitmapContext->UseFont(myFont); - TPoint pt = boundingRect.iTl; - pt += TPoint(KToolTipBorder + KTextMargin,KToolTipBorder + KTextMargin); - iToolTipBitmapContext->DrawText(*visualText, - TPoint(pt.iX,pt.iY + myFont->AscentInPixels())); - iToolTipBitmapContext->DiscardFont(); - - CCoeControl& view = iParent->ToolBarCallback().View(); + //bitmap + TRAP( err, + { + iToolTipBitmap = new (ELeave) CFbsBitmap; + if( KErrNone == iToolTipBitmap->Create( TSize(w,h), EColor16MA )) + { + iToolTipBitmapDevice = CFbsBitmapDevice::NewL( iToolTipBitmap ); + User::LeaveIfError( iToolTipBitmapDevice->CreateContext( iToolTipBitmapContext ) ); + } + } + ); + if( KErrNone != err ) + { + delete iToolTipBitmap; + iToolTipBitmap = NULL; + delete iToolTipBitmapDevice; + iToolTipBitmapDevice = NULL; + } + else + { + iToolTipBitmapContext->SetPenColor(KRgbBlack); + iToolTipBitmapContext->SetBrushColor(TRgb(0xfa,0xfa,0xd2)); + iToolTipBitmapContext->SetBrushStyle(CGraphicsContext::ESolidBrush); + iToolTipBitmapContext->SetPenStyle(CGraphicsContext::ESolidPen); + iToolTipBitmapContext->DrawRoundRect(boundingRect,TSize(4,4)); - iToolTipSprite = RWsSprite(view.ControlEnv()->WsSession()); - RWindowTreeNode *window = (RDrawableWindow* )iParent->ToolBarCallback().CCoeControlParent().DrawableWindow(); - iToolTipSprite.Construct(*window,p, ESpriteNoChildClip); + //add text + iToolTipBitmapContext->SetPenColor(KRgbBlack); + iToolTipBitmapContext->SetBrushStyle(CGraphicsContext::ENullBrush); + + iToolTipBitmapContext->UseFont(myFont); + TPoint pt = boundingRect.iTl; + pt += TPoint(KToolTipBorder + KTextMargin,KToolTipBorder + KTextMargin); + iToolTipBitmapContext->DrawText(*visualText, + TPoint(pt.iX,pt.iY + myFont->AscentInPixels())); + iToolTipBitmapContext->DiscardFont(); + + CCoeControl& view = iParent->ToolBarCallback().View(); - TSpriteMember spriteMem; - spriteMem.iBitmap = iToolTipBitmap; - spriteMem.iMaskBitmap = iToolTipMask; - spriteMem.iInvertMask = ETrue; + iToolTipSprite = RWsSprite(view.ControlEnv()->WsSession()); + RWindowTreeNode *window = (RDrawableWindow* )iParent->ToolBarCallback().CCoeControlParent().DrawableWindow(); + iToolTipSprite.Construct(*window,p, ESpriteNoChildClip); - iToolTipSprite.AppendMember(spriteMem); - iToolTipSprite.Activate(); - delete visualText;//visual text + TSpriteMember spriteMem; + spriteMem.iBitmap = iToolTipBitmap; + spriteMem.iMaskBitmap = iToolTipMask; + spriteMem.iInvertMask = ETrue; + iToolTipSprite.AppendMember(spriteMem); + iToolTipSprite.Activate(); + delete visualText;//visual text + } + } } else // aVisible = false { diff -r 7c90e6132015 -r 10e98eab6f85 webengine/webkitutils/group/WebKitUtils.mmp --- a/webengine/webkitutils/group/WebKitUtils.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/webkitutils/group/WebKitUtils.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -42,7 +42,11 @@ START RESOURCE ../data/webkitutils.rss HEADER TARGETPATH RESOURCE_FILES_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END SOURCEPATH ../ToolBar diff -r 7c90e6132015 -r 10e98eab6f85 webengine/webkitutils/group/bld.inf --- a/webengine/webkitutils/group/bld.inf Fri May 08 08:25:06 2009 +0300 +++ b/webengine/webkitutils/group/bld.inf Fri Jul 03 15:54:40 2009 +0100 @@ -18,7 +18,9 @@ #include #include "../../../web_plat/browser_platform_api/inc/Browser_platform_variant.hrh" +#ifdef BRDO_USE_GESTURE_HELPER #include "../rt_gesturehelper/group/bld.inf" +#endif PRJ_PLATFORMS DEFAULT diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/group/WidgetEngine.mmp --- a/webengine/widgetengine/group/WidgetEngine.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/group/WidgetEngine.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -118,7 +118,11 @@ START RESOURCE ../Src/WidgetMenu.rss HEADER TARGETPATH RESOURCE_FILES_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END LIBRARY apgrfx.lib diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/Menu.h --- a/webengine/widgetengine/inc/Menu.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/Menu.h Fri Jul 03 15:54:40 2009 +0100 @@ -35,6 +35,7 @@ // CLASS DECLARATION class MJSMenuCallbacks; +class MJSObjectProtector; /** * CMenu @@ -49,10 +50,12 @@ struct MenuPrivate { MenuPrivate(MJSMenuCallbacks* callbacks, + MJSObjectProtector* protector, WidgetEventHandler* onShowCallback = NULL, WidgetEventHandler* rightKeyCallback = NULL, WidgetEventHandler* leftKeyCallback = NULL) : m_callbacks(callbacks), + m_protector(protector), m_onShowCallback(onShowCallback), m_rightKeyCallback(rightKeyCallback), m_leftKeyCallback(leftKeyCallback) @@ -65,6 +68,7 @@ delete m_leftKeyCallback;} MJSMenuCallbacks* m_callbacks; + MJSObjectProtector* m_protector; WidgetEventHandler* m_onShowCallback; WidgetEventHandler* m_rightKeyCallback; WidgetEventHandler* m_leftKeyCallback; @@ -74,7 +78,7 @@ { public: - JSMenu(MJSMenuCallbacks* aMenuCallbacks); + JSMenu(MJSMenuCallbacks* aMenuCallbacks, MJSObjectProtector* aProtector); virtual ~JSMenu(); //From JSObject diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/MenuClient.h --- a/webengine/widgetengine/inc/MenuClient.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/MenuClient.h Fri Jul 03 15:54:40 2009 +0100 @@ -46,6 +46,7 @@ // CLASS DECLARATION class CMenuItem; +class MJSObjectProtector; namespace KJS { class JSMenu; @@ -67,8 +68,8 @@ virtual ~CMenuClient(); public: - KJS::JSMenu* jsmenu(); - KJS::JSMenuItemConstructor* jsmenuitem(); + KJS::JSMenu* jsmenu(MJSObjectProtector*); + KJS::JSMenuItemConstructor* jsmenuitem(MJSObjectProtector*); void addOptionMenuItemsL( CEikMenuPane& aMenuPane,TInt aResourceId ); void menuShowed(); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/MenuItem.h --- a/webengine/widgetengine/inc/MenuItem.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/MenuItem.h Fri Jul 03 15:54:40 2009 +0100 @@ -35,6 +35,7 @@ // CLASS DECLARATION class MJSMenuItemCallbacks; +class MJSObjectProtector; /** * CMenuItem @@ -46,17 +47,31 @@ class WidgetEventHandler; +struct MenuItemConstructorPrivate +{ + MenuItemConstructorPrivate( MJSMenuItemCallbacks* callbacks, + MJSObjectProtector* protector, + int internalId) : m_callbacks(callbacks), m_protector(protector), m_internalId(internalId) + { + } + + MJSMenuItemCallbacks* m_callbacks; + MJSObjectProtector* m_protector; + int m_internalId; +}; + class JSMenuItemConstructor : public JSObject { public: - JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks); + JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks, MJSObjectProtector* protector); virtual bool implementsConstruct() const; virtual JSObject* construct( ExecState *exec, const List &args ); + virtual ~JSMenuItemConstructor(); + private: - MJSMenuItemCallbacks* m_callbacks; - int m_internalId; + MenuItemConstructorPrivate* d; }; @@ -64,13 +79,16 @@ struct MenuItemPrivate { MenuItemPrivate(MJSMenuItemCallbacks* callbacks, + MJSObjectProtector* protector, int cmdId, int internalId, - WidgetEventHandler* selectCallback = NULL) : m_callbacks(callbacks), + WidgetEventHandler* selectCallback = NULL) + : m_callbacks(callbacks), m_cmdId(cmdId), m_internalId(internalId), m_dimmed(false), m_show(false), - m_onSelectCallback(selectCallback) + m_onSelectCallback(selectCallback), + m_protector(protector) { } @@ -78,6 +96,7 @@ virtual ~MenuItemPrivate() { delete m_onSelectCallback; } MJSMenuItemCallbacks* m_callbacks; + MJSObjectProtector* m_protector; const int m_cmdId; bool m_dimmed; bool m_show; @@ -90,7 +109,8 @@ class JSMenuItem : public JSObject { public: - JSMenuItem(ExecState* exec, MJSMenuItemCallbacks* callbacks, + JSMenuItem(ExecState* exec, MJSMenuItemCallbacks* callbacks, + MJSObjectProtector* protector, TDesC& text, int cmdId, int internalId, WidgetEventHandler* selectCallback = NULL ); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/Preferences.h --- a/webengine/widgetengine/inc/Preferences.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/Preferences.h Fri Jul 03 15:54:40 2009 +0100 @@ -155,7 +155,7 @@ /** * Get preference for a particular key */ - TInt preferenceL( const TDesC& akey, TPtrC& avalue); + TInt preferenceL( const TDesC& akey, HBufC*& avalue); /** diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/Widget.h --- a/webengine/widgetengine/inc/Widget.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/Widget.h Fri Jul 03 15:54:40 2009 +0100 @@ -36,6 +36,7 @@ // CLASS DECLARATION class MJSWidgetCallbacks; +class MJSObjectProtector; /** * CWidget @@ -54,12 +55,14 @@ WidgetEventHandler* showCallback, WidgetEventHandler* hideCallback, WidgetEventHandler* exitCallback, - bool visibility) : + bool visibility, + MJSObjectProtector* protector) : m_callbacks(callbacks), m_showCallback(showCallback), m_hideCallback(hideCallback), m_exitCallback(exitCallback), m_visibility(visibility), + m_protector(protector), m_wrt(0) { } @@ -69,10 +72,11 @@ delete m_hideCallback; delete m_showCallback; } - MJSWidgetCallbacks* m_callbacks; - WidgetEventHandler* m_showCallback; - WidgetEventHandler* m_hideCallback; - WidgetEventHandler* m_exitCallback; + MJSWidgetCallbacks* m_callbacks; + WidgetEventHandler* m_showCallback; + WidgetEventHandler* m_hideCallback; + WidgetEventHandler* m_exitCallback; + MJSObjectProtector* m_protector; bool m_visibility; JSWrt* m_wrt; @@ -82,7 +86,7 @@ { public: - JSWidget(MJSWidgetCallbacks* aWidgetCallbacks); + JSWidget(MJSWidgetCallbacks* aWidgetCallbacks, MJSObjectProtector* aProtector); virtual ~JSWidget(); //From JSObject @@ -107,6 +111,7 @@ performTransition, setPreferenceForKey, setNavigationEnabled, + setNavigationType, setDisplayLandscape, setDisplayPortrait, isRotationSupported, diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/Widget.lut.h --- a/webengine/widgetengine/inc/Widget.lut.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/Widget.lut.h Fri Jul 03 15:54:40 2009 +0100 @@ -22,29 +22,32 @@ namespace KJS { static const struct HashEntry WidgetTableEntries[] = { - { "performTransition", JSWidget::performTransition, DontDelete|Function, 0, &WidgetTableEntries[16] }/* 3947827008 */ , - { "openApplication", JSWidget::openApplication, DontDelete|Function, 1, &WidgetTableEntries[17] }/* 78708705 */ , - { "setDisplayPortrait", JSWidget::setDisplayPortrait, DontDelete|Function, 0, 0 }/* 4273345218 */ , - { "wrt", JSWidget::wrt, DontDelete|ReadOnly, 0, 0 }/* 1862342003 */ , - { "preferenceForKey", JSWidget::preferenceForKey, DontDelete|Function, 1, &WidgetTableEntries[20] }/* 2710796932 */ , + { "setNavigationType", JSWidget::setNavigationType, DontDelete|Function, 1, 0 }/* 1921159715 */ , + { "openURL", JSWidget::openURL, DontDelete|Function, 1, &WidgetTableEntries[17] }/* 120566279 */ , + { "performTransition", JSWidget::performTransition, DontDelete|Function, 0, &WidgetTableEntries[21] }/* 3947827008 */ , + { 0, 0, 0, 0, 0 }, + { "onremove", JSWidget::onremove, DontDelete|ReadOnly, 0, 0 }/* 853904071 */ , + { 0, 0, 0, 0, 0 }, + { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, { 0, 0, 0, 0, 0 }, - { "openURL", JSWidget::openURL, DontDelete|Function, 1, &WidgetTableEntries[18] }/* 120566279 */ , + { "onshow", JSWidget::onshow, DontDelete|ReadOnly, 0, &WidgetTableEntries[19] }/* 2917788702 */ , + { "identifier", JSWidget::identifier, DontDelete|ReadOnly, 0, &WidgetTableEntries[23] }/* 4053269040 */ , { 0, 0, 0, 0, 0 }, - { "setNavigationEnabled", JSWidget::setNavigationEnabled, DontDelete|Function, 1, 0 }/* 2136509817 */ , - { "prepareForTransition", JSWidget::prepareForTransition, DontDelete|Function, 1, 0 }/* 3355888042 */ , - { 0, 0, 0, 0, 0 }, - { "setDisplayLandscape", JSWidget::setDisplayLandscape, DontDelete|Function, 0, 0 }/* 1431294652 */ , + { "onhide", JSWidget::onhide, DontDelete|ReadOnly, 0, 0 }/* 236865857 */ , { "setPreferenceForKey", JSWidget::setPreferenceForKey, DontDelete|Function, 2, 0 }/* 1304460605 */ , - { "onshow", JSWidget::onshow, DontDelete|ReadOnly, 0, 0 }/* 2917788702 */ , + { "openApplication", JSWidget::openApplication, DontDelete|Function, 1, &WidgetTableEntries[22] }/* 78708705 */ , { 0, 0, 0, 0, 0 }, - { "identifier", JSWidget::identifier, DontDelete|ReadOnly, 0, &WidgetTableEntries[19] }/* 4053269040 */ , - { "onhide", JSWidget::onhide, DontDelete|ReadOnly, 0, 0 }/* 236865857 */ , - { "onremove", JSWidget::onremove, DontDelete|ReadOnly, 0, 0 }/* 853904071 */ , + { "prepareForTransition", JSWidget::prepareForTransition, DontDelete|Function, 1, 0 }/* 3355888042 */ , + { "preferenceForKey", JSWidget::preferenceForKey, DontDelete|Function, 1, &WidgetTableEntries[18] }/* 2710796932 */ , + { "setNavigationEnabled", JSWidget::setNavigationEnabled, DontDelete|Function, 1, &WidgetTableEntries[20] }/* 2136509817 */ , { "onexit", JSWidget::onexit, DontDelete|ReadOnly, 0, 0 }/* 3671980544 */ , - { "isrotationsupported", JSWidget::isRotationSupported, DontDelete|ReadOnly, 0, 0 }/* 3247979316 */ + { "setDisplayLandscape", JSWidget::setDisplayLandscape, DontDelete|Function, 0, 0 }/* 1431294652 */ , + { "setDisplayPortrait", JSWidget::setDisplayPortrait, DontDelete|Function, 0, 0 }/* 4273345218 */ , + { "isrotationsupported", JSWidget::isRotationSupported, DontDelete|ReadOnly, 0, 0 }/* 3247979316 */ , + { "wrt", JSWidget::wrt, DontDelete|ReadOnly, 0, 0 }/* 1862342003 */ }; -const struct HashTable WidgetTable = { 2, 21, WidgetTableEntries, 16 }; +const struct HashTable WidgetTable = { 2, 24, WidgetTableEntries, 17 }; } // namespace diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/WidgetCallbacks.h --- a/webengine/widgetengine/inc/WidgetCallbacks.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/WidgetCallbacks.h Fri Jul 03 15:54:40 2009 +0100 @@ -29,12 +29,13 @@ virtual void openApplication( const TUid& aAppUid, const TDesC& aParam ) = 0; virtual void openUrl( const TDesC& aUrl ) = 0; virtual TDesC& getWidgetBundleId() = 0; - virtual TInt preferenceForKey( const TDesC& aKey, TPtrC& aValue ) = 0; + virtual TInt preferenceForKey( const TDesC& aKey, HBufC*& aValue ) = 0; virtual void prepareForTransition( const TDesC& aTransition ) = 0; virtual void performTransition() = 0; virtual void setPreferenceForKey( const TDesC& aKey, const TDesC& aValue ) = 0; virtual void removePreferenceForKey( const TDesC& aKey, const TDesC& aValue ) = 0; virtual void setNavigationEnabled( TBool aEnable ) = 0; + virtual void setNavigationType( const TDesC& aType ) = 0; virtual void setDisplayLandscape() = 0; virtual void setDisplayPortrait() = 0; }; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/WidgetClient.h --- a/webengine/widgetengine/inc/WidgetClient.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/WidgetClient.h Fri Jul 03 15:54:40 2009 +0100 @@ -35,6 +35,7 @@ // FORWARD DECLARATION class WidgetRenderer; class WidgetPreferences; +class MJSObjectProtector; namespace KJS { class JSWidget; @@ -51,7 +52,7 @@ { public: - static CWidgetClient* NewL(MWidgetCallback& aWidgetCallback, MWidgetEngineCallbacks& aWidgetEngineCallback, WidgetPreferences* preferences); + static CWidgetClient* NewL(MWidgetCallback& aWidgetCallback, MJSObjectProtector* aProtector, MWidgetEngineCallbacks& aWidgetEngineCallback, WidgetPreferences* preferences); virtual ~CWidgetClient(); public: @@ -69,9 +70,10 @@ void openUrl( const TDesC& aUrl ); TDesC& getWidgetBundleId(); void setNavigationEnabled( TBool aEnable ); + void setNavigationType( const TDesC& aType ); void prepareForTransition( const TDesC& aTransition ); void performTransition(); - TInt preferenceForKey( const TDesC& aKey, TPtrC& aValue ); + TInt preferenceForKey( const TDesC& aKey, HBufC*& aValue ); void setPreferenceForKey( const TDesC& aKey, const TDesC& aValue ); void removePreferenceForKey( const TDesC& aKey, const TDesC& aValue ); void setDisplayLandscape(); @@ -81,7 +83,7 @@ void launchApplicationL( const TUid& aUid, const TDesC& aParam ); protected: - void ConstructL(MWidgetEngineCallbacks& aWidgetEngineCallback); + void ConstructL(MWidgetEngineCallbacks& aWidgetEngineCallback, MJSObjectProtector* protector); CWidgetClient(MWidgetCallback& aWidgetCallback, MWidgetEngineCallbacks& aWidgetEngineCallback, WidgetPreferences* preferences); private: diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/WidgetEngineBridge.h --- a/webengine/widgetengine/inc/WidgetEngineBridge.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/WidgetEngineBridge.h Fri Jul 03 15:54:40 2009 +0100 @@ -26,6 +26,8 @@ #include #include "BrCtlDefs.h" #include "WidgetEngineCallbacks.h" +#include "WidgetJSObjectProtector.h" +#include "wtf/HashSet.h" // CONSTANTS @@ -41,6 +43,10 @@ class MWidgetCallback; class WidgetPreferences; +namespace KJS { + class JSValue; +} + // CLASS DECLARATION class MWidgetEngineBridge { @@ -57,7 +63,8 @@ virtual void AddOptionMenuItemsL(CEikMenuPane& aMenuPane, TInt aResourceId) = 0; virtual void MenuItemSelected( TInt aInternalId ) = 0; virtual void MenuShowed() = 0; - virtual void DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm) = 0; + virtual void DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm) = 0; + virtual void Clear() = 0; }; @@ -68,7 +75,7 @@ * @since 3.1 */ -NONSHARABLE_CLASS( WidgetEngineBridge ): public MWidgetEngineBridge +NONSHARABLE_CLASS( WidgetEngineBridge ): public MWidgetEngineBridge, public MJSObjectProtector { public: WidgetEngineBridge(); @@ -87,12 +94,17 @@ void AddOptionMenuItemsL(CEikMenuPane& aMenuPane, TInt aResourceId); void MenuItemSelected( TInt aInternalId ); void MenuShowed(); - void DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm); + void DrawTransition(CWindowGc& gc, CFbsBitmap* fbsBm); + void Clear(); + + void Protect(KJS::JSValue* obj); + void Unprotect(KJS::JSValue* obj); private: - CMenuClient* m_menuclient; - CWidgetClient* m_widgetclient; - WidgetPreferences* m_preferences; + CMenuClient* m_menuclient; + CWidgetClient* m_widgetclient; + WidgetPreferences* m_preferences; + WTF::HashSet m_protectedObjects; }; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/WidgetEngineCallbacks.h --- a/webengine/widgetengine/inc/WidgetEngineCallbacks.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/WidgetEngineCallbacks.h Fri Jul 03 15:54:40 2009 +0100 @@ -30,6 +30,7 @@ virtual void setRightSoftKeyLabel( const TDesC& aText ) = 0; virtual void setLeftSoftKeyLabel( const TDesC& aText ) = 0; virtual void setTabbednavigation(bool aOn) = 0; + virtual void setNavigationType(const TDesC& aType) = 0; }; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/WidgetEventHandler.h --- a/webengine/widgetengine/inc/WidgetEventHandler.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/WidgetEventHandler.h Fri Jul 03 15:54:40 2009 +0100 @@ -19,6 +19,8 @@ #include +class MJSObjectProtector; + namespace KJS { @@ -29,7 +31,7 @@ class WidgetEventHandler : public CBase { public: - WidgetEventHandler( JSValue* aValue, ExecState* aExecState ); + WidgetEventHandler( JSValue* aValue, ExecState* aExecState, MJSObjectProtector* aProtector); virtual ~WidgetEventHandler(); public: @@ -40,6 +42,8 @@ JSValue* iEventHandler; ExecState* iGlobalExecState; + + MJSObjectProtector* iProtector; TBool iInUse; TBool iSelfDelete; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/WidgetFuncs.h --- a/webengine/widgetengine/inc/WidgetFuncs.h Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/inc/WidgetFuncs.h Fri Jul 03 15:54:40 2009 +0100 @@ -44,6 +44,7 @@ performTransition, setPreferenceForKey, setNavigationMode, + setNavigationType, setDisplayLandscape, setDisplayPortrait }; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/inc/WidgetJSObjectProtector.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/widgetengine/inc/WidgetJSObjectProtector.h Fri Jul 03 15:54:40 2009 +0100 @@ -0,0 +1,32 @@ +/* +* Copyright (c) 2004 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: +* +*/ + +#ifndef __WIDGETJSOBJECTPROTECTOR_H__ +#define __WIDGETJSOBJECTPROTECTOR_H__ + +namespace KJS { + class JSValue; +} + +class MJSObjectProtector +{ +public: + virtual void Protect(KJS::JSValue*) = 0; + virtual void Unprotect(KJS::JSValue*) = 0; +}; + +#endif // !__WIDGETJSOBJECTPROTECTOR_H__ diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/Menu.cpp --- a/webengine/widgetengine/src/Menu.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/Menu.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -60,9 +60,9 @@ // // // ---------------------------------------------------------------------------- -JSMenu::JSMenu(MJSMenuCallbacks* aMenuCallbacks) +JSMenu::JSMenu(MJSMenuCallbacks* aMenuCallbacks, MJSObjectProtector* aProtector) : JSObject(), - d(new MenuPrivate(aMenuCallbacks,0,0)) + d(new MenuPrivate(aMenuCallbacks, aProtector, 0,0)) { } @@ -114,7 +114,7 @@ d->m_rightKeyCallback = NULL; if ( value && !value->isNull() ) { - d->m_rightKeyCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec()); + d->m_rightKeyCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector); } } @@ -131,7 +131,7 @@ d->m_leftKeyCallback = NULL; if ( value && !value->isNull() ) { - d->m_leftKeyCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec()); + d->m_leftKeyCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector); } } @@ -244,7 +244,7 @@ case OnShow: { delete d->m_onShowCallback; d->m_onShowCallback = NULL; - d->m_onShowCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec()); + d->m_onShowCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector); break; } default: diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/MenuClient.cpp --- a/webengine/widgetengine/src/MenuClient.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/MenuClient.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -139,15 +139,6 @@ } iCascadeArr.Close(); - - if (m_jsmenu) { - KJS::Collector::unprotect(m_jsmenu); - } - - if (m_jsmenuitemctr) { - KJS::Collector::unprotect(m_jsmenuitemctr); - } - } @@ -168,11 +159,10 @@ // // // ---------------------------------------------------------------------------- -KJS::JSMenu* CMenuClient::jsmenu() +KJS::JSMenu* CMenuClient::jsmenu(MJSObjectProtector* aProtector) { if (!m_jsmenu) { - m_jsmenu = new KJS::JSMenu(this); - KJS::Collector::protect(m_jsmenu); + m_jsmenu = new KJS::JSMenu(this, aProtector); } return m_jsmenu; @@ -185,11 +175,10 @@ // // // ---------------------------------------------------------------------------- -KJS::JSMenuItemConstructor* CMenuClient::jsmenuitem() +KJS::JSMenuItemConstructor* CMenuClient::jsmenuitem(MJSObjectProtector* protector) { if (!m_jsmenuitemctr){ - m_jsmenuitemctr = new KJS::JSMenuItemConstructor(this); - KJS::Collector::protect(m_jsmenuitemctr); + m_jsmenuitemctr = new KJS::JSMenuItemConstructor(this, protector); } return m_jsmenuitemctr; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/MenuItem.cpp --- a/webengine/widgetengine/src/MenuItem.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/MenuItem.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -24,6 +24,7 @@ #include "MenuItem.h" #include "MenuItemFuncs.h" #include "MenuItemCallbacks.h" +#include "WidgetJSObjectProtector.h" using namespace KJS; @@ -33,13 +34,16 @@ // // // ---------------------------------------------------------------------------- -JSMenuItemConstructor::JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks) - : JSObject(), - m_callbacks(callbacks), - m_internalId(0) +JSMenuItemConstructor::JSMenuItemConstructor(MJSMenuItemCallbacks* callbacks, MJSObjectProtector* protector) + : JSObject(), + d(new MenuItemConstructorPrivate(callbacks, protector, 0)) { } +JSMenuItemConstructor::~JSMenuItemConstructor() +{ + delete d; +} // ---------------------------------------------------------------------------- // JSMenuItemConstructor::implementsConstruct @@ -83,9 +87,9 @@ TPtrC tptrc((const unsigned short*)(text.data()), textlen); - JSMenuItem* mi = new JSMenuItem(exec, m_callbacks, tptrc, cmdId, m_internalId ); - KJS::Collector::protect(mi); - m_callbacks->createOptionsMenuItem( tptrc, cmdId, m_internalId++, (void*) mi ); + JSMenuItem* mi = new JSMenuItem(exec, d->m_callbacks, d->m_protector, tptrc, cmdId, d->m_internalId, 0); + + d->m_callbacks->createOptionsMenuItem( tptrc, cmdId, d->m_internalId++, (void*) mi ); return static_cast(mi); } @@ -119,13 +123,15 @@ JSMenuItem::JSMenuItem( ExecState* exec, MJSMenuItemCallbacks* callbacks, + MJSObjectProtector* protector, TDesC& text, int cmdId, int internalId, WidgetEventHandler* onSelectCallback ) : JSObject(exec->lexicalInterpreter()->builtinObjectPrototype()), - d(new MenuItemPrivate(callbacks,cmdId,internalId,onSelectCallback)) + d(new MenuItemPrivate(callbacks, protector, cmdId, internalId, onSelectCallback)) { + d->m_protector->Protect(this); } // ---------------------------------------------------------------------------- @@ -199,7 +205,8 @@ // ---------------------------------------------------------------------------- void JSMenuItem::DeleteMenuItem() { - d->m_callbacks->deleteMenuItem( d->m_internalId ); + d->m_callbacks->deleteMenuItem( d->m_internalId ); + d->m_protector->Unprotect(this); } // ---------------------------------------------------------------------------- @@ -242,7 +249,7 @@ case OnSelect: { delete d->m_onSelectCallback; d->m_onSelectCallback = NULL; - d->m_onSelectCallback = new WidgetEventHandler ( value, exec->lexicalInterpreter()->globalExec() ); + d->m_onSelectCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector); d->m_callbacks->setMenuItemObserver( d->m_internalId, d->m_onSelectCallback ); break; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/Preferences.cpp --- a/webengine/widgetengine/src/Preferences.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/Preferences.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -115,7 +115,7 @@ // // // ---------------------------------------------------------------------------- -TInt WidgetPreferences::preferenceL( const TDesC& akey, TPtrC& avalue) +TInt WidgetPreferences::preferenceL( const TDesC& akey, HBufC*& avalue) { TInt rSuccess = KErrNotFound; @@ -159,7 +159,7 @@ HBufC* v = HBufC::NewLC( len ); TPtr ptrvalue = v->Des(); readStream.ReadL( ptrvalue, len ); - avalue.Set( *v ); + avalue = v; // ownership xfered CleanupStack::Pop( v ); rSuccess = KErrNone; } @@ -170,7 +170,7 @@ } } else if ( size >= 0 ) { - avalue.Set( pref->value() ); + avalue = pref->value().AllocL(); rSuccess = KErrNone; } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/Widget.cpp --- a/webengine/widgetengine/src/Widget.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/Widget.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -26,6 +26,7 @@ #include "WidgetFuncs.h" #include "WidgetCallbacks.h" #include "WidgetEventHandler.h" +#include "WidgetJSObjectProtector.h" #include "Wrt.h" // EXTERNAL DATA STRUCTURES @@ -48,7 +49,7 @@ // ============================= LOCAL FUNCTIONS =============================== /* -@begin WidgetTable 16 +@begin WidgetTable 17 openApplication JSWidget::openApplication DontDelete|Function 1 openURL JSWidget::openURL DontDelete|Function 1 preferenceForKey JSWidget::preferenceForKey DontDelete|Function 1 @@ -56,6 +57,7 @@ performTransition JSWidget::performTransition DontDelete|Function 0 setPreferenceForKey JSWidget::setPreferenceForKey DontDelete|Function 2 setNavigationEnabled JSWidget::setNavigationEnabled DontDelete|Function 1 + setNavigationType JSWidget::setNavigationType DontDelete|Function 1 identifier JSWidget::identifier DontDelete|ReadOnly onhide JSWidget::onhide DontDelete|ReadOnly onremove JSWidget::onremove DontDelete|ReadOnly @@ -76,9 +78,9 @@ // // // ---------------------------------------------------------------------------- -JSWidget::JSWidget(MJSWidgetCallbacks* aWidgetCallbacks) : +JSWidget::JSWidget(MJSWidgetCallbacks* aWidgetCallbacks, MJSObjectProtector* aProtector) : JSObject(), - d(new WidgetPrivate(aWidgetCallbacks,0,0,0,0)) + d(new WidgetPrivate(aWidgetCallbacks,0,0,0,0, aProtector)) { } @@ -165,6 +167,7 @@ case performTransition: case setPreferenceForKey: case setNavigationEnabled: + case setNavigationType: case setDisplayLandscape: case setDisplayPortrait: { JSWidgetFunc *wf = new JSWidgetFunc(exec,token,d->m_callbacks); @@ -211,13 +214,13 @@ case onhide: { delete d->m_hideCallback; d->m_hideCallback = NULL; - d->m_hideCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec()); + d->m_hideCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector); break; } case onshow: { delete d->m_showCallback; d->m_showCallback = NULL; - d->m_showCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec()); + d->m_showCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector); // fire the onShow if the SetVisibilty was called before the onShowCallback was created if (d->m_visibility) { d->m_visibility = !d->m_visibility; @@ -228,7 +231,7 @@ case onexit: { delete d->m_exitCallback; d->m_exitCallback = NULL; - d->m_exitCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec()); + d->m_exitCallback = new WidgetEventHandler(value, exec->lexicalInterpreter()->globalExec(), d->m_protector); break; } default: diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/WidgetClient.cpp --- a/webengine/widgetengine/src/WidgetClient.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/WidgetClient.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -54,13 +54,15 @@ // // ---------------------------------------------------------------------------- // -CWidgetClient* CWidgetClient::NewL(MWidgetCallback& aWidgetCallback, - MWidgetEngineCallbacks& aWidgetEngineCallback, - WidgetPreferences* preferences) +CWidgetClient* CWidgetClient::NewL( MWidgetCallback& aWidgetCallback, + MJSObjectProtector* protector, + MWidgetEngineCallbacks& aWidgetEngineCallback, + WidgetPreferences* preferences + ) { CWidgetClient* self = new ( ELeave ) CWidgetClient(aWidgetCallback, aWidgetEngineCallback, preferences); CleanupStack::PushL( self ); - self->ConstructL(aWidgetEngineCallback); + self->ConstructL(aWidgetEngineCallback, protector); CleanupStack::Pop(); return self; } @@ -92,10 +94,6 @@ // CWidgetClient::~CWidgetClient() { - if (m_jswidget) { - KJS::Collector::unprotect(m_jswidget); - } - delete m_renderer; } @@ -107,11 +105,10 @@ // // ---------------------------------------------------------------------------- // -void CWidgetClient::ConstructL(MWidgetEngineCallbacks& aWidgetEngineCallback) +void CWidgetClient::ConstructL(MWidgetEngineCallbacks& aWidgetEngineCallback, MJSObjectProtector* protector) { - m_jswidget = new KJS::JSWidget(this); + m_jswidget = new KJS::JSWidget(this, protector); m_renderer = new (ELeave) WidgetRenderer(aWidgetEngineCallback); - KJS::Collector::protect(m_jswidget); } @@ -280,6 +277,18 @@ } // ---------------------------------------------------------------------------- +// CWidgetClient::setNavigationType +// +// +// +// ---------------------------------------------------------------------------- +// +void CWidgetClient::setNavigationType( const TDesC& aType ) +{ + m_widgetenginecallback->setNavigationType(aType); +} + +// ---------------------------------------------------------------------------- // CWidgetClient::prepareForTransition // // @@ -310,7 +319,7 @@ // // ---------------------------------------------------------------------------- // -TInt CWidgetClient::preferenceForKey( const TDesC& aKey, TPtrC& aValue ) +TInt CWidgetClient::preferenceForKey( const TDesC& aKey, HBufC*& aValue ) { TInt ret = KErrNotFound; TRAP_IGNORE( ret = m_preferences->preferenceL( aKey, aValue ) ); diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/WidgetEngineBridge.cpp --- a/webengine/widgetengine/src/WidgetEngineBridge.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/WidgetEngineBridge.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -53,6 +53,7 @@ // ============================= LOCAL FUNCTIONS =============================== // ============================ MEMBER FUNCTIONS =============================== +using namespace KJS; // ---------------------------------------------------------------------------- // CreateWidgetEngineBridge @@ -83,10 +84,30 @@ // // ---------------------------------------------------------------------------- WidgetEngineBridge::~WidgetEngineBridge() +{ + Clear(); + delete m_preferences; + m_preferences = NULL; +} +// ---------------------------------------------------------------------------- +// WidgetEngineBridge::Clear +// +// +// +// ---------------------------------------------------------------------------- +void WidgetEngineBridge::Clear() { + // unprotect objects + HashSet::iterator end = m_protectedObjects.end(); + for (HashSet::iterator it = m_protectedObjects.begin(); it != end; ++it) { + Collector::unprotect(*it); + } + m_protectedObjects.clear(); + delete m_menuclient; + m_menuclient = NULL; delete m_widgetclient; - delete m_preferences; + m_widgetclient = NULL; } // ---------------------------------------------------------------------------- @@ -103,7 +124,7 @@ if (!m_preferences) m_preferences = new (ELeave) WidgetPreferences(); - m_widgetclient = CWidgetClient::NewL(aWidgetCallback,aWidgetEngineCallback,m_preferences); + m_widgetclient = CWidgetClient::NewL(aWidgetCallback, this, aWidgetEngineCallback,m_preferences); } return m_widgetclient->jswidget(); } @@ -120,7 +141,7 @@ if (!m_menuclient){ m_menuclient = CMenuClient::NewL(aWidgetCallback,aWidgetEngineCallback); } - return m_menuclient->jsmenu(); + return m_menuclient->jsmenu(this); } // ---------------------------------------------------------------------------- @@ -135,7 +156,7 @@ if (!m_menuclient){ m_menuclient = CMenuClient::NewL(aWidgetCallback,aWidgetEngineCallback); } - return m_menuclient->jsmenuitem(); + return m_menuclient->jsmenuitem(this); } // ---------------------------------------------------------------------------- @@ -285,6 +306,18 @@ } +void WidgetEngineBridge::Protect(JSValue* obj) +{ + m_protectedObjects.add(obj); + Collector::protect(obj); +} + +void WidgetEngineBridge::Unprotect(JSValue* obj) +{ + m_protectedObjects.remove(obj); + Collector::unprotect(obj); +} + //END OF FILE diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/WidgetEventHandler.cpp --- a/webengine/widgetengine/src/WidgetEventHandler.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/WidgetEventHandler.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -17,6 +17,7 @@ #include "WidgetEventHandler.h" #include "config.h" #include +#include "WidgetJSObjectProtector.h" // ============================ MEMBER FUNCTIONS =============================== using namespace KJS; @@ -28,10 +29,13 @@ // // // ---------------------------------------------------------------------------- -WidgetEventHandler::WidgetEventHandler( JSValue* aValue, ExecState* aExecState ) : iGlobalExecState (aExecState) +WidgetEventHandler::WidgetEventHandler( JSValue* aValue, ExecState* aExecState, MJSObjectProtector* aProtector) : iGlobalExecState (aExecState), iProtector(aProtector) { iEventHandler = aValue; - Collector::protect(iEventHandler); + if(iProtector) + { + iProtector->Protect(iEventHandler); + } } @@ -43,7 +47,10 @@ // ---------------------------------------------------------------------------- WidgetEventHandler::~WidgetEventHandler() { - Collector::unprotect(iEventHandler); + if(iProtector) + { + iProtector->Unprotect(iEventHandler); + } } // ---------------------------------------------------------------------------- diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetengine/src/WidgetFuncs.cpp --- a/webengine/widgetengine/src/WidgetFuncs.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetengine/src/WidgetFuncs.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -100,7 +100,7 @@ args[0]->toString(exec).size() >= 0 ) { TPtrC tstrKey(KNullDesC); - TPtrC tstrValue(KNullDesC); + HBufC* tstrValue(NULL); TInt retCode = KErrNone; if ( args[0]->type() == NumberType ) { @@ -115,7 +115,13 @@ if (retCode == KErrNone) { - return jsString(UString((const UChar *)tstrValue.Ptr(),tstrValue.Length())); + UString u((const UChar *)tstrValue->Ptr(),tstrValue->Length()); + JSCell* rtn=jsString(u); + delete tstrValue; + return rtn; + } + else { + delete tstrValue; } } @@ -175,6 +181,13 @@ } break; } + case setNavigationType: { + if ( args[0]->type() == StringType && args[0]->toString(exec).size() > 0 ) { + TPtrC type((const TUint16 *)args[0]->toString(exec).data(), args[0]->toString(exec).size()); + m_callbacks->setNavigationType(type); + } + break; + } case setDisplayLandscape: { m_callbacks->setDisplayLandscape(); break; diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetregistry/Data/Widget_lproj.xml --- a/webengine/widgetregistry/Data/Widget_lproj.xml Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetregistry/Data/Widget_lproj.xml Fri Jul 03 15:54:40 2009 +0100 @@ -10,85 +10,13 @@ de 4 -sp - -14 -tr - -9 -fi - -6 -sv - -16 -ru - -37 -ar - -57 -he +es 5 it -27 -pl - -17 -hu - -82 -es - -18 -nl - -76 -pt - -51 -frm - -67 -lv - -54 -el - -49 -et - -68 -lt - -78 -ro - -93 -uk - -42 -bg - -45 -hr - -79 -sr - -59 -id - -70 -ms - -39 -tl - -15 -is +6 +sv 7 da @@ -96,11 +24,38 @@ 8 no -58 -hi +9 +fi + +10 +en-US + +11 +fr-CH + +12 +ge-CH + +13 +pt -94 -ur +14 +tr + +15 +is + +16 +ru + +17 +hu + +18 +nl + +20 +en-AU 25 cs @@ -108,17 +63,20 @@ 26 sk +27 +pl + 28 sl 29 -zh_Hant +zh-Hant 30 -zh_Hant +zh-Hant 31 -zh_Hans +zh-Hans 32 ja @@ -126,19 +84,114 @@ 33 th -96 -vi +37 +ar -326 -ml +39 +tl + +42 +bg 44 ca -401 +45 +hr + +46 +en-CA + +49 +et + +50 +fa + +51 +fr-CA + +54 +el + +57 +he + +58 +hi + +59 +id + +65 +ko + +67 +lv + +68 +lt + +70 +ms + +71 +ml + +76 +pt-BR + +78 +ro + +79 +sr + +82 +es + +83 +es-419 + +93 +uk + +94 +ur + +96 +vi + +102 eu -402 +103 gl +129 +en-APAC + +157 +en-TW + +158 +en-CN + +159 +en-HK + +160 +en-JP + +161 +en-TH + +230 +en-IN + +326 +ms-APAC + +327 +id-APAC \ No newline at end of file diff -r 7c90e6132015 -r 10e98eab6f85 webengine/widgetregistry/Server/src/WidgetRegistry.cpp --- a/webengine/widgetregistry/Server/src/WidgetRegistry.cpp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/widgetregistry/Server/src/WidgetRegistry.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -29,6 +29,7 @@ #include #include #include +#include #include "WidgetMMCHandler.h" #include "UidAllocator.h" #if defined( BRDO_WRT_SECURITY_MGR_FF ) @@ -1664,7 +1665,7 @@ xmlFreeDoc(doc); xmlCleanupParser(); - xmlCleanupGlobalData(); + XmlEngineCleanup(); CleanupStack::PopAndDestroy( buf ); } diff -r 7c90e6132015 -r 10e98eab6f85 webengine/wmlengine/group/fbox/fbox.mmp --- a/webengine/wmlengine/group/fbox/fbox.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/wmlengine/group/fbox/fbox.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -29,7 +29,11 @@ SOURCEPATH ../../src/fbox/src/ -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif #include "../webkitcommon.mmpi" diff -r 7c90e6132015 -r 10e98eab6f85 webengine/wmlengine/group/wml1x/wml1x.mmp --- a/webengine/wmlengine/group/wml1x/wml1x.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/wmlengine/group/wml1x/wml1x.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -28,7 +28,11 @@ MACRO NOKIA_MOBILE_BROWSER #define NOKIA_MOBILE_BROWSER 1 -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif SOURCEPATH ../../src/wml1x/src/ diff -r 7c90e6132015 -r 10e98eab6f85 webengine/wmlengine/group/wmlengine/wmlengine.mmp --- a/webengine/wmlengine/group/wmlengine/wmlengine.mmp Fri May 08 08:25:06 2009 +0300 +++ b/webengine/wmlengine/group/wmlengine/wmlengine.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -37,7 +37,11 @@ deffile ../EABI/WmlEngine.def #endif -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif MACRO NOKIA_MOBILE_BROWSER #define NOKIA_MOBILE_BROWSER diff -r 7c90e6132015 -r 10e98eab6f85 widgets/widgetapp/data/WidgetUi.rss --- a/widgets/widgetapp/data/WidgetUi.rss Fri May 08 08:25:06 2009 +0300 +++ b/widgets/widgetapp/data/WidgetUi.rss Fri Jul 03 15:54:40 2009 +0100 @@ -65,7 +65,7 @@ { CBA_BUTTON {id=EAknSoftkeyOptions; txt=text_softkey_option;}, CBA_BUTTON {id=EAknSoftkeyExit; txt=text_softkey_exit;}, - CBA_BUTTON {id=ECmdMsk; txt=text_softkey_empty;} + CBA_BUTTON {id=EAknSoftkeyForwardKeyEvent; txt=text_softkey_empty;} }; } diff -r 7c90e6132015 -r 10e98eab6f85 widgets/widgetapp/group/WidgetUi.mmp --- a/widgets/widgetapp/group/WidgetUi.mmp Fri May 08 08:25:06 2009 +0300 +++ b/widgets/widgetapp/group/WidgetUi.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -39,7 +39,11 @@ START RESOURCE ../Data/WidgetUi.rss HEADER TARGETPATH APP_RESOURCE_DIR -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END // SRC INFO diff -r 7c90e6132015 -r 10e98eab6f85 widgets/widgetapp/src/WidgetUiObserver.cpp --- a/widgets/widgetapp/src/WidgetUiObserver.cpp Fri May 08 08:25:06 2009 +0300 +++ b/widgets/widgetapp/src/WidgetUiObserver.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -190,8 +190,12 @@ TBrCtlDefs::TBrCtlElementType elementtype = iWindow->WindowManager().ActiveWindow()->Engine()->FocusedElementType(); // Check if focused element type is editing type - if ((elementtype != TBrCtlDefs::EElementActivatedInputBox) && - (elementtype != TBrCtlDefs::EElementActivatedObjectBox)) + if ((elementtype == TBrCtlDefs::EElementActivatedInputBox) || + (elementtype == TBrCtlDefs::EElementActivatedObjectBox)) + { + iWindow->WindowManager().View()->ShowActivatedObject( ETrue ); + } + else { iWindow->WindowManager().View()->ShowActivatedObject( EFalse ); } @@ -459,7 +463,6 @@ TDataRecognitionResult dataType; RApaLsSession apaSession; TInt ret; - HBufC* contentTypeString = KNullDesC().AllocL(); CleanupClosePushL(apaSession); User::LeaveIfError( apaSession.Connect() ); @@ -469,20 +472,19 @@ apaSession.Close(); CleanupStack::PopAndDestroy(1, &apaSession); + TPtrC8 mimeTypePtr = dataType.iDataType.Des8(); + TInt len = mimeTypePtr.Length() + 1; + HBufC* contentTypeString = HBufC::NewLC( len );; + if ( ret == KErrNone && ( dataType.iConfidence == CApaDataRecognizerType::ECertain ) || ( dataType.iConfidence == CApaDataRecognizerType::EProbable ) ) { // If the file type was found, try to match it to a known file type - TPtrC8 mimeTypePtr = dataType.iDataType.Des8(); - TInt len = mimeTypePtr.Length() + 1; - contentTypeString = HBufC::NewL( len ); contentTypeString->Des().Copy( mimeTypePtr ); contentTypeString->Des().ZeroTerminate(); } - CleanupStack::PushL( contentTypeString ); - return contentTypeString; } diff -r 7c90e6132015 -r 10e98eab6f85 widgets/widgetapp/src/WidgetUiWindow.cpp --- a/widgets/widgetapp/src/WidgetUiWindow.cpp Fri May 08 08:25:06 2009 +0300 +++ b/widgets/widgetapp/src/WidgetUiWindow.cpp Fri Jul 03 15:54:40 2009 +0100 @@ -503,7 +503,7 @@ if (aCurrent) { - //UpdateCba(); + UpdateCba(); Engine()->MakeVisible( iWidgetLoaded ); // redraw incase the orientation changed while in the background Relayout(); @@ -671,6 +671,7 @@ RWidgetRegistryClientSession clientSession = iWindowManager.WidgetUIClientSession(); CWidgetPropertyValue* propValue = clientSession.GetWidgetPropertyValueL( iUid, EMiniViewEnable ); TInt hasMiniview = *propValue; + delete propValue; return hasMiniview; } @@ -686,12 +687,15 @@ RWidgetRegistryClientSession& widgetRegistry = iWindowManager.WidgetUIClientSession(); - TInt networkAccess = *(widgetRegistry.GetWidgetPropertyValueL( - iUid, EAllowNetworkAccess )); - TInt fullAccess = *(widgetRegistry.GetWidgetPropertyValueL( - iUid, EAllowFullAccess )); - TInt blanketPermission = *(widgetRegistry.GetWidgetPropertyValueL( - iUid, EBlanketPermGranted )); + CWidgetPropertyValue* propValue = widgetRegistry.GetWidgetPropertyValueL( iUid, EAllowNetworkAccess ); + TInt networkAccess = *propValue; + delete propValue; + propValue = widgetRegistry.GetWidgetPropertyValueL( iUid, EAllowFullAccess ); + TInt fullAccess = *propValue; + delete propValue; + propValue = widgetRegistry.GetWidgetPropertyValueL( iUid, EBlanketPermGranted ); + TInt blanketPermission = *propValue; + delete propValue; TInt inMiniView = widgetRegistry.IsWidgetInMiniView( iUid); if ( !( networkAccess || fullAccess ) || ( inMiniView && !blanketPermission )) diff -r 7c90e6132015 -r 10e98eab6f85 widgets/widgetinstaller/group/WidgetInstallerUI.mmp --- a/widgets/widgetinstaller/group/WidgetInstallerUI.mmp Fri May 08 08:25:06 2009 +0300 +++ b/widgets/widgetinstaller/group/WidgetInstallerUI.mmp Fri Jul 03 15:54:40 2009 +0100 @@ -40,7 +40,11 @@ DEPENDS swinstcommonui.rsg HEADER TARGETPATH Resource -LANGUAGE_IDS +#ifdef __S60_32__ +LANG sc +#else +LANGUAGE_IDS +#endif END // Sources