--- a/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrSrvSession.cpp Tue May 25 13:52:38 2010 +0300
+++ b/browserutilities/downloadmgr/DownloadMgrClntSrv/src/DownloadMgrSrvSession.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -145,6 +145,7 @@
if( iComplete || ( KErrNone != err ) )
{
// Only the syncron requests has to be completed here!
+ if ((!aMessage.IsNull()) && (!CurrentMessage().IsNull()) )
aMessage.Complete( err );
}
}
@@ -354,8 +355,9 @@
CArrayPtrFlat<CHttpDownload>* currentDownloads = iClientAppInstance->DownloadsL();
TPckg<TInt> countPckg( currentDownloads->Count() );
TPckg<TInt> sessionId( iSessionId );
-
+ if (!CurrentMessage().IsNull())
Write( 1, CurrentMessage(), countPckg );
+ if (!CurrentMessage().IsNull())
Write( 3, CurrentMessage(), sessionId );
CLOG_NAME_2( _L("Session_%x_%x"), uidPckg().iUid, iSessionId );
--- a/browserutilities/multipartparser/group/MultipartParser.mmp Tue May 25 13:52:38 2010 +0300
+++ b/browserutilities/multipartparser/group/MultipartParser.mmp Wed Jun 09 10:52:50 2010 +0300
@@ -48,7 +48,8 @@
SOURCE GZipBufMgr.cpp
LIBRARY euser.lib
-LIBRARY estlib.lib
+LIBRARY libc.lib
+LIBRARY libm.lib
LIBRARY InetProtUtil.lib
LIBRARY estor.lib
LIBRARY ezlib.lib
--- a/browserutilities/schemehandler/SchemeApp/data/SchemeApp_reg.rss Tue May 25 13:52:38 2010 +0300
+++ b/browserutilities/schemehandler/SchemeApp/data/SchemeApp_reg.rss Wed Jun 09 10:52:50 2010 +0300
@@ -17,7 +17,7 @@
#include <appinfo.rh>
-#include <SchemeApp.rsg>
+#include <schemeapp.rsg>
#include <data_caging_paths_strings.hrh>
--- a/browserutilities/schemehandler/SchemeApp/src/SchemeAppUi.cpp Tue May 25 13:52:38 2010 +0300
+++ b/browserutilities/schemehandler/SchemeApp/src/SchemeAppUi.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -23,7 +23,7 @@
#include <schemehandler.h>
#include "SchemeAppUi.h"
#include "Scheme.hrh"
-#include <SchemeApp.rsg>
+#include <schemeapp.rsg>
#include <apgcli.h>
#include <avkon.hrh>
#include <apparc.h>
--- a/browserutilities/schemehandler/SchemeDispatcher/group/SchemeDispatcher.mmp Tue May 25 13:52:38 2010 +0300
+++ b/browserutilities/schemehandler/SchemeDispatcher/group/SchemeDispatcher.mmp Wed Jun 09 10:52:50 2010 +0300
@@ -62,7 +62,7 @@
LIBRARY apmime.lib
LIBRARY apparc.lib
LIBRARY efsrv.lib
-LIBRARY BROWSERTELSERVICE.LIB
+LIBRARY BrowserTelService.lib
LIBRARY INETPROTUTIL.LIB
LIBRARY estor.lib
LIBRARY ws32.lib
--- a/browserutilities/xmlparser/group/XMLInterface.mmp Tue May 25 13:52:38 2010 +0300
+++ b/browserutilities/xmlparser/group/XMLInterface.mmp Wed Jun 09 10:52:50 2010 +0300
@@ -55,7 +55,7 @@
LIBRARY euser.lib
LIBRARY bafl.lib
LIBRARY charconv.lib
-LIBRARY cxmlparser.lib
+LIBRARY cXmlParser.lib
#ifdef __S60_32__
LANG sc
--- a/webengine/osswebengine/WebCore/bindings/js/kjs_window.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/bindings/js/kjs_window.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -100,6 +100,7 @@
, m_evt(0)
, m_dialogArguments(0)
, m_returnValueSlot(0)
+ , m_paused(false)
{
}
@@ -113,6 +114,8 @@
JSValue** m_returnValueSlot;
typedef HashMap<int, DOMWindowTimer*> TimeoutsMap;
TimeoutsMap m_timeouts;
+ RArray<int> m_timersToBeCleared;
+ bool m_paused;
};
// ==========================================================================================
@@ -767,7 +770,8 @@
Window::~Window()
{
clearAllTimeouts();
-
+ d->m_timersToBeCleared.Close();
+
// Clear any backpointers to the window
ListenersMap::iterator i2 = d->jsEventListeners.begin();
@@ -2087,6 +2091,8 @@
}
impl()->frame()->page()->chrome()->wait(interval);
a->execute(this);
+ // clear the event after it is handled.
+ d->m_evt = 0;
return lastUsedTimeoutId;
}
}
@@ -2128,6 +2134,7 @@
if (count == 0)
return 0;
+ d->m_paused = true;
PausedTimeout* t = new PausedTimeout [count];
PausedTimeouts* result = new PausedTimeouts(t, count);
@@ -2157,15 +2164,21 @@
PausedTimeout* array = timeouts->takeTimeouts();
for (size_t i = 0; i != count; ++i) {
int timeoutId = array[i].timeoutId;
- DOMWindowTimer* timer = new DOMWindowTimer(timeoutId, array[i].nestingLevel, this, array[i].action);
- d->m_timeouts.set(timeoutId, timer);
- timer->start(array[i].nextFireInterval, array[i].repeatInterval);
+ if (KErrNotFound == d->m_timersToBeCleared.Find(timeoutId)) {
+ DOMWindowTimer* timer = new DOMWindowTimer(timeoutId, array[i].nestingLevel, this, array[i].action);
+ d->m_timeouts.set(timeoutId, timer);
+ timer->start(array[i].nextFireInterval, array[i].repeatInterval);
+ }
}
delete [] array;
+ d->m_timersToBeCleared.Reset();
+ d->m_paused = false;
}
void Window::clearTimeout(int timeoutId, bool delAction)
{
+ if(d->m_paused)
+ d->m_timersToBeCleared.Append(timeoutId);
WindowPrivate::TimeoutsMap::iterator it = d->m_timeouts.find(timeoutId);
if (it == d->m_timeouts.end())
return;
--- a/webengine/osswebengine/WebCore/page/Page.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/page/Page.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -99,6 +99,8 @@
Page::~Page()
{
+ // call the garbage collection for the javascript object, before the plugin is destroyed.
+ KJS::Collector::collect();
m_mainFrame->setView(0);
setGroupName(String());
allPages->remove(this);
--- a/webengine/osswebengine/WebCore/page/symbian/WebCoreFrameBridge.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/page/symbian/WebCoreFrameBridge.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -321,7 +321,7 @@
m_rtl = isRtl;
// update rtl only for mainframe
if (m_frame && m_frame == m_frame->page()->mainFrame()) {
- if (control(m_frame)->brCtlLayoutObserver())
+ if (control(m_frame)->brCtlLayoutObserver() && m_rtl)
control(m_frame)->brCtlLayoutObserver()->NotifyLayoutChange(isRtl ? EOriginTopRight : EOriginTopLeft);
if (kit(m_frame->page())->pageScaler())
kit(m_frame->page())->pageScaler()->SetRelativePosition(0, 3, isRtl ? CPageScaler::ETopLeft : CPageScaler::ETopRight);
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpCacheSupply.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpCacheSupply.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -23,6 +23,7 @@
#include "HttpConnection.h"
#include "ResourceLoaderDelegate.h"
#include "StaticObjectsContainer.h"
+#include "HttpDlConnection.h"
#include <http/RHTTPTransaction.h>
#include <http/mhttpdatasupplier.h>
@@ -227,65 +228,70 @@
void CHttpCacheSupply::SupplyResponseL()
{
RHTTPTransaction* trans = m_httpTransaction->HttpTransaction();
+ if(!trans && m_dlTransaction){
+ SupplyToDownloadManager();
+ }
+ else{
//
- switch( m_reponseState )
- {
- case THTTPEvent::EGotResponseHeaders:
- {
- m_failed = EFalse;
- if( m_cacheManager->RequestHeadersL( *trans, m_cacheEntry ) == KErrNone ) {
- //
- trans->Response().SetStatusCode( HTTPStatus::EOk );
- //
- m_httpTransaction->MHFRunL( THTTPEvent::EGotResponseHeaders );
- // move to the next state
- m_reponseState = THTTPEvent::EGotResponseBodyData;
+ switch( m_reponseState )
+ {
+ case THTTPEvent::EGotResponseHeaders:
+ {
+ m_failed = EFalse;
+ if( m_cacheManager->RequestHeadersL( *trans, m_cacheEntry ) == KErrNone ) {
+ //
+ trans->Response().SetStatusCode( HTTPStatus::EOk );
+ //
+ m_httpTransaction->MHFRunL( THTTPEvent::EGotResponseHeaders );
+ // move to the next state
+ m_reponseState = THTTPEvent::EGotResponseBodyData;
+ }
+ else {
+ // move to the next state
+ m_failed = ETrue;
+ // move to the next state
+ m_reponseState = THTTPEvent::EResponseComplete;
+ }
+ break;
}
- else {
- // move to the next state
- m_failed = ETrue;
+ case THTTPEvent::EGotResponseBodyData:
+ {
+ SendBodyL();
// move to the next state
m_reponseState = THTTPEvent::EResponseComplete;
+ break;
}
- break;
- }
- case THTTPEvent::EGotResponseBodyData:
- {
- SendBodyL();
- // move to the next state
- m_reponseState = THTTPEvent::EResponseComplete;
- break;
- }
- case THTTPEvent::EResponseComplete:
- {
- m_httpTransaction->MHFRunL(THTTPEvent::EResponseComplete );
- // move to the next state
- m_reponseState = !m_failed ? THTTPEvent::ESucceeded : THTTPEvent::EFailed;
+ case THTTPEvent::EResponseComplete:
+ {
+ m_httpTransaction->MHFRunL(THTTPEvent::EResponseComplete );
+ // move to the next state
+ m_reponseState = !m_failed ? THTTPEvent::ESucceeded : THTTPEvent::EFailed;
+ break;
+ }
+ case THTTPEvent::ESucceeded:
+ {
+ // move to the next state
+ m_reponseState = THTTPEvent::EClosed;
+ // cancel timer
+ m_responseTimer->Cancel();
+ //
+ m_httpTransaction->MHFRunL(THTTPEvent::ESucceeded );
+ // this obj is destroyed at this point
+ break;
+ }
+ case THTTPEvent::EFailed:
+ {
+ // move to the next state
+ m_reponseState = THTTPEvent::EClosed;
+ // cancel timer
+ m_responseTimer->Cancel();
+ m_httpTransaction->MHFRunL(THTTPEvent::EFailed );
+ // this obj is destroyed at this point
+ break;
+ }
+ default:
break;
- }
- case THTTPEvent::ESucceeded:
- {
- // move to the next state
- m_reponseState = THTTPEvent::EClosed;
- // cancel timer
- m_responseTimer->Cancel();
- //
- m_httpTransaction->MHFRunL(THTTPEvent::ESucceeded );
- // this obj is destroyed at this point
- break;
- }
- case THTTPEvent::EFailed:
- {
- // move to the next state
- m_reponseState = THTTPEvent::EClosed;
- // cancel timer
- m_responseTimer->Cancel();
- m_httpTransaction->MHFRunL(THTTPEvent::EFailed );
- // this obj is destroyed at this point
- break;
- }
- default:
- break;
+ }
}
}
@@ -336,4 +342,106 @@
m_responseTimer->Start( KResponseTimeout, KResponseTimeout, TCallBack( &ResponseCallbackL, this ) );
}
+// -----------------------------------------------------------------------------
+// CHttpCacheSupply::SetDownloadTransaction
+//------------------------------------------------------------------------------
+void CHttpCacheSupply::SetDownloadTransaction(RHTTPTransaction* transaction)
+{
+ m_dlTransaction = transaction;
+}
+
+// -----------------------------------------------------------------------------
+// CHttpCacheSupply::SupplyToDownloadManager
+//------------------------------------------------------------------------------
+void CHttpCacheSupply::SupplyToDownloadManager()
+{
+ RHTTPTransactionPropertySet propSet = m_dlTransaction->PropertySet();
+ RStringPool strPool = m_dlTransaction->Session().StringPool();
+ THTTPHdrVal callback;
+ RStringF downloadPropStr;
+ HttpDlConnection* httpDlConnection = HttpDlConnection::dlConnectionFromTransaction(*m_dlTransaction);
+ if (httpDlConnection) {
+ RStringF downloadPropStr = strPool.OpenFStringL( _L8( "TransactionCallback" ) );
+ if( propSet.Property( downloadPropStr, callback ) ){
+ MHTTPTransactionCallback* callbackPtr = REINTERPRET_CAST( MHTTPTransactionCallback*, callback.Int() );
+ if( callbackPtr ){
+ switch( m_reponseState )
+ {
+ case THTTPEvent::EGotResponseHeaders:
+ {
+ m_failed = EFalse;
+ if( m_cacheManager->RequestHeadersL( *m_dlTransaction, m_cacheEntry ) == KErrNone ) {
+ //
+ m_dlTransaction->Response().SetStatusCode( HTTPStatus::EOk );
+ //
+ callbackPtr->MHFRunL( *m_dlTransaction,THTTPEvent::EGotResponseHeaders );
+ // move to the next state
+ m_reponseState = THTTPEvent::EGotResponseBodyData;
+ }
+ else {
+ // move to the next state
+ m_failed = ETrue;
+ // move to the next state
+ m_reponseState = THTTPEvent::EResponseComplete;
+ }
+ break;
+ }
+ case THTTPEvent::EGotResponseBodyData:
+ {
+ //
+ TBool lastChunk;
+ // currently it is always the last chunk
+ HBufC8* body = m_cacheManager->RequestNextChunkL( *m_dlTransaction, lastChunk, m_cacheEntry );
+ if( body ) {
+ CleanupStack::PushL( body );
+ // create datasupplier and attach it to the transaction
+ if( !m_dataSupplier )
+ m_dataSupplier = CHttpCacheDataSupplier::NewL( body );
+ m_dlTransaction->Response().SetBody( *m_dataSupplier );
+ CleanupStack::Pop(); // body
+ callbackPtr->MHFRunL(*m_dlTransaction,THTTPEvent::EGotResponseBodyData);
+ }
+ else {
+ // move to the next state
+ m_failed = ETrue;
+ }
+ // move to the next state
+ m_reponseState = THTTPEvent::EResponseComplete;
+ break;
+ }
+ case THTTPEvent::EResponseComplete:
+ {
+ callbackPtr->MHFRunL(*m_dlTransaction, THTTPEvent::EResponseComplete );
+ // move to the next state
+ m_reponseState = !m_failed ? THTTPEvent::ESucceeded : THTTPEvent::EFailed;
+ break;
+ }
+ case THTTPEvent::ESucceeded:
+ {
+ // move to the next state
+ m_reponseState = THTTPEvent::EClosed;
+ // cancel timer
+ m_responseTimer->Cancel();
+ //
+ callbackPtr->MHFRunL(*m_dlTransaction, THTTPEvent::ESucceeded );
+ // this obj is destroyed at this point
+ break;
+ }
+ case THTTPEvent::EFailed:
+ {
+ // move to the next state
+ m_reponseState = THTTPEvent::EClosed;
+ // cancel timer
+ m_responseTimer->Cancel();
+ callbackPtr->MHFRunL(*m_dlTransaction, THTTPEvent::EFailed );
+ // this obj is destroyed at this point
+ break;
+ }
+ default:
+ break;
+ }
+ }
+ }
+ }
+}
// End of File
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpCacheSupply.h Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpCacheSupply.h Wed Jun 09 10:52:50 2010 +0300
@@ -135,6 +135,14 @@
* @return
*/
void ResumeSupply();
+
+ /**
+ *
+ * SetTransaction
+ * @param aTransaction
+ * @return
+ */
+ void SetDownloadTransaction(RHTTPTransaction* aTransaction);
private:
@@ -177,6 +185,14 @@
* @return
*/
void SendBodyL();
+
+ /**
+ *
+ * @SupplyToDownloadManager
+ * @param
+ * @return
+ */
+ void SupplyToDownloadManager();
private: // Data
@@ -198,6 +214,8 @@
TBool m_closed;
CHttpCacheDataSupplier* m_dataSupplier;
+
+ RHTTPTransaction* m_dlTransaction;
};
#endif // CHTTPCACHESUPPLY_H
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpConnection.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -1287,6 +1287,11 @@
// remove own address from transaction properties
m_transaction->PropertySet().RemoveProperty(session.StringPool().StringF(HttpFilterCommonStringsExt::ESelfPtr,
HttpFilterCommonStringsExt::GetTable()));
+ if(m_cacheSupply->IsSupplying())
+ {
+ //Download is started from cache.
+ m_cacheSupply->SetDownloadTransaction(m_transaction);
+ }
m_transaction = NULL;
m_isDone = true;
return trans;
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpSessionManager.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -273,10 +273,13 @@
void HttpSessionManager::retryTransactions()
{
Vector<HttpConnection *> requests;
-
+
+ if (m_sessionRunning)
+ {
TBool newConn = ETrue;
m_httpSession.ConnectionInfo().SetPropertyL(m_httpSession.StringPool().StringF(HttpFilterCommonStringsExt::EHttpNewConnFlag, HttpFilterCommonStringsExt::GetTable()), THTTPHdrVal((TBool)newConn));
-
+ }
+
for(HashMap<HttpConnection *, ResourceHandle *>::iterator tmpit = m_pendingHttpRequests.begin();
tmpit != m_pendingHttpRequests.end(); ++tmpit)
{
--- a/webengine/osswebengine/WebCore/platform/network/symbian/MultipartContentHandler.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/MultipartContentHandler.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -158,9 +158,17 @@
const TStringTable& stringTable = session.GetTable();
if(hdrs.GetParam(stringPool.StringF( HTTP::EContentType, stringTable ),
stringPool.StringF( HttpFilterCommonStringsExt::EBoundary,
- HttpFilterCommonStringsExt::GetTable()), hdrVal) == KErrNone) {
+ HttpFilterCommonStringsExt::GetTable()), hdrVal) != KErrNone) {
+ _LIT8(KBoundary, ".boundary");
+ RStringF boundaryStrf = stringPool.OpenFStringL(KBoundary);
+ if(hdrs.GetParam(stringPool.StringF(HTTP::EContentType, stringTable), boundaryStrf, hdrVal) == KErrNone) {
+ boundPtr.Set(hdrVal.StrF().DesC());
+ }
+ boundaryStrf.Close();
+ }
+ else {
boundPtr.Set(hdrVal.StrF().DesC());
- }
+ }
// locate any cache control headers in top-level response
TPtrC8 expiresPtr;
TPtrC8 cacheControlPtr;
--- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -196,6 +196,7 @@
}
else {
enterStatus = HttpUiCallbacks::EExitingSecurePage;
+ m_httpSessionManager.setInSecureConnection(EFalse);
}
} // if (!secureUrl)
else {
--- a/webengine/osswebengine/WebCore/rendering/RenderText.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebCore/rendering/RenderText.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -863,6 +863,9 @@
void RenderText::setTextInternal(PassRefPtr<StringImpl> text, bool backspace)
{
+#if PLATFORM(SYMBIAN)
+ unsigned oldlength = m_text->length();
+#endif
m_text = text;
ASSERT(m_text);
@@ -929,7 +932,16 @@
m_text = m_text->secure(bullet);
}
else{
- m_text = m_text->secureShowOffset(bullet, m_offset);
+
+ if(oldlength <= m_text->length())
+ {
+ m_offset = m_text->length() - 1 ;
+ m_text = m_text->secureShowOffset(bullet, m_offset);
+ }
+ else
+ {
+ m_text = m_text->secure(bullet);
+ }
}
break;
--- a/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/misc/WebTabbedNavigation.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -139,16 +139,20 @@
elemVisibleRect.Intersection(m_webView->Rect());
if (horizontalDir == -1) {
focusPosition.iX = elemVisibleRect.iTl.iX;
+ focusPosition.iY = elemVisibleRect.iTl.iY;
}
else if (horizontalDir == 1) {
focusPosition.iX = elemVisibleRect.iBr.iX;
+ focusPosition.iY = elemVisibleRect.iTl.iY;
}
if (verticalDir == -1) {
focusPosition.iY = elemVisibleRect.iTl.iY;
+ focusPosition.iX = elemVisibleRect.iTl.iX;
}
else if (verticalDir == 1) {
focusPosition.iY = elemVisibleRect.iBr.iY;
+ focusPosition.iX = elemVisibleRect.iTl.iX;
}
if ((verticalDir == 0) && (horizontalDir == 0)) {
@@ -429,7 +433,7 @@
sameAxisDist = horizontalDir * (point.iX - m_focusPosition.iX) + verticalDir * (point.iY - m_focusPosition.iY);
otherAxisDist = (horizontalDir) ? (point.iY - m_focusPosition.iY) : (point.iX - m_focusPosition.iX) ;
otherAxisDist = (otherAxisDist < 0 ) ? (otherAxisDist * -1) : otherAxisDist;
- if (horizontalDir) { // horizontal
+ if (verticalDir) { // vertical
if (rect.iBr.iY < m_selectedElementRect.iTl.iY || rect.iTl.iY > m_selectedElementRect.iBr.iY) {
overlap = 0;
}
@@ -443,7 +447,7 @@
}
}
}
- else { // vertical
+ else { // horizontal
if (rect.iBr.iX < m_selectedElementRect.iTl.iX || rect.iTl.iX > m_selectedElementRect.iBr.iX) {
overlap = 0;
}
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -85,8 +85,11 @@
_LIT(KSecMgrScriptSession,"SecMgrScriptSession");
_LIT(KAllowNetworkAccess,"AllowNetworkAccess");
-
+#if defined(__PLATFORM_VERSION_32__)
+#define KArraySize 1
+#else
#define KArraySize 3
+#endif
const TInt32 KWidgetApplicationId = 0x10282822;
const TInt32 KBrowserApplicationId = 0x10008D39;
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -67,7 +67,7 @@
//
PluginWin::PluginWin(PluginSkin* pluginskin)
: m_pluginskin(pluginskin)
- , m_windowedPlugin(true), m_fullscreen(false), m_windowCreated(false)
+ , m_windowedPlugin(true), m_fullscreen(false), m_windowCreated(false), m_visibilty(false)
{
}
@@ -98,6 +98,15 @@
//
PluginWin::~PluginWin()
{
+ CBrCtl* brCtl = control(m_pluginskin->frame());
+ if (brCtl) {
+ WebView* view = brCtl->webView();
+ if (view) {
+ int index = view->getVisiblePlugins().Find(m_pluginskin);
+ if (index != KErrNotFound)
+ view->getVisiblePlugins().Remove(index);
+ }
+ }
TRAP_IGNORE( setPluginFocusL( EFalse ) );
@@ -384,6 +393,18 @@
else
HandleLosingForeground();
}
+
+ WebView* view = control(m_pluginskin->frame())->webView();
+ int index = view->getVisiblePlugins().Find(m_pluginskin);
+ if (visible && (m_visibilty != visible) && (index == KErrNotFound)) {
+ view->getVisiblePlugins().AppendL(m_pluginskin);
+ m_visibilty = visible;
+ }
+ else if (!visible && (index != KErrNotFound)) {
+ view->getVisiblePlugins().Remove(index);
+ m_visibilty = visible;
+ }
+
NotifyPluginVisible(visible);
if (!m_windowedPlugin && m_pluginskin->getNPPluginFucs() && m_pluginskin->getNPPluginFucs()->event) {
NPEvent event;
@@ -833,3 +854,21 @@
return ret;
}
+
+bool PluginWin::containsPoint(WebView& view, const TPoint& pt)
+{
+ if (m_control) {
+ if (StaticObjectsContainer::instance()->isPluginFullscreen()) {
+ return true;
+ }
+ else {
+ TPoint point = pt;
+ TPoint viewPos = view.PositionRelativeToScreen();
+ TPoint ctrlPos = m_control->PositionRelativeToScreen();
+ point += viewPos;
+ return m_control->Rect().Contains(point - ctrlPos);
+ }
+ }
+ else
+ return false;
+}
--- a/webengine/osswebengine/WebKit/s60/plugins/PluginWin.h Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/plugins/PluginWin.h Wed Jun 09 10:52:50 2010 +0300
@@ -481,6 +481,7 @@
void HandlePointerEventFromPluginL(const TPointerEvent& aEvent);
TBool HandleGesture(const TStmGestureEvent& aEvent);
TBool Windowed() { return m_windowedPlugin;}
+ bool containsPoint(WebView& view, const TPoint& pt);
protected: // New functions
/**
@@ -506,6 +507,7 @@
bool m_fullscreen;
bool m_windowCreated;
bool m_forceScroll;
+ bool m_visibilty;
};
--- a/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webcoresupport/WebEditorClient.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -500,6 +500,8 @@
break;
}
+ if(m_webView->fepTextEditor()->inlineTextEditingStarted())
+ return;
if (TChar(kevent->symbianEvent().iCode).IsPrint()) {
if (m_webView->fepTextEditor()->DocumentLengthForFep() <
m_webView->fepTextEditor()->DocumentMaximumLengthForFep()) {
@@ -691,3 +693,4 @@
+
--- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -2211,7 +2211,15 @@
{
m_windoCloseTimer->Cancel();
if (brCtlWindowObserver())
- TRAP_IGNORE(brCtlWindowObserver()->HandleWindowCommandL(KNullDesC(), ECloseWindow));
+ {
+ TRAPD(err,brCtlWindowObserver()->HandleWindowCommandL(KNullDesC(), ECloseWindow));
+ if ( err == KLeaveExit )
+ { // while we exit the browser it actually leaves with KLeaveExit from the system.
+ // If we block this here then the exit would not happen so propogate the leave
+ // condition to the system for handling
+ User::Leave(KLeaveExit);
+ }
+ }
}
TBool CBrCtl::sendCommandsToClient(
--- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.h Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.h Wed Jun 09 10:52:50 2010 +0300
@@ -607,6 +607,7 @@
void showWindow();
void closeWindowSoon();
+ // this function leaves in case of exit which is the normal behaviour
void doCloseWindowSoon();
TBool sendCommandsToClient(TBrCtlDefs::TBrCtlClientCommands aCommand,
const CArrayFix<TPtrC>& aAttributesNames,
--- a/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -76,7 +76,8 @@
: m_webView(aView),
m_textFormatMask(NULL),
m_inlineEditText(NULL),
- m_longKeyPress(EFalse)
+ m_longKeyPress(EFalse),
+ m_inlineTextEditingStarted(EFalse)
{
// Set up the extended capabilities
TRAP_IGNORE(
@@ -323,6 +324,7 @@
{
CCoeEnv::Static()->ForEachFepObserverCall(FepObserverHandleStartOfTransactionL);
ClearInlineText();
+ m_inlineTextEditingStarted= ETrue;
UpdateInlineText(aInitialInlineText);
}
@@ -549,7 +551,7 @@
Node* editNode = sc->focusNode();
TPoint viewPoint = kit(frame)->frameView()->frameCoordsInViewCoords(editNode->getRect().Rect().iBr);
xPos = viewPoint.iX;
- yPos = viewPoint.iY;
+ yPos = frame->document()->focusedNode()->getRect().bottomLeft().y() + rect.height();
String str;
if ( editNode &&
editNode->isTextNode() ) {
@@ -600,6 +602,7 @@
m_inlineEditText = NULL;
m_longKeyPress = EFalse;
+ m_inlineTextEditingStarted= EFalse;
HandleUpdateCursor();
UpdateEditingMode();
@@ -922,6 +925,9 @@
return ETrue;
}
+ else {
+ setSCTAvailability(true);
+ }
return EFalse;
}
@@ -1388,6 +1394,10 @@
{
CAknCcpuSupport* ccpu = NULL;
CAknEdwinState* edwinState = static_cast<CAknEdwinState*>(this->State(KNullUid));
+ if ( edwinState && edwinState->MenuBar() && edwinState->MenuBar()->IsDisplayed() )
+ {
+ return;
+ }
ccpu = new(ELeave) CAknCcpuSupport(this);
ccpu->SetMopParent(this);
CleanupStack::PushL(ccpu);
@@ -1508,3 +1518,9 @@
m_ExtendedInputCapabilities->ReportEventL(CAknExtendedInputCapabilities::
MAknEventObserver::EPointerEventReceived, NULL );
}
+
+TBool CWebFepTextEditor::inlineTextEditingStarted()
+ {
+ return m_inlineTextEditingStarted;
+ }
+
--- a/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.h Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFepTextEditor.h Wed Jun 09 10:52:50 2010 +0300
@@ -134,6 +134,8 @@
void EnableCcpuL();
TBool IsInputElementFocused() const;
void ReportEventL();
+
+ TBool inlineTextEditingStarted();
private:
void findPrevSiblingTextLen(Node*, TInt&) const;
Node* findTextNodeForCurPos(Node* aNode, TInt& aPos) const;
@@ -148,6 +150,7 @@
CAknExtendedInputCapabilities* m_ExtendedInputCapabilities;
CAknCcpuSupport* m_CcpuSupport;
TBool m_longKeyPress;
+ TBool m_inlineTextEditingStarted;
};
#endif
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrame.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -549,7 +549,7 @@
Frame* coreFrame = core(this);
- int dist = 99999999;
+ unsigned int dist = 0xFFFFFFFF;
Node* result = 0;
//for (Node* n=links->firstItem(); n; n=links->nextItem()) {
for(Node* n = coreFrame->document(); n != 0; n = n->traverseNextNode()) {
@@ -563,7 +563,7 @@
int x = xInRect(r, pt.x());
int y = yInRect(r, pt.y());
- int d = (pt.x() - x) * (pt.x() - x) + (pt.y() - y) * (pt.y() - y);
+ unsigned int d = (pt.x() - x) * (pt.x() - x) + (pt.y() - y) * (pt.y() - y);
if (dist > d) {
dist = d;
result = n;
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrameView.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -33,6 +33,9 @@
#include "StaticObjectsContainer.h"
#include "WebTabbedNavigation.h"
#include "WebPagePinchZoomHandler.h"
+#include "FocusController.h"
+#include "Frame.h"
+#include "page.h"
using namespace WebCore;
@@ -418,6 +421,28 @@
m_topView->updateScrollbars(m_contentSize.iHeight, m_contentPos.iY, m_contentSize.iWidth, m_contentPos.iX);
}
}
+ moveFocus();
+}
+
+void WebFrameView::moveFocus()
+{
+ // After resizing, move the focus to the correct node
+ if (m_topView && m_topView->focusedElementType() == TBrCtlDefs::EElementAnchor &&
+ m_topView->brCtl()->settings()->getNavigationType() == SettingsContainer::NavigationTypeTabbed) {
+ Frame* mainFrame = core(m_topView->mainFrame());
+ FocusController* focusController = m_topView->page()->focusController();
+ Frame* focusedFrame = focusController->focusedOrMainFrame();
+ if (focusedFrame == NULL) {
+ focusedFrame = mainFrame;
+ }
+ Node* node = focusedFrame->document()->focusedNode();
+ if (node) {
+ TRect rect = node->getRect().Rect();
+ TPoint viewpoint = kit(focusedFrame)->frameView()->frameCoordsInViewCoords(rect.iTl);
+ WebCursor* cursor = StaticObjectsContainer::instance()->webCursor();
+ cursor->updatePositionAndElemType(viewpoint);
+ }
+ }
}
void WebFrameView::setMayUseCopyScroll(TBool aCopy)
--- a/webengine/osswebengine/WebKit/s60/webview/WebFrameView.h Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebFrameView.h Wed Jun 09 10:52:50 2010 +0300
@@ -104,6 +104,8 @@
int getBidiWidth();
bool needScroll(const TPoint& aPoint);
private:
+ void moveFocus();
+
WebFrameView(const WebFrameView&); // not implemented
WebFrameView& operator=(const WebFrameView&); // not implemented
--- a/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPageFullScreenHandler.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -28,8 +28,7 @@
using namespace WebCore;
-const int KFullScreenButtonHeight = 60;
-const int KFullScreenButtonWidth = 60;
+const int KFullScreenButtonOffset = 50;
const int KFullScreenButtonBuff = 5;
// -----------------------------------------------------------------------------
@@ -66,6 +65,9 @@
m_buttonIcon = StaticObjectsContainer::instance()->webCannedImages()->getImage(WebCannedImages::EImageEscFullScreen);
TPoint pos = CalculatePosition();
BaseConstructL(m_webView, pos, m_buttonIcon.m_img, m_buttonIcon.m_msk, ETrue);
+ if (AknLayoutUtils::PenEnabled()) {
+ DrawableWindow()->SetPointerGrab(ETrue);
+ }
Hide();
}
@@ -147,11 +149,18 @@
case TPointerEvent::EButton1Up:
{
- if (m_isTouchDown) {
- Hide();
- m_webView->notifyFullscreenModeChangeL( false );
- }
- m_isTouchDown = EFalse;
+ TPoint fsPostion = PositionRelativeToScreen();
+ TRect fsRect = TRect(fsPostion,m_buttonIcon.m_img->SizeInPixels());
+ fsRect = TRect(fsRect.iTl - TPoint(KFullScreenButtonOffset,KFullScreenButtonOffset), fsRect.iBr);
+ TPoint pointerPosition = fsPostion + aPointerEvent.iPosition;
+ if( fsRect.Contains(pointerPosition))
+ {
+ if (m_isTouchDown) {
+ Hide();
+ m_webView->notifyFullscreenModeChangeL( false );
+ }
+ m_isTouchDown = EFalse;
+ }
}
break;
}
--- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -105,24 +105,30 @@
void WebPointerEventHandler::HandleGestureEventL(const TStmGestureEvent& aGesture)
{
TStmGestureUid uid = aGesture.Code();
-
if (m_webview->pinchZoomHandler()->isPinchActive() && uid != stmGesture::EGestureUidPinch)
return;
-
+
TBrCtlDefs::TBrCtlElementType elType = m_webview->focusedElementType();
-
- PluginSkin* plugin = m_webview->mainFrame()->focusedPlugin();
- if (plugin && plugin->pluginWin()) {
- if (plugin->pluginWin()->HandleGesture(aGesture)) {
- if(!plugin->isActive()) {
- plugin->activate();
- }
- else {
- m_webview->mainFrame()->frameView()->topView()->setFocusedElementType(TBrCtlDefs::EElementActivatedObjectBox);
- m_webview->page()->focusController()->setFocusedNode(plugin->getElement(), m_webview->page()->focusController()->focusedOrMainFrame());
- m_webview->brCtl()->updateDefaultSoftkeys();
- }
- return;
+
+ bool pluginConsumable = isPluginConsumable(uid);
+
+ if (pluginConsumable && m_webview->getVisiblePlugins().Count() > 0) {
+ for ( int i=0; i < m_webview->getVisiblePlugins().Count(); i++) {
+ PluginSkin* plugin = m_webview->getVisiblePlugins()[i];
+ if (plugin && plugin->pluginWin() && plugin->pluginWin()->containsPoint(*m_webview,aGesture.CurrentPos())) {
+ if (plugin->pluginWin()->HandleGesture(aGesture)) {
+ if(!plugin->isActive()) {
+ plugin->activate();
+ }
+ else {
+ m_webview->mainFrame()->frameView()->topView()->setFocusedElementType(TBrCtlDefs::EElementActivatedObjectBox);
+ m_webview->page()->focusController()->setFocusedNode(plugin->getElement(), m_webview->page()->focusController()->focusedOrMainFrame());
+ m_webview->brCtl()->updateDefaultSoftkeys();
+ }
+ return;
+ }
+ break;
+ }
}
}
@@ -131,7 +137,6 @@
m_webview->tabbedNavigation()->updateCursorPosition(aGesture.CurrentPos());
}
-
switch(uid) {
case stmGesture::EGestureUidTouch:
{
@@ -608,3 +613,17 @@
}
m_webview->pinchZoomHandler()->handlePinchGestureEventL(aGesture);
}
+
+
+//-----------------------------------------------------------------------------
+// WebPointerEventHandler::isPluginConsumable
+//-----------------------------------------------------------------------------
+bool WebPointerEventHandler::isPluginConsumable(const TStmGestureUid uid)
+{
+ // Gestures which a Plugin can consume
+ return (uid == stmGesture::EGestureUidRelease ||
+ uid == stmGesture::EGestureUidTap ||
+ uid == stmGesture::EGestureUidTouch ||
+ uid == stmGesture::EGestureUidLongPress ||
+ (uid == stmGesture::EGestureUidPan && m_webview->widgetExtension())); // Currently Pan is consumed in Widget mode
+}
--- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h Wed Jun 09 10:52:50 2010 +0300
@@ -61,6 +61,7 @@
void doTapL();
void updateCursor(const TPoint& pos);
void handlePinchZoomL(const TStmGestureEvent& aGesture);
+ bool isPluginConsumable(const TStmGestureUid uid);
private:
WebPointerEventHandler(WebView* view);
WebView* m_webview;
--- a/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebScrollbarDrawer.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -487,9 +487,18 @@
TRect r(TPoint(0, 0), rect.Size());
gc->SetBrushStyle(CGraphicsContext::ESolidBrush);
gc->SetPenStyle(CGraphicsContext::ESolidPen);
+// Current platform API has some problem in drawing the border of
+// the rounded rect.Once it is fixed in platform this code can be reverted back.
+#ifdef BRDO_MULTITOUCH_ENABLED_FF
+ gc->SetPenSize(TSize(4,4));
+#else
gc->SetPenSize(TSize(2,2));
+#endif
gc->SetPenColor(TRgb(242, 242, 242));
gc->SetBrushColor(TRgb(10, 10, 10));
+#ifdef BRDO_MULTITOUCH_ENABLED_FF
+ gc->DrawRect(r);
+#endif
gc->DrawRoundRect(r, TSize(7, 7));
}
@@ -507,6 +516,9 @@
gc->SetBrushColor(brushMaskColor);
gc->SetPenSize(TSize(2,2));
gc->SetPenColor(TRgb(5, 5, 5));
+#ifdef BRDO_MULTITOUCH_ENABLED_FF
+ gc->DrawRect(r);
+#endif
gc->DrawRoundRect(r, TSize(7, 7));
}
--- a/webengine/osswebengine/WebKit/s60/webview/WebView.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebView.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -234,6 +234,8 @@
m_pageZoomHandler = NULL;
m_zoomLevelArray.Close();
+ m_visiblePlugins.Reset();
+ m_visiblePlugins.Close();
// prevent frameViews to access members when topView is
// closing down.
@@ -405,6 +407,7 @@
m_waiter = new(ELeave) CActiveSchedulerWait();
m_checkerBoardDestroyTimer = CPeriodic::NewL(CActive::EPriorityIdle);
+ m_visiblePlugins.Reset();
}
@@ -650,7 +653,7 @@
return;
}
- if (!IsVisible()) {
+ if (!IsVisible() || ( StaticObjectsContainer::instance()->webSurface()->topView() != this ) ) {
return;
}
@@ -1180,11 +1183,8 @@
* and send it here.
*/
if (eventcode == EEventKeyDown){
- downEventConsumed = sendKeyEventToEngine(keyevent, EEventKeyDown, frame) ||
- ((m_focusedElementType == TBrCtlDefs::EElementActivatedInputBox && // style of input box
- page()->chrome()->client()->elementVisibilityChanged()));
+ downEventConsumed = sendKeyEventToEngine(keyevent, EEventKeyDown, frame);
}
-
/*
* downEventConsumed will be true if JavaScript consumes key event
* If we are not in the widget mode we want to deactivate input box
@@ -2124,7 +2124,7 @@
{
TSize docSize = DocumentSize();
TSize viewSize = DocumentViewport().Size();
- return ((docSize.iWidth * docSize.iHeight*100)/(viewSize.iWidth*viewSize.iHeight) < KSmallPageScale);
+ return (docSize.iWidth/viewSize.iWidth) * (docSize.iHeight/viewSize.iHeight) * 100 < KSmallPageScale;
}
void WebView::willSubmitForm(FormState* formState)
--- a/webengine/osswebengine/WebKit/s60/webview/WebView.h Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/WebKit/s60/webview/WebView.h Wed Jun 09 10:52:50 2010 +0300
@@ -74,6 +74,7 @@
class WebFrameBridge;
class WebPagePinchZoomHandler;
class CThumbnailGenerator;
+class PluginSkin;
const TUint KMouseEventFired = 0x00000001;
@@ -544,6 +545,8 @@
void resumeJsTimers();
bool jsTimersPaused() { return (m_jsTimeouts) ? true : false; }
void resetJsTimers() { m_jsTimeouts = 0; }
+ RPointerArray<PluginSkin>& getVisiblePlugins(){ return m_visiblePlugins;}
+
private:
WebCore::Page* m_page;
WebFrameView* m_frameView;
@@ -648,6 +651,8 @@
// JavaScript (DOMWindowTimer) timers
KJS::PausedTimeouts* m_jsTimeouts;
+
+ RPointerArray<PluginSkin> m_visiblePlugins;
};
#endif
--- a/webengine/osswebengine/webkit/s60/webview/WebGestureInterface.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/osswebengine/webkit/s60/webview/WebGestureInterface.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -136,8 +136,14 @@
holdArea.iShape = TStmGestureArea::ERectangle;
holdArea.iTimeout = HOLD_AREA_TIMEOUT;
holdArea.iSize.iWidth = HOLD_AREA_WIDTH;
+
+ //Double tap functionality is enabled based on ECapabilityFitToScreen capability.
+ //setting the doubletap timeout to ZERO if this cap is not defined
+ if (m_webview->brCtl()->capabilities() & TBrCtlDefs::ECapabilityFitToScreen)
+ gestureParams[stmGesture::EDoubleTapTimeout ] = DOUBLE_TAP_TIMEOUT;
+ else
+ gestureParams[stmGesture::EDoubleTapTimeout ] = 0;
- gestureParams[stmGesture::EDoubleTapTimeout ] = DOUBLE_TAP_TIMEOUT;
gestureParams[stmGesture::ESuppressTimeout ] = SUPPRESS_TIMEOUT;
gestureParams[stmGesture::EMoveSuppressTimeout] = MOVE_SUPPRESS_TIMEOUT;
gestureParams[stmGesture::EPanSpeedLow ] = PAN_SPEED_LOW;
--- a/webengine/widgetengine/src/WrtPlatform.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/widgetengine/src/WrtPlatform.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -20,8 +20,8 @@
// INCLUDE FILES
#include "WrtPlatform.h"
-#include <swi\sisregistryentry.h>
-#include <swi\sisregistrysession.h>
+#include <swi/sisregistryentry.h>
+#include <swi/sisregistrysession.h>
#include <sysutil.h>
#include <etel.h>
#include <etelmm.h>
--- a/webengine/wmlengine/src/FileLoader/src/fileloader_cfilehandler.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/wmlengine/src/FileLoader/src/fileloader_cfilehandler.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -281,7 +281,7 @@
TUint contentLength = 0;
const TUint16* responseUrl = (iRedirectedUrl == NULL) ? iUrl : iRedirectedUrl;
-
+ HBufC* newUrl = NULL;
if (iMethod == NW_URL_METHOD_GET)
{
@@ -296,7 +296,7 @@
}
//R->fake the url
- HBufC* newUrl = HBufC::NewL( urlLen );
+ newUrl = HBufC::NewL( urlLen );
newUrl->Des().Copy(iData.Mid( position + 1, urlLen-1 ));
newUrl->Des().ZeroTerminate();
@@ -313,7 +313,6 @@
iFileLoader->PartialResponse( (TUint16*)newUrl->Ptr(), dataDes, NULL, contentTypeString, NULL, NW_FALSE, // multipart information is missing.
NULL, NULL, charset, NULL, Success, NW_URL_METHOD_GET, iTransId, 0 /*first chunk*/, NULL, dataDes.Length(),
KErrNone, iLoadContext, iLoadCallback);
- delete newUrl;
}
// Send the close response
@@ -324,6 +323,8 @@
iFileLoader->PartialResponse( responseUrl, emptyData, NULL, contentTypeString, NULL, NW_FALSE, // multipart information is missing
NULL, NULL, charset, NULL, Success, iMethod, iTransId, -1 /*last chunk*/, NULL, contentLength,
KErrNone, iLoadContext, iLoadCallback);
+
+ delete newUrl;
}
else
{
--- a/webengine/wmlengine/src/fbox/src/FBOXCEpoc32InputBox.cpp Tue May 25 13:52:38 2010 +0300
+++ b/webengine/wmlengine/src/fbox/src/FBOXCEpoc32InputBox.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -1723,7 +1723,8 @@
HBufC* newText = HBufC::NewL(iDocumentText->Length() + aText.Length());
newText->Des().Append(iDocumentText->Left(curPos));
newText->Des().Append(aText);
- newText->Des().Append(iDocumentText->Right(iDocumentText->Length() - curPos));
+ if(iDocumentText->Length() >= curPos)
+ newText->Des().Append(iDocumentText->Right(iDocumentText->Length() - curPos));
iInlineEditText = newText;
}
}
--- a/widgets/widgetapp/src/WidgetUiWindow.cpp Tue May 25 13:52:38 2010 +0300
+++ b/widgets/widgetapp/src/WidgetUiWindow.cpp Wed Jun 09 10:52:50 2010 +0300
@@ -231,6 +231,14 @@
iEngine->RemoveLoadEventObserver( iWidgetUiObserver );
iEngine->RemoveStateChangeObserver( iWindowManager.View() );
}
+#ifdef BRDO_OCC_ENABLED_FF
+ if ( iRetryConnectivity)
+ {
+ iRetryConnectivity->Cancel();
+ delete iRetryConnectivity;
+ iRetryConnectivity = NULL;
+ }
+#endif
delete iEngine;
delete iWidgetUiObserver;
delete iUrl;
@@ -931,9 +939,14 @@
User::Leave( connFailure );
}
*aNewConn = ETrue;
-
+ if(iWindowManager.GetNetworkMode() == EOfflineMode)
+ {
+ iWindowManager.GetConnection()->CancelConnection();
+ iWindowManager.GetConnection()->StopConnectionL();
+ }
#ifdef BRDO_OCC_ENABLED_FF
- TRAP_IGNORE(ConnNeededStatusL(KErrNone));
+ else
+ TRAP_IGNORE(ConnNeededStatusL(KErrNone));
#endif
}
}
@@ -1344,6 +1357,10 @@
}
iRetryConnectivity->Start(KRetryConnectivityTimeout, 0,TCallBack(RetryConnectivity,this));
}
+ else
+ {
+ TRAP_IGNORE( Engine()->HandleCommandL( (TInt)TBrCtlDefs::ECommandCancelFetch + (TInt)TBrCtlDefs::ECommandIdBase ) );
+ }
}
void CWidgetUiWindow::ConnNeededStatusL( TInt aErr )
--- a/widgets/widgetinstaller/group/WidgetInstallerUI.mmp Tue May 25 13:52:38 2010 +0300
+++ b/widgets/widgetinstaller/group/WidgetInstallerUI.mmp Wed Jun 09 10:52:50 2010 +0300
@@ -39,7 +39,7 @@
START RESOURCE ../data/WidgetInstallerUI.rss
DEPENDS avkon.rsg
HEADER
-TARGETPATH Resource
+TARGETPATH resource
#ifdef __S60_32__
LANG sc
#else