Binary file browserutilities/webutils/conf/webutils.confml has changed
--- 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.
--- 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);
}
// ----------------------------------------------------------------------------
--- 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();
- }
+ }
}
}
--- 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;
--- 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();
--- 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);
}
}
--- 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);
--- 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 <kjs_window.h>
#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<std::pair<RefPtr<WebCore::Frame>, 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
--- 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 <MemoryManager.h>
#include <stmgesturelistener.h>
+#include <kjs_window.h>
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<std::pair<RefPtr<WebCore::Frame>, KJS::PausedTimeouts*>, 16> *m_pausedTimeouts;
+ TBool m_jsPaused;
TBool m_scrollingstatus;
};
--- 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
--- 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 <coecntrl.h>
#include "WidgetUiObserver.h"
#include "browser_platform_variant.hrh"
+#include <HWRMLight.h>
// 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_
--- 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;
}
--- 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),