Resize WebPage's viewport size ealier
authorChanghyup Jwa <ch.jwa@samsung.com>
Wed, 10 Apr 2013 09:01:09 +0000 (18:01 +0900)
committerGerrit Code Review <gerrit@gerrit.vlan144.tizendev.org>
Mon, 24 Jun 2013 15:23:38 +0000 (15:23 +0000)
[Title] Resize WebPage's viewport size ealier
[Issue#] DCM-1848
[Problem] Sometimes JS window.innerWidth returns 0 on launching time
[Cause] WebPage's viewport size is fixed too late. It was resized on
        _ewk_view_smart_calculate() not on _ewk_view_smart_resize(). There's
        time delay between _ewk_view_smart_resize() and _ewk_view_smart_calculate().
[Solution] Resize viewport size right after _ewk_view_smart_resize() is called

Change-Id: Ic353972ea8ca391b2aface1d028f2984cb00ee1c

Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp
Source/WebKit2/UIProcess/API/efl/PageClientImpl.h
Source/WebKit2/UIProcess/API/efl/ewk_view.cpp

index 45116fa..e775199 100755 (executable)
@@ -194,11 +194,14 @@ void PageClientImpl::updateViewportSize(const IntSize& viewportSize, const int a
 #endif
 
     // update viewport size of webkit
-    m_visibleContentRect.setSize(viewportSize);
-    m_visibleContentRect = adjustVisibleContentRect(m_visibleContentRect, m_scaleFactor);
-    m_viewImpl->setScrollPosition(m_visibleContentRect.location());
     m_viewImpl->page()->setViewportSize(viewportSize);
 }
+
+void PageClientImpl::updateVisibleContentRectSize(const IntSize& size)
+{
+    // update visible content rect's size
+    m_visibleContentRect.setSize(size);
+}
 #endif
 
 void PageClientImpl::prepareRestoredVisibleContectRect()
@@ -1520,13 +1523,18 @@ PageClientEvasGL::~PageClientEvasGL()
 
 void PageClientEvasGL::updateViewportSize(const WebCore::IntSize& viewportSize, const int angle)
 {
+    PageClientImpl::updateViewportSize(viewportSize, angle);
+}
+
+void PageClientEvasGL::updateVisibleContentRectSize(const WebCore::IntSize& size)
+{
     if (m_surface) {
         evas_gl_surface_destroy(m_evasGL, m_surface);
         m_surface = 0;
     }
     setTargetSurface();
 
-    PageClientImpl::updateViewportSize(viewportSize, angle);
+    PageClientImpl::updateVisibleContentRectSize(size);
 }
 
 void PageClientEvasGL::setViewNeedsDisplay(const WebCore::IntRect& rect)
index a17d42f..a1ba4bf 100755 (executable)
@@ -113,6 +113,7 @@ public:
     double adjustScaleWithViewport(double);
 #if USE(TILED_BACKING_STORE) && ENABLE(TIZEN_WEBKIT2_TILED_BACKING_STORE)
     TIZEN_VIRTUAL void updateViewportSize(const WebCore::IntSize&, const int);
+    TIZEN_VIRTUAL void updateVisibleContentRectSize(const WebCore::IntSize&);
 #endif
     void prepareRestoredVisibleContectRect();
     void initializeVisibleContentRect();
@@ -484,6 +485,7 @@ public:
     ~PageClientEvasGL();
 
     virtual void updateViewportSize(const WebCore::IntSize&, const int);
+    virtual void updateVisibleContentRectSize(const WebCore::IntSize&);
     virtual void setViewNeedsDisplay(const WebCore::IntRect&);
     virtual void displayViewport();
     virtual void drawContents();
index dbd3105..b1d163a 100644 (file)
@@ -889,6 +889,8 @@ static void _ewk_view_smart_resize(Evas_Object* ewkView, Evas_Coord width, Evas_
 #if ENABLE(TIZEN_WEBKIT2_TILED_AC)
     evas_object_image_native_surface_set(smartData->image, 0);
 
+    Ecore_Evas* ee = ecore_evas_ecore_evas_get(smartData->base.evas);
+    impl->pageClient->updateViewportSize(IntSize(width, height), ecore_evas_rotation_get(ee));
 #if ENABLE(TIZEN_RUNTIME_BACKEND_SELECTION)
     if (!ewk_view_is_opengl_backend(ewkView))
         _ewk_view_composite(smartData);
@@ -958,7 +960,7 @@ static void _ewk_view_smart_calculate(Evas_Object* ewkView)
 #endif
 #if ENABLE(TIZEN_WEBKIT2_TILED_BACKING_STORE) && !ENABLE(TIZEN_WEBKIT2_EFL_WTR)
                 Ecore_Evas* ee = ecore_evas_ecore_evas_get(smartData->base.evas);
-                impl->pageClient->updateViewportSize(IntSize(width, height), ecore_evas_rotation_get(ee));
+                impl->pageClient->updateVisibleContentRectSize(IntSize(width, height));
                 if (ewk_view_is_opengl_backend(ewkView))
                     impl->pageClient->displayViewport();
 #endif