# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1284546315 -10800 # Node ID ca6d8a014f4b34e930f037b17079e78b43a932fc # Parent d96eed154187ec232392003eca3b3d1534bf2ab6 Revision: 201034 Kit: 201036 diff -r d96eed154187 -r ca6d8a014f4b browserutilities/webutils/conf/webutils.confml Binary file browserutilities/webutils/conf/webutils.confml has changed diff -r d96eed154187 -r ca6d8a014f4b web_pub/browser_control_api/inc/BrCtlDefs.h --- a/web_pub/browser_control_api/inc/BrCtlDefs.h Tue Sep 14 23:23:58 2010 +0300 +++ b/web_pub/browser_control_api/inc/BrCtlDefs.h Wed Sep 15 13:25:15 2010 +0300 @@ -220,10 +220,12 @@ ECommandResumeScriptTimers, ECommandCancelQueuedTransactions, ECommandOOMExit, - /** - * Notify Flash Plugin FocusChangeEvent - */ - ECommandNotifyPluginFocusChangeEvent + /** + * Notify Flash Plugin FocusChangeEvent + */ + ECommandNotifyPluginFocusChangeEvent, + ECommandBackLightOn, + ECommandBackLightOff }; /** * The load event that occurred. diff -r d96eed154187 -r ca6d8a014f4b webengine/device/src/ServiceEventHandler.cpp --- a/webengine/device/src/ServiceEventHandler.cpp Tue Sep 14 23:23:58 2010 +0300 +++ b/webengine/device/src/ServiceEventHandler.cpp Wed Sep 15 13:25:15 2010 +0300 @@ -41,6 +41,7 @@ { iInterfaceFunc = (JSObject*)aInterfaceFunc; iCallbackFunc = (JSObject*)aCallbackFunc; + KJS::Collector::protect(iCallbackFunc); iTransId = aTransId; } @@ -54,6 +55,7 @@ // ServiceEventHandler::~ServiceEventHandler() { + KJS::Collector::unprotect(iCallbackFunc); } // ---------------------------------------------------------------------------- diff -r d96eed154187 -r ca6d8a014f4b webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp --- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp Tue Sep 14 23:23:58 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.cpp Wed Sep 15 13:25:15 2010 +0300 @@ -168,7 +168,8 @@ m_handle(-1), m_instance(0), m_pluginfuncs(0), - m_resized(false) + m_resized(false), + m_OccReLoad(EFalse) { } @@ -776,8 +777,13 @@ } } - if (m_pluginwin) + if (m_pluginwin) { m_pluginwin->SetExtent( TPoint(0,0), TSize(0,0) ); + if (m_OccReLoad) { + setPluginWinClipedRect(); + m_OccReLoad = EFalse; + } + } } } @@ -1288,6 +1294,10 @@ void PluginSkin::reCreatePlugin() { + TBool visible = EFalse; + if (m_pluginwin && m_pluginwin->IsVisible()) + visible = ETrue; + TBuf16<4> apId; apId.Format( _L("%d"), m_frame->frameView()->topView()->accessPointId() ); @@ -1308,7 +1318,7 @@ } m_streams.clear(); - if (m_instance && m_pluginfuncs && m_pluginfuncs->destroy) { + if (m_instance && m_pluginfuncs && m_pluginfuncs->destroy) { m_pluginfuncs->destroy(m_instance, NULL); } User::Free(m_instance); m_instance = 0; @@ -1325,8 +1335,11 @@ NetscapePlugInStreamLoaderClient* pluginloader = NetscapePlugInStreamLoaderClient::NewL(m_url->Des(), this, core(m_frame)); if (pluginloader) { + if (visible) { + m_OccReLoad = ETrue; + } pluginloader->start(); - } + } } } diff -r d96eed154187 -r ca6d8a014f4b webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h --- a/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h Tue Sep 14 23:23:58 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/plugins/PluginSkin.h Wed Sep 15 13:25:15 2010 +0300 @@ -498,6 +498,7 @@ TRect m_oldRect; TRect m_oldViewport; NPObject* m_NPObject; + TBool m_OccReLoad; public: TInt m_handle; diff -r d96eed154187 -r ca6d8a014f4b webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp --- a/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Tue Sep 14 23:23:58 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/BrCtl.cpp Wed Sep 15 13:25:15 2010 +0300 @@ -822,6 +822,18 @@ WebCore::gcController().garbageCollectSoon(); break; } + case TBrCtlDefs::ECommandBackLightOff: + { + setDeferringTimers(true); + break; + } + + case TBrCtlDefs::ECommandBackLightOn: + { + if (isDeferringTimers()) + setDeferringTimers(false); + break; + } case TBrCtlDefs::ECommandClearAutoFormFillData: { StaticObjectsContainer::instance()->formFillController()->clearFormData(); diff -r d96eed154187 -r ca6d8a014f4b webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp Tue Sep 14 23:23:58 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.cpp Wed Sep 15 13:25:15 2010 +0300 @@ -341,8 +341,9 @@ //if scrolling is going on, it need to be stopped immediately when user touches down if (aPointerEvent.iType == TPointerEvent::EButton1Down && m_webview->viewIsScrolling()) { WebScrollingDeceleratorGH* scrollDecelGH = m_webview->pageScrollHandler()->ScrollingDeceleratorGH(); - if(scrollDecelGH) { - scrollDecelGH->cancelDecel(); + if (scrollDecelGH) { + scrollDecelGH->cancelDecel(); + setIgnoreTap(ETrue); } } diff -r d96eed154187 -r ca6d8a014f4b webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h --- a/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h Tue Sep 14 23:23:58 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebPointerEventHandler.h Wed Sep 15 13:25:15 2010 +0300 @@ -45,6 +45,7 @@ void HandlePointerEventL(const TPointerEvent& aPointerEvent); void HandleHighlightChange(const TPoint &aPoint); void HandleGestureEventL(const TStmGestureEvent& aGesture); + void setIgnoreTap(TBool aIgnoretap) { m_ignoreTap = aIgnoretap; } private: bool canDehighlight(const TPoint &aPoint); diff -r d96eed154187 -r ca6d8a014f4b webengine/osswebengine/WebKit/s60/webview/WebView.cpp --- a/webengine/osswebengine/WebKit/s60/webview/WebView.cpp Tue Sep 14 23:23:58 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebView.cpp Wed Sep 15 13:25:15 2010 +0300 @@ -102,7 +102,6 @@ #include "EventNames.h" #include "Editor.h" #include "ThumbnailGenerator.h" -#include #include "PluginHandler.h" using namespace WebCore; @@ -220,7 +219,7 @@ , m_checkerBoardGc(NULL) , m_checkerBoardDestroyTimer(NULL) , m_isPinchZoomOut(false) -, m_jsTimeouts(0) +, m_jsPaused(0) { } @@ -282,6 +281,8 @@ if (StaticObjectsContainer::instance()->webSurface()->topView() == this) StaticObjectsContainer::instance()->webSurface()->setView( NULL ); + delete m_pausedTimeouts; + } // ----------------------------------------------------------------------------- @@ -410,6 +411,8 @@ m_checkerBoardDestroyTimer = CPeriodic::NewL(CActive::EPriorityIdle); + m_pausedTimeouts = new(ELeave) Vector, KJS::PausedTimeouts*>, 16>(); + } void WebView::initializePageScalerL() @@ -3336,28 +3339,40 @@ void WebView::pauseJsTimers() { - if(m_jsTimeouts==0) { - WebCore::Frame *frame = core(mainFrame()); - KJS::Window* window = KJS::Window::retrieveWindow(frame); - if(window) { - m_jsTimeouts = window->pauseTimeouts(); + if(!m_jsPaused) { + for (Frame* frame = core(mainFrame()); frame; frame = frame->tree()->traverseNext()) { + if (KJS::Window* window = KJS::Window::retrieveWindow(frame)) { + KJS::PausedTimeouts* timeouts = window->pauseTimeouts(); + if(timeouts) + m_pausedTimeouts->append(std::make_pair(frame, timeouts)); + } } + m_jsPaused = (m_pausedTimeouts->size()) ? ETrue : EFalse; } } void WebView::resumeJsTimers() { - if(m_jsTimeouts) { - WebCore::Frame *frame = core(mainFrame()); - KJS::Window* window = KJS::Window::retrieveWindow(frame); - if(window) { - window->resumeTimeouts(m_jsTimeouts); - delete m_jsTimeouts; - m_jsTimeouts = 0; + if(m_jsPaused) { + TInt count = m_pausedTimeouts->size(); + for (size_t i = 0; i < count; i++) { + KJS::Window* window = KJS::Window::retrieveWindow(m_pausedTimeouts->at(i).first.get()); + if (window) { + window->resumeTimeouts(m_pausedTimeouts->at(i).second); + } + delete m_pausedTimeouts->at(i).second; } + m_pausedTimeouts->clear(); + m_jsPaused = EFalse; } } -// END OF FILE + +void WebView::resetJsTimers() +{ + m_jsPaused=0; + m_pausedTimeouts->clear(); +} + void WebView::scrollStatus(bool status) { if(m_scrollingstatus != status) @@ -3378,3 +3393,4 @@ scrollStatus(scrolling); } }; +// END OF FILE diff -r d96eed154187 -r ca6d8a014f4b webengine/osswebengine/WebKit/s60/webview/WebView.h --- a/webengine/osswebengine/WebKit/s60/webview/WebView.h Tue Sep 14 23:23:58 2010 +0300 +++ b/webengine/osswebengine/WebKit/s60/webview/WebView.h Wed Sep 15 13:25:15 2010 +0300 @@ -28,6 +28,7 @@ #include "Timer.h" #include #include +#include namespace WebCore { @@ -39,10 +40,6 @@ class Frame; } -namespace KJS -{ - class PausedTimeouts; -} class CPluginHandler; class WebPreferences; @@ -540,8 +537,8 @@ // JavaScript timers - pause and resume void pauseJsTimers(); void resumeJsTimers(); - bool jsTimersPaused() { return (m_jsTimeouts) ? true : false; } - void resetJsTimers() { m_jsTimeouts = 0; } + bool jsTimersPaused() { return m_jsPaused; } + void resetJsTimers(); WebCoreGraphicsContext* getGraphicsContext() {return m_webcorecontext; } private: @@ -645,7 +642,8 @@ TBool m_isPinchZoomOut; // JavaScript (DOMWindowTimer) timers - KJS::PausedTimeouts* m_jsTimeouts; + Vector, KJS::PausedTimeouts*>, 16> *m_pausedTimeouts; + TBool m_jsPaused; TBool m_scrollingstatus; }; diff -r d96eed154187 -r ca6d8a014f4b widgets/widgetapp/group/WidgetUi.mmp --- a/widgets/widgetapp/group/WidgetUi.mmp Tue Sep 14 23:23:58 2010 +0300 +++ b/widgets/widgetapp/group/WidgetUi.mmp Wed Sep 15 13:25:15 2010 +0300 @@ -114,6 +114,7 @@ LIBRARY ecom.lib // for schemeHandler LIBRARY MemMan.lib LIBRARY centralrepository.lib +LIBRARY hwrmlightclient.lib #ifdef BRDO_MULTITOUCH_ENABLED_FF LIBRARY gfxtrans.lib diff -r d96eed154187 -r ca6d8a014f4b widgets/widgetapp/inc/WidgetUiWindowManager.h --- a/widgets/widgetapp/inc/WidgetUiWindowManager.h Tue Sep 14 23:23:58 2010 +0300 +++ b/widgets/widgetapp/inc/WidgetUiWindowManager.h Wed Sep 15 13:25:15 2010 +0300 @@ -26,6 +26,7 @@ #include #include "WidgetUiObserver.h" #include "browser_platform_variant.hrh" +#include // CONSTANTS enum TNetworkMode @@ -101,6 +102,7 @@ #ifdef BRDO_OCC_ENABLED_FF ,public MConnectionStageObserver #endif + ,public MHWRMLightObserver { public: // constructors / destructor @@ -130,6 +132,10 @@ */ void CenrepChanged(TInt aHSModeOnline); + public: + //MHWRMLightObserver + void LightStatusChanged( TInt aTarget, CHWRMLight::TLightStatus aStatus ); + public: // Create window @@ -663,8 +669,10 @@ TTime iTimeLastWidgetOpen; #endif #ifdef BRDO_OCC_ENABLED_FF - CConnectionStageNotifierWCB* iConnStageNotifier; + CConnectionStageNotifierWCB* iConnStageNotifier; #endif + CHWRMLight* iLightObserver; + CHWRMLight::TLightStatus iLightStatus; }; #endif // WIDGETUIWINDOWMANAGER_H_ diff -r d96eed154187 -r ca6d8a014f4b widgets/widgetapp/src/WidgetUiDialogsProviderProxy.cpp --- a/widgets/widgetapp/src/WidgetUiDialogsProviderProxy.cpp Tue Sep 14 23:23:58 2010 +0300 +++ b/widgets/widgetapp/src/WidgetUiDialogsProviderProxy.cpp Wed Sep 15 13:25:15 2010 +0300 @@ -280,6 +280,10 @@ retVal = iDialogsProvider.DialogPromptLC( aTitle, aMessage, aDefaultInput, aReturnedInput ); } + else + { + aReturnedInput = KNullDesC().AllocLC(); + } return retVal; } diff -r d96eed154187 -r ca6d8a014f4b widgets/widgetapp/src/WidgetUiWindowManager.cpp --- a/widgets/widgetapp/src/WidgetUiWindowManager.cpp Tue Sep 14 23:23:58 2010 +0300 +++ b/widgets/widgetapp/src/WidgetUiWindowManager.cpp Wed Sep 15 13:25:15 2010 +0300 @@ -206,6 +206,7 @@ iWidgetSapiNotifier = CWidgetUiPSNotifier::NewL(*this, ESapiPrompt); iWidgetSapiClearNotifier = CWidgetUiPSNotifier::NewL(*this, ESapiPromptCleared); #endif + iLightObserver = CHWRMLight::NewL( this ); } // ----------------------------------------------------------------------------- @@ -281,6 +282,7 @@ delete iWidgetSapiNotifier; delete iWidgetSapiClearNotifier; #endif + delete iLightObserver; } // ----------------------------------------------------------------------------- @@ -1160,6 +1162,7 @@ iActiveFsWindow->Engine()->MakeVisible( EFalse ); iActiveFsWindow->SetIsCurrentWindow( EFalse ); iActiveFsWindow->Engine()->HandleCommandL( (TInt)TBrCtlDefs::ECommandAppBackground + (TInt)TBrCtlDefs::ECommandIdBase); + iActiveFsWindow->WidgetExtension()->HandleCommandL( (TInt)TBrCtlDefs::ECommandAppBackground + (TInt)TBrCtlDefs::ECommandIdBase); } iActiveFsWindow = NULL; // Publish should start only after widget is resumed. @@ -1654,6 +1657,35 @@ } #endif // BRDO_OCC_ENABLED_FF +// ----------------------------------------------------------------------------- +// CWidgetUiWindowManager::LightStatusChanged +// ----------------------------------------------------------------------------- +// +void CWidgetUiWindowManager::LightStatusChanged( TInt aTarget, CHWRMLight::TLightStatus aStatus ) + { + if ( aTarget == CHWRMLight::EPrimaryDisplay ) + { + if ( ( aStatus == CHWRMLight::ELightOn || aStatus == CHWRMLight::ELightOff ) && aStatus != iLightStatus ) + { + iLightStatus = aStatus; + if(iActiveFsWindow) + if(aStatus == CHWRMLight::ELightOn ) + { + TRAP_IGNORE( iActiveFsWindow->Engine()->HandleCommandL( + (TInt)TBrCtlDefs::ECommandIdBase + + (TInt)TBrCtlDefs::ECommandBackLightOn ) ); + } + else if(aStatus == CHWRMLight::ELightOff ) + { + TRAP_IGNORE( iActiveFsWindow->Engine()->HandleCommandL( + (TInt)TBrCtlDefs::ECommandIdBase + + (TInt)TBrCtlDefs::ECommandBackLightOff) ); + } + } + } +} + + CRequestRAM::CRequestRAM(CWidgetUiWindowManager* aWidgetUiWindowManager, const TUid& aUid, TUint32 aOperation): CActive( EPriorityStandard ), iWidgetUiWindowManager(aWidgetUiWindowManager),